From ba3450d070a4c7197b9cb8fe291e87a7fbd7c930 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 04:20:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 04:20:18. --- .../20260511/20260511042002-Binary.backup | Bin 0 -> 302647 bytes .../20260511/20260511042002-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511042002-Diff-Config.rsc | 8 + 3 files changed, 4661 insertions(+) create mode 100644 MikroMaster/20260511/20260511042002-Binary.backup create mode 100644 MikroMaster/20260511/20260511042002-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511042002-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511042002-Binary.backup b/MikroMaster/20260511/20260511042002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..2b9450dce7724a2f9b3b67ae1ec080931c0872dd GIT binary patch literal 302647 zcmV+aKLEh*sF8Cwo&*341ojwL^J_b%@tg-O85W`Vo0xHj>GsP#4PMb1!4qRFb%#G5X>9J~Xi> z5x~Ri!ZT;-cAg|_iBk;f$&R4;Tq|uxO|=n%Jl%~t3XOSIGPm@!usRkdctH+Bw?Iy# z;aG~Q&cG+s;vTe+R5f2K0XJN2gUPhxmx|6;^TXq`{1*Aq_Mhl9)|_PEo2Uy=Yum>% z`dmBL>IFZu?Q=lyogG-H%(!nOa00~uOdk&axF{JflEIhC9PaP|d7u!9aTxUf zOc}!96MfdkR4h@ZGv>G*MOEj+-@-&>l@x)e7ebaVs%cz0*S4Fg9RBpbvOlTolmz}p zhBSwY*;50jQQwe}fEY$ITrHSh-bi0oNNS_Bt?44=37#a^EQP>`cHQ$Su1$1OVJxp3 zJ}zd6_Dn{TdG!slN8Do0Yw0IiGB(c z@VN9cInxRK6DDb688FXZZj6DkEu<(lEwN(#yV7q@Fw-hQ(>#IE;Z6Abb2*6+$QdIZ zW-KOC;tcEi`%dKM0p0iV9xoAIQc3}y&YNj&y;;3x-EuO!`;ii#(t`;LT45z$WCXps z9u%O8_5io3U@oTU)9hUhjGmga2r_iPXYg10^H>1l<}bU8e^9OU-AIHN8_RVDaREV^ z5d?x$2fMFH@{rPBO6L8vph0}Thf0(_J~+&=@%=h((A8BRoY4Wl00=|-C&=-`{6Fz8 zyzUN*rq#Gi9&;#zb)HH~`wRGZE#*YA6ltOCH`;@T>*fJW&-4Zr^1Jq;0^6XlTM@QE zWAUsVYjWaFj}Z9)3{8MAL#!zDVX#5u+6+SVujbM>LJw?*-^b|EctrC`bMs>8;L^+F z5hKgzABpxqdR&?gvCd;&G|L#8(HW{%d6c@2=6(@Lz|aFponHC#HZKIh0!?cAJ2N9fTK?w&e_~3yvy)kc2Ww|_(w>cBo7*+E|tjqovj0Yc&2`` zITNHqf1e|itO>P9T&P}(ItWE8sFk{gMmvyXz-K^qRsg}i9|bGWA4+v&9_+c4{<$S<8}#$Cqk1|GS%+ z&j8qr4xPu(5BbPf_@1a4ZxC7WT3YwCsPl{SzDn;I(8A+(6FoH&!~wFt%hG?A7S$Fh zUYvu`5eiDOC+PSz??ynW=Q15WYE88ls#v!{c5T%EBC|$$g!q^L% zQhgjZ7D4-n<$XvCr-UnDt_Kaop89s?SOf726w0xPj@h(_$`rWzHKI8F-9uT7mb+?N zQmoN;M*p-(qM|!{G^ofzgM?$K%#EwiB{5SYPA^kFJK&N$8V|yPYRTfBrV}eGMV~q) zZAOi@h_jqTS1Y#s(AnoB(S~v7>@IiDXYYN@O=2*fUOE06FzeU6SF$l}_JSW8^wWhX zC@^HtrFgKbtf)G=96D;`7_U0i>>Nzc1mf3jjmrbJjSIsU-UtDnDZep%(|hWCs&enK zqu}LS*`@;u$5ed>rdf7kZXsy|OCS#X+XuA_?VRpF`(u3^KuQL&xFuoPVg}#^g<0 zW=~xP^!};3i6})<@%PJ23I+mU6x5M4Yl3eVss%-vamF_{nT&N)HYBkU3N$zrY!CH` z$5j8o&_wkWMUm3^6_dmPi|}R;U8(p8+`Bex8-}6|8{6vh&~{7Fq9qm1E~(_~Y4H0y z6p?GcviV5d=5BhLjUN}Z_#51Z;|o7chrn%EL@j9Je&_Tav%k&aP|!7sk~*)0VJ zzxHollIE`=Va4uj^qNV9-AMsX80UkdSshgDaN^yVt@Sk z;(QOS`#37owVXc8OMUUG2fuRL|I-5V@?Mh7CyL72Hl0nmB}4pqr>mDLcp)Lgz0^yM zIBNL2@#sZl%V{3t*p6(5u^f>?pSQwa<3{cT{F^h<0&;-P65OXpCga)us3vB=$kz^( z!-Lh)MRTZpNHKbqTMR+8wHn#vCmR>QZuFXL%e){@BjtxDhRs zik=#g3gZ?UBB?kfOuO&Rymz)`sX&mYj4)Pl^i05#MPP5i$e5P=%2e1aNku%tUKQ-t zk&3|V-jN0BkJ?`HS)kxi4r=K)QG^n>;Yh%Uv4=k$B}|lw=irEILcSsd@xjq2%jS+gkW5~O7ubL zNF#Ccj^1K37IHD2VO>5wU&)Z^vEpj4b-E=2>KUv__7Xp@1UAHZ6@QrIHZ{Q?@0Pd4 zjPp(E8xDefWC(rG!ej>dHH4VHWas+kNTL}g*ZCK`kl?WfezV_#&?cB;zmtg5h@)#N zNi4sxZ=G;SN^H#jF-%};x(_Z1f*hFhZ2dpoyFl1Qmk@U`KDzyrMAUj-u$t2L6_XWZ zvnhqG@@vO^haD&0+uaJrTt3>bV%pVv8{#exo3dEQ{N) zu~6RH?3AT+94qIoS#O8$R900p7fdR@TdI`ut=du|`y7-P7{GgL1&S})`&?;@QxRj@ z-TuqSSWh(lB$G@$(>TksmSosNsUI_dT*&rcmM9y`1yU&3g#=R63aZeFt@|`_Y#i3$ zp@5_Y;(DlgHpm}QjY>>$mk-dYqoZ|C`~w7n5K{w-z3MhN;g)full!w3OKJz^$ zWj$&AjUWx7c97?G>^p7L$fjl42y*l#+PD8fe4s$g_?(@Yn`g_8Cvy@LNd)`S?&_VJ zCcfJi0EyC)4cZ+As8y_WqFKY}YZUD!x7XZyS8%v3)8Q*6KcS=2=mAU)>T*ames9Eb zt?3Bt(YWbg@_LOHYmD1%QjP)|WiSiA_1G$mDrapS0;D+xD%qZ{O}Njei6o`J6JzM* z^{Pf@THSGTO|^ycQsjT6H&o+pPSxTn6%t(&scIpHmfBH!3u~|yhgU9SH#Ugmwupqe z$fqgUVTyXDg=x~$am!KYi-^rc!xEy9^A1Ee#7XKAw;ChjuHT_!Wx|wM2{sc_0=)Uo z4t+8_bxhuK$LbdEyXh0}i!E{YU4Sv*@yNT@Ni=BOCf9#XFb1g|A_~vOuOW=rZr|a9 z2j@>Ifh=}-YXm5MEmlg2pm=tdfdJZtT@*U8#PLh%pjc@FsAtZZp(PVw!Pc!O2p5tv ztfMnpc-XNeyovr#tKR!gGX>_&N}2n4r)m>?=)T=fVlZCh57&#~RLc@hQTSd*qc|UT zt-X9?TUjO-u^>fYuC%{!(r!+BYXrF66GFXg=f+%88g>x$jMCc;I=YD8Oet#V*l!fAvE1}1kGPP2E+Ddkx&cQF9Q~cr?orQKHOZeGv zPi6DT7)*yvPNCRGto+u%XM%#0ve0Ip0xP>J7q$hsy^SSy`7VZpR3Pj*1Wu+d&?VAv zlhc5A_(IfozpL9(gl`rZBZ04><=)c)e~ldepv>;KYLBB4!xCtM4U*j{luXZ~RAeM`oDeK?tw1f(pG;P|nM|NC$4vk-vhN(Sij`*% zS}QMo&c3AIr}chWHvW9|pE_Z@RF#kjsiYbUTXVRagC+-Fgv4&u{4x4jE}=$|bN4t# zMO0_CW}3)pb;vR<5@vpoSZbfZE~zzlWTuh+?xAzZ_Vu=B9XUd(nOt<#cRz@V-`(H$ zbJwxMl~Gn6@>U21I`qJmwU%p{!QiXOO-^q(6ONZyiGX8TdfhN20dP|jyzk%Zx($bt zx!ASoXpA&JbdB+()PTibI+)M9HgW{SchF+bAitD>C;JGT zY#XB!j-0OQsS47yA#aTn7pSUawtlVpIH;tK5jsKi?D;vcwFKhCJOfaf^Aya$r})5IE{WO*+&R%#DDBX>!j(WSI5!5LLN&l0H|qo04-z1SciQ6-tw z=k`Fh90Yzn9AOXdzyL6MMXG7UQpyfS9&E2-vK~}tNUI_%T#htJBjmf=4uVIqxJm(M zSamuTM~r<71$$+48Gul$o*>ecrkV-yXhMSF*=5YfV?L--v@&o93Tl#D$0^)22YPxk zrJp^_7j14j%Mgyk7|py$IZlgB_^&Wrj5V}XJiPsTDE&8j88=_SwTuhrIT7 zvG(k86uW1~gVe3`0VH={N=}lcjdo~cN{o0huQ8G@ z)Dzp;l^0@bD3E#F^0euByu!95P5n{~CgXxB7BX*~x`=yT!TyHcM=~`lt9g;{{tlur z$Fba8tF-TnYmApH2-UW!J6ZexA_Tw`86lS8r_5Kp-kXq%+ZSoX;a(>Y)<&SXxZhT) zG_kwxG?)M)lz7EyLzA1rKz^A&5?&z}W06CP@C{Abzk0)NNK6?kL!j;SqK_UIQrfpx zYY{xZ5O7+QeNqZ%@#taW^@^BP+v1mrFT^>?-DnA1nMK0`y96~L(lBuOBmNvUYOcmZ zsv%1wc;Z!36>l$M;uvyVdW1NfL7lQba3J)YRD?2};DB%Fg@IwM7(`lly-l74z{QFYX@EePgW00`QW(99~PL#;rek8ZN<4$sy9ERO2c{UGIJ3I+7P|(jcwN4!P=6B3)0W-=*PU9j*0GOokR11t- z;e8|R#J{(;S9(dc-?nej78X>c$b^A+{9-E-{G!{lzZHH>FD}pe-sl-A=_Gj7-|Z7zeJPw&xs-)p?fP0&c41S zkjnd!@9}z*bh>l#V5w!)yAs5Q!7heC!_E|$D}tC^Vh&Dn1teQ@{S`2WJ{_n{j(E1J zfKE^wXQ6StNvW?@_>gi}De)frqJ!}{3KAP~9U}LHvK|Rn;k2C+ZaPJ;meBh?hMGUSvw_`7gQ2{ezw zvByuG)^vhd13L2!2f={+s>S%^kn-WCFf#V_Uc?{f@mGw%j^DO8EMcooxb*{e+Y3Mth+Lrdv`=qvR*R zP1|~+b}tn}Ip@(r!P?_!xZ}eVu2N%?uGrEVw7m;Xa(fFXq(yQVqc-SGhs2BFF%C0= zgK7oUfI}))QrxshfmC%WMlFd~Q6_ce^*Uq5so+L0X7(IHZohq!&M~6P&&D!LlqvP> zJ7G2daEOH!Aoy90#m&b#a?BQqG-MIQe`T#EOl&iBT)!;1jxofo+BDAi3<91)9#kR` zPD%t8!=cO>HCVL9I}^3qr1^$;h%H?tder0^}^dS9ns~y+% zKLiUps+E4Q#T+IICQK$AnSM3SCcl8igUw3MsThwrR)1aQt9w-D7}bec>_9w`XSbBH zbyFLQ;>%{j^v#e+$IT)v0C>UPQGg?m_z^WGbSPY>lMZQwDik?kDdr(VQmFfsIlWAv zcw_CQ-T~qwFWt6@8Fnxt>z>u!Zh{&nPfF#Kqar%#k3_NvbWibVYLU-gDs_ReGNLq=r}D}=?WRc{G#}hy zGJ|#3m!wR+41U)UWgcB+I;pB^kr`y)LEEa4ID{|l6x-5=({e}|E?4s!g0;{L0OQaLJMD`sY~ zM%8XG-fCBX%#2sd43()sfi*kRJo1!zUxKkAT~D!UO*-56hN- z=owiYXZt&fDf}755SUPN&72fXe9pmZ#=`!SsPGJOFip-*rD3{-BC1XP%{*db)8i@) zV{x9+#6!Q5OK;P+w`<*i82+qyF0GeS0yn+oWrH_ga8iN2l8Qmb!L!Yyqo(bG+KsQ2 z;7HncKrGDuQ>6Tz+S^1zy*2g$NiB)z;XCXP4*tw&7H(Gn@|%&#_R&;$`y>_4_q7H_ z3~)*^j~tY*uD-+Udr5L_Qv&g`Jx1&T$U{=nI`wK?2SJ$H%bD^MyZlOlf5J3hdL`2B`YOo-emCKJk?V1dDtrx59$-MsSFyprRWDVxV0H0tx z;$F#b6UOKN$y5oyumro0SPk)3#?>L(PiMCm;L|jB9lKfpLuo?j#xNHmt-}D)^jC3J z;Qs9A9?>?9qf)ehq9J6A&|EY*9DV?BoLB(hCB6>}sy)5TgZkl`i=$BxA^=D+DEZ6u zqWhOus^*cE(Gh+T0HvbOcxNOq^JfZ39SAZ<1=EH}z~&>o?Gh+*s*y%(AoYtf!bu{3 z0yK}05Dp1C^nn}&*KkTqkT|AO^U?Gc!P}cw^|7zH)ewLje@T3W>OnC^9W#=`p3}jX z&G_z?_fGL^ew3jj z3el-#4SZf3H76C=p8BZ(^1+lBLL7-N$P+20vtbj&LiG_XGo6xZjAvpeX9@yb)^6Ah zyqvB#%N=yFgf658ng2sFfq(CVwoA(gHgJ`vh{*9|650G&h|qQ8Gat&`Bdyx*11aFU z1;?YESPTt#V&Mvft#tcX$k*vf?qwUuGEJTKB$S1jh76XG758e|{0bX;wO3IidxG>8aW2X}_pJ45Q+M9VW zB_N+*vs{>s+aDJY8~*p+sTD5fase554${w|t$Jm>*b1koa-YZ*avF((DgBj+3&?yp z_2dZaLzipjzfx>VuI3;OA#rq2_)(GJA@%6bO8nbdD$1%*0_vtt*U(M#WHAz#N_*EG7*g@YhvXr_ z!h!0-oi6Zyc_^r1NkT~n!y>L*3o@&3%J;P-4?{ASR|4fnF!ov#A_%Z)eq7_?Tc93zRC3IOqZ5l=wdd)%XsM{o7*NT zfSA+AT5}#7i>Z$;!DE87Ca$eq*3CFeRRrxRz_tMboFfObB~?Lbebfn2rI@guerNl+c6!Hj;b%2VNEUDHI2 zg+0c3HoDSO^TPWV<}qkS;PfwU@QpKY&k{dz(HYLIH7d9wjA9NSIc(o~y}CM=EhETK z^>+bfI9>9Oxn&}pP#eG{@LkfddSUDR;jR!6D0uqz*+R3o;!(HhM0i|Rp!4%Kk*@V; zoPOFyJQUU<9@_IORyM75S`}mg!66JbVO9BYOgKr8^R|m;tx(5dRkDUd`4$qSeJNg_ zhe9{F`|_2KeQQ$sID!l)&_i0IqK36_C|mV7A!Pecx=P6lG4vadiS=aYUv5QBb7O`^ zC5rFWYJ|%bz(EI>2%rIU5M7}~|B=9G{m$D7yN0gbx+LG`C_Ea$05&i#7Y24eGoq+r z81=-(YXzGpn^?;zw;nGheLHko6KK~GRMYy9D4AmlGd@lzBMZG+cbCzAF{2+yd0be= zM!_DwL!c6M@OOd(C{_~{0$WsX^Ur#Ru`85W0%(W@EvgP@^???x&`so6E~vxvLG1CJ z8q4G#%@lg%e+agZPbXS30g}%ZU0lwRSyo&(Xp7>jHCxpZ?=UXj+wJ7X8^dAsFk)&O z17KA*Awi&^78We1P;rT*F_s#Q}=IMH5#iG0j~9N(_|kU$RVEayEHyr#_yu9W1s2y-isFEWkg zeeomzgk0`FVO%qYnJ5$Hf6hb{#$9>g=dC!F!eJW6LFcb7ViqB_`mh5(9+_U1`6AGycrqjW zR00SE{!hiTKt!M|lL3(GV!=F}>#tZq8tZE=+-z}>OQLzQWA_-L9)$RTSA)e1cq}@M zSfL;_duNY@jOC^S`;fF@(!9O2se=q44J1P#DhK0mirpBn24?Qdt4l;kRUgr|@e|%m zH!GDmlAZ;dqZhu4%P@On*Pw}i3(^M`DkzIm)?S6%bu~fxhx-4zT4RrmJhf&pS1Xu= zJrio-#@o@F>@+bxdtT^}%ppaS)o{!AtwzKzAUd_Q7b7QY%{$hPmZ zH2hfsIme$#6wYBFGc%J9Cmw16rlCUQ~3 zU=`14i9Jg`j?)hjW@Z=Ezj7#=^RMv8eHXnOBS=$0>hbl|aJZ^Lr4=r9@ zt#8#LTLV?~2#mLlMo1{GbVgS@mFAErd%CrnM9{ePvapmN>1(NgdKCEkJ;AH`I5GEh zZhvOV0LK1IBGxUP_Vu{zHNE@nAAL%{%*F1CNoX+)#|!?!n*{`uZXdy?{6|+X0T0Bz z<~@_Xw~GW79y8QnnEsXl79^g+)qaG&6uzuRAeX4<@ke|kdo)BfsHv{lYeVi%W$|5* zu`wSpDZZJLBpU)vl0-@TA7g%?zm3N{YI#yp@S?EoW;SM#FY2ZgY<(-QcBM{TM~dv6 zH*5d+S7e;x>J=h&a=fNo;YZabCgFwoXOvFs1i)`pZfGbm1R%bVbbK(HEl9r>((rsI zWT`Q0$VKES7cDG^>Q#ZE1VL}3i<3tHbqWy~@O;=ySMZRu5`8SjRle}>ZsHSTwN2aE znAv-n(`A%j<0g^dhJ4f}agke)+8I%MGZ;`hHq}sPaQmW;9J1fN4bOBPR?)It zYNAyxWn#vyB5>xAerH?~wsY}h|t+~CMF$8O7>`&79w#`W!yh9V$-6Vz9s!}&@ z-#JZ->x)qJ*jIKAuYDw?PI!bI*hP9JUq#_{1U`SEO?L_@VYcq<2D0&AGLO>4m( z$v1{g#3L1qn7w^$&}YTPcy53LF2ftNKkhMaVR@u2w*Wdr%(Xtd#W(aQHdKO%w#Z>y z0^WzM3L@SrjXJu}J0wTSmKZ92tzOumzuwYG>|kS$q5SI=Jo5Dm?R4P#ymy#|kN*={ zg8~zRRnADF6q>fi??dSighC9J;A4jG0d#O5|9UH2F zd5|!U6&6w-_{7P})>Ycz7N?Vd*16kOafJ?9Qr^`iGR!~^8wXbf&a{72Ryc^mCPSNL|zTBVSX z`LYc`%zz89{8=F5@I zho+$mII53+8d)7*@PT5jXSDQ9Yne~Cnf@r;{pkwA*`$NnRkc|6F$ss}H26;7gqhaYbUvJQ3d}V<&#FVmyK8}6Yw*0T zwy-js7!9f7RefRIQ*tKW_p0IgnqbVLZ5_yyK6-E-02Cl?!RIihY+gb=^TOPw2~`Ke z&+QL`x4<4W=?;|wKZ*n9a}JuGDVGpCX-7r4vFSK{5;igrA^VWWQdiw>z+SMUuoGz7qsu^ktJ04yJo-&cP4zDZHophN?;G znIgg?7K($~K0LBQ(%!&q5eYS6&9fuH@s~jzILG6)6+*tKm`hL2lPCTc>DwAtl?&=K zf%$X)RW+dd7`qH3sO_*yr#}hVe$D6m<7oZ3K{8we=}w*X@-*Y3;;qmc^+%$;;@32> zhCBX?9!?Inz`)yiL_MML)nJ0aUlm;_{xhXm26j1@15fH53sneX4!&yQE+i|ZDF=_O z*xT++r?ZwN7^4CCJvdovRfPc;?3Z09zD$PKaVGco0q`k|hG6(ABfH`cVt6GY(Ln5L zFGIdy0?h|wKX#EZRlzvU+{qa#l)G1AY(8HCai0gGJ8if$MR}58r_>CL0smwL_8h?G z;tMr!%>4xk>eI>0J+sXC3uh(rE4bh7Hgfbw#pe{b^aXmjLT!Hv*-cYypundq;cZ5q8qL~M>Hd2y%2xQuT>*PVb!;fL#`mQApJcknpE^D06HB)IBGH*0z(X+l8GPoe#B9x~(APzGOnOiC?NP z*db$MFlUeI-;F5Agb}1OqjO~_Gn>eYo3daX)M?2OP47&+x(nQ1ZM8w`*`WO-c0hP^ z9UjcMdCdi`(b=q_JF1~xXAmJkB)e}$4NqrgBqz2KBD%iRVe0R|20WEk^D zoveG7aoRCDYoV%c9ej#*NkClqzO^mW^_~S;ZmtweTg#88t@PPY^aP7?{u5MFR-`h1 zz;dN5S`dSyj_xblar)d)1>)E*OMY#oLKizyVbo^@I#vql2zTmDBCBK; z=s}Ocub0pn*A1E?&TS0I&%y{fffR+%iKyYh7wCV%=Ta_n5i9%IDbyVT>+Z*D+c)6b zPZ6qP7_ec7u33yNe1QlcZt%;$>ObX>%0{h8PNq8_`UYRv`YK+JwOT%2r`%FR0u9pHC*sdTkVx-N{B$l9ACGn^b@~hZnwO~ZM4)-Ilkk8w6O*P{dw}8a`t;$3^ zS~jmG3tF9g>FCb~a8dJHY77blTL}o6c>se2!AjtY%?Hwg3tX6NjcT+xYN*g#c3WMT zu%yCxYO zthZ639WNcVbzDILTKO?X&bsMrxFNAF7d@Hi-nBmO%#sXjPL=$hy9SZ5k#eSF~ znEM(JsR1-F*>)V4uu-K4C_8?sSK>*nm`2woPjSg`D!nh$-fjiqvxc8lmCe0DDU0Vf zvj$XYTzgp5Dq1|}tk|*>82zptZs_!lSJ538XT?M3GZ~81lP2yC%q0G+0b+qQF4RBB z!Xs{Mo7zG}cG#HY5nUdTM2F|=qWcXwG(AKr0HEaS^$xDSm8w~LUvcGUuZsM4D!69R zHbtERtOS@d^5dd?rE*@8>0{j=+0Iu1RH$x0IP6jjRhNRcKttXF056x)bAvNu(rI`! zM%bB1_91C8c25*cJU+gy&X%^J(LdZ`4`)1nXeVz>Py8|ATr57+ML<0#$2U7}oxvJh z>~8MFZdzr9kX!e=siQ9*Q;eCg2UOU&Ww@HiIXN2yR{D4I<>~w2;5>- z;#ZJ()NEbGB{oo6vNrgG?F9rV;_hPf;oP9+cg+sZ2ehm6L#=SnDq)s>C(xR8SNWa6 zh#s-^Bd=oUub8x*Tu!;Z7TBE$A!Sa{aPO)CE{fyh_)xj6^Dj7@znBL`yd_DD=3VIc z1}OFzML2?>FNcCbJJ*@mZR)AL809Kdp$OH53I0os8_skuDEeSk{cFoELj#Ux_d~{b zbb`U&wo54c3pI8?sT@MmZWRLeoU+6-qfIm_0FaCG47P0J*(gww02DRyQ(}qC62k-U zN~%*Qlp(j{=4WPqM`+nZTBx4uoOMV@9j%@|fc+hQlOp#VGE zb{wyd*1A|K;|%U>MZ1d>CQG=x<8JrPWoXjoOFHM^_U+Tte2WhSAa;>&UlTaq$t0Vc z6jh-5wqKB5virXpEt<0UeSI!9i>-*UQoETsMDhcJ1nAYlWVv8=5GJ8>LCbJM1iCW( z%%G_6w5yMhJIu;*)dP zDQ@POl|eeaeN#v}y&H8ik6F7%ugC$i z{Unc}A-p#XL7TPaJp6B(f~R1@n<_X;q5o=Ke+_6r(LPqaKx&08C4|5aJn$oUKSF#S ziN?+{&W>Bx9)hgy0PJ`}Lcj%*3BBDhTAHL!r8G(HvBDcg3(+7zT|KmnXfO&}(6f#n9Y)JtZR_4e6br3ahnXl8+h1PRV>My~1hN|Y;lTbMENji{eo)2T1a zlGypmC!Tu{s0+sQR{b;$jTcAb>HdPaoXJ)$OLV$RcLQGVUf1_0=9IS-)by?fh!0GX zgd>{O)$shHev>Y(gorRlnQR!W2Eb6vH!vI{V%1C7X<;uJ1hro+GaaGj_NSKh)AuL$ zi`6*x_*$u(QPl0;%7%cOrGLiIuLBnX_=bCk%S-A%;(HdR{9BVoEy(oeok55rK=~=3 zWp`0e`nCDSm3M<16Mt9swT)afUd|`Y@><)qB3_JAc#e?&i()}?yz4N5-eVo4tJ#$j%;N(&mp}Rp35R zE-?|Yk?f`|r%VAl%m65Fj3H(LL<}TOit`2X!J8SPWy&KpgF`TneJTdPCq>9{#^z&^ zLea_zMJQnqUt}|VjO)mCCAZaF4BxqtPu$3+QIczhLK*{P$^F{A^vjgQNG17i|I2PX z(O0bB(NX%{#0jg(dL-dVSByIa%)u%R~(la_>akHMVZHbU8KbB$$aA_%IFS zyp{5+rQpTJVhskb*K0b%SgGSlZmI;)Lb_>w*TPb#WJL-NL=TozDK*0@tPc|TDM7a6 zSB&fO?S`8GBc+IEe;-a%Hf7yey!9HRh@9VB81wcC^*}bzL z&qdj823lf<$Z{FCoC`y`@M#qcYR`2?dg*cpanXB_J)1-JVu;Nc@oIt3!7_u>)PHiL zDU(}v^JxDmB9zluXpJHa5oeRb9c0d=VggmJGr@r?xytBLV?@BbQgB}_$7q&J!DdO{ zK4@uJd=yXbB(Vg@8E$&EJ#NmHMVQ-;G@MY&GiHq&d}(hxdq#4pdKuZQlw>@DA%OGP zq*7zL8m4%Nov#hBRy!Ih(I1=oE*O#rM*w#Q1jRoj;(M`QiBw;jl2U7E5EJfkaHkK; z^TckQ%cpWOcm{DnQ%qrQ#!4`k?a|a$5;*H}6I}eX_xm{_6hXP6ZDq!xC=bxqW;kN$ z!JPOgv$)K8TZGmZ8Up9tGKUNcK7U_4EL2UHw}-rW74wjNy~lW~ya2X%FF2U*djb$L zHaH)3V?IM%(G+S=1FKfIJh2__Fp#lFj4$di5jQ?;-+6Z=uJbgsr-D2&wwL|_GH=1I z05JMVEbkb(!BA8_JXR(>e=>!O2J@9|Db%*vbpkR#cCI;)P8(~$7kEU)UQT_UV6$~H zLmX)6{X{u`7tm9-4jZ#4p$kL%QrPK9fL2l5j5>Pb{9GrF+wa&~rUn3AsXT}uJoFy` z^_N2frilV}p2uM`qMJP6zbK_;n{v#ByJf`4i|!uGWex<#xAEzi0%Xm+bmAFLA2cZS zCYn%WuG_L$U^ljU8KB1RdkeX2c;bVg$rpT(!w5w}YfhGCG!enW{@o|j7;VT-m<`}i zqN0<+J?eWQp1QK4UL}=S_k85pxnYPdQAlDg%?FndT+Et9m(CvmMyeoPWK+OjaBjp# zQk*Vf$7B>Mjw$%BL=T%I>uzmf{UF!nc|yXbaCkQK zy1;a4dHT`I_Kv(@cZa`-yySw3fDLrIxd&v+pd6wj;XzU9*x6S9bo!yPnb+~=;bTxh zedVSO?Xllsx{}{q(Odns_V=}vm6C7@prKI?b{_i2)tz!@pZwUFQ8fqx9RgP_Y)iZR zX4MiWPObEek7~Oc`ao=w;!rY54(83Z(uZcX8XG79=towpGVmuaWqMVwap~BAy(3h% zS`Nxk;+AF^Qix1Va3#H*;_7fpRrV2Jen1B);2lD!;OYOvDs?Y!pRI$lJ=sjVT#J3d zRm`Jv0D4p-gGlHrh(39glOPg|Vj?wV=&rL&lbD67biY>iDl)(Z66AC?AgWS&8g33- z7^yF&z!dt&jT<+Qkf;FCG@0L37(*RwU09OE*_YQ1YVn(@N&Y{Jg}6$ixNv$~sC#j? zBFsrJ#Q%upkDJ}SZ0v?rEZ$J;O8iNGggpQise+TtqaAPTk(e!T)u*^L!@JYGf6ZO& z5-#5m^avJlC68`T`zO3LrNz$6YK@#v?$WKnhYaqTXWPCfeR>!wG5NRO6z>Qz#25*W$e{lU(Ov6yUcTAHq{1lkO_dywtHJ8?`M1bNQd-zi+~8gPU5gKZ9BS6Hf>{VhZ>+XRDKn+mTs%!A6g#7*mrs z>#<{dR*Jhfb~dA`WEC1pC!Cc+Ix^n91y2Q|8reoaA!adZZ*-v58`IdN-oSN^SoP|rm>x3?mj%LrSM z2s5SHo~78YglS$}+4%!9xu8F7H%+Spo{ViGI&<1+Av~gUN45I8+d@hlS>vbubmn}l zPBNoSs^$A_qeou{!!ul$f|R)yw4YmnLvylp%VZxQ0m=zkoI&4~nc!_-i3^Wv2VlYTf|X< zEPg)V)0lJ&fM4Sipcf`-U>_UjcR7vV?>~y(1Ez8^yRM5GWHG#{YS?}J_CBXhM*vhN zlvw}17;Uv45KDT6{m8Dz5%m^aVMRx^R#Ej?Cn>+tKeBpE^OqmTA?TGG3N3Q$z4Fux zU4dI~9{Y)B+*`6^2qb&!4IWX~xKLboTX>-U!RBTqp*8IQ`o8;^*iO26OzoszpuA{DnDBajW)>!uvSCpZf}k1Px+lTrj#iTg(^i)_7Xi(qPT`F^tu7eB^s zP0hI)4l+|ZP%gj3u?U<4E{HOFaf;8B{xwz5r5FKxGhX)^-y#(zgUF}pUz_wVjjdm= znzHF_fbk5<%{%_kaI~;+I^I!8?AjwK5evUhxDxkYD5;c&Qrm^-&DD)~>S*7E zDgJ7F4^ENo&o}`8KLEfg#*3Gqm03I>PBygLeE(d5Ni)wg{w8TZV^Jqq50&h%IfM=c z0n4EzqZyRRF;jIO+7_~&df(uZAg;)hzc%2QzXVx}oHN$ka@l2=xa%S1f>y)T3roMA z{KV!BaS)rUO%CtmXBJgVh-;sDtuXub+1qkHnEgTAKcw+2(_OkSXk(tKu0l{{## zG*f7I8ljo*W!4gemF(e0$)Q#!t=N$S%hOW&xfQbfHLjIZu+T4)nd0Gk! ziAYnE2eht9wym_L-=XZ1pf@|mvV;;P!%%;aWPc6a0iyLdc(+yn-B}^7m8jDzNwi7GY&XO?;L=lr)L3qjxF&}^W-)^^xpPN$=G|5 zwq}K_;l5kaLG#z`$fnm{Q|ZBm)+G%Tm7p8@zOkI__1@?i0{3_Sf1lVX+%6@uMWxN+ z9W5p5#hHZ9peV>PUX&co!?LOQ+j;_sJ^><4`m|6=hHsohBZ@Iwp zV~?9*vn$Z%Nev@MSk2)e4YHqzJC{eRb}&h;Kp&M_gV?NmADZ-3cz@9Jg)^>tHQ~f_ z8ElKo>@@8{FvV5j!A1WODW`Cw)g<)BUaB_ad@CTC3 z=C;>VvZ=^j(uB!(WYPijQ`D4N<#c-^Yg+1#MZwzE)$3=di*q1rWl9Vwe=vfHuU@va zOKvFIuQ_7IIZFW2l`guA@<+!Qi(QiOadaGMQxkItDiNO={%$n(BJ@GBVLBUD2ADxU z)jW-Hcp)_pwPsZT!q4|tm6TFw!{k>iU`#fG*&535MBT>5&Q5YCItNbP`G>r3GjxmA zT;CI@Zw<^=DO+g#S}t$OuY*5Vx`dzQTiEXf6MPjLQX71dc8@tY8jC8{XH(?8zk68E z{V#T})->YcBk#Kv?a^1L)cUR-LfPu6)lO{%lRX?$^@X2s>8RNiZMAYc#HUl7V6ZYv zBNhe*QxqTW@Z&FR2r(tV=@CMrh#{FHNj&yZfF}mWxw>LRZl#EovqwjviB{XU$rAs9{+=##})d_Je+*hKj(B5)b)g}s_V zB_p$G;Ia%V>BoF!6|?O)Qb+E~ESSXNyDZ4@&ieL^gn8lHwVjhZjGH6-Z4PX)zyUh2 zhl3-mgCxYaqoikMQLBkt3@(r1Ss;}Y7_rvk9KQQSt%f=0pQy~*JB&Mb-zEua(0)tB zc+~U=POaVb)!vS49WD&!w!0^(>4m(de}~qD()FZeRJ%D`l6ZXWTrQQzr(-?_Maw!f zpOvE7rp0xV9n+ovrBUMZ1br6{E_uxj7>}7E_9kiQ>`$0zTFYv6Q2;BZKDuO8!OW`$ zau`EPe=pfdugDQGI?ec(Dvy=Mt`L`;T#Vx8D8ADI-0?3=IA70y*Q#;mc`Cl%tOF%z z=yiN|&Wk|#FN)B!e^K4E)s^}K$S3^#d=Z7T^y!HJ>67{&u3p(CiH@Fr%hu(Bt)`hLdhu&4w+E5xsq2la5M%`>=Ew0G zUCSz%qHc}Ex)T<}WB^qDoQPvttI7U3GW$Qt=#+5UGxH5}ap@HS&Dlbv5_i`7z!wjn zDG!Mvy2l*8t?Yd?`u$7GmCrfvt|G@&+P*eWKTgST0?t8eaE@FlL4wTys}G^cR*^~t zF_=FHEb|r^8uSOh8i$VI@IGkwaa>$*m;MzSj{{VMxa)+B@I9_dRhxsZcLgJzf_w8s zKsn=+1w#9o?(28B^G|Cz0SI*{&JA$`+XT?Vb5AvMKgM2n2GlP?s6DDE{Ll!_Q#goo zn1p&6xKf#~OOj~RV7XSOCsLWw4{2g$&9`_!^3G#b#@7dkDagQ0Qt?abc&FK3AfKP5o8`;j}N1X86${} z3&b(Pgh^f3fQ+kMF#kMh%bzwJhQm)fjm#%AP$&!O$GLa@IMT9)uHbE-{q{%KkgVJr z%+*T{*m7N_oIBpgRD1WcAZM0e`rEzXG&civv$Gfwkxq8NXodYXFcu@(TWt7^4$SSu zl+Gr3i}w~&3vZ00{>m18P8NfL{V{ilwi2#Q5F`G;Ia+(nAy}N7bt2iaZ_pf6y?sXV z2OH06(Kqi4J2V9Q9IA?r@qR7&Ga43tF7p`kW|xfsTVG&tM-?lJcXz@0Q_f}x53SBU zg-JLvwvGeLP|PRnY9zAl2~A>m82e zd!vrLvf(TxccDlvdwp7bp==X-j0K{#RKid9)@E?Yp4mp5xXGu9X<@5T*j6<3bK~Sf zN&D^4yI4c+j)g&4W|1$DFwcH;?(i%~=;|+TKUI1lEbbv$f@WSH4FF*jC2xYVqx>AS z$|H@^)$>64D7%>5y}d0y3?TCzI=9*H58ZHX-}>RWVv%()d+2i)Pz2ib`hK#v zM*qQ>{Zf14?6iRkC)D_G;r$@pqMvL2Iq{YMtgfk_vKym}xWTchjnNHx>9F1UEilJU z__mflfi>frcSO*-P{@{=nX?lko~rkXS)rNiMJu}Q-=%WWKZlFBeq|Qxwbu(NZvd7> z73t~0Hm5o~_m$9vli3VZO-MYNFr9og&YK>)id{05Z$j4?7k>@hG+EC7W$g9;x|s*A zb%I9Ag8!!F`1Xt6K~oea!L{ejcDkn(ZvLH6b#Ac^Zm-H{HHTKwpm=IiOKXW! zXpz;*v=|2{biBw#0ypHDgqFhaW(I1Pb8;0YzF_?jsW%1e&=2f4g-6l7+a_RK_P}hP ze*?9v{!huW8Ex*`E^U+rGn`L_-)qIq2*)9$ZUGnx)e#W2_g0t*SMAh+}@0a$@>_cpiPaMao* z9K70uA9Q@GduH4SM*0)N<-Do!Dd8c>#;$1 zXjLgD%tsrsYIE7tr5tiauRXBkNZ45b1wM5c(kch|sD{1loX}z?QltZ}vkMI4zg$j$)S$eY*Ue@n#V# zb9vHVt)Rh;cwPFd-?)^4x*5wgKCbeg4mSjd6z4Bmab>*lE0QEt!M%i(|MzMXw$__RCF*5U_}foQTkJsMdTah-7s<>z30 z@|r|T^eVaXQU%I4w@9KTSl3PeJs{oq=KcUZpG_>_ExM-E86K&YlX$i(#e=5C9~9<`gnoA= z_8Q`n9#tbp^xSLf`F6ejYf3#@V08NGb%z3*ra@GeUI`7_?2fB0n(E^h5S~>j5>%{c zyef*}?O(blTg=i)mm9|rUKzXeqO#e`PptAFf0ASoe;+2#8vr7&!lnDA>E>bn>C9AA+IPI88xND_xCqIOu&K!%1_aH1C+AYX%O}iEUEC zpLV-=({LM??>>fpxj}8qZwCCtyS5LLaX~Y#1vv5qiMN`+jMTRGNVX`3$wMZS9YON5 zsOWYudkY93wR?|5RX;GMbd?E7=iPU>k83^*ElXzbkHxCcB`)hg$xQ;OTlD~`@wFVZ zuYLo`>?sF8nkFt6RCJ}~QML$umGP}JiS{y7-@A=aLvd&0T;5WHzwu@1#w#2WE417s zrG${iy63fyURAbY>SIM+vBmatAU4pbdkO-7c4~wB3_fHc1B)94Xe05>H;3Sqp3fs- zB9F3u!ruJT04eHf3@}9u6dnt_J8k)mWq{HgCO8U(I%KG7I{`ew#{P#-XnB9^Z#|0( zXI0s=fEmthw4r{Qj=cLapqw{U4=0VtL5GJ-T5SFruqpm^Q{PDej23CU#-l2INrj98 zyU<7-8Tn63IK-dDoL%e#CMcXISeL><^4?^iTGt1SUzD%>O1sZAtLjyN98-?siMgz- zK%$*8Hwqn?w*I#_RPvcs*A-yxQPDyq=Aoooct~!+x{V7Be+m9ANZ)a!=LY32xCH%9 z^NY9D&~c+9=|@{SYD}@?Z6GP(ru2I7*GvYM{1zuMM=kYUi ztMWh)MjzEib6i$y7`H3;%qZUNx6GELy>Hwo0o>#z_4j%0yFq0(@;N}>e$=d!{~?#k zavO3(h8U}L*a^yj*_`#IXt~lPqSF6?gA=*c1NNGLroI_jdztP|5kSJf2#+oon=f9G z!XrRQ%!%61b$*ByNeQ0H{3QlIA%(PX&RKnF%`35w$elvw;d`Txj#iDr+8A!J^oASa zd{TWSx0ayHm%-#9-pA0DF7Jn$XRZ&QE_)BhmvWfF#h|)q=2Su;WF(qBg*mIxavCsk z@auc21wD|g)Q6!qu@6qPxy;_hUCkDs+eJRJpv4Y72g}2uw1XcbLzKzdmwE`!+v`=+GOpD(8iX%yjKa!ebH_U(bMgOW|Of32iS?%}msd z*yCIGE}?5m*$9W2=}AplcGnaZv$pY64_m#}m0S@<<|hz&G?I14i2HzVf>tA{3r;C& z9g@#2m~)>f;ylL0Qh?hGZNg$502GQ7uP+q8WNQK=pcs|<>-y98>EaAJo;mt>c|Y|2h1I9)!JOt6+Zq8+up4tJX{B(1K)`zKr1J)D_#CvNFa){`DJ{$De}r~>!^imL>~IOX`kJ}7 zP7$M2)d`FJBP|TxI@&nL+QW>+U0ll9pMCpfx=|Q>-<F>ogPqpeDvw$9Z4&y<ji>GfFxEX)Sq)Ex|IXBQ7HZezG=d1#gPKOX!&j^O8)E63?ZA*h*aI zaRiO^Y&H#dKfptt<&{Soi0+haz-DF;KdcNgBO%jQR-cHwWGc`b@EP` zdpZ#)*#=0Ufq&>z7xgpEi;-K2VjsI(UHKf&mZjjb&mxPS@9t0U(t&e4}Z;5wLJ$k0NEEmEOq#UU$fotVrs4=CCB2R0!L|{>Ja}!%Q zlhsPj?0^Axs`3D@b@ZZ@N)xWj2daMF+$q9O?R@XPTd#D-PfDJhE~o}r`(DDG_dn(} z^TeMSl~nVoVewPbu|kHMl&FLl`h6uvvPa1{72XpqU5$J}&rfp9h8Sm;+Oql!CPW#1 z+K~e0_%>f}6D?4Rem3?z=3lt!*@VQGm-9rww3>0g(s$K;2 zx{gg&Vy+Sto}Q}23bEEEP7bynMiOV<&qyQ!SlD}w`t~ZX?c;1Y(POUmMZy0GN@%{{ zQyzH+CXo8?Wfts1($7*k-=4r$wqJ#$#9RZQ=YMyDI>N6R@>gO2-!G_o1ycqkq>2DK zoqtYKf`PL}o_SPKcT7kBJI)<#?%>8U9-EkEEYcU@oC3Sj1;xlM{>R%pk$Mg2jA zqL=9zK6C~>X!zhJ*Dp2+{wNYyMCi|Ed<31jLC`dQIb>-*yDEuy{O^$57`$TTemh*tLV z`asaLITSuM_sniF(3LY{+R(fziRGq?l-dF>q)o=p;?*Zkl zcsaM|VJr_M5`D;f9c*NcO3@3Y$}!UW=H9umzHo6Pt~ZB?eAP;Kc@EBwS51bXJL}?~ z2+yMxzy~Z8_2pM27F~$rT3N-e3BUe{>Rwtao*nm*{RNshtRc!*QVBEu2iWH2rC)KB zeG-FvRQBt*z^c#ncqpTw=;mnnJ2qtDcR|#qe~0-9>E4?5x&1~t@eoLm$vhXlRDekOOj6M@^ShXG~0{>M4qZx zy7-3YBj$NUuxc^?jzd)OAjBkbp4+g+IUfYuu$m!MH*(4pdTTsS-e#TdH02l>3t z*xJKkmK9oHb;c~41R|5)6xs0*;TCIC*R6)ic0$_0$ixR;hEDbB_BoNkV!QRmUoJ_& z!Bvdzb1x&GH3bTem8@3WsI<>^aMup9WdTwN8Atc5OxfH2}jl|r_hB?VV*N9G`Ruk(N zk#EkIT~^zLFi6Zxie9tjAUP{S5bo#v9gbn5+&25Ys1df&`?|Qz5%7Cn9W>3M)9Ad0 ziq;{vBNmJN*o(`%`C{AIAU{r^1;o6wT({>y40};E){VLBg=1yD0d!5TSuTFz%{H=V zjCJt-D1Qu}w*yXR0$@sL*VZs<;s4P$_-5xyiONQRPh~XQ#sAlYuGTX(2iVWYvjbBB zTHnAl6{Q%c81COMuF!U~u+gw}42IUC``**6wWqn$4E`oKIC8um0iP$4+Z=v>22DnM z_S&D-DM4q=InL{Ig?@TVH4dY*KA{0OW_60IDCt=dtbF9c?yl<5=R1K($kn6s62`Mx z6#VwkG#EX=fn64rV7((n?Ss5OQr~B71y&qr9+JUc8pC5Ez-S4;38z^C2g><`zM#uE z-A5wo{`ppaj{DsR3pCFvO$Qi9Ao%>8gu?jw|2KI-dTNBXV|M#AQrU%Efwt08s{;~Y zVp!3Ky@xcrrRbwtQbXBtl`t!x@^>0Y2@-@}FS zGAdVGdj>9N&Pc_D(P=;qE?d{0oK#)0wo84wv?eXK#;#+uH{5O`gAfwQPG6d6Y~U4% z9_-m>PzNiq7XK-z~wC~8)-spb;hNM_CS!ZbeXbZ zn_ZkJBN7Y#a!eQv0pKWbL?q}LPY{_U2tm&}#hWzUy0gJS@q7?$yb-k-Plk0qRMPZr zzQ~ESyK7ABJOu9^^-XgHzTY1_*3aHTgRpn#A-3Owr3T_R+1Z|${T%6x=w-gAOWiTs zYd~3u3C-Ju0ff%SfuG;p+$Pc9A|s3Q@im$IN$Cd?iGkIuEuC=DIN8|90HdN~uCi1`%`&A> zMu6hbES=8(FGzosJ>JL@_InOfVN6f@n=Ca#e$`2@1|3={@{wqbqgN9|1zx2 zD5n0QsEBfycQ7RR3sK*|dx?D~C*XOXF`MB)RJQH{q)A#7r)9WX7y_+$n4Z~rmOIyn z_LMB*o3#Zcx9`eA%G(q^Eq#Wn=A>Q+w9$_ytx7083N$yXHIFnf2tI97gr|Gg_iX zK+z4$uuzw?>?~Rlo&%v>55bxk|6M?eN1S%?sELfh9&6qln=w7MC6)gB?~(ekx>1Ax zRPe0Y#A07|a9PcQZ z_%0M}7NPT!0r#YvwT3dv@SWf4(w-uyz{)3s(&IG>VkUE^lG9zU8rCf95a#maEj3OwG;N(${?*AN zdGB!j6Ax5iOwzMHSc_O-20clD-b*BmN1)%H-4VY6O`4; z0ms(7$6oGD7mu8^FT>sT%6t+_30!#zBTS^RBaza{b$H_)fkEvS16f>G_Q zXh(XH#D!HN08CFN7QD}n;4|m;lZ8(?7?aEouWZEpPs*(5^6M9#l{>RXm3m>kZU)O4 z<-P_vzfKwb2ctBfW(TzJCjXRo8nykAI1uCK0zbC3ryNY6m1;U_@m=>0~G;Y-`AL0}=LAm)tVm`y#`lgxl_<%VaeglVo^8lKlK6~)?88+~& zTgQTe@;cW(oJx0Jo;>ure7}40^Yn!kTMng{&U$QGVvlblBHxXmr=2n<3*y5rlQY{9mK=zn&yjApv`j{lZwe z`;`)GOGV&?6F&4ise5~T@Nx73mO-WYy=4pDi}f3rXTt3MihpV=2FnA=!RT^uUU z=}<45_NDO&ww@S#XCeGoBQt|&;VqFtrCTgsB3w_(N7JL<(J+VuS> zFowy3g9-EBuFMmeo{T$jPd{`|R&VK@DVM(O2?^3-{VoU+j6|XVj;$w-?&{{~VSa`< z%L_QS=wAsKKVtWVRejC$uhzN)UY&SyyVFxDvLQHcV^tCHQYM3iV{T8UNu4p%6{*;y z?cy0|X)jY{wvo82Qk2?a>E5ScHIYs?~4Kk6LEevzI9y^ zp{tMD1lHsxu`Y(!@TrbjT-GB7+yi){`%ej;0c6Gr>Ru>V+nt!G3noyq9TQhnd&I1} z1c|^;Z@9TG*gZO0_`t9nGLgwRp>kxY11JEzEV+JMjmfX*yT>Z5*yd;wfHaKLx%tN- z>B5Ks)!R{dTh(m5k`A~-Ug=Q?*Dpsf;$r|aWoI~;(lOBPB@RYmfm^fy&CCEJYTnbh z)2s-qmnlC)Ismv}KV%_%Ve-*;bJO<3eE|Qj=K}qcW6`O+?W|u-)?9mC>b_Yv`K6A} z!kn*(zvnSfDZEmeWFN^a+QKLd#{X=XIet!`x7-=X6QX|>99f@62VuN2?-zM6lAjni-XWjZ&I2zY% zGBv`By`|i`;wagseN*}l2|LLGaTRzzq4Mv0Z(Tkr0c||4!F9q9u!O)aCEq#5ReVub z%WHS;JY~b!MOlmPP^%C6*S64fLKxsAz&zago4co^_O&NCvU3+=7-?^vTZ0UX+#{wlEOT2X?AB z)CyhDjcsEHKKr#$ZA16-MY#MQ|1h7H@SiCA6BxtSH|_Jil$G9w!rSn zk>P>_*QpzOt*z9RO6Z*d)WwYp>;G?lBe`Wog2=K*OmunDkJUJ3tUO)~;z~c@t3w(* z?{16Dk@Inmz4rZMk-40TL>X_iFx0RFV%JFfiIJYc2_FIsO{N*7w?y=QzEu^LY0^rG zm$2U{Tw9%B@5iVP_VmSsmNJB2{t(xtoHSMVxVebZ?4^~c_rUUz>!e9ffqjHq5enHG2Nv!BDILt!R0mMr`uEJX011^B1t3T@9QnU{_YU;ASeAK z-TN)=dw6@a&#^s%v`q%9w1QjeFF7PioWYQ7yN{RvExPm-c}<212boT0ux)qf3Qklr zrjt{N9`3JHnp=XeVzeFx^I80{=AJb_C|c%n5un_9-08z7OT+mRJB}?sIGQ zGO-5aKgAOkffE@0!$~6shgpbKTLus7nb-sY%{<7eet-)3V-jp!LF3 zPIv!9$3gdFC|K<-Rxl@o;}1s_DkBTLUv=I3M{iCqO%xDc*s<_|&(~-BoLe#3C46O1 z7`lop(n`iS5~3BX{G-oT%VC8H+&b7M4W~$rF@6Gzn3+fH9m1K;)mvOnMdvK^ZZbR{USJ=@p~XatlVXS zFt)qy(KG1Eig&(eJceMI6a0u$9Oz7`1jc4oCMiJcn@FRq&Ttje zrD13z#8E0!#dGq}8+>K-w98%Gs%9BP%1`JIB$|DsTwUyFWHS(FkG{RZPB3*g%CZAaV}VlG%fp$o}P7 zUq*t{&(y}>k*X^WSfn=;&I_yE@PZAQf+m#^p`%gB|{Kx}kWZeDGD*yR}NSUy?fS7Jwt0M=;$#_AwcSkYQ_ z#^vx-d=Y#abqefmKVcSR7TP6w^#q=Q%OJCuIhx+f-cw0gmX@^{8s?xplj?{E{fM`za;U_a4HXV;rU$?RnFgK^y&0C&~ z6O#z@8!JVH+FHJ~q0QLhV_-o`Qh8_UrA;Y`?F5dIUT|~=52(Fybmfagwf7q&=#!uWlHJ&z^H)u(Fd)XV zWvh9&1V!x%4L1D+gaBV_isW(=7n~HG)RFXplQMJ{8`2I?+dUNKP&n*mC9S@RLZx^N zyI;L&=B6lXffZ&s!ZL{E@JDNi~;lJXp_YbVI#p} zNWbs@M)m^?c~g^##;vlP0;wq8XVC*RMt`zQ8h$FSpzCr994@Ksvbq&yhm1s`A~*cb zch_q*P3Vo`!?Y8#eoS-Kl~o(NYuX>v(IQCVo_}&7P!&NZihG`s9*mDnj#aZacZ~F*|5OR(Z0xdfJ!t-jg&AB?(GX2Tg2F|t zs{n(y_{-E8R;~)Bqe-R2Bd{)lKNukM)u#=94Q}Gb5q15Zv6cO`!M2|4 zwuHGPRg>-&CXp13oo9cWuG9ll`l;?H^JTrFkp^mOg`Adk>w{ubEvV{^x?f)+7N{O| zmCAY;0g~9r8z-JKg|FVEX|@|fH+C(uE*i`XQ0dz+5wxBadk??^&O zSN${6rHHULC;sYGf`8*xJhFsXaF2r5*SafmXHqmff3D=!t4Ab56e|pM5hJB|tOo;EW z3Gy6^kJ4k(wnI??u>>j=u z-D|j=K)AAz`mH#nXk*$9*Su&A>0K6;)xUHPnYTL9{4U6|*P5repbAhd)tbiJ5IJ5p zTGFYEK{j*Hw?-S={##1^6O-lGzk67RDn9%$Z44oJ&>#QyH;hhEZj?n~qb{fF`0Kcx znqm+uT$O1lf-25xw1!AIlSH=+JznhRY$_$34A$4hq!eG94`CV^R;~V{A%VF#alxp@ zC680j8>C)@Dj=3Agj&D2ZKU*sr+nO(-&~-+s*0}-%Iaz*szt@Avxp*0?BCuuw+7P%Vz8PDNQOnh5u=(2%Tp7>>8p7*8zZ#UqLF6VB|v=~B9 zOHYANJNu}h-Tj<5M5qN~u~<;#2#%&7v7S5rkHI{bDkkT*LJi>b^~R{7r>?XYEy~gr zEK8Dj_4>SJb(neS)&ynCgL6$0-&8rtzET#Qf^3|~3AMICXF?&1k^XBRPLxcbmSYtn zuOJvv!8LMf)IkK1Ur{w3hIYVzW&;vSUT^$tY*pK2ppID6M~D5e$0fLVLxrIZ;Oo6L zLls!EW~i75@wHC*k!-lx=9c%bTaD+qxU^(*1Lug6*^Dv-3&xazt*UW*zfL6}P!mG5 z4OM0Hw0Fm_WT%I{^_!|f8jB=Sf9=f?ta7I6aeKOfAxkg8k~XDr(9w3^R}u4Mk-gwr zB(0$Pz_BMmBN$;RPvXKwd*U4OCu@@x080$C3MYhV^|E+rSl>FUwk@r%|Gz;t=34P; z8$p0e7kqO}@}5L)E`=H5-KlM=HxssnXXInTjj%euf~BcWl%qdQDuGxNG?O*P@DMQPQ<1O2zu&ESL-A{QD$YT5F`J$^*fH%i)gA z0hfOyw3%Ub6GUv=8n4U~^jJ_T#u4`@4B|Y6+~NX>5=*oq>??9 z31opp*9{X4Pp!DvEUg-LYczdQUSdPYp~nEIh(2?118nNipm8TB0I;v_ zzVr3G;9>)B@@;##KRN#z!?X}boWgjVtPmJx*m&5OpcPVaT;TPYO=&1Lg((sQT#3$w z`dwxKWEJ^rK3^-EJTWnNr5!q1LZtw{180ugUhX7KkWB*qV3dA|? zFn@ttHRNOfzuk6>!2Ne3&&#V@+BRtGEfTJ?$kaT5 zv{nroICG`~WW)S$1o2}>K#VzmrRpd#m@|q>7|e(UTBu4)ob=El`)RiP0*CcA2LdB3 zDnDr5xcRAe?U|?|E9=Iv5Y)0x=VkM?#uayt!kn=x!z9NfK7EQDtQ&UbyHQ5;eFf(1 zZNp`aNP&RV>Gg~;%iOoNzOCzd%HeSq2lVJJjw;OES_K^#^{a`hsQfo7&hhehzCFVs zMfZg_!jS8dMuk-~Sumn@mr^fEr6KcklnlN^*u0p@)P7qNp1X5fK5#0(MPoJCTk$2k z*GV{+)$8fdnuRpLnart#kEHjiFr+u<2H+EJ5lM#o6Y9>7z7iYfkrkieN1Wfg1Y&N| zi#0PY%)V)4Y6089K4;D(qx;H^dURsDdrB#G^02sk+6kne;T{1KPn zZ>wZ#l^nWE9DaFh-~6F{b^(UEBhxP;tOOA2p9gk^AgzASj6IHfWpbqS8lok18>Qet}M+NDZB@J|y5MZ4`P0&JVO=KQo4GWtSg-xs`ey9P35Pt1LK$ zrKxZaLY+_zmSZEy<^4VWv4g>Ia$7IY1ws&oB%WRVzT*6RH2%_(e;%XzX%+D#o#Fi% zy3iu^v$O`ei#+Cy03P9pwu5{k+k3KaN;NEzD&+D?yIy`oO0Rw3ps0NDPme<2@n#%< z`TX7)w_h!8`W7WFV$scyw)4j#+cFFfe4H9hO5I@<8(7?zz6I}aEE24X5S;(cRZf~F z`h%0a;B7`dcUA)&7Nt;nxz~2?JFR<88cP!OvVH)uf3-h98h4{>NzKM+kbVeHfUS== zpTk4>sB&xKDT%l@m+C5qFE8=0Als_WU%unD)wy zN1_QnC*iH;O^0pCbN$_4@gp&d?35V*pR7)d5bRM-V&(9G_`q72gy>n78R(`hRt&T= zn&%X>(F^9b{f&Kwklo48mj>KeDw`padQm?5Vj?cLER=WonM(T_Ryp#y433zd;u*z? zG7TAVkR|8rV|!!i@CU>AvTBG4Q@@RP3$2Z+kd4v)nDMc7&Zj<*Z|V>RGke#aSgK&l zya>7~gAHeD5S9?r;x-|9@l?%&)an8x0fM?T=ju&_P^TdlR?>L)FKM|v9lQ0o zppFT~^R&GR9TyySVFX4U1yi+#BI@k}%EhplYN?{v<3tENY1dnpdq)X0|E><`+yl89 zt+mYotwd{`C7qC;jMgdko|IrKUwV z8BgF5obcl{hlPJ^3I>;cP(N@^1yQ3c3EZ)|b25dUgv8c!&K^JC8jT>bX6Jc-L9RMs z8cYokzKq2wr2<7pLlMuE$VGACVY(rDzgD5v6;`G_s?UHu<`&Q|ct!sLJ)a2rOj0-y z#7H&gmRqT;o*okF(hk|Z(H+caRz^Ir!C1s(bC_9Ed^}gNw)=7_xf`VX37p@C=pp)+ zYN{FFNPn!{?H*y$Y1Orl@a-qZusP1xvIy9)`+oy-f4NzMG4}#<{^xur2^po>*Bfp5 zu5>3tYI?Z_g@pRa>4cd^L%RM)Y^FClH-L|6ofR-0Vd)eV?Fd3>T374P9<&^}# z1@QEY4Rz;8Kud|J;*tYc1O{8hLc6GNd5w{-sBo@g3Srdkr*)y&G!z=sTP(oor)yGU z&)@GFa!%A}TAXDP&V~`s+w8@W-0EtnC0H;t?qvrX#yWOdBtv`(rI{@6;@Q2R^=Ka! zFbXsKfT*?wHn14`)b;#1>{P>=h$P~()q+;>9L=h|X&)$w6(%a(5N0lT60)l4Bx&uj zu4Eb2`dSxD$hF@V7`7}lanc7ovhW(N%v!nqgG4}FrL!eB1WFOeRJpxs-Wa~RMWMQw zDJ~AkJb;JL(lrJ8sk%Ie7I1QzGaX5bu=7c;3eA0+hZ%aBEM4qzA**vGf_!@wtFU zG5lHov!AZ`UEy!w>9S)u*0}kVZXvOXsf0kcDz!v+RLZu36%8Lz!Bx&gp2viBzB<8^ zz6c+*k*7<@v=o@i|YZt9lAHJ9Xmkc zU}}B%aogWTS3uuQd-QbSyy%SJ#&xfRW%}vgfj(lj-k1Wtb~#wyuoyF)8mml6x0*>j z9LGxs(z~Q=+1R}Vwf3v}3UHiAXDXfsWmc8|+E$KjlvdcU%YvlXGiHAcu(=NQwTgLd zHA1koW;Qc`*I(W+UUAo{Eubuh5KrA=9>EVyKRWGbWb#SO_eOtQb&8sY3c7n8nlIKYJWCx}6cv4RvEc81AmH327l;{{||z1gW(`*M=K_ zwgG1k>+pZ2QGQ#g0tVJs)pzSCaMr`nn|?2h%airw#6kht$i+0>uHDNW=yvK;*;oGV z+n*I=v@Q(H*NoTO@_<31Y(%~&^Ueh;neg4!E-IY>ThD}G>uW(u4_wJZ&bIq8?UX`N zz>+r=xRibexZI&z3@6qBbRG=s7u+Q3$QlVr@o|>0@fGOfBgDZmIs&)*-ZYF@E(SrI zI_yEbPw?&g7~_=-yWpBU9)m2!oF~p1Ms16;__LVko@Ejd66}}4c)|e1>m>M-2PfxG z#0MAKmgQrS6qott6xN8u-*V>Me zP}b!NfH76P`JmiRVzmBXfOyM5T-rTDoUB4*2i9q|9I1wS@dtr^o*dtP7=FCIO8 zng@BwZ|{@A3aUrn^#vsX{~IcEjcZ4~xA4-=IWXHtA4$Y%2?jQX@OFj_C!N)P(yGJF zsZO)>^uYSKDQG^E(1oL>3&o?C{o$rdJlgoKvDN{-QimQ7!gN)Sv0ik$#pv+0x81sv z21_slaNrQkgGHvg(#$LQjxps0C6h|(h}1qV`u9dWI)Z$UhWA(8_d6a}E8c*>1Q$!l z_AcMm2>-jz^mH*?>Ci6c@<-9o8^^)rK|&Hos1^v(Pt?oJarG>Y6@wfmTsOn3`8Mzg$C^)Ya%fmMpBwM>^a0#2I&C@+n6woRqtghn+UyHZ$F-|7qKJ|j7R41JWK z5hSFsi8tQId7Sos6MW};$ufNtcd#IE*L+Nj(YwaAW5CZi11=Qcif9FXq4?NjBP>pU zC6~Z~gsZ7g)02?z{EjISu4Nir0r(5vn58e>rtcNXL-t}|>WaovA9-Da@%at;!zy!c zKB)+)IS%~0w5QzqdI3*On7}gahDFHxfajxE(z4BHC2^i^yNhZiH^>)3=iP<0U&Wv0 z1P%AxKDbE>w_G}zIfE-ZSB5-1uI5^&XJcfDZJ`f|3sebgzs->(&A(ukzEX1n&E zI>*clN>5V(#@oi=rV=L~x^R57AuZ7(Kx;7q{$?fcE>h_>#|v@{lwNv%AOD2Lf8`1D z*AFDEQ2H?)Wm=|8$YJAs_C`_>-=b38qrC$&tZXxTm!4OfIN)$*7#1Ei;F%c={|-Cu z<3EHVtpYzwU?(eF&49^=$8WK}GJ$^Oy(UL|po5tzO&ok=`WIX;oAE_U)v$v;180g) z^walFGQA@2+Twf-9Q%plI2G@YYw-{m5#3GaEa?=_RMpf%=xG${{K->7OWmr z*fDDtcJ}6PqwUDYLf!=iLyZVKD?(=T>0sT@Y4}{Xt7jODY*g#HL4G;}jKww#4+QAs zh)PGnc{gzpei4jfslFmerF58K?kvPLB zFIiIRPU97v#^PCE)j_;YNh3Xd=DNZ|?%Wwv!PHN4WcIl5ZL-fk-K42fZET;b#ih(^MMH^sN4g zYHBn=I#_3>_coU!alQ?SG(_}C4gGTNuidX(g6Z7Ziy~Mn^K-t-fK6ro^2Vc|2pZU}TE{OcyH~;a*`kNRg2|(79RR3!8P$IbKjg znIwW`+3N5*`QETBb*O^#+lfp4aQY_q7ItN~7=jY$tgI5OT_bU#SIC*Ke*MkYN0+0C zjgpX)N&f-{9IXZzR2|^(0ElB%rHgR-E}^5?Y9OV62ar8Y$?uK3Xxo)PFb!bcpFp15 zav`SJaKyrQ3tb75CI;aGR+u*cnO%k0N-(Dw{kB8!wwyen*+5e^VNEE{ewfde`qRlJ zn8!s>Ge_Nh%!(Y5n9F57rb*v3#pwvmy9f|{iN?;y^M?XoezXeNiT9@$w-I}m5bvwv zhsn?5+LCy?4|OvYeX78?ndiEJe5$)VxrJsEIO4s(6u9G}e#acM=55g?RG+C*|1`(9 z4<3>kZXj;V0Kj=EImMc;X*cl8T0C=P)uUd)!HB&_bczw*SNH_N$+dhT-z_WYXgFu# ztA;mh{a4!Sy9F}r%oGiYm{*0{e~K9??du2$S-kT8#nE*j@@o>!hQlD_8G{hqpbu#jSI0{-qH)8~0&)v7D=_>t%3o_8xnXX7WKkD1{9@2OzEOElrCUDKsI{4j zqfcQT?O7bWe6?}9L(3r)FL9gOhV4&c=ST?)>Re~XQYAGi)hU^bnrJ~%bbJM47l4MA zT>G`Wk2K@uMC6?RTAE-buKFijvIAc&ksQH%o_FNmnIqHGoEcOY9Mlk3Yln`$!s>fS zSTND?`>6ue0HWqvD48!MUoT(=2|D+`7Pkng)t{?6!kX!WpoBM#Z&%no_)Yc5m$iH@ zM)A$`19wKB2DCI}cP03ABrc{q@D8z_vCEH1jlepTJxFC+G)R{NeqmYL32(dp!qBXA zmG~$#n4__MX&&QzPL6&yWQi&XR2EW>=-6?f6;~A(*U)}X>Cfc)7@GSy>g*9_(qfaS zF8sDqaB_VSl8;JkG09Q*E$35?IH@9J>J+f*U*kw4LBRGMDlL=4SATa^Bs%0$qfV83 zok=uLV&k&sXQ$p0n}4$uIO zLo#Z~xg-?U?q&s#PqZQtl*rXGW|Z$IY0;|3ee(rBW`K59fj?+#d3{tU2=ubDi7Cq1 z`Tb?G)@KOmVZVd^XJkQFx2|+bD~x%-GI(vW6Rt375!xz#gYh{~mQie9Z94YuZ4;5; z8g6*ZKRk?CLzU0@#))Uyf64Kg zs0cK!+LBc7*ZsA#i(C)SykN+@eP|P@8{Xq#7?SJc&vq^nt3huLAg(*Bz*s14{ElwG zTIN4s%3uHu!Av1+HB_^pIn}`F6FL`eP)(CzPwfNOM}+`1BYanp54tNl%V8JtTWRuZ z2eoW5W4c^CZr$K@TmEJ#R2K_3mQ?!On72?!C~47Lo~Hj7J{|GQY*#cZu({92CPT~y zzU)buPzj(4ZD@-yKp>{bUyA%=fnnhn_9xDlKmLVhD1lxgPbO%P7Hh9+4R00!7Oga` zr9DQ#9rD%X{(Lwk=sz;`XRLwaL>FS77=L~oo+IMqFh&p%1MNYD1S|Qhp&DI$#2UkQ zAk=*0-HPbT+wD~{1O2nT!_rS~;T9Sw(XI(5iZ033Mvk(E?-`iWX%h|gibqWA;?0FX zQe7!nI09DXjiI|Kx5c|9PLYk>4CdKaUUL65b^MjuIw%lcshYf}Ypgk$$MmdQW2){n zUCq#qtdO%WK|ZU%U9t4~*dK&=HW@`cW|FVE6!q?s7Ga0h;iD6$WElM!Y3z>wXKI(~ z%V6~~$yUE^?E{tad2J^9NR9~7T4CI73Vi%yF8=9#Z>b)h5?oL-8?8mRuulwgJeMEL zSSlW$251<;x^YFP598S?8a3(^i4h8M?1pG2zx{3&DPAq&JV%@-?qjES5NOOCzujQ9i-PZigQqF%a-+hxK1b%R|-?reC z?U|m!p|MQnPE6jit0JZ( zWlqGk18UsKPH?h!tx`uKZaAPrcN>SBqA$W(9H)17$K}VT{sBd`nnLtK`a0gF_NtuD zR2IdYFN7{1%&%K55Rl_hTqe>B%m!7RO%l6Szz8cb#eAt*dZs2s6JWGCVp8U+y%)_m z-tE4)D~fGRrLa_GOd=OZX11XbUku zssZO#8UuG0cA>no(nDjO+jC$;6j9-O)nz2nXFcD~u$ z=8%`x)2bs`wCfH9TP_xDo^W!8t+J8)@TFW-`Qh3|L{BbOI=05yEq;=A<0P$QTGB*b zj12!4C%y6?2gNVyu#oxLo|8|Dtnh6t`ZKthDQ zX+9BDg=K59K&5Fc8wq^2l25$omEl00T+MG0d42OvQgnrBDwP0^dVJIz3)_lbx@hQt z?kX&R8Pbk+YPr?eMg!AnNR3XefxJDRr5l*oMIs*xh5?$T3eUgo&4(V0d;9gU!*;vI z#n*x=USpI^qLDt8v;NvLJxcJbZ^bPPfB2~-_t8c5c`n+aI72_!$7|L3%n;Lz$c<?#M43%g z{~>*fZ_G1?Mh48f5EHD9DVM~C}1)?_+k)7EAhgj5Ndtqypv05(O5f2xF8E31EfapQW}5|^(m6O!!Uhuw#bvsb&LE>T+1wp?U@Sk zVIEa~6}PydIa>ask@-~N)d07>9g%*CR<=+2_5K#)ek*$79o*htm~cLIHg|Jn_$I-l zg>>F;KYm{(;ZbA))-nyWmc7Q>L)^B5Rzk=cIdv3(ypq4+E@+ymp0aZWBD=sx5&YEN zz6ojLFITC|WKIO^UZ9bIw51f)7*^2DXBWmciv38fv(8!bQS*&+8j^@4Kb-=>7)HZ% zFn}YmlGL8;{zOT4KgmhpPOUiCN8Hn-F|Q#|K#`{_(NFO_zN`FCip7%~-Nk+&H^nRe zS6WcO!b-R7@t8ZRMG+J9)oRk10*YPRK+vp^3(fR51sA^$dpNi#9;VLB;VuVv$$G4n zfLC$yF2Bt1@S_BSW}YJ0PzWp~KT3j+v2JvVYdzamAWnvOw}YR^rTLs4=+bcR{Qi!r z3OmY?brsGb#6UR9U`i2C1a(vPYjR)E0O-j&zqIn6m~|ndhOA^>je}D5s=T?zsMul+ z3`0SMmCaK^pHQb=lzaX%g6B*&C&cPNKLbGs%8gWa4x_W0{k>J;Gu8i5-73%6@c*!0 zwkV6~8C^2#@gfX5_D!?oW17Y2Q>Uh1MsrMBs(+LZG!p&eB96+GrL!g?(lcEPe})s$ zM#qjw1_l$!H7L~Txbhn&t%93pV4Z@)H#B0~;7N4fRsRotZJF|6%ZE!p^#$3)R8H>v zaF7r~j(Om14J7n3@dekiVKpQQq2rJMQ*-CzVB+R3b@&0uoMjke6HT^2jpilsGrpg* zpJzFzrGQe8KCI9QWpTK>%W!+_mNm!Nl3N}%@f;^CLaj0>P4ss^wmLIdO%n1v5FiA_ z=}Pw3qRgHU#|X%5EtP@Ej^^Zljr2 zi#6}BI;OeHe%XukmwQ)DCMKoFQxtAf`kw}Wuh0$#AFgSrWUTIIL=qubEgf>hL^K^v zffILBxAKuG#9Cb?;(E=O!g?^h%L%m~_JSLz<7=w%VEoO{Q_rqkOB$Qs#sZ(uIjjz$ zf(yPteu|IdRpTV|qOa1p)V?*_9&Dxo!*>KYwU=EeI%&xui#Uc%uG(}ZucM#H4CuSM zAx(K`L%zyc@nI6jN`BnM(z>@{WANNygjaaiEwYx=R7u)^d;v8uWyORMyRLbK2GQsw z&>UIAIk@+Ip1GpyrhDsUKn5ewDZ^WQH815NQ?~4C*{O~AqNKoN9tT25MR~XnCCJk1 zBRS1ZNynC#Ogs_@Wvv|R%ST4x`b0bv<{Xw-W*Jz+l{y>k&@|w2h%GN*Vva?~2nPOA z&yGN~u(|X&>{EK_@gn>cCQXks>$`CdlN&N%UJ85k&C+k#jy4bkp|@IA>Yh#;`WUp` zHoU}>pJ4f*p8{8OynJCtKIlEpQ7-nM+W|q2-JH$(YDgo4v~%w+N&uQuFgr~2s(bO9 z+N9r}_(ETWyvrXqga>+&0`Zx{Q4Y8%it9h+8r#5!vbPIR9Pr?Oj&9FQTahS(`LWw( ziw7M@0I@bZAOFKe2txkRjLk5DY14mLb(z9WgAcqbjzFA?RfS12%3n$#l~#OR;n=sW7%eo$Yv)Aw|dujYK3@ zoy$cTX{>+JJ2XE?Lx~(b6Jc&OAx{;0nT+0-_Ol>pbhxahK&FD!>D{9#eBh%yH50|E z46|Ta^I63}b}EtKT(qQ2DnuX^q+m{l0s^L7 zk>CJ%{Y#w1*U!@Q31g;nrYR7(*!=Tp0tFSOZm1?6u*XtCfU3JSC!*pG3tX?mO8f2u z^{MYTjtQLQl%)HiGb>%TfAGksEJCSe{zht2jB|hopKnR~kP`k9h(Z3V;0gAO!x@IZ9Oy)rBcAzH|7sJ?ppTodT za%#N5@bL`x>AwYCD3OCS2GtE`>x>gEl;>bK7Gjj13&Rx`Y6hV=J4!&tBLGrQo2JYh zqGn;^{=8@2M~XXp3z;JpZ=LtzL-7`A<`Mkv%E22QJJoy+7*zis<9dL0Be|f=5a_$- za=}bqO@ezC6?=4A? ziYhB|f>va2l8v}s{HWv|tg3!z$S;TIjZNJ0W4kPma%8 zI4j;Gy!!%XdR=kZx?T65?YozwjQ;q4ijeQG^;Eh+h8TQo4^(=n{|o zG6ykNv!rA0Q{kIl>$Ll{5I;Bxn#=b)zyk9v{vK}Uqo{kJ)^apV*be)A9F zUNQaqz>d-w+&bpp9>cgk07_kRx8vjkPl{}1%*}vv zhNTTHpSTFRsxpC_U>P>G7IeP3r@fwexMB2>iClzc+*dSbrMgs$^07+1dOC<`*lST# z)M?ig7aBET?_|3ar$mdy6M_O<0WGMiyiUuaVWi9FPj<)=af`PxH~t=I|xOoJgz$#57?myea$!WL1*8k;XYx7nbAk-s%KMvw7Ywv?yiLO=rMpCFDE)<4j`rUc3{qX1sOIv~Ld4IIiN(QT_Pi&Qtcmdo zpIGS==M==;J*BVLZ0xOZ5D12eUeG^pwS-{e49`PlQc(4T{Gx$#U!L#-7HhWRtOd}L zYiEOYh&FY7GD^2%`b{WKP%Sd?a_CtnZjZcA(;~&RihlI z3Goh!WE#RlRn{Mabyl_htTHPXpNF!y58fd%ma-d@X|$p@G=Posm1;TF@Z z;i$@2-XS|@;`^4#GQPCxvHnWWT|%z6xK~4?%d&8sJsmO&31-$JYy8yaSoj*7=(4ZT z?r7~8IR~G+@-`_NV=pYH2yzOMSxn9=zcQ{%dHS;EY-t3Ypd(CAOLC$jn~Za!*!T)0 zoaB!@)SlM$tFRaIn1yE#%l>%HD?&m&&X}G!O9h+1YAX^r_?^F#$VrD+<@n}hwp2r&~>Slq{p4YZ? zJ|Kg(uv5GkMar@iWwnmUjThXAz2fx@FqH8d&Gvw!ff)( ziMsuGZ{1l$bbtVy@bv1EVN^9z80o~QpM0&$Bo=HoZ#2Pyu*3CrK=>qL%-4@=KPp9p zNsWK!PS{pQxlJI|n;Bku(ZFwFUd9um)4FnwS`%X7b4AC?NwR*UVRhn_U;H%P47wcn zI0pS?$)=Gb$n4~?$$H2E>dEqpSwG@h08V6I_?v6Febi19$NEw5{GteCP(^dzUZcZe zaZXLlm-Kd?YP^zeW5cAQms)(G8Z@YvsPA6O?)0)+Rm5=5gAN) zot&IrBjUoZJqf8w_-d&XQoj6Ih-<*AAf%n#_H^f)gO*Yi`fK9#_G|Zkm-|75zm9LO za7}|xYl`Z#;(yI`{(~--iygtxpPMioAuf~$%!|4B-fPOdyMheih`yS6%1t{iL>{F< z!aD}Bp10T)ZvIV?{8^ON{$7uVU4F}2;GFNl5ZYvT8W*CQnZNt%u@w|^P%z?Wd^nyE z^P#WcUn{piN zmv_ki!ECm73u(15P$%a7YTvfMLUPXL%3JKP&6=^DCx+xmI&KZ_#(s)#T-GN%1`1S3 zxM9^8q_ep2U2;_NVvLMN#&}#qK3uq2UMl2@UL|)XUH~f9|tm zpPv%|{MFEdPOPUW$!-P{-!3VJVh2rC!`#?opyTWoG|!0mq#rY)rO7J7(Yr-?1V-`e z36wN{4AMO?!48%UK|Q|O@(u8@?7f7I?9*h&O-`vF!p_^mdNeG*F|)6Khe~_2bo# zyc1&20XP#NceLFWD5ginOdYVo!fd~CYcz_N8u<>EiQ+=71AT7~^u__LjLd6c37mTB z#=lD;Nay_4&yWdKcFl$lhRj64Y^!u?QAuW%7ZX0(LL5UdzW;PqFtJ!aDnduIJ-{D> zvr(jNFQ|*!MrFhQBk2Px_7ub1X2fdGh6A3jQzKELM2I1$fRKFwGPjYaG};(il_C(% zonz4Qlr#ZWZ`BGARrHd68ro@Qe9bD4a8Mz1zslG{jA7-g5`x>G7j{%=Yn7I#+gq1@ zm{V#PH4rPUQz>9masQ<|c~G6^0M^1BM}&*KuIrr}a`58HX%m{?^2foH=_qrQR)u=QQ9py4=oyxXJeiHcU^(Mz@AVNPd1PBHtJ0H4Uo2KW#F zJN)id(kNmSt#RCKcImZ_eM~~COT1@d+(f|PO;S)^e@`hz{_16ji~DxOn?^;B21^0d zEdjFDP8Y-*Z_s&qS#iQv+p4H4hp&(+nIRX*3pDCkYd+eRJ}t2%&P%lO(gCmm3@3G$ zkOCfXt77VJb9ip>gh{3(LY!tp304zJV)7W5$nK`ob{6|nD8!~QAW}S|?n3_xSs3n0iqSfy6hKI(G`uTvp zgbmrB(e<(d(g3K|9a}wt5fo+a+W4L2Z7?8OIl;sldiz+fJ)HiAM)&6}l%J(x5!sJ7 z-)w1h?;Ys~7-lP|TRxU}X=RPtrP4Qus7O3ZpZ+Hk#ae8+sKn}SxIWcxwb`BIfu8wm z1d3wTYGIvfc9PK>EoE^;2PjD-BpxAF-}mS1i?pW#4Ca^J&GUjdORm%f3Rn_&Z(6x^ zvHV8X{zY!rD)gcQ5bl<-_bA3Fiy7}mCjY8)n8(A(?JYV|ga< zGYkmlX!kJuOMnb&HJBI*Un&ajf5gpzsycC!=Poup(p(6LHYKk5pJ0;cBrJ&!$Qilq zMNoiv+Ms8s(z5XNw@^bIWEV9{v105kCR7bZAu)-K8%u^~`8GA#h!bHFWD@$|NBoBU z?hJ(R99G9zF~#+&z42!y7$&P-GVqE|=9Y2gUfWQt^(Pk?&)F0lYNTef_+ox7?*K&u zRieK}4xjJPjabL@DH~`90~AVT#vU;@yhK<66?w#T@(O`WDob_n)8|GggF1WIq+^n243zhX!2Vy z)0@0LBia)sGpwOkLAtn@k7&ZDSOJr_k(i^65U{LGqM9mPR)D_ z?+R06MT?Z^I>(YQ4QGS(WR7^U%;(A@Tcu$S?xCrEd5@LD*~DS$yZt4? z6B@cYxb08bl*Kyreu2^a(X;S?^dpvA4dFePM6$(g(7`}WCs0<%|HLx85L7AWeQh-wM*BKaA&JlQ}W`WKZeP%S{c0ADHfz$oT3EP z@38q;V|UdJ#xfwed_F&!ZHoKjz6Dt{>=1Tt(6+u1{urT+9=^2fO9@fbwC7to%Hhlp zXfX`zzcwn|!yqu*pG}B@(~!|9J4NYi&jU2xbIs@U_L$<`HHfy&X}(kK(5VFug> z^N|*#4%#CLc}WZ#VOb4V4gR3*|ywV&Wnxo3^kgM zx%AhHj9j&qgZ+fMY|%+K!rp`AyqL?(gwRYf^P>4B%BrMC7<2Fe@sapoIj&7BxP7isZ0#GxbmO0f3hx_H^x0|WsI zYC_efYD0M~TXY05Cuj&3ikiSKjQUcTj8kc%SqD&XA4^G4rLxuBwi+RH%E~w(qlx{u z=s#JK&tT%fm8u#TweLHKWQ-%J>^zl!cxk2p2kGSW< z9}1!1gxT)?5K9h^Mf%Rm)B{L!thH^a^!bA=Okc>VvaJ=q>zvjbCFqW-4gjX%@!>jF zJcGYgXiV>q{OzVl2w?~8%{KoC(Iq>ixk4#xN)@7LpXb5lJ@U^wm zHm#H)`)`|)+KL!wHCilf(wHa{t5)6WeLj*#)(Q3^>kOi2C8m?6WbI?)iBuzAnO{wq zKzEIQZOGIu5ml5ZLIqeJmG{lziA&Z-@Q!K^`a|BNRcv(c&EFPW$5JdL&)x(2%E)_I z{i06Wp-k%0K0B*O?jDs2w@CvB@=Ayma{>7KYEtQ;+YyUKtS@1h9pZhiy}; zNdzf?O@h%#hrTU{U>Kh@SJV9#q;2|VyQKJlSPoPF*%`Ai2^8qv+Wz9nH^U@ESbe5G zM$S36$UJ8;UbV!6(bo22PmxtD)FRT42xL{a*%)X&4$=KvBN>kkO|U@Jl17x)k5^-WQ~-Iw;L^ENFM<_#=> zkgW=gmEDgO2XaIcHCjCAE=zQjc`Ov=o7S*>lEz1_HQ#f_k|V$ zrfyzlTh7;JtC{Ql!B*ZVoO|tp!`tiS%#7#m8_h23cQqfyZlKIOSq_mbfZMQtDTcNg z@S7PkC802$)O;DALdxU3?rp?9JkSi=0Mu?oh$$&!vwfctHAVYpsZeIqRLPvxDr^O$ z20b=?gD0F!xW$z}!Z2>@E$4R?yuz0)Q1Wz-nN28MH^^QWZf7RFq_F_CqQ=F)w1ccd zIul){FIYdh4{K_S^*E5^fg;f6kN6oXG%tNw;Rn1BTgH>{5P?uCyBp85m`FYnP(e zoc}fNiwIu{kGio-M`&*7iN=SpNOad&bF4!wAI|J9u}oMz#GYbgJ+syL;&-lsctRN* zgr%-7*aLY<+h3Op!EU!5yS)kuo36KWmUv z92}Q3pDxPQ9ETY>hu#%p*ETA5c1sb0@jHhWm)roh*+C;+MJE~3k)bi2(8^(M@M-rF z?g2atU6u1ZfQ2V~sWMFR32T2sk7698@%|}Nw=k{9=;|^vNV?~AO^Zzi8v+IwHM{y* zkCA6XLRt$6RP#bqpxNZ4rLMb%a5U&#QQ7YQ!plG0^(O9klC5683N7-I1pE_5T~;KXNs~HfmJp{oZdJ=2-50jIsc;bIk~)r$ zXq3fH>}eU-PddXLW|?Gf;((NJ=>=AH3!EfUWvPjNA2$Wgs};EU(N@{{;6G)E&Mh(= zD3x7gLyUpizQ8aCx$mW0%+c4I%{liA7GHxEGHU0TAkIFHmF+12{dUXalSCOcfH zE!*3!v=1e8YRj_FC175wLx~=jzqn=7PE|AF){%B|0D=PFP6I6)N0M|@yUHNK5m1T_ zGD@NtIpe1hu8&eEMQV+* zIgd8%6W6zeGY99W-6K;71OX@!ApwT{(gi!>#ScQBbfSY5cDVqRw)LR zdzQWr>%eHr0G)u3;{hTRGR2=aET;RaYN!YG@VZ=1-JL$@pYPFddPktnNa27vU?~Z} z%C9P6QS&*451B;K-$qW#0D&s-?+bKj(pT{Kq3Z(VRydeM;EjRf@5qp($V(0XYOc^a z3^*z}Mv%p>T95u2u>ta*Zh|#dHAqE4T;Fwonp&zpLERP0#_RxFelXVuX5z4hv}H`k zY2uZF;;3YC1Dht7G$xr6jZ6(lvK*!Xr5yxHW*G3|Xab6MMDGzcf00^PLTMz|X5zJQ z0A=iRI!E!PXL!#r1cdmB(Lp1G^!%o%LwcF!_>?3yD%0z_G;F9&S?yZwPEC#M_xGFQ z*m^L0B7+l8Gyx-*yx;)tA;LBHd^n8yO%Ps5vr#Tbg(P#GI{dVIn)nbEXFH&blj0$#SHtG-8Gssxa3E=bb}vsV-BB6H>+R(GwOF2x?QW)KRs z8s=F$xUTbd$Wdq5P1@8FWrFAh;({>D%lehM4~_L-YG2DLhBZH~nPIa0v3U7Q22^kU zk%{+^oJbi1ceB|y{GtoURp`4XJ2q5w2cNGFqf2g8a!E%n9ZM9aulrIl4JQHXe#c`>->BV3Sxn-gp?( zk;x{P?mZRt8c5!W$DCBy4xswfFMD^5S;4nUoaMOKyL!8?TFMgJq19HImIRSDeM}du zsbv(K45Xcs%fz|^88+hJ!I6t8QRKnbHl|AAjmR6e>@$ckex*%?T6RJe*YU`fMMrS+ z0Ytt1S9#T}#=C9Kv{SM|6y--W2%B4beeXV7Op~eK?Q8dpxAB<;crIANC{OcMPKKmJ zo4&P}HDa&=ZxKzTWHgFiOZK}0;0t%gqVAyUE_5qd; zr{mmELGTpaxD%%-DN~U9y{19tc0n>dk}uZ#DhtJa(JJ72PTz;Qtp~zKH=L-OT$8)P z$ej`rb1g=7VI6P|s%ukfk#GGcpGN+<1VIpTE+XSVYK6o85vsqag{}@z<(QX;l8@r> z;?L){Cl~7B>V{sPeg*!z-}WK4|I!>EU!e+lMbfzCzShXu9kz(|XgWE*cAd|m(k6CN zRWSnQco9giXXpaAG8=Q> zwUh`>$PnPTSg51485VJEQ3MKbjuvxPm!ls@zeHK~JzJg~!fXFpQmKNGg5AgC9{ouy z1kTr$z*8Wx0ZIY1&(pl{o|Y9AYd%~uom1FR>CuO-#Ur{bZ%GpP8e(m5>fg}f{_#L; zvVlSA8G=$X#!c)t5vRN<+6sQaxdDiiisyoqaWhYw`$xvVhS53C$jq^o-EGGgA%+gM zLquf#1+t(PK2Ml_cH{qv?bRYlGf&X0G&JJDQHy|cc zLEutXxD-N1qMz`{_tZ58*m-k1vIwp-EI^S%b_j$h@*T6)lNmEuL*f9)wG41+{Pt~; zJ1@iy02h8!@=zoniSg4y*t=-zD+tx5{wCpZE!zNjO*%D%mmEL{_5#pD2%_sUZHreQ zx)&SNYeFX|#}X7<%QqqkAQM``Px#62QBB<7LOf+|RO>dRu$M7gZ}J1X(0Yhw z`iY3<+p0zrORU1e3^jDP4LLD)DeN3MFAJMaBY9s3Cw%ZbBFZ{}H|pD7gOszf z92GreZ(o?dNstUdr*~hV z=Pph*-zl_GB+f~eo!CTQA`BC5E%;;%bJC_50!ze>j_!{m#MeWf58cSsxEl_bj*_$x zflv!Zr@M;bb`5R_>4mTGDtEyuL+)CfShqWn^^%P)h#?hz(ws$Ws^4k$&AQ$Ye&5iB zlXP)JE&q>&XYxbC=Sfw<_6=u8ZTzTG3qQlP*@Vs=z%`_I^k6Uyc%F}f(k)*F>7~h$ zwQKQs3xd9hO%cp275{D2 zv)Au%u{9l;`%xClp4XkpS&6FQu-qXQ!NBopbzNP`J@2WItFr~9bK#Bj_CSIXk$C~F z@KFsRXUbY&aCXIm_s^_(RKqqU)^VZrND}5*Z1=7hKKc}D+1NyqO&(a()ru36QN#DQ z=sLG#vu~Z4Wa!%KHGmDh?iznIW(ke;4djY5KNrW-!Ss2a3-V_U&eFxtoh?>%B4G$? zo?n)VmB5;~A;TkteUo{S^ksS*JsLghFW7f;y0XuiY)(U^@O^T+&WW_mpfOyLFwJe( z0pimFJ0?g%MRxmXtwi%1{3kSh76FkwHk)_?TT68_l;HczyD0C81zcGrp>Qwy=J@$i zjF7|^gjcSE!7U8qb12s&p&-s=GxG_zN6ka}yJuvGg+q135dMF%t-$mQgIAZH)KMA@ zh}CfxxCDda?Bv6$AQYzt6v8Q-p~<_l;ool&+}Dk;JcjLfhOR4}J--HK+E@%`D3+Jt{P8 zKD$)8oPIL2xGyD_B%~LFjD!1G1e_cDKkAnHR@$(4rV5o|!Sm<(vTb4TupN>Z?Sp~W zjdxV<3%8V;2WAKQ;?RBEh@hb7_yGia9vMl*=YRrM-q)84o0BBwD&HzHi7(GMM@B{RU-MI5e3!K4lQ9gE zt$iP5F$~CnqmRAayU5I_K)Xg0XmGE8rpvIV|EPs`4E_OR^&M4cCB_hcHWMgL5S+VJ zRWD9kgOWs)+$I%^^EP?2%GK{JeJOIjp_P<#*XY6)c=c&gXnz5OHY} zkB2*XCud#`Rz*V~v&*9C!-%X>)v(u%aDUH;i8$l#*I!4GU&C;af=cM>bV|7D`lS6b}6ab z;zmsK7=lW%E>C=91!d?awTaWJ?;|DL(nm*{$043{D3xO$hxVS8;vG&Blaurjc*Gi0 z1q>L@mOYUyuoTCilvz{m#88Oat;qA$Vhc>j2P(6am&(n~=mhGAU&eR5yMu^?$AoBs zL1OgI%i`yl1x5i)nkrroR#`YV^PH1%;ZAnWm)RE+s9oi>!lVlz>UTg|p`n%~t+i^d zp8O8+cpa3ZSZ^C*nPR(N-~D}6;UVIenPPi3MT1A$)Bd$9`%X`Bot?yCvQD-@rOXPR zA#9er46^Xwk*+5aRpB;^J2C87s_zZ}bs15W3vpS(1W6WXa=hNo3HXsf)@c4G0<^r_@QZ;Dp!RD*J+A*e2w{MhiJpS+R+vG>je;t!n&C_y4U3SYns|~E?O%AI3>nc}H$nvt>+S3r}H9xNT5)3xefKp;z zapc~aE<88d7Vqj6>r1gdY&#QtCSgB^)N@jKz+#ky%zE?WkMU!#iy!nz3|4W6ZE%>= zB2lpafB8(a+m+uFLbyu1A-9wyQmP?0Im+)tgzI{wxIdVdd+$(Q*#&^U=I5C*z&!+_ z)!7g~wLt>7n^R#tt((fG&Lx}>X4G->A}y;+N?jqDX&7Z!pD5~aRKyTR2!_+qBCOo( zL6>Pqy#3o&CfWMljM*tj(KaaS|4NcKdu#8(F@F#-Zm96*F6dfgc3-{(K^4<+u$ud;Rb( z57)4JHnIymXy4KVEWKV%Z^YJ=tnJz7lUCawe8k{Mtd<5vO+JGxM|^5Y0ap3l!+s@_(!!Be}yVmVT61;HXvcOoL3x)Yg0 zt3l*S;oOb?;cjt(QOAe_E3b~O0X>R5gRvq!J?hsp4RcaEV@3ACcM&*2W}ch{ODZE< z%QK3R#Yn5kdlf)F9YUXa)?|{(-g%D>Ryl4rAk{*j%E|QqZ z+Y>k$lxGr$ZlmsqWc>cvo=lEW{En4~i?mU@J02}u?yHXmS|$cb%tm={R7s*C(KWD6 z7h_rHWg?`D#!)~&K8+dv*>Sjk_xR?ly|pTk_ywdm((Es=zo1 z=X`N$rQn8tq{$j0mTA_hKt?>jNwo_)JbV zVrDYvh4)K)+nlXHIMShL9dZG?JyRnFsc}Bqkh-r1AVwl=^mrd=HZ>!wd*EC3=2zG+ zd=xYCM(l%b!>K_N&W6+%{WD#4%RFg5&RKKr$`7AlrJ>u&4u_e&%k1; z5V}an=4_}|C0mjh01NP9C$N;*c3<7t@Vi>qAW3s95!92hhcl)9t@7``SvIz%zYm)w zo}wKQl!z$<2-c)D(LH;haj1+W_Ay7sWg-wCJ=9y^-DzKBpa+4Qg8sDnOAgA#nz9?! z{4&CvUL*A;B*hg>t8j@%_?@k+vdq?%3!TuRK(FtLwxXwD{-3n!Xip+wS~%!|8VE!o zs+eeYq@YcDb{oscDrs?c55kSTm#|!3_U0&X7E$(GTY%Beu1d1LE%USbmJL9c$XG91 z8y~jrj0pVW88DFhM#Hf+#Iy-NODnjhq4zGNf1{Aum+=bGFWBDPTC3&DGO0JueilitRaGMig@T?_jlF+;Sb~`bS{?sU2L*69t?#|T3aS=21tVLi zb6?B!_HzLP6OwzAd3vj#o(X9gkWn)XX_q;1@ZxV!ttwKh`k@JYwp%yMwOm(sjH?id zX!g18w~!6s2Dz&>mc`_Xxe%|bZ+lLu-#ejgRy=*HFZKFso-GtXKKyXS$b~Bu#_Ms+M%K`fD*Qq& zIO6jMYVfxj!k`8Aaho&Nlnc zv;&rc{Zz1S_IF}2MErj+Y^+YqL13^%N6vU)MEqiT-srN zX1bs_yYMKk>ozJR=!8nDL|U@d?R>a!i&_wgja)Z!qT$Vu|OxDr#19A)966HsinxEvt*z zgA|xTT@ZjR0s{E=@zq3B=Hsv*t~gq+G)-_ zY8Wo1AY_--@A>6>ws?sBhpSo=Zn)4)a*4(Wq#)Y*%fY*7yd77-_~8Ev5&@J?;_t;7 z?JK-$UE&&sW!o3!$um;B4>a@Pg#rA~4%P2AM@yH1c zow4=%==W2ofQHa!i2W8_Z-9bWB|N3w_Yq(i-VHkiLKePJ5?rxCC`Y{QF0FPcNhx^F zzJ23X@ttR9;_PS6aW}&ffi4Ak^6K{%8P`pdut36s{&)1**j?)I^@AgB+e1Sde3=5K z!gZaVz~x%z3#I7KSFI>GHzwKMFn#A&RW`K9as*MA{S@23RN0AZF>Dld+F}0rX!bcI z^H=4xyzTT}soGMlP3I8sU6}|@XRJ`rnK0i)jUiVfLm>MLdKd@BEB+4(oIsM1*ap&J zJ4QuI$|izqAnZ(VKdj}(OASu<5PRy<356O@9Bt8m(j#&WVEBVPoC!f|AR|*}8%x`I zbJ$UUcgYKg5j6yL$`q6DJjUz?d2A0S5R=a9(c~Il{SsWFML9e3Q)p)pbSfZ7&6TK^ zsbRX&G?|h@J|q%xtQiw~Ob5#z7e}A+>#h(i916$gwH}}wL4(GDf8C)WQp_@B(jCx9 zG)E6)sDM%FCI)ngzT${)!5kb(Cae-}Jt*JhjQ|d(!V!~f?HQgC!XrNr=G$@y?jipu zxwJlVPv-9B2YcYD?;0aYE<^_-wPgnF;hm^2&DaH>@v z;_kRp0umU$^#(qoTPM?exDeY+#QjMzOTvFaF&;<<)rhq#^T2>DB@kQjwbv1--UnW3 z!Tf`*Uu{EqfO9rLOP4!Qgw{u?O?}xQkpQk%#mg91EkF`R1{SoC=i9uS%v+u@v5plP ziY7I2AmvW=9X>Y60xD!`D*)j53wCbgx7^Gm0&JNmW^ zwom~)?)4oyVmfL>EK~>uK*^y$%n=b7>tWz&+^2y(6$CZochsN@VV;OQvOUKshrX8@ z^Ro-(f>W50oD<++*{aj1%@YCDJVet4jKO)j)dAie!V6vjLxT5wr*LIAA_p-0l?S_& z@Enf=JeN0YFDbA?rVGuAFo>Bo`8Q!{{NaU^xdLQPoO!#}F~rrDZ1)3ziU*bWkn03M zTN^?B6=>yK%a7`_c}qg-v;C!>#Z~D1)m_y8%1ynZzi<@z7D=I}MCUjP{Q_GTXKz@l z_C!CZi9>lH#E4t03)aCsb2}ifSh0Vnyp)kaXMS|P+2q4svr{p}jcsBp)HE-({Yhm@ zMCUBN++xncL8$ZIw@X^4UW#@?PgIF}pZBaQdniU>;MZsE)8IQ{FAQJ{RS}=XV-Luo zPjkuP7Q=(+JU-nf^Wu%aM#SkXIj~61;c)llMM}h+=P6N7kU>gZW<&goP z%u*eSYCnI{+}Yv{%Mp2&oXb(;|K>_H{uXu?4h%C-(=;-q)0-hw02Qqyc3)D4xJYYZh@ zNPdSUbM7ZO#3~?{Ak!g}dZs&uxL|V^?O^0)Q0_L1^I#8;9wQ`m!hpNp)qt_yOu`;J zHX!gNMKImmsLTnU87v)bZT8C64z|CMzCD&fW9Z&4y;H9Ls7@u4L;Go*C3#F z;fn5{Ym*`Z&c!%t9Mqo=Aqr(T=l_6CjeN}1&0xZ+rQakP*#|s}#P;_AZ^h1t)OW!>P&w;g*#@gW@E(1+MtX=k zCtOq>hWx|$F|=3qeMxDkGsy%mVq`V5X#26OO@~Zbv>kz%I2dBxJyz%K8 z{suQ#%@|u`FWZu`HK+J>Y&nUoqjXaS5lY4!pEH)_m)S&q{GJ^n&``Yg^e znbcMaOX7u{omIfIsevoWs_aaDu}}OGQ>uF6v7)Q&`WVu6MOC*qBCYGy&H42s)GL3X z>5S^!G1^~ZsIwG9iHjI447Cd>4*@JXva4AD>+AU>TjEttQEhhW@AF}4j{1;t&zc4F z9_peBMi4d;c4){xhOHo}6pS={BsIP*lpU3GvUJ|A-Hze3AxVNO&E<`d%L=dbVxK28 z5-#;iC1r(E-f?+>Wd|XMJW(1NVYlKfRxguafqIEU>{)F+N0pp|v5Njq(NMuAieG<; zevdh^nL%zhZBL{%zFwS>Ns5|?X5(U3N-rMYk2tOGQ>Y8VRXu-bk(*Zk$kSyXuU;@@aa(nl-tf2P`17gdj`) ze>1lmunOKg;~e%dPF56m;~M;~t1G!9dI-kmRGH-9Er5$R`6i62O;y^+Z3RDNl==}* ze8$Vg@wD-*25uR73Zez=V&kg@CoGhkthclbO4+3TUf4^m1P}KOo7|HTK}g!sw@Ae5 zS|G2eq5T0J?bB-oPZfo?yRV^*EX!O8%%GB?$ZX~b!ev*x^GTGB0NT^d@|c)m0f+6h zQaWra!!~m*fHiMsGUDF9B{MwoT$9RntXG#uT{1mF>;gI|mXgscE=+`g$qg^ zcVM|H>#BKvJ$rsWFxdWA+hn7913u#wFsWyqYh9kysE#qyisieg*$WOg(I%Nk-JtCn zpT!^J|Mt&uJf2P%dNI~;;_XRkaq~`qx9U2?b-;(-ItM@2jpyeUP2?6 z`n45JvtpQ>r9?47_jCVuS`;^8>fM5OK$EwEfspMndYeaNSS$EUUjuNLJuC3avw%M= zS_$2OH@zbA`0ij)SISWUT6YKA0z$^YO5R`(eAJrzj%Hj25orb)j>Lgz zNfM9I-qKo5dND~b*J}Sl&0@e#Yh1fJRMGY5YpsQCf9fD$D z9q1pI2xTrkjZHixZ}$<2f+j*B4J;#pLxw|S79|MT+DeKj_?dD*#z%l#nGB%4kzI3#6XKPoXZ-yxsx02Ny5&eIO;L}q?D;hLH6qi&fUjK)cC^tco-?LeU zC0lIA7oetJUZd1Xj>EJujiV>{8K+d4bFFzUS7iu;CdkpWVE@-S*Plr1;9G4KdP9Bc zlaTTR4(IU39?RIa0= zXyRY|@6a*E>e3R0Nkp}jAhzisQD*pt$B|1@({=*AWLaHUyr=!S3!^EBB@Bx5FG=N= z<#A+HlRWW*9zEdQz!O6N!B2~aCmP2HC;ycdfc=-}I70=7fn`A>3{dh`>l_w*xS#oJ z0pC^>#i>lQ``kR4*IfQQWt))eAeVMwWvuSm&~t3;==u(heBfx`y`lCz7L*;Z`dC}a zCBTyN&UM&zHU2vrQ^?HeLO(|?2J(6j|8`&NZehPD@G~SDQW?K-;50u8B|gO742U=- z0w_n*UGnu$DH?96QA|NwrR{TD9Ib+fr+Lt$+Et5Gdr~R>6@215GPDF|I4U0#~$IYrP>< zb#1_}aGrgJLEZtD(g!c|L5+W6%JM=|Slrz&o;4ec9!gIfwN_MhTHhElogeJKKjz{L zxtFP5I1H3f6(r!#>85%6rE0RFFq=n~dQ1&ekZnUSuCzX!F*p`RdV5c8v^;M+!c6;T zSf3CcOL_25_8F?%!H%tvica;90@kN^G+h}|g}fv{c49|V(51?2Hg?Vn-CIl%HaIrR zPAxPKSvt7|;t-^mPiJGk@}lL0anWou)p`?*wJ&&igjNwwHgLm1N(m|ZaE&Aqu7 zIH~Bm>r)u-N4^K-8oDU=&+B!l4ylo<<2wu+P_d zvdJ>Q4t*dbtx(VUPR^*L+b`($#hKj)6#X2E<&<{}Cyt7?q6$F1;4&6zq}nCl@2u4c zXzsq2q7zQUPG7S-%aqgDvwsVMlfJpo)4fML5yBzN84bDSFM;MeEkVO1b}5|ErV&nlV}VVmS@z)4k-aJrxe3;gon(cF(z+|t z^~Ol-cT~({^hI?1gkMQrRY!+wRaX`W%q^9|4*;-P;>NP(lItv`p?zuf3Hak%_{W)v zoRi;*L1*A}Q+`x~oovT4m1Byby)H%+rZjn7uoCA!Fr~5727s7owCh)o9l4F$ommoa zl*`qixNQmhq_Sg;bIBQ9hM>x6vq>qaJb z3l!3Yp1R7hTmR{u95y*^nK6I_{Hu*_*5p!Iq<==AI~~ zdiy+YfYoCXLr(U!1uHMrDyVk`rcDrw+2D361jl;kdx6L^u?5Htsjy?~_h#K1PX=s+ zj$1K*;UQg?+3{eW$2V6YllNpAxk06ZfJtS37xWSCnN-T-+73EmKSs0wO*BstM<6K) zzh?*{%F3Zbt4C42K) z*z0=yl@Z*tqj#sA%>+h6xujZFeW33{(F8 z7#UlZHLA<-(sCg!^ToJFbwB9eO?7X>77{S&Dsa);$Jx5Tm`?!*>O05HQMUIU%7lzp z>JMvaC^7b>xFZ;33c3$6$BhcS?s2YIBmueEJmNUn(#+@x1Hh zD~jk*a0AR0f+~ADZx5RKzi77{*GE;X+q6b~$b4Yup%!BIHl=}i0Evj~@4%bX+~$V2 z3pGrRP}d0>!E(CTzKHU^iHJMK*L}z1Cr;qH3n6I1U9%R9-J(GtazD}wR-xzz&i|K`ICNnbI=W&GfZ+Mq(| zPe(AQl|hY#fAftjjpBdHzZeNtjPEXVXEB&Hw$=u-HRy9vrxjwOr_~VmxTzPWWFcn} zg^Zb4{Dv~snhnV$!l2FzY3PVge7FVaL;Vs~eXRxAj&aH0BFhrge>OhFM&V!MHkB{$ z@5M-p{bhSWmha&%X-Yv zH~;zPKu|AO`$1-A&Jhm^f5&MRWePR5ktqsCJ;f-M_GxKP^F2T7SH>)M3<;&^+2tmC zAu)~#XQaCb3R7dPW_mi+K%=W<$Mj4P#WvxcDTyZUq60vd)UwITUmkBnrx#TB=0*JMV{w&pWWaHRZ6tgw zw!T*x7}nLBY(d4ts~V=oC{P{o=%=kJ6UxMKd0sRFm9j(X6n|`|W{qlv`a=YrYtMv6uyy@QxT5X=t zOCI;86djv}W}jLNQX^*Ze02)Gs~M;{*)MA@E)HrLPa@IRrWI*Zj4R_WQ$XD;iebU| zB7cCLP10RJ&St0W(FO=Ml?_OoBCE!Us-XkmOWr`z8<#Ne+ODPWM03bKY84mh{HD8) zr5d9^>j#6}0q>eW4noq3QSI0OQA-VW2Pa${2vOPG8<5zi1@G+UR4`Kif~I)#lDcA; zRM%2BdRsd*(L2(P;hN~FaCau6`AC^v+r(+Uhp1KZ^Y@kbGwBZ?3|hRd$s`q*N!;3* zY&pag%`K931KmnmW@$QD=H{g}Wk(Dfc>25N`_e{>S_(s~~r4?3R zp5pQ`5RiWX?_s`135AvVZ8=1fEL8JthA0h<#u%H5cf%FDo)_Y_20i>s4 zeVKOSJ63A5Nq)E1f3I}`CMq|%4bU2BZ|@_Ex(784KS5!K|5O#c>(s3^>-dvRz<$3^ z8yljk8G0+J{Kw^j4F;Omei&{Ijt4JnhkXx-m;tUUqVC#;%{EponR5p7$cKyu++(Qi z9b2a3|7o)R-7XOa##ufcPQxmPV6~Qr=ZnsDcx9gfHE1q08wp}52Cym6{pjt%y-)YZ zmku<|JSPU?prbLVyM(;tKgEb7=}5@K2FF?b%R-S7H&cr)ly}x*gN_YUMn=C>Da^{AnKPb{2;x}1llU5A4z}YyC z1=f@2%Hr_`P*K_(rxpQY9!6})~({LnD%SeQRyG*w*e>T&!xW9Y_)h?>c<{4 z>_f1(sTf%(7*wfu5LxBH^#!FXa6DJ-(;oB_LSC3{GtKpFy;B){fjbj)hpG;po5u-T z)cz|ys3Pqlf31cLKVHz;lmcn8a%hGJob2WKJ_q)AOWB zBe*K}SHo<9QCp7UxtoZaSNyhGDEF6{_5wg`9-U%-fVq5)?!Mx(*Ha&<>EYo0Z_ZtJ8XjHnNe}^F|j!C_+oKiQpfB#lz zXMZF;5Y>aCoQhhGj{*EC$aky`f8QA)06+dh?d1AfD31v88jOx{ogR9PWV zc%b7qz%o{I;wY^6*y{w4kEX=&m~5TI3g5YPLQZp;4f(!$nFxc1rGX zcT5Ie{lfmFxJ!PC>USMY{C@&4+^*GBG;4;d-;Ycmxoa&?yTq+N2d8Q3%)#^q8m97S zHEUdLmXbwm>YIj%E%kn{1_+48v|v^0S*wr849bdo1bbWGQEg2rI4Rb?MHbo9EX*Lw zz=-Xyk@|x)O)w2dVqkM|Gf?qfa|(TE3>Z)$#~=fi9Q}e=6Y&~U14q$Bb^2~Yfkaf{ z(%BH`oTon~oh}<2Lqxi?9%o3jJ1)ZDp~<Od*k z27JpTO8#0nu=$7GSZHhSCoO??5uK0T6Cp$|FCP@Dii9VRWiIWs?ymZV;QFGYN#*zM z>)d*xe)2Pdw^%B_3vPmy0Awrg(73XSBKbgTATVff5tD(}FLL%Ny9v;(_MGyER+&H0 z@Tt+CVH3p|vNTPpJVg7~R*xRb-#qgQV=g^2uLg5|-9tEA&w+9q%Lw^JQIgKlfED;XVIE+RRZk6yF4NEEYD5Pi+t&99vGT6fiPu z%NQ5hv?%l2s8>c{%{p=8LEPQr)B35%^$=Ng;wF;`a}Wg<9=H{wW02+gc*bW-`W-OE z0Dgvvhex!*9NUZe&~t_FomwSHCvWKvgN;PGFP2Qm@@&s|ja)DuhA^CmUd&h!`DFv% z%|=eRFlVhivDOP2^5nAqWWEq0`(BmC}H{H#;H%O(HqNLeZ7hTjulTB z&xh2)%VeS2g<(epRZu@EA4#bSU**W*tk$emGY5)X#^hfv{k`B() z^m$m9Xof!?|K#NvkSQ^HJ~Y>QVH4)D9n>kcO%0k4cIq&70VS9dg`cqaLuDw`)3wPR z!=zeG78ilP8$j~B;=Y(_TNAZNM5t|t$z1h+WLu4Ef&8s7@YN-srlN6w)VB}w9Qa(9 ztQbD^Pi<#2 zJrC*OMedv9v~`K3QNIa|OqATXguj_6K-hd|u3J8huX*gA413F#Bi2uYo|hgcgd=)R z$bXZ;T0zLvaYphkA`E`hw@tFSgJ@6uZyL&dq&g6Lnm7X9MW8|5 z0=NL%Ex?oGj1P5HhZT6WisT?r-u}79E7BhfW0OiZMgm#KeCNoS2+y)*GIZD@jqlX8 zHQ!y0eAXf8o_dW`99MwvH@g*E1(qoJvP{nNplwSapAC@^otBvqoTWJ2l9)72aLxsWB%zAdL@ z4J~4Vb=sZL|5kyn6DgQ7CUo9N!>2*Z@d9Hw2xnlB@a0J(%M%lK$F#|3a2mQK!uM}n zkBt*<=Q4q8q@2HYk9_@C~MZ8xrA3@VS%=<~?S}8#9xn{2RJf zT4EL(9NRBC$F-<{NqEi+GQ82ZwXA8G#eWq%5TVa4D>2H!`B- z4>?=zNiM0cpnl;r7Fg8R8p_dV5W`63j*oFi?3I_d{l1u<(iPQG-TAVrY_!5&`p6En zK5c5HeXtSE9fnC(0nwPND+}V1T~?L9jLf}YEbk<}R_u6kR z8loF*_}!h2-A+5KXK3R4Nl3@AlI4NuE9($AwoW*lZJo2L(CmIJkDH6YWrGJ-`H&{z zqoK8{_gmCozZeN?wz-w^#&z6q#xE%XzHjJkg@(hjo8<$2Jy?HhyhPB4)wB99+OLDm zwM)-Cs`Xt<$XU}F!DA(p^)9AronzE_hgd>r$|XPD4Mz=CMDEtX+8&iRXeRe=CG{WN>DX7G$F&l$=>Z$ zxIzl-B6sW(mGR8g60W^(AJ*@4fdXh+-o=7Z@6=FOMEQqzN#kX^T;OFLCdt5TJvSzZ z6#^uH*J{U<)|@7zHzu?CWYPt{Mf(kFA?E#%Jq@wqvQ)@?avtu#G)s22&8DT*#xE;~ z3!x?|to>_cztxa$)?7Y~qU$0}uZx&aLcgAC3Pj}6k-=Sq_6;N9V@OL~+LJbAySm9weXiL$}4?TI1#)%t{NYlh|DDX{zEs*H1dTxDMMT3;)81Fr~<$&})In97~ z^^j@F_@T?^^TF*%{lEd-49AtmNewE-JaSNk!pJN4g8Z}<}Kyr%O8&~BXIiOQ>tXjzb z#Ch_|lOD=NIkG6{+!Jf8PBpSfAKsv|#9jzpI{77#xr<$?QXsEX;0aX#a@q*=>x$cA zr>fK)iZ8PJh3YsIt=r<9$@pVFcn^4Tnl2mkV=d5CIi@lI7HXUE0p*BXTGfg?@Q!CG zHkl{Q=}N8?(K16rIeIV*G^$$!8!_RQZ-4xPmVm@r-l$MIKo~%5_-#B^Da%jC6lb$e zBUM3edwQK;7@vQl7} zT~{8z*YKrwQnQ>MIq-Tg;zs%rCH7T3{_K76{@LK;aYZE|RZUatMtq46BM50!!0l@p zd~3%Z4-GrTMT`7>pII^M`+euor_`b+0}Y%9%YKCe;AZgsCIK68FV?JSuSdfvJuZPtvr9 z-pO9i+`D3O)q{a8v)a^N2qt3>`+tldSq-rs)8XJA60_CUpg^HUG(5GqlB0)=x2-Sl zkzOAVsci|V4AWc2k1dy%q)z)U`-pKQ7|^r2w?S|v27Wo^ui%Y32E!hu`Q5Riq%lc= zx4W7kDrD=$GQ+TIsp{IQ-3+Aoy#U1!7+pGWavcTf#hG5#>n{j2*spIw<~h8p_7ATN zBK=*&Bzn=v>=I6F-V2nBB*Q16WX{*V5h%Y3iY9dm>L$~jY?UOmLXV9WE|+?NiaK*Z z;a<1%iT0eC%d{JlwA0Kh0vE4TUWSrhrrE26iCq$|x~?mV#2_{o>$$=`2ILZd* zNhr9WQFE9bN2+iKI*1|6&|wFbe>yqdhl?=X3T3S~*I#UVbT;8f zTfvF4Bp%8Bm6&CzZ(c(%z_<{rI8oCt7FV$`4p(WuL2spF=uZ2PK0;lmg}JkI=T^CF&OmIJyBFS#BC0piJ=@qf0$uD=7f5Pp6xXNa4hKBuvaE(HkgdNyW=ZU1>&0@tA0dr(LZ6fp|y^8svMSjuc$`yhJ2AC%x1iJ@yO!rFPx53iG4=MZ5noJ_uXT#Ky z&F4u6!}Dm@hSBZ)d#Tgns{dwiWbZ@}&OCwP!Z`l{-abEz(qhLKkSr=bG~G?YXGAl8 z3C?5#lVL{#;Rf`OZ0s%HLJUMHhj4$7GYBQVCV%{%`-~&G%_!4U;y6N}_endg3hjQ1 z8++%_j}uy)Zn!cGYJ^Z&Y)|enccfZ#XnHDXAa}+iDMZE9V0P!D-(NPBlPqmYislt> zJ5xIi_lg-Yy#SH%bl4qDBDG|f4|!pY45)GE^9D;$qxhLnHSXL`UM{*aETzJu20o{Jq{AuXk|`zhz2T(QV>MGBi_2Vj@^{m_XHu zhJ|PvfCp?Qa%IsTO6lWeHDN_GSqy?<-xZAI!nAiE<3yH%P!=n~k9Wh+W-!10VV`K~`$QdVHL~##TSF z=+ib>ak=AB6%%@?Yqwd?Gdy;<%#4VB=7@sgz)}EF&f12Ak;n3L5&$xk<~FoMI=Due#gx_7y+ zA9+PeUDP)nywW1s^ZjTI+kTDdrT{ln?2H!2^TB_QBnhO%Ua2>Vkq@;RUS}W0UoJ4t zl^+LeSZL`|s_3H~@A8`u{HsS2HqWPyJp+St@d-p{auhpt=zVr4a4>O|E?e_S!yd-^ z>Z7STC~TdgWo)YS8e@Vy+5aF)HC}@TxlGXKK%qA4=h%FJoxAgXpA2hkU{R&_k2B!# z3J8&s{|=*)H`OH7Y`~7GY!i0+TaKXwd7&Tf9TS#BEePCMq^_PiXFrajUQ~WD{!<^| zGk)gdD8;%VJ#Grpv}nZA`t(M(0x-S3qsG3hOQ^jfR8}s)IE8^Sr)_w@9ERvN&I8K3 zuVljd*d`sx(f%wh$8~BWrMKvavv6s*s$pGy2^mVqM)lY53OSqyjKAn$7#wlJbC$6>q|R{i(C`Pti43d(c%KHU1>XC zl{34z^U%@|RGQgezQDaHjwD@SbV!R(ar@Tj_@K0;Bvg`!Cviv;r}y(&+|i5>X2-E4 zX}oB-4-Z#Cy$Wb9UwTeBi&pE0e&?xZE#*BQv9Dd`Gi8}>=r8nUbK?RQ z(th3&3NZ*jfeV;5V3PxPs?X!1r*-s>0xt}kYRDn71aFCbwCm(CI-IUOGE0QU0S313tI<*es#^9GJxZ7TLN_Yp4-U}m&b zuJF!78@C0)^;3XgHrL(~=@>!4=MV;&e~TbbJz>K~Py2D(O|L-FYfEyPg` z39pOh&iaP(cggug`hXk@B-?rbaOftl`bRe0A_FT_)@J%O!&koJYkx^Z+Y|={oxxNN zF2=P1{*MgvIgS`ZZsPqR`6Dus8h=V_rO`;PoZ=8otqQ%WskHYhqFbMYJ&=R_TPbhF z^e7i@kX9S{d==U=Am7i%qMAaw&85V5&F5vy>m-^(rS_s=T=^vgyLHMjm*d?-74~!Bbtq%$G|e zC6u|-E@v5XiwXL|mt*XJ3Hbbv?GzorAQrqm<2BO9IsTSw9j@Bx6(7dimQII;#cQ~9 ze)=crAoWzKQxBr(P9@Z?eD+Sfp|&x&R!L_@nfRp)^EVC*;NB;V|7a$O`C7vRjf0_A zcCMuhQO&q)B6|wh|t7_9#>VS|0;TNT&3(dvj`3oWo_OViQGn@{FB&vU@(RI&uwZ zio+>k8d`Y3D+i9!nvaIkbk&OUck)=?112Eeqo`xAA5d;5y_xdW2%tG$>XIgWz_#aG zKEyo|N@vx~I-M=e<3IX>Ni)wWmU#q^)&cSxv#T;6c?VcF)`Z+pC@+6$V~J#HIea=W zaO%VjxEa{H9Q4RQ^xYU4tTJeZudTgK?Q!L(n&9wWT&+HK@2x0<;DzjQSLJA`Tv_j6 z5CWZ%$^#~y%&%+@wT62kpHkrvmwMs7Ya{~@!rN_xY|jkFp~Efcr<8ElL$ zja058-w~gSkG8st75**#Z|xM+0@*Fg_-cA^;u=ajOJ@N8KLEg2_Htd8uto{!w*n?X z=q&Ty!`Z4579uoiM_&3J(S!B%S0@cQNFDAzywk^@AAr+|nfBYjpKsh^X^`$d8P$Ne z$fUoLvqI0MbRr-S)r>tSY1eAo;e>}t8HhX0YaoO%csc5p8FRy>63Z{iu30k9Vs}~= zxb8$4Dz8Vk*3}6V)e)v8gA?lCMbr3k_dG#%$5#cVHnn<4L_^X-60(lE!MD#w#NzdJY$)>M^9{r6^d6O*~#u0P^)031+=e4qtq?e z#%;*O4@ow2)zNeA7tY0xb37MAA0rYH>^)!ZiAj{yqw~mgVf>>$#6@qOrzW=l$v3|V zePj>DJfGv^$B;JnD(pbDE-l%TpR$M~kRD*&bhm5t6biY&4_L(&7wl7egvSCMO>wrU zu!WH|fw1zQTo(9CqBh#F-YC=TwFZ$u-6scU8Qlv8=`7JE>`oP?f$s-nrp6Qqy9@OA zG+`_O$Ry*(n*5wy{bke2;viN$04LdJ_Lye_`kc*A*>Jbg`9`W z+V&nIqYc7LRhR|)|8wrdA7WfR{QD~{=T9@?iK*_-D?nCsv@~Et6iP(DB;vNo_^_T! zH|t5caO!Urp+<$IbJl{+xze5XP&9!Lf&XRghlFKKVFVp)QK`)blcb7qC1d5Z7b{(J zY02TcP_ScwT^D{uFq`RZ8*?0z-iRoWMDRoNsTZinswit8_qgfLx|SSO2QVILW7pU+ zfElVF-J<44_B?fca`WcK8)ZxnzpHBs@;y;*2&i7;xT!lqS171S9Q;1Z~Ke_{u za1ct$mNqsVXB*s!cnDW+Upe}fy$rCiW!1-9BQIZYRK3ctXz*cg1N=%9)fqXYsrv*< zd9Mf7Kqa8Vu6RBqLhc;nGeAR?0<^?A0_(sZ`Cy78P+csMgq|Xp4*N0c&%;F%xEu2Z z19ddPjSDP0#?90X)&S4_g}cu5R+J9JY4yBU{p7|p#`lO47$bHhgqVWL;nCl;;ahkyI~K#W`RsIUT7E> zpE{LtfRVpB!zRWK0#)YMR;lbf81;e#tUht=Ma^tZ*yjq&kTlabE1%b~QIlz7NICRn z@|3ML?%;`Nw}?FMinH)B?vh%EnX~^d0lE`kIX9C*M4i626Ki^AZY1HK7R@R%4vnlw z53XoU&m4{U5ARX)B}6<2akfF8g@ZCzkTu}1fzPm~Oad0mk$Z}yHW>LeqIL4?tU^dL z@rHY}VlYF-8q-y53{Az4X$TUoZrILtI&ev}=JxD6<@|%X9{m?F`u) zC4lwU)193=qZ;dMJyzD}PllvGzvQI}t&}T+v^u0A668m9Tq2YYYBz*5jcpsJNec^= zX;T|8$D|M&N}2}dtD5GQCiFU6EUr8^XDmAy#P@(aR`Nu;xWwM`QFWjtMx{{~q5wPerwcir`-xtoYdw!4$(rY=#gBgFu_r7dR$x30nl4Ddpc3 zY6;+irc6Bnlz|G&=(t$=&CF5loAPdG513E4D;VT07&MMvE^4K*b%f&EZ8c5Jh`%os|j0JR%u*o z>4)^J<;P2vaB!3F;MKVNO`l zlL7~9UOR{6(8}WCaux{Sh=4oE8rlE0s6ZBkURs>vK2#igz&&(pjSrMK?rmSWw%llf ziv@^sC#x(YDRW7nVrJL1cqcNF^fF7p&vzztoM zOdzZ}NRDJTpF%#C46!~UK@xf!aHTk+J2arcKu6;}{vNIX8R-lzye%gm;47qL z1$!Sz4NP@eBfWJ*n}NI)PARcxqLIPtnKJMFS6rzx{>vh{>qFVRv#nSG8Oi%tUY-^A*K{qkx~YC(O*fb|*S_8at(F(;h& zZZ*P9Eo)sakh+9(Rf<(!s?Fd7`wu&2SM{VyhyEd>H=C>kqn`KB=P))`_eb@ux}zYn zfTQahLV6S)$m+4g~Oa3XPKuxb~=gOIrt_78CFwq2bD1P1e*ips@7(Yn`v4n|T_1s1Af7_KVQde-un&Kz9`#k^-N^V(Q6yPHerP5& zV-X)?L#Ot4a#-ce6@Isj4izE3gduryB#3IagHBVy*uL96hXkgbQCDITDrx;oW?ctn zL?>-T5Jh_X5_V#sN2h?KakUbzEq6U?SJH5v)XoNKJo>k+uc0Sc_@x(|>YtQ{}nQu-2#gfh6iZ>aUvISuAO$ecdbX#6$ zn4z~A&5$@v@`#BvHDEyi3^ktzIhl4A8zvX6bJztbZ_|>Te8sSd8dO)y+#&+~@WTlz zd2ZYeNGPeclmAXTl}`b|;AcZYkOvcpD4`jk5JMnprGqkQ`9cBqJIH!ptnNumy1|>C zg$7}{I8A0@3W=L1w`Nm57~Cf!R0F(UlQ!pLa@iImS}i2Qad7VmtTY9@ zEqFf#NJdi0raCc464aij(S##%9G)2%S#LUsPOPM$@@-USJ1rzofDW;lbQFUeD@H5&XA7uii} z1b{#wKLmyc5L4r(25fQx|IZ1S^{aw?0~xqn?^7^TEa7e({QeiW%+cBqw?p7iUG2f= zShlTuhG4kyx_WtCXO*63^IdHY5zCTYxmS!AfO8OVcVv*{-2w_!;+*T zDI0#=;B|r+L}TtG5W{Y}FNCP>(LLWMO}O>3cbDlDsGOh@js8qv=fH zwN}#3H4JZhEr`4t7ZtNc7jdEam+)nqE7I$Orrs+HwE95W8E*B3_07%+O6B*4>PL4_ z@}gCtb@XvDOvk>ejD@e4>F>>p^`S2?wr)Kree=fQX{`V2mHwk&6w%>3L@lMqW}U%R z0BbTM-~Ql zU&5F-@_h}eOs0w%fARzS*zOG@-Msui8H#DSlpPmcaXl}unL+uNAZZJ+w9>X_%9s2; zHGP}LC-AA*HEeJRh=!Y zd%|F6f3#Ej;c}QtKogsE5TE1BnWKY=j7IC;L{nE;TJ%L0Ukn7l;)C0;8BGs2uDH7z z=;Pm|_p{xi5cE#t_a8`rTTj6=%W5OZuh?3gIoC4d=N!(BmGQW;OP469s@_$9VSi16 zK|0Iepy&0j{t$c#&uvH+K*1O}nVzG|F5>U-x#*@p0($RH)7o5%(h_cc*ClW2fR|_!dcFH_n!}bBsZY$M-ZyGy}WcH z@>)9eD7YMzLq60l=&b@O_r$O-LHv^2l98q zkaq0LVFS~VK1w|IIDPtylj_9z>bHcn$!f)S-qppIs8FJFYI@%MxjT zC?Kd8sOAE8ZDYj@domE)LIbFJ=@D{@Zv2~xlq0_@np#~p{%F~l@Z%_~!;1Tpe8~X) z!DXaL5V8A^Pac?~Tn?Tr*=;XCqSolI#vgPof)KiiJB8#F(YY@21x(MhEn3In*&L=F z*?KXEbl_9G`!RqHyH*f83){R>Halh zw6M1-#YTJ#yr=-k8c|sfhvjDB{+qm~JHvk4z+_NL1YIW&AHiXM`TH?1N4j^Ggm_ry z!csVN763)aB9;5gu2^O|+#abnblaE~(u!*Ec2yi$p|~f`ZXiU!80Qbr|Jd`(x&5Tw z$Xy2H z^3K?R*)C>z)I&(rN8O?!TVj2-20A2S^V=Ywb7kKoRYV}nvzx+bln70(P!FUGatr{? zBJ8?IgIR>IamawMzlcnH4>EvnkDehPi-ei#y6Y>s9;Frjz!l`p3AsmjPtxY*2=SO za@~TY=;F=lxi5+Atv<>*95M(ewmZQ~bsaiDLAtxU*WAV$FHu_a-*?36z@O1fvj_yS zv&0wU%R)=?kvyw%3Nr_*zE{A`rJafFha4&IcaXmx>R~QMk~4!Vw!KhDk4=)FDnDG; zZv@Y?D|HZ3$45!FJD28+pXpZrwJotWYH3DfL_jy7FxfqJGLZ-`CtF45m`hAd_h^bG zR@-<7C$k@MTZ#%PJSOr>&m)zr`Fox%p>0)M=1M)fPuQ$gk z=c2}ekcq+m{4?z=2T46G`S~#(Y`7v>RG$@o9K7TbUHg#&!Y6g>!3RfPjyh(NoKj@W zD{``z!Al{;XImt_R8w&~7?WPHt-bI^t>v=X4#eU-(cL==%jmrVzl9jt!t3a86CO?_ zRu#ADlFum36aA+_RJ}~V4QbAWT8KBeKw>})S>A=^n4?-$=pgnIz~NeJ|LUi&Hp~cf zvR~X-@akd!rK1tZz?z%Myw6<{K7ut?nBr3S_dtc2TkQiCnSdcOHkD5HC*6K_g5(0f z;Bpa)c7?KoyCm^knV^yYv<`4J3m4-HC6Va|_K%?X@8gI0bY$!CI|(nHZceGcw8W~r z-!Ud@7+a_dTR>ooyXvqQLFI$99T8zP!k|c^(I#;A)hxaFg*tGQ@72wxNXc&TfQ^D* z1U-<6{IZ$$@r*-xqFy{?NO#@PltPKJM?-mm6ac(u1;H9iYl8@gRumBbZ)ruJL7u$N=uyGigZnOJiULzG{Z_05?(*1&8cAqaWXApF>7fYKQ z44Eu!0PSIU+zS0O@r?cQ(YQz{M8gAb=t4RzI7=`uG_Dy^HV=8W8$XX)f}zilDAUg8 zCC}OR7#fG%ll`aGsKOVLm?Y);K-(R&D+)7`WUMNa%M>yh*%!HP^SP z7q4^Ea8p0r7NrD6DKZqH?qheIfrtDZ1-fmkDI1<~7I=5yK|OugKI{l$_F1L66pr_N_-^h0#5h} zT+z#xoF5t+0xj?QX79Is6=-Uw8o(jaXB!Y`IIP~hA*O*{I{IQ7v1j}YZ1usrgTPwn zDdxc?j7TzBV_?qatk9~C*NFquAkpqTM3P_f&wEoeqc&BdLv!NFIeF!Jfc+Fv1p8Zv z!54iuczIHvUmk~84H6k3;yj2Kr_vKlwr<~+@4SR&^WMX30zlbC}ygL?z2N`kq!pHz%!P z97SFkB?`|Er3Gtcr8xoU8HjkUED4Avq-!KtE-!^A4Uis6v!CY^s2%9&@)jfOZTgX zT-Hp~7|oiO)j8E-!m}Ys2VJ4I`FHbffNYPhN7|)HcE5dJD8A!ageFC#G?S@}TP`JQ z_BPEZDkyFT^6OiJf20Tx5Wd~m^L^$m^FN$Y%O~$c349l^NOlNwwy=10&&~}<6yn=# z^pX{U{ZvWtoEMD2w?)rEhB@<7Q7w4JXWBa6tH^)PX6%J$F$R-Je2VqX+55(5>83Pd z7q!IzwgB1?n-Me5lTjUjK-lZPv{$CUJ|?0Ji*=?U&Z~W@j=57MuaCv67K**w;zeF4 z7K@8A3=d9lNk%(EDAUefr-9aFf{l1EKBoi>#%0vP%w2mp6yD;+#>k+$*WVwa2d&Z0 zs1L{<+R_wnc-m?rT#j1eMt}D7%Wj2iegKHTDRY`#1T5x{KX21x=~N|rn@qnO2dSrA z>xD^j2zoqQr(S-|J0n}1=qe7#SrAm~;e@f9vvS|D9!OEGRo~vD(cyT{v$L6e8i}T; zfk6*5ixdQ3dtI3f`oBblO)u_gbNWb#byRp-GeIjnP}+>+&#&r|#}JJ>lVmEC4`5Z9 z7Q4m@1d7asbrLl(I`w!ZTIV+dX<&y88n|2U_i?;AG?}T(ie#O6zIQGkJdlZKR;OV| zWn$`EH@8=xRHnMEa8!Aixo&6cimx0XVEMm|6Eb0r5oNT%*n#FSQ*Du16ScnwVR-j! ztnq$G1LdE+=iD`INOy5<-JAVUiuMQg%sMZ4f_VFcHBY6&w4is}oB;*t zy65={4^~mNX#$0c9=fZ7P3BFxFePcT?h8Bqgg4ZmXAT#sBun!AcS=Xls|qt!0-!`Gr^;90W!c)TrEUiYl+IzaPt_TCkc#*gg;-IabNrp$6ztNdBV6p z7S%sJ{mdRSurJnon~j|2N;p}u<@y(Sn~hGrE=)M-Ks{q zMx5%6o;t$~ub&DSA)qs@zB>B>S3j9lG8TK&BBmE#0g8IUlw+`rk4Nmp^7k9&Q8{1= zZXbFgsShd&Y{<4mvGj*tPQU~4r2~fT6^=Qyw8IRpoYXW3cL8vqLIg0d9QEs8sG4HG z7N_Z!Laf>Qp6OGUzyPsSIbLfO=}{>ziD0CmT%*U*oj~I!5tF-q)KPW2JT3n=G>61z z1cY7Seqfplp5J-d2;H$#dhGf|iELv~cw}UV$W^o7g@H;GZz#s7rdA$E%4I8yZdw`H zZ7&oTsCmka=nsV=48C|;GrwwIY-z2EBEE(2W=R@1fFKJP^@}CmNgoe|GB8cf`?sDR zN2+ZJJ_B1ePLkDre|lw*@{qkq?fX5bIGS_c#R9|Wvtfyc&QvPCJ%+Gx~aIbLI>%jBtysWI?$0h8}aC749WTBS!G zO@eKli3ZPn&Z{--(1I9QN(aFWH58-~2EIASVzNrKSOci}Ck>~2?qp=8!raRxUwrt| zAd;g)RKRAQTw#K8Bx;$X-rK9*-%WkECPXD$B(;e!7w{ccpsuHfvk@<*W)+85ktrlZ zlLOfUH`VZOX4r5)g_{J()j3Wm7@0pL2|)Kb5MQ5-o{2A!Q^CB9sgO~$Opi7M`yJh*2+e{{>vtsgT1` zy^DvK`2%lL%{fXTbEq;&F1v{P)cSk-;--v$e1YX*x1)TGHHkm$r6UC|-~q*YEAo&3 ztBJ6Z+l77AQ|3@COV8TYDP5rRNtgf=J)Hfc5v;>Sf%WJ%t{ywa?JU_BQ_bSof0HH! z_Dyw*=a=UQek>N|>p5q)VE&A5nk84+xHto3Xza#*=)2>gayE+ESsAXr6P(c|ker>x z;Jh%|np_%|1wE|_Fi;;4L%t_Q5r%QZMI4s(Ka;luj)cVgQ4*o}jgoFYPy*j1d+xA#* zq8<@>6ssa*e&d?46ap-cw^&efCUM*24S^zna)^fX)5SxH^y+Z^B2 z@P;r51+<9d+o-&qDkVe8vYy#225f+ECYfV^mbaQRC~Ezv$aVZ~^A~paC{*#`%#CN` zg_sjBcumjiBVf~!jEie^95JlQ{=JPYk$P9_bjA}xxR42~&vRu{$h?LKFFI_HMn>@U zX5TBRMO3`;xBaFi?MyF?qJCkvgM++r`NpZ^P3MF1+8Z^)Sh0LB7Z4bM^DUzT#)xZD zaFAf*JR|EumLK@>hQ;kPb#|9y12Zdv;J#6##Ax{7&>v>Y$y=S+zBu5)>SAx>?)!*J zk_R&jCLISC@yto+- zaX%&^TXZ!J6Ygy9m1;G=-IE1xl=T!HXl>tQ{Kn(L9I0<|jE|{vi1hhHa=KFm={hA+ zqm|myoUPnW($oGY4^{DcfXFAstqT&rj>_VjWYTX)$8U_dfM`@S!%Uq`A!w&YU$cbX zI_qAEwFm8&A&>3`vbjw&vlfn%OO17%pifDtTS?g`WJ~~~E&;P$@d=AaI1!e%6|mll zEQCSRCbE|9!D?GR`_rzS=Aw+mG)POqGilc}tt@>-} z$0cyw{2D`6tHOmPnT_jmdD~fJtG*-*8(bM$lLB%W467r?|2^HTm7^4nC#o#P=9zjs zA^~+z5HG#zlNNr&17Zd`Opg-N*4AM<_@je(&B+Sw9WJY{Ej#c0clAR@swH;m$REmk z&NeoYcbkfzxlC{8;Cmi+>}fv{W~pu4yu939B4k1*u*Z`@f3-{ymeQS`yW??i_B=l` zX^O-&A2g2n;yGOM{+xfiv|3>*cWU=U*75wxQSY$$?i88q8Dc?W}KBgCM zc?W0D@BT{=- z=&3dymjz@PRaE#s&rK*&1wBw%spm}kwJhx#4M*KY4w1+D6G1z`kMN&Z@BvXv7X44s z(niCluC0fG2vcTE5en#idY!bG4%Yz)Hf+#*{g)VjON1JX=hZAx2Uz8o`z;IR>i8Dj zFjt;=pX)OURdT}+--c{vh+~6qwN@p2tQ-rImL|>bqD~Zq?-Ad4r>VFFBD6mUUx)HE zRQYa5jR8HJYxY9^L=+PrkllCZnkh*K9%0th|;){t)?tmZpA3Q7Z zIZ2VL%ZaC2tLmR~N(~@yeC|^YVyQSHcZ2$6UD%|v0%+8~ltV{mO@CcriIxGSal%|C zNJ&wdhWyl|JtpHA-E=8^E4kL*WB4fZ*=%)Az%}0KpttCSz21$FMRge3=uPI8!&f37 zu=Lmp92xQy9~zYm<8~EF^H|FIjiDW1YxYPZXAVAJ&Z1q3m1TbLQ*w#lyT1p{5O^*D zMz529_qcqcrHLjp(ms^>KkJ{Cj(D#)iyE&kMRmKJ6%0GeS}4+>aw#ng_&TrpwZyIg zffYTtDLTI@s5E-%pVyO2r?I{V5~htj)ptZVRn@s=H+4){gugqbDxCeE&ozMcTCEiP za}6-3t`n53Rw5Z6TuU{)_jSgb%;XPp`Hr?r3(7e*G>Z62!KLi7cC?&!fX@uts$!;77|l za1QfSFsmbQS!K^zj8wbP(0OZzKZS~u1XFiqcZ005A+5lXI;T_q(0D0wAyOkYDMxaM zoFZPabT7UW_V}plXH{0;k%bI>%gCkHmE=$UbYNr#D)fiKC=*>&7I-V%_ zkao|ZGgE0=Gf|~Ki~uC~b-&Qw#scn8I@5xgQMs+AMSx)ipOfl_@w>rG?^^_YJ_&Y&TjM zuEi(X*>&gwlD#q~K;*bj808R^#WtOM&@7v&Yp;PoMzJMS2WiDsCcDD2x}72qFPE_j zOC=p7lLz$_EsO=8X<%$hQcZ?ST_eU-jux_Iv(q?e1wT7xpv!XJFJtBxCP#D``fPCi z&BIhV-uOBW!FWaov(XI+e)48rD4+%7>zvvDhw_@29cY&_IU1TCXa5y4qUXggXBo|| zLPcc7gRo2+D`w9e8NDBQT__C6?v3yIv`@9x~lP=NUK-+s#-pTkrA(k_ny)OuO!{X&Mxs{YF ztB&HJf=>vU6v)+6{X$Ij@?wVU@3w0t#BT_1z{X%WINji;5j}q1hJ*|AdIgQ?IJU|0 z=r{KD+hgLic=5#%M3{xRc-v#YWx8w?8S< z37JS7Rz<0h&}nSVCC&0tC`6aG&ciuVEH3luzEj5Rm=3_OB_m;^_N(A(2S;=%j|^L{ zae5*=eB%V?V^A26yplv5VY6pQdl@D0Lht)$9v+_ZL&b!32iY0$JGdNRz${ZOd%603 zy$bvyQNm{Ob!liOiG5<5h%RoSU-M!=(~3-DdayZaEuOBJ_+z5heW=r!gcroKEMBI& z+R|24*T!9?ES4s#kvt~#Hf|*hqAL?svn&QPl^cMqmVIJ$Is4qAaNmkzqUJU-H~)CO z$w)-{5{%;p12HA=?7nd_MRKk#a8eil^0Xp0GYSkcgyjN&nTX7L|8iyn1`ik3h{fyb zmvSPUeT9(N36gN+Wjn0)S0}f*>&vOtzm{pBbTJP~1Q%pvhY(X$e43NMC@jk-Zz15z zH)Wt9uzW@_!LBULPi0&bzcd#l-pVt9HsVCI6?pg$243;Yh4bn2HDbNOm-Vl#;+_9^ z!M(kl?@PZeQf2-1CY1~dXjO`C+h3k`kTecbesRd_$jsU0Nc$K*>~4SJcK2pTgB#PQ z#>9$wfE6|^riUqOO9aCzFFV+*h7RM$`gHEvVk0m3Lj(93G&x>AnI`66a;IK)oygU} zaInb?Ec~{|*-~`64x8fW5Ui%nAnMYR;D+6t@$t>R+%lBbk=G1ZPDzO;x|1k`Mvrs6 zh^k@5Wk&WLb$BO<>S?ciNtH2W&spU4AIyfFgqmJ(TzP2CD>_&Szg+SCaH{%V~3463ej_{4Lf!YFo zrVBqiRmpGE@&TlK=iUg&{TtKsAHtz03+}VyP%G8vBM5-UQRPY$YLIJlPm2YoFD=13 z6Ve1Ptjqmq71j-Ze@Fy|wY|4B@%$XDM-XP{S^Bx2P%WK9VHx>hQ=koDK6Ih&)3?)| zy>be=0Q#PlT*rjOIpFKRoD7>nPSCCpo+O2s?PMoOy}@;rS&#K#)v zp`8p=Ph>b#*Qq)43f@H<&zFIxaTy>N9JSzm*hN6u;d~`*$Ib_0cqIE=-sfPE{Sjma z#Xj^9Cv3oNZILfB7e8Rjzt;to@gqZ8?r*uhd4KK;;H|zLJkp%}Kcx7e9;?2js{G#& zJG(v1Q?7wLwL6ZGBC|j};mf4dg=)yS=%JdLCfdybJlJu=MafOs|2TRBAVm`g#|leA zyl`#GkPT9?#BrD7{#s0HHB=5E5$7vu*9a66j{##@Y2TlrETWqN4rGFh?vdq49&+Xx z8g0>y98NjJ^J$#Xz8MQvlWlZdio{!rwq2aMIon3PWINN_G)%}&2~4;U+~TbE-rCXk zi4K-RC8l(cnF77KBSmEgW{E!?WFZZw!0)K0FN`{^$vd(l=DnDm?r0SV2SK)ED z!4qv8;+NpWS;IECjE%w$Cccb&FFP(jQy?no=~BCU5XH=7LPCRN(tDqrQX^6~3F+w^DdPu8;hArJ zRTff4w0=mJ0ohGMi+II;!!#IDHm4uOj(@tov#2Pdhe_GSmAxm_{cz-;0U`(H@gnA~ z?|Ek0Z*rRxCUNxEzN73z^C$w*k=JUeph`Z62ftOx@**ab} z&BKTj?2?O2u$G|-;i6ihq9h${FxoR1lKP1*cEYGL{glT!)rj>&Bsy-K>_o=r@q@F!_Ih34FDj3ad~=NpGYy(;(#KBc&5Tw`?!oOID0^_h8;sad}uwFtj=< z`{62$@aDCMxsuA;)e*!)IJ%$nT6iuoiq!f29ltiy{{_{PX}S0EOW*i-CfHd@ZuRK8 z!H4E5f3Es*@h9$i+SsaPXjH*^x0$zAgxPvJ%uRTh^b*yK6Bj{4obt?0tC>ARVaRMe zU)M{-|B2}?y~(-cO_t8K=R=O}anx(;fwjtMc zy{%M;_Ntn;s2Ga&$9T>SK)V}K=IJp3JfQR+uWvOZ+*Dt=uuSFG-!*n~eV{Z{sjfTE zrDITK?`=l7yo4Eea`VR&tU~q|icz>Zf1p|Yngz;GrcfB8dD?=-X8W;`xSI{@m{g$z zS*lE`b+01y|9i%J|1w)Z5Wh#dMu)0G0XaoFROK|~yU%l=_u!=^$}XIIxq;eVNiIU| zWryFT7@90Hl4>q;N7;6wjKQ=mU?COtQ5sP8G9&nUch-LWTV(lV%)BXl20v{XeK@9N zGOmojf&9lSN>&hg5bwoljX!*hqUXa~WK3{lqJKhC@TJ(e2DsT-w3(h>YT}?9xk*s-X;W{5iJtBjW%=1ie|B9LUW9jx39?V zs2$Xe5AKHtnxj&zV@CFYCeeFeapWdK5Ri%n40Vipw4p0}?pG%)( zcR`|0(?YF?+cs69-F)^b+H8%3$Zzd_WF@)-4uc3}8pOgnJ*&3G*+5=a6TKo{x5%)D zpI{!{mXtRk4o+mZpbqFQ{>*pds|0Lv7zyM}PttjM$NU$iM+wJw9BZsONDmE!t5yUF zDL$|tA|R5}s@|>9tn9fU=Xf@Q?(uf`U3I6wnfC~drd=xAE3qo^ZD99Jw)QTU{Kc0625~gVoy`UT9B7R~92{^ozO6 z9D!6Esljauiu7OA$MJVxZEKMcvDXuYh4T=4DW_0x=q$KOmMR4~BZ+v5)VnoPDIpeC z=F4~ZsC2^{RnKaAS@Ve8mK0Mmwp<(3qKXN&LWn<$i$W<2pGn8RhPBa2w7O}lEU^m( zc0rHDJ`_ll$SCmg+OgQ}A0ISD%kd?Z$glm#mV-EY&ft9qyL?k-Tz%GdyO!VYg)n#V z@LHm=x;%6tbslioW@T*Mt2yAK04*U!5#03|*dp|--YcU^<>ZoAtu~Bqw&A-QyqaPv z5teLTi1rY1($KDe*CMdeGXz^HT&_*0gLvt}T89&Y!KgVnL{8r+pfxj0@xb5S#`$ISae2JD%>)zwO%C%MjrGO%dfDdJav5N81Hs@c9nW7W2}rJ zY7o~y6u-qn4-jqVAodRBaQb0vuIl1QYD?K&34Ux#TNZX9WRjf+ItUBZ6)w`POA5B% zPi3qRGf`^ihFV~f4(t-d{M~^u{1wK!^np)6dy0&YZZUahW_pD)J`aNZ{U4S3-y%;Mqk!0e8(_8jt88_|3~b=&<;trO&3p}?gX-FUBja!Isphh+4Q_pJ zRPYjhW%e}y0SO^?A6(NiRVeJ0fKqk9TtXojNmbbl+RM5jddOLkxpUor$;QebwWS@? zD#{A-6lf#QZfys3o7PH?W>NWEw7i=^cAq|H7zXr*Ia9I}ph9aWHY{{|8uHXNEmp#@ zql2&1i!y0nmBdA&3=#?@$-2S0&PcxbI+F~Rg}SQWXVPG=;*h(8?5>Iht> zphK@aq>imN1LXP6)!(M8kKu)B$`Ka1aK7Qi&JW8r^^Q>Ug-0v^!R$2L8ov$3y-5EI zV9x%oA;hi6_wm=?9fPK(f@r*0Nx-V3L>x$a$2nns$rfl{j6R_YwX47b*nJ?MfzF;P zCq+PZnwGA;i4OJVkn{t!qj(kY;Y>%^$&ScNY?ujd(X2#z*gxy zc3VIv>ckJlDhH#&8OcYQ$89`~rt>77TcdNM-9mm33x1xvj(#3U-KaESJmKjgUT$~f zaYp7)M*W+Q8Wvlj1flTQFNvkN;Q#LG$$SmK5V{LS6$JWD1I_CCm13LE1P36lbo`-@ zU|OwF9xrw4Xo-Nsb!M2?B#Uuzg!^C(|1)yhxt*2XMzzdB@El;^?lFz}M-;KsF!zL? z;H_a%hUl2-0I~m$y>KxcYGEO|riCJ8`G~7GrDFiu-Eje|RoqC`W>@`GEiPcD$zwJ` zQo8~DK(r;BRI7ZE$zQW$kmm)SX;a5mROE_!S@Gcs{-y)H#|ud_z)@`85PaI0pQEQs z8{gyqK#WiqAPuf`yx(C6GPR|~g9(eF_D{23>(3^0VwY8JODXyr!VTLmk4d_j49JhT ze-SIYjV;@Vv-!NWW{G$8!qSwhx(+RsM|962tkpUqDG-yt-0C?)7G+y=kf>o{vmz;$ z`X$kW0o;ghmnay2e)kpTJWx|27J}Ft`5__tS}N1gz)SzU9E+ubHM87!#tUkL&E5M2 zn#bN?aW(^J4}MI`X`QpB-;OnKx0sKFOxj96DKapICy;?4FpWqz%G;IMzjCfXInV)m za8c@=?9S{4s;$$rdIVKP;3bc>GZ@K9OG)GS34B}x{|{N{Xzc5}%CWupP_*SA;$ zeC8{*x*v+akfWhDaU(eb&k?*#jqrkMYzGYEP!-T`2A)h}i^SdgU3rFG4UF%gMC@g=5!c%uquEXV#DLs) zMG5=j%bQ+@`KJ6QVxOjD7HItq(N-roM#*B7jSInd8ju{p|~r1*9cV3fNY8#HdOPkfbS|7xD?_rMGI zn*w2BXvB0*JR^SYc5|cGf<2G4))+n3g&`Klza?JHR(0@4?#ZukSQ+xz3#SjAG_Q)R zdU&`twqPuX^xl_>z@1V}H-@J>YexyrMp6~F5h@=hM!1YWFJ}X$3u#E_w$pJ+W}~Xk zwnh*!%yCknI21|Ah2||In`0H(YOfz|UGVn$)&&h2XlRO`_b&+T5Bt{7YLdyg7Q(-O z2y$EhA;#o70bq73+J8jmLxL*|Mz$R72_4B22GE6_3=2fZifmf2CTbuPfQUkc3T(op zQ$u9R5&s%@dz7yQ>z1v+U2Raov+6xt#K9B_n%|jDjQ$z6B1T7j1*QV-hUzi@HI&j; zN*>`^8f@6to9joH835^qjL#2X&%D0?;#j68p$803n1xDTwqn*gsG zdSp%tR@5{l&kFIvf~64=(hpJ&`&4yc)MC{_3O=ARdUYw@0Krt()o17)4^jcjFJ4i% zDMMVRi|}o5NaR>Xy)Ry&8oHNyX~UDYt_|f0V#yZy>rSS7<9|`S6yVzXdnQA8b)N7) zceuf8bgyIvtY?O2wAh2dMiIh8CW3N(&}q`|lRNimpQP0Y00Kr)FaE*ka9B>toehNS z=CW9s7$v;JBGj!b>WyDZ2|~-?e&NW3C)1^PvB(ca7HSRC&OP;_cH^PXU-z zmTVq$_0!?kd~G;&e9Z!KBUz}S(TL&ZkJ#^4H=YE<4hYGaI{4LI zKi0_8#sPSmW&^d_e0_SWK_m214GEG%n$`T@Po z&Kt~8iAT67QCz@Z5(i~LKOa#@7jI{5kZd>86uL6`tdEL{?Yo`mV9us&t1n1W8Tm1^*W$p9WIxlWo4YtFFrcyuFXh+`&Duj|F5XL~+`(!&Z zFRJS)#WQxM-6XMEEZTA3KGp=+y%R&Y*$Qf1&wH}dGZ_J!L6Tfgkld+boPqXh4Nfm| zMt%k`*@3@NdH-gI)2_Pr>n7aXY<4(p{LS}VK5(kgB>shqY4%5_Q^+8cD{6)sy6uH@g7NS4Ek+K#eL z=rO6*cUu3-jIQ45KUOB5Bl)4^{3k{w2^2A~*ARxpdi1rDOOYb~RFW#D@%M)zA0Sc} z5$B=v7idGE1+l!DSWw(b7>m1ZOFxtfMwXxKw64^2STNt;PO|`Rc7SmGT)v<3GI7aN zP1wHLNbKJSZngpga3I)Lu#NZdHplPJ zB}Xz{+XMbklqnYCyZpUpEP6!{ndR2jFxTbix$$%hr^M1pw#Me!9Xh#tRFk13M>OlO ziE`9^iN>;+X?Q&P)1>g9*YmGz37|scw)Xorj9R1FDjl$yXm%(ivPQn`W(*G|*cQ5^ z`0shARg_RwJ1EZsMKNAW2lk_;t{^%#XI96b32*fc?$*lCa7H^U$Kv4V++LDft>tsz z0e;#w+0-Krzu#H0GjO@#N?)93gxb_|sn+fpA3R)2n;9BDz3QXaFEed?3R@UBWw-(C z<`h*ybNlBb4SL7Syo=h*u?Ex523>vqh_KIcc+MUKJr#pS72KMY7}`4r{*ye_Fw_$( zsk97E*@P2DXqUKJ96g|``@lWJ3vBe8Y9 zVtkakT{W_m#z&hu9XlH>wY{_)2F%Q8*h0CX%bzE{M~1Qq9pK8wo%HCN(^KblhhEmM zBz9&C8x5sHb>XYxpLVV8agQT`M%s}mCh?^ zf6TRV1tqQ$p+NGb3PGQ??Gi9&)=>J4TZ|hlDav3A?ddh?rXo8~VUuj^YRCfvRT}?} z#Q;>`1s45}d?(#qy!|ur$7BS*G!#9SR|^(Dp5(i_qh1{dPtjj1H&Bq0|67sY*@=;R z88K|uNB>Me|Fp1#f7xekO>Xn-otJVzLWg%7?XMz!L;yI+WNIE9f38+j)RhUH6KJ(W z2g7*&#yqlomoOYK+>8853zr72Yx_s3Qe5tS3fFCg|G7J%xRi#%xS5+CAf4${!u$2s zW#NOu8vgm~0>8MeD)0^8e8cOEt;GoPE3*pcV7z2+TJb-ZV4OL}-g5KSA(WI!!iwmn zpun8R`cP5yrw~xOr>|qjWVCy)LJt{}t!m>PWXSNeom4-6a*JFep(FJ5#o| zvSe2vIMn5F1zy_6g2=8Vr1kRyYfV~BMn#Cc+iX|60xN;Zi!8$5Ohr@cAT)x`IgL;U zjr(i=#^^;-_g+!!vy+KksN5JkeoO%ODGU!`<^}m$2tJa^3}FZ z9X@~=g*j7FZ7T1pl}>3Ase$sDqI{*xUt9eT{&zx+T*IBH&GqcdVauGSJ$+mqm|(>p z`TIDuxaJ)(mJ%eo{xswtzv2yIja$t4x7ai*gn)&sz0`3i7W0saZ z@YuA+;GA(PB2cjee$SHc&TuA&unT@yNzX6!SxtT{Npj!4#G^3MyxS}l)m~jFo&PpI z6CE#y0vg`>mG5gIw-5A2=ly2h4pfdw5mLpD;XQc@pc1MmG_;XKnyTr8;5z4uu129x zh5f09GLnjC--H~41O%1yuM39`Z2GYZ5jG)Lc#sXHk|Sunjg<5qKq0zY z(+fGnp7-{}^7UHA<%gU5NO6h;mRj%nwoisT7)P)oNxFXa!8zs37RIXZK9bT_ zyr*OYUavhH(0~7_hBiX{!8upEVz!Gq`j>VX%!_(&-O1zAzW4zH{zx2tA0ZKN6(_@{ zyo+P&d54QCUi_-i#8~GS-W{9dvZ@Y&`(q-x_lU)vgm^I6o1wf3TE0QFsdn3x+%e2Z zaEy5#JAdQRPjH_S3h`TSu=?V1`i8*ew{=IpC1j9qZRTVijRD){HgK;9L~`F*Gk9vP zAC1amdGoas-U}^?K?B_H`hADvw5G_|Hn43*zfH9%iN*c9MwQW0hv^wkqclzR*EmIJ6XizGI2uP?6Iihg*SG~C%s7SL=b&T zYjG^Q9D6boF=d#mbDSj9{TLBmHh|$;7;r*-rcP_6RHXwKJWU@ms-<0j8Kkym-+F8{vswN*@9+?7od}J2;8y6b?s+M2-1Qp96XLR+y|84?6rr z=P8?)v+xUZh_#OuKLf}+PBR@BH=vOLzXJL1}jqK7vh zeD}o@2neO8zoe(`&xo8aZOzi^P}yHv@#4{M1Yb%X3IoLLNZ4EnGWSc(WlC8K$mo9V z1UPGFiwo2i4ba>3D5F20wfR18LIwKlpx(!CY+4^Sp;ppza*(VPv8gZynL{xjKjQ!- zSs>6n(%Z=4Vx}lrZlQgvVs3rX=%rv4Wetu~Z#M+>Hk=B)I;Bk|1@T&OuRriIfw~}> z`g_H!ezsqn%BSzwHoU{#D$$VpdEHB(LSa7s-UF*4+6*tcb--v0=tOzT2SQ@`;30>= z!tmp*^XB65MHJ@8I9CvDFPbLqWB|gx>6#AV^CHh9XP~x=VZ5s|8Cc~PF2!ZGys4<< zv_!MEW|p(>>>#=rXA1#8Yo_B@u;PhU?Ey)L<%-Ml?iNrW)dwP?$E-)*t zu4J_UUFd%4I7*QgmUU)B-LlaXd{skHP`|D3*pP*_*Vq3`?Ql;*IXa1w@4_WVTmWnh zY7kkV_emJ@I=0W(OHFBz?2zXEEC!&P3-+L}r_>=cNbu`Fr{IhP_YkkXF-OYUw}NV< zcoK=Q+wD#foMS6cN$(R{+MNU?Yj9pQFz?*oPbne)!kg`fvLPrC76Kq05iI0foy|Id z>4d|UX7K_pf4hzdM3XW(ScaBbPLz&MG_6e>0FBHkSLUkU;$Q1jF6$dMI<}G@GXm7& zj{`2BVa^w z3QnQb<9MkRis3*s_bhM)kRWZ^lWJ?*G54{&VyK`l3?$oeA^1pK3z)0 zZ)PI*n%@u{E4(VaGd^t=B!t`&>hP@asXZ&B(fZjT(c|vxhU(Dp_JN{e@Un?3UAa|&2 zph)d(V7?Xz{R$AuPa@af?y_n_=W*#_&@u#Y^02*d8#O5Kj({7{!7qOMdlbyh&2NQ5 z(2t{1ud`n!Nu_iZrVn}msxRlG(#n`l`=iBuP>Rkk4J>9ns3mUtF!7t3_^aBZhBB0p zjA>9{wU?pCE&AIaP4%5T)ErAf{4r+8WfNW@rR>>$3tV~R0uOr?s%0blT!Ho_Y0S_J zSUu_9t6eimubs$jr$8gzm9$=2#hk7`pK5dU_pAr$xv6J!f~fJTdm60j_=K!}`95zL zOYF!XElA9GmgwvU4ne;48>%0olVOfW6EFmP2%)cV>&Pv;qS7Xly#_2@;Bz0jHnnxx zOSN7jXG2A+I3~dvjtXz^50s=IkBitU>;;!j*bPhjxvk!FCY*Zc>qr?qPBU8Jq>bwu z3VPXRQCG=fC4!SZ5gqHE!mMlN5rBBbszK3EfJn8U>pAA|6nbdd%V9+upS}L>k?D?bP$iW` z)xrw{l;%37apQdJYRYRF%dm#%z@<+(6L7K^s(#ze1?V0+;_S_?NbA!+BOZV=Pdg$E zX`*u-GqV+IF+S$?h4H8lohlO+>j>vhbMXH99CkspP=(~$zZUc31x6(2!r6%lVfCL! zRPEN;3KJgY0%Ah1+JNkcgVi=D;E!De3_0T%I^Gjrj`K_96ymff6fuwN%VkV!A$G-I zHWg^aY+=XH{aH+VR!RDVf!MZGy5&`nS%e zZI;sagr>}3YWN>yHbO0R2@Plegrj)F)|As6CeB&P{Q*s$3&JWqd0;4evZMExZ*irg zJOo3{CJPN&R~52#wqb0~Jd|%fPYi%dGF_(f(kkI`z&ByPxYe>{6p_0Y5ZScIw4Em- zyPFjjQpXu2i&yhXd*y#rlPhA)sWX%X zDXw*Ewgmfy*w+9|OVl^wvx6K1A7{3!=1VOu7vntPa366jcl)1}RFUM!=Qq`Y$%L3D zR;cpr7nsV1b@Z&9IWd{UV2E~X!}akP6q^co^s3N1CksI)RI(=2Aj*n@{N>cpIzt!s z=7pF(*_t$jS6$71j#Nj!R+;`3DP_ zQS?pRd*`@M_u0Kpkn)y%9`?xC=t01@|d$GmUeC5Yc3w(zEkA`zV%(b^|ET* zeDM?hG$-XCnK6FTcX@A5sSFNJ6IY{ZItOo@ljInYQVgy_CZl}9d*rTcL%%5l6At!Q zf$A*_+RW$iD2sKL=PGrGZUA7CVx{+GJ4a`dee1RaH+}AoN3!z!73!vfW+zWcxEHR& z($gNr$HQq*^~B|HpMPf^%}fV+?W+~1OUlQd?TlaNVN8f|VhX`kve80GvfB8bfTd7Rv*RR?jaW}W*Pu9>9LESNfm-^Y%{SOP zYoJ~i%fml}`$VpO+3jEdu!=P%8>M%)rgT8x#i^0wp7p^d_;IAl0}tMJ2q&J_-8Bz4 zScJmdNd0AiDeO};B02p4dOvr>MeNtKq}dOf*pI+*162q3yU-WyT+|Ln;01HHep}Mv z8!h_a)kcqy486cz5k;yoJNm0<2yjA%r{(=S=dAIsaf}UXUfo{{=LW4>%MrhXI%JOj z@Ap^!DW-Ad`NrFykfnxI9}}g8)fLHM0;Z{03k0C7Zz2%Q1tc=Y3{Ed}*jcA}S|t5G zLuO$<1Mm9vu3wM?w@3pi-~Ad_S9OFZ<1cs9b!vIe8^Z=xT3aJp4@TJ)NM?tDw+kRm zs#;n)WVZ^Fr;PgiS8-mo4bZ~>EmPedP2Am93c}uUU;7kOgtf6xludcMU<^e^G+(CSSP5IVK zVq2al*3mkxKjuW%`zApPiT8nne9zt(TkVcD$}6~g-{qvJh%j=5gQgy~Yj)jR3@tow zGkt2xKc4iMRwM|LAP_a&rkR9avc9Sj& zPunL`Q~Nis3ByAA;~lFIw|P721(@>8ut0siar6-S*cz$*MR#*NmMynAIQuwpb0-A2 z_X55JLOHjF8FRkr-&F{H+t~)~yUT$3UW5U)Pa2z%y-H^6=snA#Y_er6Kd>tie}W`r zXLz;=YBJgxCuX5n9$x41$1~*B;)ly(44pgxUlpPOVwAX5Jfe@nd%|+ z3Aq2ecq;TjhGX#T$p3r&>sYpJhnU8w8i zdycq=t5z?KxuPO+kYsgBMyyME2P5xkC=bd5yNJIu(`nV1{MDrkqrzXZ`XPHY! z{ADPLlcn3$4^exLho)j93MP) z{L+H{pe9|!$cZ$i$ClEjdGTde>Zd_u;Kpw<4KKc8Qmq&Nk2pX{|I>}MfoH|vVUaAb zJu}WJUdQoY_phzJ!9yWriic?+E-hgnB<%){(+5})cV@zWu1vs}yAjQjl}woOhN6=f zObz!3pmRKAwJ$Ve>@MQB(SG-D0MS@n%sB>?H%}B}_X$wAod-IY*&ux*tU^d>A~NeW z*@M4Ku#_1S)tIC)qf%XH6tc!zFRtMkpBRG?Ypm;HVY`e_s?*UxMZ4k{H!4PCP{#PG zMK{d#Pc%0L+r|ZqMgS=U@M+dxR3ds}*wJC=a<2#HWr?T=y{{z5sa6fEQGt$e0 zL;fe**7%1OlO?pVHd@HH%ctU(UN&j3ST6MTtR^HuRjHRpkQ<&Ta_;ParkymcPBH;8 ziAj@&%+P%mH)bEKv5EdzM2Y8cN_i_cfS2pj#aioh8X}1GS1v#v``F$( zr$gxd>Hi0&rI2Oo!${Wrkc_mRv@UKdOF00GTxay9{NyAR_EA6;g39SNg;^X z%t(ZG>1;pJU$zwawI-`{6>d5_NO#9&GJ%Hna1OeY&x|vPNP-zw^6<>{w&~WX~C5@p+lz!_JN;*Xhv$|ENsh zFTuGFL#yZE0q-JOJ#N^@tj+}}6Q04wt+DNFjp7P7mZDp=Q37dy!x4`=>e3>A?gO3>@Dz4us zxt_Wki&KhqFP_5KVtF+L7sQ#jpnhz%pR*X*xC4U2I*i06YLlM;P|0$^#_HJ`RM(_^dXeQ8bCCdGL+AfVZ${hb};P9%OPq4wUiu`A<07GjpRnKm2 zBM@Z%T$-TQptc^JI~K?}+szP1X)Xe+38=0dNKaz+JSpYPcWYF9jE92TLkAo?CWbkN(YtwQ zO15GLR?;Qhop37woOjW)Vo)NfSLnn=klgS6Tce(7QdlxaExVcmkiA7R={Bz)LcPUr zsho57NU^X6%s270AC#}0Gw6Grj&N=boYimMycvXVE9$+5P9?PVo zSX$tRt{-#gbov8}0u18AkU}>&a9CLq>B_Yq9!Yhdj>q|Gx3(vWPPJ`vjM352|1LB5 zHC-E1>KNnuR4W1YJ}`}Q(V@W6Upea)bY0*u<$ni@?&p=En>k(uhZH_;Uo$9f_fVV) zk$0;>J0I}xI?xzU+cBnSS3lscP-9mGUy^yIO{;d^(J$O7Si-%~6VCL0;vP(UOlt&c z&LbKN#hr6+^S5{9kT3(5_K%hA6cV!`yShtm`?(gVnR-Dcv*?xF`rHM(6k1><8s<{5 z2I@twZ@_mW#{@$wiGTvY-+xK(ZqJojdL{%3EW18v*j38OUnm4C-F#59{6xaec!;jL z=C7Y`*Sq`+`Kd3XG*08^RH_qFvk@LiCOM5jDgOGbB!U`J#|QK)aV?N%UES9)1jX(= zl8$60ps0>es$lGWCe7soW6(EGlI=!5KN$Q9yd>q06c^U}sq-6pX)i+!3dkL5J~r%d zLKt|83H^}EUJRq?wu{CC(8&%ia>|VB#}Qb)Sm;6<0U+2gz zAlvJ%KvinRlyU~mSM!F|8T_XB_sAeYby2lRur@K0!n92u5}dps8a6y!Q{RGWHF^sZ zOIRx^H+yD6C+EYCL|>u?`rs(?cq+lZ;?7bto>Mi23$ajcB1GrVE*XQ+N5e$QVPbW~ z2fcy$05(Cf11G z3_D9@McQ22vak*wm)fg)G&(rxRY1=K%bk8R8yQxD93fVJ zklMjOwK;bg4`v8{1?8XlyyG~EfHUXw$U4eLQh$ecx>37z`r11W#TbHTWO!BczQ}_@ z2dYPkkk>qjaPsa&B;SmAV!;c!t(DVS4*TD@-Iz?&UW!`BQTUI@26UF5T3$u z>$E{C{c@BB&}JM}<3V6l7^*l)^jJ{aM!stm{~>;mWD?P|)x+r&CI*Tcn_b2AU}%#} z&HBmzFCR~#yi0Eb(44hwI?VD^X0QG~GE)XUCO80>S`M&TK6bfdr+#U(V+CoSUG}?LOaYDc5L!X)R0QiCfU_lH0p6ZCUr}A`pU+?O@<7P( zgNA%kXIb89=7~NTa*Z6$Fk<`=t+Bv4;gC71u)u9qEd*&>fdOJthl#OvNgOS>+`fx1 zBXYJ5mbW$8K8I0NthejOb25lJgmWPr1np`@C6}t=k-g22a9-wn6oE6}JJ_CV;D~4s|jB zPAt$15Tt(Px&LQrXT<5&qubM+ui>xpt0=w&$W!sJyruh|H5v zr&Wa5)t%m!W4lq%ex83aHn=%_BJa!F0fnw4pxH60H*@ahgGPy zV8fISd)FvOwQW5@i;$b#oq60i{8yaPhU0yk2gM|aAgyJo5^GQg#Gj@V>s0CE}>Nj z<4GHW4B5iUASNvn20vQh3p?HPiw^O^ouj*8p~o{C+(j|KE|OypHwR}o=dCIfR8kB( z8rlt@?fEZ~`-ZU;t?q?QJfWgUovr>1#QAzU0-W}*iBZ5|#Ql9`uGhkPjEc1$5i8IP3wlXL#;NK!l@U!6QrUR)A5B2_i(xUy$iTN!w=PR#D zF3RD~{cKL8QKyo)h+q&TA}pjC+7ekYF!E*Wbv zDVG^3?IDZt=r3&x*~Ei8O9Z#Aj8%cQVl1R*m9pW7I7VPi4@C{NMwku|=yCytrfU_c zpZ_cCH_PRjg-qf%?RdFVs2WrEvg8VWUpvG5YY;-g2&?ZRk6Uke;&#KI3EHwQ>1_9< zu-aISS!rje6pY&?@TeTPun7>U``?#te=%h8LxmZbzovExu?fc1!}yD10=H@HicArV zfO-f6!55K#6s{IcihP3EXRPm~%Kl>is_@khs28^Y+=-+hR)WLuiIKPtY-z!NlI^B-y|owP`tfPBqvxI& zMyt^XBWVHpoVF;L^BoV$Q{Dx8_+g?@xMIIv+I!rQRQ|g#QB{~m(7$4KknO+n@F+8Z zAN9cZ3!iARt%A@fy&X!rcXq9(VNS@hi7x(*Cp26yDG7#YbXGPhLX0Jf*a-$&sw8B> z8mp18V?#26c50wKQ)>6NnjNj#<)UW#MczOf6m`>j7E&FVGH#gQJDNX6@PNcINRm4L zuN9d5C4Q#_qdK=yIVzabIU%sx7kxE}Pv(^sv-((!67I)KYsJ7q3O2%PQv~dau_|6n zxoJXuxb`+*bJ4%b0^7=&j*(WZ=(v!ND^1TZ3HTYWPM+0>^)sme{5e1owX62aZ_KJ| z=LQ}Tq%u+7^Q~Lhr3?NUC}U?#dV34Zys3ob1}^|4A*?C)iW+UUiQ#^P_zCMLoKvTv z^*z@^%{=SLSH@tH*%05(uGv^P3|U7QJ!vq((&sQ@&?A?oiMpQSs&%|srrg4nGv?hG zrOh}fz=({2eeDC$>VRl_U%o(j1mtlOv@K!q+D(E$%|eke3X~WeDZ)mmS>LNt`7G@C zL>b61T0+FI_9$}>T!{{4Du-V@$(V0`!FCnN*F|AYLaL<>^djs#T*GWQ6jAV3x*J(< zy*PP0RjS~5(iVuJ$E!y^3|g;+9B6&?mCX7_H-+ByVDUe*OK#S}kz?IEExG(gNamV;8fN;mA;#*<<=tF zDbE&DQ%?o;f~*_L`^W|!2v=hIpSfz~ucriHoQ4u(dp6e5_ zI0d?0tCba{Pay=&MndijlHVgt~dJqxf;W5gL5E9r&PJPd4W}O zIN}cq^MdXBfJnzKg`711qSq40s@bL^k+HF5>^Z`U@l$`nvsR?x#hpO`rjd-ta;gq8 z_Xy%ub6#AlT|h1{<0fBIH;nM#qdD@OKQzqSJX$<@B;o8~S-A?WI%_46P(-m7IgqCc zz#s4=lDXlP@ZvtFA~`ajU@+c64zVPRyGds_$j(q~Jcb3R=GNC!(mB^pQ@g0ZuU@2Y zI~&6CR1BIecormBMccn`0x+;*6qfU09t5W$4EQ&i%|qxs(S#yTxInL)44t z3THTHs1iNclGguCgiDD~Ad2_Z3!U)L@fpaE3oePE0m+NP)>L|?YNoOh8|z>VjemV6 zQL25B>VFl3o|m%0nz7vdjvU=>J;980ytT1N?s$c^v{c9dsnxLbKnZfjQOka@bz}D* zgE5IqgGIrt`ux2*I{pAduZ>0^<343sG|dF5Lhsf;b}P|qe;a#j(*q9)gp^&@5RhI0 ziU&J368{@}hv7DMHg}xn)tGEKGXqFFs@1G>MvmbNxmZLmQHnb=MVd8qrf9p~>)B_& zj&73-4S_-9hG$Tvle1r2@9h2pkUlB46c0-!&DgV{?txm&5L3D2SWzgODy-l#`30sE zgY9If^?A&?#;XSdYmodmA>AvA)!K8e?S~@=wP)cOnnVo$bh^5P1b=o0MHCHA&gosK z)GP*!m%?oo{o{n{Myb*=cC~aUk~+FZ2D)`}iF8(a7uv*2~2tO{3QyQ5~HU}3G^>$d_%63t9QgGQDw1V;jYL?-H zd@U>v^~Kzr4h$@52xp6GhjBV&)xqnPetzT9`mY3#X-%~I7@3&h!i4Ze)22bw()^${ zxw4x)30sLY2UopZGK9jY?~rw~It3Y3E!R3{Q;5 zoMj~K8Jzl^Ml=@8S(-q?D%5nXrr~#A+sC>Gaa!&Gd4^RTgiHkea(^*Q8M|jR&10e-bCzKIeXj z(4yot@~HREvbVzdAOF*LY%!Np(hgcdOPEUusV`7UjsccUZGZl)1N-P@CCiPxlKxOf z@0V>EflLWB{WnAM7PZ6ZhV8Mmw4%FKWLH=@#7FarVlAGp7F`wDLV;aWc>}$#OAk1@ z7NrPNvNumOl{X|B={>R zpp7Q=wBo?}@1VIs!zO+a6*x|pj2>+k2BGvi1SVQ!)09W0JepFM6r#jc1)4BK4C;oP)X!~@L-NKg$HL-n z9gj5I2C4jiBI)L2vLD!^sN#d^EKO}PbCZ9|3y9~qwiMf6-37yE`I!WDy#Z_gY>W6C z2GC)qxVA&QZG(Rfz{Sbp{vVtQy~nY0U%+l~ru{b@mvDXqC%W1eI48rw1Etl%Q-Gg+ zZRb*Gqb0|aZXQAj!#VkyJj*HFX4(NFdfJP#W*I#Jq^^4#uqV+Kw(im@jH5pyeUkV<`)snp7+3|2!bP9NJeVCieE`)K>pbf&Ksu@83?zNq!t&+S|Z zHdrVuGX4($T#g5SBNFdoqti>|mBs3cTb=VmgCI#Jeq8yh>^ac*c}Ldf5~<98N$t1~ zfXsgE`hr(fY_btKNj>FFr@h;3TTYq^_WNyMk9cQ6JT!X;bqP8a=)!LTy7CjDPLGCV2E@u@y-I&$i?}WrUcygS`5^~+?-u;L4l;cqN`|)QWGeG z*?)9zRX^M03V|tCsE#If@-@wMsay$IJ*Ot+o^GxW@J$1ybl|37B03VnL>_Yj8 zIUJu?7#T7C8`57#dE$E>UQMKcRkfCK$UnjL%$5i@Nh9>&4$fU;9@;WLje{NBndID@ z<`p6&h@$uni#AtCx~lwl2>sB!(_x{8@ljkxvtu@dzZrH!7I%0n&F)cm128R8l z)r#uEdM!Rai%-ekLot6-AB%*4NO+C$a^`xENJBLHq4$~}TC!5=VLt_r(>$fA$3Rkv z%m$o)mM7nYppm`o$KvG6%+bK^WEVEP1ZmHOuT%<6;!Pn`bi~gM$wbBPe(9L1l4H)7 zooPCJG+X0AH@H&OW@f`En##g(^6xTQ)gK6*%SY-Mf=6mKLmy)^MLe(s*H}LmI0b#o zhWJk;_H`Y?L7yL+VNv+Zm^0KK4%W4H@S zR048Ze;>maJ70B0wRzz?@1fS1E1(k>JVHgJt|%1G0uJdOhF~u3jCzUH*!=?w7?REW zN2M63b6vquD`Xl5_3h<+w?I`JBWDEbjoQjDRwaEx6Oo_^S*@=<{T;IoQodwCmfd1X zTUAra9{BM%r%^T8iPSVvE3xv7MaJIM%Iq4dPyoW^Tpr=i9{epULu1fIhuc~wmW}`;e-tpeU#g32 z;g^*V(jfyMt?|@VIXfoweM4`j4%?0&&gn%w(0N%#RT@d*00wGAYia~x4qre9JRYY$ zSYa2~#0SMggx?j}%`PKV6EWJL$`beb+j}i+xv{Cwi2Wfd4NEJe87s%2Xq;FSn%cWo zkL$%{TpiiBFL2}?aYYDb&8zCw5tS`jF354jw4`5t6I2(^2RKg+ATM5i3o1*V;EaH) z&;W*zwZR@h2t%F|sEmsY9tN#(a^?>KAZ&n!=j@Hxk2vYT&WhVigQEY`G|FfVfq$RUmylfg#y^D z)BMhdQiZGg#XdL)Q+R50mV0r#t6(TDRmW=NPY_XlhS8-t_`DnXzV+JmEIQ65S3hjE z1go#RaV@GYO?~4`kGCf%74#VltkVJH58lf@@6sf}$mktlYO#@fG*J@)!OVg*O#B(! z)9LSE6$dBr9^7hPL%}Lft-cj?PCStmSaJ$CUu&q@otLAfxNy=t&3ip#${Vct4v zlbb6l_*^pJD+j{qH>P>W1}l}Z;?0YORR{b zu*>o=>lbYY7eU@C5wfDH#(d0RvlWZa{sOX>oKKQf3;*Ij2;>gJqDW6wN@fT!^f+db zV*jL5&Nh?&9?jYZP_+9P|0vD{f39^@IS~vn6YOt(!6QuE1u$gb;kVnsl|Y9%lkkva zRBX4lBF6Sw{52SaaC(GqS``3UJ&AZefRv2{B~B<;@CGkhsCxp3<=3`R2Xr=zeyr@` z(LFlU75$3bUah&=l^M~j2e~;yR3EQ524K*@tKLaS*JVFqEeQGR%6^pnJ$E;2bzR9| zqItP2w!1y|?Sd(^L(~&ez4**oE;;>6L+OgD6pW>lXWa69Iv`jq%|5d$rE^k(23ela z(sMt|%B}E((;h`}g%`Os{sLDs**=LX?hcG)xb8`t?0Ik^b+a~P+oiSCeFX|KR1z4jXKi|AN@}i*z zNYAsXWKn=hyPvXkhd7~U7rWwXVa_Ma<9vE^CF#vG?&4|muUz>OOE#bXCl30>xbL{E zE%pUQ@ITTlE_rsjZiS5*u&H zA}xPAT4(`&lnYWR<9kMg#lt+!a)e!1u~?pCOkQlFF4zGXf33hNgQc5$4-KkB_)Ft` zfOng|(W91!+;0?97WmKGCRR*>X_%8kiU8#0uMEcMW3+eeuvcTgUD{8(JZ=inH9xTMELQsol~ey_6YbGmnn?r8mKZaZq;*mm_6mwku+dT5_(*oYV_4;U8f z6HOXe82YLrx+Tx~QBvT64f0eF&f#{36%ku6OK=%GZ8MHG-;e-m1crGS=JvB#%kKLw zsph-v_pVjI;@AV8azjUY-4KgXxagqMYrWs`!d#f47Oc^ZQOz~)DON_x7;SH{*2+I9~J%>|H zluh^;5UD7>4ye8k81&BJB6z8HL?c}_*ojY;BFwywefAF$3>Cu#Sb0;S@Nx-0Bsl5x zZsAcpwy&`UR}!#nu+5`fx5bTNTxe#KHNJnnDT`sQ*5Kh0w7?T#N@UxhT+%4IYrtZb-G{0XbrQO*S^8F za*pl7ALsXLEE~vLu7P+m|9jT^NVst*rmr<+ds}0pImh zS9ABJPV|}1HCl#HsW6(aYkv4m2H|^_3#`?uN|nhaPFsxF6Rpbz(p}S9&WrIgh1dzG>8(W4%nFi2r8F_C^HO`EEMWj#Mk9ftcK#bTXNe5@WwN0QvKqxj3d(TR~^(d|i z{6g%pRoOJ)SyEdq zspLU2O9FC@3OTs?X#0YNWo_{D`gZbRoVpjBG^@q5f9_tw7MRme4T%JM_bvpaMn$gf z6%D@js4YbrTHqOf(KPIYZa4l$&|+S57_`!BJ24U?ay5sN_k1Lmul0ooDUX@4yYx7) zAe)mBEy)1q^}Gm+!6;7pqb#_)Z0uwvhaGK1OXjCTRmHu2cNgQfX#~_#IyoAAnZryRGk>y7{ou()HnUWk}6Q+NkY%Fk@?5!L=$CR zTYDkEnb`X2JCSeJICxEMgbTjN9s1p17gFoN8^EewIj7Kw-}QHNuM42LBocb8<_i_O zJSpu584dxt7Jib+Xx!Jl!nO=scr=+M0HY(N7Ts<7Be2y-y-(JrC;)=38=w9+YNjT( z!jnc!Xrt)OKZ_T^kQBf79EX~KW|?fc*xF6>$Y-;8=K%XIk{L%^*l!53hS(a3t|x?9 zbCVmz4-4HSqtDc+;+!sz6j`-r)|(JY;{kS68%Ah%s+jqy0y__l0dUKiiqH%v9^@Oj zI#HaJV#?VihXFA_;nSn=78iWb#*=7Gp10!s9zaV*ogq|cev zatQX~o-3AI-oR5J#Y)rlvE;ML>QX+aiXKgO(v9E72G-hqy0=rNOTvMQ6ghoe3{R7i zLc=kN@}gR*m=M>)c6v^o^W01EFSl0OG+&6t{CPH)D5KOSyAOTHlo+w)8SM+RyWf|K zpw&t5M4j8s4{(&k8C_FPNO&>;M;T3_OjeIcruFo4-5FF_shG#|PqRLhk-}UXB_(Iu zUfI|8zYhhypLxzsSYL8BM+hTw3li6+tR{rClZE8%0|bU$+~CwpssfPDQ2`;3EOUJx zQMUk38Yn}Gam-H*jZh2r*9+HB=ugJ7okh;?{WN*?ts;bgAqt?L?WGjMUlEBpn8rtC z0GHb6=sCu7-5NQi0YL*1%NI_&>hA+54-DRztkNoFF102T!8OCeOF6JlcA>e((s{e3 z;$Fa~C_71m@-v;~NX3CQl1EP*=zB-;9DA6R*?D*E3xH&H8V!T0i<3)ams8Z7EpT`} zCPYHC@)@i@An$S%LPQkl!i)7+i^o9`E|lp}aqsj{pgO@30+JXG%%hg{3D9xY$p0ng zFF|!c&$Oe(@p%2*ma7$~#A|pbC2{Gd83dpqo&y3RS{wk_9B8q}iQJsvq@5;6d)}a( zxYfqt1f-D&EyXTG7cTyGqhGNwQjION@qf8p{nJ$AuWIP)^BiZd<4T_XjYhV|@F?Aj z8YV6_jIa#^Uyn|dE-GsBhSISg5bR^mvN!(nO_9jrW(ZPRA}0@s_SHi<`jDTDiu_~W z)DmIt$e4cM;X1ur&hxyO)MVtM&C?VGW^L22&=(GLV^Ya@)D2-DyW;S%7jU7>Rov*l zc{OfK?b6!5J<`KPUMpB`XnbR*SaX%w`9_#0!7xLzvQHIX;@HC{!{bGO7D~V;B0cAA z23MB-7OC~_#d{TSt9Gze^)6u`0-e7zPg$FC`UqspG3%M$L}z<5RV5k9yDClagS$lYyacu{ZwhuqyRBSip_+tTMdn1!B znl@t|Y9!r(v*Lt@YkH`ukf&fnQia<~Bh zKLEhcU*=3GpoaE;;+3esnKl-$HMRr3fe-(k=|Wt(qpNn1`hFAWEjCm+L?RR_Y%H8; zu|5Uev{R&51>~n1jldJB+^|;FF_}K1=JYmO611202$AUMS2Zd*%)W=m`y^naj;JmF zy{Qja(Ispm`l$jtf5*1ntF1 zY<(_&;rxERwkPvtHalTPgONvTH{UcT%y$X@!wS%fbYm3fW2V(&WMQs2$9^0hZ4ltR z<6qXwjcyKD#bHsDHh>aN5d^%(`c}g0=H#Sj`Ba_2Y`;$lf zbP{7h0nPWBvYS-mmWr?XdGb3?u1GbosnudxbbJ7XR^uc&_1J^8L0d|y%LuEZ-3B3y~(8^?1b~p&0}r4V*rfwSiN6p>{HMhaTF481v8}3gpqSV#`gD!2{;- z2nO7{0{}!NuK$BtMCO_^U)C9U-AJH8RBK=~@=AIPbr=oqzE$6sXb(!=niR(VcTqxX zQ>8FT-iy}^yVv3E5~JdEg>*3tyHK=bL65kH4r%y!$oj}4SsjkvtR@U7HsdIR8?qvx z)dg{Kh+_DP!Ny029?;8VUL2Cq;{@nAeqI*p6^O4_liKUx)-vf8io(sloS2zlqF7=!94$z@D_z-W%V4v zs+Tc+5F+Xh4lY*W@^5czO+4u^`mW(?ALHb9Jv7?hGuGYW;2m;rmo}E*Q|x|$fFOV9 zBu0iLj(Y&|UrHL(>59q+pT+ffN!h|SFUG1Cc zQ!VQ4Fie*rIG|X*6XRsvfM)X;G*roQjh`%zvHB;j*fT%Nss($)6EYNeIC&t%Gg4(v zuD!;zXhWrBvo?kryRI0ARtCufi?v*D2(3LiX&e1}?7Y!^UFT2c`sK~f$tzHA_=}%Eiw03p=U&)+dvMw)1?0jD{kM{+|hA*7xap(EtV5G z{K9fdTUNen6TkQ_*R|yT0h#(y2+~wu`)NVX`id<}vx?DirJqYoj8b6(KX-T~Irm$a z?Xh3~O_R&94KcP17K2NUH3a-J)Q^zLet!?c@j+^KD7k7r2y`_`m-qHblqrP>DWv+z z>i4ihrtY=WeO#$9{}1AOR+u3Wo!Y?UW_enM`q9kwvNktfY{b)#M?V}V5!(-+&C(t? zsxNvg1wxu6`M>R7@=}F|W0Ck*TtZWQkPN23euM#~z$v%Rn!l#MU!I&2$)GVTx}>`-O#o9H zY>iu=MVW}k))W{c$yM*3449Edj4;-(RQDxbtU}*@iq;JPhYa{zypAO{4Q2DriBsh` z*Y{+=_=+oFY|2A4U>0JgGG=lpZ@ia)WR3O{NO+NEcsk{?u$gO-6lnd(p;bDS6LNRq zMJO1dUEl-obvu(DPi~ec?A|ax=V62#WS~_-`^XeZE_og%Uuaxzz2FW$1(lkq9&c_6 zqR$UDge)7O^BEv!Tc|HYmXMjtjX@5GHzO|+uiGloJ(1EYH&T)~xH&-Eg#MjE5Ty1i zrVyHgd@wDu!}QrBpfBJ6Rct}pvG+eeQHZ8|>;i9m+ z&saamTa8Sz=oYul$)7c3h!wZ5jOh*`i0>Evy^MSMl}Hf6rk_dRn4NTT z{^vv!{1izT`*G}Izs19tvnUVt{SAD+Kl2JF#N!jDPndEjaPZmK!(SDP8IUYo(`+6^ z*s?PO`57YMl{{|W0UP=6nTNye#ZPk7k3ipa``H>hg%!YP$6n4Kp1!QA*QWMdpg|v2 zf<;3J^GY`8R3R!Fxxs6?>_Z-S-`Ugas?0HnjmKT#xt{?U4x!LpzX*E^e;ibTb1CBU zY)r%$oDxNan~KTaHUL)X`O^@QEAsHzmYao>CLnSH^cmTF1Hp+Xe%;3UYqr{3|~;4o$&kyGF)nrZyA3=6}lRG#;C411QyETYyO0MvnI#h=o&`pBn^X zO~!{GkyeHDU2iY^Y2<%3yd;8bKou2{k3OH?9aXlms0h!Uij#2~4=(?NE$OjCU)jC& zJy*H@iW#rhE@X#ZJM4(yC@?T9Tvkl_admCsDQ8oK^S^;MF$7&E!+Jau#cr37=#xAY zE2!NHP1q@GJ?W5$u-t83f8bAWEnyH7b6}ivhurvCBDM>iO*y5H75Gd?~cr zg2}mO{uA_8pc{Mv8Z~LWocxfUn@M;Ed+~1iP#^_Br!%f2Q=EtcBJj90cw$``S9%E8 ztz3o=lY-4-=+*5laA3Syy533K&c}~D5ay4bU(A<3;{dM&&TWG6f0$B7Q;tY)Q4&|y z)}rijtn=ihc~kNK06A{%D>BNUCh0Ib)B&k2T0-hbn(8L!sccD~nV*s1z#-=uD}HCO z-*G{cpnlfHtE&C2;s|20UfLbg0Mgbb@RweErtLwA)t4X!xPFdX>dqX<-0{{Y0b`1k z?8w=*JRS2{GR6rL((*x#o|(h{8jwTI8|9rolv!(jMo5*%j(_vJs+dFpXKKH6zG~yw z%78I9%ux#^E3cg@*L%YTYP-?z|MC7qbY>w{q)nh5&WY4@in~Fs!fP9SfD4dq?00im zdD)(80>%G_HD+Vb1R|ZagU!`p*xl44E2(8qNyK<+0qCpn;fOc9Y+tQ#rLf|v;y~@+ zbt%uhB!u*vkdZV73FLJw@-2N~SDqy6%vdrUwF5{`D-7I~36)J>9ibFI>@KG<7@IVZ z9zfH(-0h|jB)aHF1|SM#iP@<3bY)q{s9Y65`4&Eu91F!6eg0XR9yb!u_gK1-Fx6Ey z>JiR7OGg)ZYoM*)>)a7IYIx%Jo)(`xrNI)8CLKh(o1|-=&G_*BZ3W6H;=3dwfPLeU zE=MD{jvM&}-#TykPgcLPW=Y3jms1ahE1yP4I(+qdB(_(qKmI`zob_@>W0`Hvj(1I_$io`k4?M1*t3DIEcv}3BGNA zgrmuGh9Lvdq}piKE#G2H4OVC7{=AE3LRoPO5wuo%oJ|bv{JDA*a4w07Oti!i`vE_n z6W%$RQkra*=Nut{!fc4+&qHRGhYwfLBU0BT%#D)G7Kep8skKOjFOo* zpk8KnSL%pj&(10|_eY*O?XfCKut*bhX)m*TcdmY_Cr|*d@S6~-dr8ct!mVAtdSk`T zisxdLsED*ZP=p$fK`pMXy~5Md;+Hd;=!Y`JV>E(wL&KbD@}d>ZwmxC3%X{8MMqd|M zXXOm}<8>;*&d}}-6RG5 z(u+aJpSPdpQiX{1*jD};`Bn?eN7lv|9|gKL9a}U{&T=cU`ZyX;Jm9?=Iv+M9b3yeO zVl(c2CPqLB0p0%uHs-RWf)kwjU#!;xu~FVvymGdNK_iZG3RKznuXOo29ZW8OA;_*+ z2I;8%_uJyqDrYBvx%^U?5kjUy|Lnn6H6DRGqbsRmDfwsjxKhg># z`xx}$e!0q%7oniue&P21x4Nxs1jIR5>%gcmVoRZ-C$%-_rg;I3j8J%o5}C0fxDwfS zaMdd>3mW;i_gPPVvy_}Jj_#xs%9Mh#)&uZ`T$SS_{y=A0RYIUB;1YhPLC(qeHOTW;jtW z5#WJ`ZiAo7Y8pgpD+LOxArCb9fzZJ1j|Z#13T_|gW3y+*TpAv~PNcq^ z`y)xHY^9EE8g&KAAoo83?CTo9D&}dX(5a+6DlL5`NB3QWI^8>0gR871W)_1XB&|%j zv7!@_xTDn*-^3xC8)Xg{;8;biEC89il}MeSdGi{qiCP|9od}b-PX-K&C$z?s=on@P&?uga642fk#W%l=W!{uJbr@6E{iJ$jhGeT*6lk@`=xTvX`p@?UJ_WuDYz;omQ(UUxASJV@o0)1vPWgrR=pfGR)j}$u>H{rj*Bc z$FqJ0SM6<_wTYXxg7DUjo7bk>B~SJ{HG1aJTNz($dd=_9&y4Yod|d6mt%`YCZ~`?h zj3iiUDp&!v;3W>uh8@Bpor)yQI*hpT6WGXV?J7jEbVKNe-l7ilg03d0o%SNe!!gyU zOxm3(FUH=LQw13!$-b5k!4Qwki_gniTCZ2iV4VyK+pWgTqnv8N!Hn_z1Flyqg_vlrD@CYAab@`2on$Z`Yb)BjG^- zt!>o@_}0TH_kPta05j0WWd*Zai^}@F*GXXDdpCa|&&xqb?7&}WCy%FP`?HmiP6YsV zNgH9Ks?e0!H#61EcHlTZ(VkufCqz=Y1T6f%7|w{m9**l=Yuw7ilWd$F7+U-*nbz01NGP5M1YlzsvuW~Ha-mo;~?_k&A?v}dOiUFngpK{Vq9vxTqq4)&{1vAj=O3v%7SC2I)p4&&KqkS4sTf6=;=mgD*?K& zWeVcF>F`*3aU>|`FK5PGmuZV!AQWx0MnkU#NpMXsl6D`<&2C>Lk}cQ>ZvQ2@)vMA| zXFbqJI}}bp2m=zS0H(5YA)|{->xgom7&xJ+kFX>~naLW<_bW6ex)$txjdGZ1yW%`A%jAf@;!?uqFwYuK;2v2|+v0 zf1MMgU<`+ZPM+HFMH1RibwQ6>;;(tJD^tfd$(=LNC*1Ot& z)^)gjmw5HhO&Uq9Mw?&@8M@j?>?pS-A;?5$(V1jWyChCf?Mn@(S4dMbQiCpDmz|fX z>*KVH8sW99i87}Tt~xyfkzz};X8UV*nS-xq>pgHaHWqy$f;#36QHev)v*QMbcfQZ0-N*aFPS$kioX%e|g@mMYXoo zW*lcjJ~&XT&vn&JEHJspn|}ubaQvP%^&tx_-&lpX&LcAHB3w2V>TOsnUKJ^cN9(s^ zbNQ-wwd2#q#r_=hZ)J4ri%Ua#Qy9zV59%4)N-Dq76ARu;Te9T}xyokaWo7?5!PU0Z z#?CTqap9ceR;Z$6hltu_E2#=s)tWcRdoGV!1nB~I5FaiOu%H8RR-9CeNPu6-mJN5S z8>Ay*KDTA}?zN%#DNWYS-HjGZNnX+EU*na3br&E;$8#P!+%sir;{qeP5(p4@0vZaj zk|#Assqj{`+w~L+#GgftTB!KqlgmV5C*BhpwnH&rRw!T7FsfF_eOHhQ&u zbm7_;q#0Q7O0cp zqp+G*AO)$f(VG%-wfzF5R40vKl5z*pO>Y~f?HZInL#?)4gt^k61qPVUQ?(7bp!{0j zLbWfz8Wz;V-M4K9gSDPMiZR#G3RD^{|BhbZ?@sfEq5@QI!z{ipuh^~e>~ikjkw*uP z^iY>dy)7z^k;AXqcDc_&=(JBxz)HMMJb+tfBLphk`{5Yz%9Wu$6K!)L6&H_gS?^-i zxuZ@m5^;di!KiKqGGi0jI49fU1Tly{9i+CvUqQ(GCws6~bgj1LH)Q3%gS<&JhIN^{ zoHPz$?AOD1{mBZ2ZyJGST5N^+qd&O8FvwPbs?HMa!9hzWQ08^{uBNv(lw$e^e=J_R zS$;Gw(>Q?YSX!kH_F7zTG-4}iM5i9 zOSm$VPQ}PM#(HKSU?NXKBxF#F+I_Abd^JB~`@1=-*9kGBWo@N)FKsMue*yth^JPYX zVY;DZ{b@q$=g4Dgc-<lMo+ttjQG+C|Kk%q#@0Md~tVeP1k#jm_7C(LV`ZD%PK*MoQT7H1=D&GeKkWOtL3vd z;NW?!g>#I!F(%~gV$!iQN>lHB8w}sz9teJ1$fsIUIV}Pbe^<0H8CNhJkinzxUpN zf^8#OP?@F~d*+5nw%$8(k86C$tBJn?(|cmJ;vAi z4&%?#rL_C^2Ro~3J-wHx|0U+r6^`E!W%yYt3>co;?^!H#IlKC|ef3ApU?gkr7{<5b zQEly&#T2txvE-K&Wr%GmjydFJO!khNJi&-mDm$Uo5CQ7{m5Qm@q#|WAV<(rar76{j4L~ds2-F$ z41>!VQA3LSQkEx|oyxiQ*DCI_msRc7GJ&|sBSd0Pua^Q<9_TsWmP?!Y5#^8?a!Rlj z?=Gu+Lh{a8Cf;2qpLJU+4h0vcc7(?UvB6X9X5=6 zOr5ilDPG#BQpmgW1z$yPggi3FB$s#f3#l`A2a7STrH8kY@kH5FOyjWQ)3- zc?3e*R%b=Fz%{2@(A9pXH+##PtI6?c=dDWbrx)m}(sVK?We_144GH72)%r)P9Z3lH zs9)2$wrGl$bCWZzHPti)lBZ`n2TUfD)8oZ&NJ5hY<#XcP2jO|75}3@bRFh4K`;^B6 zSb~fn-|`iyr$!;>UI@_oD!7gV4go%DKe~X3`b+?^6F_k6=k)$3g!Ut-M6B&Asxp+v zqdk`Xp90##=~@)F-zp^$@c>32KOC8~MdS1hQwo>s!S49Pl9-t1$DeVSpQD9!^wHW1 zf;ut8%j&Cj4+up_$^KIKraa^_-qKXAl-uj0_={0fvWZ9?AZq=>EJk5aPD~FTLpHXX z*aImaPfBKgqZ6ocNm5wqA({YpLtfNvgWzEz(7M%bPc)KDf@=5Z>dL>~W@XjFkn<9S z!*}LtpH*Qw`6fAVe+t{+Y&7S`@-BQmiMl?_>=WVft&HAQ^k&R>giV8~XPfjYp1FOG zI(_wZbZFe_06dI~2TB6X(Pd~0NdP$>x|jnbmR6D!4butq4*0cU0lqXx-A5yOWTqE5L1$ouTQR$4JglSF>QgR4 zl($$c$U)*l>X2=3VkTHMg z>-sJcg|W-3r=xxSG=DoOy_gM!S|4gJXLO$Y5GGJat4?&1xj%iKLi0p2Plg~Q&b2h$ zth?{TR|q8fi*+JRfCM*adAEGNUh=FM0oET1zb-|_cP0_27_p}Mhu!)l5{8z0`x9sX z>Nw-_E#!HklXl;H5Z%E3ssrEK!hbPyacH!L(OS2m(M*xFvvn7ljuDW!Yolx-sIOw9YC88xZ9E z4X&2b-%Ekw)kxCj-F=fJBYM*91X&D%u7Dx2Ui)_l1ln zP`5CzwXXQs9#=~;UsOKo>TKTt%je0N6K{_JQ?43dF5OT{YZIfoHe2B1fWK0c#?M_g{^4(|$rZ8bHT2LGzDd3`uvk3v8DTOinrN>A~@)fr$S-y;4O7I??a$ z;A!afnK?kjQy6vjIHq_Y*}h+OGR^NTtsiX!EMys;9n?z@5QjTM@G$_-nl)lTc})G) zz@>0ujtdQyH0jrhXZoJosCbWFuwH;$aCTkCmt}|}DcTQlI*3P4_m~;Zs5{56M^OY# zN^1TB6jxNb6hzUT4qd|I#9{3Da_fOw#m!d^_gt+9liebsrYc{*TcZND^1ZxPU4moa z#BVk7Ll$@U5|q`}sTI``*Xql%mVMjoX37$4W1&-%C2uvsdZ+;K)AL7Ae)i6JY-E2@ zM3Om2^t7>LMlgFgP^)R%bSB|v;nBOrO94GsGg-$y7G{N|$V&o{ zr9xg_p%W~KK-;mpBurkgQO=ADJiEZC(JiY2kz6?;I; zeN-pXuOjd(NrRhS3?;65*`HR2GRx8b|DlpRd%ZKgEk~4&>oO zbSh3!c|_W>KNY)ORtk7?5{ub>d(e^SA~N1iSD|2>;a$3H9&K<7=N186)p0W zF$AT}EhqpB*;0;Z0uZ^tPRW)=RYQUv##fK4sIRva3#{>tZu&Zi_805aQe5cvFxpwZ zSq<%+|1D1p>Sn^HfwxHUZN&2QkrY`~83H%bpT`PMld*&>3M%MRNhLcJAS7{2|tQr3w?C0=r$=Z(bra=164N!QU z_a`w$;}ibT*p@if#&3m5F8`9))usrA%ar_irM6de=2olSdc=K19_9OB(p54Q-= zWsSCVa%)o5TT${Lo5EqR3S&W^8-|g>@l?B zR`$-GBluOxEU^7$T;-t*EF4}sWe+FhP;CwoNFfcEi;*usY~^c80i|kXV*RweV%e*o zf8LZkm*L`<9)?!i8hP){F+b*ELimq`81Oqk+~=DxV0x zm5zG(@o%nw{NgQ9JN((l&q2t}2iU5l#{sc-7L@4@&y0S@XNa@2hYiree1tfE1^&A&`kC`Zun+jdp(0q+{rRZ&tyx-zr%hmOCpQGw&f?Vt3;i>_rQSh)EZdZ+)jf>YxUlCkN zA__nH!Xes{bwNnv_}4Tw%PKK84NXlE`ydkl?Q6q7cA4`U1EO#kQJ!KLqvDzXV>e~x z9Vf8@RNg?F144w+M_b?V9eHW}NCh^m@m@m|^#18>g+e89wAjp&(t0MLOI?#R`ml&M zlR3NfOTM|R)us2rCqyED8?81ZMwufBmLA`&|IL$^8N4X}{K9cxUCN+*DOALoImvy` zx&kJ`hg5meb4Ye0!@TkQJAM z3P`|*u2gM2$>)hV+ZtwN5&sB|Q`9yVS$g2dX86nM^dKpiEdD7)8TB*giE3(d?b2u* zMhl{)80NV9yFcTQBNK}WZD7PTqB8BMt~kcpw*5InX(`r@&#O4LDv}LN-WJH_E~4{8 z6Zk!1qjKsrj1>#neZV;5r=18}CYr z=CPbuAnerR@9jS$uMPU9gxeJOg`v}4d$fFIfQI%V!WB{cel+{l+``(cD}LIVGkm7d z@VAwstCJ_|lY+pXar(G|;R~#1W!2nQJv0zWQU*Jhw(tzq)D^Xj8o^ zW2k5zxVypi||%oaUV@D%3d z0Qw?1f(x)YyaD~df5XH{6e#*M*zP%0<&!HDfleNefNt94 z4M9QzL={+YVK&LHFA0yfCKRtE&193zfC0|&1FpWlS7cYJWL{x+y4Hu|`YU<%q|r3$ zM;aB1-M0PfOnvCcF5*RJXJ@b@-E@;%A!QgL41hP{H&uEh^M)A*j64s7mD@<9k!ORU z?rHCcuZFcG(w|keSr@0E{hBE;x&dXtba2IKKMI}*Z26|L z@eJcvupyw^eM&Y>vTg3bOwb)y=@b)~5QP&mcQcQ(3H+E-vieyM-N3NF;GKG;t-~K! z_r<*t@Q)NoQl~o51~AJ#zZGp{z)K5WUd~+25fr%xP*LeNo2bddmhiF{|zTGFs zR1@(fq-F*Yan-SI8ksB$_=+ks(qfP{yqAi%V|jhRHRwr^SRuK!E}z)>&i@mulJL!d z=FL35psT`q&@42Wu#ic40w%gt5{nZs6Q&SA8v?>TR%xKI_N1cX&yX9rp{rrirP zow>^-93W!scyMIttYu$HnPh#|!JtuamlEa(Uc2r$HLxfp5u~3hrSjAA!CWJhxaMt! zIl!anhR|R~RI*4aCocMD7?#=mT3S~aCCJ$2b~s)!Y2fpj zdq7Bob7Q&#$cEp(q8KmH&;Ti5(97D{RI>NIO{+w{^$#YnvpAZ7VRYDf5(vRBo%)vyUn zxsvz#N)S=czJYvoFx48}J|f2030L>*P3p$c>AivFWIE%bmI3DmOq?25x+ae<1w@U> z8?tw$-E3%r{L;tqs84zoZO2t|t`Mxnis>d;Mfr5lFGPTkYl}3~Imf{`Ag3h73hOdx zlqiN7+sODRq%pM#CbQHyx*;72&=Xa<>G1@NuP{VviD=w&^py3Ff{EU#MDjh&@UQnD zm#+wi-{}5Ld3T!1vZ$)6`p~|!#}+J#T1k!2eZBp&=%1rbB9<~Ick-YDU}j!4v*R>Kp!BsoXXBWklWI%vSw8`(@4{~Hw~ zK*z@qJ4wd7X>E-3k)k@fYp92hm#M;QWW=U5kgj=!fFaOL2Gg*|i!kGKmbdrNT2Ri( z^;;#XJ1;R+kO(L6m|R6uT$N=khssU{Fq)BkFq_TQk;V^w-=VOY zt?<`BtgYHn^~P7(5(u}493I>jKcm$}=?$N_Zt1Q=8%7Yr^?N?%i{-gsZFQT@KE1;# zp!^H;q$uH9L;F;JYptON@NXVI(pyryvvsCA#o?fTFiBix$uOX1!XiwM(zBa)x<6BJ~Bf^`Mb*-kYJ6(xo;GfXYWu zG#&E6ad0o>q1N~%!New|g-_<@FWx6WBG3WTVW<8e`+i-GB`FhY%WB7d zj7hm`Rj~PFj_CzVCI^AUvQdEGbKkWsto(tyS%X$DPX~-)p&E9H#iN6ScH}9Qe!QY@w*G*M10Hlpl&iB(`c(HIcuB0 z@rkKsRbwy?s62Eq>smO6XatIoc%6;#@w?D}{WiN-*a8tM#`B02iskC0zGc#g03%*aGTh@UdjCZAlTALAC^YuVk%D^@VXlKROuz1$lvR5QKm}xc+N?AdSq7Y2E0uN%BoI>DY*{vNt+9-3TKnl8T(w zMXuMUtvoR$jFZ>K0^sAXJH6j1M1t}hHYoZ#Br92YVg` z&O#3F{S@8LQu5UQ<4w7Ih=!L0Q&)xu#ftlTBARE!fp0mTzdN#qo%#UoLM6I8?(t$C zti(}X!F4Q+nPuqHkMvOA10uIB1my`Yqd;z;2wF?B!qr405x|%qGCyYpbALof29#KL zo=~GY3TbTz6O_M``3K_y&U(5L1OBl2c?R%JUSHM)ZT1V%?6Xk1w{Yxi zc28B-!Nq};!o;U04*Ot=mTPskXo{Qj87KbUtUfVKf&a_EJW~M7px;nGc7TRfB^^jg z!Y*yco^ZKb%#)Orlv~8p(LLwiSGB| zV`@V|-LzqY2es+utuqz0WRXKEb?Qur2cf3ABqx{)x}iU$ZKS%5PH)M=!ZthofZI5= zaq2@FW-htULd&e9WF&Cc-DAngeAwTHFk!d5^D&O3^QfBV6DwCLqNz{($Vf9tATyYdaQ5-cR#a z&eTdldOtqq+>k|;0nO?OPp5`0M{oq`UDP0XyNV{TJbqJqyl(p`M4_)@=WiBR(0QIm z1L+9Y7J?ZdipeC&a)f?f5C&zA@x{>+?e3l-h#~R>T8{!&#W+*mtYe&wbE#-g=Lf@wsMF7iH1$KZxX5@*QX4}fidW`=D^1k?gC z+07}%>km`tOT}#tFe`7U=pM`+po5PW842P{+LCzH77>VwTKnobKRES(f*QBodRY6L z0)eiY*Q^+n0S@vMK%o!K5(}&f^*5H{WE_Xy`PosAS2iG-`GbC-QfDk=0o0Y1!jBjcb6Maj$wa zFcYW&a$30T+L{rwQeg37c_R!JZ?2nFZy&?`Sk@OCGrl5bt>Cb|xvl?#AMINNslknb z>hBFUk9Z*OKEZgp|BL}!Uww}hxr?u2Vl(YoEs-aKQQC%|r&@i$iL*hbq{psDa;8hw z6b$EihlJOhntPL0tcuP$|MryH$*bvjh=QNfnX>juLe`Y{=KkZrRJYDq$w_T z`)Qs=gJ_}?MA!ELzXSP4?=iQLBVq+noI==xKGIXjLPF91DjI)~A9{D$d2tN1S|da0 zFi&#L!OPMqc&n;=p6{^Qef7_Jh@+r88FY^o(m;PASJ}_a$ysSn=H>cJiR+%9mntS4TPW6p($Gcb z5$A2r<1yZa4xz3qzPo#q2FWWK!s>+Wa4yT8z?uARhj6r_FI;FfO!;C3iR=1I%0gVn_gJq$>kvqs8g7CnZ zaam-nBZ0UDHcST@u}!BB9WGjlEDW@@0fmHVf3Hi{nFwO0%w3rpm7)ylQeGrvGHGkA zi-|(pM1<_{4-^#w_Y9lW+M65m#a>o5>s9b`(BF$injB<}uu_w~9a23H+89Fp~YA>Qmr}e*+ z8Hhn07_i7j14R4RCr8btVs(yzq!x%pS=7f6$C<`+RmOrYPQHq=_lUX%CBoRq*GyTKq}&|{KiH?y=#@-5v1x( zL)A1Y!$FVoBFFd`JLtOffIjSZZFM-}`x1_9>+z0HG9fvK%rQNSA+W7dzS6#2bQ#G^ z&X%c~2e&3vIX# zOOnuxYcOP)u>T4g-tcVj4OXpTQT#qqYN=uQ@f43dBdFdB+rKu2W+@{|A;2JP4hiq& zR-$dzE#>>#f~n>VH`)rt=5apk4J<4cQl!5ry_YhBiK|cUORi1GurvM+Pbgt&@ko4e#@RRDE$`?9 zRH=4(kMQ6dAPX0`Ye84UKcwSCM)y@aU!wtrA;_x{d)`Mp@li_-^7+J}FIqAJHA69` zu;rD;9;p%xA$VK*y<(WI^rV272d^cvDB(vdFc6Jw)(NpsOk2i(vS_3|akc7&gJ0GH zqpEZAg-C8w4x-d_f6;BUqL;gZ0n*aS&#Q%xTra|8oqFjx>es|KGp-$dyb##?SK$HG z*W%`@hg}CuLDV-xe2sX{)^I6_A?z|zslodiUlG^Fs_Lx!r2Xyl2#9cn#6+Of74OAF z2BQSj>v2B)7aBqESM6@X4*Z9WtGYkoFQ{5>+;3MnX$+{5NWWv3zc7L!etwr!uMwQi z(1dNnr1bo=!zetSJw|C)6CBY3?)_G(ufs;DBtT~v5m?sEIwg^LnuPzWL!)8uVH2NG zG_t2evOWO+KLEfMgj!{Qv)O6OgrT}q1;f+ctfSP3VZ`xD z_EUoy_W8rS8VSMn>hpYj^_zrAQo-x9#*~{1JZL)#P7=IGGr&ID{x<M(8^zesaSr83f!8^R=yvXZ1W{4TLa8o|LVeshwzPChr&RMicZ3xy z#4LtzBiDfS8J;e`uM1<%Y4Er&9+tI_7YNv_84f$eVikSCyCS&+u|@QaVK#ZKyEo;W zx!&Bb7p4oKcu7~7Cocs{XgA-?&G>aUdJo{bA{UD&%@k%8xyH}(Ru z%XVi9p-gT(H)a`46S6LJ6>U1Ij3F` zq=^kpZ0!N@st_kRTA6~{CV3e@-cbfEL@$%b0avR-Zf?xiYl8CBOnq@ID~xB~dDBy7 zInG>7C43Dd!3Lxy8*eu+%23gd@;d|NlCiV0Bk{bxUUVV`*4zG#3v05oJp960RUoL9 zxl2-}_A+dgVaHjaTO6(8`__IsjYt8hjjH8o$O)8-1qY6W6@HQ{9ncC33wPe9S3x9h zS;?|BY@_wl3V#3?f_C8XbP|uMH2-f`I)X%l2*)1ZP;~4RWc-+mftcfbPVRimPXgPotK6%igH0Qk48q5H5aI zNP5$r>ITi+eW7kVbY3GuDK+p14qbAJMA zAQlS8jVJw<{!{uUR4jx)<%w@!GJNho(if-bN3Iyb=F$4WIh=mcFM-^Y2|G1a8u`_b zyL$+>x&x?^!coBAEs^bT$VocSlPO54;KPrBojR(KHMKIDG$vcx&f!rf{lEbT7MJ8D zPgNv=%Sl`XKE=UqQ?8q4Uw+wHx9b6I;xIoxrefT`wKJkBZ!mb?%TEs;A`{H08Z!Uw z*}i^AMWxf_$y?_vQ_rE>j>u0&rzc8qw3UZvXLTYJZYiqdMHL_aZYRid8*J#W{=)MH z8(QVA<$R>sB_c6*(x3wv(JA5c{~r zJE-~{!I{^nE+4lR6dRkmc=iS!l)(YAAY5@>?gFg#8UJ|DvPQ_ZZ+MUIW}W)QN<*7V z8qstwYj>w{1=j@SMg=zD069?J9z>BsOD*tQJ^=WmFjg|7nb69dF|mrk*ud|1U_V@e za0MaEkg=E#!|Y(Gw1R{oCXp0^oOtaF-O-B8|M?%DvRGoKshz2=*@RY|+VK??9}1ae zT!*YSu(}?*-V=3cRm^jPv8ogCBO(lGigU_qI~5<_$#TG>DJ6nyY>aNeO2EG>H^JJO zu-j`U=RYV~5?-ud1>BMCqorjwDQ{q!+&yk!SEtcNtg`(cra@M^;a% zsG=k(o?Hkm6jJTGIEM&mTnPQ?KsZKF>C^%b2rZG>B+px(5tM7y)Cgw%*JtRL!>Ic0C5VB>vAU2Wj(;ZGRD@qC)po(t-AJ#${9im6>5rREGU181n6Trx%L;7J&R8th+_ zitjt9RbZDlF__l#3Kz(qjOH@yCj6kSd6X=KC(F6&=3Gp01(eH0i2v^3k!FK(EpNJm zXFkcZOPcjL5JNbrFrSUn45OP1&j`CEdqboSOf zc!_Z18Ri94WVtE)XfXV`;>y_Q$(iBGn*ip`NfFalMqfsaz>5-RQ)%MtH6S>^vB^O) zu9-+xFpSAHj%@1If~%WHl8wbyX@^sd=@ZCxU1*YOPQ}J_OHQdS!}wgIRF*}46RD{c zEPM<0;$>yr5;fWE1yn#=mT^f|)|Qs;&Y}+PzC3tVwzcExVnw|^s9zFGJEjiSYbW8c zwRhq=li4ZQi-Z9+gvxJRS^)mY>MdsC2}VJ3AdE$*J&1mnAXp>KfXz+O#} zJB??V2edY1%UL~FeQ(P!!DgjbAZ&qT_9n^%Bed&2LA(!J>O z%e1YXNbn8pnZGalqb?NE@16y`RdrYo0oV?#oVr(CE9fvyzATcP8FCKw%#hz_5N{Yl z4OrB}BNFL7rbumf#^eSaJCv?z2bJN$2YwmR3|O<~&wLS4LjnzmhCN8_ZK-X>yZO9v zdbW?|5!J6Ns_eug%EiItw@$*8DBtV?(`Cla2fZOs)tBUE862Wb6Em8&YQqA}`LTys zd=SB|zYUscQrmBSOe5y|Ro#=4!Gt^u{z1N2NGa)hdmAM6jd``op8DGJAeHl92M11% z(o(!04-e^{<^>_KQ#kBOR!0zGa_C? zA%QOIH!O_GF|!(tIz5snnmgAz57j_v`x4j5*WXdw;!Go3tMMlwj|wbj1vM78eX%q8 zT*_`PNI`j=9Sz1t6o!mAiILJT#~E|YgKAJq>4~M8S>f^1SK*J%Ie5LKQxs}%bzm)5 zA{y;SSITI^@Y29_q0miMpk?NSQzL`r_S+l2R=FvQ)I*UN}sj2=H0ADi*x>$R7u z)-ZDKPMhtLeVjpS(KsYCBQ!Ubp3_;}1ZyzGAPWE<#|i;t;p;A`KQ<+DtUs-c&taB_ z226He!3O+5)WBB?O_groBLHt<&Ej-_HA^E#7@r&3Nm6P5X2INIb1R;v(R<2cPACC! zwEFz6t5JiVA;H}&hDe4o={U*zEB)zzb2gr{1N}0!`w|?LO3GDJ2}fngMr`82pc+mK zI#$;V7^IYRB}fdedztrpn@&d&CQHsT@D976rKd;559&*IAW*9FZ!@uADTF)?d1ePf zOud4TP7iP~t3}xc6)5i%uK?QH^9SIHyI%T>OW(5Nlu256&J~SHI==iT-j{>hPy_B` z5gQxt23V+g-zowL(fXCAQk60feXh|B7~5h?=7NR=wQUKu{KVdNt%de!PQS0Q719@U zWV1z~bH_M0pv8YeY?&2e>*nmEfkHR6z-PzOoDu*DFQr5L-LRc-eyqbH+%J*;s9ax& zoTQc4{_SyoQtqU~vJt4Cozctwc zG5Oh|RNsD$7dSE!ePyuh;rPa`XwI3zWK+_|%4{a+w^t2DWhfKxZZxM64eNc_}L!d-E z!F3p$B>;z7L%HOIC*X;~1HGKkJldwZz#x#U z8|$oL7WLcBsjKMmE$5&WOy_#h$m`X3ivKbMhcJkAI5ye>_)^B)1U8 zpdKv`KQG3OJ;}&8iR2UPk#Ul1$DR01ZlST3X*(Q4s;;Xs9!y!OpI(R??H^kE|LJcH zScv_E@-aHK*C{XExG5nvc?&&D6q818e@P+}LJ4RUEU_)59Q^G&k3lMcuSn3?XT0XP zp@p1g#AJh`-cZklTX0Xi@B|N@BsD&xf!{A*X1qXqD=Zp9*x$O(O=j{mY9dxPw=SuL zSd6ymNIKwHjxp>}mXvAS+Zc#E)%NeiYMG}7X_R$ukvSjY9c_G7v>J&xT0Oo)r8>)} zwa=~NDAkuG7}i{&nKRg_7k>O}-mJ9qeAdl@Yc_38{3jc7+IE<(S~WZ*UHWi14BuCi z(jYojdz{qq{h}#^XF#RFWk1!;4pyQWIfJtH0!jBYmr}nEqj&p#0OLZ^}^ZrvAh;j3fT#$!e1xv5`+qJ z|01Q>Qs5j*vYxs}qpZchrY#9LwU2yJM1-qLpThGb-g64AcDFYAYbBjhs+dLUyy7Y_ z>l2Ba9gA$R5e=vW$r0*cVW`J-8BBhKpry37MOMT$8Vt%8%blvRAOfk=XWnR~{0;Y5 z>hW&2!qWk!bRK~#S)i17C*kqaYYX>Lcsl1)CH(~#Iy(JId8A9(PH-qV++MfJ_8Mi% z-^_zrjT5fsdaEz@A#aY+jmVRm0 zc%xe;fl^#0&-~n!?N>=D#GlA3`n`6k6Jl`?`iKp=RGWcB_`|!mf0W)ug`kUJaWU;3 zZOLBy!S(O}L(S+XY0~{$igs7TN#l6rh)NXpk2oSChVE!&#A0sXEXSBuI{dwfHDZm0 zOCoS+GWF1_^r{eiborb4-e|l z;E=X6IK;z$-_)i9(&4n;_b2&~VvnY+OQmV*+3-(wd>upiv4b(lNC^-m zl8n^0g zsc9sxsJwpug7NA{8N_T{tM`G7pTq~lDfzWnIA!4kVBAUOZI5Mpu!fkbg45~zZonDK z1U4GlOI^%7{c*9}Hx&QbIyQz#vDjNV7Qge;V zzx~mB=xf4mL+@qo3shP1^AINd(c^71l=Te>7)FY&rW%vO(`~x~awlD#_xtU>06L{5 z3VKkWVc){OR|KBe2 z=g~^FbP(X&c!HjH@5P(dJ^PdcwYQwqD_ol`f1~MSf8&-;wR~HSQ%ml=!OD>4h|ta2 zq5a9)KNg6;PC<%L^xp<8?a120BPS3#NHms%e~c|xC9gKfyRHB|qKFIvRdy5!63)J| z6ltRC_DP?tM$7bDpe^YKhD51R&MWlCY!br#FjL7b6djN9=)5{E*k`(9JgJ~)!A@+~0PEKSRsD!5G~Ln?;q=u!FbmJYi`1)n6IsNw@{ zZ~9j-G1(CMS>*Opo^#1g!t~Jc2lALF!XS z=+Hx;R-?thZ>U8xH`8eage@rwpSRKCgNuS%_$~8GrmNq8ZSa#Ae){n`mXi#d>dK%v z$>z~1!!r$|@g<66AiK61Q}AV(;4!&|9cc29U1pH>M6E^QR=}K_{Zv0nuMd9=#H1UM zLOFC)YhpGz+Bmy8PsOngAr>8BMqVU6oh2@J-_S5=7DmL}R>STiA5oo7097OE@N%hG zdii`-VOmgEq_x8MK)9-T&|FS(?2f6UEC;D>m>nI8@!!Krj3x&Q`lvikWNCn!Rj`K5 zfm5XR=RP%qpZ-3!C}o1iW-|lkiLl%%Q`Mvt@riYAag@Y&yntU2zSmX%D zR!v%}5%4zoD0U#vV~ynTMHXTXGC8JTvM9gt;}^sG*s~y05&LIMzPHqpIs$9~$o-Oc zW-#9h-R%GGjgT~e=ITFykS+|p)v{nz#KIOI)AfAE?b_(C8&%#rn^+0OiJc&h#Cb}b zvtVOtYgKk~-lx4)O(y&W05<@K5AK9^I?Ri*Yg=x|jF`20V5$QjrOgJ9kw^SonZ#M2A>8^5zp9w>?c8g0qUjCh^6TF?0HhF{L?Q3$Hm zzGM+u*njqd^YiZ7@4%S*t^o6;trA2mJ3+bW*6oguQ^o8Me|(4I%oPvyyV-3w@3dfE zKj?f{^cL*!Sqr|viPLULlMPkC-H8>LiJjBHn2(p~aYo@D36%JUB@*%xL1p{LS#&ZT z$sYF0UHUZ-mD9Ag`&shith~uFocx?%3^)3&=PNV>eCf75rf8{677^_b z!#?<=9KcQu7AsglSmkEN28In;$vLjAc#1#Oh6CZcrdKe0W_AGw=&PccX~r;LA1+z{ zFGydqeY4b(*r!;p6x@$C#LkHq7KqSN!*eViT~y~>H7ZNA7mu%!Z%S;JMzO;2BktW%J zkx8xFJ@tH&n6mkN9N)I;O1Twb!hW<7C80Myi? zCvqE3HjZ;6eG@X~b^g{xCQlSUi@ZbThVCh(LJCy=(|Am**Lu1CAx8(Q9SFP02*{uf zx=$?*a@;q5#qp;RgXu}&wcGhcamQXJn&*8J_U*X-sv;L6TO{)if;F5q%E?%V4=QZ` zdmamRrHvv2fFtU5MC-P_)WLy||1WDAfX$o4w5+xK&~`W+I4%4=VOx>x=#)V*Z^Hv) zwd*`wK|zBlT5$W4U67u@YA>;VRoHMz(rA2ql61PcfAmmX09lBR2H1mn zPKX^r*x3KKLNgIyAGPq4r&`3%8(k!rP6(E&O_FV8m+E8yhIA>`0YPd5EjA>A%y*)1 zD?~G@mfzL#swFW$q(kiQV36~Lj!A+ELy=F(Se@RsK$GC*ulV3-4uKMhGiZgp12Uf4 z0FRYxJB)e&5qF(x%3U=h7!6LVs8%t@py88+au}q?2UYXZwetXDX1sC#S8>f1am^jW z^s7|oR0viAa|F1KqAZ`P-adhtNpk?bvoN;iR*BrDpQB{jM~yC^yX0%-Hd3Q>_kYCRjHwp%26^R$gC!?+>J&TE6=Er{IBSNl}BFobM^40UV)Gt=Iu*0<#sYJCTGh5u69KTvSg<$o^LZP*2(GlX3c86*x zoP()c(e1`7B7Qw7BbTJILGCz6WO`p7*cj2o9Z_I~=vCelT2ue(lh9Cy8lNjja?j%e zgH(N4Fy4rz$m$i1;g~t;b4qVg8}>t_9kga+88;Hwo-;7G(gLu?Ku~)cdl{ zD&In#CeyP$ZIIjyeTOEI_-S=8=*OMoc@p?mAj@$M(1i&Ih#ul6H_>SezB5$ zoSpeUxP+!nrh8e6Np!l;UH5Dc!eq-x={CF=FcNF>`(OG7j|#>W@RLS{k*VKBo`%pn6eDj8&7)|@;pjk0sb z0EXNTiC=w%7rwA~m#AGDjl{)R6ZG7N#dZ}TlwX|gLo$7z%gG_UqbHYibxx^i z>^uE3n@Hy*JyIoP_k)m5LzlSg@(UE#EW-}jC}4?0Gac9DNk)qGefi>6r8af;qmXIeMpj+A@mz)zr^@b){&3Z=Ua%E4)zrQ zPQ;NPY;IE|U%W$O(vg}W#l<5OC@z1*9OSg|g1L-AJ!bRzMZ3@ZzWk7rQxWYzTfJ)mEZ_fAfiA8HaXuP4Fj-J+Z5NS!qmW z`Yz=^1(F)lK0P-8fc&>y?M#q6J4``OlUV1a`ZEKFZ93ej5OuUO%g>e&F$^vLuov4W zJv}r162W=Yw_d8Hx@RQ>%&ELf310JcA-Hu`jZV_!myY^xOHC}=$`_*-FNXAV+Lfsc z3V}&8$_GI*(J92ws6-AU|GYgLANU{9KOuBX85cq+jbS_8#ZcML85Zqe73+XOvn89y zLe1yQMs54rFmb(3@H^&K1l&T$LG!|^Qhc!c=C1K;<`JV_EkOzb=J{mZEm)rFs(viN z33Txh32{3yyIc^i=OQexq|;0q$&n&3N+PmgPsb}ACk8k2bQTn1`?C0DkGDt*a*@h@ z{uxf*E zR92>Xd>DuJyTbF9&8x^Wa-SjK%7bfn`rbMaOUP*)(5Xtdl{13BN~@4BD~Ap+|gg^zq51A|78O z#)qLqasmt1{s4x#z;380`Fd*%mZO0{f2h?=2yrN>uwdaY*6p^UaBS0JQ#3d|&eiNO zorPr_bnb3@C(5OfGXmt@%axbG;O~~dBjcS<={}DWJXNMj$$y!Vu7~GC_b&aiAh9)?^uDsFvU0IVTuZxgAkB>+jXt+TdHxl#c@Y){3C-qlA zl;DqK^n+u$4nvW94hO;XUy>NDdmF{LCu<8ZN-1+cqkf63h>X|gop5BPrEq1%1Chrp zB^e(1pxjpq7r3Ddlr@xr4>dkO3<2k8p2yw6^)ONjB`510hjg=tQ>}-Zvh09$Mb{?2 zgZo#MJ49iU&JR>J`Dv}|=sVfYG zx-u;xi-9%jtR7;;|SK+f-j0>E{FI=WTGEo5Aq38DK?^`3bV5 zD6?o}6F(@3f&M(z?oJ4M!5yNgTa^8QQHF2NTW_E($OEFo;3Fqk@GA|}{zG)x^k()? zjLMClk`}-aCAg;1mS-x{?0~P<#8zU~RR{?m0?!gB@1SJ(ao#SK1L8?DjmRSp#dD|K zLPUfZJ>!ejm2oCz7UvJW{AYpp4|U}_^qd1>zG0crtXKTjaq~?t0ejLc_Ag5kiTVy9 zLfbGsn5i@b)C^-a5K4O;%%K=*XMWwO8oV1{k*U4dD+MaCyxCM0lxH?6xuW6Nv8Evp z>e0mR(O^!w?lqKg38CTE$c~L?%a(Ar(0i@v+LpUD0 z#>9mG<$crWH{dyxP5bkOi_crMIP_-(qe0^lt|2L?XDoGa)%O$BERr{wZlGsA!KRBZ z2<}bp!Rq z_KNORCWo+$)pDjPre6SXU%-#Cifm0Yg0Y)tqMiqVOMQKoa9${E_0(^-4a=d@vI~Tq zO_qH=vI3z_SpRCihBR!h9n1>fD+l4Hvu*fGjo_Zab&Q*=@xh^bj2YnptCMXd6q@6FqOW{lY8F-HDIqY^QA8Spao$j;zYaCp zGXsPOlTj=1b}Z_;N8G%Ft`qc&AB?-fJ_)8};k>8`>oFl^lbDj9d|g8@+^a2?iQ-cQ zJU?>xiTRaH%j9M)c;Di-ktXggvHal~4A3BDzbJ5E+n4EiA_T(X=d;NhwQYOa?sJIn zmty@c3UIDGX)MoXAIWDP2X86~a8_;RN#Pwr;>ErJ#XLxRH&bhf_TmIm^aeb{Nw9qE zca*Z`H9KOWrYeNyrL=J4cyY^lCmk$-_U#so?2-H#gs6^Q?4rI~I zeZ>ay+&*N5C#H{rvP~}hmAtWu2We_0PonzqXP=F^86e)q{`N3g(T6wIFPchVmxXS; z*Q86KtqY;gQMN>xxYZD5AyRrKXjyh2;oppv%*&2ruwPvMx&Dqr3FOuNg}lz9s*O`4 zba$DMDYR5v6{Sc%4zY?TwWzZCLX%{6;g=@w@wCiOuL^_X0I+Tjx|L5eu3?`8;3TU~ zc41(*s{t8e&yN-ksTDfJbFnziFBv3&CyYeX`f<$ePmuO)q!PT4Nv9d8n(yi z@of(V8!)tm06&JL-$GtXw}PH?0KVZ{Bq4$O>5k4mCgo{dnPg~Df9%6SEPS50j6hsm z(t!%sD;SyP%?Wz#kJ{CN6-F)%qn3XiBSaTT+0uzt?G|O$f55wyGt)#4_PMgKd)7Xpv$0+JJeI5!b!y(daJ1C#<${z)gC6lPRHoQ9Snl4hqcs+Z) zv5UVz1K?@k5YF@htsP)^&wUJ*=(TU=|iHKg#Ac9Dvw} z5cQ#fn`~gfGb6x-RjQ4xq81Yz4TACSa@QW;Ml=Ht!`>`(Wx$iBhSiz%UfwsP6U1P>;ucZ34MSPf-b7Y&+ayD zj?QA;sVI_srcTBMQn38=<#ICymIJ!0CwG|iq>u_-a|;4=)SyA2irncb!Iz+~J&;+| zCfd(q1SMK+3d5l{GY8U5a!)T|eF8RwIo)C}>BrB^m!MW#`&?^Tr4@zs*wv}g9^KHq z=7!`^D>`5j(h7uhRt0g`y~+QMPSgZqcj`9XJdeJt>t<{c0cTi$Gb+9L*xC!z`$Uap z%WE8Dn@D9)|1G4~5`y6CN9>*;cDbwX+4H!?EWX42m7+Gz_y3x!aJ-<9FH+%OK%i2Z zP!8Xzt^%fr8stc>%JL0?uz_8#xJds{)cB$su)hU+45^Q@&S6C!s~O z2xT*C9@V_)(az!_72!#lrw3Rvx0L@z&d7WlHgR6A(dHXG7q*9~FmY-?*q7$~(6b}R z{Aa$<#V0J;PE_|AaM=SIgufeNiD3D~B?>1#8Je7FAaN@nh|us0!E9d3=7A{hu5{sK z>iBwQ0?yYj(PCF77zdm|t_5s7UO9dY&!Os{irq!MJ@)?$(i>;5ad#e2#=+Ls!j8AtFptkva<7&1xfD<3<1dWpckL#+SxSGk-U# zDMuzw^)zh~(}I!UG~)&75}0s_U}z2*Ik2_;0p%rcM<}-p`?oe!r;x)p2xE8`zK4oy zfo3H_$6XsaQe1c^gbtLD=}4A{ku1Gy^WSjeCUd6)A!?+4jsTal*TntW(a4-SoDW2WUn+2WJu3 zteygtpt;rFGXF-Uk+|0kAnBdH&?xx2%^+t?4@7M~!$hTE)3UT}ge$x>hjSrw3Gb(< zjbm=+GJ;RdfvcjkvsbXcD;#v5y5|@V(hWzVO?-_Y-Gd?&C$6)rJ{;q1&?Fs${2`0b zSjcj0-TjjhO_}tLUMZX+-fz}9Q}%^?`|TBnkFui4yoCP3%F^^5d-We>*(=HB8ZJZB6i&~NEH8WkQqX(iUxfB-A z3Q>t`bFoWK%jFTrf0-mB1m8zFJ4JFJAA0E4>lDz+(r-KZuepv!;r7&F5-jrLDbqUfBDIj6J~|w0Wg3k zToas>?^@vmsN{$fGXhwt^kzmh0C$2ouxJ<6+gH%}?22$8vLx!emg^BCRj5BR`E%mf zvGeH!XJ<{5@VSkxeWc)Daz$hG!}7DTQ@V1}fbAqG>Ezo?kO3~pzrlvJuF;?X6J{yO zAB({JE5Tr<ZDEbOPCOVmDyt>e}SNN3Y1;(K;eHF-Lo$&cv+R} zk)iiRZyyQ2R{TtUw!2IzD(A<~*t(0on{iwJvq7!m@i%}4bHuj>-=Nk<4GJ%qu8HiR zOUFATZ6(&{R*AlSjCD1;h4NTA2Qztd|3Vcj)%Sf0kr;t&{ur`c~{ zD7lDsb=gXcNJX`-@BeYWEaPtM!5PtJHjgM`wt3&E=n~IjOfeZ5Ss2`Cz?LY9z~Thv zv`&SPpPL1Gmd@enAG`>JWlF)%IZB?==HKD{jKa~oRRibb;1e$d)K>QKZxrJ!EYB5c zyn$XWi=Ei0+}~0}7IaqC|8b&-AlZmT+JU)TjATBfB57~2}t&iNh~F?VD05z zZdZ%w=}^o7p%WnJ5T-+pO7>>8ZXvs>{~UPKzix2B!6Ec)LAx$3hI z!j}3>1Jk5+2n3X$-NOnPlHYat{YOj1k^Mu<0dk_gX%3Iyr9TA!9*Il9@KQ&}nM^mz zGyubXX7XSTkSg z&bv5LaMzV8UV(lrHsn-K3q#nc3)EBB>ZmAL1&^xFg(aeh2WPLD- z{2bM$zfp;RE|3Y=xVmDTqwN~14}<+7AF|RTEsIGzXj|YiV-eh^>dWt@3Hzy$V8UFd ztD-HNZv`O)0#r2^;Q)P*baGgSgx3kLM>D`#F+i~!=OA*;ZWqif@#;#wb8zvwYE$l} zA$iS^@via}S=d&rNHkl5dlNhyV?n2m_^yc5mixYd+#o@K)ZeMco^1mRd%Eb#(Ssec zVxf*OvHX9SSqSt2xz$>SlJ1J3RgANa z)^@@|-xfNeRg}QNhvBKqW$9VN5J}Y5K8-RO6uG$}8hVOMR<5J-?3Kp=E6+wCtS&(*srOqBw>B|>FPNf`9w=-+u)1M;tJSQPse zXzlg416ak77{?#c@;wzIE>fF{whS6`>l~2M6VHTEP^;M0bhg=Dh0XE%Wwn=IjDh3v zWcY~`7HYFdjJBQIwA&MYx##Pl##IyB?U`<*beX9oa4|`W+l#AME^!BdorO1p!(8=zO|V%O=$?*)=yExY zDrJNbaz3cksK=E*{WesJBKHh&)3jaDSY$|^Z8BqekoC0U_g21$i-Y?(qC<7wLj>bb z16+T?!+~Ahpl)GaXmjg1oRWhBvIiQ-3{VtvUTtiO`NN#9`S4?je*7)6qjWbw)4%V^ zlAoQoH5QZiTwxHxDnpZAVN=*kU{~A0VQ0iI+*m?rXhd0e7sT6Pv})cBBDjNg3K}~x zIJmaislr66qUkW#13}ZP-GD-!1c6?YZ3URx8dZzf9-K7>J2QmB^lumZncZIDEeGJ~ zkHXQqMGz5CoJX0(>2ysf)pt)>d-Fd~ zhYMroBxmOZkca6LMH>V@iK7up$1vfV-!#qkm&;EKadoO?Uso~sP`SSEK}B9OzOF&) z2ORG_VZa`?A*F)}VpY|zh97Oc%PA1SY|`c%Bw6v{>F$K{GKLS!(3kvsrM{X_uii1t zz`6s*PXGVEz^-f1YWBo{Qm|Dpu_|Doj%4|Z(KObzpNsr15WWA1%oK;SHH0SRmCjs| z2zPECgGF?WXo)z%iPHcAK>fdQKiH6Xo@G_1{LMGaD!rs$n88+>#(xG3pa%v*w{KnP z*cqQzvf!lr9D2W0%wnf;B094VULobM(?Ny#@SwBVnl<~}7=J#>&o8>E&7DUc{d5En$sWQu+3@9t4#25O4_?UO?z4PNyl< z%*S?B*r}V3qGHG)Zlw3)BgxOA*iUY1bYly`ztfR*$J*-f6BeF?YyV%g;l4%1uwC71 zy5?9}X?JH3=;-s}*?%t=xK}F}kqXFJvmuYI+h@W|tJ$ZUiETxr!m{Jbx-W1qxuK`8 zyRIl|N6B8ZZRZp_SA46v&E|Y7Hpk&5l@^k(#ny>}g^KY%(V2xDRXSfn{*QWiWCY*r z(KHO(xDtbpS?}7@dZH;Fs|?YfLo~)qAj2UEd|Xk`xR4>ZfbxiOT1=S#P`HmQ9KZtD z{TqghwKaLquN6-r24~GC@j;~~;TYT2%Tb~5$V$XjDE5N3+9N|MmwOY=j*~p$o7ULW zh?bp%N1!E7b{H#%($!JC(sqoTd^u;LEI9^WXr;uztTQ}tc1rtYu4~Am`|3O(ulLz9 z+O+0;37n-DxZE8%?48_01aULc}x|YV$sEf~&3H zlo=?rJN1ddy4#2R`?)bxElPxGi21C3vQJAE?P3?;ifd#zPuCmAaWMklZI$=~eaqb1 zPD|?H_aw7PDo5h)3r*twa>>A>yVm$)m6+9f6GBuPQlUp4nPz78B|I}q9k2S=4RfK& zq9)L!!hElnvj!`f0cUDSFgx3VWLdi`RWzsZ^3^(_WV9}Lj7-Y&ab4w9+~uMk%)u~K ztA`E%-K?XU43LF7JYAhi1Y9nFbU=ypi{)PHKn1Kl0SD+2ni;65%g;P&&sGm8kD`~H zCUd#M#Y19BK)eV_)o9T7j+GDrZ1SttUljXQ2fZSi*&Z6<*arYynPh=;Nwx2%QbZ4< z7^j)MQBnFaTdDQ(F60)}N0NjKjKL67-iK|eOlJYgmiT@zBmwY5;4d6mSQTl@d9he2 zL)1Fnmn=8>t~*w{M<$L`T4(gxKG&9O^M8MCO!I%I2pySg{iB@G>!P2NX&+Y!_KZBj z{BMvLSYgf$P&R4-`rh#xUMjY7pq&bHXhg?Gt<}@?(ZsWz6nFU)-(qJ;GP#X9Sxs70 z;`3zfjILQy`S*AThVLtE`Crz$j z4Z;?j2Hq0l>U0p9{`_C>wHNO*3+(f#X-iV~y#Mu>a-NLq(kWArwYy;9n?Gi+5rN)( zFKEL`*x`_bKaS2(qdVpT_jKa@Vls$_M0ODbT7AzICI=`pZ!WL+ZH^4-LGCSGgZVJo zute&4QTWdG8UXE&ZD4}leU=-#dQ2>C3^+ch!|O@`#n5Vp!2P~{5u%b6W=NBSgo_?pXEQTOnl>+DH=@aBUc6IC z=4r^1hH$h^TGa;|{3MUS7Kgi2mU(RLgBLIGdV!NWE3R&5y*fXH<0B&XNL)0c;%S7k)uF zbA^TxIjmtB1>ApAo;ee8Nx=zwOTwwQRCtIJo{|#Vbz>rX$U(n9Rsc7;9bfKPE z^CD)2JvBCh$flagfE4$GZkv3rpxKA3xEu|SN1Un^a$Xv z)_>m(d<4+Shrc+0P*36M&f>w-#yXOPqPd8{TAfG{;cRlU?*=AnCE$K?Y$1Rp*ny?6 zR10sZk{{u^q}G&O`vc@JGo^3bNO70V%_Q3{Xsl0}I;u0(Wc%7r{w5WLTJ zdf~&FKx|!Hm|%rifM;bjrWg+AYB8C094ASGWk}t913Kg>yXMaQQ5eXC#P5%SWHlYm zt2`7U_t_mPQzc)tqbpln#3v~ZKMX-qhW`-8OxGt4!lv7HFE6lt&m6+1mToSa*=g6m zxBEVFKBa;8S^JTRT3p=Xg?9WRXqeGK@O>_WOvNvAbYNW7V-Fd71HEEq>|YP5Efp^| zykh#=g#55qPt0s1LM`FmwnP9WCMnT1IK9>JU%=M*+hloXq7`Sn)Yh%&{@(}e-Twa9wnoPDf^T~PXm>CZNI_GtL^nr&%Q zSMpfF0Szfn7KNE37Q9Ub)w;h>)dPH9hcLkOCj(y?V_`F<<#(u_+n}G7i*_m%htxDT z=@phD2KcfcEc1@V$JPr#0c2P#(Bjl-f^wzu)X6=Bx{7w9VUEc(C;Zod=yN|tNJ7wU zEh~5nnhx{8`1J4|fotz#A5S#6Tw@?pqJd~KHEP`)mYI|**8oSou}i4n#`Dv^+;Wr& zmj7li53%T^;YWXmza{_V3Z3}o_f$B{A`2wHDnJ`9ta*b`>Z)D?awOGaRv@f6Ez}r& zjVRB$t$D91Cx7J#gF6^$46Ii2>=iQ@+yqH2y<7Uuc*uu)^iQTb_yRH+1Ta{!HcaH+ zUnwUzOYOAvhxh`XKsf2I_ptbk_HAKaZtp&pCAPX?sk- zsz4lH3ONy9Qu@+3kL&&$9s$ZR%hYb=3Nx;;td=wsU5h*G$N0 zlZ9JO(=x>)RPMUQk3R-JvsNmTS0{}k@gq||M>NN^?&X_GF{7c_J1pBrf z-?nojU&2sor;u8Ul^p{|F{~~Y8*XLw1%&;ZmsTfp$7Z_U%ng&Q?Q$u$s9hl~)T_U3 zHZ#MiYFigaIga?J(gur4nnB3fFZYN1pmORd1M zwBwi@m*@0&xYi%tzgp=t93id6b)G8i?TbW+g@%bW4C1p9*VC_{#H>u~{CWSG+#;J` z9Yw+?21m-2E>M#%YWTEDAeaBO@%*$pWj~O*D(N)*bsd|ip=7;YWKkNua&-sut|5Mp zR+SRTg4f|ArT2%h#)7ZETsXk7KI7r;&QNIR-(n7$^_4w#e@=TDrKSXn&LH?6OGjAC z_s4Q(^*~C>#eno|l9-&1#=lAhEg+d<35XQqoOTI<9r<_Kt(%-Gt1y|LYt4NHLo;-iPO<^>SaH_!#U6{Nu z;8+-Qe`(W&sD@{0ygrwHk=l!crf68sI|4^bDtlc6MK%OXQlY=lpF8UsyD2hdhGqRB&U$uzZ-tHdKd2u}z;H7AP$+EF z?bZD|{>uo$7ztn*0?eoOvk8C~Y0xamV*C^+OOWcK#P`Vr#1l1 z$rM#y1Z9SKzSTNIxI+(kJ&Bm{_aS;xaOB~;6Xfv@l_(&P$QQ25jTO-B`u8U{8&$Cb*2FEwmt7R{NO`N$;=2e1=o@V`lb( z1bw}&4ET0?6L^NKA)i=u2{#*PTa&!D#0FarMGL+NXN@^yH=Z<$u*QePc-Y6WwMlfD&_fJcRY|BW=;46{05@?5&L?b(b?h zhnL<7RdX;DTsg7r_N5S$FSVMO<;mNAp8|@7BaUPe1k1W0+^2%_gp{DGF(9L8u2l{^ zy7PRm@$erXiF&4(h(_&#;;+|+z}-28l222t%S)hU*s~GeD!J3@(WjzE&Q~m_0m5yV z2g8UpzANW_i%TCvAn`K+hW!Y~{ZgUSeKF-_6O$GUCQgtLP9}zEUv46zTwS+!1JH{ z?a$Iq30exFPXFVty@9QQG}KS;1X&baBI0?Gq=j8DMap z{V638D-e3CA!|fJ7$+aGkLsKHb$A5fYW|&)VB!pnkJ#{rePy{Aqfil037=g0<=P8n zxK3h#=h~YrtvcV8O}xDy4D$K%6-H{Z|48b9deMYl)U)L4of_o0n3(J9IIfkd>fe6o z6yfHiwBty5%W&c)^B{RB8F;nX(`Cu<-cJ?=;)Y{X8!#ojTNJa{4TzRJePL9gqd{oc z2RiQ=whNfl|0k|Ss!-fq*&=yhK#ON-T)QDvzA-wL;u8Sz>T0^~IP?3KQx3moa;uD1 zfWqicc_nKA=sM~%_$uW8Cc(hDE5k(QIcHv^dD37GyavXzSRpI6wx%$y^AR};9j=ev zf|dt=pXqCj)zt2otV_>?Utub_D)kPmQqVCyJZG2HRB-wcy#+>{ghU&GE&|h^_mp0u z_iMqPB@3v_T5)x#scAlRtm(_-)MRO*vs-NkevUlk_vmK!{Tt$6H2h11*;OSgHp^Kv zf_~2M0NOP`jc&x))_`#cEDs?!w>3gFqLW#6kRX7XDoW!(fp7Rf!Q-J}J7w8E zNj(71<8Bj_GH-3EBq=$#Y{KKK(=M&erZdWS{e_mzGilClrF^XNhdP#e5ie)BM#a|Q zCR5HoD|E0;Rjvma$&5dZN5k|_94f9j3?Hk6f_u&%9=w`hAZ%z>e0Jq6033o7?2EWd?hj5H38AnulYBT*4M z+=aNCBe}H|993kPgB7#40QZkxTS$&x(6O36O#K_ssj@T)0e}4&11VIt$~;y(jgTLT zm$&EphwU1#z-365ibl-kq2?((euKamwh22ddcjv-@`2sy+TZl_ux5&L2^h|yGjL)& z#ojPrT4!KEg^qOD3=yhCqYb@^(8fd3*5)VZF`|zPJL$jN*L7LCBv1h2#%~uL=sheH zME$npG8CmqHf1L$Zp8>dlAuT-a1W zXtkb_7}6uesDiuM<%aCkB~%xZ6M~ho8ANHUwwM3C;!PWCz|AT7jKY>4uQjoLfb4X~ z;LUEzusS?)zm!olD~6~Ffl#5X9IfJ7GGf=nlGu6xiA`LsF7Y5o!|TvUc}aj zhSV3A9<*j&o3L5-@ayYM;YS5HoTBf`3iL7M6jYDzEk!pa7blw78-3kn{T=WUJL7DQ z0QnF(CDa&EH8HyNFJ+2OzxN6tkv#r^X**)@jO=|@4Q6tmYx$;3CgV>`#Ih_|Ty|1( zV@RCKTYdLa7#SVfXKc#}7=oEjX|2wq6;!WLZng^NvP|l<`pJz@(7&6I-x1XhM94-Z zcMPt*8j7~#WWB@Wv*<(H)ugH$&2$>ViJwgX@TQB`xj7p;d(G&97kW(Fulbq1wl0gB zdhz^vwcNJ_@uMcmjzr3ajlT=idF{1c;*rYb)ff79F>Z)J>PZ{fkD0Gnzt-=pY)gG1 zzdfiEQ~Q+bG-H{+l!)6`p_ZsS^pd8mB1JeD9Rcvj5DtxL@O@vCqgXyK@p8hU>`Z3$ zqt1dWD2eITJFQ3b2n~<8lR!a$r1EMH;(gybk152H!A!!l>tvXX+F|ld;^ZX*lguNC}A~=u+;8~eeF~9L9 zi`yy8t0v;mNxVMo7U|HMuKY$I&GNHnMf#NFv(m-?U#cN)wYI+w5P&AW8PGc1u1tGD zRT*2!yZcz5OABp_Y9V$)E8#!#y1vg{1@tLVL58sDF}<`$;@22^l6eMuuF*BSG1oNM z5F7W7?L9xt_bglhZPMXNQbq6noQ__7?vKQShmZINVlL>`rhVhqfR2GVai154 zT3UztjhM-0mNpJ^#C*N8hG#x@sq$$8o@+41IN!pj!EbP-2PNOllIXOayU*jmo|(A< z!?g*t*Q3w+yzywor@b@BX62DPERlIEvBwZyiuOS1%50sn?zxlMAca#h{QyQ5FKhKm za-0@Lb_Jk!l5u4q)%irKrjS`!MyWK+5Ud)U*LoFH=q(H2v7S8I?=#|brjvq4* z^!oGeht%(yC-fkvB;JBpYGat!)76qP8o{pH{)y~wD?p@c*X^ z9T*fvKRY6=)}&0`mbFP7eTqjMINM%=ATpo-!ZuVQ-?HM8ehVqIvQzcx55csb!#a-F zlxXHrw6d`ply+r_ZFF4-;4M17^i_} z5z;ErjNGnJDN(6p`q%`6O(&1Johc4kWvMdW0Xrh8LcY5FQh8bN|Iq$Fwas`FP&^TH zVP^Dyyw0jEkLDjG$b`ENp0f@b;y2tT31+TmFTjv=Z_uUVTI`RcO`FEyf)U`pWLqD< zZg?<~0^FLg-{|^1+r1p59A=IwA>QyCAD|(TZ{7!s842DvI9*LCuc?IsoM~L^PXm}c zHc+oqw{`$<|MLz}P^%4MKJ>*~oy=m@I$`1z{yMF6FUnj0PU@kq*1LHd_+84SG* zr9g$JxcNmOL`WoSI5qO(`GTOBS~;RHltS=uU1fb7C1V~T=GrR}R=(TWn45D%kTD>) zW`5tzB^`!{=6GE>Bz5-wlh;L%ZTP4+Q*r4*aZJHS#dpTVOu0d6L(h{hOc!V3Q8!eN)NqCsIJigTyKg% z(hxbx=D)_7S=N)Hg7wkCcQi^@)bZcq;%c)mh{?Z2*V!}0f zW!uC|js8UYdAx~Ph_Iz|sHs=izo5YhUfCPWko4nhp57zE_8VI4rr|~`x_9NP9NbUI zKZ>-n5S~h{%JwJrDr8{^>UetUvfed#DKLfJb-;_NxtaLO^yZU>T@wHo1HL_Wn+Ci? zACm#+hAn;1vn9f4)vox4Pl4>@lEXhKPizfD0_H@gE7M~pA>=Z(`{O!CTg_FV2uw1Ubq!iz)Pz&0pxX-2HIfR5Zj;7 z)MQ&4j2^xpnUCk+5rT#Dcmo!qbr(2bsDl44^$bShutq)IkYey$n{iZLYKVfGb!Ddc zLf&%nslV$ywOsemzjMJ;iO22#%+(H_=PoXkDrfmkB)Wmd=eb4w2S+fU# zO|OBJ(7_z*Ml%ql77ueF+jp)~v&n+cx0&gbRZx(w&!6-)0^DMl&7Sa2+xXS!z^npr z@ZiT{PC?u}31mfgxmx!GEMcaL^iF2OeppA!0OUmkL-tE|KR&j1Swg-wEctyPd|hvh zk(W=cmOp(<@tsD!sye*P=u+x_WMc`b(QR_M9od(N=iiT?A=K%QkM1E;WTpj_nQGJ0 zs3rw2mLW`Rx5`I*qBxLuOm{alCh0K+dIoch@``FU{gS?xA1wbjE!7URY#dS|BeqruH zn&m$crh*@w5^=^Q?3SwSt;2WFsR((>QkfKH`gB1Zx{@?$r>R$VjA5wk)waYlv6Xg8 zCLsZNiA4()SjnsUHM)9X%zYWBeKp7LV7Ni55K#5N=PEdJH`4K56~|bpxac6KcNId9 zcW}x8JeLdzA}bg%@~xc%C~HpnZ_oK`Gk)01scdS4h#Q#a_xplIuw~&07V4Dv+F`>g z#|{o=(JAlrRDtM|c(*bdC1bWO2g=u*TLr6&&CL8?=dgBC@ddRqH6MS;T0T#cWh}Vu zTxlqXD_P^gbhs5NRGJ^25R45*1`KtyqU8VYYzUsPgEy}rl)TdsEaJhD*gbOM zjr2N4OF)CQRpt$JKM^AyCM`tA9C(x|@bMx+zXfK;@nu*%2x);Q03RF<(Q;6=Z=cHC zcVstVJZ1gvL*&T*@25{Gnu2{Z7}ouYEtfdI)%jM=K4QT@$?C;A#UL2C%HWh@U(uti zeb$>@@!kxFG6J}|AAl0Y+KT-k>ghh(ytfX45a%1gF>5LNuB$?*oxJd(XuX~3z1OCK z3R)RuOwe4KJ(iZ^yx-RE_rp?C1{izF?LzKBu2WHnUoCkwu#eVn{nr5U+v0o8||ZOo#39as1$Od|2Pi1_A6)Bi|YeG+l)pfo$Xl|L>;32r|ObSge zjf;Ms{U~}Kq?)PLtOTPv91G;*Y@Q!`z~!&gDY<_*abB@ga(*F$UjfQNm>b0)WHMu?hEwOZGJi=ct+FFwG zd_Mc2*B<>qMA-$>0+|YmDgyK$>RP5{akRtNrro^<@b5?WfXlDx<4fpM{HjEoEYB>B zkxN&!wR+Yo^6RyPHdy(wv+Od8!2hA>$1HWF|8cD`!hu?OkOBAK3;s45OCm~5Ptv)R zS-=jQ|4)ob>oRWeAYM%fq>{kPK%c~Vd4&|C_j(U=d_xnr0HS|{63C~RN{Pn*SI#Gu zel_hP`eKQYQnD=Z)8cu%&bM<7#$3`=$z0Nhn zD?moN9VtuB5Ytcxk>867wo%M8rNe1s26nWLPF^PG%p$zxHfBw`fie3Yd5CRJJlcm5RLDeFh2m>dSF(+if7Av^Kq4;LGU%_Tl;HY7tXuI2Hhy=J6smLjT@+C-73~N* zwCNRs%gdC8j|I~2=mkY|gw`WsJmiw`A})$qi1ztE>=)kJS}V(Icp6n6bGg{}rQ#~i zw_y_lgB;WtLkq&+fVYs9s9?w2r@!et=PS!ut^)klzMGkXgE8)p$FMqN;s^ych)EU# z2h}#RAhq=-$S8Elyd&;a9!UNhZT@Sc)h8N|BVFh1 zpF$ygYMi3h)TL}EEwiImR697?%Ta=PcFL)-uymHiCVNGhYZ;?9KxuLHsF&qb!SON=7q5zgFB0byJ)igAoKKgw%Ix5_pk{-SP~~ z$V{a4@AR>QIhxws0M{cG-xa@!gMJ;Y3eGca=sgVfn-ia12_8=ulWXs{`=$L}w9Nug zn(z2bNH5}NZ?ZBkL5XmQ8A%ns(S%B+c70q0PQ!r30h}^+8|pI#8DKmXx6Pv2Xpk_*&N`OOOZl3<7e6YqF!UR201YID z^104)6&;v7YL@nF0(h5_@2ev`2j)3%idnPHgi?A*)tQ5wpZ@av{q%uwlfz-*4}@HF zkM?QVfe{jPGYi|P+czY<1zynRX{si`n@@JeFCbjs@B~pt0~nkylVb&mRw52ZAU9O` zU=Bv8MTTqKj1v};u+9wVs^?dVJAGO;qamma=Ca4=8Z(rgY8kE$dLL*DY2^ts1psWb2Sd8Z7$Ie7zqmKw=CR+<*C$1aX z1AQF6QqLneu1N}e6KjmAf&5==F+1oCkvS#q_aJB8>u zC*$c7Y|RZ%M~+i_G-i7m?|KW-u9*Qcc3OYBTX@7*elBId?s zc<4MJtnP^u2}HyfJoq4Md>~u1sYpzZNN$2L=#N^lNM^ z&5!}bNV))5S(_K*2Cb{C@3M}lJTen9f%y%+=%+65GM{}x9DK2cm@$N)l`5~uSK%VA zf7K8`UH~o0o*(Gu$9aQgZ@bK)0M-uu~y`E?WjnmwzCV$Zleadu*Br)ad8-F_C$|Jh_`9b8s|23Tru<*i!I zBjoGc!_a+l8`TnwD$zS0us@aU#t|-rzwj^$geikJ3=Dh{3VRGC%7ojU%tepqHv7Jf zX^G_8Z;^{I|7cygqrs1n(eTG|)1D?TKi;dJA{P4LnkGQZ7iha%JtBT6frf|o#A-H+ zNd7FI+p>;eQGH|3fOg4cr*KSGz zVx6u5)V{NBE+%`c^W?h`A}pQbCWY$(w+(DY)EGIvkG7=WUNW5(hkG|t2P$(y7VP*h z!~Wj1w^u)~d3VQDq;+I5R`|uHAJ(lf-eUJ_)kq_UA?mmuLtw zdruF)bM=tY5k6na1V-!sQn?LHV$J$i)1c+^VK@DMpRt_Zt~jVgh1+;!vhn2%ww!zX6aFwwdG&+KV z!UM5eZL9CnF;oN|Iav9TOY$~vNYZUljA)Xq!~eGY_NO#L*=5cqCXd7IJ6m#vvUx2f5|H@y&lQ zAJ~LlMseZ0N*wq8*0w*QdB~Fak&+%S>Sy)Gu+&6b6y#BAWkomVQy$g2Od&o@3}pX* zzw0XtPnB;8_fd)?KT)$oY{GHvVQ~}m-jgHXK1ZV%PYyDvGc%V#mV5og^;?CHSV%Ry zVt`v9@?!KF{<<&;?sA{;?fP}DwkdQp{dHwy_it$&l2={#j#s1%ik3SN;9(GU)3kuf z3$j0F52eJ0!<#9FA*9)nEU;{5LQzevX zj%*eaSGc1)t7>$M)RjBs+@^&WZ|G|&*Hna)gj|qFQHjS{T?C=8(7omx?aO29aniR1 zyjQ9!iPUd?09dF)9y~>V1egR-dtn;GoX1l*p~loJavsar)XV3OL3fJj_$#sTV0k9% z*TD*sZkM~s#EYnOi#tICsl9x`KGaVD>U#}+zn}VvKeo&vceo3EI=R{hj|__w;o-H{0w;JY{L)t7CIR?o!^m7> zK;a-}6Kg7#4NSf`tnXECB4yuIGd(}8>H=|#FE%+$SL5AbSYJ+P<^x+qhGdP!a-fiw zIQI^qya;OwOJK8?)GkEAo0I_Osu?NeFlN7}n#5}vKzehl$GZ(DagETo*2eKhB|gqz zS(RBv-U}>}kM|mU5DdcWqkpg7gH)%e=7{JlEHs#naVMasCK9odrLM|BiO-baC!kyjtfq!Do!9t5IH{YETjT#_k1@Ct zv4(k%AO5NLgv8WZl_Y>J5hD$Ah$BLTHl+@X#Bl;;0**C%@ElKcC-Zg<|oN^+sFDa&yf ztpYyDsxQkHyAIq%uTZe>3@68MwdDwe2kM~Ac|+Bc@*4bDhaUiv&^kRqxxTR^qi0}0EM{Gj)jC9= zxi4yM{ghZXE88ADc5w!G_J$`$xGS$qC{h%SToR>+6B8T_3>d4=XyTZoOA|q5yuhh9 z8bh_Px4XxQT_(^EinT1Nwyg}9>JfGSljb$m2e{I9rXgT@fz&>d^C7F~kV7dv13lW< zzK`Qq6ohaNy1P1Ne`~5nRqt*0!S%Z&MAiOU9fEo2hQ3g^h zP~47}F~+1s4!?{PBqevilp%jFSFvZc-3k3bq5Kc~C6Zd6oQ7ARF6NJAM6_nb%=d*~ zzbm7Q-NazBFj?^WTdgHLwLNUPk6pBI){c494oj2UTD$K)$ma!Q`6~K>K#nnR>_e?2 z5}gf5JbH{3%7k!itXGwje!(yXunFveLBth3hwGP&1KsU6LoV@EmPXj3K~+^RSZ`<1 z%3-y$VXB?5Ng>!)`#`6oxrS;m_bdFYK@l}UTo~$p(;+JRi{(BPh{RK_dz<9^t*SK= z4FZ6~Ew2-KX%~7`>P{{lX*h>nUp+cF@R~??>x*RP^~d@uGp`#9j~_D|QySZ3#f#-##IRPLB5Wt9lt}It=we!BO4r%CV|r9l`F-<@@)d zcYLb}IIz8s9UAI{fk{c|Y-#%Y5a*#ZKq=tX1545WaY!|(g7V~RIPvV+--z=!ma*>T zGewXgVl5vShTB^pU)R~4P^bTK`7j6d%@uj=+tZ<v0uwxkNYkqZDJZuTp7!G z#(Krx56|w}+^bVmwSUZ&Jn(H_D=)lV6JXO#sBzZb9N6QH?9y*n6^N^1{v zX&45Maa6<<_4!z7dBplonGMLNhU%XNS_-_L=NzPl+~BWi-74T9)9z9sm|hdz9$c`H z+O2#ZKE$9X25mNm_y3d$@N9 z+lEr9+l)Y1ZUvY?XVnJsd%DBMR3Wv+aP1t^(`ISHb$2P2)4^Ojpz{CWrN@hsj8IK4 z0@#~0kes4gGY{yeft?C_8@4f00 z2pV1^6wY>S!*$lG3BX$yg@ZfqZSWU2VzJTCZXXz%fZ81y4WZ`fRxjTv=WQfr@yg=w zNj6Xu0w{Ms`g-rYpru0VCYaQN_82uaI#3l6m%swzM*Ikm*2#>dk00j!>+^UytBwyxx{3Il6*Q|_KSi0YKI0bseLvX5Lk=~7tfnb=}w zS6X-(fd+hL4NCnTp@Rv+UVIB)mr9b2T-AOBSvpwjip$Sp9t>%n#KGi<&PH$rwu||e zi&dCR6tXQI#cNK$QMPR@4@hZ+%){vDqN}be=809yo=|(nUUTI%jRqx#oumi^tspgo zX^}u>7Mx3=QQ+XDA%4}PUn+)_L@)&+1LXBtrb?#?71!zRKUthJ=0D2lB zM%ZdSIYoXsnAjm_t+JB56HSa)o^Y_8LC>!gq=XUJpw)KJ6|`(^Sj)EUK=>$Ck`mo1 zuUw8e-GtZP$+Nw0if3T~H<>k28_1e@S@XfW8d6G-#8lRXHfrrxGj*L-5Mq|*l*TI~7=<(7oK_u+dQ}JTWXqKrjtUaND z7rDFU8KOl<{!MT_Z_GF0y!fA%IkGQE*M{mybrRbuP%R$HNXJ*Ab!7wWH#6yV3>v3cU80Z#>vm-=Xp12Fs0Dew zN6$vFg_qlQOoNz@$dnD!R=V`Y_9WXB>U!V6PQNb-#ek3fDpL*iP*{e4#u{*Fv9?Dsb{yxtwIBT4JuXN+o?Ho||*_E^^ z|Lkhh1D?!@(Fe(?!jOU+S};Y0WB~U5`QAuwK9p%t0Z0 z(`2A0$W8EQuCRF>KVQ1if_$9O_|*$^LYTZ92y4N-d6QUu&IQjL2gQyJvCmnwR}T9Rs6OamVnAl>p{MZ)3Yr!jVyet)=xFbEW&Wm{D)`yZwnnZf0E0135Uj-{ zsyk-!E|P}CT!nf&~^k8GblEJ)1_sJ6ajT5{0CsQO5XDlHQ?FX47Y&B79tt+UquoOE#)DDB@lDXTfeMr-I=c%oj7$e7G^k@$n`kl-G^ zwnuDxlWzg;5WfP0i(dNc(Ll7Le1M+~>mgO!PT!8vC^G_XyB7+_=l7yp8bdovqJQJo zuU2Q^Tx%^Xt!ueFlbQ#q5@phDztq)=w_Mq8sK7{EQ(hbK11%ogt^((A`4IUqCFz{) zlO`tpTVpq$ENZt-q*kCsMLaYNH%b1Cf_j!_0R!;de&l&i6N!B6fPhA`Pnr;y{(X5* zbyX>bmp3}3A^W(Mid_agnz0jJ>N0fE@*squYS0do_s&_yG|K7?sx@{bMPNM9CX#M} z6KMUO6)KV(>jwZ&sTjUL1U(~I@t1rWZZRvB;@WbDVnUFP8)3BUwok-iy*bY0?e*`a z3U9YcOlX~W1n(L}@B3@qVe-K|Fg1UiN}M?S)ytx{-=Q9l&lXh*#_JU!Ie^a#)u=|D zk*<|5NB~d+A5T-NLIqRPDUEqPYskV?$l8fP&Ea%EDHH5g5o!MnjZxk+O7=ve`LD1~ ze+(lh5_@6Uiesl!6+$Zew}UaDU(X~lRoyfpEv{CFeubIIfYt2)T5>|2Nr+PV42P9T zFS057c@D55Qx^dsNFuGB$8@d;-Ny9;m!JLD@w2Q?k4&sQsanSBg{tpbZ}CEqu7`@a zUsr2=seAwDAVb_hQ}i5dnIxDh#s-JnCY1v5wZV)ORW(VplD61oZu7fYSSuBoedDX! zMy@jsP*Ci59BON^PV<}wVjl(-rmVR7f?g(l(1GkuUuJNwfq==`F!qK#{NkC5o(NyI zvY5#1m58AZ4_bdUdyav?FOU_%0gO zra?$Jy;%4~UqmYSd*(-X|MDl?R^Lz8S-%MvQy33 zPG>^Z&HhYEhma7OUWUPQ23t92Z)OeisD=QO2 zF2)*_(s(F{rKtYu!8xm8#ND7u_a_-ePu znT2qY1`luGVT$MiI%9BRPGS(S7q8Rj^pWq2Zc1;5Mzm?l(R9+< z5i}DN#sjwHHKrVuPbK1jCr!h6EBVRl#cR{}FDGVhideOR7kM|fNgt+vS@n_jsqh?C z?ILH2&&0zYl#(SQx@;Dv!M#8hS=aBTfRK4@0VWT5* zv^X7OQKz~$ls|D?351f^%h`YVqus{d>kc3@U zbX|vDhITM!Mv7vqHRPx|A;VjkTQDLggY|7vPWVM5Dvm0FyA)0B4oc;nLtH`=jS^3y z5N8<5I0#qA&e4DQF&KUuW@>KtQl(Ld?@#))x_aXvaU3sS$0Gm5>7K@(k-2{MEy=&; zzliE=o8GXVXH5Ay?LR?4=(!YFm+dxhjZrx?-!*{q_PlZ=Z>@+J*Uwt@42+AZcwE1&<;-@Ig6(bpvKO~ zk)wLNwIL27KAm4CqF}$V!~tsKtd19+PU+)>$}FqTo@{|Dt9+~1bBLTDB}1Qi1A$Cm zV)*j~Z<$0b{ZN_>z@;T169(*4emTc`eO>(eUDWJ<=rN*gUAmI)q9R#YgY}A?o`!av zh{KCGLkU-{kZtCj>6QdE#|`?GywlU0Ki)geWI`I9dJ6aSzKA7OdXN0D4vW0 zmx5?mLq+c7~q~CokNkGdt3tr%MSgtzLa4lOaU;^ zncMx!S&cB)&ec_~A*`IXfU@1iowHobe*xng;N>>ET4ZGa0H%vY@^wRj_R{8X z@9#Fr*)TLmexH>l^T}hJQF~r^Ii~o&n%XQRAR0uefrgHR)J)eRcg-?K4m;6sA^;^%m(C)mVDkh$KEQWI1VDF>o|u zHxT^EJC!9z1G!&ZBtC7!82}JEphNZ3EwyUcd(+B&nZxUK5tRBvxX2_l*1ao2LjRh| z(KXsmRC+}jKSzHKP2SPlEsN9TRYmWO6{|Z8&mwMKn|W%ucn>JnbR&}qY4xtfRoRFC z_;yuW%A~B%%Ib@`gkji2)vU5qBe5-!sD%%feRvHSVIf1|Z)p@GBQK-;$!g>I<6j9p zvn}Gy96mME)IM1l$`pHOdqv2A(Op>||MTn#)-aS3@3ghgYaP{ih&}Kr`)l9Bgt+Bq z_NV1Q%xf`5Q!>W2yTy;WZ)yhaP%a>BM*CVkt~y7j9w7khH~jO(2+S9{2!_f5jsHiL z4FKTO@>sY3Zq^#H!$6>KjiEA_CFVpG@x(nF%c(?1izhmHWs45CVWAF+L4uU>*|j84 zp{Uosbht22@DGj}p%H=0g}|fElUnYiJAZK*ps!E*Fbb{-uSes*Lb#_U2Oy zp-2(P$h1Gr&uOni4{;e+&va6`AD@mnYtOUR;4w5P<1lhG_&DIYj9*zyqNtY3wefaZJ?aEH9Re{I``4hk`WPxKTV ziC_g)cVzctGEvDzP&^gtf>=xe!Um}kbJ5T=S>ao^l$EYU|JZYtG;(W?V)}jL44qJ% z#uMf^W|9{C!~0#-R9c{##}rG$FcuC~bxDhK{I~T#De%J}7zBNoN&O`%wyn)_wRJRs z%lFJ_#h-ty4SkNnd)fG@J?x265u(|c z689eP#rUm#Qd+?Ff;C{;RO&e?r`OjZ4*iXtt)8N-0J{i-eHe3n3cF*(x}t znme|v2Xv~qal=7H!n%rB{APCntY5R1ohgXYvYU(gu8vH>rqg5#!F}xs5{8~V&o`S9 zgJ~e#5%`LC;Cpzn9+7D_$wCRui zHjb9+o#ira+R-4Q$TZC-_-%wm=u|Wu0at{w^dF zo*(`I$d1|r+M<=CYqy%=>UKp2SrTSif)cKzk-UPj*n6wIb|&E_BAcCr$_(!QSM&)z zatnLJ81ohC#7YO>Xye*jZCUt(A?)`9DUdyM;C=-qOB2)FSwrBhcp+e{c?+rjt8;S@Fb_mQDPRe@+9hqTjPgSRCm$HtM`Q zzb$#sEdCsFaArF^DvV~e0KEgcoN2Bp7jfyMI|%%?1<+CF3vED!wq#WIv#X=2_?wRGXnzga_e!HAc9|WJn!>CN!St0Q1>ma(A60I zLG=|#$E4MfODBSm(7$8RarY`^;UoL@?An{|0hjn4nYrEwaT0xLhf@`X=53cFz%8Ec z+$2o>lo=fQPMxMy$Gloku}6_a($SRdvAH2NxTL3+@^hRRhwg)Z#5yDSGVK2CgTRJ( z1Pr)mXmkb0{D`=X56gjKkr>3SFiuk_wsvs#p5u8TrTr{WZYYBaTE0INn2yLvGMu@X z?gru%TQ}2I+8O{2K+K@#t*}tlFR`3xbW;x1K>HG7{&Ol+vzrBwya9%`={hopz- z#<2_(g*LPybxlY>Yj{*JJ~Q5O|4T>}d0;%#G#>^kq3kiWsw4m!7Cs0b@=Gb+A&KfS zQ0I~A7J;e)ssgDyK@ZWnP_!Vw)E_~iyp<7OFu>;^?Bl!40-E^0sri!}*EK?7NMdt5 zYrC!vLr=KJH9&?NiZ!Em9;&PFR`ldr;vlk=Z7PsfuQt$dKWA z$uKA3nvL8SZ&3}>BIYxjXKN~HkYXYK975jj?&qe}>6PugN{CYxzDi( zqcMnnu~8miTYr@SOntu*>h18aMEvWMF{<-a7*0a(f8#PXfRH3hrU1g}e!||ODl(PK`-Qz~J|3W;3;A3OJA`iTO;YE;>R^PzhTd?#{X0P{= z)yOc06SlQT;VlBtA-u2v9U;n4@o&l7=^taiR)1kEr`;gh5TmXQA%1>>XCE0CmIyM9ps34$MMNbM8nCa=&^kH;{Y@htxP09W5|&u z@s}Bg;es7@8;+?sSt5~wo)8d}Pf>*dEXXf|v1ri`iPu%z-~~J)-|~ALGV$KEe4xDt zgYR3|V;Nko9zA?*YyiKJ$c2j*N@DKw7_*vxUNpiuRbemGD()Lgp^=C69)!u0`+ee# zI*`aj;V9GcewSUUyE~2d7OT+=BCy&dZhgY-G97=l*`ah&Tu|tY$Ob)c<1@ac1it&I{-qN^;TI@^Bnutj}0+mg{^l$HD(H-=^5x zPiKV%u1r<_hXk%-m5aza;Lw>T%rZEQsMp3_7Vf0BwENQdbg(tu0LuFKDY$VX4CglA z|3i(1gcdldf_Sz|ruEh#17cwD!p$}IS=X6u+Bn`QUPt2X3P|X(Mbe;&#I5L@^@cA+%-a_?7LdR#_j!0k_{3< z-)n2Ecw(geQWV%$3*H5@`jrn9RSD-jWY&2ylje>jhyOtnijbXX>O#4iCfLw}Z(C>t zL<_f7%2=pS3vq6ViyUv!`&hzUN<0N1E?Lm(aE6YM!{85)kpH~e-oNpVWn1px>$r#kqegD6Va`tK z)kOuIl9p^{YK$@Ap{{ikr6+;9KuwWlB2UN`EQn#9;CkyK2tL!R zu}ogOc0L-SOcr{nDM+pTK`gXy>T)ykYF%i4rdKTY@+|~<%HJR7*LpODhz<&+{d$tw zG$>plAcz~=NDxY&oCt!xYqwJ>^cVXDN4-+VX5&FZ~oQB5}9; zfAi~NX8HqGg_sV=B~*u1XC??r7TCj%%a-Z^vSy4A#+T^QCXGJi;n(N#;-lE;gkIuq znYRi-1AWBUr?T8L)C^h{TjUzQJ;_21%tUdug{91q^0++pF6Z57GCb2d8}qE9C%Va3 zY{5JhgVa*Dn8xJ^F=^UC4Ga0|o?U$vUk2m@enSu>)+2eznf2g#lcxVhIyr=WSyV&{ zIQ7w0xAG~U=}A&2@=U<2)C8Vu7x>iXG>QL>Z2vVf)ilIN_J3KHz`O2pEg0f~IJfXI zdyIE$&#OQ#ctrziN8n8h3z)3x@smMBg$IVu!P18_WlNZoLWfo;rA5d$pc3rIVm;B=*YFqE%>@vjvBn@*pSA)42 zm7&(O|9>#R(#S9d49+A?kGAL~&aauN+%0{o&z<2&`__T&+*}om&zP95ZVWjkDe_p4 z@0pEXer%Ygh;>Qo2F!z{BbAgqhbu$j0~5EW!s`C5eShZLuS9~56+v-&bK}Qu{j1A< zjcdO|mhLz3J~^0BdA0}og-5v?$8%IvQu6CecnyJqr6+9?

^TurlEGSBP%a2U}UD zi8RWuL*Im1?=eRAaJeCU>_O>66dmA*9Ktwy0dZ@Uu_&HBWzn;HN->v%{bb9#c?1$= zV|5Wjl&3OBmz@o+St#vw%OReoo&s0l;B?hN*KLyLsi=wpzp=6kv`w^XkT%tQW-yQ? ziF5K*iIM$C&Wr3d9s#hcn;#A-P1m2alP!xG_2}FKL}o|lylwkfZ;eIAjXm?uu7t}R zx0(DF<=dLQ)kgoh_-ga>mf7j}g4_xXx{U;=oj!m14oJ*83#m-tE94^3M^`P?M$`4J zL$L4qrYGWMETbFU+B~%PbB=mAX&eulW4{I1wR<+ykfHfw**@W8#@yiZN;B%PTEAU- z*=Li_o!Bj{KQZRdk(#yl2c&oM+C4HILcv%k0cGEQ3+9D1IeGFUUB=iy!``^So@5?W zDQ{qF-wxo4nkC)joE70hv}ot%16mOeFp^00Wdo20K>JM#-Da6&$Rg(6W0T~dJTq&t zgTFi6hJv}DC&1vKa8n7+`wj+*E$ircc*Sdhd@fKSYOUfOcuLd9s~FE9*U@3@5o;4) z`Wu&+lHy^z@x9u)tgm(!+kXH{syVl9`*nfRYzUgsI-s4)*HPv#?x9QJvhPQ5iLDF$nkKzAsgQfVg75$b5z%lNPuA@W8_a7-Ommq?6PNz1L#7Uo=1Y^v zE|r%=ak~T)Byg*Y=v#i85>xj5uL9c1ZzRc5NE_WX8EAsFWj;76^h{~)36at{~~0_mBtgCAQrwL_ku`S)|L2R3{SPOcC!N-=bb^R4I0vc?LWCoN12r!7S!SiS?~_ zWdnKsa~&`mhYL_HL;Zrc|HEj8S~+GtFMrNa82QIaaci>~yBZ!ac19Yj6bU|g=ba?N zV8TLT_G+^y&Z8yxBN6O=K^O~rpuVc4`0z|kwN`q`pHtPuJqW*1qzV6kr*=~hc_U-L zM%y_A1x08eA_S-cmD1gS%_f5+j8&9m1Zvda@FWB?xM8&o=$Evr zwSylsiztk<;*<)!IrjBy*l60A$Vd6;xmiGKe}vuwjXR|0Y^JTDJ`*@lw2%aRt|YtD z6H7p(n^$uR9-<5Hv{dq*R=fHQR;EibPrSEH=e5V2%BpHPjD!tvUSm716ZKMvUPj*Q z;NXGJu5@X_Tj)~8#UPZBG6M_aYqO7z-xhZ>*a2r2vjbQMzzhpqh{@Ko$6`?yksUcI zHlDa3k&;)1q(pn)Kb31is1e}}N5R0ng)UV$$LfK=)z9WIw{TD|Gn3q-jVS|mfub}P zJ~H3ozT`h4*9N;23LUzew&K73qyiz{n35Ute->~I6kZs^CP#lhLeE_eV+r}K8lsz7 z@JA+WKt~-EnnYLV9ceJ$&d_|LI;{Ho^*+Y6<49e7NWuGMqUipLzauA-1)no z0G{!79@asZSq52SB%8`N#uHv|f9SvtZ*&yAAJktJ(4C3J-S~mIa^6SH6Y47N;K@6`pzG!ea9lPIfuV|~JQ8%jlrJvYqhg;pZHL{1IUVpF zx6jcT@M{*hMZY#;rN!FgFby#5k&!9SbT;zc(ga6XQSOw}g@-sXGYA6KXa+FQN}m_6 zxi|^g^`EB+*mXLn1p!>*RY(l@4<|FE?V+%RS4eokiD2f^`vu`vMvp!Mrl(C#JrHGC z!0EXX44yXeF?6|Z}p971~E(`xtIH<)?KcJ>JqEAR_}l@%mLmeJ*WA)_+j6ob&yLGSQ9iE_q0 zLUZyCUWI<08v&X%+bE$KVvi~RI;u)H>J;{o;+B7-S)w@NB&?o`ozc{(iK)Qu1e(Fd zS5Wxm&V^b5j7aOdq0RK`DE7e}QEsbE3GG|N)u#kb6kcE8Yh%{N?g;lop_)J4QTL2; zZU@1!&VdFUb@E7Rwq5VS2-yiypJ1qQ9`t)qOIUXJ-13<+EmPA^f!%+czRk_+`RLOF z2?8fzZNI3YQsRpje$2=8G8rx|qe@QLqSza~mv8)` zF<&qv=5#hh!ByrrV-Gcpnv4vQnqAk%omK>Qgbp=rwhW00z!OCjQTRs6!($ zBE`qlGvV9R1FnQj7z0)LVzqdy)f-VnsIw3c^Eb z5naOWPk`gADw;;lU4y04_QSMcPlhPR6QFP9gRJ7bl2a2$p?atX4-Zu$z_GLrZ>W-p zgiCw@UXbP5ttl|J6gUw|%g8~F;Fn0uB+BWNJbOxn)wGu`VonFzn2lIN)IHi8u8j*L z;wj@P=KhM05TQ995E8MLq==0qed3A1eL3(#Wkh$j8V@GujRwJ>)1LUuqe1W7PY`9X zadqXT_K_TZ{jU-$E+$RKlcVhA;yO10S5c z>10XQqmb5=*p!5gM}0( zyM&Y>VqA1Z>l7#Ss+mhA#PNV>0`NHHF`)tX70SHCxF@8XQl;Kpg|;J^dl#+y2a9nS zR552Y(QM>_+~W(XbuspJt49pV_|lKGnoK8-ilspk06mg79Ck_z1@bf*2mBL_^_MED z`mLC)lXBrDEkvST;J2J>w2O+gj3@fiZGsFny zw^}h+p4oB3PpPy#_#f|UkH~2J?bpntBx*l4pbZ@b6a-TF1w{h#zAZgJ`mj^tP zVV||AiDEpxIjh)tVn#D4Z=B)Wz&d}4!A8kkEp#21RjLnFF5bFKrW&*JQRpexQnf#a z($_Zn4(RPVTfq?niu;_OUO)3up8xJRI=)OEAD7&4*M;<*Zk|VlfI$mM>0MlQ=2taj zs&;&lhl$(fhVHw9Zn{G|vBwJgs!*U20*lB11h#+ie-)7ZkU|c)#egS=iA`sA(*?Q%g#~nXK6X5KTPyx!|X-rJy^qIB` zNE2d`2sH}ABopdX-7q)0Gqc1LX_(4k*fy4ym|9j-&#Vh}k-((A@9ke!eWP*n`1|bu z>wnmZCO}xQBd$MslZUsvHKsTdYxmKUhZa*rUVRt|KmY?GPEvs*vO{2#_gfui@aGfD zd#y<*%NXB2uzqiLJy8gC96b!FuhXTQ`DyXT7WBc9`k~L7&kua@0@=kDt!)VNkM(KK ze*Nk+p{}$iiLtx5W>?v~5ID7$Hr=0%NWYh1yy+dbkAKi=&6Jb3_)f5^>|^lRc-4_j z8zV1@evqqNoBBsU-Gm9k0-hFL*~b=~AtuppVW3hIuN?~{fMxr#?)`iZD^~=kD!J>e z3UW!K@FM-W3yX^VLWV|#ovGQeEoRksj6gPy2l+3B?4M<-3HGa>&rLz))}m#7e$j(^ zn%+Hl7@U-kV{WDAs8f#G4qJf_g6W$!r3)j|6+mxP(Ik7y$S0S>7h{7!&T0>OGxfj& zM=R&2@iMIaNcRIxPBlP5bWiEC1FYN@j6~EATb>5#Cn8NH#IPO$W%SRU(5YrA;AMKcro7m|lL1KaqsFi|(Ow zksxO#$$=_oz@!_hPt+--ax#<-8Q#aD{|W!%goBE$pFV`5^U-FYi_F;3Jg0vyPEctH zR%vQL!}@DCu~d{TkgTRe9xmA@!N=NCGxVJL0+}G@teQU$H+tdAu|xZ^ic?QE&lQ9O zwZ7l#y85jL(Pf@$E(?9oWX3>v1Y$`$wkq=H>8wkqdv;pDLKw=3G!U@7^-4e(FW;}4 z+lYLx7zpN&#t-5RK-~zX^1S%g?*gYwD{ z*}kyw;;wvSnrx@vOkuU9jV7L_%vw39K9Ol+Sy=~krOf2XG#N72Xj>`b*piq90K^Mu zE~6UdiGAHT31kvZV(7f?99oXO4O{s?d@qgrr38P1zQU3TiwNSit|Sx(bCk^PumSF- z?D-q2eylcR((~$wW~;I5!<;NRNv$#5QX&T5z$ZyIwE!f35B-?WAS8UGqfL_gn}m$M z!r{d}1G`W`acQKT%sK!7@@t4e2H-#vhz(y=8zhYYB8%fJz{+pFhU~7h+b@<@FnX$S z)ZhqnradFz=rCXtbezYciO&(#6n>u9n)!?nZ<^p%C+_ponGE%!eblWzmSNQdA%lB(&M{t!$1X0H5X;A4b_L-5oFTY-dlCm zPvp-qzUdd7)iSd`J>vvV&cZ0l(WNNbDzRwqH5PZHNY47+*wWjMPGVz|ixpCs-dM#9 zAoDLhMCKaq^pq=3ecGc0MNgOk>4{)@e3gkf^eE+>#UY55v2?t+VNr7Zxn2Lrzhrz~ zX!D+k#;Vx#8R$;RJ3)NY36x~uXD1c0d^XZhza0!+F&aG)im0zvpHSER*CEkt)UX1b z+%Ov2nE^ImId{uVB{>GpsNdR~ZD*U9{ejk4zVVA4ipZpIluXjPWbCXwPXs7Ya3J3~ zc1o$^27ec6{KyC0BGLePc{uD&Ixm-IIi3I+Rz&Cy!OVMqJr!a$t{j1w3uXng@cjqI zCHndjB8FsA*c5QDH4=Za11T}lEhp>6|R@32R zkC$p04uOQ`3Z*zVQ_`m2fzp~w;G1uB-$h1X9pkE!9CL?&#fxSF1C;e;WES0$?UOwY`JS#5(9?FB1 zht@{{$7=47;aC4v8Gq6?_v{@5f6#Kn1kY=HxkUSF$E;Mkg*GN(<@$lOVF;cU2Rdot z<}Yf}L=!@|?w^Vq>4iXa!k=)uHw1IkSofhEeBFIFu`&u&E^wr58O}?1 zqbgO;_tJ|~=C6<1Anv(UsCbQf()xm0&}^4N)%=qRlhQpo(*0n85Gi(N?AM=o^;u&C zAagAkGu^m?Bzf*dqLb)J53e!%pMiHrwk2j8%cJgDzdT9N{$0DbMq#3{-9jJtU|gEK zzzT1Cj`sr^F#lj${QL*D5gr(@xlF_ViWl+7|0+EWBt1-FfH^0R^B~yd;I&M*DBT#L z_API1H6F=(t{XvYXHrnQUglfB64?EfhB6=Io8@Ow;)EHqfF`rDC=qZ?kqzbj9XyPr z_m+?+J@K1gbNa*C#cvhD2c2ry z3h*D+=kD>ZR*34Gf>#mSOsM=`_MII!^)!Utt>-TFx4NS;ctTJljIks!@pBikH9rsWf*GiP=4!0e!KnnzYqkdL z$3RBs>2cBa_J#}hGeO=HHW5=`RvAC-nEw$wdHd8<$B=i&pO@d)q`vs07@>uS`J_pE z36p5q6NJIW=%%)MQGa&@|D}NW{2y_uU?QeQkC|ca8HG&bo$O4O;2w?UV}|Bqdl|90 zO6Q~qrdsp*^i-cfxKb%p)@5T*r>zDSfuvzvJw6=w=pF00{{Z5BJaAh6Q|77xnwiQQ z?;z>Z9$HCVGPA`A({m=_E^wGXMC#TRs2h?RZ(JSmbaagPeof1pxY(3&nC=p_*%I{m z+l6LA>f}q#R#o>b(O?X9mxa+HRISlQq%HQ?iXNJMXl4J41D+T5{e*y>2&zM=%8pqdVm1;)ZvIaERePQAZ&+-t6mWA`* z3r*MT9xND8tC87jWurJ?P}4sM`d?QNwPMD885dafAqA)~7QRsq<`mArNdLmx(P_|O z!SPV_D1THWFXJ&^{PLNiL7*+v`hxx}hUd$TIhTZ>x zkN%G^8!&t$Vmg#Nsyw=f>i)Z`6QjN$`(ZMvZ@j{;sg|CJ~I>SW8+RQq;J6C5Ax8COuaoUE8i?@#l1Re0rXenNFe>_B57xU^CfIo)= z?pfS|fLk~_FAw$+9FrA9rTj7tErjhfW_c+ z8E0czpB)O95%Od|>bwc9HKMLw^k_Zexchn_i2Z*Xp=Rcl!F3pBRCr1`a&IDXFc(Rx zP4fZhWP;vYtpv1g8V8)&6zI_<0xO7k)-qt%GoCr^a^@{Xwn3D+OJ0|X( zi(4Ub@dp82JabHNu4V~ZXNXbPnjD{N)-&NV71pJf!T`SDo7WT}_D zGO}rWa(jK6W7Wgxi9-D?lj#ct&ujeKMLV<0Z^Ug(1bFQI-6fJ#OlT`Sytdy@O`sah zDul?EJsRjL)t#s3Pq1puwO);S?H^eY)!`CO@t%r|B>XQRWBjwf_ibXlC~fIo^^sCZGTxx`EK0QeUAs6ok{NbcXythlOJ5lJCe(HZJ+`$z1Kwj$YbT;N) zhcU{Z2}s?dQ&}>$gY`hWR5U%4ujqpr$qbF?i`=3Lodh|(djWRPS<6!m`X-zW57 z&tm?ie@%**_&#}h>~l>fr{LWoNi_*1{){T_H?S+*ovVeoMTr=FR~eKkfxPWS#4zcz~IJ zsdAUcE?Y63{O6yVoFhXT!Z5@}xTGvw%|0<;Kdg%-R026ngN_+@d!%K!DLw2;9P6I z)-NEpw~v3qGKJ$!WH~8n*0^v1@7z=EZYUOvzn0z*5QW>DI~SE$)JHk2(JNzV3Pd27 z2v`B1rp0uo)Fd~%k+&~Sy_688D;a$j;B~?M{BsdB68$@fau21S@*55e!Nl@c5n)$R zDwO4ICfTG>BkYq~YqDEE4}K?-=Nb;Qto|V5myvoV3Z0t1aIOQeSS9@(rRm)pbIb)pnwML+yE32&I7Ypt@2?X7& z_{L8EY_`Kx-hd>RA>`Z_qZleXhA#Nrwa+KSNzgLVBMf=J(-qugPZ8pe%!PH2c?mvN z!CAHYw}Ax!XJ>{s|3_D`kq07v1kpK5YC_s@mlm0MGkS&JEaw}hJoo?fOomrPHUN{- zIFevtuJ?teAll*9vQKT<*aM0LoE%{s51SOKpljSB01ZU)ij)ro%-EO7mSD?~UR2tfA-;S~i#8$7%ntZ^tr z9+k3ScX2W2u!HqIoHELZicia<`q_bz5>|B^3O*T)8zoZ%Lz*+5b9Q`$@Fb0Q6hUS_ zeFnYZmUADQB;lN_MWE@2(|keCb>H zc=d&b$l=1)s1$7J48QNch9fwVqG2_Fd*ufzCih_RUJ*~sc5v)uirBItTwBu%2q-`pu*<_^^91JfSX{ zx1ZwBS2;bWyoHp?ZgRl#Ywxa8H;o%%N^waoY+k1W9EOe7Z#{=9eHC6{-KlvW^fkns zd{`NYxXtQ>2o))GQ2hB-Au#)lLAah(wU>*Zb*be0s^2r*z4@9l@`Y^}_Yv^&_rb}& zk5){ao4naBii=vUzpJ~R52&vhAG~#hm1*Fj%idTl69$$!8O zbWWH0si$hnTBG%`hvKwUgVm*r@=aJ#P0~}IFf4XLNGr~*m*`_)Pnrl8XylIo5j;O7 zh@R;l9de53)puY#2P^JTxL;4RdUA&w;YGinrY0C79~n?mu=C954-n(}`Kolj4XfMf zu|g2goy$(HTp_Nbr&ypjCZb@^%~^kSqGQ-3>r0a2uzKqru$w>%GR}xzNhZO}0siAU zaAFKfmFEC!m+DIXpF;ohIgKAw9a7jUdUh8+mJ0}hZy)<91vvdW=-~+!V?`eekP)

n*4Mm1 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

t!~b^!$P?){M#_HNS7h3jPT#{{ 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 V6fbL#&dj`=tXMB#u!rT+P}qVsR9sD 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 z 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 D5bvOF literal 0 HcmV?d00001 diff --git a/MikroMaster/20260511/20260511042002-Config.rsc b/MikroMaster/20260511/20260511042002-Config.rsc new file mode 100644 index 0000000..9181ee0 --- /dev/null +++ b/MikroMaster/20260511/20260511042002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-11 04:20:02 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +# same mac-address as wlan1 +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# same mac-address as ether1 - Unet +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# same mac-address as ether1 - Unet +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=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.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.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=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260511/20260511042002-Diff-Config.rsc b/MikroMaster/history/20260511/20260511042002-Diff-Config.rsc new file mode 100644 index 0000000..9f0dbaf --- /dev/null +++ b/MikroMaster/history/20260511/20260511042002-Diff-Config.rsc @@ -0,0 +1,8 @@ +4306d4305 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4307a4307 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +4311d4310 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +4312a4312 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0