From c9546828648a98a79c67f09c4b10bbbd22815489 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 03:00:42 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 03:00:42. --- .../20260508/20260508030002-Binary.backup | Bin 0 -> 297791 bytes .../20260508/20260508030002-Config.rsc | 4644 +++++++++++++++++ .../20260508/20260508030002-Diff-Config.rsc | 25 + 3 files changed, 4669 insertions(+) create mode 100644 MikroMaster/20260508/20260508030002-Binary.backup create mode 100644 MikroMaster/20260508/20260508030002-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508030002-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508030002-Binary.backup b/MikroMaster/20260508/20260508030002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..976f5ee2b5ce6df9f47fccd667665b4aef31b127 GIT binary patch literal 297791 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
*2v$Uu7FKBC|9bj<{)4edX@_OoD`IEzp6XoOiBS zcnGZ`7^!avQpZxFyZnszSOYobB$a#Wsb}r~bx1UxMG*+_{Sy8&!_6>eu1kAg&9{ah zSUtKfAyWPmxn>cA$|ND0B*6Q7Ts+QdVxs<-Ifrd#kjQyJ z(T#}Vn_J|P85im*fo#wPYwM$zA&tAZJ*Qv{M3V47k(7e{|n{E)zp=w`m^O zOStt}3x@8dN!J3x`g?VV3tHjG3;5ro6L@#K%vVkq2EgvBVTY*bd`dG%cohPUP#Po7YsO(~B z*hGXq)Kp2+09>);kcob`6L=9OvJ_Y3lY*U$?`$Be$(bnthr)pi(NQE-I4~C+fW{IP zjoAkRW3o-mK;=6N>*pCUuCi9Mcla=>JWm8N#GX~~g$RDiO;XOgY;`r~w$qmcG{)v0 zWxfk3ZS%i|av9Uu4*;qm0dhgja>cYaFhkX5ORQzKzg)OF~hw z(C|SY>ZrBABr>wrT#mV~D9jnLu{K+8&fuc{ck3X`vv?X{CwNNUX|4ljD34Xh=10S6h()p&1)ZZoMyYT<=+uVOKWn9*Ck0evGgOc@e`}_X@ ziJpN|W!z2jeXnF}nG)OmsrL!xMkE#Rbi#Md7J;;cipVfa1cg zhtPZHSimlbpkEgbNUK->d)!xSAOqi)cuA0C(U~wjydpbbkhn{*!1(`*K>}%PngG?< z2i#XWoWMEie^5_?9&ZvLR>74F#8?CADS7zu+?8{1j-DJbTc~>)G`aH$@v2&$|1n;R zyVE8f=*Bo@a}@HvtPI00M6u3zp24M*LpiktZFrOSb&kt-)3mKIjWElm!?I8#sdTdA zSg*=rB(D~2RWI26EwEfLb=TZMO8O5K+Gwv?z#ZS%M{AEXU;S^1;r>Wiyj&l(ZC>D) zKR<9rvSCeb~F*>%N)~@?(WB~>9Ln+f8FU%dm%w{CSz|4Lqb8UDG z92IRfqCmGX&%U!vY@r_vjE!H`7M-rHJYXzSArxn39Cxz7^oZEtiYofxjsHciv5e0A zdM!5i=Ou|(M1>a}a?THRp=}dtv^x#nVfr!MG>LpUsZH@*P=aPEAM{A#pAc5p@0I}` zF0HZ{{Tt1&Q#^M`#({Xw|^f-n6?s`XJ)?B$U8t z)Z~HC$QgJWplx()g7n8rYy<6y?vgiRi+gwxAw=91Cfg9$j4;C)!{^y=3?%I$j4s+i zAEDf#b}_u)j1pITDPxF2@va#_;GfTb34|a3u?N6fECPvnV7M-&-YNM&U6RBe?)U;qXs*pyrjKN2k?C=d$h zT7PJ)!FV;qd~%y$0}l;(9Ho;Wa0=iSZ7O8a!?nX+9eo-| zLf?`SXAUu$X8DpH7>T%nSXS8T>g)DvqhhUgjfe2ax11QN#huCFv+e|oej8t15-jvo zlU{-WaNsVgSWgG}lt$pbf@qG!+JBcnUrO76Df&wChKCen88zY$KL8gK?gU0aA;rH= z!Und~+|aDO6gjb2(BkvZESQ3}d)%dZfnlg6=r6Sxei`(Fz7<`0TxguPx9mu5q&x9> z9{G}vCnjCSzxTkjGX}KP{#*8Hxfim=XfD@SHtyb@i`wZvaEdXm=g&3Ft_MV$)vq1c z{fE&pVsqoJ^q>~sH(jJf({)?AZA>2{L0;XR=@P_?L{+vOi92|2PW|vWJY6`d_iFNUt(%dulQ= z^h}20E8tVD^AyDUUC>yusQg z3S>Fv02B7T*8{~=uZguh2_)M~TNlAxl|hD@LO2Mbd-wASaT`I5Uko;4RkENIPNb7_ zHy)|X_&Ln0X?765jcl(GPM`@--kl8zfB3N3_8v)qr5>Y=6cK2I_ARW+#rwts`-_>> z+@C~M{hUslUWys$O_Tg|TT=rZ4`6NYEL;e>?uS8T$f=s>bpbonkF3H~{Gz`F1(Qms zmkU8Vzn+qrU(CYlqJ*mg7hhs2hWPq4iu2@>m&UJp)<($f+fYZQU`)y^_jb`kE>TdTVlNT7-Qi|)@Y`F(f-wHY?LGG znJ^(s1=}B1upy@^e{qNoE}ziQ5jSXKY%!48rmQYY{0A>{TcUHoo4)>ZP0+;a#%2cW zzjhF1)-CwL?Rxx4)0VMBHWU7CJBBtFUtRS$EUwjOW0~dC8#n?7$}4NyasuQuAEJ2n zKWtZu6xJeMmdE8^Ud%xipcBvRow{NxPeY9 zQwOkF97DcXQ@pHwsECZ1O;s)(Zi4n>ZReo3Dt8dLYsNBz@|`GU-#n>Lha5TdkC>wt!$N#S+tC{brDn>z8Y zb+J(?QEo4wejf<=7LI2o*#kVv1)*|hhdJWKxixqIpbXBbdp*P{<%RINcfYiUc!jV*Ld5zIhI;Dw}JY*_NQef;6i$x-A%?MoV)He8MK z?kvCzox&fO{QUEc?PwC^}T{^)q(!TQQ>>ZE)oj zYFu}1YuEQG)3{<8$afCA8O7sdkX+3`Nb3v$H2*nq!2j3f`)!nq8Sxvp1M9Gb=#a{o zE-HtmMnoN|u3R)65vMpC&1NzkagA|>9i<#xDVr!xX?dD-VL`_oeZ|vtZ^bW z)Okj1rTAJ`4(UR#$Yw1F47i2Sn<5LF`;6uc*pw$AvseJ%z=-HF!=&MazMU^>MS`sa z=C1vnLB*gETA8zQ`FaY6;6uLv~5rTe=D7kh_yG85^W7%X@s z@=}JMS3QOJQPimhHl0y1H{_&0=1z=;{uY_$^_?PGl(*_%S=k#q({Qicy;*JD z4?O?pBu3|PkZ74WGaLizF~Z0~Nko!;d0*T%BEY`WKaCe%(KCv)I0Qc@7LEq8Dq6!V zmuwKTvQfW-&{()iZT^|)f<}_M7~p1_I3PAt{0JG7m%JY| zfCB|29v1U{>RIaIo`vlni0txUQ1v&5E)DpNUXtQFXvxX#{tmW&GH|z{FM6(bhZptvviM&Cu_!0LfNGyW z+Dvw$jHG`73@)kFKLX9pbFqeyuNdF6!@Sy%=-Z}x5 zRr1J6sSBxBH(p~tK);k1#fmP%A`%-iz~DfXT_7v@S}D$G;}wClYeW+_?f6LxlS?C? z&$Af8Gk!is7VQ1qkwFa?@c^3&8QIAASMh(R+{&hD_qy1~Y_1`=lTC3mC++TZwABDI zK5k6y2K4mgzalQ7#1K(~pw?qgU5V801wLzi7gVPFl5Rbw4Qq+uYt)WV7WPzs0(J8| zyRJ7Ws&alKaK#0H98{QH+|l#ULAfTa2CRXn?8-wg9fNA+D?uAKxYs z_C$hdq;|GN9YXKE7UwfYr2p!A!(@cyR3U7hx65U3^R7sGD-DFSLAg9*)@>Oan!Ub= z&892bV#J;>Yvcc+eO`>rA1Mma>AOL?mqT6lUA}JAS875gT>(kmv-|sTf}l7CDkX&-J_7+te@~)i37} z^ExUJz#32i{Fa~V*r6w8BNHT~_{-4h+e5qCOq&M_y9NqHD7=`9=2D;;{?QXTvEckK z2cIQmoRM-gcVGh57(#zdj%m_E>Z53Pc8lMEK+iLTyDtsW`vF7p1T!{x6ZCaK)ITvU9gSSgVmGjMoK9D^jD+2)Fi{xC-T5 z-{hN^PikO~|FDut8$bWIWoa|B{CkS~+kqZgfXzZwW>=Is1ca4=(8?)9ozXD|De;aYtl9mm-zn{x(!EL{^Xd zUe*4QbVO?-S|VrRwvddj)aS)W&Nt1(yv4gtq)bq6G?i z3pfwDwA#$dURWo@lY`G$0p=@yz`xRq%@9%~&I_b%2|1+}O@B)2)&0Pf%@DBPb)Kdu zut4*runu|*LaosRHVt=c4m7za%+OS`DMPskHan%ZT3*7C%I@-(a>ZUGJrZLtu1X8 z=@IVgM-vQa5WqaFbP}f`oTLK{(&Fpp*(#2NAC`j+avd7&32yMJd$>f8 z7muQ?Lyfrb^5M;0Df5bmZGvFlujkH8M{0DRG;(lBptP@?a9#tVSgRuJdbn`lU)B&Q z!Fae_UWLj8{O^Ym`((N2bFwxt{ z0-$$~=699>x-Zdhi$`#l3MM{ z&!g<68HPX{r%&4lxj{TAU$~zi&&nb?=rfV^hXZD+p^O z&f;@hzD=U0cB=Gi7R&hV_#|XzcM&HFi7!4?7kfH|9>17{NO>PPsZFK)tLzlqFbnh_ z&V44GRpwAWu+)+e*Dze|j~6;EpL8wtC&4l>5v8gwdS?LIld+e35y#S!G7DBK#JfAe zwzM&W=cT6%pbn$a137?tbLebuBZ%uhsp+*Sx+2_?WbRC$9Q$f~ZuRn+{zX(Xvl|vG zz@=XjzTtzA zY_gU*@p$&$3ay^$h{y0GFgtp9Vq-#Q*B?x!V&TPK6DY=V>JW8)GZ;>(U;YtIdv^*B zbWXm2{$O5SDXr*5Y%HfJ5k5?%{6zxxCK#vBgCI2A9Rw|Cki2m=3c?DPDaxLH@0})a zR~?l*$D^8j=QB0CyZ5UD41P}a20birtUJiXKhClaU56UjAF;E23jPlEEzoQTOte7L zik+Ya#x5SAN#pGOIb&|6DE$!?IQA|DWQ`gr%(`+eT3T@lk9U(VaGUi(KWwKs)) zlm<i>-J%fOTL6^OzBz2RHY$581mt^ zJ3qWqhj(C!{5(c-&Eky$e{H|RM>bLh$4_29{}C1(#l`gm|P8QM%>o|b4{Pim5ry^vT-*8_>J$_eD4*-bIcock!swnf#! zVaLhkX+@wq%f7G)f|M)bf}@&^Sr@XOOk6U@-D?|rUN3c9ak?93LfNjVD&ig=m4~kv zFNBzft!xcvDJQx%d=1%sV=EU_QhZ6&2>F4+1VH9YBE=KjZRnU315_fAcqsN7kD^HH zG|Ix4IjFX+=u5I~9uM@=;aE|Znn}h}8+*!$FeM-%(YjD3XiAw!AcWaT10GS~;))C`96xZ48z- zXG^v+*4RWJi_;S^)cr0I3Ptg}dAxB>)flq7rMC@m&+=e8?2eciUv)ZyyTN3TZA1xs z&zVmG$;UKCsaSbp&f8mW@MlQfDY#VJ)H6q50RKM#z}y4Xi@knBI|1Jpvb#&!l6!(J)aS>m3gY&eZI7P87&_SRF3UiT43E|dBDzFG z9-3F_T`y24aLec*WRl_kTNM8N0z1G~Y~GrAKMrZbf>yFLnR}D;&}7{^p6S5LZw48z zR>Bv;J$O!Bii|Hyk9AonK;h+4k9?6GHjm|$l+ri;4}ZnbOW|do(BzmP+7lPenpQuC zMCYz?@BUB1RwdcZ$2q;iI~@oaeny2``#~WpU~>ZsX^LqT|H5Ju(HgW-0Yk%z!Or{O z6Ey9(QE%S8dK>N0`Bvk8sf?d_DIQf9R$rMn6IWe|}7l zav3E7l+}sgfjXH-Wu8DKSy1{D1>~8NS3J%cwem+v<2JUED~Q*}0v$8lwA|Y@PR;G@ zwP0(x$42(AOZzb02~%3sLfi5WW8#`q$i*@(vtw3vYsJ7m#*TRvUvaS$f}F^0dHdvWAO0-jU=SMZ9*QxPMd9S(@i&Py9#jmTIyowx4As0*Bw7ODjCQOhacDoQw zEl)laG4A`^NL0V9HJhj*TKm74?P|bXua-n4QCNlTnMcq$(k1Kh1cX5E2t(l(u_s`(;SA;>$xU^Gsq?JAA@sELTd1u5loUN znCFMTgUFY)_?yd|3lAm6|LmH^cTX|d$z9hU)-8I|y-~!zSxf5To_a#wAQaxdVRrt; zY(;d7mwhy0#vP$QS}s+=3=-(Igsn`nWVw#bo<2VOGqIh_;|M&x1-V;Oy0#-Fu7yrk z`}Kk`p6|9Yo$wE{EBde9m^n4_V8hIa3yfNTh;97;O?5ZPHyObegXN)x0Y7kY#t$_8~0GL1He`Tg6adu3quU%t0i zmvhc>KY%Vbs4YuVmcoih_~@Q%3vtl&9Yeu-BZyohadDGxdqRAW!xl;EPjzz;6SeHR zUSLp=CuI!I5o5mkrvn5VQ$J;y4Yf!Y`nOlSfOF4*IEb=a3|jZSTfbr+;r7wA?&pmr zKbA`AT!oihWjjaESY)Was58E6Qi$QBODBB^FAyX-?d@f$8R_7U1UX`-?@j1&H zSLTJvlHP9=b|}T0kP5HNelM9>N5FR6Wz+`OJ^@sHWMf-wJlGKg?6ve)QFq!Kt zNPQ~b>++IBgpDvb6X;_1hLATdbi50%(l0L#8?Mf6Mq$$qAlJD$$O6^4R5}ZF=rc;v zKj5Y9VT2p$<+~!hVlXOw(H*E&D`kyQIJiZF$zOMDtq4ZFr6O6*6g#S9XR*e|bUOQg zW<@+npnXvyYUs^_W!bgp>-5OA{s|Qu5dc9$(HZVW|LkuMNYr@j8vKwScvC|Y@R@BA z2xuWLFmxq{VaqVq8+m+%(db`six8-2K(ZJBp2&nlJ;q zv)E@Z;go81y7fZ5(O4)4qdwrYUL@0Z2PajI{5Jhz0~XuGQ>dIwp#|7F`NmvKjj&*i zpQ%AXuQW_6{aLlcU57JBL2NHvL(()>SQZvvOW7eKn_r(hMU2HMQ`{nG$oEgE#e+?q zwBXQou`PW3Ch`si3?Sl;1p5&S-VmZ;-`-QCC+Ow`yD{ zkr!~BkFu~0(C{%OB7=Z3(q~$dU0S9unm|}2;sTMwT921niepqw+T~^_Q_sjLD)XTu*RytKA$m@Lv?y#Tyel&%7K&f8b9$+K;Q^9 z<=6#(a33~QriM1DQhmdR#YeE#?qHb^QUhnHh-U-Xrwv%9cr}Iz9>aTu8lQJ}$F+xcWSwID^8vfu zGq=KyM0DT)FK_t5mPTgUnzAxcL*>c&A>pN`@p`khfq_v1PHQ8@|0r%Fi-R=56G+43 z)613+ZtR+M0_DLR_9GXFl!FHcLn;Z=slq`-U@F*a(MjnQ8ifw;(v)%n$;ix1m<2*& z5Zin7`N=e7nakc6jU5LypHh`S!RQ2UK=eUOYxf9Xk!mQFaoC`N%G$h^01evB#H>3I zvJ5`-EI@N9F%N6~TJUo}k0baX<-{U$kdhMQJowf+?8e~%fm9zzjt^~rADa`I#@Y@f zbFX|u53o{$=N*!q!S3Cs0&bimObr0ea`4Hzqf0~uyM1qBN-xrnocC&YTQwuq=v^7b_ zm@YqOXKH}Yko9)eALd}DQ3>5EJ(wv@-5~3x2Fg+4bsDJ`?voy|5Xm5YQ_?s46j5=o zpjP`6?tL^4uB_p(QopN(t@&qUcVR{e1F=IUQ_lkSQd{uKGrPjXa*sT~r>92xGWUGZ zB^pbKlg7I=B$X8*insLJ?m>j_XKS@gLaw-i_1ZJ2qgRjZA|0l0CfsDETC}8Y?g+>y zoh%KJY(o}mZv#*kA(b_+Fm&=51C{7f}TLe)nD?f9`!^j^B0}jytcCs%?~g`=b}f>l=Cv%KEwT)i5!` zaLQmqMTRbPhdCVgZ3}Z;bv(;cz#)%IV)GADR0V=sIL-uG5kUrysd7@-eY_mbD)&Ci zJaUP16d^tSHH0;l`9LzI>t}asDd{rdm1rT<2s8x|o?zRAaq2QZbmAKM|bE%mNzSCt{a5%k+=Pbidap;s_ z<3oUWJ0c8-&I|x7Mp7LWSsJs;TgFKk=<~h}Y#BZWQ-6btJiwH;#Az=;Pb^+Jx33Rf znHo-9CbHfllGxv1MdSJjgo_gJ#B&_mi!F*O?^s1y%(JiQEy~6+^Z8Uz#(NO%eRm>y z@UJ$x8^%w(-2z6ypv|4RgvcL(=_Xax^)~ihwzrnFnw*a;IUzMxzQTXVHndlTH^8h_ znRHLL6L}Y6vpO6Ixxku-tbtpc#XR3Glvwdp4)PK>Tvo#r0D)*}aO|O)@3p#QMrCU@ zs)X$(Wl2ZlZi&Fk{+yY;u>)V-#g#Ask88@Y-%1>&s*(3rrV8p1VvKG4)|6=&@K2U= zPJG^CmLHeZ?xrTND=8%r{HtYVQ2Gxn#VnxKWd1a(-6M@T-Cm-nzA`|UVXsN?;hAY% zc!X{%fx(k>5kdQmXDPQ7wOM9X7D#XhsjS(FO(#qlykHtXGQU;KRt-3{G90_f|qy`mF+IIz!2d@VH{2dvT8=`q0 zZ@FL1c7ZgXYu44J3yTj=4|Ow7wXOROay%DV);g?`q!rWnJQ!js*EN7nEuy#r{uy%Q zD@Yc^l&o}%{;XZJbm6#TS!*)O9#1g<+oEo8W_2TyCb?QcG)In?I*!$>MQ|s0M`oNd zptCl_3OVgAL9LS!CnW0Vyglz0K;7Z$HO3d;+2n@lydZ}P1i`5MqQ>;eL`iz5TG3d= zrrbcFN@97mi5q{LPMC-aqbMIJ>k}^=uZ_!pa&hM7`H!6`&d%n6TPXNMH;u$k&F^N?D+ ztgp~N=uaKvUZLUScH)qm-63~T#pM1NUrWOEhtXO8{(J_YqltX`Pr;6EdF|>z9H6lT zTF5#i=}VFwFKAvAn5t-F>=d)LVle%?{ZZF#X;ZX5*4{ zgF?fQI2a?0k#4%L_{Yb{pcS#}?6EIh@oOC{0}e9UDlaaF&wJh+83C{1mFIvw?q%Ku zI>C*L^Q}Tjqa#S0ab;VoDs|gzNL)xT#}sA_MaP=wdyN4@n~tDCJm__8I3$(RFLMbO zyT`8%*|%TY0?*pe z%jm9Bwd`P~@)B^~4T3-UPMe%}DOZF*N>m92zBJ`wXQef-7>b#utYTrWt3&RegJze2 zi{IvZ(1^hmUUOU^jUmSJHKRB3m0#Fix998?F4>NydtV=Ow;q*&(gPFrgVjNNOiTco z4=-dP=0O4AunhM#_0eY^9+>$HpFjl-WLB1T+=Yjwe;CXveh7)@Ff~U;ea%JaSCe&o zDP4^{y^i`R{uRoQhn202*Gh2VS>U->kQJWsP#-W^B5D7g1OO^(wl41#H^nSOMSEn> zbRKSOe8=mzY+3NJ(r00$hkrk5zIYhu+pvLqaPp>p{$69fANHa^mp}Z?)@GGV<%5Es z>g@$-+2UKb_pSKDh%-|oI)qAj?P4+Guv3SyKV2jB8O>-gyxkmvxu-xh# z5VJFtAb`1aX6CNlP{+hw0?#1pyWu~AvPwr>BSXO2L*?bTyM7X8PP7YkbN~X4lQ-m| za!4aH7|TqZ#=PL#BhnBjbr3Ua{%J2Yv*ZU;I$JQXn^{QIsR^!5NW6!1M}{f-7)?Em zUdI%_5nb*=x8kaG6^?I`Ed0*hyzuLHiFlC?m+2MeC_R%fqgj1&tdJ@$wd}894#%f1wuY~+IwHQjIIG{S*cTwB~(e8WG z7245aKEjYQ{8e`h6j+00blDyMn9UhB+-x8cps5}BLc4|YW2Kc02NkI@Y=lA6P3#i; z3CT#)l?c?-k>&jIqDVA4R&p|>GpWQwB{{d&Rj0aymQ5%ODT~lebu~Wqo9NnV-Dshq z7_14%lt5m~D7Y|`2vY!oPsV4H)NI>X6y^hAr@D3ZD*fXv0El#kfHfj74OoS*%n=#F()Ws>~n3`MM!xbeVKF!T4|^-j5Fpp18?)z ziCgrPiT-GbW~|E##v{uw| z2`ybH{sXeRVYTVo+Ii>J!tX0flKG@vl0xAxa8LzRP2h+VI<2x8#*6Sw-Yn>@JX&R)gnZyXC4yr zP+RlTvDk=<#Zy>A({IwjLHf1?P@Ty(?r^zWk}5$5di55==061JbRWrFbh)eaV@PSt zLuKLM-^q)>-TT*Q)0f|Q4bF{!HrUA82P!Rw6FqMW<+jjY0@zXB3d$N$FZ8U~PHU=Q3y- z!!3!M&-M6abR1zzL5MUcwVM19Fq#<0EMMhXod2UGXz4;Jgj!{B+uSs&#m)1?QAGKn zLqX_db>Zh%;IVyOLKxc`$H8)uzP^8)1?7gno0e3-7kJO&an>c-BTB7$cDLz16yeO} z&O16UYhHj?8;Ptj=i)DUWleb)6jXfw*zj4BqD*;PFk~{o!B5qj3U#sjaS;G$a}<} zP$~@!Gicew{ElUbo@QFD=U_vMb*g1Yt!Ktzww{+@abl|W^=S3Qflt|C?&3E++T^y_ zrgZpE`4eb8rB{e8Xef_C7V5w0;AV-HWcu-w63qU<%%?%QIyqjl@{%0!v=JNTDkh$k zj*!0!D^V;x$CMY!{{b@NA*aVd#mya4RbErSb_>aLC?oge?GM~1=%+iXp`61BPQ}qy z{t|S*_;zl<V`ZcJ`W0{aeEtStWkhmT2sAzU z_UgAYbrEr-5UWy$o)@SLf-bZLANrnJ&paMgbCGUu8;ww-3an)rFXuFP{yLXV9^L4* zyUZPlqLmha(%y68od5)|>St{%7JOBDBIehS>Cd&9!<_i5D3bE3u|J;hXy>Tgs~e-J zeP|7BdBk3-xk7i;Gw@{vaVrKs`4%l|5R+^0^ZbwaB3SuG|79OcUp^^BO(GQhe{R=; z?-|8oaZ+h~J~nW%9f&)%)Sd;diyPK@Xh4Yqx2q9 zEK$6QB2jpykJM+q41KYbwdxpUhAt+P;)GjGw%Mjyu1I5=^5m4bz<7`TUp`Hf z8T#R-z;nD*=taE(R8o-D$<*>ndgFI4ygp3HT%Z_E__dO;sE=o~IdvyaNRlY8I1~NKqP+cfKYo|V~Q8qlm@kB&u#gxp~BA2Nm&xKrEubglH4={$wjS` z$!1*2$SyQ0n>bmz6kf|m{_?~9qHx!@cpuuFUXz;ZNiqJK&j9%{k+c*JaJ4*x7g$Fk z7T6J67JMlVX~j@ki~*Iu9^dzFjbMe>*d$B_v%pF0dmYkMrnG_M=Ywd?8s zB#;Svtg}_LGn@1l*_YcCUX#4NS*8GRD=9!_F-aY1PGay-kz4U%v# zTR<;|fn-LRVXzYT_^*Ck-!<~k<(q@xa*`YL^Bi?mpce(Z92h>}H`pciV|{DUFyap5 z(JuhDT&C|xd{Nn?B!zPlmeBK{hEbc~vXt$pwofp6SqnjCvs^@SXqeP$abMG`(h5YK z9_C%d>LB*I81JcDpy{`4NL5#8t(wj;jKuN&0ZtACpS4nih-z$r*ksyb=~&^K z?&*AH2xU&S+}Ns%&j%Y&IzZXgMUo1E2cq z7fjGL5t*+Y5WG?DeW7BJ$wZzqvV$r>VF0E>qRbqdBq~bTd!))q-{G+mOEE=Fgd%{u z>y3GNr=c6+m851f%7{}k9i;o)zsCkAV$L^&86A_X+M_MeoLH(Mc|L+U^I4(9a#$Y zHMSadc*%brTUI28)@ZKWfVd_PF@JXS6y=bn6?AGQkCot4en({rd!q8aE22>r78GjM0wrqMDM zIJHThsD_wl0XIPm^DVc-l#49=WVu?1<2=}>Lb30@P0gTnjfcR9PdJ!>2zJfMHm%5V z68K}h^+>z*6ZvzkjlGp-U9x^Eu<@hU6dwTkRvG}`zEGOkPq_EH(eIg3=Y>4QE)NzB z>?WzPDPF(v#HFt!KM6%%GW%D9{N3UHqtIv<@~ZQqkodk^yHJSzT$vON4FJ4P*+5+b zosc4N6_>7ZYu4py9*jrz@&ZJ<8}_8`UwY!WxR?l{9U#M4#W&HBCy4r&c`XY2aMekv z6nJ)6Gr;5Syf#N}X)#F3o6zMW1C7KM6Sj~vBEw`6$%6{4y+)X?SN2-19OgxjzdCe% zrRsk36jw72OTPSWhwQO6$~X<&s7b2oBJ(fa^hh!e1f1F z^~q{yC&ZuUwsBliHS#9=NczvlxwI9y?K}D}HH{Nh=fcU40PdDJfphr_ZZkBXFHpGI zpi$%~U)RxB-Bxr**G``jq@kht!6ZJ~KOIV8TX-Klt}mN=!z*VKd|IK=?6@=+=l?Mu z|A`x=o*7ww$INQ|lLsv&A3wsRu~;GT#syJNk#S;Y&&&N1sJ&@EuXou($9H0@!@n* zv{ac&rzurFS)iX0b+nIeqRj9f4&N;U{W?7RxR>PrSF}#a`j!0zb}Ya2AnvFO(^i*S z_e;j(6LkptUT=0gpP^XoUFAxGgkM=@FGYhg1RLQXLenRAYw?Ngbim8Ro<glyMkM*r&*Rh(HxXYdu}kJMDH3J(g5=c zy7xH{LAuahg~Tamcxs$A%{eNf{~vqa93c;qBt=T+*F$LwY>o|fL@T~G&{y7x8#Z;` zy2b6`pANb=CRw#J6Mue#{rgK;D260aUdAYHi~ba<6;*r>=ez4jdw)~9Hvy^E@A{Qb zosHN^r*E&V-hYi>-<%!n#I#5wvQ$QpkgrStuVvTjo@N4J={D(|Z?q21G4+SjqX0aU zvgH~zO(aj~stPLR=@6Xi9jj-0ljw^oSDYJ$z5H^(eFJ0a7B!9y*~1t#O!!uYbO^4i zwmckfrYBH>MT{I|I@UUn&|I3QY$cM+gW@x^|JjZcwCTd1gk8b(j23Jq8Kho zZ#BnlRPV8VuMPiSEl!;Uawd^(ymh1q4m7GKPEIChq-hrV|LGYuRu=#u`O?ubV3P|D z4h+(dtl^t=K!>9ZjfsF=eG5R7XZCh&9lgowiD%bM+Yb znIL!!lE!6mGtjqo*;5*;vc4`oN}fHK$_RW~-LWGS3OStzD?=-5@-P=0^7GF4oI1$Q zXj&dxk?sC>g3DT}|D?qLw4EjjmkKJ^Dx*IPsmbPAzC*xyn9@^yZXf!2}K?Y~gL~YmR3Qz2JcC zFip4WNL!4UgweY~=IPCS^vKa$KZ%i}pXCGfjH#VNtO+j%q(3;DMAio_Q?wnIavh*n zClxY|@WBQ0TN1$RXsAn!hCGXbR%v&vXVf^h)%R%El*!-GTZi$H%81@Qzvg`6ZwO3E z#6(dq4SU}$X@TS}B+s`WB3A|;NDSE8Y!~Mz&Ig`g2 zsy8Rn*V!pw;B;FZdRxtOA(rJl+hROZt$?D@g7avoIr13*@GylynQe4bLcs)Tuz~BC zAtw|s+~e@^19ILIAsH&V_c_I9TasFRF21B%T}MIgMJXhiK&JUHQ}ZiG4EH{?A{>O| zKjKfD^JTPiDS7r6%(MSrDKP=ZV7qq-_%UY}Nx?Qv^EP?N1j*1i0Q@10XtG~*7?ot^ zK^Ur2O0Yo=QLbTJwpQ{K5JoJ}7$Ms>5w2A6n&-7~8qfgkDhI5Wlm&l;)uil!Q2Kl= z(>dB%qhd7umL0ua3z#H=x-e>cj;;5h3x z;;__nT#FnX*?sJVO;Vn1)8H&>Md7q$92H|DTqZB42BX6U*T+$Mfy?NDNz(bcNH$fM$1hIDX4hB-vHPjX(~nu_T?J>=r0?TE zMHdi+#WD_WEl7om#0M6tPvcrKW=^_NIBJU(7pF`x!73Q+Iyar>Xr7U|H^04U!VI5+ zPz=&~?(dzq#BO9{;GS7w?*2lMrqHxdGV4;Y#6&TRX>ruiiRFDSqT%fc)hpX^fH_I= zT7y_$=%Idne#yvYFMI;&AQAoIhz6WcZ{!r9E(UN_=qmTXiP$Ux#q=#rA1?ljhq%;Q z22y%pVWQJ5YsE2=GM+%;#;Pn1%=Xe&*5_2faj$O1HV55NJylp}?g-o1{KtevHB!P( zGIhv-nsokI6!TFy=7jd4p#F`(6Lg-+^#)DJ)>d2$-j*-C?dJGQ-kMHYC^Z+T=W(2& zja{WniDu^rIJFG2Uf>1F(1hS|PyVfS_H|k#+%`tj&I;$8tHktX9=#CytDSb)4yqpo&VmO;F zen)k`WvhT~$VlH=%R{?$wnTJ&ZI?W(1y~0buug8&7nnNcb^8u3o@q*I!h;>7GWGII zGcA&12jw>@TH1{jL$ycTAnq3};iNDQ?!%Xv7fLSN2pfS~keM-JzRuz(AKi*?FcI{l zsQ#V38XXuE6+>!Yt8M_IDf*3T`gTn|D(TyyObfH)29Y>FjiO281Avj#FI3=arDcF~ zhhois^$+fBzE!3Jqpb9o0dv;IDegMB6#~~TyeX2*P>$XRIx>0ov;f$^0f=8Gvg^)e z&@*)0?Jh#7!0sgzy%cy@RFzoheM9M6_G1mVt3zb+<3*qCK}c=|8XpoLCpo$MJ9n4Q zpiQ_s>HZ@pEHH`}8vYY8JSZIFeoad+zM$gx0DJF}?rqV+oQtxE5b(W2G;1pAJFog* zI)-Qy3uve{aHR@Io{{vD9#+KN=g8()^LugVdida(-NhqZg4!uVJ@V~{a>U~jf-?2) zu65TF>zIQmwDHFDo720;^v=$I54VF5dm66vMw_+SY%p}eJ7e1SDM7;9ww?C@GFHC1 z-|VaJDPLZ4)c%VWi1+%56=J}z209+VS9(A`8(a2%z;Im=B^)GE2 z=eBWqN>?mZ=TIv^KfJp~zRGnI%~(QIkcRh^47fchgVM5&Gf#-as8w9*T^W&jhQM;! ztgY*<)!vyoW1fJKt#$3fULs(ynyBNE3j)!j$fX4hG!l;dz<-{!$>rjjX$^)W9#*ib zrRF$FEIt(HOM9S*)Ln*id~{<ovHO1YjWm_CPng&Y5hxezkO#2#jI zh6d_qMLrtAy68t|pm})o>nhx6Wk_<^+EC#CBeoL#`f`OeZx0GG-4|bFa5=w+6AjbG z^Trp^hnm;nChT|~BkWO`a>`ejueo&(Qtg|N$osk@A55Xd+d=Mi>r~aSQf|Iwl9SC6 z4Lwd9jvpQ6@b(xc24SqXuT(XD3K~-jIzSRIh(s)am;=}lX3)y^!=``c+4d#d63{dQ zy_~Yj-ix;5Z!I}N$H`U#gYYb$Y&g@?yaAE_o!jtyGhbXI8tc0C>5Wu!dN$!c&yIYa z?~5&2-1Kf@=+fn?y_^IaEe&#I9b{%2-g+hXIQV$(?c7+N%kfLcW)4(hY!(`p11_aoGa7?Gm(RsxItOi~dfnEBw9Hjs~-a>|=#3{w>Ha@Z$#0G}S-fr*pC6 zYmEcT;%rb_xQKER`&WeQOUYYj?AND2yr>hiVYb?U(DnKkx3n!k7D{jwaWvtI6_*G+ zr6Q_Bsl;JPS9`>RDF>Tx*_>rXoI07Kr+t12IWc>4K6b%loxtQL zM6Lg$ds?E$zB7=Br{4#FT8h0uDlyivnPl+F^^2y2^G&2%dhNb<4$s^VV_9h!L=nBj z$flzO6h=oCDykwu8yy9CK=neSea}!X!vj>ANv!Eoi|nOT(-T-2l=IL}yZJq!WDCm` z!LDh-bh1+qryL8h3FU-bd5fXulVl0a;(IVFr{nuMGk^ggp zPMWaL<-wchn3vQmg_G5%Ww<3e)O=fgYa?acz2eK{evUdU+5Dd{e`otYErsU(q>$N0 z!Q7rc9QCn_&tO!N^tpU`wzaHF*=2dVI@mlPEX>#9?h7rSb4c()pm@YATQ1)2QGMXj z@Mo5-t=sKt1$Gt}N&UeRSjdb{foums2{EH+>=odv+w$U<1F^@E_B?zI;}eR5wwx|0 zHbbQfpDYU^F}!m6p^{b-&!jHnjto_KZ$_iiW7A zC8hI^( zB1_P&^>xPrAEBsV*nC_Xp9m{e5}$Z2Gbr*4N)(Bk%cKo|*?EBt{4Tpi%O4&j8zFw! zKmtq~BY^ztLW~9>sZx64Cqh~HXv#)7L6|=dk`L^f z`nCU5j^*I`I`+#mXn|UpB3ffW8kWUBd>5#BFln&378W_gP1tS)16@(*ID$R9sl_%n2l%NX3c?UI!=vvtx(nb6Lirs z0`EK|Tu5^f#K2N6C7e&CED6Ou4dCj$>jBJ*FBn&&2nQg9%rr-zrwA5&J-NmZ8*tK4k23)D7p>R+Z>BqC!lh}hB$_c)7xzm- zZCaJ)#3CBq1<(Z4vGOVxzLAiFyHV6ep%qowjkbuXzjRc?56B^bRzn|U7tEGZCzIbr zi%p-~vh0r`pHfW|oZ!S;TT*D+fTzcj}0Xo==@ij4txXoHT z)cSyA^yCzI&@35cLP+Y#ujsqR^vQEU=gv*3)Rc7l4Tk#np_H|b6HV=?} zrho#ud{r2y9APHy@U~w^)5#Ud-b8g}&zUREo#hYkajBn9kN{a(alq9}7j8n7F1}z? z;EdXV3BPd0*66x+KxKu<#B&f^GM=5xDYOO+#bsHkMRfAr;;KW2ige@Mc{v}F<)Gn3 z*akHxKhW($w-}>~Te5a4329fp&z|c8>i*N40yf4l5&*}?UT-;{vwrqtxTGA_f@(jj z5Qo&-K><6h4EwHdWJo4TQ~uauPZ4rzjnsiG^oU;S4>9Wnn&d}`KvDWQfo&;ilvCAk zOd_ev+vu_S2l(NM~dB-u9pm^evA^xR@48!grD;jk{2*0WkED&hBc+3)2TqDzA7sN5cf{T50 zubA~*$KKrwp!nPAM_wSvot|c5ijF!h90S!gxt-GDR-%e4?LkT!92?crbGy05>p>av z*enR;K?C}EzbRYpK$lCT?QFWr^_}$%ONzLaV=MgQ9#gD64(fW#ZTGz$U^b(b6Baou z!2dPvF<<`W$ss=*_AT6;Ye0gR*YO+JQW`&%V%;8{Gv*^(QPXn5LAU%DUK_e)8cMKR z3zoWK-RZ{N*i(JD3AJ#zUPo@7h{sQk26Z#dA~6C?HI<$VT;q`RkBTu;D3@-$*qx_> zy{Vl@O&0VUlCn-G&)Y&*FzqFJvX7;Vzan^QOAg+14ba zE_$FxEq^hCpP)PmNvy-pU0t)~A$f2B-k8^ZNu=3*sTyH#+@+a^6D-dA;mNq8H+E{|NvhEf`c+sl`vX;H58U zWA;tKG7)iuo?OEqK(}vI0!iC%)tml{ zMLm77R%P%TXWPeCJ6wN9Wx) zDFF@5xR5o{_#MZh+&~{o`rC(;tLCWpAYT`6vHxs`!{(&BOzT@%8-=18SL~{@knqI` z^psupxkqxZ5Y`obKGzA%ql3C{ExZD_34sC9JK0jE6~VGC+2S8P5h2b*r+b_$sXfA? z^2mafRB=ei?PBViYkTKG^)%Nlp}|;#ic#y*0;XvesxF-O#29S;YGgbkiU-r3PR4Qc ztQxz`jzmfLv%-+6HPRzZb>B>&IY}587rVlIXQWRCmX+SCTVwg{lqy@y7Gsu zf7!*f%dr}AVSAB|kb`wA;nXuJK{O4l1Y6WK zF?V5;;}>=s%HYZuENtyqzEkLawg~AZuutBPNU*wtTA2Z828PyTUs2bQ@V^l^p{gA6 zYbiU#5xV27rQM51H3!Puiva9UGy#WQ-s`T0g7R?R7>VD{nw)6rEPH%?z_(xg+DDEL zTeh%4Z?(~$&leHRY{=lLA!bg=_C?FLUtXoDO3%wznBr2Z&;h;A{gfu%cxk%MTpDq_ z-i6z7r_2-gZF@`+f6h1@745?I?;XBDg3nMUy4HB+j??@w z0l7c|V{KVAG@U%z?x8-DFe~(ynYN_vy~>C9Y@XcTZk)6)6WHapqrj5sKt$~FM=z{J zOu)p-UY<1KrT+<(V9^B<<^$&dG9k#6><`5kji`2)$N=3GJ491$y-j%SJLXwY2b;QH zd4HIzGHk@qXcA|TvRa(L=~TMz@o*<*#1F!^T$CyMu|S>{SudMl9)H9P4_~9-)ZWct z3<4{lr{*AZ&P^myp&DKeqaCpkbX>=MC`w=+az6xA*MIz=E6hS3nEW$Hehhj_$ER@8 zv)}o*8O86oZ}MZ$q%-td(5$+rM=ioAWrePpfbTZiOyxvrtT0wf ztU=x8lx%C9YxGz$I2KDa%ZE5dGSr1H<&FQ^0^$>>a-WP(P|f>$66B~<0-4M=|vkXcnV`u0vd zViR2zi0_+mlS<`V-Z5R8PbY8~UI;O~RYW&f@F43^GeB25oP|Nh!xdt;vtMxcTd);3 zO4z!0Zfii`EJT+p`r_K-+~WtBY`s*O8#(;1Iu1q)F%y(F%%IBOphHyVr$858N*<>j z);x;peN0lDalZrHt5SAO*HgrKfXIV}piIn@WhyF2&-HKig&TcEQSU+d1cZIU;G0<# z?-0`f`_9PF2>!m>orK)7I}JfV7dxc!=_)DO%)~5FB3~%)9r$ALy7!CmX-{N3Y_PTq z&V$`d3qq40zHO3ZIqn8uJtpMe9ZLhQVa4J{<5h)fr|K4GHp z?T`+!D8G*fG@-2HXDDc{6Vg(>@^H0jkvU?fmwz%YG&Q9nA{e!~`H5$EnoGH^&hQU6 ztZTyamM=jDFfhaswIa_T+a^;7dVN-?X*!YrNeWAS9cFXh^nLuEWz)A^D4fl$4*d}D zP?h{dTQT=W;=`Kr7TtK?*qEQ_D}C~i!Pcd!%XgFc2}a#r3l&kgACtE0quw{l0)_t0|+LG5bQ+I{%X z3i0Q4a7&+%ztEckfXU2A61Rj+IIZ7rdy0gKV_ZA0gT`-6dj8+c+O$seeR`VLWxas` za5-)Lea(SqUHt^gd|`@j{h`>KqeO~Sykm>2c7VP8CzQ2GauX}^<7*6zutZ#kA8onL zC@S9i{cI=brc8PiyL9K&0R%1ZN$jX`<-HE^Zip3(dzFI@xLciuk>i}d9W z8CCJIYz_Z)qU)BT5H2`~$jOi-ivFQVQ7F?@_g43nFV8uN#wTia&eY`w)7hjQbKD;bS|b8?75Bz}Rd_#Ux5o7+CJSpHJWJ-D6`F7Xi zFcQTmXkFrkoEpT7-~_(;?5~1KNUg{jg5h<QR(`H#H<-?OhS-hq-%dQBHg>@R6sI zF+olCdU6Y1`v~esxN}R<5x&j{goafLQ+82Z`7OkrZy=+x#EG<-B>!YUoKh~$sA!U@ z^$#|O^jnivV$M_PhhY_sEzPa(u_E&|McH%mJn&^1+4mLOySTNNK0s66{<-){d6}d zhQXe8B@{i(OnbUDIN@xwO#A2W!TzBND|)p$b`5iuxc46BpqI5gR(}d59MEQ5x2a8Z z2Uqdd_Y``W4_K>YVWF0LNJgZY4_|NUv&N<%!%&H?Wqu{{2&ed3%-$lR!rIP39-C`@ zL13gI7V@+9u|X-ZfOp>S%xI)jBYy|VB#Nv}eo|I{LYRA>;H*KSm1I$&PQ!+D$q57ls1*>o1zyyvC zLHwBp31k&G1vr)*IY3wc%7ytd9{;Rtxo_LrCwrO91JU7{ndQ)YvwfZ?$z@tvi zS>4sLh_KZ)Q}_Bmh*~SoW3>ve8Ih9sBNblR8Y^*vhijJ%p1jt;BQZ^op))+WG^HEE zU)WepHJH3Rl4~#F{k=;xGf`--q={p|VfBO&vTea#hY#^~ekDHUyOsW)UA@)cdw|(N z;}2j1nbZI7wfc(0;a94)15etJ)K`t5v2E&J7}nMLB<$G)9Vt4u45+dj)q)9=b+nPO zoD&JD`O)F61gh{y6Rmbrjn)`%=v4bM|F3bRy3**J-NX0u0|BRE6U-%VW?v$_w9(Aw zX54aEiZ3X;dZDPgKg2Tcsx_HNSKvC2_)rr!AXYJabed2oEFcSsyj_ms!OucnH~ms= z-B4@;US4Xt$MZ*fk45C~r9l>8=)ZE200|UJmY*XXQbKdw4scU71k0U@W zYn7c3)9`I<@_rhb_u4#P2f`LbJ}I!@p#J%SnqaOiL7(`wwq{}NZF9?7DS;343GZ;X z(`H_X=UszGoaDVkp2vFhNcoNDg=60;^+}oL(y3F5^7Cf>0RKM#z>{15`Xlb~eMnEx zE^(V;u!gZa!=zzfRivsN0#-`Gn*(iPQfo;sX5(&H?-QfRY)N=(&HRg-q%HmE&5YtYgN)L%yQcFw+c&LuAUqjv()aF&pnZT z8fZiIJ%PF|DxCCpv#R*!$&s~GdIa@FRq!X917?-4$%%4|{-6AreNL}LXyyAbKlYdS z^asNpKs7KC91B4FUtW^Zu7A@uC=AaT;}IU=^FOmSh>IF{cU?KYXCYU!e^I&hVvu`s z!De=)XyZHE?RwA>fOxii*hS=D7(wOzgOp$vk6A$9oeI8`9b4lAmhEnz+rk)qFM2t_ zJ1#cpDqt9Y+OfxQ!DnNcb+ADHdU#$wm&*3?eXwV^H2B*Y`M^>#!1tfr%haCvAwTV+ zlYn#Ad-V8NamHkHs|4;wgAlslo~9vwKhP*mUF4wZqjJq3fO(<>TAJcKFla*}D;aeNL-`xG3ZCW!Ldk+yamf&~T%%$|rB7>7kfp zR9drkkc?kM7E8~J-(1w*?+Y$cb>B69DhV#)IwProAb8zbo1#(A*|w;hj|osGq?`(e z_N__h^XY@c)TjDFoj#;rku8H2&>_Z|vd3R-yYPv@)DCmG_wR1~*VU-y z0|_?}c6^!e$rwLvntXNY0Q_%}1W2#6YD|XJ%q#I$9J1CeRI#!CwX#SA3uMx;+E+ZqVJQ}g5tt`QyZv!(6fhsw5wqL->O$zd zwT|e-xlMh7puDE87|aq-a#B0Dt^j>C9TyKA?_Bk08F!4@r|x85)B9_OMnWG9zT6de zK|g5?n&2hY8Gr_qq631P(SxeFQ-?tcXKGT&{Iyj`HZ|!N6URsLkwDj+DeQdYEz@V7 z@uQ*;5~a8kvNm?k`&0I<}s-%K%zrH-6(E8=}lt=v{z9m)L$=EGn`)Rbdaz;t=(J@l+d&|(5~(|yfn;ly=m{*oLQF_C)L2A#oq^|bdUGi%0_%vqE zEhlK(CL5*oYv@Gf!K#Ow@)z5RO)6cKS&MlKL*@p!9YwG}rWeICo)F4frN*n~*~|%3 z_8mf`lMg4MXDsJ>EQ89ZDP%fz5uEFfRk_>!6;o0NCK06en70Yjt$SeTyQcuWH=++3j1mAh0QiwQWB&Yr{ag~p_eWk zAN0r_y=dhDY9)?sp*_@KRs7IP;rC1m4Qt9v2+=LKD8%pN??;HJ+{{mNR)N6aYAGC^`%$Y ztDD&a@C!~xPRmBwhocQJ)`XVcFuJf-d!Y*C>#6R~EOyjrNB944GEtDH|K+{Fq2xE7 z|CboiD&@pnOrSUDAPNf;j!+I`FVY}ua5GfL&=<5YCmUJ>(I89|P3n_#x?h6pi?D8= z1gZBZk)QJL8J^Wh;wG+u@Qq#ilXCLw?)h zN}sey6Yp1|p^S8+53yE1@Io+S26U*oYYitxHueBb33FotED^icdL;Q;XofZj7Tiz8d3H$?0{9%~`HFV@^;Osan8P=KGc<6=5)gF4Wh zv#Ab4LnUlHe2VuOR8TX3ExD`}bM&j-uGup1$eCM!08im8RFH%CV-<}7-Qk=U{e==6 zTOJ`1s6-Hk6)HY_K9Gq8*C$fWQpd>A@Zuq(-X1^cdBhQsP30>HKvfhFf<_6eCJ@Tg zTN!PyTMR@quKdJTWjd#p)5LDkpXS-Iioo2&(4U(-X?fab{uEO;w@w1wr!VKDc-v5{ zsPLrJfrctB0~W~-zsIHoKy~rO3rBqU^X)mTMxQ?orPGA+@JRCNJ(+qp-1~(ELepXa zEEOR|KL?8hOZ=%^j)~Q1W*jNb@D%#Hey93ioskF8b*gD?QbMKHJQxcsMFkaUWlj_}`;YG`H(` zglgCZT-|Ag(3$ib!M z!AF4w_Xj@kcBY0oXSoS^kcOKxVJ2u^BZK#+u?()5sNcQQ*I3IVBQIWATn!Hy!+CSf zn%J{JU|||ngaw1TLOQmXvwNy`tbW7!gtEArkI2@g5vVGX8pG#{O|ykHsh4Q7N`(0dV?Dd(s7h*`4*B5f{@hglknRoATZHkYY*1v3uNCRPn>6$+QhZXdgv;~j+|3>^wA>)f!>khH50LV6^YPBY*nkjQB zG*!bVmBBy3i1WC<5lG*-Tdf_c^{k5mSYa=#gf^}{mY?La=;vH5gplZNi)F3my+EzC z?Zk({fDM3TeefWaN5Nw+7(eqD!tfqxErhw2QR;@ZOrZ|E^kiCrNwZKspFwrszdUyp zyMqn@x|at96cX1qonJ5qI4dB{hh7v=tK{C`Xn*bLijEJ*Th#{CfGq~eO9)g!R)$8f z+U&=|LRw``0cSv;OOhJkwPK^*p0eMWL|dH@d3e0Gr938XsxiZu`?{8On)aCM8ql5N zzp<3y=eD_|SncmO=A)L^o^mru?&E{(DVZ|!GuZ@y4KV(-4sN+4-&G zG2~Rc*1+?tTc%nOt>xQqHwY9xh+Plggk)V-Ng)r#g?r|6dprau)N+wHL|LO-R8jU-ra(i_I=SJOB zefxgMkj0@%DTe1+6RkV`_<$zaMgWbu$k(LoaL-hG)gdo-8`cZ{V(sqT?WK#NnN z8jRv%GksaZ(cM=0E+|0#SE112DqbC4erTC#l?XwV}P8$ z!nlv`o99Xr0!oUil+XFNm2L;{>N#rxfK=zeB~1ew1h-(AX+8}|pg=an)71(KlhKa$ zP2Tt>(j6tLJ5Ec}ipqWDjfWTZBFD&AygMNK)oFPhHiS)e_>75(keu zRdE0dHafj>YB_fvc=3eBk|(SHO8INi_wsRo<-}~0ezg^MIwvcVacQ02c=$GY%OBLq z-wE1>lcpv@?Z5KPWunapw0(*W#-I2)o1E>t_peNR4U!2OU4DJlWdoHkHpJbPJvowV zX{%450I5;QJqBY#;BXR>G*JA1sS^=Q@s)BiLMM@odrr-_6-)VY-$a~@3EI4HYr=f^ zOBRovhh|lJ*1KQnA(>qg^kB|MwnnXJw*x}6CMeOnA$H{v?Ll7fZYxxre22kCH}+Q2xV8evOcM_B&kzR&^c1_j{>GyNCZs8$G3+?zeuK?_4RHahGZE8#H2^AFs>tBpFFHtd}j=h ze1|ovz|Y*7eQ*%2PGT48q7&#Qs1d_uYCP%FBV2*VX-Oi&jaLA__fh?wj`vn z01$7*WBdr@;%+#&o{^#zpDaIpwF(eT5DO?!Vh9&!XXABR?;EL_ z`R|Eb=g)+W%t~V0PL!2_`%kF=ZHoo44rhB7K!t0oleD5jso+&_k0Xr#7=f|#2SD1o zqv%legEH5`O@R+UeSe*giCh>KBcttNvliBm-2?hboY2B*pE%^kkE;-$L=wB)n|_13 z!8FUxS>|nzlva@&CgPWrs$Ht3c#5B8z44&0lLgNT*f(>;h(H6%!7)6u6eAsZt;D+` zsyoe%b~f(AvlyFK@H@Ie3OTRTbc#@B6HcH#!cW?Jw`ta#PyFne@*4x|p zCU@M+W)f$xbn!!5Jp?B^H<%;szR?q$+&V%YoeZF;Z|HO_)yN>$;ut2nY92z49wr6G zksay;p3WB&UHCM{)3pSJ!t{z0w{S#>N7l#>+~{p9e%Z+J5{T`@-8%c{pfj9d(ZV~z zTup0ZL1c>X`>%=N2|_$a{eL_!VVVb=;a5G%(PRAB`;R2McQh4RW3fEiX^xZSI)Jp+ zsu}NL1I(L99-|(-Ua%|iVsOvQX@dWi_8b+;`Q?N&qE6I9ihZ+In~Gu+LD;f--2m87 z+4A>XQx*W1#&~rhw_*AJ~eBV3=tM%%b3ORGw7|@kP5<0ddP*k=U(Y*L!#3=ss z8IAAf8F{F@07mpyaqC@?qa#^*f&~=v4{edi-V;F0%Zu!w%ajJpj zg4-2!3A^%F-D;O?ud39%=K8NCg_ljW^dZJ%u$&1vKpd^d0yI>)g{4wBwHy}%;h9l^ zRY%*-FZ@q;_Spq65efq{_jhi4#tG366?szhP|g?u?9K?jD@@Qf2soC9#6Xnse2f0`magZ(@|bjfCrskHwkd zyk5JQr*y@WVJ1p4qvg2i00~o6_nrt z?6Eh2r4L?zlWb|~p+Nqb)gzFHv-nx53F^x4N8_6QRG&y4@tXLXld1-Y?Cj&|QwirD4c-!zaYpQ7=2IOC zf-GB$3ieR$jnBC9`|no))Z+LF?*R+#LK#Xw97g9tZXo!v&1O5SMyYoN40(-Y*`C@f z(T26EpT7&&aa^3rew)4zvIjCz$Mc)xMvDf(=?N#4F_Kx@8zLe9&MYHYa}&D2A6Xv$ zTIs?%q(7>_Dea`qi9nEs5QIb@Q|mxzVP42&6$;3@hXOebe-(=gKitVf#SS)rLT_VO zX2b|--?HlLYX#)WUE7I0)H6AnVb*nAlWKYzz2aMSJT-xz;qxhkY2BtNVEv%-$7W_w zdJEB+_uEj&rB}OCCv-_yA5VW#d*UnMI9}V4$dE3gz}0q=rN&C@YXBmUKG}9ksLhu4 zr^gByzQ$|oc{G>ocPMlGmd9H-CN7UN9z|2TXw*!yHT{cgCq%b+^7<)OtDfoGIp&o^ z7TLBnQAHBQ5$uZ>q*A1(F=*@qqa5=b zW9mz{#G&rt9N0q(-(c5*nz2G%{y^*+mQ2Y_x5ty5uXBGJaTQubAzlI;QxszpnhvF- zd`Y3bK5;eJbBNJ9qyzGjtUd61?Ko0X8bO^CpJa_+nlj_|H}o8uef<9rU_$*(jx?ur z0)%O|2hgBKyhQz+(d0VhlxBY+h`>~h3My1gmnm-@iy>Wfj05qK_+L-=1fOvSVqll7 ztu(@FMLJOq+YSN}YwjiqOB_gqQ#6Uk$Etm06Xt7T%$V)w6ef6cyY8$A;}(XmH&QeI z^e?{yO#?B&#Q+^UU}_x7?M9f#eGv^+OZH(y$1uZR8oG0!HP^`92&;z&7GX1E=MZ#~ zz&Q4lH0UV6v#{yStefNKrJE_5to_Z z=o=LjUt~bvHaW!O(K8a94wcd9_HLiWw7ll{ZLR1mTiq|UW=Ljc=L_75chQkc;}E>e z;4x{%tdP(1PZ3#Cn+)Zetw@jx`kA)T`@Fl2-Mxa(%eU`_O;cc{}o@Wh_y`~ z%YRgG@x^7P@$(uO`$>^@lG4NP011z1MSVKD&o~P2FsA=3T89K$wR*8TncZe?@q@PS z8|(23apV($7O-}ldZA4TM09t7ij{->JP|;(g@&KIf8a{%R^<8xw-jhSGpu`7KL^E0 zLNji5vKhd8Y2;21vK^RWo=htAmZavd0%e3tLgwh^a)L>WDkX=nR>Aaiul|y8E};_F zhVDfPd5JZc6b5%NCS;!|9W}B?oQfOJm$ByFw>DZPZU$vcM`rZUMq^p~FK2Z{uJD49 zFwdFsnHG)O?R`LksV0bKC(a5SsNnIM?Bz_i#lDmeg=(ph>5x8;N>_5Lzfto5 zpUrxq??4ZtPWJxgovkw6SDzB#u` z_4K0sh9nw2XMIn)OtF|lM<=IpRTtHshuE$~DAg?_IZrl5;%Jkvqqr=u>xUgQ8_mIp zF}K|dz`3q^&VaP7<{g4t5Cx&25x5IGq%Gp#i&S?+D`1!$@ehQ#_={PsCyp3=DX@@Y zA!L5Z2Y>cY&=Y&ba1mjF5kVXxz$ysT2H8-x~uqn^NXQiy6j zeFx`M_vIIO<1jb7b!#ko@P%r};dge6uLjE0J+Psr`%;Blh@w3AgE|A0u4iqU0W&O! zMoEpM!3P052pedX5S}dT)hT_%4>f4bJWZwiDk?I1bTAt|6yl%4cinT1fICPJk~ON- zA&U|#6-!{|c>-u5q&m7K7#kdSY`tpUC!JG?&{wyPp~03+oa?V$R+u5#%eAHY`q*3q z{nGxP4Vx%Nq5k9F45BZ7s0*@wD&}LdE7fpu!=rsB*e`{O=uxbb5qzm4l`2=aD|{r$ zipwsqc4)k0R1?hcUuRzyYs=T2={WGV&znkI*|^-GHn$Jy)GA6|1;iIOf0hWrEP-b6 z#G&(-VZ6fHgBiW}J0&n-e%*5g<>T7e=gEzuw*_&$LZvE6!yTtwU`1?%v&=Qng=m!~ zID5#EL&7N@9@{?Ba`WIwX?_;^md7rj+|cv|A|?BRq=Y(`v8C z?M$kwph%aFP8%rWf?Z@yy{)dfHxHCLYKxi;eX~Z*92-q=DHK~9#xm}M*NX)qIloYv z7r2LfKkUvd4gzR~ODh?0p)Su!CFdE_1ikZU{i=qUTqH>4-)VrVLt8P>d}$k40k%L_ z@PC*J@%YG#W3xYxx^y(WWu5Nln1MP8Dw>Pt7ML{Wl$@Q9VBzn|tm{-pdul^lQ75>D zyt~zGRXZp&Q|_Vfp6X#p&GPl&2|x8V)#DNa1Z9QMo!fPYTiM9@0|N z-8tMp4v)qBw$r;1MyE7RneYN{-l@-UgrZj40G9X0XJITuI(8Q%qO+wz;;-7 znO$%kSt;fUrOucQ_jX3YW;J|iBqzYjA}}HZUVZ%eeZlNR?|v@CB0|%SZzn5l2)a1&t$@VS|~npEDQxmk~3-Ifb?&APZGeFwng3?#JW!7Efh4oEd?gh z$4yu|8GFO3Yb=^^Bo^gTT5tg6oRzr~stp8y=3784m`dz62?zM^JB}s3<##QpuSfw*FS_uMfw87 zO};pg3H=-H+F-OgYR2&OOO(5b9V+e6hwjUA+Laqro`o<%8pr+IqjA4l*dQ%H-B+<6!swI6{*=7=J;6cX7EC$fw80kb%)O75P2PxA@?-&b0{9nCiWBu38kU+nA^AK?|`(ZW7LvwO8X)_iO#&D z>Atro&Z?rG7q1>R`iv(KUDnMj*qv%I92!T{?}lj5*(kf$`j~q-qfx<;Bw}STE>-I^ zIvrmWYFteD#oueO>7k_ScPYlwdQcOOWQC*qo*oQHuy&;;qneX))S!DhQEVA5jMyq; z`l2#^Gx=j2@)C!(@RorQG7*9}lVA4b=JYrt544L=|Bk{MlTI6AuK%bu0F&3`|K`2A znPT<|_f6G0YC_M@1$TkY$P_u5s*bf)uZWi$FrAZP{9o{fcbon#9`opcY>ZZJK~g zufDcUs+y{B$DE7j5Y2B=iucVu$Ah3_0HtF-#6wSScWp3Vv3^z4#*15om z$|CI=1xW$>i&f^SP*(9smvKOv>fV{1_V*KZX!dirQxX(05Ph?J2-6+`)m|i|g60FZ zFhgSGK4EaMp+^&Vw(-#csgw;9yJ)j8*b1=PP4sxFbL_eEZTsv9aYSWP2R2^xuW&0ht7qnCnUzct3rH|%BZv*= z*9Dmr%TbUcKWmZLsV1^D7^Sq}aAU@or3+~B%#xhHnF%m^+Fg*oX1g!2Z<$YQtotqO zEI#>yt;RDc;lk*quf#oipe=JH8*n3Vn$Y-E(zH}3c2nWwjZV+(3dfqZa+oOe`6`!) z)3%F7JGS^KG+HFZf76b#GNvb~ zBhdPge2=8qvf%XE4^r%KzYw&lw%&jremJs4wUfSQRElC30aTmNpUL7tLx;f5ahO>p6SpY)`gIi?F|tVUrMpSqd0>?M#&>2@Ra1Ejb@E;ni|n zMwQa$pa${pz!}==(_N;aBht(+C&|*8Hn7Ye3;(oNiT+&K%o)-+SG2hyv|4EZU6?-k zZd(Uq^Sf#^jXS_@jF{CNmh2ocT+j8~#neo1CV__Aar*h|*oFncRT1@IZM;@5D&`0< z*Z|Zc>PgJQL+K=)<=dPa+SWL7Gf0Yyeaa@FRQg15ZAZWi86O7ViQ|Fomy^UG`7n&x zL15+f9l3$IbwnYC(iH}-{$Ae#qeLTyj0b4wQv&7rfdeID-UZ3GRbJ%&9(%tKVU98h zB9)-A){I*B+vKgvVCYz{Q^VJ}*`YZ+eas>5(@Y3+R~5j1x^x}9MTKqcO6M?>02YB- zD~YR`YXAyro4nLIz$j>izU_|~c&GbfQ{k&C{l_se1Ao--`4;zz4PhLkm-5YIXRBY;DL}C`; z%<^$uY@6{ZErD5c|9(VN^31m*cN;njk%GR8Z;M`KRvqwP5WyH;H`kw zr1dNEh3UmP!o>hseI z>Ru=YE_fRwbs91WjfhOiR+1=M=n5a?5nJ-6HGGOdtUMpo-reC40G|o*H|3NB{9E6e z=;qjLX@#}~Dr~Pk|79SI7_ua%s9Ag`tlNNjZdML`WX*Re*?<6+S~ zc>OF&^lS^~NPY-Qkj>ranEWoK#dcP|M1*qNwJ!wd#Z5+Ln*RGbSJ79(t#d0?7E z8U*rl(4X#U3u@*B)|83SLt#0T2$B=6Jg}QOxJ!@R?PRC))+&O-uIilt#`UP}wBv zi>H(H(j~*k7k|*<<2<$~c0qETnZOmyGD7e=n4sGH1Q{~z+kdKrV@C1iV!vW-y?We4 z1R1OIywJj6694p;5}Un^($AdQU)QBd_1Xf6crDu&u%3_jLg>r!@DRN%{tF&kGy5|H z`@&5))0<3sUHFuLTZ)i5*#MWCeK{02B>(b$d~RwS zaS13}*QHoeeJia@sX7Il!wnMKR+K^Ic${SWDjW!6Q^Z{qZ__zJOv$95u(OZ3;Jd{^ zCkj;nY!gb4r(S9DA+aqb6#dN#&FPP9eewVpz|c_qY$ikCGbkcVaWC5etjud4 zMr@hacz_6~u-f^qV}i#uvywMsdNmWQQ{&j|ebT3;3WoA23!vsWB_&;7A?sk>V8TBI z5)kuy`2-B4G##ppMKnYnF=#UL-e1h3Mw9Cbni+5BBoT@sLUI>C8p-0VEtBFs9NDf& zDSEpqx!eB1%&O;}O(CTa5;{{|Z?^y4!@?Z|q@5-?-Ci?>smRXP$-w^a66XW+;8`Z4 zS4@OAM128HkrK$H?>pi^g|DyS z`h%nxru;gym78_>A3DI~o&iqWg#y?a7cfv!RyO#GXC>~@p`cc*EEa%pUsF}8?xLy8 ze^BSZks-_PRjc~@>mCCfxK+!kNmYFd>Jj6JqK{LgwpT`ZRN9_fOIE$opPVVw10Dm&g56?R~8Q1F$Z0PCAdjWm!J-6xy`pyOJnFbeloCHf7z z5VrCI?3Q%{?h?C~xttTn6+)!p@!m-AY}Y4uL&~UoXMGys(xWHW(OlQ7C<-JfR53*N zvt%}OgWzRFi$+xxRYFx5OTG zH8AX-F#(ErEO{XsP8EL0l{S)@)(4tRuxMW+Q)bc)pzYKEP5K;8APoKO{INiV8UBNO zxiGutq(TUv7mtQjkPQ++hp&qILBvSVt|?ooE!) zdG{g>p!sOECMEaH?fxAebgQtfy3)9wU3+N$w|uR0!1spXLv(l`ro%j-I&hQC#_qK7 zB-=Mc&{@P55}bu@{1^3`x#<@R{dh~HW!AXL#XQgAgvjIGCOSnl~ z{wEc(>P!Ee5I%}X(^SQ1e5c<`)gCK*uZrIksT2gX?C$?_Jx)b9j%68&7YuyYHB=!_ z*grR``(6a)>%mO;zbl8RJ_B+-gPkJbiUS>Oaqvfe`c1yhajKace`$F*FL^!HcfxBw zyz^7OS%rY|Q)sZMnKVFwYdlR)ZDNiJmxEvcm4QJmC!!yl2uuqAI&h5n5uTN5)v?J( zKlsyxMCK%`JG2hIyHjNY=VZBpz47lgAGN0Xh8Y|anHFXF0legX5;BY6-e5EZ``=!0 zsTJ%DEw78u38kGm5V42m zGp*!?DM8$BC1%k6NxRn}M)O$J*S@7)J4TM3sN%y`uCi);$wtWQ&zP0D+-Q^FF)eLx zibIHsBQB|7a~S1i?x2q|PHli*-xgpgY}7-^40owa{!VP<8tIf$Auw~OS&*816I3&E zAgD4-oB>7-d4>4x-xVVcq4@M|1Ex%a#g3C*gQz|Dkd*!@8bTzW#wToWjrCWzWfa#Y zvW1+8EU}*y`yYR=#xPrCOyn`7)qSlwZ%L94q5JLcwQUH@4W{uL()yZl}R8O)2%R42hb1c9s=41xlbD7=1#flbZ%$%RgE86A127~& z`=FU-9h4Bb41y37c)*BTx&sK7o*A_?JRbd~ry9ZIOK7@O!Q-|`!7)eekg)NtF>#$@u6m5Nt$0a!2|3tcA=(GvKQ4Xra)PPcSgB3co}~6}3)MXpFz` zZ}s93=P02I!bve4GahVlE5pM5<-9n?6Aet7gnp;p>66sk*8Im9RVXP&@x{-IrIG2( zgx**VdWI97#~tfVcSNk}(WRWF=h*yR>pXIT_`sx7KRefrmVGknOh^`uA+Ha#+bfjK zbcV=ygtNZzK8*fhq#V^-mp9!^c0JAFMY=N{&|=UHeQMJ_`%t&Yn#=QBgVcCQY;&UH zeHopPgZYdmbYx&rzOV?!W7RedqPz{G8q-ifhQg25*7ptpDC!-tUdCgI3}@gVE^1L* z^4nOqZ7Id&p-+q*3kePFTAYLpTxY|&uOzcDLSF;p>r)y(#ixfrSd}3~Odx`q|Jd>P zYWJ?2_?BY2$h@pRX*}Z9Ajb%lv;Cl<>k+M}UA-J}cV^VzrOh$>kmAwTihVAb59f4! z!thDynbqz#mUsk>M%%lrA33UODN@;9MND<3{J9{3Yzk!qU)cV8 zG~7=R%eMr3IdDf1AJd!2BQijLCYKF5Mm;$;v$b_+5SjNW2vC(>_0ej6xQ7lC$@(Uh zi@oevMKumfo=A7VoARBKgt*nNp|82^9L|W`TfUDxy90iTc|R$zAY!f-=)J~#FafPE zcGyPMInN4~5BNVQyfB8X#V$@GJkOR5ujf1se*kyXIV}bHOr(U%=&)oBD^B9&Uh?>9 zUWq_lUGXT2>{0Ge2Y7iNkV4`d?KRf_2G!0Yx?lNbUsjXrj_l4Bh0Bo>GE7tKhuXVd zSsI?Jwe`ta(kkUA81y0LwLCMQ7Qvaq%vtz~-3!m}`&u~gX9#BbO4d@uNwB72Pe~Y3 zk=L8w*#h!4#bHXeY3?OinMqjWlxt2T1czOZ^sYjxAkaSQP^vpZRURlv`Ha2mkj}@!yjPTxo`(0vMT^W{z;L;7HF*JYHr{XUoJGYL2@YfdeY)Z$YYqr z?g#%l^!b*@w32kL9Tqm>JQmDk5&x-zP*Pe0L092j>=2$EBC(0j#R#+&k`1&U;qoH0 z8vJ7%bOy0m8xXAw(^8{I6h|r}W7ENTn1PDTdOuMBq#BuvNxx+Y#`Fd(>u+9uU?+=T z2i`~;Gigj2$RTJ-PBSY4Xr#Kxq-A2B>L@=9mJk== znU3bgS6@q^n~j@FBc6Mryjl(u6(lhA3{zhsaoiQhl@$c14!aaO5vM{V2wwY|+`C?B zXmx`1cOmKeZzTO#oApAU6{bUvJ`Z50)H;>q4_dYkIg&(qkk^+zDL}bgp_0+Ovg=ZT zWppXJHvsJpGt8O!9c;9SFaod+ugv!;1=t#W)B+T>;=1Y=jnoz7dU3q3ynIQ)yvT|& zk+7G&Ce~@ccZb2U9kH8^0_Cy+Lj7mOHxn()Puh$^dSCnVug`e*Af!k5mbHoD2xQjt4?~ec9M17Kyn5)<7TQIn3GKMADBCgO zZP~@oXAT9yuTpDDmTpgA2h(w49vw(8N(a6rGBrzyjZQD2b5$)=0oLrTX0A^u0I%Ya zJD1Q|+ga1RZMvyyL<<;T^jQmj(|4-AFUqHp8rw>KHIv6!sAI4rtpqv98qck-)v~5l zI>KeXO^{Wb8OPZUc72uxA{N|~3<=!_0>AchN$D5i_E`KyHw>UH88HetMtG8kES|hf z{l$pgAdG`&-kE%8mZ7;TcF~2oc&~{Id@AXa^E?cs5yZBaZuIt$)jK#MjQ~uf_svuM z!>twj5$q;e^Za1WQL~lN=d-|p>;cYi8&W8+l>wXkIQb8JL6ax9LvdIuP0bU{!gz+# zXTAiX>0Gr;h&nrjs(;~l6gg{^&mF+8Ui(Y)UbO53Qa)m6J@8gfy?@R1DI~}^nh_)? z&^VrA+A^)ii3`*@a>@T%2V9wJ zS6tmB<0n7mj<{Z=2rIvHxyQBBifUMrmiC!*OeXe*Jn9qP2RC!}t?nezh>|Ob8d@1t z@`RYHzBRMHIVvjY(4?{Yo!o$D?By}!ZOa1fQIw;2wD&&YAVjti%v~%F;~B;GAbZhA z61$OGDMQW;Y)A-5p03##B7O~fDCij6E;jO!Erh!p743QH*$n@5;r76HYkogZTmV*&F;xeXt`<5Ti9IdI-K?#Ygn(2 zQ_W5taF+VoFLC->z83tT1-#~;5wi*T=X3(;IO%h5<8)2k?P61@%@TNm%$Jl0H>`zDZcu)E24@?Fvq9XG9- z0lbM<8lxXtF_W4#=3Hx0C zd$Un2mc`;SW62+iReF=XZX%Zd0H`DDZXA|I`D1>M(5C{Y=Q^GN^hq>Hbys(}$&bJ| zoPQ?evALAjf9$dL?&P5B(D-3UTOTs7%o9| z7A8TKX7=*6RTiXBGnsAsFZR_Fik%ukJgJ3AVL%^R{$U0BLf@o3NAS47AQ%2hK7-xj zqSE$Y4giSw(ZivfHGoqZ_x>ccTSJF=-uciVauW))mRGL~?{a4A-5sZG za}N`zbCm1gCsq8Eg}e9@=o+kxp_SW45cbRpK+SYjS2p*+)aE;P_j7u);Vh4S>);Gs9Iq_~l{LmrEuR-1*qaO>gh<#@Ige@X#zs%(|hO zX@V_6GIyDSCuj_~{V2tuC&ooj*v_X5mS6xkPnWC%u4Aa4G8{fIDZ%;_OR0Z%tDN_} zal06d{s&5nkMb8n#Y=QnuO+mm88h&WB0x~( z>n5@!^LK%sX`86k8yQXb6Ulffs7fiJMyz}IqI=7K&iT?Er8WU`I24-*d|1*g;JR|^ zQR|HZ8D7AyVs)`=`kk!7ck?vMp7?FuWYkQY%92KVb}d1Jb1Tu*fY#B#uFIg9ay|4A zI#F)6Cy6=*hN%gk;QuU3<6Vkp(kakzUJH7HHPw4*_>8prJ;-F(vmwug^aG%BF7t5D zc2kLGBlhE(appLpt|=-l85RgTLzEI9KX0?_t23D9om$y`|9GJ0ZuHV?Bd`JSmd2X& zE7_ly18z<`v*Vw~YLa_w*X+6u`HD+$W=;=$-o7K)Kxn0grmcacNRTIGcD+k0QPDBN zk&V0UL!X%cy4d=<2aLvL_muICZZA{%u?~Yb4wB^e+zPPD)zqObycCGm`K~@NeBJXX zOne;f8%G9k&Nx*fijr-#i#4lMRS(b~hq!MUQC>E%k3ZaWD9GK|wuCv@G z^8 z5u{MMU9rFY$8`w0a%Spt8Qr4&KW${Vxof2ia1Yhqr8hzzNO(!u+JBOt^q;_c91QH! z60Tc)9drd0ei+zvha@yu8J*+GCQOgSa;q*$y}E({$e4YhQXSA-sIw>A@Cj#m4V?MP z5t3WP-y>>!M6s@3nnK^xu=52P{r80!jxwx*!=!vYhACptDTcRc_+JjW!V8+>6{q80F&mYY z?-rH@4ltr!HD4X&jmnYrHhtBg>8_&2UJXS|T9F$$oHBBi*2A6J?NmpN8H1V4?pd>3#D=(9Q&79L2RZ zu1k>F*e7Iyq9rYPDy4cX<3kNKXyRh3o{JD-_=op3Q9!~MWZnz04c7k9r=U2{J;i_S z_^}Eu-o)7vSQfStkf^Uud}!*IUtjzHhfTzNpFR-pT8l!saGaQSKqF#LZcPD|aJ+MR z6rM(_x?xq@HK+B;WYdYBlvNj|mI;`Nei%c93TNzMYCe4m;!$N6TSzbh9kPyh{8>RV z34B;OWjIEU=Xrp@zNZdO^0AI8kF6+!yS#cc$2-oULYX$TWv5^dt$D_9ZaSd>9heCR z0rK{+6?3OPi6szKEJx24@Hn)%k>ceXf8!&9F&jg#CP~9K{TPBE4K(`vLhMe7s$|l< zqe)BHNbk10H{CQOi%bG@OHq+pSr~I%4wvAheTQMX8+6sD?0H#1!}{q(yH#U0{Axq*v~{#Z_ToXcgFD+lkF}e{%d#?5IB)*9<;2vXqr{tjFRhu0rTg? z>HJEt7K@IxJ65wJ=+RV;6fibdu6oZjYw=JD){T8+BbOkv{q=J`S$?w@s09@RP6y|O zm|@kj;ZEXszZ5E|TuMBn&tqYYQBoFzVgvrT)gZX%c9x;Nl~KkQ_8%1#g%D+$%-CSgJJ(1 zHX~u8Vj5Rk@b5nQ`qHnpbfGo^x8ueV6>iEFdBZfHC2nKbHju0%!!&qM?W7q`bY;9aVApdRJoBiDL4q>uo{2>uIsjeC7v=-{)20a>|Ffg9L`^v6#=X=auirvx!!4NMoC7?V*^lL;xCQ>`CMOW{ z{wSLs+pGfF1`JBZ1Y7(|cu4QS6XBAB*6P+tm`f2%-WQdx zdVe@2!(WMxm~_4@@DIJ@!*{BYNZj9{Lx*B$A%7);0({+li)DpwWom}qq*U&O(jJDw zp?I^o`owV($LCbqeYcAkhD|_z-TWJD#d9rR8}K%PZKd+>;`I zhMw$+GG1Ls#@_$|D`*!gNPes)G?zPlEgjH2PV#x*`w{dzl1Lj)v#mx|4PvwyI{+&0 zLOvnY$SL8n?0w5cf;XhIpnG7SBnO3$N2P)&*K6egosaO9W_$x!y>mW7ik>Kne_SIx$JUYtvWz0f;c6u?Reh!T zZ|M|TEvEf+V}D~c8IAt6E@@fx*L=VFrXtg;Vb<|{78w=yf-ktq1>rev<*~?P;6x3i zw)+>JvgPpfLiNBB4et!wh`@5*v5tz=A6=AJ?BG)`2e%65^4&?D9Rzu!P+wC$pzbI<|Lb=EcUG&h~&x>pF*g~3n z85?C3-1e>Tmy>Wd^x`CWFxeu0?eVCqn^+E7x!EFL9u95@48sdfZ70Cux*?#@`9M%U zMkk@-qXkP3{CZ3qh*U>MfIm+Gu~gHYi-?bEfaU>Z3xw1X00L9F)J_Gvt+VK=gGTyt z;T1apP=qwH_??tpb145M!>;8vx2bki#U8)oc^9&&bP-haFq|m_rIxgiW_sjnEPJyC z!^N}JDdT}u<~+Vd17YA}|E^qpL=h#|?yyD_Nr0u>QC!m~07ee>c)-jBvHlm4 zy9X^hNkMZSeO)BrrekUUGlWG*q`rwu&@c!7fur8%JH zq*=R?qE1b_j762PFHR7B4kNeC=SuRu6x{ps)(>881*VDOiXt!oUM%`#pHYfp(cuME z`}!{a+3?2kiAneIVAee}MKWUW+oSq+BgaEusoffw_XjQOr7LRnYL?3Ycf0nMON{W{ z#;CbW+Gf&b=;2@F{k@TIt5t{T$IydG@p?e_VfoHv$Zv>aPzLFzIT8CDXDB}aJ{WJp zF)^YmIk(>Ake0Jsff?F!q#m(VyT_BxnOw{!%Tz8UY8)+M!EgEuWfkTT8*>4wUGCRp zr$z=r`i~Z)NCJ@Gzm7lde_7B^eu12f_NE-(F%`aTNKDl&B38Ti zE#5~op@yB*BSNbuZie`^mB$C^JWIoguV}AodMF1Uk^lnZkIV>jFm{CpeuIcAZE`DF z6q+MC)t-bU0ih^Fy8_jUX^RMqJ6!)&h4V85v&XnNRw10Bb z;LTmOG(21WZw~G%*UM7aU0*<{-woqC57=u_T{P>w&VQ!uG2-omG#aNZK_ zM4!ufp4L;bfC&iZ$8-3#&Ke0>%KLm5f=|&?VYF{Ed@UThAenWwHin#^lGH_~TJm2% z#34zD6+Q2*Ry%}=;Q2|hG(C?rn7Mrw%F)6uZf&(PpNbi zp)AUBgW+*xYK_opv#jdt5`(q}{9jdkwsiT9>25h2y;hQ;1a+IN{M>wViqjj`8~m;7 zZ0A|M(7~}NrIUPRu}yxGwJI4nUmfUpcBh?E#wDNWegzm7e+`Y7>k|^vJXQjfP@H9J%Om!9^P<5F_Ad5|fo86PM!b=jqn-GB%n~vD6y-PK z=3)RjjGmVOKmQ;5UZ559-DS57YwzHpHyxkFCH|dwVTF9-S*$;)V&8~EbNy{d2@Eeb z12CyVlKCNsprwneF>_%iX+3DBGiTUK$`WZ+S4#9uEMsFgQ9YqV&3#||$Y~-pDK#7r zKq0QvCh*CVD?_G@#Y!iCuvNqQ_2{~5xF-nkZbkUy!3emFqc9a>N(I6ttyb)DP5bP~ z^K%Vhv>wc#I7F3QylYs{HUKn$jA{4(UKq8$O+y)wNq=!8fWO$6|6C}Ab&%#sJ4!vV(BFz%lCII5MIiD>1 z^ZrkMo)vQAGj~J8lM4yR5B9;{hooaR%hfoFDVuepPy)4~E%=xiQWYHMH3j<{o-1Qy zKOi6I;s^h(3l((aM3vamH@Z+*yRQ{Sgwheao7|AubUY3{8-?#y3mnT~Z78SPqV>oY zJ}y6-{!R-zn<SdQr=h(XL!k`Z2wwwY?&}3{9QNzTPS_h0WdSC|P|+ z9LsNKk6s08@Jtq3fZ)pF5vZ-IJa}vhyx_y6iLdY+<6eKRFo2pWB-grk>i1vpIz-v^ zGy2bn&Ka!3m@130)=Z-%$&ANMf$@m@`%x1p*+N0XN0Gf{k5TPaF$%5@Mqhi8+wtk8 zVKG?CBIo<~nU&f!my&*L_rOgvt%XX=uK0wXUVzC0i?fi8Rsl>zy5K7QM5_XCcWCLI~NF#d#I~y zb`M64&So^76>yq!#bdw^01`)Q3YFOSe+rq*v%ew|t#6YuL|1RCh8+=l)8!=bN~8e| z6efOEN6{0+zG|B9lMOj5u{jHS&jjB1iJf1b{W_bw_F_RM-M5QFN?g^GA$2x&4?xc4 zukLL&DUfc5W(tX%x>)qq2JV@QT(04P#?Xj^OpG389o?rWyB*g}4&Zo1+;Kc~z)_8@ zKzkunlxbI`exvlMO&^x<*#312!QrL^X{*0sGB?gi_Y$lT#C9$kiKH=TSUD{joOh*Y5fe|z%f?)27~LP6y8K@ zA;&sPmXzY$m+1ko461vp#34E`>$$J?rXY*ULKeeu=`=N0UM`f& zM&-p7gN$@Q*jh!VSQ(T{{99}=UgX^HR}Y~9${G$BIH>Dm_;9N?&m7%4p|oa-f1Y!S z=IDl4wB7XrJ&6iA(NcX`foDPr81PpwHgBYnY(tGi3;Eo64%_{2eXEhuF@`aH!-&K* zW5yFKqfcWjj*va3AJij*AAWis!~FN;@*?7TU~PoISG5}KVRZ=O9xkY>4u-R5(Al1? zQSrZS<}V-*vw83$-#`L64;qO~NxY(UHs#!@4L(XoOrWa68Z;YpIx|c;AIR5)NKvup z_u2&HPs@xUXFVk9&A7UV{T`-TW4tRSoHrli*n4$eJan9(IQLBwU0S{9$~NJa zIBzyoH$C6?ViMY^y*LA%PZ+*MwWdM?-g2QD*Z++>2QyHkl=MxVtpxXYX?k^7jFU zNOns~jfAm`M#X(CxVZLF30CmSWf^EQq1g{nK~MyN=WGK4n<-_9v`1yuFu*dR^m*tT z)Cy+kd`<17m%3^;*b!$T;bfeMBmevvBq%4Q8_O;+_fkY+w~02(tF=rMTmg#Y-{5;z zqSNL?Yb=^~APn>}nn#QN=z4{qCCOLC=n7kM0oJpqobOo?B%UaU=D5py|=<-#la=WNf>Xk&Z z<3vuPGaIMP-g9~HyVR=0iCFBUaSIWO)rk>cyzNHuJ59@x>m*3dfHbemnC44famVVvq{8+&i zJ}~QoyqvejRi8v3=2MWGMc=%a-pl zv@}M$DFzXr$TQGDF{O;Vw(JpO*}Rm?sYp-tPlQCusT#G@*!7?SDy$-j2Eb(2<~{6% z4i51nG-PVFj1rE7Hy;wi(C-pD=(wOO?ETmG>C?=|{rKdI!?|t46AR`rl+h8`soa@M zP#A-Qb{m}5DkMG!hxGMuuiaBPywTBuL{i_N_0zJ%{`9ejN9mS=FG*lEl}JePxqUN} zC6{25Xdy0(K9q3@i@syJVs0`N!M2%uUUt+jh!O0g;lVQ~vwDW$gotVdn)MYl>O&be zp5Nt>S;Jn9_|SD7!BAQdc2in}Dg|nCHXDBm4Bfo{HGvm>HaP7HrPlstE;5%V>XWT*wo_1}8MlK?1fkdp{5X7B^Nj-782m{R=mGnz4-B);Ry{o>PT`Nn>cd}sS&fGrU{&q^vR)1cX zIp2R6=%uGf-`4ayiIM%uQ_eQbQHXEDD6CZ)R$8BgZXp0nI&BOK^w}jHz>iYH%3jPf^RO7x)zxUF_BOA5fu|h-=9j}puq>45u4OD!)oamBEL3>Ctq~0+< z)W|_W!H3IE96HgH$sou`Iy?-6Qj=r>6(I1x^cIWQKVi!x0ZKl|#v4?KqOAd&K`K;o zfg$~vF~GfDlPLi0A2Q_9h`xj7hXCUkyYDb{rufm**|!#SI{6Oq%M^Ci7~e$j<%Kve5BpgsmAgzaF$XrM zSjg`^e^b%m8#h{oM;o|-#8*n*jLW{9&}+1pm{bG%T5Y6 z;@{b@WgUWlzo}R~*kWccICZLX zH3ol6sci&VVirfLLk{dd$IrFZO@@P~W#xga-m0q?2@@t*bC6<~h?99rO{ReIff4%g zk!A^wU!|oEv&+w`;xxto8}i2*GLEa=A}WF4HzpPUx>w3Gx>@ZWbdg_?sz zN>KZ>#r2A}iQ$|uOOxoMwn@(K2{InHw$IHG-XnZ>&?oEX<{!K`_z3jY|t$`p+l zHLT;61HHmT@{_T*&aEd{Ru#)lIC_xRCn4njs_J+g@G@E)E@Gw+R>d4pF*kbvvisou zN6!V~siktq_XpHc(y01Ek3NJb2&D&;^}KShtZ<>cc3LU zAaQB@=(0|Oft3gEgknd}_v|&qkH3}B-2PYT7iwAL!^VR$+aOk|H^+2d{Nbm7{KbK7 z59!JrF69ON`L*+@cIH_hMZAMt$e>zc_69c%?=&+Abm1T4>rOYcVW-RV0%^JriT`z6 z5zd--{cc%qV!IRj7V1eO>DVrsPRgx?p>QuYA(0M|Fx(mh`0k?FVsVB6S$N|Aq^HTz zn_I^3_^rRbT$JI3{Pg~6wsDfBxlaDJ67#PpJdXye!2=4X;Y%vFHaG{G)>|=7HDj@Tps94N&_pdqcnKo zw7D|{35+d?7q|B2^Qgru_9wfZtdC)b80>yo+?R!E8L3*HvG6Iqn<_RN-;)B7w#l|P zWfnHQi9ad(Ie>p+tUq9{RQzNIN;KJCB~cQs`?vp=d@$%`H;f^MgA@}mJN!0m8`8!k ztbC~yMga>*J*cL@IIoq>j45@4+V0K`i`LOrQ@`4sxx_Q6u0uWHUG?Hc+fh%&cu9AY zE@b91uH)?%{oiZGIaqB;c=%FQ=<;WsLf{dM0juj$IdLhdi3nn~8c_ zJcY5Obk{~y{U)iVx6m(97a{0-ruPM^`>u)gXa4>o|Kc}*$C6E@!rj40izUFxj>6huYME{gkMM18Fr?ut~1#Y*7` z4&n!2y=m3m@K)YXfVY^0eU3flM=Ov78(^feXEO8h!}<}fnnbC^lmv0iZCZ)apMv`L7QzjwFy`0qnCM2dkqGRdhkIfL(6dG9bz9N|D$Y@eADy~Q_T?ooQlyR=2`3v$Miyu`CdRi5HTg*Aq=`#wet$1lZRiJ4e%HI*=zr|NRq1$zL5bBQ zK&gRK0^#z53fiai^SxAId4>j~q3{zC*%y(yk>U3@s$o$YN$sj8k&1B}O*_Xv$3!Sv zB!bPzh1=dXNEv@?O0##zDmGTTj2YjH44wDq%bQvdQ(`999Xn$q^v@ZTkkZ!lG4*zm zv)I(!qA1llH6tTzqZq$`$#~F^WvOlZKTdXlYFsF6!R3_O-PY{6z4=0de*$!Z>3R-& zl1IS~sENTuKumR0`7=&k%_|f~< zKk%_2f80?vp^1qcb4M;)wSR2$pk`E^5rloxw~LB&2BDi;mlF>g5a7%7d>rDjjn&ti z-nc!D9+aJB`T^FL`N5Q4iB}}i!CN)V8eDH5IS{Fb4#l(3 z@Xu7?y(tFVSFi~A1z7w?K4Y+q6-PmF)-CheDY5aTTgFCIqM_83GB7y71z6S}2+Ao# zde%5U1F0l<>a0l2spp+HzF6V1M^%D}SAZ?+Vb`p3>}ws}vo+tZ=~Xjhi=huQ0*0SWbSmlIi_cgfm&g}rYC%1ECsj)-0Be{ut``(Y3MuV z6?!{0tVw>nEMB^!lBsb8$^b5AQ+dqgb9ddS!cVY^I@KR3Tvi4Xn^cSf#pYBi$WW=F zT0ZIk=`3{u(r)2x5tQ=OmjaC|4Th}3pXzr~Z(!dS3AZgmqYw5gX{e)9u~nvC1cz8B z^t~#Esp2wb7*^jr3MUikOcP>68u)};#RV@00t`slhJ!{|qfV(#?5n$G(hdUk%rlWp zXjjUq#(z8zdG{A^Rlq48%-XI(=bWbfEBdinolJD(>KBP-yQ*7K+#KuFC;0<0qpKAp z6%M@ct;JNJajWv;`d>l0XwUFJ{eIp(5(Z!OE+qa6b&e;AEpB>5$>cKC}b=$qi5oiQ=Nq(4Vo)T zmKxRuKky^Dfo!7v{vHe2p4^>4Vun!3nM%bLt|6YUB8G)jtZ}s^*8m!)*$BZm(Eyo* zJmk3yOa2`Is8L^lRT7?{;OOmc-6!IaC&fJR zwK6HYftE1tvgS8S8TLAW$rMry-}n&rIDf>B6CR4!b zQzYBDb_!Fq9q}eACYi&s5kyYoa}QTlgWt4 zP;s)jL^N|(P!?yUGPfQ9Seu?8RM0+$AI!xMIm7DZuvWh~rE~lCkqca2jSQ4I87$|~ zCRD&NkAYh_fFW0C+J{<1y!(Bc=`qxXvd5$3)J1Mtu_32!#6Gd?z`myB=X1u;`kOF; z!llP|6`dXfb069tPi<>x%|7Mn(DVMa+Ub;j{n!KUulg~~iEr?T>TZJ1Y(hnLlc6DU z#CL|!CYy~#>=rT1kaU|Cr=4u_I~qfI%9*#nNyuFg{;66fI_0rH#Z)KWaxfI5aEi!i z%>(IqXaqE1q`rY)xmW%kkAk~;8xp2&hZ}jWy!94QS@a?z8q>(djnRApd9i*5qD7nj z3^yP#8wTD_=mVUur2{kMIG-je4(XihIj2+hht=XebSU(6I{Pu~MrkQR6H- z((2nVkPn~_?BAb;CsU;J$Yiv}mCq=jyfFy=&Fg(^wP>+?FeTj-@vJQBZ2JNhW7SMM zpyYgy;MCc^HAKY3yqxlDqX$=PIRaGO+#VL~x5i}MShU+xImLjb{h#oXch7i4TZVC*cOdJh#4S0D zPIB05NMWtIHDFTr4kTTp4 z<0ocy?Md$F@KCrHzwNqeZ>^~xe_7nz`d6D&vs|HkSIe!x8x~dgdOy!gzE*TAlU0WkUHwO8SOhup!e+o6ga@Dw!pbPI_sjLV z)Pw?mjb~91tyaVm+)i%1-Q5f9LXwuK?xWPLHhF!?da4O~PMrNq2&Q8d8RYc^>mbI= zL1P4dgR}Abn8jaf?-FB^`ntP54$Cr7>}2Tp zy3JdmG1?iaJ}%*`l1nS-iZlVU9rxYzQElH6a#$6kwv9zyS~&v|%F!`@CACa0HEbU>8g; z5a>ojTmVVa%EPVtJL}TR3cGr{S7M;giPM>l{88A(+u*lU6QlvSE?iS@+@K!UiI~kg zOpMA*M>fR?+8k3l^5YSzfT@wJUcpW{^cPd4=ii>AhUQ|Q{e9Wdw$^qI=1(m+PGwyq zwIc~ab_a+3R;Gv!YdgW~N0&-5^dmmRPiixDvTI?4@7iqml3zudC=lY`@)le zzBkd+I-OYWW0h8lv2roza|R?zNP>Z-U4#bpWDWY8fHdqxQ3?H!K!pSpT6jlfNUqwO zB#*FVU$Ps$(B~DEA`>9S%r>6444ut@e|U5fR|KQ`7qqyf@F1+q1$@x#r`ybf5fC+T zq*&UDxX}yLeZbMM=fwp;rK1@jJ58kk;n_LN>XENSjze0d9vm0IShE{+8y>Myvkb@P z%r1JEhkqGmm|g$)%^pfdy+v#xW&!zE1}tKrL8qiH9#+oFuSPRNmGjI*mvttGH5rm3eU6_g-1-3$Xjxn0 zI`nm$v-r^PFt)*-f+;LyFKNTC;_32^uj^(Vk5*M&1buJDE$-QWD)0wDFUwKcsMxQu z`6!5NL^;aG3sEN5ylPpzpN|y<{pu|oXrIv9>A=P*qDLW-QNtEo#xzmdxJ1gX6>mq3 zL~}B`Ep~Zzuxx8^GLm2}zI^-?c?{jJpf`Uf{?_)w^{j)g-BwOLVI*Iic2|8K^8M#=)cteQv*V-en zD;h?5;j#mR{zytw7R=ztQ8zrH6U*bxb7m$1U!ebsx}}$sVbr+hveQbwwWrU(%3aXm zRT)qA0p($wX`GYoq_sP>4ozEB4_?~5OlYG&xq3&m?av`$f11{{tGcbfwUi*P{ItTw zY~Kw9=js6XmZPuH`S)vpz=np}9kIR6z21U=YOl}&V}d>ahx($?w-q|Qh; z+Tc{I$?|a>$Gw1l#?BX$#Zqu#z>} zDJEn8usDe3sN%%hIbOEv4E$%94Qt%$H!2KWIcPJ5$|OS(y#gxuHmp>?X*&ZE+)25$ zb$#c6DM$6@AUi7nQq0@ehf@^s71DbPHIul7y~BOE4>2Ensu_R$a;5>9&FFKfb6pR> z3Xz<1m4&4FBw>PE54XIp+(3tm+6_h5c>1w;*!!xP#wV%957da^GPQoN=Nkz9qrt1R zgr`Ge;nRJIP1++(NO1Vbm;6;5DS|k8X-!@<*}`we*&HYDRrn|BJv9!n85LB;bF+{B zk9e0Qp}p+MDPsde9*#Vc+KiH&w{5vY#H%=)Ed!s|j({u585)K-Lj+KMMn~CvQ2`K8 zp_;za|AET)4%bkOTohut668bUS ztBsUSD>U&MJ1GNNMOAV9UaQvD%^8Dva{zwEbBd_Pn4o|=9hz68R%(fpX#xn$X5%N^ zl1N0FLoGgyG=1Mv^4X=;=KEC;v4>GtZZ8oJOWsZhRE5k)3M7PTuK-vcyZ*O{+J8+Z zTe-*s>LPz%jbCemQX$^|j|8CCVhExDj1e7%!LbEFCxM@}<@YOoZrCtY5bKf{m@4~hS~lQ{HXf4sCR zIhW7kOccV+mPBS zHR&m##>XowJHItQ=M{*Ppq3{jA&Tot-*ry@VDRBqXvuTyZTzfh9BoSJSSKW!`e=(wITn|m#!-jmHAtw9nkiYT?SoxV289ntvnBv;Gff3u{f;k% z!9`}t^K~W9Ixyc$|HRMEuNjAl#m{0Nv~-()p=qMSBhLAT<}cY3hI*Uuz6YXU?DS-h z53FWhsk{Ssm=?mM(`G<~`8UdNSTFVI_r3O zEX6`d2X3_95plWtm?dDdoT}N|&u3@d%0Q!lF`oKC98DJv0fPvgu~3HkbV5eZ+|>rS zqcJj(Dp=zmkgJ4j$>Y>F70A9Z1GYu`h(FWkBT^H2zx&3b81u2R1=i23uRs_g;NzO0Z1FN2jE3sL+6OHZ5j|inljM8?)_KUtvet6&R4)e3~ z>7V_)1AR!{;_=NQILs2M*4rZSu;%A!7|426@8rc1zSJj<a=`UO?pfrp&MW)rk3(v{fkdNl#zQr# zVO=9=^h}ognZN*BF{Gd1`c9iFR#IWr7^#{<`{|jHK$pI_v3Z@+S;-Q} z+R~QVMsSK06+h298y=>>Q6<{)BS55iPw5RYHIBLL)sAT2 z;tBqC(l2SNIiqmM_3SJq3UZt0)1v-bDRTq;E)Za%h{c~$a;bJaj<(sEq@L7VL!ojY zYxpu&jS^TlXGk4(L2c+I$aP0&*&4B2jc9-Fh%dl7omcUElW99o7pKG>b@C(REuR_o zqSyCgr@2M5{RFiQsE3G!YoW85kuGr}kFpY_QOYp4p^@i$I&95`^oImd(Eznr39RU` zbB4FS!(b6B(@Yh&gbTF9s_$6UDK&B3%PO4er*Odc6)UDp#CO_$9lVVvMu`Na7e*B> zBDhcR`6ma?zd%3*V*a3>2=<(~j!+zjx<<8LhH!6R7j*9t^m(uEN=^HAF%^Ln?Zu$X zrU-hrXS%ux)uG#lm;K7NQG^hvfST$hVZmwgTTyS0*%C@~ z7?&F|g!#;{ocacN=pi0zk_DI#N^+w2QR0qshhNLtWwXp{kc{MVu{wR<9<9We$N>W^6g+97tikS>v^d90w_!?X#}oY zN)|u69GeE)GSji4Df$=9mAcjr61b;ih}nWfQSRVSd2hf~=*^CLyT2MTBS%?R%JFs> z)1V1bt4M!f9h5|`ldUE6)zjW;Mv{$Nn$EV`0!R=7S=NSqmZM^*vcm=8T8?_LC;^Yl z`bclQ&p(OjY>p9j{TG_lS5F#@-}l7qp&%5G|4hODg9S&I50OM>cejr;?tYoGY-%{l zbCup+oRIQR6H%|3n+{lH0=|+%{rU= zM|`;;)nXQ3t{}PKDU7+J+a(4D$TCQ3k;Ip z2Pd2*S;G@oeWz%D8`a9%BKtAGE${2OAH=T}Dbp@*r`|RDKtCmFl;W*Ph7j5E2{CgT z)k);x$1c?K!_)~W%^ybH8Wx;FU{74E^%iX|p2#A;vb_}ZB4LJdgbc@G_G^|;o)Tkb z0RKM#z|>;PJ)@>XIcV$#J4%X3XTr5K3Do`GY~eI{1g9Z=ilB2=^Od}0H@T@BDd@XyXc3k%7jm$bb z1QZl4RKsXg!L2B8L@?fn?X^O#_av%u$d-Zci(XNyB-aGtVvAXR3yZ}Cu%Q*;CtWr- zlZnsrLxTfc==du8F1mul+XRvdLmGnf%||aj8W8B%S1?wN8B64HE&g&zs#7kHY;YDv zO$@K1)80cDiunHNIYz_7)D)qx57;Pd2ckgo2zQj z@;N5+z?o#XaAYR8+%qfrTm5ZUu8713eHfsjuMw?ESmGq1SjC>zOPrq|R~rsn*QAK3 zm0ccn0l7{&p(Wc2RN#HQNWS@0G1&ul#Z?kh26BRCWL6V%8$=Gv+=zP+I!aF0obFx7 zr{@|-uiE1lmW7Iwy9+bwu5X=$n9f`GESQhu5aTK1BS~NFf2GaRQJH|jq#c&=I~Y-P2PQ%cSRPOsL1J=%AkIWz=gI8RLb#JWpmV`u z%~@PI7PTg=YayqtPp~yYkoZYU?mp+xKF&!KbpM9NSaQ$hZXQG_6Xu)vPc3^r`@TYQ zHSaB-B24UazvO2T*sczxeS6pgD{wNiL?B!;i=*k^9+Uzt<+$aDEE3%+uL_$YXfQ_L?krt=oy%b@5(&3L|Am%`-9&Wxn_>;Sb)}V3@wG42V}yb- zY$5cGAJ(+E^igQy##ps4q*!p3doJGP^TV%0m<${ezqbbD;#f$R~R7$#DF9%oQ-J zNvUsJ2%82x3#t@zy3!9%Yd)8TtF7-CW|4JWXP~%abvyK)T~x+h(X4AbmNH(lR_bDX z88cnd0`TvA|Jrqs=?Mtb=x@=VN;MXYh6xZ&?h?BUM{n%2VGeQ$Qrm~Wz3o0C01iFKC)$yk8KaN|_W?{qn&Xj&ice^S+CZap}AIjr*WOT%o^e9`#moVfC zHSDuZGQ16e@N}5Bw3asj2+5z%2TFI>kwk3q=^489P`-P#7%d$FUI#oBKu>B7^$lWUQki1 zO;l|+2iiuG!mOoY8sC_%m-ZNlv{9WRqyO4Fqs9%`2(?T;o)@6i;wS`NsxcyrR`Lb4 zeZ56Rn=;C&Z~6-|iN^^iiiUI71&i@xfz@8YxC#F#ZnJXEBEFgJ?p{jXEHpeDU;4|+ zvMKl|wP!byV=#@A)KnoksKiQ3_Q@ zrV=x49c1PBX1jvh@m2Ox=$VdXt^)5+jfaEFB+s~f!?hF`uJmdc*v4s^5YIH5Q@^Z# zNC~Ec|6I-|^GrCW=g*Fv6-7I$N24BJ(}PPv`DsR?aR(}$hk3+^@x$T1q&@PQZQhYh zYb?mpKHe#M@KfwT!VXIb6EN!XOORX|JQ?91`k)K1V59Lx93KEJ$G#R%NDr4WXE&sWj zge}gYR=2ciTWW6Tgf3kjmk$cZLLt-J=K+7N&)Ym{gVPk%7Y-(~EQ~He-F`ZFC=oSo z0+P@iq(`OvnGUgD?m`8AblL0FA?Oj zk&vS6!o2DEV#f#d!abF#xgV5;adK3R(oqJFqmi=3JnmvLc+N}p>@#pmw00kdu~`Qu zmOciz)LSuV9s1V7=r3^en8}ZFIr{GJKK}2%&e+o(FhR2IkW&^M^}abj%c~yrV-J!-z(mxf5*~6UaLJV(uq|AIRbGFi%X(a z_pOq~61BDHrjQ$Qd2zFh?0w$55?_>y@QpZDl766d(Dp+(&t4~nPytRjIYcHgJT>7W z$N-;0Hv?+Cj4lgXA7&=bkD!g#CwMe-f+bnei%+r)7~x7?HEWzbNWx}2zZ1!?Biu-i zljpulY0WgH$}lp0-~lCr#rb@hN(4pkZ&`|>hb_*7MA{R2K@WPQo+OS8^*d8p+EH4E zU&8ps6eK$;3))HMaR3{V;*@9}nqZ6AUx3c7gQlxv3Qar=zaJN!1sy3(+%BqRhyO!K#(%mY~@3LBr0;TEFG;Hgmgj=FqnpliV9*+G>G{3dTaQ%!1$^UJA zoCTR6O$fQ2Az3*|Ug~+v+Nb{DT%vvN{OR-v(HhU%`e+>?=a8|v$AkAzU zoV7a)lM&Fls&IU|Hh{^7=1bUzX>uu|kUGMamB~3ThZAEYO8Y(%Q{cMj19kBsGe}~D z7qu3zO?Cf}%|^fUXN0WSST2)*S#<>Zuqwjnk*T`M zDj7E}dc0#kU{gK$?f7DPL&{^yUss{4ZG|6W;z-{on9#1I z&&N^FZedG7qLP!)8I$V7^gO$bkdnxdA=Oa0m)Qp=LAS{uYCu-`g+Jav`J=KYCzNPs zvO;|&Hv2X7jC1z)QV2j+@*-7x3Nhv!1Hl^vnCuP^u3EpLMAEe4vlNjW!mnIz{%D~x zvE7Z|9M2JcBmTPu^h1roP$5X@$}YT15intS94lAq?R`;y6hBhrBZ2$!eeSeU`F0&z zn1!k4&NvV1RE{=i5P+#ZLt)@YXx!l%dk85e*oXtjW+L)%mpM~EF-yL9x%&V0nKm1& z9w#WP%COGz;uA{`%gZ?+gabSaZSyXiq6qQ^!$sjpUYX%GcWK`3DsrX+Mqwlor#V;) z48_ZY;4H|ppJ9`AQ{$suQfp0bXX;HSj?=_O@B&q?cMavkqcUdCq`EIXa1RJT(3V|T z{hRQ$P67A^Zz2fRhB6s7FYn;qFEvX7o|!uMy-n zL~fB3eu{$&s@-`*sB{y)gyZu^osL?-`4_kvI**4oW*Nl=1nUQFVYT3Bs4HCOBl73? z>8JAX*77X>AK`FkXZa?0Fz!41T`&tg_zxW#olUV?00T+Rzc=ao|_*r{=vN zfpbDH?J3+V0Jih|F*OfkcHb1qIBxH9ND<6|nUs0EyQ~<(kboHKJuV7taoO)n2l2_^ zJdy4K&!At+K=eokt&2MN6_9GG=d}_?kKFr~99SNJQ#XvrfoG29FiexnG#aR$D}%UR zVn}Pmq^3@>$Xj*25t0Eh8In+~=9yFsIy4)`%L{YEoC~k`_Sxsvz8TgWdH`{L(@=`e zl3{vmiFiEDXX4OWBf=Rrf2fh{?g4XK?}D)3=cRB<)j}-`D+~B*S;?FUTPA*p!wlsB zc*bgL4kJMsv3puTA-R33v)9?iWG_lITm;m1V=t$X@+z%oaX^Svg@m$e)KviJ)~tmf zKKn$z!g)xRW6>i7aGft=yNanYYpq@P)Q#8z8{MgX3i%F_@kmTxe~?tn{bKow7xfo$ z&S0&|IR%4!6qH)3yCSJkn}!>#BHJ&5XOwy#Z5dxFzRlXZ4;yu+^Rp1LxWKI>=>BV6 zJFNkATBRM`tD;(i+ApHG?#&dN5_)?YJf3k;ZoH^OQIq80CNONof%>O7>s1Ec0zS?QOyE^jL51UWz1|g1&Nx|MHeCV~%EjeIZ5u=ebd)5(CgI;nY7pve zYwgYSOb{(*e1!iv+Y+vYdMlhu*}v2HUjMTA*KU-(N6XhYG)f3D0HwG;h?E`-j%A1F z*xfP!BVq2`iic5Lv?F{Su0^%7ozu~Y_O1(Eg^U8X>T+CB9e-S1a+yX9r^V33`nKrh)G`$0~p zI%LKqWh{?N$FGyo#YfD1yF{ThhTD`tj9;E-nmRV%sV^2Hc|^gaUTp3kQG#tb-kRCre&-UQdE0k3G{xWLT z363Sg8xyg{whlUDT+u7{l0edL!6Y~DEiGm<%AD5=z{xYlp_x`zj+fc`BQ7FoG5O90<)C->IUq4bOrjw0uK?3d?GOgBv(+yAn~&{hr{xlStXZ@kpf^uzT1*Q#^Cy@ zYwg)YzteBkY=}qAhtPTid4==cG-y)ND!(1Tcg+3NM~8Maf!g(nr=;Bt1n9x7^OeX~ zy8I#A2gYJ{f-@b~J*usJI-QxWZ&0(jt7^?=>VL!k11$A?zv+NckkI#OPu}_8X_~u= z5N3ivxQ--J8A-ootHme3ZjD61GOOZ*;8e{^7*JT`R+I~&qq0Fkzsgut-}m5L{+Xl2w0mqBUnbYxvXtx2et1v!voq=)2@-ij{~N+*RoSJxgL>kOt52#-7U#8lXpnqiNd&4e5MF#v&AAws<{ zjlF_^@(P8Mm8I$iw?nWYeyY|HT7hlD2M;2? zUJxWhMnyKL2V7@Y-WQm+S9iV$9U-|AM#`Y2TQ4N=`w#9L==vv`%hr8b6fzcHbVM(K ziuPVTCEvkZ6B?Y6xoe>X#RiZ~y3G#~1AxJ26z*p6ZwEdM70w>@5JyTJS8diUfH*%8%2`OA`tVXW_^O%Ucwv4#SAzMBt=X;bI_z`YSvf9JPlJKB zz25oQy2yXRF_bI*|4Yps7>|J({5Gw|(qw58Os}(IAGwmFuJg0Q0U5rQ-!XnEQm8F# zp%%}lM_DXIIx9MjVWO|<`)5wqpEb&hy@mkoe~&D-Eq(pryNl>|kX$o08}g?f`0P;L zVB0l<`MVHIxjKF$f{Kv}UMG_4Idh#DNFz=sr0WPiBU#G5&Q^GuwucuekG|9vjuOwe zYCm2=5{6nly4EuM0D-CX_L@iNii(154NRUsBrexa|6uOw|C11$T~R1QshHfRMGx=S8AE<7$YyUj8G2P`yz5UZ|>n0Q$hKh~`PR^+kWY+%S9n8%Y-fBDNplwO+mH z{1z>W!{8??SERDo1lJlwx2o99rwcP~7^-z0nyzP{Gf9*o1sHz>ncFYhd^s$4CtjE+ zH_5xAkk_O(otZu{Xd;$Z$Y_^ap538Ls*q#-<-%vqiCD=MD6_tcXTta%bP(Jr89WF_ z8IeZPvs}0Ixjy2&0DP7+fRJIH!O0JR^C+q9DPkZ9`aYreWe0(Io#B;G<>1$KXY#6E z%RN7|=A0q#<1WpUs)T(AzcD{_ef%Yyt!oX<){7ptYdI}^DeFe$#8O$r*vK*?UHzv?7Fn7Q*v zE%_Nid{(qj^Rr+|O1JG+;t%ScA(=el#o zD~=&vA0#vRxb*q?N$0C)*av`&QT&%JQCo+QqST4ilsI9!bt@fX`4p2WjRTvf2RBLd z?kD-YsvVOu=`;yM$?jG7HxGTZs`lsIj;MGrmX*|Lp#?v`CX%_GDy3L)=%oUK6<|^Z zXiT$CwkjghexD1#ApmIW`+k3kKiB)!wdUfI z4nNEIv?6%Wy->}j%4Lk2j#Wnb$|V%6ju#(bTs zP)XX+szmqcO?9a|8wk?SX0WGe*T{Zqi@LGHLMe#3vx>4{~)(_s;8t8umE#FaYlspbL(j_hy6q01w;o zu4wPOO#YS?cmm+Xa>VEXS>WFrhSf0VT8~o!MLULZ7KQYY@*>5o&Sv?~@emq~5Y)vf zJaxNmi8kVuuFtm5j*1D{q~vA@SC&%cEG;%*WK5gAr_%gH^dtZl8o=R>kr&)MUVpvzeM!C08ke~9>A%$V@ux@r{gZ+sRdVE;P4AM)(Fq`V%vWnHWX=L#_ z%-dWh6J(E$$r5_mfFW(Z_iK^xh&hqy>q5DFc5UFi{&65ldf6QY1L`Elhixev-;XQ? zGUwj14A_u-z!vA7{WD7sV~{E6D>6u;%E3NqWCO(Uvcm;G;$wc4uOKome6HUZ=13l6 zH8i0Ho@)iQ>6 zvk+o$Hu!}M*Ai}W?JkTC-oXiDkYm88MY!kDm8R9>A)|fyqZ`b5g6vYjnFaqcE)@E3 zl8xH89E4iENT8v@=cM=Uw-~-{AaXK^mLS0_FN)9&(^w+a{sFZm{Q?bCYjB#eR`Mha zUibE1vG26ir*&yqE0~C>LBEZbi9lzbF`{%O(r^t^l#+UFNfCiN^NJ`mUjiovguaU@ z=$UKprfA4qwoGP8%L2sgWn|7jJZTpV52u7{e_uIw_>yBF{NZIB!{juRn=HPHnj25I zl-Z}lBi`4KbV@U?Dq2k(5L0Ar&^N3GyHzI?*FYpNl&u8s-G3U#r6rvM&7Zob=v!Vd zCaahu2lyGk;;-W*ulKwV9C#^Tk31-K_DL0pmc`sgzSn@(5wLmN8KbpZBzYEY{J9tHAXpx!ECdXjWKZIR6@C))snZLVkmNKvwuX>aQ)#B z&KauUIe0z5ppbZ$b;68Mk&K5q?W!e9cE!~mWdZ^G31;94D=Xsy3|KBzjf;}(eAi%m z?P$nz^*~F%;F-S@R~1IatIkn6d$hDl6ZEF0HJxGAzSET3%{b1pM^zA93F3|3r8NH+ zLQ$=0B&6`MUw)!1$xVVXQi^ZG=gVm4+ zTBM%mxXv}1Pf-2RfZ>P8LqtUucVK0szVYEXIwjbiO0=B{;Sp#$X0a97NXW zY{)ty4Z|rZOJ)>LUlCH`ha9}&5Ct*5CXUUTtcqbVXsozI=R6#l{|h1*o*;jS1u`Lr^F#jUrB46rEcoz*oTPE`Q zzT4)(ZXmx3dO83$WIO`{$Gl^2>Hip4HZa|@0#0B=FQbm|`o^uZ!NuW;1f@CR`Z7~C z?L+yZmG+RqSV-K*(~_BjOMD6I5-QcoLOq4<9t2-F)Ek_XH_N&sZL>=iRnq-GbTaI& z44!iVIBkw@+V}$tO`^rq0j8#A&L0U-=wk>3LuD*eqgaWp{ zLsS}LTV-{!vim@3%D0gJhiW!hHSO)$*Petasvai{&PttWViS_&hC8P z9GGD42Pf~_sjZHrzx#d}SM&g-gheE}-J32=k!<`Gjd^$IjodHCVXpaqJ-HB9!|A+6 zdP{gjDZza#O^_R3CS~K}MzC{g`F2aZ12ho%3wP-l%oawu7tO}GWq$8Dq}5)`TPygvUR{=W3r z69~X_sISLtP((YHmb|=gAZ%P}VA^ZpNLX*89G(hds_=W^Fhair{@_f`F)E;jST$ud znOs|(Skewc{}Z_-q4l-hknwuRvT&tl^luvO<(ZA2_yY2|!E{>8)`*iK(uzT^?9+_V z@mSRgjRMBALfDn@QnJGFM~?`@t(1jihlxmVV8>2^LndcH$)9dF1+dhfe-H&G7EM3I z88vbwCscuZTT=Ewjr{Zrj6=(ImO$S8GqcsgE^`3h?>5^-N`Hu3I~?Oa6j{Fjh|4us zxW+MMy1T)NjgHCY>l_+h?yy+vEu_n9X6xiR`V-;EC~)E*&_E{!Xzff#n3sB;^!duEr*=y? zilcqMXo0_zMJ{X}Q%)c?5RC(fRqs_TUae>Qw0vbOo#;C2AJn~*FfB#T0t(Cn?=%_j zYc4FifG<6RsBZ$hSQX*rii6BO*qn@?@^3M1*w~aqB`&iz_{owu{W|E2Z|ZmbiKP) z>&wAu$grZ?yk+C4>tje)MsI(GX7`TuM?Olw(GCm+n-N+t)l3^a0Wy-ULDw+eMLEpH zw!FIL)f^Pvh2nN5iN<#^FFx{;Ne)n8 z!$0Fr?899fRc3gTsQr7j=!JQQP8vgeR~Pr0Mbdr8XdUfqNxys-r#m*|I<1>j zjpuWPd`r8u5`hsFQW@Kfu}IgIw%e~s8hsoKtD|P*#G^V$%S^YmWJaZF0dqxeDmWK? z4hMPOv~}~&Y^Wz&J-}7z;5Zwwpn?@3J66#W_h-9J%H{+7-a-fy&h9K=GzP;zf6#SQ z*9tCm@6MGGeo$Wa_KdyE`vPQE?PJA1t10$fIJ9WXL^UXv)g~jq+UC-bxmcStj9KR0 zK1olV>?s?hqmjpq;WSp&=SMPg!_EJ!%S8!y{Up@)i3b-e0PAZ`w#eTp>t@pD))y?? zd+C({=lmfU+Uc}_R%jBEng5%2yoK=2seyCKS%nlbO`O3_|6TezW&tcIfJO;W=G3Km zYKr41a7Yc;Ci*qCn(F_w8^&yD1mX~z4lN?L_Dm#Ejm?F7%=BN;qXZpSS(qPgSL`J`{}BfTl?jabvJ}F^-a&0r)X7+wyO7;F6WW}N_@Re@&Gv4_AYy* zRQ(pGT>~fFeUBnBhZ>ZzmKIuCnA$Yan?m_pfSALk0UK_QSCa~476ICIFubC5pvHZ2 zii{*$hu}FOqm(K5U1V&`%0t+lgN&YGF*S4N#R{R)pxA+if%Xt4V&#K>TQ)B`<~Y=* zw_>b5?B8X~H3^^EXN4uqe;=mLOckXI*sr789I$jw$Htn1JsLfV>i+dTytK@!{jqE* z5kU{a0Uxfh(br`@1X|B?qf|8wO&)kX7RZT~Kg}rKxj1}Np7;Eu1$NgA>%uqi)p+a7L{~IOYyog+rpr}AU*G@CKh%g9tDlSv1r~JQ zU>!UiDh+FRiM1QCAm%ZZ)j`o%Ij`6r`4yK&FS%z6BoZX?nW-)ssCBP7Mn5H{3Ax!5RHrB{(sDkVybw>U51UCwex z6bUk2bkmy3@0QIZTMx96wI+vYnI-A$KOmY(BWWnJZyKM8c;93nEsdF-YeVTq#xj#3 zwa>daCcNekhQ}+?S4%dmfs!Z?TWan+$_q2}NMo)@%i@K|Ynu2Th9GK+|WVrEExo&#nq#)6esw zS5GjS1KDC9&b9&TDy1A^ z9tUd?7DDgr-D6*HDXTnpOI~c4zW&E z>r$eGGQwK3zZ=-n(U`AF@e0V13rwojm{&uYsjh)2$84<6W3}s}5_8|%j_r67{ad!x z4!6;ZGY9|?Up}6qDS0VO3kI(}iox$RUQnRgVJc)f4Him)$_%zf47HVjMXj7^q>zt$8uD2-D*(+mf8 zR>NRh>zN*=emx+FM0Qds`maH#b0;^dl=P(S!_!6tl-Md61jC2c7zzPf)5YPeqZ4Sd zzgh{Cw)L@^EwJXC%VVGTeZxAD5MDQv*E0x-(dl;iR(=k5i;U+1kL{Z@4c)~Ok*O;W3(Tp=%(i(P7+j8-L+^(I4)i! z?2%poa^}aUfzAE>&8i4+kcY@gT+uE>b?QvFuh$NNe+`8;O%57`UCza#9FlPC{a%lpjPDogMDBPuUM6jS$CK!?l-a%1v@=BeOZ|?abECLUM@V7=JZY6 zAEpjp{o?_Jt9hXtQ6cXhet+^$sBWF5cuM-Jei2}(uJQ|^^n*M>hMGv>$};>xTt_RA zX1z>}^w7IpNnGnt5c{^-()>4dK7VGS$r4!aD_cSKzyn++q@CB_{_!l(Z{X?1rwXqv z;m>AOd8?)iFLnrY9>Er%DIr&|*%XVfly}4~dZWf%zgui{5dp6=N5kMwRp99L8C&z0)CTxjuSAmN&Sc7`9kzB&EZ{bQ* z?Koe*TS`k#jd+Iy*YAfCfTv~R=zSc2OY*YgNTi?|-l>tF^tHO2gDzHP;Ul14$~YBT zKmJ|JWbg7m4O+MjeGf_9GG*86!^e0MV{HZfrF*NB0a=Cf)u5?3^A+#^O3fHo#;YQU zkPcvI`jC~>bN9gF47E=kNxmnc2U6`-R zUp0j9V5;xq!y7!k-lqmEMfUtp^y4Fipdzu_H=w&DPN!e%lBYnJRF5A!HULFrKdQTP z0iWe>siRM(P%(Vtyv;TK;u}v|q?6)Y9;|RLWa&xL?8MiX%Hy-iz7X@x0%~aFXtkpT z$mOI!tM3T)aG-OhNGxR?R`WIX%)|rFQ1&c6Q0KSOzrz(P7^gc6ipw>m85gCZfYhp< z79|iPn?4CS8Q9jN>E3+x8UJ=*Jig|im%0v=L_WXSHfTxuCkE5+5NHV^?`>o= z_3Z_4??GvEDgyZ_f|q$YLaq(lT}X#VN9WTvX5+C`d_scLGi2-^Uy^R z+gmvO66alO)ggsIDr{0I=cG(Gio?~J8DsB;ld)>VdLO1Gdy{(s@q`AKX^sQCMyd~8 z;leC-8Bji?_X4u*jiJAGshxT9$S=0&H&#uN5vTvt+jo!_xAHZ}C8Au#A3e0(`Uu|p zkVi+Dum?sK{99yLuv)v(7INCZ(X&-~>eQk6_qr)CqRBD+?%Y>ur*1=EYp;2mu+vV6 zwpo|+_C3w-xpo3NURl@hxMzFNXVG(-H>f0KPDbxT{Jt1~yR7J8-Yo>V2G+o7GmC+Q zggnS>cfmyJ18IcEpg|^Dm(;;i13i;Fq)`7Sb%Exhe)+L#s^M3ypCqXH# z&BYWN!E|bQ+`PHhWz2T#;+X?dYW3=bFfDjiGfrI^RY>lY%Z}!mlr1cxFROUV*G5?Y zxeUzlFj+EWa*!jSF%azX}n%eh^!V@slR zEm%ed9UoY)y_6z>+YF{^>?3lgUqD2%j1Bq!TKV-tG1@+a?N47QWL86{H)cGiG8q+p zxkaWWE|6ez2&I>`mZhZNSmQPonvaSi{T69jGA)cVK7NEFp^Fp6myWTkfdHMGn-o=L zqSO&|bd)zeu|Ra$BxYDp(j@EV{miyF9BIt_f@ijA*<~2!q zMFABz7XX;(mM?#Wmc+jvI6Es1gA47K%Fw>33no zhNDX;0Ag$m3E^iFEvo()V-dEI@jhG|`?qctPh$J1L`Yw;8j4^fT1Mbq?y>lEO2Yh@DDZX9ikwsmjfAtW8*}>sYL84&D5p*?wN#X7faA&_$9&$OTlEUIqk@?kd zb_L;K2}T(~R3>^mRXlkNuUi2%Mt2DiQf%4P1&l4MQl1|GsuOrs1Cx;eZl?dUNIAB) z*m*e@=YOmAZX1%a&FIKFja637^Ob#8n$Jdp2V0n`o7##ssc3Vt-OPf*Elkokls)5G zDGpFQZ`-F4z%e!$&<@0y`k)k|qMka6I|S8tn zrEzfENy=5d>fg@pwJP7;1oF}w-;i9?xe3XTnOtpK7WVAyo#_yEn#wyL!p z&bpto3z`vDlkqPjs6dr)yI<0qgf=m<;J8zyym1GeCu65~F*LUO0=`cK)m^34fGr1| zjcO$7DB6}2UQ>r(X4y_Eg-q&Fzluc^*&d!sY)`%98&8v_&iY>qq`W9FDSMoJ=7(+Ba_VlC20jy~{zyc! z!0u57txZ0WarVn#KOpht__1w_8plVxsdL=3z0Q&+nuXQp|X`_F!WgQ5W9D))SGG z`Y-*!)y>{gL2`P;O~=aB@B@R?MbuJLtk(11b^(&-Rdt?8q`}3z!UCkt=n#JPhJ!m( zQ_Wpgj$G!~kd=(9f9mqMTFJIM3drW)>iG58(RMRd3WKWaNH5uw-|VzkuN5smQ2H`KNr-M7g=&D)9OAqm!NE@pM_xR!J}o zzPJV~OF%ubj@6%VD+igZ8D+1qg8DMvaspLA9J$kcw>)X(;s${82^M{yr=EetfiW3 zdU5D3%4T_(ygu(9w3T4GOB`M0&jqd#HFtL7_(meEtXs|X8QsggJXZ~ z-qihS+z{;bkwnxFP(bL??q3P`RY%*npB{KnrCz*pdZ(v;fTNeF;{PeP@HTUNE^iBH zMuO5|Bd}*0zM7lR@_=i|P-y~mzXm=&{t#w0%zi0muzAda*UOx{#h!YmU?z*PhX;uhtxr_{w zjzzKnKh3q-4P)cR>9Fz<%XET@1*py)8lIO+R8dq&LoYf;gGmz3?~R>o;s2CvPi@YW z=4a&mdZ%@0dIlwr@7xLj%z3-%$20=;i`nAg-Td~lz5JcV9ONnKL`xZ_8`(|FHZTSD z0M{D%iU215!XV|UUC)_&r*Qjf({Dsk)QW+#Ac`BpQ9{pW`H7rub{Udlp|PqW6Ju{Mzod17s^C>-hqkk_wAE2 zXlkirM@`Cs0RKM#z!Ek%&W8fvgv{%KCE0p0il%0c?-qU{UXX)T458IM7auqy0$cf# zcP^v_J*`4X4fWiVR;dF)g;n+O^MxINS0%t6XKZK0ABcE1$(BeW5L1=`b9JYfm4u2vZBo0r#G$BF#AQ)&|XJoLo_CEAL2D5>y;S1S(Cu{<& zOg;hUPuX4$O{PKa@*26pgmtEcoyTf`ZPW?vBr=*@cw*nu`peiRTyZ6e(7BzQ3Q}6+ z8|IR12}ITLcgM&x$2!aajxFcv6jva$sunqey-aVUr*Eh=!Y2-t)H0ed^>u~C(kg>k zhWO4U`P5Nedr-A-7}7`O3=%EbCmWZ?Ujh8alsFr&EwjIhmM*_$LOaRg%%&ef(Yi38#XF5c#BVt_m|-idQ0wyy z%XNOv;`+sFBa?d#s{Ie(X{OmKF`^t`a#q0P%9mQUSAZ!x_n_zy#{@?*wd%m<&F2_a za?hm@`nwPfXx+C+6g*jQce_W&LpoJ{k`OK@J?xB$lVcEX{2(Hvbrgb(d_`TxC{Jy3z}%uUsmUx5xeBz}`#wv_6e z_DVo~OacOLJbvU6$A&q;)6cHQ7Q7TV52o1D8UETITBE4S`VupYtS8`Vj$T%e+ z7%|mxD0NgyW(P2Ltrs_52OYJmyKyzHn;ZD`J!Ys#7e7Ja!JPQF zUit7ioCMzb0w+(Xc$fi%08ldf$vF&7W3zKJTlmi=dqUelB?9Z;G3}A}Q9PU9kJi zNubo5$4SEj7C8KPj)i}rS-z!W&yRN6OA572w*7gZJl#fB|I8vWp_PKPOj>#8lN8_a z;?8jShqd2=H7AX__iRVO8Uq1ms}e0?Azg)BT3|-oSzFZR*?EkDGT09-@nTSQo&2H) zDNcwvW(@8tvv*W%(6TUSuY*xQ%gMj@R%;8Pe=W@~Yj|X!>xUu_#`XpgNISKwkk0+M z)BC#YeSNp8E1~5M13y*6;dr>d>zybZQ)%LJ3`XiV_IV@fuR)3Fg#(;zrT>3td0Hh* zV*aRo^EOosN_azy!$q5{Rw}Lk82>w0P1K*p8m)_6Hoc-@)&$x<|y z+Ae4OT-}OH!bSmp!>ma)UrWYr-wBeM58F6V6R789v^-;5rBmjxht-&Rbxku1HBA;)4SdRjh-p}3DdD=evRe$(^o0W705D_JhoZw;JQvT0A5Ur7wS&}t zzelSNSIjm-bM@dBH>jT&TT~~jCfQA@?aMp=*1)3iF(31WAsl!YgXa$BzdfIZTX=01 zU#h*I!zC$hwb-8jn1$)>EcK(*8hw-Y^{;_r&PNhieOP02%#o5-RV$imK;jQ}o>&;r zcyer&T*m(xRK!eTvCHpmI4LY|bOy)3hGlY_9$a^BND`TXujHeteT6zYoydhU*_*$- zu9OYwxQ@Ar^&$jI8id;F)yBPMRpjY%FP&T6)>fq@@|J%B1zaFR@ns<^s0*U%jbl$? zDw>M6;t7U~(;W$}d~}MCHJ%;fuYMyg;WE-)bk%^wA}jTD?+ZEX;EyxrST(XnC^5|G zTW;TXhTw`&c*RT7~4Rfcs@0`#xndE4pDc-CGo^b3V`Fl*MBNt}y5pOl`ino3Aqp1===I384Qon0L=%wpDs>1l zRX4SGI*#ky)^i=tLK|x>hIPPM1P9gqZQp0680&pBIK9AAQHzIX6pja)Ai!C@s!8K}_@K6lI5$)EGu!f`A_3kbiNJ6{Ogqz2MRF(` zIYzhTo`nsNvH;5Nl%JWO|9A;mPE5f+Hj-6jQ20M>AQ1`hC6HDmh#J;URXFkqFIVaq zUwOYLB1CwggN1C2o;#x_$>?-Q;~pVV!&t54Vi(cv&zIJ5ffxwrlA-vNfUG+VA<#S( zzfF?it^qB8&~uhzj7@XJlZ(|L-e7@%IHxc4WCAx-MZsH`Q&7aFs~jhr&Vk;>3o<`s zZ7ENtTqeSDK2>&-U|kQCG9XoS?rlY)iK<%S5Yv>4D}aToD;1&kBKe<=pdBV0`)|Te zdJO|swMXwG8HU@HlvXi4)=52qg+u%9=ZU()itqHg_oQf2iQ6XdeRKaPMclB+@lHBj z0pnC1C=)@?78{`l%Q-?pn6h2pi~tA}5;e=e?o`HxJKKH-I|hgGrW#AVUMKh|{m^6p zOimc44G6oP!2!cep*t3LUd$$uhto3S5`bMvvC23EVQBPhe*Zlv_G;d-&p|+tC*@$D z%JmMFWHjCEz7{higbRXbo*))v!U}ZhqKamz_oBTz?($IS<4(!4|4uIJ{8dFlLO;V) z*!3NcZtM&Zr_b;!gp+u7rw1X`l6#Sdc>e6Cql>IR_sjD?H&n#U4bt{@%Hd9Wre&l2 z>KA?2gZJ7Zh!*LD6b};6k4)Yv<%c+3aTf`MhU#}MnI3PH+K-U}BDa}B!Hc-k8SK~m z?3_8%pw+nW#>Wzk?0U+y&6TTEz*O`FI;K5dj5X*H?(MLf0FOt{W7gDBIL!kLmUhem zv#DpIx-!%YPR|^vexl!T{{o2D0Qn1icI=#Cn|}OG<_)`rIv1z>E(2*!k#tiR>~N`C zSOYg;vUv(Ohndbm#{vZ1w#cc}zfj&4x^1q4+UIZ}e`84t4|4W}9iK!llIQ*dKsflU z>TVm(pUlo`#xp4N1rpQzHn-$r=-cMt^j+m!OD_5>%c!I(T$atLFP(MRIB65j$tjm& zKVrlz=xB{|{QSe+-yL-AR7O0<dR*40kU)$2^*5bXa$gb?L22dJuI5 zcBqL`S{_iaA(4H4aujObQ~C{&)L_*3!aNRV@vHQg)rPrB!Q<)4|G5P+QlneD8zD@dqBmU-raZM(aufECy z%s)=-YP#(HXVo-|j+Cu!BTnj87gn+z(`hC9V<&mmzr^(b?W)NuyqtGQb~nU`_>n5V z>}!5@EZ-81Onr^ce~weqU#%Bw5f<=?{$BE??VBVd&^M^=`C!W`jae zNh1lYZ<V_B8_d2B4Tu*0w$qF6G@-d8% z8~qLx;U%h$)$Kn&QRp5$x$rmeVult~pmi)`m$AP{_mB2wf&^elr`1aK7!z&wJEoPT zY4aEBoujRP%@WqZ-Yh1Vg%+(`pL7#{-)RA7>L1@)3xsAHF4wtC8!#MI-etzrTkRfx znM`-$XQCTdCMWqf5%#yj9@|_!#(=`|O2?%|V+Y{ONqz8Q^xlwZvb!noDnL>3EI#1s zQk9Q~9#$72Qt0WksF2W3DQ_8yyBnmw@Hh;vaXHTHPQ*sN^5+FzeXXvA5LLU@H<=;Hblm%-UrtVjYjNN?|tQc>jp+ zid`_YfFgewR9@GsX9=_=W|5mffk%r}L-$zwH{_0IkU3sHvyI9A>Zyl`iKk~cjM{`h zj}&Tkai>n-J`^RNETMRQRkz07AsWo`_l#&f2Q z03&)z8iDFQ=Hu@_UjwFxs&JJ)9j$p3g}jv9vvaV~z-e1w5;v*Cd7!f>yCixwyOOdk*_rHxRZ3KQUe{M7;+b?}2^ zR!NHMJ^lW|u2D_|TTVGm+C_N+lRzRTfIym9*($#Meh~~vQ^bQ z(OL5kP`hA8utLdpf}RA=Rm=3Hebh8|7_n0SUC8X9ZNiTL%I!wDT1WX%`L$5`4+m>( zPTI?PMcHUejd92!|A5&O9VdUA@wjI#N_O&XqD-4qRzaQdGuzNA znkaPM8hmQ+L0gTXV*u7j4l4%XMO311VNgrE@(pDB3~qyeP0*MVam2tBE4GjUR-xB`=0t`aW={_3hXQ#jape^UP@~R>SLz6QS-AZIn%p3 z$r>=C^XIhZr!^hkbrn-n^8l3qRd3skb9Ie9V>8Z?0Z^pZo=n>l%)g}ve(KBJKFLLu zkbjd$G{~;WJAh?J&a>AoVIQ304jD=v+^)p%((OL`vb-pPB|B8h*A52O@Ngj`%kVD^ z`j6aXzk23!?^T_5z1Jjw7)_~=TZ8tRDFNf$V)Xr&ORApZ8ENLN&$w$FQ>Axap?Hp$ z+1=g{(=tgdsXZLO0-k}@fjJktWl66ZPtG~suXg^}Dn(i=1N;>h$OT-6%z92o@irs{ zk|#&}E>uAI-@=CqM<9vt(7*>P!Nq{@{&Pu|xK%gh0OD2&o!8Zwv$b?=G2Mm26F2BR zvXGrutS}C_yw?B=E<}!3V~}8eoVcBj+@g4@-Y${eQ1@bu*>;ob-|eflye-7rK5W~D ztUQn(?;4`>i|2MxytR|Y#@UB*j2P74tYyBoUAP)j{Q+mDB5meb#Kp$@FBQb~u|2~T z7+xd+0!?b;qaZyzwa_ffb5gyiRTzCl zwu~=sKzLMRNh@DtKBIg$zi8$~q$tWL4EDJVN@}chWxrxpb*b?CM3}46`SE5n)HIz- zOpXYL?^afE#mo?39={FtE>lS)yiS(}=F(xkf}Zp0i^EPm#S4=-?bl$W5Rxf6<>xKI z+X7IPUrnOQy$iYTT(2B(wAXGSn{4kNR)fu5$aa&+KufEu=411ibdz;ta}Q6y>{xB; z?~ZbSi-?>HN!&iHP{e&MyMqH6DgAF?h9-1odPvQxVT=wp z1=R4X%(rF%aCN6l@r;fVI=@^FNX~(o!eb8-6TiZ4pL8mVI#&-yl>d92BrrR6`r@{g z_KvorK>r5^B1OB4?Q)26cmt!xq&c8_F|nY83>4W~XISci7UbNu1gWjue_%+>)DkoF zI6Vna6rHSyNFi%JUh}~9eeA)T$5^%{oxDSsd4^xKB)%{=b4r&&1BL#f5sM) z;6?n4j#T()Or*W*TFic=-#p}={Es!YAWO5PNz<#QsueOvTuNh*En7p&Eco1+c^rIt zbxT>j_Nx>TVhxKdUkdk;IrDa5&R|+={O?%kl&N^!z$!f{{KKz`Hj0lv7k$|+X5Zuo z(=7vHHf2Ilzz~|ex9TrX7(_J+t-PtwuwdAd!3$uv126+%z7$aI z`oS8^TXq|{9Q?EZs|g9Z6^V)^977{_?Nyuwwx8RLE@HL8!Y6%%;22K`3(;|#)_%uz zbKVQMLm*(Hs=nsUlCnk7G;Wi&%))q1sU6WI?SG855gI|~NE~kKFDe1ibcBZVQ6ecV z-J3O6Up3n|AM2H!0?LwWy*dZuYb*MGfhpQ%^(2!rMiat7aXF%&OR6fpSjA}Zy%v|~ zehiR*fOU;nBz^4apZugpNt&tN=p1?HPG614@;OrGw#f;@I>dy^-kNoTn($<9*^?QE z<rBYht|*%y!i1_8O*OQ*8&vAlmE-Y`u(D@Z`jyh*~lEdCG}> zA|W41*CD*A?Ev%ASwhp<78ZC*X(w6e$fiyNwuo|{AGHwr0jqKURJkp@nQ3Os&QUiR zNeIM;SI9q;Islb#>Fb5&`9JS0Og=>VesZ92Jea4C8Zf>ce|r*OlRr39=j_&(bP257 z(h)jxi;Crg*6B<-!0L~7s^0QJGH*m;fWK=zb) zVXts?4(9Q|invmHH1XI}P!MjN&*SFjw;a3U$*^)o=0w_sP-BwNLzx2A(F1X`RV4WN zz$U;1nv6oDm8(|**tf0PBhHWRf*^jB7;tGsgrOW~RpE_Z=^>p98ZO%xOiZ3|8UX(E z&Dd~3rVBhrMg#m$5SeBVRv-5!NF0JFkuhG_qakm#Z4QS_|HO7_*fR-E6B1aJ4iKwS zEg7z-s`+Kflw~pML7QFrN(iFX>-o%?3TcH4-h#IBR_+zVN6(==)uN@>FhG@wj zt`?QZ-V3PP%s{*ZH$c#n`!)IT`hsK)b)bacPt#6m1qcpE=TqyBlBGGE=Sa|tizJ2; zL7U2hwtL)Zxq06nL(#8%ZXc_3~@j|e+^{6**x%b#V&Pn zjB(|S>AR7R1`5}mJ3@s6xs3qv#3?)Yvy2zDYx4m97ehE|_3B`F(9d~|qcvZycM~yD zAKkx2I!r~uzCiPv;Hn*L;8Sn;F4Yl7+@>N_Je zD2`p#qvp*RCrniTv=tt#>a;ZGGr!@@Kw>_xy?sxdYzIpt<_bV8#LMcc;}2a!Z+R&l6nq`s&||Gm{>ekXC2D0*R3p&j{GR{sAy(in<^?F z!$XF&XwmoLU!i>uZj3-TxTee0%tj^C;XF(I2O3Uy$)Ojm;f@N z3mHDA@#m!kFd>W`6RCug)N_MFwP7_UHNexJs27x0khzHwa&1s-Qe|!gnEMfOay{0^ zugF^8(PhVXKu;P!x-e2!TbN z{P5nh)WQ@zFYQ!jv0Z|=^<>`Tvr(XPttFN_{dwv<*%okY*yRxS) zK`t};RR`T*8r3V$J}^_@+iCH#He}ect-X3NEW;ANteMSQ)Q0bu7sE6wZlY!6_45YB zBACBTjIEk}xO7L2Z20@J5dmGA63g%8)e~-Uo)g(7?=QLzWrUzh9a`PTLrg@as;WXD zv5J5r(c;IRBteI8(4HAZzA5vK4I*=Ywu%%!B@Pf6?GXsi81fn=FDJw@dbBZoD?F;v z_KpWE7#Gkxf(9*JmPD;9WHI7p6eG63JO^RoVV0}_sIERMg(e?RB^}&p#GP?q%`6dt zgi^ZLl^jI?0oeIew9Y-gD~RmojVuqR?b)2&Pqh5GuRzq?ze67E@LDW+e+_}h85bJu zVRAvQDZRmR7I*r#}F;=*?LOoV7qS!5BH8*y<959<+bM~Qr+U*l1u zH3uQo($DZO(}AZ96kM`e{h3fIF?Ko9LctHXOggl4^7-q=p$49hEVH;`tc?HeKma{H z8{^TX=9E2jivnR{F4asF<0Xy(%qsTf@z`X!s#7X z%;8nEz-Ut01#oJF-)W-@U8{x=lwmN6`+Kt)!Ep&ucdor0KW$jaj=miSPJ#?fUt(No z7*k3gU38dNZJ^v`pd+P*QHSKVn;{#6yU?E}FAE)yej)?yb;voWxJfZA2c4gQ;8Ad` zOPQ4Dr~+GqBLSEcAN_UTN)*@x=0Qc9f@m*tI0+X|E0zQ|atAud?N)Z$UY!!oNwv-6to45n0 z>|t8UQG{IudT1FTyzi(n86Men&oK!SBk`IQ9Tf8(N0Ok3@ul+3;;?fWDk_k)ja*`WoBtRz}&WP9#TJ-D-)Uw2cp zp1>T17+{r0&Hw`KOo5I7h71aHMS3s)o&b#kvN`Hxq0r%@8P6R}MRqcU0Y_48Scw(2 zr5m;!qz>MNiq;WmvLx7=yYV;O7sWQ2$q}z^@r<6lhZ$Q19|)pVK*-~L=cW2di0z&n zQeG4D_!6Z%(O*o~>ww1BWw$vckT7Fw&-{ogjQ&<-yUr}2*#-Au1Bsr|L(bKXBoe(! z|EkUo4;0&_!Ty*4@D$0(auWB}Icx^IyBE^h{!GFkZ0IW#{Lo5)w6l@R zwT6;UXj%u3!uh$gPIDnD?1}S}r@=nx$QBCE2f`1Oz3(!L-~r=A`D|WZ(Kwv&nLnL> z)XUM-BHuk3FZC$&EWps>CvJ<(?8=jAT7A4i(n|y&y_?D(*A;Tg!XJ|{Aflm(C>O9Q zi}JlB>+zT8^iL2~qL|Xr?!?pi)8RY5FE`SI+XKm%<yz!&S z($4Q58>(haY8Lr*Wf}hAfwQsMfkY(a#JElU$k#vRwyjRE1~G_VFDo!7m|ljZ^9GmZ z!+txoRq!LYlAnU4R5cs)=Y}_*7ya@|NV3ec+z|mfr>lr0zZx$SI0vT`5AQ`CyuZ&| zdx5b?^a3rU!lX*bh=c*1nUi8B4L%{#1>D)TpB7Ql(`7(zoI0x#M?(JgiS8Vwtq73) zjM{qzXIELIjwoTZ@ViSO8aQuJtD=(QrLXom5FWLOIuKkW;|mCG1xVA7YrPjw1Wyb5 zbH$SBK`d^?hyt`tl=?W(Lbf_+uDQj{aLVgu=lpObN#h0nd>JD7VQ)AVXae{YsYlU> zMkaf4@#KhAl=sh7;y}8Hz<8>BVw2$R#@M4ObV&I0#O9SLvxH)A5~{9ce*!HLz`teM z$lxWFGGd*Tq(G&pqv1#aW}W`17ODZ|7hUki_EVxevqG~0tYIrgmYgj$$Xs_oZmSgY z|A)o?F?~+uBh9{I0a*XG>=99+US3=Fc}J8)&N8E?l!=YCSn#KwHJ6&D>89X6ExZ>w z8L*5T;?eazmp`E*@?7&e>mwLm8`004K!cGA?s^1cC<(hj?tDkHmECQ{T5!%5s!Dm$ zg*YZ6vb>gJT_FK;20oJMb5hX&R2E!Qwx(LZh;?Pt0+?Zl%>a7_i~gF?!uu{ zKhvij+o~Ymj9r%Z?QR?f)bNJ5;KJhl>T>ipz7f%=Qn@B?298qV1u+a$>o~YU7 z@d#Dr%V+S++Q0=xX4~nPqBu0#r_tx4qFZSYX}vE=VEniG*^0^eM$=3}Sx?3Brp4 zFAHTwKX8{ahy;hxD}k(p#IP_U5-R&~M<5({L!}@SEYzEX#~_EM7eZ`1wG0`4T*)k3v(Hu+dbUdnTN* zuVBV2PFrvlyh)LNNSI-|Be=o*CMD2B=k@Uq@!(MKP8$2D_RR48f#<mky~3h*FIV~41S0MeRw1^&S`J$xH~AGxwlV6jq>FqO!fl?bKGKqu^+C= z)Itxj&QV!8R8fx!v0IN$nPxp4Qae0}-EzeCtaI|+;d!%Em9k5q2H~CMqZ7@Wpn3A+ z@=;*9-aY*A(vzEj<4^V9#ItRze4YZ>7FHKad5Hd3G26s88xW(1e3BBeSObcldI-h3 z(25D#Dd2Uiso;!hWc$z@Nv#q>|=S*S9D3P>%LlD*lPnAc4-*5jn_2jb2;w!G-VDDNoU#?V0V z3U8E8pH)-CMn}DAoQ7b`A&?O*)r#kD@FZj@S7ASp!&r^Vk@xqh;{0 zqTkS9OsH!J1Q=4#FU@JI$WJ! z#8u^8&57ao5HPv5$TJ0|Q_052an?Sz1v_jsZB3Aqp1c9{ZdW_-zgvF~Ni7VVoW>Hm zUhEe(P!K7GPlCnP`m{62&f9qHL^v;Op-cN=i`JvtgJ6m5i-9v&n9W65>cLXVUGQ90 z7CAUG+H4(O;N45-{By16VA=!&n+I?-N^sapCN^ae;AS};q{%RQw{*}ZCt;jMM#?vc z7~yFh^sf76ntn%X9PZg~xpu||3>>U}l)sl9DU+|T@T`9@R2MRT`;(3vi5%RJAfN4J zdd=Qx+QEu2HRHx?u@d%{Dj_3PpO>B0In4^UcH07o7Wmb_;z%W)VYIuL8PwL+$-=4u z6J%|Uj)57?%)J%`9{R6$CDa*C{+x?f!!OHv0dRxiP9;P1$ux8jh5Jw=v;XHoHr=0H zXgZ_rotjS2A(fZ<=(<9B2xPCA)3`Y-5&i(zMxbr%ZoqZ33Ul2uh}!GOs1DTcY8)=g z9F3H0jY8yuY;LOnF%+AF_pdRPb(j%Zh^tjm2BYV@KKuZ4P_04IYbv4bkJPar$SArhq)yu~a5cBKN3rm$V_PqdP){CiMs4Q4rWWp_26rBHzI;)G(O?De6XVA+tKF*A#)$O+ zeoRxUR10l2)a?MISw^WRVK3ae3BpcQ7RR*eLDq zN3z9nx!Do@YH^cT9P$K8bxWy4d@JJdO9hO^*xeg1oVf3IZ`M_Uu~8Z?%l9Y8*PO!e zXjzl)+Vm^pv7zI>*f{2CNt2+fW7X*QBq-*cCrw4`l0%=uM34<7Z&)s6H)S;aKqLAn zZdn#58^jUekKZzpc6?-yBuf8WuMa*)h+~Ky!Ww-j(R2XIIs-0fv4HiOQ)qi#>{odWeYaz7fMX`kJ#sYxWkkuww zb8nu%*&@BEMg6Sh$B>C{#=tdNZc`-*+tUUJ{*8J6mgz^sS$O` zr{V23W|woi#4^a_isdk+hnk1)E)4Yhq6OD1D#ab5E}Op!ZGRv1pVR1sxkN){m|9sk zv}mte+{T1okY5Qd8JUgTq7n`ZpU!gcLUTeXs+g`Awat4YqZYg7!anrcfxT#VyOMW7 z)H0OC{}8Fitl5SPKSMr{ek?HRnT9I9HZAN7x$fl}@{_bqdw@oSKv!#VYnHVNs&sk7W5h~_3u{zui^tx{k(-1f;=THk&o*;vF$+d9GDJmP@ zQ{nvqNR8JSb|`f%(ltZ{Ew9T@Cyp`X znGIvP#lFK;l*2^q zpaj`q6dG~~7HwS%;-0dDFVB#x^XP*eFrtY3Dtt-irw|66q5IvZvy3o+RJWZejlT|- z0s$T6$7i>u?rU2iV~$r%I%ky&Y}4NaC&;T`piIZtX;i)DLe%U3+GjPQCevnc+YDc;0+!30`+l# zA-Td}0svkBWwD3uvxm9o#zKh|;3yTDoCvUHty^l@nkc2h9U4unP9~e8e9SdXz!!E8JHu1rkQb^JCS|)(pboLRN_x$GS0)w3?d&(v0PhXz0EvcE!et?01;i?o zZAadX8Y*OFe@x#*eZU($X$e(%9pc0JCN>Qt;ZtJE-h1;HQcH;xolFIhBlW@smU8vO z)8KhSfiOcZe05e15Xo)uUb#d5xBLAwh#ED55B#%M6G8fmuFW-`R`(EO`K1gq1COr3 zKBJD9|8KN%u@VDgxUQBT2kWnCHyMHhg&Y9W^|5f7qnf`)K*c?WjRwiIR%$S?n9pG( zUM(40w+5el&GO!5eV^lHn9h_6HIxd|x$F^Lb~iAO`|oQti9^0-CB z^u5AhKzV-R7Z&sO8pUmK)t-Rl8=GWl8OkJ{WCWFM1==*u_w5)#@GXF@jVO}S@6c;` zGwCjx6%GgTUQ3S)x(pu-!gsu7(G9D%&8X|DVnr%;P{VG@tV2NX)kNH7W(Vnm1EGC) zaVUGy_HWwvc>a?HWX=E^V@65Amcqh5cGP!a#t2ydH&4waE{pNUz~ z1yPKgbC_)L!)vAg(dq^?>z(Y^JU(%|Htbracb{*n?ONqa>5J`FW$8!>b(}RoTJZ(s z!K~7TFPV)4^5TiW_yF&DD7!U zn7_;Tml9J%J77*;k#)HZ^@NHv45^||_BpA@XXIic9l31kQ}n~6T=~GP;&7&cwEx^< zryiV3Vr&SMZo1)YTY~ZS=4WWt;tidbSoke*HO|L-zc9Za$htiK_!8~}yi~o3pIzbL z@@O~E`|GGgLg2+(Tr1Xbv(CJpdo9kW;M<3Szkdt}`_k4OjdDeU5~vc>SL~a_c(Q$O zh&G`F%m1^Qfedis)l|+;_T+b--u}8}{Wp^`IWIH3PC18UT!Vk+UI)7Jx`eBB1gX%# zu$t77>TlCAWuMu7*VD1r`N4ug14UG*sOvW=k@xQ9wb5}lxIzP8R8jbiN6|9xK~5U(NmJZl?k|**&4Bdw?MICo*|76l$As$cAcbt;{*yh*HVHk5Bv)$qgwj=4HbO(v7V?l zE_(f?X^V3Go{1KQ5~ngVIv?NktKk39%ff_k3h=>K#-a;)f-tGMiBWW*#JI)1G5_^$ zF=}{F$P%AB;XH`Sy_IGd@F}_5OkIQt@5162duTKFwP)JQf2ymf1hxgr@CvRPr4Nz6 zBUt_JTC;?^z{0B$`A~VhZe9H@b+VxsIXiCJ9htMZj^U8f200^;>I~Z^XXl$$XDj-3 zIewtTkIE!44HeBAONjiHRHpa@OKXuf-!m8X_R+3`S%alaa7U+^+z8F5`()=8Ia$yA~fCBi{L7W z1_!*p;MN-M)|VP|eJsqsRn7+OrPY!LUOf?< z|LbG_;>`i7L-N6`+CSY^~E-<82Yo?$;-m}CTm687bZM= zjqdWYS7g2DFLl}0_u(|ro=szr($ZcmoapHhM{N}Uv%;{bb51o4dxQO z0S0(Isv2%1Y2lMG!RP`T?>D1w)P9O_cRsGhGP-UvLG5xWw{m6u)3j0~pyRTE3*}S| z8%AJgN;Lk>XEfEE(>0VLk>Es#V{4L{S}?X2@;}yGM4kEPv+4-1zzRt^hf6sD%bPTUBJ} z<6b}dtpGIylvM~mNMBX_ynDPmfh?L}9@7EH#w|Q*>>)$ydFugOJu5qfaBrKR*&GOR zA9;$TJ)|Gcn$Dor4}oLm6xcyDHhkn_L=&ts#;5L+3WsaCO|I1*`{fJU)zn;<(P2xk zz?Gph-tiy1{?T^yHp1#yL28+l zRp;|r4AefeIDqeS)XjEAo8DEHmMtMw(%c1z-CBfq)KBw3t6=>kz#e3uLpF26IFhZM zuoC&RtVHCVnO^Yt0-aOV=j;FUFyc>$)#uTD!*wz}YYJMM69D8av7WeM^Tp#|64zcD z2JnZUkW$^Fv8VqJW6SWf;cKVq$U5t##q<9NN0=u?k6p_{!3d{*>t^7rl z6VK%?#f}BD<>cKs5BWASgD2XjU~y@8^~<7U!dzJEYe3*KS#Gf4&D!}E@9Fl13S=dk6u%6d1qZK;EL}ya0J4`Dc z*u8Z^DFup&xmGOXJsr*KojISKr2m6jI#U@l(3_U$94!+0Pm@rP%)Ax!3;SgKLym*$ z-c4Ur`hh7@d=aHg#zm-Yka`EoMt1|OBwjlaqWiW#LbgDsIwvt)ywgk_?Al59_;m?vkuJV+4r$xVMXD^^L4ivICHzoM21kqFn6MMw$+dJyF zuytG!uDxUxb&Ndm^jwb=DSiS!8hQRBYvlU4?+G{nze?&-AnI5)J+!zLZEB~+b}B$m zv^HKa@A1tE`wCc8q8TrSKV)YvUTh6<$^yk8PmZqgF^$oU8JeDi)4Z88gHUdYH6h~68 z6!6~Y77j$Mt@dk@>gPE@Dr#K%piVF{K9nj!JHx5J3?X2I?)?}s6N=S;b>|kzJXIplERUSUNi-4eg z8)`;%4H*4!H0tUD>T9e-y^@^P+Ze%sPNYA=(diM-{AzNsad+m0?^>kJ*J1iJ-9#pj zI=6E<5w&)0?oNupgz)wzIK9}2dAny-b+a9+z`VKNOzqo~r5rj^1>f9?X1o#c?;M-T zs~|BJsEnbh`n#eY`K>6N=i*932jiJwp_^0^8+gcvv&?{Zlzg4wE>}?C?B8^DPzLA% zWl4&#Dn8*B#*-3IW#?)>a@QYMaeM-^-nW70C_%RvrO=<0gqXa$Nu6V&_%!s}S!4b3 zJAwi_?^C-Ez33ae$>-bu!9m=A%#KomtauO2BGU(C#yGYIC3;)h+JKm+JRVl=hiEUI zFsn@9{ms3mt8MFZ-yp|X$vfHnt@XAS57=Hc4!9E4;O-aemdKt^!))A!`&NBE;ROR{4!9%UFh(fBKJd)5BVsXb&vI!UK@LjyLd8Y}rllTo()Q>S#PuHs&e{ zI&ZRJ0P)ZIo8TkaFwZG5aUO>J)ge`!j`%!Lu}8aCOmt5OLA}KTUVDEj7y*`qKg*&r zDw^w}n;{D5m;#fWY1sho5sAR}9l5~nO`(z{k>JB~d99B5H`7=cqsg{P`O(}r=EUyg z8>hxvw(vmVg=bZ#du<+E!~a%Ai~fYia#4t~6bOHSs}kwp`=VDoDsVaKp!TR{b`xuu z8Q&Mu0N2<=M)~!`?X~G55iaQER7_qQtq4$)1f}d?B>!be$U$mg_NoSO*nPaE5DH@D zR?0s3IC!LtNRl}Wlfo|{g~4l+TxyP=&=V8wDw(thGi>zUKz~ZS0`120K!7?~kGi~C zQx7Znx-zq9D|CKWU%n&hdG~a^Cyo*i?H^n}4gS$rp8|AP7upGso=931y^ zP3Hc%DPV6Duv&+NzxPq+Re;PC(r~D z-XBB0I-5{8Cl?W;3x;|i-V&0&$BlrQBN|aRK=~V_OEJ9qP=gTzxkj@&`AW97*`TIC zuLq>W-{Ipil4qTgde<_vaHe zSMcJOGb?e{%~Ov>fm?O9hiVx6NtCoz3`a)8j&p@oK&})$CXeXfO?jSLK!0>-C@4{C zUf-p5%L&CoLgB53wfKsvpOAilJg0v(+V8v*)J>S+vA4Ac=NVrfjhUEUjA=}L85G{B z^HA0*Oaw#TQiqNYomzDNQ3qxLqo#BkjN>I1l`^PjqUk+OUnOT`&SU3W%d7mI$+(z* zV*+{x0T&=ZB&c&HC?DG6p)Sdi!hW z_J$8^LUZ(@ZBx+UE(_X zLxvV*L7tfKie3OawyPP6Lo!rCc(7HAJ*r!^Fyah$w(o-;q$5Gr#&=Yfu7uf(U!~)Szh`H<#IyqJG?JXuDco&T0t^IFr#KI1`g3=%hsy-%Ozu zCVfi=kN$=Siu4|}19MLO1nZqnQ}T>t*1i$xrq4fw0D_$3Jjs0{S=TDM@%*yOAxqHq z?T_a3wK%J6erG^G70toBzx$RN?;s9m?|LeB0-G7OS*m`=h8LD15$}qQY?~^aFNheG zZ3|WbF%LME1nm3Dv?e z&9Q8M>@i?Cz?t>ZJd^$jUv=f_tcpC_*PaO$)1r_GdD#pynPb&yU&+60jMN`HrmoEd zEHOAnb^H=pdo_XIn^FptgZu-)MSCxg+>`jeYY{~kdO|vmD~UT)CEiZRs6M@kznrH4 zh_4%kOAOghi?lQq>~f?A_Cv${mS%l63>$`*#H2eU_Al7npa?EY*}h2ddYlDri@!4_ zn9ltGY^U21O>eCTq8>PVN@LIrOjV=i7>n=`v%gFPML%RNufFuZYun-3X~PHvQ% zQKSwKHF?%+9MQK~E6Ecf7o3SnCZMFul1=umF(R<7i_TAPuU;tL}JB1kRuVC&X zOT(6HKDVrvpn5Fv8!y7W=$4|w_pKZq$6yS(OI!HyC!`46z*e$wPo50Txs`XP4GBK@ z{em_%Nd{B^_W3#7Vlz43aQxb_XJY9Q+k$@G0Z%2 zrv>xTj5!tNi7<;JWQz}B){hc2PM=U=b@Q&$80@HkfEiJ%fZ|q;13jioX#g&tJEjwW zusc%kr#zM^xDr~vBJG*OS9C#^{MBDCUgKw#Z2+?1uAtq-0!;kj*`M`;y_fNE{Dojh z7l_VC@mXg&x->8jMRTf%Pdh|=-6bHqEubRO3WBsmX-M6&wTO5HM93N5I}|^FAQX)q z+fSF*A<3tUhpjY&a)i4TmLht$-&Q36X#{Ns0dk3AWy$h2a02|+gCAvp4&31^ z+^0W7Kku1Rea*PA?Bv>44MXC3j-nIY6z`kB6{VoF;B6 zI5ox>^sCIk$yGHpH#>#Rdi=gI%T#okamN-1KX>a13wOc)1`}Kawzf_z>*{=aGRyCQ z?PgTc1!~Jbs8xX`0CXFOOL(pabsgK@4LcOQjRY^m}rT~%!LjUAqG z)$a+g$SYNn3~)qbg@c=t2ui=Y;&z-jzjIs(I>Bz8BHJI`^rvlisTDV0*@)lbd`GBj z{H?k(Dx;4l3+qK0V9Nrf|$NUs(2B%4fqml5TLTjjuXakt(rJGgAaaALrU8OU* zKyc{nwk&J3gN|_J64U4~*$QJyb({Cr`~{XC+uKZgwoGLsoMR4blu6rwQK@Srb5`HMk?b&OJFXk7t)^1NEU*uACxay#4>F(sZ_H2U$8 zO#y2R6BpDsyUBYW*#1C23ChZ7)HfcC-z0Av%CjEsoW1Kt#jks(QLNgj0jM}?B6fJL z|GP+q>s5cmd?lu7TANE;Ctu=%J ze1Cq4oHH;+MBj~hVY?Dtxt6yc9_&4ygUFP!tM6bM@0v<#!RU0caZSfiBo*g6tkyaO z&2stf9|Upofd;vz?BND5C$Sxn?GG@mrK z-x!9lG3tZm4?rQ4;rr-t-}2$+3PuM3%<~Sl*{4;GD|bZ4gkw`Xl6F6BGyEkfr?RqQ zEY~Z??}nGWIB!J29cNmlrga7?V#5o`nSgm@+&=4@C0vb`o0r@urQG8i+CNiDVG|G3 z?^`N^?e|er*usa;1r|8Kn0{jWY8}NpH%*07{Qw5Vn}Du#17rJsL#d`5>%eH zT0?H}D>F-@bJj{5YNw%Uo+Ax^4)pXYLROH{MlFL@6w=M}&D+ z?E#5DbxxCK`53d=!@9tg(|9w-JFp*_g;37v?v+sT9|0l=Ei~at1U}&7p4{k2q`Z6H zPht`B>pH|7FT#e2AddDJ%u1^QOeg);-43_+bx=sZO^GJ-j{eTdc!>O|#&(44A3n)U zQ)aG)=!pO5&oJi)@J2-sxmYNL3QjntT>IwWsH2EvQ@~z~F|`Xeh9|2MoQXGYw5saw z!hl-4wfpLX1`m+iruJP|ECY9K^_{OI@-Yr=b;N|UUkMdaerNAhhqXCr6I)U`Uc%g35P zdyb~#RON+drFRF`BfnJP^eR?ZN^DLKz3vQMAu%yXF$jsFTPCk zK4|9*0@!leEXmlrtb&?mrf25Oum6p*Fr`m$Yt^X4?bQD;#`gdY=gGI3*AGpdTx&2z8z zM+@e@5YiaQ>b+V1q1TE_8L69-9Yw(?Jc)SaGZFAm@DI>2pa zt16k}`YsD^{UsEck!_Vg6JC#uK0CXQ!=G8^_+2wnN-xAzk<4r5)iT!or_~(ex+j{W zjCR52mzP735bUbFjI94-{iMTs=BuVtCMvRG$+hTvUiCs)UtKUUVczsuaNo0s^)vTjIvM~VHqZ7>_FoI z#D*}~#zu&HTS83nJAGI|Ua=xQmdp%0*b)AHZ~W~+F0Foq7MujBJ+pbmC>?DNZ=Lf5 z{lHTK->0{sbK@2frmkCwd7%suaPo zyA^TeIpaiYlV5%R5qj*Hdm$rc?7ZU$r;QqQ@q2&nz;o|k`Q26?!?e+!B4SNYcY|H5 zF1i(B{jo!&O9^Rg56rz#g!xu;?&|@?I%}B8=0?C%_C`ow zEk~ay)5fO^b|bsnLDA3r?mw^ z4^mPyDOHbE)tgL00R2RLtTn?%%+t`daOUA>;lU!?4qcqA)wooDJpb*B`xlGHAU&%) zn(Qc+aSEWC(%?6)0*gksTXQFCER6DdsC>hg(zMH>$YNOCW!;|i@k*~kN(al}9Qj-F zHwL_4JIw2o+Sf>JZh@*n7i~ zmuJ(LGIsqCFapjJFoxyr!v_&MG$!(c)lF<#6K;QG28_UvFw}CAS0LP5xzg3>)KVtJ z?R~lk_ljtooKs=)DidDt!0g5iStgs|qt|shgys=HnYyf(5WxyTv&2(z+=EF81p6n&p@9zcQ z^jT0jKns@Sq@jU``NoU}PEk^In{&YmPhkWEP%~|0*rbnbeplbi*WDV0nnfeXLX_Ag zTQ2eZppGELEYK@G$=>hD=6sP7mXN3bOzAt*td(%lc2BsY%Xbms+D0K}&1R1)_-Xs< zkSmXt%Vpi#MFQDhSl=Z!sjtW6n*;yKc+J}Vz6yu4_y6mrrLC9Cni|bHqqTpd0E<4h zss+!WeV?CkkAw6OR158}iwSEKU-7w99FGyoBi`g?M`ZY^vl1!rp0=0EvZ*)*Wn{rO z?>AM_RXUVhax+dz|0jVnEQc9e)ZkPs`O#_D85qhsr4E#r@^S@!>97pp{h1d9A4!ww zHwq+YMC><`6Y#0{rGeMI*1)3fAfyV$AdDZd@hjFEdGvVPywAMFL9(#S?vY3V9hIil66XXPZ3`<;y`7^T;;g>p@5p6c3=h z02;7cq;FXt1YG^)8!CMr`!P7AUiXY<6$afe1uvwj*q5+3jxfD>_j_oP$r<3(_ehu# z-YC|`BlI1Ijb{()LDcxfA=82y((yTTMVdOpFwLhPgIQW_>1wA`9k2uzU|lG8-7;*i z!FaOEXpKNNuT3|<@SWB}Wl zmwQZ>&l3ty)RY?gLaZ@_2w*sEv?}~A=a_A#|MO1A!*mF!7X~{%HYC`eI*MNs$7VRL zGHp}wkp}JQ1<1~+)&&FTs6?D4(+e(3v+4`qF7u zwkuN!`g*JJnM!=gIk}wQOs3y0QPHl0A2OAI{8AU-O>7cnw2E*(2{rVTn3h@0LOWnJ_%9PW z_nnT?MKCN?!-fNm3GOctF~ER*unBLcQwXp`^04lsCsjZb5c~ zl#wR4zgh(5>E4EYW3ny06C0+|2w_C~)~j-cr}L$z&P7of;Hw)bFic2a`lSM9))jZCYo9KrZ0?}C&OUYAwjG)5KhAQ@;2q~_P zMR&Kx`h-l-99gIlSj7=k&2fWG!ge$>dgj8^aue0ouK9oeJO59$uu@ea>5d8k{&L^$ z-t7FCrY9>yB%;Si-NA7_HqlzBjU=IG^mAFzL3CywRmqxf(JW$1fyMyWYrC4hsD)T z4snjG4F3twf-+)NmLdRPs|w4p*~);iwaIu-!08!n*HWO5^qhlm2N27=`B%0&B!_-J!B z?6{x_N)1K~zVlmOayCTr%x7fOF)iyJc2%X8?79kjZ5z5Y$>BVyoCgio2%ujz-HJC~ znz6tgB4sN#Ct*m@gth3CGFvqV74w%Rl`-bm)j{#(z^X z;X(EUc?lx`arY`fBDP4OWsLvsE#@~&2{*@1;|GEsstIokpzTyQ3v=tr2x2>-DhFi- z!!^_61{`nLsN(HJ&T^sYq7-j!`nNR{;b2LVcj$x4!YwzW9%jO_oolwxW?i&rT+!Te z_(xrZkOJr{duJyQPwH(49)(wCU!UOXtB|M{!^;qOqr^<7)m_aJoMJyd^^X&aFu*#G z_D>t@byU=v!_7#EW>&|Xih40p^XQa(}fUXF4ci~3@ zCQkoKVm=u#*dbotYoq0%TQA~4&q?kaP=T7YMV~ccwtNyTV zxiwx~nE6g%08{QlNwf5zz%4_aS|Zqstb&srlpGWvy@l8r0H!sHis{d4o^|D@hA~eH z-wp;x+)=*+0J@L-FPDQ78aEmlMH>M&EB2ovW){w*VA02`PLJpy=Ac2?IO_N1P}fPL zUd*Z&kxg+696B{6F{_r&sIMJvJRR5uO%bzFWY*^Jn+ zqtOUfo*A^8UAjOnXY%l^1+4wpC=Pwt(EC46(QGV2xRNE4rYBOG zqve#U9P&U*-6D-uRe>FyM*S(C=2gl|OZSFTgKzbFyW#pX>WQ&cJXL4rClGhznAmu{7*9zO&%VixHqQcnpl= zYVCD56!KL1bpPk}hn{x(JLg>l;!UcHFABoA@W7V9%pEk*$!*B+(IKsVB>$`J4=Duv z^KMx_)Yi?Xa9x0%ulOnK71Q&;9*y2wqIch5M?)mzq$!d2#07BNGHx2q9qG$O)|Z4IUN}Ks zd~dJ8Y4=pm&s6B8s_);iAoEeuAmob08?=|>?(Y&SWKOa>VU>00{-k&?kF7VW(*)v# z^}M6}bCS zvIk^6hOWbjmTpLY?iaKZ(@*GeMe;^MZb*2E?%cGPN}(eI94TLi!kiy-qYajr3h<}| z)6zRol)YP2slYKO#3b@^v1nV;i1U9(# zFxv7?qsEpC42eEG1TtDaRSuJ(JWLjlD6X8;Vzq_3`aIZwJ&xWWqVgKS9Ii)G{xu!; zMSMY$t*fU8zNsrOIs&!?(NnuNEYthtAA`^`oy&Gy2y8EHy|ktW8M>Z+5!28*F~rls z#A57^X9&|dJE9}M>lM6csginUaZhst8)!14zlfE+#MFbiy7j56qzPX!53R;bManzf z_O83*@hIjp9J<#~kU<21N&>WM%IZU+3edIea?9kYwF92`z7lUmnX~v3x?*QtgE;+q z0>!f`K0PUYsf?o#H$wJpD`R!M!_RM#z$}y|O=6_UDXnxqB#dM`>_Xi`T(t#Fw{^1! zekd}diOaZwYG}OG^rBOpJ884uEv;r)%dOX*R#NS7a;5r807dGPiJ+&WPS&MllAr~y z)LesWv?CM!)zuls_e0aNAoR!dd!hQ|&VearIE>>d;eQgA-u`~Vq=k*p^R%aSSSs7t z`J$2!zaq6@5{RA{Q4|ZadBb-ItMw*BPAy9 z;3|rC^AEO}Y20G=^80Q(6xEED23(2muO+JWTu{}Gf<*Uz1wOhG8K=shXH>82Y$IC1 z7tTX;=z!z!6|*NSCnbslBMyiFS$(;0hsAMVJRnm)e)TYl)1QoTpht4%h)m{F-0R~- zKeDYUEge^h^3*$AcBg6C96DJrqo7) zPGP!D<&Cw8?s$*v`G-65T0^@df~R0qe6jt6=w;H@;Fg%T;pr(7X|Gj%z|m3gC}XRv z3c+a=M5wgjRA6Sl^_fY)hKwdWa959MQEAb@XR^h#pB_y5m407Od04~XG2EWp{}Zn! z5YUYS2jnq!+g^W{=q)iDe_hm*Y5B*mc(DH5c1+sRW>*gRRJC@Ahx0hhp2UT@pDw%3 z?%ovKeA*R6Rk+g^5)|6?5}{~ZFqLLIKsd#hXpKQ>A;-1!G%uElhr+OIi>{xKLraNB zmklT1E*oEoxI;#%(TQd{1ya(hC6%jTcN;@rS5v)~_ zuR3-i7foz+wM7P!>!Q)6ky-p#zNX@%ymJ)=!Tl3!I0}8iG?{?5x_rVebRk1{+MbzU z+6tD;c=mLvJEOAOqWuwk_Uhl5_qZ!l-Y9`Kx~E;%JP!)GGN=2wM)AwP^CvEQ zH*b1<6c0}Z?N4P=PDE>s*_DAuas+nACt!0ESt|R|0>$5@G7%n2i|l%G*%2%3xl89f z9c;oqNFw3*_#7k@K}#o4-lin+r;o8Nv4B%u0koLlH+EoXr3%Y_vuhtpmU?hC*Idz5 zW>w6g9|#jjuyxMm?H8bGQEzbolLw!5x!{_DIafO=X(P9k^j_q95!4K<`~Z zTePbC# zi!Ux_oKK!ijt&9{IiVR|aZYOW!G1_?mo!R&_2jBDg)Cs4%_No){`9t}*qM`cquA7b zea#%{(`hx{LWy17DKfxE2ns_?ZkR~QS$I!CQdEBUax$i}Px)xh;)I#21=8&g9(ZzW zgWySS)P^tHuLqj>;dx!lDbc=>;F0KS*f+7-Us$UASdrAY9f?bEd?R697(51WH+UaI z56#_^7?VROWdCP${l6ZWZr2o(Kk7r!lbgnyWKD{RC|-8OywlCGC-+*>Qnoa#a!F~` zStVs)@#L6f!Wo*W;3-{1)MLrk0U}nL`FO_;WYxCna1n6=i6W*qb}99NSNK?^Ehg!A zzSqf(R{)tGV7*#3ZE1>DitsTV{d5LIM$Qv^CX&BFDi)eR+twgrhCGwu@%}IWIrlAn zwPx6E-8@1KYU$yjht8&YsPO|16qRT*merTtR0wea*WXZFReiDBhN`e^k}$AyY!N*` z-gj*-C0&zdHaRESj{)zQ5G$OpQ8$U@)90leouH&q$EK5I;Z2yj(ZR=&@%C)@89#1y zc!EiJMHBAcw@-V{^g4+rI8~RU7U|V6STN+rgmh1DpouyBdqZ6xptKqGfp;FZ<{cpY3CCn5#*=V zxEA8}wxb@U+-`CrnGg1;pk~--M|>MywzE_OBz2AY-_{8?nwLy#J0=szO#bV<4nNar zGn$(!1ADmKt2$7938NEpfU6;t2X-b6tK^zk^8P8aq%8e?F%ZmgfFaSSmn9vgIUQM- zuZ%#`ftx-wRe9f;d~z6a#LK4rx{Iig#*tG4P(}qMU5>+5B6}(pD^PPG8s=$yI;hh4 z_cC?**AM2vIl^8ufLu|Rv`Y?rP7AI`ip!mIwI_gGr$E1Dj4R66o~=kLB{Onr&9i=N zx+SwISe9(voQ8sjiFfx9eA~>J=i=^T4YSAGUr6c4A-5D9l<`eaNR+m#{}_({C|4$jAqzOkG(Dc|KzNwf;iSRhr&! zf!pqk707tAX_+ED=8PKa#(5e}l@B6g3fwI@>&>VrlkZ~Ngc|Q^2Gtm+KtOt`aKbRI zCdL^PHO?RTmRI-?18Lnau-Ncv_00z8{sM;|2Hc2OT`s(Wo|$FXY;N~hS8uP)8<^Us zEG{U;k$_AMC;>|Z6N3A`b0FO`WG&3>b^!NpjpbJsSECt|kOpa2%3<>$=MSp)HSGn) z>nJ#MQ@7ERaaa5JXIVT%U4zPyZ*r&H>9f{KPXO-x0KwV;w_QPNEzhP9N--kn000>Q zA!j;mb{KgvQ2)_d6WY;+dOf}KKz9>Kp{b!vlqbi;+o}LTAE| z(MP$uqMVq=$ob_>;Nc+Bll=7n(&&Ck~gtmTZ2+P0xCJu@@*hI75 zAg#&f4V#LU#dq=umSz^GJLl49x53QO_#(Ffkr~PUv?6lt-8y_GP6?(fqmNV-e?T>Q z;KLM5SiNZbK3Q$Ii))XRLYs=j%d>33G@KSZ_c&sYdvSn|0Bx>(4@CCsKM^pnPSl71 zBHc?T$RYd%)d|CEcR_v#4aa=fgrTPlO~8eTjLe8)T+t2(yx|CofiXK#XsI@66UAZu z*>}n^-BQ7j$9T3VRw;0;Z(sfYhvUSLgH2AgRwcXNP}$qdKD9J{1AO?yIWeX`Wk~<& zp04JTm-GU4Eni>UbCE*2FjY}~zlmGcsEPFsP5G*X>_mHX5SMoR4z%-us64HgdYzJf0vCWxmgY-|Nx znpT=&vOQuDBLy>&_4I5^^9RG2HLcIJnL4GdXW_tXjvOLUQzYxBqclC2?hq-osq;7D zM#{rbuZcWd4*6Loaf5>Sr zM`B9`(1?;Q7Ys|i3ovI>FXZRx(zJEzb4ajh&J8H$hJTELp>M=YykNTd<)J`3zAheS zn7;^Mbv(u#QPk?Ure1ma$l*e`0n28t1ixrf+lmLnTK*Z7ri)F2-gJ7KuDZ6J$_K{E zEB(eSFPVmN_E+GCYcW2~FY%W}L)zb9s)CP~71@4_5uNfy^1K6Qx`q3#*I%jIYvIRO zHF!YCc67-JN|Q`qXl&LNI+ok8#OR&(er_EaC%9dXT_7??#I1R7A#CHFwvUd;p__>RQ`yX^DCLtT7-}5IirztAsCJ2M*RhGgrLrX^B+%^v z{hY_w;mUO$=g*ELHVF~7&_a>C7Cfr1Z(|qT|D{Wv{^7L9F%rHl-)&nLm;MkuTpyNC z7^(8v>ILl<#2~O@XWd?SgH>J5c|0PaNjD68-wyA$0tf#t&4=-6riG5NEXF*{)Qe%n z3{Kf4(7iM22k_;#CM|}*JGMJa%T~vlKse8QxQNLfhT$`JV*0n2?I0BXtVSJ7aJ&bJ ze13@HuU`GKvN9(x)xCCx@GHaZXJ>kz2lz7#khazeuy2(Po|Xnw4e&NGNVh7%@(iun zIFz_ec-sYHN=?1z5<82Y>t>Ida|-^Rxla^30w{jAkYWNXF#0>piP|0~0j$}jhzcLc zU3Blp)I8ubWJKjmSIECYwU1GVPu))Pt ziM^6InIq-nON0Hu)BWQGtzz152*z`7aVCh9UJu9j*?S{si~Ng6FhRE+7b8#mWc)|c ze8Mp7pbA0tJ|^75njcSL#hqq1>*6PFg10qa6vprXIC_U!TR@IUnXraeFy?O!$cXANNJS(*60)mG@nZ1k2DQnH0npF6n5<*$+3a=3RPpRk@8(n zLuLhGAmbr{o(T%nBZ*xAu9u|`o*0%U%WXPU#e9i%#s7}+W`fxvyB~2g)Xo@JS|7t# z$7@AGoqC1Nwa=Z5j|Fne&^Ls?0E+wNiA97SjMd(NK>Ro6kculHGruWQ3yf;lOY`== zswzY83Wg`K+?WoYVd3YV{?pT%#WlZ#(tlLf3T9fs^kZ33(A69NgF7PkG1EB{pMLl= zk2$g?-*TGp5!D~2@{V5nPW}BZMk|KfjBAKYz#2@h+-n)D78pLE9fmy+!uNR=Au={u7eo7MW^4s`VIvkgx#(;!V8PQH6<*t zg}uQRz3&T#L)ys8^?GLy&`Ds@;@`-xo0{1oJ8g^GzTYro08!?iH3S?gb3{0Vdc|ay z4*S5ErRsTIdG4j1GNTd&wrpf*iT+&7Qs%b1LPZi%<3m`}p$VW$@;sNy9p?tQKm2J&){B zH&!7W_Od@k@qFO%&E6mLx^&O}ZMvDXZ;sD$&)}-ZZ${Rn)~KCQr?8jEZ17*HMx<3C zK15_W5b14OKUckAU#RK1hG|##O6wwdCMEh@m%@z(`#O?^0^>YTTqkfFb6g>aXjsUV_yIv8PNLSm*nd`CGKkdMfRe9_23jH%F;B=X1IgUS2k>~=qsnYAk;=R@b$UuIM=+fZYI4~crM>` z-hx>13B2AEF%PWjasy$(ct|2tm+TZc3*zI7sJP z!$BV>^9Gp}-<;UdK!V$#Qaj4yCQi>J#AQfkB%TKg_Ej=%FXLGPMX>TWc)kmM;3Wrc zMVY8&9z8=(FbClW+9G8^ip4!W?%?tvZjOpZ(9~V1YYLQ{5)Aq zHPZGtF6ZY%ds*SvY7dM`xjU2?vmJ6vUBDThY*XMnS-xi;!R}r15C0}lPKL2?t~-%- z{K63eQBv@SQPX?R`T5GY79y?LY`xZ!YE{wO*##y*c<>sEnToSW8$J?H*}&PsJX6 z&Vh`rmf?9EZ;cJ8X=TU#LU5=IxMTi3A^*>9a&lGr?$*89uwq`r-tROqT6qTT1H9fQ6EPFi|D-zIKjO5 z?~}-(n?6Sb^AHe?I;QcXaMrN}R`{DgM=b?nCfc^$HlBe}m;?6?ZKBGGw)mX87_vV7QoL#AiCeNj%h zk(j(sJn7~mn1xn=<9oc42CU;@$#-JS<}$OsCRI;IYnZ5OP(DZ>KhNZ<<((D?f}sH@0_H-Eqx+Ydk;)e< zTg1+OV2B_(C~5)?g_Bbmq$P=y&z?;ODZJ(SKZAg7L!IvuiF4oD^&Gw31QnU=Uwf)&RS3 zG?dE{E1hr?p*X=G;=%av?6@+}8hW7DE!Jk__@DXR*p}?QUf{T1{GM#67LZloscnxI^a=wH>JTrHhwL z<`O`(AB@+OkOdw&DY!b1=6OeS}o!hRJ9v(*!%V303f=whe7q`wN7H9@o6pNC{q73(vxt!%*6sgKS( zU?%QQ1!G9tj(UUkASt-wzTKrf`+ccUgKx{E!!N536@?;%*284g64CB)#E<_5g^E9C zc+QbdcxR*-4^T5VGv7_er@ulXF1!1T`em78nj@SyrJ~NqI(i^mSe!AkhL#FoiIC~M z0ppsyp2CyrZ(bB}I`9Q3JFS>dx)S6DXr>lehR(50qyIAhBWAGWh*>S9F7eQMriZt- zgT|%sqJ7DA$mV{l9NV z_iE)M;X6qO$753cx;977NWkjaXQb}ZTzy>=Z$M;n3{jK_SaJ0rc;}HrN}kSWlqpaR zSF_X$bg~*Zf*;$Epo}WB=)2w@g$7a(Z-vHQ8Hj&)s#Gp9TUZZi^VsW&Mm#Em%$8Zr zj)?>S;enFD(fEljTtRg>Vbc3wa(W(yDs7TCg^LEp+^`NX)u|%`Vi+7Y_i|RJ!1Qe3 z%smJBq>f#Hb!eqbC@ef<>Y;W4^ECaYDG0&Lv8qI8N{~y@1!=i%{r@dX6 zjNFy97hQ2nLgL>A;a|LaWe>>KYr5ZxeI3IouRL|pdKeKV(}gnLp>Zmjf{$TL-pyLW zOy6?XO`P;x*)nq%uX$TbdZLWA2K4b8~UH&BgGWYV6vRZM#H0YRoqNks~HUy=W6?oDAhK|DNwmg!M)ty^7 z8iG*_VGR+vsjp^m1hIJx>1tG!+N7XmwL}*adOE%iVnvz9?xoUvO|J9@hP%xzZF)7^ z*d7@T240*a$P11Y|}JKFkUj|at!L&qqfRlth@Z9sj4 zj%XN?lNLXQM!Iesec4K>p%EKk1gs+x4w0;Q;I@hKoE<~u63VM-FP%SCX$D_RflAg<4nV9zw(@#a1GagBw zG4B_Rxp+|35eabn90kzUyD_G4?ylPT8U7jUJLNMVn&bOITvKlZAlA*f>s6!b?c-1= z$1#gfQzHbwNsov|H$Sk!Km=!p^r{f00RKM#z{JBUUGrnPkL+nn`qw{zac5Dl@;2M& z6_jU=7yZYa%d75IeHQ$hZ%!4E;LEFZy{69B6R%{iabdYD4@VXTU-yh&>JN}1Xy61Y8Y{K4Y>?&CC%1R>awfF{kP=58YoKM7nP~Tojh+U-8f!77fanVsE#1?kouE{wP(*8oj z&5RGlk}L;I6+w^lwiD4W!1wvXp;G1odI39Rz*FhZ>C ziVTrQ?2JSydOwN3^2Im}?uln@uC|b+1&RiO39tddi3NM-TNd|UEnl1Nq-09&eh`VF ziq)aHEI-YN>?RFXI<{;9##wnt>E|FhT+k zrQ_E*w9n_zqCG4{K&+Nt-DWRj5QByYoA^bBhbobSw207m!TswKJYcC#fH%6^+Y%lv zhHAYhN17DYKT4?J2W$0T=!ZlXAoKsu=(LVm(UY~~6;2ww@gjkNF=U8&QTWZ~YDs6b zdh6^!K9^Vjpw6I#C5PDLgN-MLM>|;gEv)+=exf=*bBe#NAM~zL$W0sH>C0Y~(Ji}C zDzzLrHA!Aka@@-osC9=(yxjyql;d+!_Xixxzlrpm&_=fpZymXxf9}5tVgSBu1;x~r zHVyUlwgVB%t_pApu5!g=$Xoo5@cXd|2R@?l_?KQM#Idu0`QzxECfR&dnL$x@f3kqU#aqfQ!0 zcUs}?9|s+-PA*!>afb_FpR7iNf)`7D6nF%HZBq=2p$Qq1cF7l-YqC%&RCLK|A*t17 z-|!urXf{7+(~JT96|{Fb0SAs>h4uVd35#NR=Dq?Ywf)BaixV^Ykw*6Sf&a-i zGJG~Ffh$WS`eid*{JxbM=mU{|2j+@rS_)3>7tscGYk?fC#?0N{)NVUvRW;#zLqk~6 zA^eu8sjHvH(I619tT5vQezS)-AnkpmbG$Q2cjbqEiUs}Atpx2V8R*qX*zd1qFAD^w z|I>c~?V0&W05)$HG}Q4r0v2nkEzB260?K8_B=pkdxBDmKZTkTPt>^C(1%vWmAG3o#?BnGAm{iTr>qHV%}*{i9C51!~T&yhecbQW|@QFfhec6iK7?c*sWEN(p3emM`4-_) z5?MME`53sTjW?9`=N1{s-l0}{%<^Lu+=Pq>??Glj30dQ?fS!PE3wkSK%e{lv4|<=Q zReot>HG8!5tL>ytqId6ox?b)62X;qE2SW~2nWJmC*Sp^9W?d$%>v}==+sTv19Ipv4 z*j)TQc_eg?i!7iBx#q%#S($@b1z&s}z7?Zu#v1g81`90bU+e$N0$c^Pk<+L1y^N#6;Ys#~D*bz~It z6=N83YJE;1PwxQ<@~GO#)MxE`o;*{oLhq?@Ch0%+hzti7{v!cs=Ns9CCX;7b#$;Ha za`Ee4Egd3wk{AGu5npR|Iu44|3^t?9Jgr}<}UnN&By2ni>ffWV}Tae zgerDL^Z%yU@UXu(;@jM=bO}tkZbo*CmmM^qpB-g>>|FeFPWRRdR+Ejk?9yw&Z45Xk z?9Q?t+Y-QOLC~wCVR2pnH?Qgv--iok zgKScuJ;V7gu?&daol2+NxC&@Ev6?%M&rDK3Aiq-eaarv$ubD&xnhHtKWAbKiO9bad zA+VJGO!PWBc3UaRmK^gCr3vcEZ91vj@b}-^^KqtyL^zw1JnjBhss-ClVzm{bROI4H z9$7sMl1abv%xtd#=Q~uGWZw@XTmin}*Vg_YqfpNa%FH&JNAbf>81TeNC{q8m_#8A^#>d$lPSx>Y z(qcxsmcDN=2J|YV0Cbm-$21urd+nG*>TMR|RnhR-=^_{}1YqF_kkqFtz?&a_LyyTJ zNW1ynhh7b8z_sh9gwcD-as+_K6-Is7NMTeK77yZy_WLVP;ORIH1`yuM*78>_Mm`Ph zY$-jJ)x&vc}bUWwRrL39=`J4 z+JUDQy{v}I%tun=SVhY6E1a1w%gl9{I7V%Bgt4|Gu$?o*Z zNlG99rM|c$1c=T9dlIv!Vv6_ami*$kW-XPl$MfgE3K3MaFZwn~=4+G5QI&*ew)_Ou z2cN6p-PbmL@E2S8=*M9FbEUvO;ggeIo1(^~fM*8#*I|JabvDvmlnQ$7s=H)r1w#1z0U5Pfe%7{c!NuH3I2P>zMPSCc3nT7&ByZN-+7gZ zh1?>DIT*=qkcoH1S?=UKNa_6dsZ*8YpiHevLuF}53= zpA1DbxTcSDFz?>FeaRoSQ?K;MgHf;&KGgi!U8>aM=lmh0;HnCoDi>5QSHIyA56&qo zDO*Bx=!Q&Je=(!{#j@GfE8a&D-F!q_N8jqznsDMF#aZKpG{@&Ya`OE|>>gfJ9i>J< z9Mil_i4fwrFuF2p4%epD{*bj|mw%iKJqx(uxeVxcMwV&8~@)W zw+Qu_>%p*S>17K!u(;M74p6Hac=l#cO%eZ}|EFLHn1mXsbkwTvwIO}2mcnp$AH3-L zgL4$W3`;RXjg<0WaSSGuX@cj`1Lb*rd3F;Ra>IIQI8;L?yi+~Q{Rs*;hhZN2Wn`c2 z+SY7lp0X2$P9J^E&?3+kVYSYmBChy$IRL?;1*m3H9oQirHIsX+^25aFf~Q^KNQ_41 z1Rd7NP`SLmps%tDukestx7JHr0Y5{&)L+R$N95S|@A9mUl4l=`Ek!1?rqmI#iuCFl z?SxsADYuMugpb{8-QlKeVHWXPjUN`#4)C!#{?3PuGkc*eEAr62i+)D4-#zaijwM6WUedqodqNaWxhnng&0qifsVXhQ=cC`u7UWqur#oq&-IpT*8*|`hJjW7HSf)^gPpuwxNB#>KC7M@W^@ZqN zLGNL8a%QxsE$LPb@pTg=9M^M0d0I&63nZ|^S}2;1muNv7e>Hk7)|jvPpx;$*Ra;zJ z)ySD)G}^@E8+Mg9EaVv!R3?AA){cn2wtBUB940CB&LD}Gqw z-KRdMhqhHVpN4|mhbnPoc>h*W>}yRON}#B$gj83S9u+$wk$L|$4gAU?S_UImy>CG0 zW_*?zGTYz-ty9i>HA6jm3{!yNU)Y(oz@5e6O757TA#g;wXUNL-n?>;%d-kfrCL^Yy zca+CEOZt&%PQXkMNtD^2*g_+Ldg9rmJkbT}`ff(E1MFZ=-VFdX%^669b7A1~`F!0J z<3Ye*-2{5N=I8Tdx^{8%1u47%HjL{-{^y*w9#_d|Oksbu--Q$Y$@SdD?izarrmUO> zD^8>@&OIxQWEJH`*RyI;KuZ4bJ|Lv+FtzWZhRB;vykfuyC1 z;jLkRD!CK0HibMIR|rgOWBmmvXo&XaG46tp!>|ZN2Q_^zq)Mwq(AGCfS{8#mYcp;t zB)*KtFR8!P+PX(Yx0~R-)^pkw#2^x71>GfP86&;4E5Ya3$q2LaWZK7wg20wqc=Yi_AP^j)?( zC!pw+Y*iCBx8^-(|2iVW6%@dQ(CHtYE8W(QVKS{hy!o`A;hkzSKF zq7g!?*7P1G(p-C^`q)663G!`!2Xm)#&&C<0q(edayH~nCM(tqu5}U>qEFY_L+D5&@ zJ~=-kr|B0K4q5eeMv}w8i6Czs01`#5LPf5REokRPHT<2dr6bLSrxDAI5*1K(pZ>?N zT$$+y@RSVNx_o{ksS*VFGGed12bar2TsehX(etM^`^-s3&zyYiSY}; z{{V7pt_P#bf8|pR8!-xgBR1sdrW{p>qF>=(c=?X2aeI+j#MV}hwt z+#lP-zIx_Ad!o95<;3jEA&QWm&AnjLPk}lHAfl!xs()jPwqD$G2|Fd@tTCrYqK>-~ zfLS_z4Dd+W2QVFy@^!yM7z7KQm5_2CdLkr!CDY+?yS?`Ko-;A(HeS{q{<8?h@*QCR z27Do~kmby%j+0JRd5qd#hfgY90V&oel|1?OI0IeScg2@bULV^QoSCXcGutwdJC^F)g1r5 zf>;BW@&H7(HdVz6F5EGGq`jLxC^?59)xuUijce!Zh*at4dfkl0yQQgyZMYrCh~%82 zKh{0y??r*OQdLA8#u^+t2YYh>mafkq4%leQA8b9?iw?k0yB<_OYccg>s}OOGtCtD3 zm)4gVzOq;DIepg=;MyNG{l1Sz8m|3Cu>F3LIi2puM^w`26C3u%VhDIPX1#Z1cy8=! zS?tuKUWKc1CJvgzA~PiXpvX<^acV)}?y90n>XL`EFwLmq`5C3XY;k4M!WbtY+Bt7? zmhgXh`iuCy2kj6S6k%ir_Tc=WyL2a-udvZ>`QNoKm~!-Op;K@QJ{&(Mw_;86uHV3+ z>Pf%>KNTpu$BnLeCS2nc|6yfcO`a2RNVn!ClzqFnjdK>HWJ;cGy4qwhPJNp)uRM7- zN@CUmJ}pOy*_mW=32)f=EDd0IapF85hOc~)fi{qUS{qyQaHe7n7+K#DarHeni`Gn3 zsct4tS1=Jwi1VhsXZ{O0j5ZA zBy;P+*Yvkf{>!iz)a8tB#AatHnZXBdVy8<~W@*5Or z?qGOU7E%IN?!+O#+5s-0QMviD4zp+DE^K>=ZnrP+X203mgm(6S@s!ws%o#;^`u|-U zEb5eV!;Zopwx=h;qSBoAFi$nvH&hz8HVtHV=a9Q+F43={?;!~?(+MW$;_#6~f9l_T z1epgPc%Rhvk59i)2HG!;;BEKtGtNI`6r?KS%UZCJ(L62SV9TbcUBH9PuSBp)_}i&D zd(E(U;1${qH~haR*-NgPs-LM1T1GjWSy7)AM3zQusZP}u4RaxgA)$X#*Bcl1sM4Ra zwH!~x!5T5q$+VUaYb`e2f`HEgPowsCO8%3ljt;u~?U$=d(5<5!J^UY&@E%pgocd$L ziu-zpqgb!uBc<2bF=^mzNn;I_GtLMp(WQdzRzs61TMl(BKya0Glo$c0#M5cL*Rm4t zZVmp~CO$@w`yVcApu3^1ab1$b{~i*Xl^@?b5`PXe6rgxw`_dJ}qa$Y`L4GPY>gry) zbH_-8RzaOVF-@7`s z3_MGZy3Uvz1ABN&3=p*arAJ}MJyd4ILVyGMt;$|8aTx{bH=Rlrd$I58pNa-S*G zzun?QmyACAF0x8%S>skPG4IOc`vSM!dEc`Q1ZrJtS8cZV+{0@Wj0=(>?5EKy9tvh9 zb#BT*EDTm=47g9FBAbS9Adm3vb5L3&+{li_XjeohiTTpo)boZgQ)K4kdhv_%{p z4eJ*~(@uY*CcVLucAhIyXDUpVQtE1;#NSZVQ7>1J(&kQB z`;w>ScpFHoX+9}qrx}gWBxuI)f`32n2yW1&ymS(%mY$4<%=jSbSFeb3r;syGQ9d{l zb1l&z)14-<0GR9U>^kQlORUQ4!7PEp_ML|1rx*FNIBrFG@5FVV{~jy<$5>BD2pgD} zxnw@C+dZqWGPoi7WVpmhvm1f_icUlk0R@!lXfSN`OF06 zQlFeq5};-z^24!KOwl?WzEpC!BpN2fbzzYe#*>dC(sbP037K}J-qcqS{ZtCGQrNX> z7&UOIlf-K7O7wB|=}amnkfp##)MDWuJkhg>^sq8*3OHP2#R}6YQg85uePgT$elQ+s zO;byPLpPH^hDUoRPiZ77$sLD_IsM?RQNC9y>=8VoLhuotmf6;HdtoNR6r)UpZdFdQ z5O2iVk!`3thfCtll=QPnLHaRu33w|cOIjZcCVkiG@%?v78>|Lp-yNI%VbgYAU^#*% zN}EOs^;&Ae1;BJ;A6QAksE4|zx`01;;%FyLholOtm*P{7pC;$W$fOdi-SN}0znSz< z#L29AmtA}fcmAUjA0RlM4&SDv@8FeHQl_N}W=3?-#5IS?F;;UWqJmo2=!Vtqtt-|S ztZ`^#-bTD@(y_ZH3v;ata^^s2%0{%_LdSOqGX6{w$wGIS9wuI4+2cW#hUYVcX%r9m zAhX}8{#A-eFh9qW>i$ub#UtXEbb@D{%7<`3*9=T5o<^2)Fh6EQtf=L0Z(~>al`IeA zN09<;kEb5B!$=O^mAQJwUfg&|yH#b4PB8misdEV|6h|X})_F9tkuT435mAh{bsq2; z4j9ya1~%|dj>pgcle=3xog7escIw`pHfZ4H4j$M>?8-t5&l&W)N}4-RlBjE=Ui*s& zccNK1m1f}~Yp*GL<)#KXLZCB+kmurSO`ryFfaZ9aGtS?l)o&OcOw016KHg98uJJl& zT;4DCh$-oN`=l(W6SYHSJ2Xx-6*{cZO}7xf>Es9@>M$L&vK(a#&f)sh_@i1xv+M#u zmGlIk;AXXnF%}oks%`)~l^I<1drali4ZAzMkaf7S51iL55HW<(3Ehn=Y z18g04{=I=?uKpO-E3N-S`bG3j>C*xt+`uxgZkzDzM;S5LOH2<})_I@4-dK1+1w6kt z1oXZSf$Tk*iIdWC!x5m5wWWa>se0N%H8I)+!)^O98CJZ$fp%lEY7P%GqW@EfDNWE2 z-EJVP3Yrk?Tzu4TLwXH<5zi#T0s^K;G}+vkvT+ehe1x+`VRTC-Rh_J4O=thB)>POD zi(xh%@gOES!Syl47pN90v4bWXA0KnOI(Z~?BzIV zq)581r;Lli7x=XFIJFomdu%X$~~LH{0sXQHTW66{Lu_ zZ7PKrbhr7J^Cd>lLq*Smx~&qMmnDsn-9Im!!^5ENbz zWe>iaE^He=6g(1&nvlj$3LZxSv<<^QnpBPN8|a?bYfI1MG>B!<7f&mWGE*8oTe*OSEb z>L8A<9LhI~J}CG<-<@eLa2_i=-21vZAc4p1C=*!#>?acT$P5N!J{0w(kPvL<$k+Vf zwXCA+f$RXWaJ4H8ss0421K=Qy2$hgAVVls^U}7Agu&IzhWrhY~IqPV-^9*?uMN+@#R#T4U<9aYM+MgmP4zA=!@M{lqdR^Hc2fv9&-X zpTs}|-#+q?R^6jZ-3Dse0eX@5eMIVjohwugfN%Uq4jJQKO`}4s`iK2tTR_PX(E;P=C9z5zE7Ps+)|`*uCPhr$XtDc5VVIG z1S0kc8n)o7Y{3mGHOeb6g7=mUT5By4g-t#9PTz4tSoJc&`eU&p(Oy!(DV_i-Q_rc- z;NSKg@6!HK{QF8;<7Q6)W3E3v7_$x|Us5_t9zja>MVb3}5Sto}O~!g6bpumcJVwEJ6q$z2Yv7Cx%R0kzqAb$NVqvjye0Icn}y z6k=l=WlL>7P7_vf3X&=vDc#jI#e0Q*xR^{X9 zISKMmxO6!xcb@34(hUmkmpzTK9H_eH{;gyTD@9vyyDaDi>Xrx#*DlMI{!rd%Gd1}ov*LIK1ho48 z26nyKIz-+Pb%Z1;#}iD@))#V`$2xknwg1%XI|9L@-ySwbTdLyB&`gt^p$khS!9gwY z5B$<}4JrtyYuYLPgg%OUVcDNkA>t}trAJLs3$qtk8Rt;M%o`>{j6T=#>@I?veuy>@ zw?ne>aY|wn_n<R8o6$dIwlo-R0CVv>}}R<26u{S zC*q{t0JoyEfUP=_sB{}mu%86mf~xAeGU!!Y$|B==hp=Vfiok5l4eL_KZT4&n^hI&b zWwr1L-s~*mrG)M;cANkpt4lAu&PhChE}8<4Ac{EaVO`Aa$1ldocL15h;;S&t`;_HG$7w*+I#jyCu@)6gQG!a^~1- z4XIGw+GaHLy>A1p=k;DeD1vwr8HDj(L$?_nBV>H=tsQY#X-|S)(V)hrM2k%_ zK7PenFI5mvv5r_@Wp0h2+hW5lyqUAIh8}j>+(IJ7WV@5&5ZpR; z;_>$V!Vq6INzY0{Ty{q&pXv{}gHkH#*Dq$0$C;Be9h8Y%_DrI0Kwovv7^eGWq(K}0 z5QmfmaMjaq6{$Ois9*toISGNS9OPw-2GqkG)|01D#v|tFrMQp5$QIg6L@y7%zM)X68P>T}t7WGOD1vq~RsqY9c-+Bb4E=nh)A5NB2CCGEE9==LaQ) zjn*EKnKg~=oq6R@zK8TZf6iqS_G5bH-d4u3%wW+rr>?I05wRUj!1gOv`{D&<6skF* z+&6NUcNM7JH`KgBV9@Tz%%EQRpafa$vW4@(+|AYhzx>=;SHIuW@F;XxSA&sv+}zt7 zNv;ECA?gBX{KGR&6GPQWs1hzh4g?Wq$U&mwAek;9@{+G``9}lD?)r#>;X6 z#zou}k@IoR9wlcDrS$h%0|QT)&!ohTstBnY(fe!Gq$i)f3mW5ltwKv zLS9eE|2p$SNE;h45eGfsd2$8kKy>r&c}NOOv=QdI*|@y)P!;FduR1!PJy8~HS~1Aq z?~qEa{<4I)DT$!7x|ef`tH+V=t4x0?XAG94zL_aMhV?B61cD8|jA3{0A8haFd;cRF zP#Ztu`lhc2q=F^`rm=5pQPw@+C5kfs28EOy8)OJdgT$44+I8l@7~@v|%2{Yy`jAhM zu)0}F#KD$M1szh#)7YM&6oOKeNXvd}NT6Q+g!Fee-<(QxuIhe4m`V0Kp+SDWKpr@R zH_lfYaD7LTX|nKfHIbsNgdb<72!()j6Iy3|R%ND8B!SVac5`(uI_$?w9L;E-sWqx| zg!I{a#*fS*H@inOIx}b_>5VM{FtG} za^A;-PX;mt0^nqMD+?r}K9XoumNffP*G>GN7(;6$YE)=dF24#xe?H1Re9;B%a3#~L zP9|4WCm3$cdGaP)pDvrX)>$(Fxo6Wrxp<RL( zLU(h^BNJ_pD?gNsg_F3f4$0>_6#bK##X;Ypx%uu&(~j3CIg>SIA}Odud7EcckUX)$Or5~^#9`|z3<>m3Y@XpLD(BtBL`RcpIqbmOe3Lol;EI}$eBLF|m z4ggHOY$&eXMS5@@1fjuNJnpe$#x8zG5B>liDRxRU^aCC zL7dIb%~Mtq@yYK7w$%Ukm=60!`D*5XiwzLuJX6VQXWARA)npk!Net*J;~u)ZuJ(i58Lx=GJB2;0;-Y zmrh_F4+8c{`vushIq2H`Xq@q04k)csqJGpyT?P0ktTVf1BJXhh9 z+qsLMwg}9R1=yBx8PZB5m_p^MD(`N#KE4i5epBR;_KKo6hAH(mlU6a zc7z*LB}872mNUh}F7ZPfc3abu($DdNn^)|1DbM<-oMM#qtQv4TNvJ_;F)KjWN&6jT z8sYs_K!3Ek+)|oABR}d+7dv{I3L%j!TxIY|jwIkdihT6PkFI~yt+s(PBO%a^JdJBx zGJ+?Um%@epIZ0a;7T8nsGCymI9lnyMGxNDlN)PRc>VnJwcyaIA(#Vi-Kr97`8Lg-? za1~dR$MYWL@!{ukbD`@L!J#4f@+Ob~7tP91#;nA6IyV{~p_#e);f^GMcY*KF95R9Z z9InB$uvH;#g`S2*jPmF~qG42mwwfH?<+B(|l%|U`h-*Og#P^rzEQ8e)+Orm56+ob9 zQoPhYOE?w(w4&H^LO~o;XDFL2HRjt`uu@BK)fG1Y59Q@UsmWuy1js)oL9CCbxu&$C zvU|-jeU$p2wLNfnW@4cX$W>+{W7Vp`Bd0Q>r4LY0x#Yf^!>MJAwB0=;pkgRoUrOyc zOxEBh?NIcmjjW-OLE4FnG9s7{^^y2U^!%{p4`gp@k+Z`Hc*ZWbX`c3%OuLFS?bl=_S&cXWcO zwQI66l}UNbT{xRo&Pna`fP-biY@#2PvxyAS{YuZ_hBpy!pV(_gIbT7^u=$~X`IGrQ zbe8Z}Pp$N9=(zKHW;T|~JDrN&HWz1!$oDfg4*DK=T>GynwJ9b&S7|(?7DhJr<{@^t z6QZu~5m;w$02tC%k`H{`#CvJ?8(@{4;zYOY@y=rgtBQ;{EWPuGKPaOiC%nl(rmR72 zny0jD5n6RG$i=_Jqy7<@JY2$;NGLO|x~>Ph#NEi$8`tFxo0RllWH<~gWpk6}jL94$ zY@&qO8Kl2zuiMfaLFJ~fU5Lm-GK82}St%CAt#D~VZ089bf(aRY4#BQNTWSH0k-0Du zl1H&Zvgl2kg-CJvant9&4-*W&doJPRB0c1#7LjOQ?w~M>X|G{hdT;W0F{mD&!ueV| z+N}-{EQ*icp^d!$q=a3N!UJ;`RrR?dfX@hAArM&Yx2MmQZ(C=yuOe*^`EpvhHJ9;- zOqYxey|6kXlvP4tm;GMq=ZR63^c{#@GO0yde`oWK*cim zNdM!)-17w$qmE~f!DrzCgO<}#_Ueo`NOjcH-rpP03Zw4ssphKmt8oop%mI*WC8RgG z_SQZu?=bI;->^gRQaHBZ|F|^kXNfEQ)a`>IUz6@sj2~nVAqM;VOt#k;C5vnr+-&hT zeu@t~s83S4AT2KkIR`GD!X}Yl{6{FZJL+x13%I|}QRG|l7Gjq3TcLzpL>(tP@3Y%N zP(7WBiP%~utPa!UkZ0_$k*(%x&u60#*$~MdHCyyuD ztLld+wx6$6=kF9|8V~CP$`-GsY{kxXilalD*+gjwLQ@=V=eez)J8J>HQ+c(qANwch zg|KwZXg!oC(_&&qlMRbOr9j!=A=Gm4aiv*4MV6%k-g$+LY054qST^M1evyW*85`0S zy@}Nf(Q#S0ol#4}j##b+M;uQKo-RSP#=9ZN(uqHhd}Z}Bgf(UfZ*yFNH9lvDXPXD2 z5zI$RtZ3z(?-XV+l|6-r)5nEbtO;ihMy7CBN?tW?ibKmhv?{*NGh4r;pL9%vZ2n$?T%Q#mKA-lw8nUhv?@#&$pYyjILoc?TEW_R|amcc0j}Dn;pU;I8ztgU4;KQY!7l z($QQwK*tR_IJ>Si4K#~NB}WmtAvuXAb%8A2$j;WNLHA<>kF7Mtz|VHV{@sx&IpMeQ zS(i(<$M1H;8-n!SwIr=5#h*xwGXK_3>h5YlDAw$jARFV&cu{vYlMmCAhb11iz=yMv zXF0dRAKlGbKSY?P%`dq(TT0kQK!kTfTb8zFrfIrh3R+V$|6U}CH%8xwEtBv`s4RgZWZuc~m5zyJ` z)25v}SY9lGo$%g|4p+V8RPa>Q*K*_hv~4d0n==4Ld=@|b~#G2Prpx9P93r*Yfmmt<_{VN zY%!u*2oHmjzjzq8)Vr(yl1-3p|E-^yiInMgFQ1uC)7@Y04<|VTQh`do1Tx&zMhj_u z6+74OT|Yg>G>;`A;q9dAClC7YE^rR=0{3Xjo?Yd(FeT`e1t- zP!-$(1usuUu35{pVFFKD$cC}7yy5Q43yowCVb~NE)0nSJKj#pkqfTpBgKEM1Q!AFnJ&(y_hd(e!%`iXkYPpDgznWBZ1N13YTHLIHkO7Z@PRbW_R z8pJ9LpkK@+@VC3nx88+wM4#C~Odxd?1^7L{06s%P0br(#sxhE*V>BOvYq$Ho*1p;U=O=b5k zkOG^n1~=MR1p(_v2wX@4NeC^d6;u*IKqq_zW!vkK@usTAs=eLv3@2ju|{L_W&v78*S`M!WNH1+2IiLMU1 zS;QDoQC<}o7o}SOd5E)-@!M90cyHPuM~IEIp>XFiN;s)M>I16lzBza!@#7!|-&a^4&e^n@)hjPQxn?+ORW=FIx zAoua^D+lBH;^lfqvI5wjB`s{CQwY)c#^48`<#rlU!c*Sgb%_AaX)Y`^+8e!XJWS8^<|~*f}-l%(o8*?^dTX6g43A3EYNbY z2-<(5oV|UOe4TMMTOpSRE=>6?;S3U~*8DmFx?@Wc-GQt zwI}wWq`;ze^un6Dk;%cK&PQ$gy0qY!;On8*`z(C)AA7Pv^dZF?8{is%2^(Mj%d2P| z4tVtjnjzb^dGE^*Swu-#J`AESvcx)%T;BE$K?M!kw7K}o{Ufwirs9gflv#%zMDYgA zNLg;%c$wpvgtSt>ujxD$YsYA6jS%gD`|zfRWs}6REVPnh@E+3;`xtz$;sn!|VG|+6?@^!IJrs$S$@F7Y^|q35*k0vw~0;=pu8_ z2W(Mikbn{)QrqCxHhfP4Noiv(+7AJFiy;EPFlt2013>_8x$0I0sPg`gS~p4~pHx4V z_C;Bs>HfS!#IpJ38n&TS_vfI_`<@jMWQ zT+H5-k$Y7B5!A}ag^Mp>sYl^?SA$w#)C9Tw*O3mJ3uEHb#0F4!C!eK~d;J{%9!X2` z>`$pbFYRItzK0eqJp7;8EkYaG@$#6UU2B8sklRk?JP{x#?oHtMwm%|v3587+vtnK? zIAn(WkzQhxr3!OBfuhG)i&$|9C<}=^o{s96gs=t0wh|$B6sV*WCNAW^b6mDVPLi6U z)j6QTNW(o+Dw7q&-V_!kf3M1lfNO!XBPg=QN@B8z- z#le3!56iyVOiz+N*Rk^LgUMA8YHUjqAJIY!Ku$zOUL!Y~;;v<xyxAKh#8#fB5qUlH=8E8?($kDxEBRPiZ%wtuPd>18@>DC& z)Z-oZCX9!ytO8>&WkHNPf*}2(d=9m8@%(`WGwziG8UD<#;ExA*$c+wmsC?B)W74?%&tLMjM8HpPUuG}uvFPGQeX{@Uk7DF;x`bfSPz z9>si&xbJ2L+40W4yGb;O;A{dP$$$>+S$8|FVMA=RUnU}l=K`QRzv4MSth#m$wff1^g?PA-Ugid?7R|CxSV%NA=4mOJOAG!G`Qw;A_ zQEdvM&ZKLIr?Ac>T3``Lb44|Jl&)FDDeQV`@el*x4SH+qrT&zH6P~uWcC#8(?q0o` zXvwWWtrOR3ua7%ea`48_@8_2OaWeI(vO*v!%>02`7qxe4wp*4t-3!#VAl0fbv_goEyW z>41->c`tgqYI8Uw5@yWZQ!t?DaizItfcM4cu=Qi*6JT#?9VyHEJE3>61FD8q9XAuc z$bQgAgN*UTsee;QUc?{{L*>mW3O6LM$6??kOll#KREo)EQeTQlmeV3wOG+cWSW;_2 zE0{kA1Bu14ZUboIjIbk_Lay8)JMk+60){Cb6&pCZ=;)B0c5{*LOGvWlwETI8?NxI+ z&0^PwZXPH{OA-O0PJq%N)Q*|=mql}~LdC^up01xV&C_wRikxj}1Tg6zg}=fq9o@D1 zkPL2d4S-zBR7sqEqA;4JWS1tIGMda~Pyg`W-I*~fpJ}XzYBWnRt+UBkB2kXqEvq%~ zO_2(Lp?(*}4O0q%P|wC4_eznEQ^)@MIS$6nFqDIr`iQWeW$ko<1}r{K@YTVDR=Cz}?30s_eTRz3K2ufaE2&+ZAgP5vhj~7< z#Nt<}D0|Hy&EJzspBy!-;7p+sS<@WTi~PL<(b#+10RKM#z&cxC32u^uIgE{=zF*qw zll?i0vY3V*it?EJKl0NkCQ%wZ*FIi5;8!@_cjr!R0i-P@R z*8%OmyAUs5B{8+>a&B9x^kYw;e*}A2of)kI1na1xj6e7F5F0)%S?PmPMC$rHaQ_Lm_%Ukc(;r9hzv+vsOePX5o)N_t2M8Wswc% z3|p5uUrbr2e8Ovk%MiZXuh&t$sV?_ZO(!UbYJa7bR0tMQ)TDs*{k}W+mTBFrto?LB zSSD}blKnkM1mNzO$Nl|XWYAlL?wghLIj4zn(djLsCOFKSf|vzhnbz#_ojVWZmtV!K zjijp1%_G(?S~kse3)qNfsRb@rT=~fUU*1uAb658=4iCX30(rTo+grLQHrn*tV_zcm zjrf_?og{3ox3po14S=9se@{w&>8Cj@egF*{Jk;hwFu0Cn)pP)=BX!ur}3?mx}@$rtV@J2 zh42s*(a4WoA|8V6V#HMG7@z<_)c2_*`#=PPrIPMFzZPnq-@h4DNL?m31Q}!o&uMd6 zzkZDsU>lC*s1vI?5@{M_jS8Fnbj`o^;*Coo0X<+COrWp1|1?kA`o3=*TG76-(Y$Bp)5v z9_Zi6Qw6EN+$EL#8dpOLZhiO>JF6B9rj5DIohV=y1fnOZlCPRVBj?gPHR@7;9+SVQVP`5g) zl`SFK7;Cz)t5Z0}Qu3l(-_XV=YQD#56aEsl)=jHT@@lXuME`u^VEBrH$si7Wa?Xn8 ze;GghJp}Ubiu0B)9`QV$^ucGMye#U9*nm;u_)u%LdZWV4+i;k9FwEnInjtR5NAvTgp=L?N;RBIQ}~5*nbkQ~|A8^o4A9(3)}>Ml z$v?{kam);C3UKE=^KvQC);kklBU1j?%2XG8i~ZOACy$)eIbmQ#4UTL|LtvdOj&WCn zb=FbGNoGkfMMKIydynCcqA&o|_;K+x6mkrL8=x|UJiqcqG-CDlMKh<31xJ*$dM=or zucVYCP+#O4QXnEtc9nne>YhX87}Dn8b0%u)-mVvFMc!{W z{)>rT0yRGQVQYc=yYrSBhAhRq7WKw1cw;GdT6`iMZ>0GHNT)IeM&oqVFnfF#RyYSH zBhlR9Q{2^+@;orE7|zp;aj;2N04cBj{Q2t$sh~`F{h=koJ+hX;HE`W7q!uYp{bz_V zt;D~V86pH|m`eQPm`?Y3h}2O$jYWZB$taCjChT=rHXRqbZ{2C|gLZ{Trm*5-ju zrWyj^D;tyjORjT!$}rLX<8_WRF3x8EOARgjeR*hCV)q+tAODTt{y`e3d*P#R!}$XQ z9>~tyAgTJ2Z2A{w?d2gcS0tUZu~Q1XD6wc3juW&`hkih(@*n%`T3qjoxJek- zL*IA#LYGSxoW0`z+T3#evz5SD>O7SDKrXFY+-pz zOW@MW_N34GsFXmq$$=Pr7(3wS=0~GUyDH1sWL&Ke_Lsdp3n%}|{&{rQ@|uMd3)=X5 zA(D&2i@S0Q10IePX>{uKNRYWL)Y+;XMfl1V2Iza&+}xnVIPv+uZ!|u`hqEYur6Q4f z@z)Ili*yEOGf)=K{;K;w@Lf1QlY>If_q3<1FjVARBjF=SR2;&$qtFakg-8+brq}Ek zQE=&5r1hm^#3wL0X(Y)W6_x3^lq301WX4@1?Z4YNg|+J1l9=y+U<_Iu5snF)xBvC;l)g_ z4kroXV!Mv#vBfxxrex~ySQg%?mPLQHOnu4xrI3BDjUWWOT{6xLD14EX{s$h+NI0T7 zCPigAs`wK_QG+qZd~`CM04uI75&{k5GD*Bd%_rh<80&p7JU$r#;BATPy$AFL-sU1{xgojQFjpd_ZQmEX3#mtnfB zrXi`T?Qpu;b5)66PW=gFJjTaLPvN0e5L6mQJlpWf*&9@h5EYP80O%cuwqfOS)~|Xcx7YY;1jmrc>O&DWPOgu%H($!g09o@;y=RO zw@VxuwicD>l!PDU-vyVHv{OTb2|zp`a4T(0Ih1e7?`DX2Hdw5e?&}4D%D6a*^e7qp zt%?B3m)gB_EVqjaLf6*L?bHtI)+ZJ#F>KB0P(hc>2fLN`5m(0DVimT-!d54qpawRY zS$4F-xhz$na(lbi-&06v38MYt^K=?%i6zw8W3zK&=!xVr70cCDv%1{xMf}(GvyYk2 zMCIWRfeDX6#0f4C%Om8#!W$_HpV)yaSQjAOS&q)wT36u{>QdBOR!q3LVF`~KZb_@{ znIZ{~TVo_2d2mV241eBq0XinN0 z{-F)p_AAd>rgeP`B)FqCfo{Sm_jAL~^AUa+ZrrzTn33XL2(yo(33oi`n$y?+4ObS3 zyeBw9P`djcf$HhF8D|mzHTedxfePBAND^w#Py{(Hy!v-YxWr`WXPbaq*cIzM3D&fG z`TFjL)0$>TvjFC*xbS>4v554PE12uQ&B?%>uS6dBS$Kqm^u+3%8l6)GnM#O3Yk;qa zWA(kA;K&sz`WZ=tafWjoQ^$tlKBwu%e#8qZGI*dJ1ur~j9d zH<-xz@OPye4q&s|LPE_|^BG~XN^J+Nh{3|a^u;#5anuuOL)bpR-**5_PIMe@3Ia*r z{e4uwouJGGjiE~VE_1SA9Ew7FuDiyD%+-^U*tk-9dvG(iS z80G2bKb*jBC}aQIcs2PFQqcj8`&nILWPH3?;s}p(`VK~{yYmQvwTbQp@HrQ4R)|~T z=FkZ2e!5`5fk!-#BCdnw^3_eEoREEnHsg4MBL7~?gb<881h(@J$>CK|dvR-`kE1z+ zzBXn{mR7z`io>Jsqj6*4hgPi2B;O<*A7;gwGBFrjlqP`x9ZA%}2L%-}oHms${^2CT zyO!h7lQZd1~6-BT_>?LmdJw7%8m)$>M=0dM4C)x&B zEitv!uvfXZAs+sHu)e^TlF_^yTgz2XQ?K2_p%-?}Y4{M97%9#36k+f2xAf+;dOM?i8c1CQZdIAQ8$WbmN zR*@E%xQHQ!sJ;c3E|E3U=>m`oV+Hjn%*6 zr-cu2K#rT;s^k-JY#Rx`)eZP%ECm9r)rG~SVun0ZVAPB6GCb&1Fw8P#lNuFVAHu%k zHt(mnlAwIJ6=0SELz0ExH2!D4CuIa3x#NBU)8i@7=%aWO&gPQG&uDabL zhHB(&J0Ai`C&6h%hZI~Pj*lBYmLqU@tzcmw)i<=JrCNRJpz>NS8i`) z$x&?WF)XBy?#Z$zOw8KUba6Zh5+{F6=ojEKhgnoa?Sk^S!y~zq(mc{3xkAYv9EI%7 z>pLa7S?N0Bc%=yUu%_1SR1K(0!()x)Xk_Qm9(!=8J00YZ`2t@&&|96wW|+0lxmnQj zh~b}S4lNBF4S>Rx^id`E0!pd?G>B#!JJ&~_j*09w49bTNkcsmxl*sc^7SvwCTkex{ za8lT_7e<&3ijIwn>5t5BV*ih_{|xmJc`8&giY%3gU%Ont;p#DGUD5R znU}g`TNPm(&Qj4nhsvuIei=hgBY6Fsa7^yRC#SGa9ptHsi=+u}JzA z&F4-cogsoYqBq4azgdp(&ppng+O`CjS)3U~`TJmwMEtk&+7Z`mI!A%Oc7AAaq8&Av z<^3$Mg?fBhNtkH9t9s}dl-Xem3+iC?e*zmB7@W_Pn=w@UjRE^F4Q+3Kz>k3Q-7#OR z_Y#p>_NTSFky^@{$Nz$e!=7Q>!~+0@uM47Yw{hDNKIVD|`$6R}CYw|bze$Ze^gDy4 zvla(tYHcy@8Q6izeXrMR<3qV|gaSD19HdJvCX0wJj_BkTr~5L=rAvR9!52Cac*NxL zv#oPsQCNl3jk-tDN>4$oqj>L3M}zLIFydohl9`@_NC#41eK=_g1EzCrdsZAuz|XdO zZON*56xZIqlfxh-FZc^vR>)#1=Ok8k5N%hMC&|J`aWH@cGzbbAf_LZSmAum@cL$^( z1Kl1}_P0wjT05)y>Pmc-U$+e8e$ClG0m)XD8P;HBKiMO3y>jm#=tBQUz z>IRJ>2K{U?y8D`000<|lsFEG;w{B7^^Wq-9$u^%7CXtZxp-08R%oD=-B3VRKal6I2 z4ORPb%`Oqz508Qd=|t6z0M`zi-lOw{c0N%qmwg&|FwV1XWX|k&BgsaX zs!XadahwHEpVh(_A@n{RIxSmDBo1{U|A8haH-zUc zNgM!@W!N)(fU6Wb+Ri|=0lGh+8JL~ABmgLEB0*>oG#&j+n5X{YCE3DfEWe`BeoEI zVe_u(0%_o4vqp;i=cK&r*K3iLUP_+Our>&3|=| z*cr=ctp2i}iR|z~x~;a+KGop<(kM;JUla`lL=YY?zvNRyu8m5G-lYUxYv@rj&9>Qz zFsP2+NPe8`G2l^i)X6+L0!4BS)CL|%sXrwK>J^LLg4wP& z45$sZYMP0Fa}PPK=htM$80rEQ9o+*f&>|o@$?x8HAol))nZ2eQv=2nZ1$a!--Knob zDOq?sVef>_Ig#X*pN*$t$qTYip)iKpnpD_QKqRv};5?msa<{Xe-$GT_&Nz?~hB=u7 z9Y@fYPkss|>k{?~K~-reNRHNr^Sr0mIZ&AFQnPmy8Oymidz6_1275*2kYxn<(=u)F zr6O#Gj~a_m-4+I~ym3@9q(D3Xr?f$^e8qBVivnVFs_S%lyVKb(#|M7z4yO#fL!ew1 z_~jr~XK~*#)6^@?&;E-mv(msdF)p_=1s6CEDGB~q-<(uIY_MCG`*lpskBKW zm?QTNHZML^BrUliv>9SuHnd<+4i!1qWS5Z`@O0@H*5q}^9n7zZUL(GZzJf*>9>{1< ztK&Y8Pd;iu9d#EQ0l6Q^)n0x88hj|$?AsOb#*RH#Ygw-e5!Y>Qh{04)BE5Q%ZEt?Kj7t>T32b5~0h=&(02$;EM?)0)t zY&*@ft~i;JrBT8B2g_HI7*~Wwl_I~{8yMoDkfj8DQ5a44v_ZCt%!1_)rTwH7&Y^do znHsfP1xhEp#A&yQT;&`#D)H23p~#mwDX1e$^Ek)2q;Ka?`ldLOo?Ina9Y%#oq|;FB zlsv>-=`E|0J}bkk0UB?m$GUDv&nT~obl-b;4j`k|BrKNftyxynfg4b|9lhxw0cy%6z4+XK`$d%9w8 zq_x^+qDf1=Dc0DR){tRq8|U5YT8LZA%yH7~I`F=2o;j3v|T^{gxmUf=@SoP-SEfWtpx2>vjvP zZoo2W)ql~+Z=wP~%6<`olm8sw#OcZell^y-Wkg4s9?0me)+VfILulo}s#_)9mKnxn5;~g`=K)bL5L*ndvR_5^yY3^0pNI z##zsIcspYnC zo3dp9X}3xB{12K}xF@eQ*p23Juxey%Tt*}j$kW*k!K>B2z4%?3xxz$WlZ z4%5ZN`&3QChz5iY=xlG2fv^nc679&iyQXo4iC+iSVNx374gu2hi9eeYVJ1W+c#Cdf zMN;r9);xf37zcG`SDx8V_dqlZA0^vr)oo-+`r@K}YFg7m{OhYv6#FHS7MM+2@KYI4 zMU^8;z(|?mKSFqeh7m*$OBsLme;5#f`Px5gH`DgxaDh&}cATQzrRcmmivM;~y)Oex z{OL0s%sZ+dPyk$HMae)p2OzWABmqcvpNBGrX0r8=TCde5_eiXdfl94y$?xEs^iH-l zRlDQt@I8kS3>gdY3F(~R?+FhVs@-e=1cXwRfW#5clvTM@^4Y#t#a@v1Zw)2!WV&QR zKdlM9g|GDhGjn#~%U|*swvhF}boq8dWolf&ngY@wI@yAZ4ythXimeCaVF|^Lt9J=r zTR(0~&k^4rHcX^BehTAgc5R9~^De?0vlh)Dfo!SKf%4asdtRPImh~|F0D}B28~2p} zPkD(OhD?)Ll#+}$yjfJfF}tKBNyup&Y4LwT?p6yw-@t!q)|KE-N-5}Y=`f)&z|SWO za*=6bZ83hZI`noWW;>2-mDoM$^|AXEz}Lu_3N3!*iDJ`& zW^IGo2VLW*VXQ9#P?bEOE(AF0Z;zq_IY`{8rY@TSCvx^qD&ahkW+YwRH4&HiwSBEW zaCF6T0u=0IOdw-IFxBLM>#UIc1|p1 zHf7jd4qQ7*tp`Gyap>=|3Oq~d`D>~FNy;><@F}sQ^ueZN3dRPK8Szs{P5v}L3amqv z-oo3p-!_&U;{r6L_KLFj{m5hy*fi}O&KuIgb?Uu_a3Em1>n;%@&sZ~vu*Ph}9LiU! zTpj51wCuhDUn_XC4aA4Vqc3@ZeI`NurYlwUaFuouj7PaiSeg}BM?H;LmY(in_r8kK z*s;o(5)Y@bIKbv(dAw}p8o#g34P9VF*giyhrwiI^f!p*bMkim9Q7tN?_iJWW*)TJ) z$x$Bi!a?`;`7!MHV$%I81#l!!q$+YA|4D?_)Nau#;5xS$P1nn}#E8K6FD3pJ(8ok! z(@GF|G&WW$I*8WtgyMdIu$l-2^6?FErXzm#cWBAiPIukwg-!*wxU2S z0s2(~57$!Fd|1Z$ycc?X_A%>ikn$0B;wwJr_CQB>ck|cs{}{wx2}YeAzDI794tY~x zPD1p(&;VERgwnZr1i|t7R@7bB3-!~I199+m=$+ZiW@?s z@(;AhNwR??a9)>^UAtK$ds)0)mYZ-j&Kar_jTGT-J&c&b{ew?C?FcfF+rnDhr$$uj z@1(=s*rUYb{6aVX5JmW|KgN5I8LlQ!CB(=BG=9|MeXbsqcQ_pZ zf+-jNPF%_2nl4V^3sW3g(V=;LNlCH~qxG_!eF|9JbG3a5jtwS;?u=_4DA+BuO&P(h zgUP#s%qJCqL45`0qUaCIsv*(Z{t)*$=1L_SdS6D?P1Q}m9rGN`5*dfb;0D*MoU870_8|FIb;&>oZbLO!Fd^#tibQ6 zo!ou^)>MNj*5S|9OZlaygMeiFd2J+$dY@h9^LCf2?yW5`_V(lb*PNdwKy!pH!NN8*A@{| zmy2%=k0>3T!uBqg75F3@&?mgwR%$SVs1kGxUIv|7Tx@aSNeDqcaRD5VuOY?A_1=y_ zRe6sV&nc zOC(Vu@-S%B|qzatn6xL2a&l=q#ty5Br*G zJlLntcYG%FyDmW*t~@_3lD3nL%OlXTbk>$4d>OI8z}MMFwN2Atp`E8y|sge@n1b(=gH+Qs$m-;V1?@)hQe z3<$c9A`ZOH;YUM@>z?h8UnhSo9#%-2S9|kC%qrBqtl+?H#z?7^i9pu979(#^3aFI> zd1$#W_E9deBHL!S0Dh%>Q;-po9y4VDXZ=I~gFAq}r_&J2g&^P3cExZ#0(_PjB_N zW-VG9ullJ|dmG)0v z5JCNZhE~-wF9fwy8;wqXDm5So5!UI7-?le(9_{v~-X5KSv=VT7+uuM*)`|tz%6iHE z;H~$Xmoe_zxFdDquQi`|b@Se+VT_7(S+)Z3Sa5skT;uySf#*hHBnwa9R|3BicZ;>v zUL-uHxJBurV#eIk`OA=7>iHWW?O5RUMLd!=s;2(~{gKG4A07Ku#2&gPo%hliEKe>T z6V>9SQ#|z^{BqU<%A8|{6ZaaS+yaa=$VA6c;%(4z4tO|bgD2O*^emEV0mPqeB6c*k zv~EwyO@^?e@FdMld7u(G1kl#dcJL_mf&m~p5|8#L5wED{L9t%=dF&*u!FPG4yYjYz zWAhtS=qxD6_r=dZRYwO8$Qm5RTVe^oWeJa6J*xGx=4C5-9yo(LA9o<2HJL>i`-U04 z8u#`6aLE}C3{B2{K6+F|a-G*+t|D1w25EQGWh~>A{XXd5WU;zJQJupq9|^)G2Krq{ z&4kwy%#6R3)2JE=xrmn5ei@1wUj4NcUyj`Sm?&l@xqgVw?-BEWb*&E1z*2vb1mRI@ zHAK>+?9oEzuF1|H;T;7b+z+>Gam}aNEq#jsnMVr>c4qE}ia*CrueD(xJWZ>Z#Ugcy zc7ShPCQ0J0M42R`a}d>=0NnHor8i%5@_WuS|JrpWB~{|Ffxn%K(m-WK{^6*}?-DzPwbTfce{F|VE1=>@7b7mU z@!^e|Bzo)4#-XCykf4u0Dg$f2akZ%0Fk;U&64vWhReDa5IW*ti3k6MjW|NaZR?`ZI z7WkvcxR;QAThUG#^n{wguRe>}8K-FVBBqU{1u@nCyQH8!d6&}*mU|PZ#%Sq}sstkA zmXYp9gl6vm7Nv18V9K@|P-)yS_54Rr47?o&ZbEqzp0xZmU)`i&@E&Vf1|YG9Hm#oS zFOP8U0B+;tJ@S%e!=At+Qg zF1c~$&^&g(3BCVRhT#KYc%dTGeZ=^NYQ@h?<5W_3l@$OiH@SNyV|D z4>KaOSykdFs5ex)v3icp_A_8d8tYsMFS9zI#)-i0qIoQAV&1oi(6*z=q&@Roe0PcW ze&5u)39gqiT)}i_|BeyNGb4baJivEfgq#rU?1F*p59&bmnor}!;J^zx;&PNKsR zX=&ns;jO??&XoVZ{SlrH213EG%p^!$(Z*vHj@sF=Zx#dAe8-R4kPBAsb`+REbcC`) zvT-TACA|y?2cQ>*q6-CwM9HJr7gXrIiE}*1_W@WNxd)bT=VA7D6h^&E5AlUO4qhzL zYjl5O3ux6*kEuLPc~Xe);tlvDtSaJ~kbJFA2k$W)JA}fIx_dvG#N3JjRFis64wVnL z*>`_=~Top@oaeyhe9&@SgFvH{82I1If@NRxGFEdv^= zlpO;^r>ezTOSF4;po(VBpNL|;@yuf7-oJ+j8r8J}IZ-uE4@3B$G7af+xFs=Pkq!c4 zNWrt+qsh?gmdQJ0%K&M+hX@}pz%$7hqReeJ>3HVM1vId2I~cbTS6L~+#4;s=c>_u` zY|%l=&+4Z7U3XD0gwI61o&cIVt2~vgD)iVJbnzq`DGzSMsrkw0HU2$*fE%`Z?2Bt_ z!@J`QnDxV@H06L6fS|2g76uL`!t+T%I+C#z)e%<~UL!q-n|sWIN?xD{&<-`uJ`Ro( zmUs9QB?cW*cy839_vFIlM6{Z$zy>8d#LY)aM6X5P9@*u4tRV+nf)e+vq_SU|Cr&cZJG>;QSzrH^{ub zH`hI|#B92SOv#q#+Bf;j^;;&Z4hKz- z$9Ew%)G&he-<4n=mDJQtBy3p(vYY3$0wNZJQu73RLEvJ2_$4OsmsUH;KVwfrPwH^o&&ZfjpZM(jH@I)hu|akIF9_fBR;Ka7!JLkbmfBcHmtG9g}hQLQzO5BK}EH^JZ5Oqfe8$vx}{9?U@26itO+}6E9hh`zt?}M;PeAs#ovO8 z*SDI=sa_MaoJpfdKo&3l8hWZ>vErVzQxkRmrnd{IfKJml5IMBGi@33;qh~VhW6uX4 zK8UK3r4oDMZ=N;LqWVA%uv?iftGao+8jqCJ)l)RY&Ar21BS%&6)#*SotLzHh>?2-E zO;NB9sTAI@!=0@Lj^UsgL4()QQP7+Ytr=}(y5EbXd_N2nz>j~Ib=3$%?Lq1I+Fzsn zfy}x!`n80x{((Ld-b95(e^(}vB?)+QOUAZmaB5i%(S}Dl3iau3gMc+d6)U+zsy?2f zNIE25qMw82rF8O5*myOGDP|XEWCd|`;EAVv5ts6J^KE;r5=fk=CkAA*&{}8i=s4SE z;|1ff+FY~+sgd{H<^=03GtG@i>rj3cINEnTe-w#|%wls45}JQi)>ju0y-03ANKhHR z>j>bcT0X(qE<{@pQ*#Cc>dNsXJPgtkbgp)(lsueBsM%k38sI{WW9qYhEZ945QmGJy zI;FG; zbS35K63%St^?oretH{H78LIBnzo@E`wPp{tBD!X*Cth93330=^G@d@D7}3>WwwH?1 zVN%6VF|W*~inbB6dl6{fz}v#hz?D8L2*&{26%ZEjrXq^?rFslNR=UrU%}iCjxX^|8``n@aD%HB9GjaOHY&+swc)*qLX>2gZ zTbv{|KQg?I%I3Q;BUJbsnaZ3ec~4~8SNZjizacaM6mDsNm6S>AVfuQ9;o6Vn z1w=7$-mB&e1YO`(lhQl!X)h*NaRFO)?QSd;Ho#3M&W}OCh*;el#P#|P>w@u zU3IH?n2uB`E^$UJH?*HK=iirq>kG@1V<4Q#fn;FvA1}~M(9D3>r@$PRp0smxmJ)mA z7j5{-WkVC`(rP+05pqKuxbe;P#*;~~*_^(S8#9RpW-UVU7tRrd`MUuOLfA0O+8$vC z566w`FU~F(KcN={DuiLMMxSv8h=B)$IwX?#=9rmAr%C#mBub+Iz2z1}x~8I+{co$I zdcH}d=~rv<+t4C#oo>zh@2L0E9Hc?E(4E-co8QOd?Es@%*{nbYUfnWunp-=9wf;-*|p0OI8qec)eAtz;dN~*+F zV{)cFT5-J-e?Kkv^2L&t)!HnS~&gbtcby zQKld^l{>0O#=N~O9&cMP$&NKTBuEW5>qUkl`xiV;bJL+(Iex>kXH@Q5A2Nf(p=E#_Vyv_OrQ`D#mC)JL(z6?Fh znln6Ak|-o+RMZ_S389r!Y_q&>KwcXvy^f4btqOgH-ogGyodXC`{7Udz8 zn6}7uehOJY5f04bp|wwcPF+CF{18UQJ4+O6{dSxXsCYIYvvm1|T3t^77%q)g`0F8{ zGBFcOQ#xm>D@R%jzqpb^YFtZGI$a6jn*Y-tr+?Dy6J(!bh@j0nR46B@(7BN;07?N1 z3q+HWjnMxLpWS{{BZ#v~JQUH{+Ub0;MZ)P?J$lY7R2_5jTzYt+Y{z$D#0B_0av-gV z!c_(fGyr@9y!|Cbp5xd}+5ZdBBOQYJTQTsgr4=h%dNiP|q$BtYvu6(S@>&hjm=m9z~ ze+PQt^khNWhSyFvF9~W-yF(*wdq}Hn@-*>AcEAsgt2gIOrzTRDEc#a8r@f0XRA0~& z-I=_qfA`7C@%U(p?!xg3S^aMt&3ElOJfB1>lQy+Jb&St2L>pK0c4-qiw}WX(-fDE9FE!*7a|Cu6!!Gi;nvW#k^E)V1KZ8Kse{WZB*8KR105XaS1}oK1`u# zg*OS~)r>HSETJ3{IwOjR{Vxg2RC=n!#5a&zE^=$&!hQUF^FQ0P8JR{j$p>siD;irL8wOTr z_`J!A{n!A@B-$#;JtVLzoDV&Y_+C>;mg-3y0dLS7SzsLRN+YGxxSZQZT__ahDv&y} zJiQP3AdlLqyw9JLwn$5!ViGK51Hv5W`jY`j1|Gm<6r9}9<=<9+sXQqPRR=(pBU(OL zO@cdnTy%x)i%05?hYK4$)rdsPRFn~nW*2b{yE25a$QCEVb3&=KMU?A8S6qM13ychS zv&uR}k-)4nUr%=gQ%MF4pgDSfQ#4V@S2HE}PM-*5)vQZ8{!=0KnRJBoj6@8DA&v>* zLr}Nwfrz;g-vAqi7}5H zX-0&~?OuE|;wWz3*o9tK(V(|GWv%(j9S2509xH8h8tGTR=DB>cw+C`T2J%DLV}p zNL*1iHI5|R!*MpX3y*8U{if)PJPo`gxEm9qEAkE>DFIC!N%6P~cU%FfB z2}oUlg3*iaEAzpA6N`96ShR!c!viDuzlL}nFU^2o*`MZa9@pIl$NCQ4ly1VNNs zTLhMF)feixeKo~oQezurq^A@1F1P?t#{jr{LijGwWqUFEYVv1hpHEG_p_Pz6IO5{$ zaq_uIE~T>}pO{3Ovri9AsR-{O_XK}pH-EAmtKD~zp_@Ecu86gSJocI#N(YGt#1$t5 zO(w113nvb)5meP_8r)DXAEyI!wBmggF6yu*0qOI==qJ?w!mBrK7tV^Fan`67ml%5^ za~FVwU&n2P#1y7YyTLT99=O^6cg!E`lnRFv;)cIgStcFLknmRUXYReQ)AZ)8io!Zf zZ*)-$E}66FM_#`|`AnKpM-q2=r~PsB7T@#}9CsF?ui$wkK*YP6#uDAC&LwT15<>o%@2R#fUT16jy|y^cYF zcMHp4+w;ah6Bkj(iXSZFN{IfRX>-IQp%KrD!NErm+`ZkU3O|Y=rY}LFOTW#suizn9 zP?HymiEQw{9s)7Q1u}8WHWeCi*=yQX93QaTp0w!3y)mRpLf`fUB1U2=uw13@9sBAR z2^9lLfAn(NhmMB;y*J>62OvfK6UW?GgZnTJYgwdtL`mSw1Gi#pMUoBxY2#l2%hz12 zvGcZ42S(4QY`Piq)LaA}3^SZU%mOGw-Y1%q`2RGTec2N|ejUoVEK4lY?J zyq*!dusWLRNah%@4}y6rK#4OK9eI8J`lA7)e2Jt9M^EsJ)J|AYvD`YFF(@nYA_AuG zm-y;OpZyYz2x$P>hG8jN=u9z1JB6atZV1o!sUfX;bW7Gb+D5K_&kQGYz*N7!?pnS+9QAuO3rw1qyGr*B8Y44w{-I=32?D5DMPPc`eMA@G z@=DNjBZci&*?p7LCcg_*l}1NQi7`px&6hWUPCVsJplTKfp~H^sMwgATb+!rg)eW?Zqh?o|p^ZciVgHEa_c1 zo;A`4FaIpGZxdkr*9a_qQm7I?LCJWd)45#lNEU0RKM#z$hr(c{|4C zj1X`qTB^o?$A4?&RE}oF>$ZY{~H?^ zlp2MMF-N-q(1Hs4J=wOq@u4rXUx10ABann4&ggl?9U-ii$Z0zZ_^J%;oXe5ej8s-g5a+}d6cdUF=kPcP)}_0+i_ zYa1%wvGU5Hc76c+z-<=Gd{eVpF$4Rrdt@>dw+!p+!oc^KH96_cCM>~)DX-T}I^&9E zApZh@fUI_hcWfwZJSpM(39zvThv&SBmO?($VMuHx2Ve(cL?D6DVtC-ph^Wc|D8!3y zArsP1SSycqhBKIzy-Am_M#w?WWi2wCC*L8gX2sr59HophM_*!j*Q9vF@(5W23cwgf zB9FS$nbHi9a6jpcbhOMs>g-HHxy<{<-F0&)`|9&6Le#0#M60xMK~v{=FfQ53n6+_Q z6ha>)E}Tfb@;BrLw*85|WcUY{b8*$vli%?p{m1$mz{8GLShuS9LDsn}S_A6O7>vlD z`(t}fFPpBfPOeXa)~cR?O`5@WKw@f2%-A?JqggqNk$?o%`>rA+=uObzZc2u#VAewa zd8GVVtOlc=CzX=8)l>F=2sOUe++oCl!4}Azf(XI~Es8JP#D5MyNc!HRGm8`_H(Jtf>28QBt zo(bvosgA^SmF|mfd0$%j2|){xP+)Esxo|Ol@!eW=Seky0>o3f(DQb&91%cmK9VurQ zChL$%)wc5Ka*R?=%(5YRv0Z0DW+=qLhzIAj#ZqE2G-k!3`TZDZp`;Du$}K=1fNM#f znQf_vzggud#qCIGKdK&k0f?FwwQ((|yQ_qG0ZXwZ0GUQ4=UaI97mSI=I{bS#R{7U7wtiEw>X8E(fmMMX zL}h|E>!S^dzIo3T3sx{=WGl*^}56s^cqt6DvX`FH#&H4q+WPfaXoLX#H`^5JUF_=4ki^ zQ-6T+>CIu=4vzfMtNLG36Cf|h?~fbjL}$h7ZZ;5ObYazu30A3GtiJphC)4tQQpqL9 z7`E4(11?{@9N6m3RzL6#r?eF(-iD3HV1!c(->;nQTus28{X%<$!zz)io12)y#V#*1 z99{J_^?tiu6Bq-nWH&)+t^}YMDkNcfvJtLPk>`z&T(j!2$Y|l zA+H6`(epVu7zI#9BpY*hPp18J`@3%M7k*QW6z94Dv=LRv?U91c+mM-6+?EKaGYyfa zx?f!=UvOPErVI1rF+Ke)U+b&2_PD(9jy{tyB*&LIphDu+()i@>w)iWt#pbr8D&uvF z?=)Hz8~b4~t)%P$GC+PXfUD$cUdm8l<#>T5T2$_7c!R&aE4gEHxw4qrwyQ7oa3cl~ zUpl4M6F`gB$&e;#zK%iV&&Eu(3Iv5HUMp-tOwNX-eXFlDHHVLd2yw94Dib$b`v1fn z;UvQXg0*sn(9>0;m3>Pi1@3plL4Csz=MrIHEP=36FHsnn)Mxbah27S0i@-k}PUy84 zfiq`8W&x?85EYv=%>0MJm0o^T3tOV>GsM$|Q69=k63oC2vQ_zP76%QX+f`_tBE(yca#~sJjHGh)8B?} z{eNmWq|&^*^DG0b*(cnXr2XBZ;npXhYer5&%ZG%NZh>n-KF5Kl;LjX<2E0j9K&BuBug0##fYpu?9 z{IQa@-$)*TFUrOHZ9OJCVKa8j5Zl1L65~_iHEdjlw(znJ6)~fX!kuozBB$1J+Tslg zXp#eXR*eXUafZ+A$SUm1_Nl4UZyBjLZjKa&2{m3p0S(KoTBdJIH3!>oR&~Uus}k~z zu#!p$CB1-(Yf0)L5&%BQn_YpQjOqxz>A1si>?>_{FNaQ#G5abchEeW6qjZy5SXNgr zoh?Yqoh%}O3u0|#xf7wZR4Z^llWV3uvCkx79p^mUpf=d+u6mH{5B$0F5@X_l(tNjE z%hb+F4Qh0XB+F(7id{?c+YP6{%N@e~$Uq5Jo!A{A?ux%wcdMs(r*`?5%(@r-*z>%! zwNto|SvAqyI1^@=ZJ@`hj)>&%*20nid~>1S;uQl{b;7(_Dqqh)uf{A)3F+e@gk_6Z z%$&ztc{IAcbGlcVO5PNm8&RmYCDrK$e;W@!qW1Mcb5Nq9gyWmtr$s zqnCUCXfAsoGYbyftwm%yr3==l_t^jNagNBz%GV93Bn|BAZ(ZWcf~ARSV#e9bp0P@H zMwJqqH_Ri3@nJPM@cyO<8Xj7whwLx&XriaKrs&&%iN>S8e3^N>yR3S~|{rel|N#%QcfUd{+epPq& zY#)on%zhAr)}97AR#e5k&x86d)*PX0Y=+nLS#1O!bI^orTD3OIM8oFd-{mtS&KG8L z%V=?o3^XXiJ75}JH2F_jHdN@Mfoi8go-MyXc(%k5G~(*S1VyVxn5-p^5;$AN;P`Sd zdTB~y9S*PCVzcHX&o`zByk{o4&m4doA&Y-Rkr^cwI9qYg$};nU)=CS1nKpP>a&TOy z>I2NLSR&qZRFTOVDE3DuDORC^ZrBc&$&!32^GYm0%U}EWi>|J|GnOW z7z^lN=Y=I8eoc?YT>Zm=O0>K$cdj1VL8UIgeBG?}6~j}rB#&XiKJGk13zJ)X<)fkz( zzqFgkp)(=8nNjHODqrlZQwfqG@P&NS-e8tJZYMiJs!g-`^NAhRZy$i%s#Bc~J1{X& z&-BtWyQC~k@!ul%$O!!ezZTZQFaa%<@1y&n+e)TGHn0lT0m&58T}HV*Va3a$^sb9L z`|AT8zGPJ=;5gvKpz+zb=`UD4+#K||1y{YRR^Mbm=m1Tek()Y47xIzEgU50_xPWvk z_5ys$lk}-Lj^d5qm<1YF=CC+wfmsaTwM`E3gA<2I+k3*I zze!BAL`wcWTUlIx)(64%UC0pjEc!u@=_I~;v3UT= zfkni?cAiV8H`#Sv1C@8pEL5;uLeUJbMF<@k%TeC{&bb^3FZlSv23WL1$t3;WV?PkO z<|MJrq30_c6urV;uA#&W&Xht>eXp67dl3QPkRN0k3OCXyB-ynYKb)onB?nK zjw(yd`r-(rx3SV?`Y8x~WRyn~bk|Tyx=60UorfhNwhW|!|beXBsAv0uHGc-t1Cu%cRQwayfh~Rpf zhVCF2VtCxKkNp}(HVv4y$z;%i3veDccRWVMydXs_tnuVBPMf|*N+kV1fCsgJfzuP>fSMi&-&`59hqr-9+!9Miw!)DP#AMy3c#%3NSWq7q`qd22fZC5y-5#WOTa_WwcZ-R^GB zK_C|q#rmlKRr%5LC17bQ zW?GAPNDnO+HUZ0a}=NgvSg%jtIfo;a05S_&ISs7BOT#y-=}at}86%j`*81J|Hr{Ya!;fbm$Tq=zupD$sd?Dc|(*l{j`B|;2V zRtFUxxSO7k&TqV*ro-HEJ0dFp3WUB}nVOublA0~cf}SRJ-wu zQ{*oifn~)(o$W#wom3p$)za*RM`1xKc}ikk0JrN#Zt_)}MLMuMaA${kW*{}fYsap7 zz?K22MUI$D%3LL;4rKnOoBE%gF)ZM=W|x=u$c!Qe&}a~_&5$O&e4ta3mCDm*AjtGD zlXfa%!b$-;gz?bl47CyBB?T)lje^<`eiI>iR0!zqWYfV4s8ypjZCL`)DL^;Kjn4h8 zrO4;yXQ744bS>zv@qUg~|B(-bVtA~Z46+V#xNGv-rE>M$htR#KjmW!VlGt`X3-YNy zx{Rhbtqq<6S*1;5=a*i2pRUzfdB?6$aQ*;};UJ!YkHxmTN9)PL6JWi}>VJ z=?gWcu@a(VXToU9mFa_QwyQqPThCks`vcxjWUyWX4m_^CuR{i?fPXJgZcv<7sU;_x zoF3OUFv7d(K#;Y?G6<6jGU%aPSmS472^jxBGYlG6Dd6Uj54+FM z&=tA3s{U7A!*=Mq(_W;!)k>WH$&}qsHMRsKHpN}Pdsv?XC=>j1TxNR`QL6IN4;lb@ zEIv-|Sng`5_oBMWnh6sZz$FL%5GHF&eB04)&q2Eir4X5mhMcIVc^UDgx{u+IFoQqF zkPC5Xshi1q%LDa&5#LmDwOsi?n(tzt_Cj4a|LJ46o4U*`>Wa{w7(-L5R~DFQ1)9W;Bzbwx-B_qB6_D)%kzxEDUlHv(>-l zsvR$>yTwG0{VH=Vy8L~CCLavjz7Y*29rikr*F&{=Ld*p+hMJ1Tw~x@rVga$@;Va4j z*tJYUm|JB7aFT4U-d0s850vvOA)y%Wv5L$k7~4kJq6Xinbrj(yG9Nv4T#gcKP&nGo3n4DXM`?+tRf{j`;z6OXhZNZB9r~pl1C4w3?@r^F6M}3 zlrOp)RXll^obZ_c<*Dgc?eA397uNrA1GfuRwDW>Qtukk&KgH}!yr6QW`BAZ0x9&GJF@Bo;LxHLlB+kfq;>iZR3SrI?E z^oNE?kX-3;q+=`-rh@+8W2h(rILZ-y)D|BdELZ%PNnR`EmuNI6;1B-dqs#n0jGDDx zWr`x-g08`p0{1(7dRf{dBm>|hTm|#c6RH0in$iJbJO^D4T4Q}V{1rh7u|Qz=daB}d zt_Di0^U|9p38EMBT#~I9=iny1>|^LURXz+z$T7v3Pieos$D~#0qzML^0IO@(ch2qX z&D8itGZD)${C6*9+oX%c!RdW2G5@d3>5W(yS$|#%kHq0o72c8V~-1JSA;oX5nNJR_2U{<0_ zwW*%~OLvDX8HNA*oX^10nXj_Q^Z7m+4r=6dqDQl%u>#htSCGTTmU!)~i+1h5dP zR>F}!P(U@wntM)aY>!G==D9N#$aMqMaeqX=K@W^JSy!|k>g4VGbHH{7qff70h(rg{ z$m+Cp#f+Ia6H|TSSNrKCk!*lu`s6EcRz(Fh5@`XL- zI%~@-Y?hGMglPgjS{|h@7j1=Rj%FX`7I@~Ut5ZmDk~U1-EIhuyQaSIq|LEMM4AHtF zU_JynGT*|5lXf{SN2K{<4$xTi5t?BdQ@Pn6!vd*_3UT@+`f8etTb}`xx5RVPwTqgI z?MJjuNt;=>5&-@M*Hlu&Z|mLKYa+S-RpY;i;82(5gs&hE2V(O-&3w!v;wq{KInX4t zGKx=$H(euxEnLmst9a%cle{i*L}%l!+1jULFYs@{Ebt*>T&x(tAWO!v3%9-_ap7B)^8@Pkds z^h@}SRh9!mtt7p2+#tbT_W-*8l=5f!jSWC(TMIofLO(^js46NMT-_u8RLh4f8=n;e z2yTU)Jn*4fK6Z?6Cmn}lqpMWbHj)}hr7#CB;j1*7-VKSJ>52li(=1Zezx%ZCs%}kM zUS;QrjLHCK*IJ1z`X_L#C`6C#36}8b_5?8s^-J*0p;5Uj zEvLhZ>7)m{uksS*eQ5pMo~3e-qkR~Mzk5@7xDe((U7V{?gI84_>}4;9pnxgu`UKBd zGR-nM7;Sa_D-9=FTP-|&GN23sd+QqSi=D*rx3-!701){?R)AEix6g9{&ZSH;=9a0$ zwe7~6M&L&npC(q!hS`~MFK)U>l)4;Ly?qD>i=U$#tDWqPBqC{NxjvbNg0Z?|SV*NL}GI`F^}6s_(gY zZj5tdS(KNSj0ye3FA}AEPY?;x4FI-E0^Ssj??2DQFavTe)~SR{9+%Pg*aNw2C|G#y zGzV{CM)e0!-3%qAm`CD<`I0R@K1tVyOp2*2e^CQ|_aT@^EjX+hOfW}1y$o7q&bMoceK~Xck%T;@4zQDo2q78!>Jf|KD2K*fv}|V~ zZc(7&KKayP-q13~OSC1I{1!Be5y#h=v?&8V71+d0aN^(q3ILNLeCxtQqUF;o93s@H~-}4A?2=RAK z%gjN9*2L3RIP|5iIF|GYt&8ThX{1QG9``#BC2DDrPsoV9j?ilstoXcwah}E+1anTfKQhv)4RFp_P z?LMtD3&g#{I{v^l3E>>XtvzQ=6Gqn|Kg;g@Xn>%@4t)D&fW(#R39UQBmDV*1i%SwX z&@qnDl79v85Jzqvk|p68wnn4@q5U){=#4-AW=SRWlZTiNqzJ`m0w-^NWR_`Y9|kVz zOR#>q_`)?KHK}50(U%WOyh}_=!Qy*wLE;4($zbxKO%P+XM!%F$v;K|&Dbe0vfT?UI z78F)?EvR|TT&afslb4N)xU1xmeg_lhtOdt+cx5gBDFSKL(v9M)Q2*OzHDGM8_?PtQ z-RKxJ%q$*i4Iw!Zys<|WF*8vG*=co{eozOr<*cy<>ZFFc5_)D68w9g)6&L3fABm|Q zpOR7DbftY7adHCqXwDMvp!4ZgvT#0jA|t4ov3g}w7zS3WCsK-|Kv0TnIz{3V;=Czy zypmJ8VCjD%MwL?D(P^zBf@JzxFUOFW_jQ@Pp~GEoL-ex{_Dr;)CrMA5>1emm(}T8d zu0Km>Kei9ajb(%TxX{&Q38G-oWC)(oeFid$qFA2c{MKI6;$Zt%UEG+I_wpHMLi@`> z$W-l?1{=#>4ZSY_kRILc#XN;T)KW*(O*?V|8OBdhQ=GJ3;W&8{~=YlH9 z-$*SCba*e?dRVTAApB1N>?~dz;*XPdSZDr+oM%El<1V)^*!Bjw<#0fZQ+&&wDbYG+ zoO`Z1aED(L>oNly1<^=Ph=KP?ljbYyUvfq$CGKU&;?E=(=^)#pJf1l}hhF-gUwM*; zJMTMFw1o^jYEENcMNCl}_dU?oSYd?Lg20UNT>G1yGO#rEw`i!oRr`yq(BW3d>{CA- zBnSgqS!1j&yFDvj#VJk-8V^4l5JIUI{T1ozu<>?nbr`IkyQ?5zwkz)<@DP14ER*^! zHY*$ahS!6u;6c{=7>JUAth|C)q-e3|?<3|xV0gr!OUinqBuUvy;F{HG84u28B=W9P zvcs}CE($m~g8v{L$&QrTiW`bFy`v;eCgA|KjoW>v@f1kSm`ZKH&zOdmt2kZKnzL4y zBet&!cl6OP_Fa#@6{0b6UIId+l>UD&Itx-*4Jfasp&PSD=vq5k>#D(e|CygMd}pU5 zE!wfysXP5j_xl7K=m6XZGekr4-5-^I#ubVOlA1IdI(b74$@Bf^v*OF225QRr*!v$% zxMGW8Mt6C!{l-fpmp4`(&O7W{A|b~n&*x!B(16x|FjBo$4pWOt*Le_p8?DR2ns5a53?TWVS4a3JEKAVEPEzR)aXA za@EL;ERg<;ac8ppq+fA3%F?`f7N5SOs;uQgNMZMp1}73e!Xj?J^}kvz2zOZ_Vlmc@`%H3S6Mq?lXgukB!TV zS`Z=mw7qUm4;ZS`T07+zS->O>32EJ96!K}tINZTLK|)gO9PglV@-Pf6{ZD9LL*j#Z zC?0BUmT@B`!DD&Mx!WP2Wo3VvSl=Y2S#DZsxk$4?R(H{f1WO=*I9*pVBFk-w=u1K- zTOZl6+O-{m;ebm~<{kd-DS?uRx}Sw6C49(|88X(BqWpxP_$wWS!}-R+kcQf#gsB0{FQ6#zp?9{P z&yIu1t6`?+doLPkWP;tv3{{Uyi7XU1ep8u1Bp}rTx`Wm{?+nJ!GGJ^xg(i~~%ehmK zTcdhl1FJ!ZbYElX>rTRjy#^&xuPtvN+YJ=-sqaawJ4o*g_7)`6OQ~f~Q90$Qsm3^v zIIkbS2a9prg5-?&*#u=A6u;2(Qnuw`+RQo#Li&X3-aY|M^@vD=bzM zw{7hFPUX5cEt6$hWDU#p@=@*WrO+=vs!l8xVbe#f{HQhH>G zwZ+YecUKk5A2C+T{I6is8TS>{@(3*m^D2{8N3A`1?6%#AUvxaKMU*t60`1DN z+s)Qe6_@n{q2QSU@V(1-e&ALiKjwF@0uNUU08`x}98^t2@oauH(hbf!wK*6E#0PW6 z9v1Be8dw!|H*p&UBi6(yvTh;J4ZjKsEtt>#YjtH`xu1R9w}Ka0&^PYEh8UpgXaY>F zr#SBp`OMgEhS{mlhB4`0fr`s2yj19^@46)JKMci^MX?7}Ga-+DsglSs`S^@LNfP2A zBD@LD+xextRnow@JPI-`y8iDvYGjEVx5i)xsmEITYtVAH2(Gu?+Q&*a9eX@fX=hy% zc29lzSVqIKF4$NxaySe?h_SKyT;rK-EZ5h8M+_X?HXRSfEn3r?=>u>Gg{I_Xc+aUA zgA0$281u6`Zu$~FlhbH@yitvS6$4XK1Xf0e`EDp^u)5~PN*bokGj z1cF_#|GXInM;qWMgbB5o(<}W2yVJF|y)585-N+-ku2X-X;)kaqcTPlD1bn zBwM6*L++i&!3v=h3*MDMs9{1}-&^d!u=F$wGY*xgodA@!ZU%oQLE@FW>pki+i>XjC z;yRo7;P?S)oHxh;jZI_uFK|gPvhqXL<@-lk1bjl=v=*N@)l<^zhc5a+?UN5uY+RID zJh++Bg)OOz5zvi;9-t7z*7}7tk6+RQLAVZoyP^2zS$Jl;F}0mHCKP-##aJ(HuFSf& zzr<0BrVZ^HweG{#k660+h;QXRfu#>@xx1>5gnE~TcVM6a*3Jr;SeDW; zoe&bP=!uBb z3Pu*?CU*{avz`rGAFj9w4#POS!AN`7@IQz$K@FzqH9;e3~X}WyK+O`I7%F{=FCLI5wEndv?@eA#ZfUm=Y1aIj{h~0K;MJ_WJZ5~a@)9~ zs?C~8{P%@mzrd&oq`TdIh6USg#}@>NQkAL+-Py@ixJswgCYs|BQjge=$`(3qI0Cjk z1nJj=H)pC(-VG*@&)vfWekt-x==3f2&;CIS(R+_gwq3z+=zHtMS{T0VGlna^t5*~z zj|yuWVn06T-3{6DW~%I%7?fo;U@}hk-=_syPEAOzI!(%(?4p~24uc^b&sLo6R#^6$2C4cW!j!8Kfn}|~hc6L-hjoLoT%9NTv)TMr7=tmHMwyl_SiVNO z;)U^NyRRi78sF(Icdi=!bZ5pXKXt;Gr4uSp{9{7a1`q_4}Q|s5}BU4 z!HAD;8^SW1tp@?$|NXNa?P+eWX5U>ou-nihV}a(y6kMQ~LRtCfzA@CNz)<(vip4Sgtkg(}*tbZQ$@fs|&q$jpb z$Y!u%!Mou=m;k;b+q4RMO&ECk9yQtC)xVX{r$+q9kw_dAN+i?02)PqJ zOKOoC>KWUpzY8RF<)T6r<6r@O;ot@pl7yvbZsel4nDv*HjQv!KW1NDezazibM$y`D zbn7hDGcDw+>xh4lh0Oqzz@%IP(GO;xdyHdx5o!a=Cy`hmIa!qn!LF@BE@+3KiET?N zo9%xy*zLaDsUYYUoM0Fzy~Fx$1ylR=Tohar{|nF?!bLi&scNr!clB@a&K!9zG z7LlTT4;Q|ES-(v)(&&5C>t$I9b6b;<8l?VnkGCd)M}>O0&k9xy*HY_2#6$CRi!HD` zagsTT^k#nMHJ05wHWf~E^jeC;;FF8PdbP1dbJD$tCY-bGvMdj-Rfn zkU!byWaEre1ks;2%C_&eZDbK!DnYf)9GV`?+4cUwyjQMw&K4u~k?CQ|)pv?Kb!Y#W zQ(?3206CNY#^V@QmS@9%#UcdIq~rpi{kMj9y*gWifM~CY2t=!vE4{aR1eTYDwVCHC zPk>cyD>U__wim!!pe;jtG5#!@Vtl|<*$4k~5dbShcY(7DuldSE=?X=x@+O^c9~Ib` zT)PhGF1ZHtGF&!hK8z4YkEs@q5xm#7LVVWt<}WWNR&-#*-2@6_QlKO5ywx_X?3?_O zmlbN_G^yK1Xwy$4Bb?62C*5kpz$V?!+Fyi)H#CRH8hr?jk(Sc>2XQ)Qtw0930r^)> z-P0Y9nBZ(T_SpQ)Dm5|devQce&98pKXqT_l!Bo3bv6_uLjx4l zc?R4dNoY9p=!*#zhF4$Z!vv@Y*k);MEC3gb83-Yr%P7t+`$3UYb^`i%vUvQon3#XA@b}Gdbbk&I?qM{>HPX zC$+&1m*`RLE3ish>>?6&PegxWzd}H4XMSeHhFuE4Euqa9y9RzmUF_+RPJ+iGQ8Nh2 zdPwP(FHlg2H)Wm>lQjsw>vg6*f5y`t^7aLy<6nm>*N)MjyCb12oLqnm_hVA)wpVL& z@4%qb?e-4*`0MZf1Bpd7*Nl1Wb6_w%XEWXiKu04ae&TBQ6kr0YGy5)JlZDU7^2(0S zUiS8QI4>|J*8r%ugp#^(W`WP7Vs2JIr^Mthz09xZac3hLQ^v2%%ww|}QPMfi&cEK4(-pJ#W87-1%^ z>Uk80CV5!T&eklWE1Gz?nan_iuzP?>BQISh(N)O~^Z~kGS z_1~SuZzskpJ>X0C;Q_z5g1WxvPXl4G+on9 z&NZ#JQ6*B#rwFAQN^_|Z^H)!Y0;C|IVgh^4Qi|7@dFPR(=EtU~9R(|A*3;+NU1_#E zOK)uE1I+z71aPaC)hpdy=N&2Vw|%OUQ$~edKdRney>Ryq6l(=5hCU$z!3ppW^ ziEJ<|vjog?MgDnWcNpi|v>THR1g2>uk)p3}`nI8D2HakfVFqULso;yYEaWwGBS6=7 zXy&~uDT}`8#$~1x!WaWqC`d@`@>V7Ax#f2u-&f=6Xbd!$bi8+iV2gzEOqfP?^`e@g>3Z~tKGmDFiId*n_IYEY}Ei2S8Gko zXDCdC=JYKzs&0nm(}|El^t5p*#jj+Ro@;Ml&F%8RrB*oTIJ@HNp4*JTDFFcg{rr|u zLnmi7e{N5hvGu-s0%5e58)XlEmLDz})MpEBGOX9Sm+`ipU@zrb2=JQ#;~EQB%-i9IkG6&p|$#hw9Q8({T%7!x!LU zO-v{LgGA&@dBS*2AZvr^KM#(Mc{RTd+lO7{l6fK>fTB_;`;P+L_CPuEag6D*wT1fG zG);wrd8qAVV*~EF>z3WW%(cu7WHU0e+W`Jswb4gYZ*o*RJ!7?V zS)~fWyy!+pWu&3uqMjImmVv?omE%cKd8ymso9R}L1?h%W^wv0ZZwRJ9uSA>3tMgo|5SRT(kZZr=b2Jrf^kddp z=72d1X*Zc#Yx%Mk`q~Bq%%frM9iLzVvv;3-Mg?yLbjEkh2nu5^iYWzZO){?myM)k{ zK;aOZaBgmhikc!P5m$KKr}Ws6rHSTnd)gFHT|2S1y#RYZ-`!Z{=AyY~1n6T@mq-)F zB3*wjdnsZ-$7+v^hv~>4{6O>?D-?lM;Rs z>`7>u;^2|++@VU%t7 ztMW~-Vak1U`GEivn-QKYA>;1jy}{6dPs_iCf?~RCaXO)t_F&S~t8SnBR+@r%JLPKy zDKhFsCeCUW(7&a+pV!$X*K@g(6!GyV((ZGYE`LkI{=ud-Zb{%ExE=r1(rPce*g@Bz z1kX|u%6Po3ymbsU6mo)GtvDJB;RdimEj!LLR45c;CQt{ zyfIh`jOHqzxFhV3+*oq~4yu|;>Mz-=TjnArIQEQuHLhX53qPA#G?ti57ZbIy2N>Pl ziSbYom+ycGmy4vcv}%8PjP**a^M1aKjAr2J|Zb1A1>0F+usTXoHgrQO+|yIY=A>p8HAaF;BGQIe0DrEAhR> zC9g+2dcQUmGPINs{Gmbfe&P&03C6dNs4q`TVK(UQRaBzwh2xXWx<9WLa)x*utoOt~ zb3Q|Ob{W0Q6tZ$bHg>G_OaEuh0qv%8gzr0Y%T$14hh|;iBZdq3P){WU@alE`MG<#%^N&gNR86EIrn$EV&CM)Eb;xeNrd zY`ztAy_F24mE>T0TBls2R)ksVmd zQ!|ZJSfE!SPm)1DibIU79lWFARdpP}CV?5@6Bo~BjIyP}EglP0ri)eT1O@U7v!ZTWod|xc*|Y`>R|MCC4pd`x&?@F1 zE>d_f`z(u2AuA)KNg}-xa>9pRb78}@dzXA_PC~lybuMZ zVnWhz8+lgIitn7$b*RJ>VH1+W>z7~)`n)I&7HGz6MSCe}paIL}npCqvS`~d`%?A0C zbqWhoRA`Y}>24c8b>ZB?ZgpZB5Y9t}6`dlIV6s%G$hwh9 z#A5|%h>!zse`emV|1gzWCtLeqD8m@119=86xA*x0{kq3<24q8`>{}gj4_=BmIHY(m zO+&hcE|7Wt7StI(o$}w!JG8A51$yUY^L&Tm3;K`G(ysbL^`kyscJm7^xKrWjjoAC| zi>ct0e99rd8q6!T+7H+2&q1B<4BVsW8k0c2rS>!+!Cv)=>{vx=rxhueZ?zs}op<`& z6|6W_Ts3>owreT9V9rigWtkCqE5_~UACP`){ASa^Fv+<9n;P;Uq>QNQX|3|cyTd>g zJ5g@^MD-=__3{tR9cD17+uymsdVQrJ=13NWfJ-jRl7PIbWMa3M5bNv~=G$E1 z6G9|2qve3Qe`j2Z{Q$g(FD$|3wmJ6jN36Kfq)Hapa*t`g#45k&qIb0Ue zcY|GRyl8;%`e|z00^{|4s0%! z>8<`a>CvZsPzp@q3#HV3H%tMZU*rK@iM{^37JyE(Qtm5!j>D#ay3y-BjsGp&L4zmd zArSf;`W$nU29XZsVU3Xff@YH^37VBS8;16tLyz0}fE`O{idHB;;D%%GU3aGt3M=#v zp77$>HIO-d=9Gujh-8sc2@ycgp#nX&byN-$r|XNbyQBNR%A%ucWnf48G6sdFbAF^q zAXe4zaBtT0ehgbi5Wc&(IQXv_&Qicp?T>mY_u{TMW8y>45CK@&Ohk9YllNWP(}%ut z)Fwi|Q)}c?Uy+@=9@e09$0JV(N_QMKD-iStRB0?IRII?yT*%kY!wKS(#bvZ7(P$`NE+o%HyO6HW6Z2JE?(f>=2Yud zVWHl-(I|dqvs1=}YW|*4B5}_(Nokd+Cc~hbhi0JYqoiFt>U*|~+V-FP=Svj`$Y`8_ zibN8WPZ{cWg(c;iUQ1d~Jl!R2e2a^_!p~V0oie8VJ9oKw`y+Ab%AYIGaeUU|ORYn& zAAiIniD^xib3B9R*z`T4OvSx*dRJVYjD%I;O z$~G9HntA4s%q?7LHm9CZuJ2K`^Aq3eFXokXbRRbgToeli2Yle8+Nst?>*zA!o2kmW`i(x`J$R^C10_}`;GLt4qYaM)7M6P z*O35F#&X?pvAc(8*mFe)H9*2XH9&#**^i`nv86Za=_HhcabAt=7ppTZPGvBdaXhAt zT^nOZU%Z6Az?S=uK)bDgSkx$WM->+YiM?$T>)AT4HFf`)w*DkdVg`q^%KKf8d0Grm zKGXSt$cf#|at-yBX_#i;D9tO~8Nh<~8til+yZ6GnaiHu?$t0Wzdk1lolQw&tdAnNZ zKIU#uQ`uegLy8;4BKk*qRtxAASHJHwy5x132c%rtMAknK z_&hrw_nc}~>HU`GA64l*XgLY{e}s5z&Z@rDZ6Hw7#kyzo@91#Ag*XJ9;(9v70ZR+C z^m&|E^W!CA70NB?V!IDZ7>lIrOnp%H=p`CxOnU^O!MFZjCkMW}=hgukW}a#jw4eca z-N{sT$|>V9D6xha!J6I`%A^dz3l=Cji23`f&!%XW z4QX8)4>&p;gyhw3ZVp&%V#qo&8EDaq4kunFmhjbXTq^U*vv^M@(5ppm!nK;+KX9D# z0CBbW(nkozGdBot6|B}A+>6&axHao(J7P=z#0IX1+TYhy$i>VxD1;Ij{Q#QZ4&e-` zrb}PQsi*}?BOu9O>8%7UN_Va3+WX32HD}s;4~jqI2p0%yCoU$QtFiB(Ub;@I?nDgy zKiS;-Gmkkpj9He5RG0Oa+cs?zE|=(Pa#^N%+tJsK-wtRTzP{qFGa1DIbN9U7Z@e?8 zffo)pU88!R6-zega?yh^PhdRF+OJ2lj@!(dZ(OJ;y zR8!d@;P)V<(_#p3TOH0xAD(pSekB>$Pe);dBS{4QVk?H1jvt76hfo|Gr1v+tWFL6Nq#JXB*H6L+r#L24v+X*4Jny?NDYEQ~H~yLt60z2wU%GV!os#3O#k_uq?*@%>48OWk zu2xVLugzN7GsSE#39`|BCWp!`L6Y_egor9+Y#;uU*SH;?9;*L>bPoZvQbcUdB_0@C z?N(9pj4aJDfrIgB=aBfJM{5%{)YVku#(qW8_I6vmi4b7Jlg>HWFX;LzG2rt&_#sp} zPrO(jVU3TcI=@18Osj5*mKPj!NfB3pS!6FjuNt3NY}HU#!XTz+#-D9EtZoOo0Lu{U zK+e&`aL^m2Ng~~!cSJ41T|t#`b3-K8UvPnO?6q;Xz30(hHqA+`Hw=Ux|KIQKd%}33 zw$`ro$X?e*iF+^YmjA>OiLEBH(+eL5LG8{-S7?)O+Io=wrXS`zgVNjQ#|q`u`XcR4wXzURO_+MDW5M< zmP;`?y%XCBKO~t1jf8v|ztD!qr=?420h6VE5l+|ZtQplnLW5jixIi#fgRDi_{A_W+ zo$nG|g$FqeagKUQr0`%FX-`IN;Vw8JVUbc{AI(dx)AiZMK7$s7jk0_6g9!r7J%R0j znQbu=Z)`&}0kSz0?z2uARlWY1-01F56X4v}D_&KLKuxJr`ke?3etV;z7P&T(uVvt%G1 z-mvqRto=H_SscYrbPI)Z*Zj}bqy`Ml#%?LYWGZ0V;i>B!CC_Zo^=^2VK&?jKk4F%` zyKu~%plm=1rXcKm(kqGosY_(PE9W%lo^%P5lB|csZD|ov)rTd`rd8U{83jU=LgMQ3 z3+5??p4w(y21FgMFLI(RAfP_kc)KBz4a+nIP0ArwcIu7+qjO4nG&K1gSt}9{ED|5% z3U!Q%fPBuVD#180r`imeLZVyrQ8p_j^h{Sp5E#qlSmA0OH z{?PfdyTA-7%(`0>)=ql%SjQEK)Ma*Y9F(34*HY8H?jdWA9sCWgYPdQH@iX5VFg$*dw+iapq-5yXT-e-p?i_=!`zE2e-vh^U`!Xq z2CIG&AqL1)Wvv&!lOlwGv7*=;x0TUunfEt zn{?}uui^VbVqF~HM$^8Z{5{!QsE1wSXlwCRSgcgZ?!Y2YSOKirA{P*$#n&nxs8d3- z5m&VfsEDNr?QdaQJ@uoSz?&DLu>HeTG>QI2R%7m2aHfLt;_F?RJdsT#c?M^)0swQ4 zuBz(;rqdBwH;5%{h+zG!z4>X4%Y{hiVAKbC zU@>CS0{MRW!>!-QGuo-Mj-Ec^oZ9L+LeKM?!7h|xxjV37{~%$&fFFqmtT36L-lM1f zyE5zpy8Fp^9Fq!=o|ej~aqD$C7+L<;(Ys2!m%KQ=XwA!YtMvD_Ur#|C zWDY%&VX%TKqPX4Nz28TSEgWNB-19o9mp$*dI)~`Yn01FEl$!Cji|JUvYz)>W_L4xy2`hYLc_5NdPZv5(Nqa)kuxv(A**Bu!74~e jXYC!8F#2(E0e?08fSU`|E-I13DvIaR(I96W9Hnd1omTKU literal 0 HcmV?d00001 diff --git a/MikroMaster/20260508/20260508030002-Config.rsc b/MikroMaster/20260508/20260508030002-Config.rsc new file mode 100644 index 0000000..008ca0c --- /dev/null +++ b/MikroMaster/20260508/20260508030002-Config.rsc @@ -0,0 +1,4644 @@ +# 2026-05-08 03:00:03 by RouterOS 7.22.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"dns.google\"\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +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 allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/128 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=8.8.4.4 comment=dns.google list=FuckRKN +add address=8.8.8.8 comment=dns.google list=FuckRKN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" dst-address-list=\ + VPN-Server dst-port=13231 out-interface="ether1 - Unet" protocol=udp +add action=accept chain=input dst-port=29185 in-interface="ether1 - Unet" \ + protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new +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="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 +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack passthrough=\ + no +/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 \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" in-interface-list=\ + WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add blackhole disabled=yes distance=1 dst-address=0.0.0.0/0 gateway=WG \ + routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260508/20260508030002-Diff-Config.rsc b/MikroMaster/history/20260508/20260508030002-Diff-Config.rsc new file mode 100644 index 0000000..86a2545 --- /dev/null +++ b/MikroMaster/history/20260508/20260508030002-Diff-Config.rsc @@ -0,0 +1,25 @@ +3537,3538c3537 +< persistent-keepalive=20m public-key=\ +< "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +--- +> public-key="64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +4298d4296 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4299a4298 +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4306d4304 +< add address=185.110.92.40 comment=pornolab.net list=FuckRKN +4308c4306 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +--- +> add address=185.110.92.40 comment=pornolab.net list=FuckRKN +4309a4308 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +4403,4405c4402,4404 +< add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ +< 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ +< src-address=10.30.30.0/24 +--- +> add action=mark-routing chain=prerouting comment="VPN Network" disabled=yes \ +> dst-address=10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN \ +> passthrough=no src-address=10.30.30.0/24 -- 2.52.0