From 1af3cdaeeaa06a139a630708bdc2162b8adfd32c Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 06:00:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 06:00:18. --- .../20260512/20260512060002-Binary.backup | Bin 0 -> 302647 bytes .../20260512/20260512060002-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512060002-Diff-Config.rsc | 4 + 3 files changed, 4657 insertions(+) create mode 100644 MikroMaster/20260512/20260512060002-Binary.backup create mode 100644 MikroMaster/20260512/20260512060002-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512060002-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512060002-Binary.backup b/MikroMaster/20260512/20260512060002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..c93f84237516fcf8a606e2e3607eaeff3911d599 GIT binary patch literal 302647 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

+9v}mWq9h|}pDk&zLD-EWrKSPewYT+{jr2qc zj>;o3cYaqN*Gs*I0${P-g<$_-8V}hgfYe<^!hA3JZ5?mtVYA*+>f@X5An8IUraa@CNSCxW9xrkDaSvf0WLKATEl4Q z_BsaIMSDp${ zyL1-me@KRm(7eix6N2c%6gD3Rmtl@cs$k128iL!zB|`i1^e>U&#wlCg3tP;ck6pC= zZ^cXV!*bFgc(Y^i0I&|ty4pA$YfK4 zb><#Qip}b97lcy;$}?_a)U`);Ew)o2+`3kkBch4m5V77(!BppTfnx#D0)ueW?bPj? z#(GxcvX{P#$Xx0S-)tr_9MLN(&N`JKSd6ox8-ic3Ln48QbYwf=JJtO2cUD={6?F4V z`|ZCIiCtpDXiCJ`YtXT<8dY-`fNCkXLFmpwB^26PrpR&yg=E6`XjljYZNNuXC+Y+{ zD({%GY&vD(^CJ$j#jE;J(_fJ;zhTPVYlQi0o5Scd6~8msw|Daa3qnJlf|Y)^mNo(VY008Jp`gsA z9xYV<>d^u=2{#{8LzPQC5tL^035kn<>@O=SQ{1nn!fPb?-jlb0_?~eDQLpPPTO{Qi zC=AJ?=KYNp z-Z-mE-`^xCT`BBL=&j&Oa~I`{Jae+;`36s;zKknN>tW&$=RVa2>=q9Wx0T5umxnT?&|@-CewlI85IxiR6Js8G zI&3qkb-)X+0D;ahMhQnADgMWiZI5|gGy4TLbGe8o4ob`K;^=uiUsSs%h-l}65n!0n zWknpJnE89wyaOkOvvkVX&7&662k!F=G}Gw7G|9fqXG1lEfis=#qrCH7J;2i4`V`wS zcRAJ!jaHAdef041h%&ST0|L`F7}Rb0dz15D&R);0N3k*Yx~8Kj5jO1*}TFh8M@WVfV+#* zclpkDlL?4e%@Hv?Dr7~|y%PM=-b6fXvz9Rl8U?!Gm9;DJ3L|R*huOtPiSH8ciZ!QhVsedG1H2s6Mifo-Y|>r@Ql-BA;Gc?Nc=P3zv}M;K6$;BMmHfUC4#tL1 zLTS|GSDHu=%W#*Go~-9BXNTtJPjiSmXgQ^!`)g(81~X-oP{Fgt4XEBz5OUq*P!gzE z8=w`y+0FSkdV|%R`+60IdJN#SlJ~?@tn;LmB zZER%*>1+f-T4yHa~W!_Je*|0I%zX}+aZGW1w7<9a7G)I`e=Run5Dg?4=U8Nyj!wp*6GU~zH8q_XiWchV z@-TeNllc`MQ7~Q#WTBooQ$X>0*IKPRZ_|I8v`M~558&Fwgwc?`aQ>w8B4Q+Uo`1M+ zS2TZ{EKjX|qv|$G6Qq2u#-8@tr-=w4LdTH-Dd+jm67od_lZu_%VIm>u*G;>T7rEA7 zk@&p7MnGZ;XS=0qUny6|{$};7*zicAoS)v8^yR@v@(s6tIvE%Vfj3lpam}_+le}LD z;At$+b}LqXg!GoL*`OKE3$vxZOYT9Q+4@m_S+-lv@naL3Gi}wO7kFDl5U}R6kGNS! zvICK?eTX>ArmaPF1nKSOQk2o}MSDdOeo9IXeZ%nL&$G33F8R=z$Sd@7v+P`@t|rkJ z8kLm|AE!&{c;F^%3L_8o)5|L2vbdd*Zct>ri=KC2vdxG8g3M$c2r`= zpe)p;V!q|qarZ5HLJhG$V=YCQ!)N`@dAYk;mC*_%vO!O#vO;G=zW15YaKTVqnPLlV zbRgAP@0QIdLt=ZPIeThJJ>UTUKLEg1%F?tYfGngI0!^G|K5L3TD7_X>gvdeKom9?d zcRJBBpO$+Ul(fZgwmh@8v8q;@<_esFxUoh|>hM=_4*(GwsO~PJCt9V!87l zS+m{G=^|TCD3;y_QJyT#4W&mnoC>lbexZLsL}3G4pz@@$-b!?StVgC*1q+RVZl>b6AR5dU z=*%_l4&6ZX#c7sfckH!SI+nA*Uo`#1#RWspi1oh=9wzG;ew-L5;N}2Gr`$V@8pY55((4PkjoV7hMY*wxp=$?VXVPUZ z{hdTx6qO+=zu<|`iczfk4G9Kk>JdT?lwqpG7G{B?52vsoj|T467)^U3YB6}CT_xlQ zBlI$wrxhRpG^(HyYHfL#jIWuvX@;bgPXFNBpVQ`HOj>F4%$V|w@r{0!nOsL0q&Wfp~sOEm3$|YU}3pL z`iZWHUHLaQ%}QlBQP4+n_#<#Q6Rr@8#B6*UMB}+H39i%dtBKAfiIjZcmeDTr);5L| zc;el!+L=br%J7f~AFk(JkMYj0J5A;Y+6?O;CR|LcKr5VO&6r-Oz_Tso2^{Jizu}8; zHx^6*W#YCFqFc#ukQG2Mae-isd)19i$FAjDr7&<2IkUq zf#A9axJE8ly_hr1ZUKSv7jkTEze-skXI7~>AH_-GVe{y8* zv7&Fli=-l-Xu5sCNm;GeM^$L+iG;c+I%qL?46RJ3W>P2`pi({GRKUqnf8hRzyQ8z{ z*wX3sPd4A%dATc7~ z#py33m;U^h&Qq@hJEW0vlyL18^?Bm|E`X;2gzZNz12EiL>1!IAIHL%_rOk#aThb#1 za05fWvrLqy4f7YvxrRMB9>3+VLW>n$o6{l;v@-mFOW>J<=lbz+w;|2+v@CFh;yiN>#<2J2{V-YH9Z&w%H@p1kZy_E_b$9Mp zDZ}1QVO9U*{5BI2p7WOCpPDAU{we-D7{18Ht-VhyZ4BeS*aucM?r>PS{tn(UB22F8 zTAqQO;2LU?z9^WvbHZwVhY#1w6{ma%N_~=d>wp2NE8-cq!R2D@$+$@Y)79>Q_<)|Y z`$4{N2W^yKdb_+>tY$beCF6>N1q2=##c-}O{l#zZBqONy*cqtMaTA?7 z{0Xo=b6!|z=PWR*tB^wmwHy4BIM+kMq+vAFYK!IPbgdgB)AxjOu6E@XmBS5c=8uPq!12RJl;&y`mr$X5wIhyx4Qo|WI)vt6_~fk={^I?g z37c+0XH!B+m^#1;xOYyha1Ec`z#P;fyYLr(xeI)T{#)cBXpPZ$j;r97Ay-%b83Ob{ zW}Lgr&A*1yZT6KG6#CaJsGQd&Lf_4B72q^`N>^UhCT&>8|#<+`yt@Uw&GYvguKCTY3^D;o`H28A8V=_Nm{av!HUEO<%Iq zD3U!1<9#i`U%{K-yjbk=`|&JLiF$@35MsO){=by z>2m60l!7a-j@$4HgJW7PF7;>Z)W^{nhMX#I#LRgY+hyf;?my@|hFoRFOqZ)Wlo?c7 zNF^CLUUHkoiyIJnw-c^Mf+vA{Qns`mtVTOxaQ64Clb{Uy4<)ISovATPp<8vWk3p@e z8rQ0dnvM{3OK`Y4!#k9&`C9%u!{SNsY7V8-(Lv~O{!#{>KKbE1yol$K40gtZL2ZiA z7msFPBa_*4kwGWPm7q3>oy^fS1j}sfy<=(nOQSZDI2q$sf8wldH=j%kTLw_BY?YH5dzE)VjbS0>r(2k%gV)Ds%wG5Y}pL&i!sjd>8W=021b|wn_OWvL}({)xCX$e{`dFh~FD6+ntaU*`Wpw z8}8R?R890=U)$K`jrx)5WJMtHk+Q004qk15u~`A{A!2=5bOFJ{4g+cBG4b;zd3l6)g$L)_>SZ6k!&W1fT0_NkwS?Rg)x&4v% z7SGVA{A8c&m%khVYe0i6SF&p~6puP5#bFUF*i}sJur0lA_f2fBIzU5xpHNBZ=QI*; zOOh145{MlUB*ZYEPbp9d|8Z+x;Cbw$&L$&#fmMJ%*zg|zB$5A#gZ5SqeJu8&=tqueaBx9nbt6M;eoL zN$T@Pkgb@y%dh}Y_`YP_L`wpgVLMH&MQV4(izwwvuMXtlv}^lt-=U@a331z|;{Cz- zd@V=Z|HXY^fxS*vrqLi1nKc|`?GK=uUw159fJKTxo$frJ8~aEZS^v&PtaHx+VEZ7) zhi(gMR5OI$T0d z2Lm20sq!xp(rcA%3PE|mC?8G!4Snb)Nh)ygdPlzNo0@TALG7R@z_TL9SOc(|B{zjq zf`9&(RSj#_b08lD4Y^k-TJxEx!N=%Za6XRsh%ftd3_jLJP9@U)Sm*}ajV%M3JowHc zCc9j3J`dpZO~4MVn9)j2cr2lSf{W$Y4m3`fU?w?Q^Ao0>4?7umP`@L_vO( zydgH)QGVi*#n`MMcFnl>@s;hNQ&6v=Y3uM2i`w5?(er_?Q~L1J z{)va8+LWVN`U57}a^o&+)6@c`!VaaA5)ERdL%R41W@JbNj%s1qT(E2Zc6Nl7?Jz zq*4Z>Lwey0R2-UHr=b^1tfpBh+VsS~eST~TEUX-xP7;S64I&vY8izxTXtP5|XtyTl zt%vOT;+1_eK>4KcyPvb!jMb%iH4$dL6t%=|(HBr3l$r=CYC8q+Y67MzY<%UAOIfbKTnV>HI{~U9y_nDd3fTdkTw6ukXT+8jbuh;a z#{3D{<_7N_N`n%R48tb7v4jSQ(DD$jDC0J6+19#Has^t<^;zEOEJDK6pyKVna`@EV zCs%HyKTAd6lQWorkWv&UNX~rh%6VwSuk5nYY63PBIaV8xLEQr3X9Y6UpSI&lqeW?1 zgD`Q@yJ==lS0Odx5xEf>e}((O0NzlpA0U@>>iKofsZ5V3ft$z265d7Xcet%(f_KHk zcWFHpuKf^YYLRkf)$Ym7*RoG6LH$en9}x2GGV#jppih}BSpUErawT4WX{qFoH&}N3 zYWJpMMI+N2DM@>X5Y!qn@wgeEl)nwS!(t^S2K2}eG7v~$?JW-AC9!6tj{hgpD{i>n zxZVL?Aa-46%HOvKv$RR7XSyYIuKyigMH{8=C!tDGCIv>>AkbJ#$NVi*fioZi(!>3$ zKxr*xvsuf`kkhjsi{*6D!2OnN4h+aLBRpoQFLC>nn@Szy)7=*w@jI8b_~DO_4pD+S z2tsX~#ta`OeZ~PV9LBV8lK*q54QL5Oe!qKR9O*NzTcE9x7lAAwQa`}o!EE{b(zWa` zJ8%?Eqty?f)8$w=a8YVGFw>RE)~SrJV|F-A9Nh$Y1;MD5DYJHE(aZ{IqQ;6qVc3a0_Co8*A8Myns}`hDSE=oG6*Sr3`{m; zEgY+alTTeR`>OV^aO6G_+w+@ToKwFp=#?0pU|dvY=+RGXPjWS6ptXQ!;MXDwLaU8) z7blGKQLm#`CIU$@vM&~FD~Vb+aXF4vqmqU|LgCRZrA}fDs~L-P;?>9xx2{?MbC zN+?^{Ciy>%qax{?Y&JdgMoZyxWEV#xKo)C9R8H-_XOl(RMG6i$*5QI$0b%~-aPIlV z=7zBEV#~)n0$6o0VNCJ$i}5fvP`>`>S*X6yP$X@R9o#e&SkUO;;tYgSG3hYClx5jU=(yHx!)Mo+!(yEk$g~ndX&EVn2x9_G z)+io=)$afb;anapyKRf5Mz4uEiO_8Iqzui5zKuh%q!Qd`gWacTNc!YgvXYHSj8amQ zQA58mnHrXFGY%wg6U*m|NyL&u75AjLsYgR?q+|+MEnT3=r6Ukb2;vODGnxFzxT?R_ zM#*dSPi1A5iN>`9vjQJ12h0;DdJDiEBmbhECf>QNy6vcK4!|7GudNEm#`nJz zho?m^g$|L%F#2O0MKi=oey>VM^oj@*NmE#nxkboiY;0B}%A+eZ43A3!)laoJB9R;!;HIXFWA(FRk;W1ky=L8qlf z?Y@%bQFuIjODzL&96Z8a4^b!$hH+NTGW+e~b{;(HT=@ZGfD#}=@k!n?@+}g3RVKo{ z?2C#m(spGKu@c5ary{yhkkTu7)R-~mutg~XIHo^?CIUf)Y@_-1PYO+0?@I>mDer~D ztri__qLCCE6wi{Ila&*OZ#xA{Fi;QQKnDO6eb;t8K{{e6d!+A8jDpG$Kvk}aL`tbw znF&Wex8dR2f6+#Qcf2B+B{T$N8@h!Pm}1Ag^n=$YgvZ>3 zgdi1lbj0;;4wU8^DT4q78?iQU%YSc$)%&Me>!|mOn0Y*7@QS@BbY8B(9cQYAVm4DGMvBQc1NBjWGX@V+kfyX`L*;#C*;W2?qqo9S^PJh>1IKMZ)kC#JzCH^ z;@#b*=)>IO!^ZB9X}}D{=|>FTBROBOY-B;zMqK1*$rr$Iu33^-qT6B1&6zxip4`e0 zABdOykn_D|(AkW_R*)$|)z#|3%)jm}@q2=F(L8tvce}fK_LCKwk;$uG1&IDQ%IKl# z!7ZqWQEb_{VB3VFM#9e6DOis4MQ-m}ft1b9=n*ds+b$Lj5JA7>mQl!poEAnoiPSw^ zUISCt<(3MONs&3A<-)iP4z*?WkMmA^d^8~LK+Q+$9?k`rBvRGst!5YCV6muScun)U ztrzWOp)az<>cLh|qTfhjeBkn>nz504^z+IdjLIwbyyBnBN_IJ>-%lFgfH5pc<0Rl7 zJe07Yd{YkHBjFea*q0cWU9)KDIS1cqGNgk&HL~_mozO^PIUXaB$3Cv+x05@-Y-I{8 z$_R8N^sEs>k#l_&kq zPkHhxSJGEp9q1|cYAvqoSG>u&aLPZdyZY}-K^N4?#vdy#Vw0>jilD__wKYDqdKVj!B&I7xO~ANb0R{F*bTLomo(OCCArbvH&bKGL7Tz8CB58WxC;#}EBlw`4WH>C*#)U6?TcQ6%0;^)hE_^q#8 zX2wLMZ`7TDO$81y#|9y*_qGbV$_dwU?`9%G#UVFfEF{kN#kiSx#bSXpeS}_|tJ9_)X zhxq~Y&nZ1WiY&?ZB?gfEP+LfMLr?IrOO;bvot0?gD|_(|lm>J}PBQ7IjN*B*^>-b{ z)kBco{~_FZt(NWYzdXEd_RDIu(y}A~;MnB0MG8Eht@qSb;5^CnCU~*eTC$ z^QEo>DlPnwK{WEw2(h@r?re`Y-vp=c?ZH!}a$z^-8$-Fr|4Kf>zj?Oi!PMuvslfna_ocj6F76cmphE{99 ztg@Kes}rdTbYs0zv!UL^>O#s-L8QaD8&0a4R&~zF06U1PBD|XuW?=g7tB|8>uP908 zly#VA=lLt(VhW!{!nfvwl}-tjOPhczo=bQmcz7nCM@=t%4eLT0n@RU<|Coc9ry@rB zgN+V8(W*T@{9-MeYDQjaF+R?$NPE*6x>C%K-@>ckli2E7j#x5MYK$Z4a}s`0sg#nA zeZLJ{2Q=RG54nmXksK6LxQTtugBr2q7c?B%h5Klxw9Mhw>5t!m**w)u-Rzr!1j3vFixuyfw0+xg6ls# zBoQhl0>k{|E!feT_e6io92CSM4na!Y#umfwv9KAGlUgsN$vG_^>X3M%BQpKHjhg=v z*@47(vfrwZvrHB~P*4A|JhmgS7@!Z_8VG;=^G1zXU^MAk%bw^)Be~eT&FIj{cO{9U z6Ra4?n3w{M22&n_PXY!?wTn0&JQT+PzA76oEsh1mC){K=yXSnLp+Dligbt$f&5Wnx z{5P3}Gz73B(%Cc8sNv#g02m0oj)aBzj;#edlLG)*=l=pw@F86KnwzzaZ4dxLSmtl7 z=J9=}#>^`^?3f^Rv*E*@`Wpx=EaT-nj*Ug8M6$xO!2dI>r?(p;*GM2gj|VOn{1{*j zh4QG7M?9mwbrS2Wpa`IoT}H+gvqsVbY#+@EgIcLQ5#a#4&}))266@DmeND0iPH)bi zB6%dMYT&xjyW2%+A>*}aj$0i@!&T*juoa1t5Bc4znm1y7Z5Y)zgbzRCJ-%JqO_Dnj zz@(h+8(Cmn)y1~+?Zb6e8NRfl2An; za|qjA5CMQ_ydZa@<|C6v8a(YK>l2M11NnzESpZQiHe$)7f!LH4>Y5J~cem!Za>p7o zJY@CQkv@gM2PTWA?Vs@q&@6*z$jkejJgVIR)-t6loeJf1JKv8+M2%XgLnN-aQkMhU z=eVu6y=STIe( z<7U9xU|R0cDklnRaX0<)y_`=&_vCbXwsD$720J5vy)u{S%+HwHwPoPPC`eKifZps7 z)LiYtixLcfr}Vv*DL9lqAUO(2yq(&FZ{j8O?1Z!*cTy`A`qdS)Tycr@%1Ylo4v0Vw zAk*O~hoDWnfRb?={h))biL!q7zF}Jtl8_NBgcx7Rp3Thit$3oiJGwx1>Nz-*VAIG> zcO8=qK9GQF_OrgDi>}5%rY=L5V(`{;JJ#wscv9%kvv8M1Kv84Z3~%AqwZsnawP^2B zjB{K7GHXf>3u;G11211^h!GI{aGzsiD8em2@Sr>v!be&ewd^y_Pq)qW->wIV4F`-> zzB*~yt^Mv@qAxw)6$9rAlp zpde!4UkQYz2p?s?Ppoz1*`Z;HnL6pAaJqVBPK33f@4AL9T9Pt1!|?@Z;lZ5Um5raeL!tNc73B z?bf9@V474d9I46U;eDoCn#@sNTRb36OYCuo24Ts4xl4tA=DZB$$fd&|Hq;9UJj1<1 zy-m{gX^Oa5*aZ5@7w&4{@ancp0lGclpjuz)w*n&O68q0nJMatLzk>{ULYb(dv%V&{ zz1K%e9GkfhHS zqxd*`V)HlERyvKj$8#DF>~RN}Md@STbqTawN#TzZCcKGJFzc603bvl+J$-lzI}*wwkz`_>$rGvs89n%dQu>?~wjM~g2Bi?Pj<*8Sf+aQg5DL81fGD*|M;6)Wn z=k8o>PN!QD6F*Y`q91UpcHeK229m$u&)-Bqw_4}2{&VJ6Ey5*A)m&2IJ4IHcd^foj z>znD>YT>r9i5P?aNRW!33NJTnnH*jQ*YR7WjjSwfjxxn7pu9xgE_CU^ zn^}|GmN}20J)-E;7NGPcgL1$lA9a^tAwfWIxR}(=uJxDGWB zfKm%GPQ%{=tN{yS9+_7oyJ7y~_Jle5uXjDqWu7W+ZBO=qxeT%FKeja+kuSQMIQ&f# zFXzd)K^ffj8lXLI|9C>&r}4qoyym;;b&XO+9xAu%Fm-Sp5rwd1o|C~kRdjhL5s8hU zmfeTKD0CudWjbwfmgadfK!lRLUzW}r>}rp6F=(${w0GyZ>vex>1ddt@lP(y2h5~R| zjH;sgmjVl1X`$Q#c5Ew+AO5%dEj8bo#pS+RtJjEFo7Hek!RBAGgPzh!_zJ2vqNa%y zK+GjSg&A*rWhNSMo}YSW zE^FBF$WxsFPxId_UrA6}W&5f)*8cC^Nd^mo?d``47%MCxP}I5vrj!~M;TL%_%YTnie9K%P zTU*D}`ie?ocn__x*&ZD4C-O$#nqUTVwT69Sem!{*ESrJ}h%o|PBiG{!{LkEeL&dR) ztWVn)SdrlX0twDg&7~TZn8B*;zt(wLRygiH82F1qm>+9>qwEurYZ#y;NzdD{vy!#5 zXfX3DLip(XoU@c1psmIApL45o>JgqGl+0txYXnRzIF_J<1XSD{bRiMZj7xdioSIm8 zHiC(?Mqcvs_FeB8D6y$1X6jgV+df-!^OBnoeZ}}5j9q~-$Zp4?t1u)MA`~Sc+uFOE zzE}rw%ygyfE`RWv%X0rrs&TW1FMBZQ^N3R{or*`?^fkJ$CKmdEClf`aL6_v~OAK#= zrx0wBL?HV_e*!MQDWIwWOrBp=81DqrW22yQc&iv>b6P9%W_~x*r||&)*kUt&->Voq z=4DCejNm4u%j`kwuEaH&tTJrg^qkuwau-TK%ZzxLl*o>fH({T)lEZ}i1Xw&jOhtxG zsKNB=8DS|?Cc$EVL+p0;q@!frq~w}W`}ww^`p2XuDu@43d)J&H6k@iZ00KZ)RyAR& zDEWKIbZu{JV9<_&u?aweA5a3)HgSXrI#bsI7(i=@YZXI0j-KG#R|18k)zf zx=#WfXwI9CvV*QC%r#~A(haPWM&&57Yp5ShX@P9vc9H~uWg_s?8&4bb3TB;!p-_J! zmILqxB_$Ntj!I8tL!%ZX-MZ z40<>^4O3A6mZee#zm43)t)XE^dc>p*-n_YsgrNr~yG zhBAlJ9J4bDDw&hOXc+Df1>roz0DTn)j5k`b)=eXv^$~>7MI3ps#Hhtuvk+#wo6FEQ zdRK6SHC{7memKI8D9PmiB+#2l6`X_vpJ2b`Jk`b5DL7Fy=o)NZ1}^3g}Q zzy1m~azH>&?H^+DB#GSeeSaA`b*lOlMQtd51&6{~4bPMTMXUa*ArIUKYU8Hew-HKg z&CqbntZ4BxNw6Xd3LcmG!3amz3lLhqvz1EZPJb~mW~G=?s$lRFm%Y*MvKJ2#^DwUY z0{~6#sh7?AJawxdGx_P8ENa2(3h^FR*GCNX=j(NHi|VWRJn26(!(#QHWypN`4osur zJ53+l-T{FH`&XsP-WRYwGiS}NRF)h`hn8IKlUn|$#}Wxx^;a zX>{e(*)f=zDU>wf_eQXUbRu3fQCXASEHRX~F)_x&DC$^-Pl!J_*7&vNP?53UhYdtm zqyXDEiX4O) z&XylrXk+#Emu8Gh*uzHk$i$$ounV`Isy1@W;8v^Ib@;sY5I}0BDT78sjXaLMPhh(c zUp@Kr3~X5ri3w6co5Xd0gK`LWVv4=I_Tp9&6z^`6s7+(R=geDSut!w7ONIzNh**t% zo|X(-K3$>K+gC$}kB79p$pM^x)w7M43b3W>({7*l$Kqjv_OP!vSe?#sKF?$mbbY;M zWV?TOJB8eF(=dI9#Vgj#)E?S{I!H?<3RO{MR#&SVs%KyE%xwHi>Md>+ije~^53RGs zFR(mOXk(z%{Y#;cYXND|(Yku#Gz2bJ_5zEfBpQmMZBev=GWOW>ic&^*@kIPM!cwM^ zeyEZY%=eC^(GP<+Ip*!kq>Vl$gL5IyHabJS%0R;iig`}AHb6Qv^-v#+wm>gMA0s6G zt%}|Y>Rl#7M|?CIbdzP=-<)TdE}3~HJe_czw<9h7)KdT|uU9x}wd?$lHnCTTBwinI zdFIIcAbPngX`(gVIYJd+%U`54?Kp*X6w!qvr1~1BF549%dOybfm{8nwXJJf7k&mR{ zQDudieMKd9Qsnl!(4a_iCXYwSF|E&91*P0|-aqY?c2~4lercs1hCcwS+)}DMNRh{v zVAjIx-0?ev`P%^12s-|;=sXdD++fPT$Fs73V{lK&XT(z^85P-NwO0hRRqh-rZkq1t zx-a>NjI7wx5rVz}>z3Xmh7m6$6JQ&0Rlut&osSV{`A*0pBx59qP*zMYE%9Fh^$6Vy zqFv6dsHpBa1$Mk$E@l1xu^N~JvKi*)saO@f?)f~yQqvnrz|HCSfR^cyV?Vo51y;Eo ziUZB{INNXHg*9KP{4@1xiGc_^-pTmq4qC9YfKDlLMv?%iWNlcKc`Y?7%Udlr$|4Ji z;%inl#Lw_@z4l($6<7;t@GPW?i!&@7a}()7qhR=heFL&<-$l9QC!C$(60zc4ppkRx z6gM(0*YF;OZfmV{P|fL1Or*D9=5r=E{qByE$K~-KeM97Z7E=ix#lg{_&HMsGW%_{v z?h2^^G&@1ojD~5J|IVQ)+2}&Jb*&J#k?YjR!K&Cn z@D`;+!Q*OHe}Cxr`>7jlG6e){gRjur(=MI?Lb9{LxJSCdeUH=N6HGe zs&YnuhvY$zW4%cV8eQH+I|bE$V-5~QXrQ#JT2M|Wo9S<)hiCXeI;f~+IPuZrfGST! zxJ)dWE&xa?ECNd|C2Wb8;a}_ar%*if>MH@7;pRg5fdq_!RdXb#)=^U*sTiX=N3bYJ`orNa{KCi(Sx6tdZ3E;ND+>=z3Z@ zd2_~RK!5vi$mXE|H19jA+#7sUh|sU{*yV0;#lQ};E+2784}?qvuZ?H2t`Z47G)8lF zn#RfG5@SB{Z%Ds3L0t=zNer^%6L6aA!+RhHog~5jV+4xVWr7CwMQx?gDP_0u7?lH_ zp40kN3p%qIKU5L#DMoAV+>GDzhHoD}WXh^@>}K^^HzXtRosac;;sV2eV{Npq2pt06 zIndmL>%vFxhA@ES!(_CnAB5L(z zHMd$K8^P(DwZk2@p6?DI71BT3)uCkt*TNFiPvCP9u~8+fp`OY?5ud(o>wN65tW3re zFI)aO-A)eoK9?7Rr&Q#t(oFhyZo{BKf3BD={F*pqzxj*mF6@wfLAiYXzAW#N`kTtj}tY(Vem;@^HC7~SVR2Y9lVC*{bA zf-1#&Hq6#r6wx7qOSa^y!KKyZwESQ(S6^(OB@Sxn|WxflHGIaPQL7bM5>1Gh>DOv2qEB2P%0KrsS=+Zpjzfk!= z8RM`FYz4+S4(7u?=kssI?8{6l1+USodIDHYEn^-qR~eVN3Ry~3BB?NVa99Zx7pFi+ z0yb2^RtoiJ{b4GqCFW(N)@yuTTj;jl;adxF&mFSAD!&%4Ve?K3-u0$O8(j~se0O;I zQ4^AK4Jqm&Wwgxr;%MmjgPXjYe!|&n(q*!{tzK39#e0WW6B3Ip?i!_b>?HA&k|!2& zyw`2I#YV!`C*u}PCQ=)Y`p!j2U3fHfD>^~KrQOcT?l!E<{CZ2taobnK3xZO&Tw_4l zoDUk@^Y#CJ)p*? zC-yl%U`n}N#0OtGKD|`;;X{`@mV5J+A6%_GE(1gBn^G9pVMpxgzee2Z? zGZ8-h*)R)&vcr#1A%6rmEH>%DyxO7KO}pIl9XN26kOu$L@iOW!4f>lhzH)y;Cg!w^ zw?F#B7Iue8&HAqF%0==wPFrNT`7?bfnY-OB%ngj%Ez6}o4_JGp+Xj{B+bm7*^0+P! z+MT9=ooyKdOA|gp!O)3v>btKv9+PMl91LFg-NZk=IZ~TDZ0^YAY){U_!3j{E>t(~- z;rig3518XkuM(|yUI#9u-yCfnI zwgsu57F~v0i82ykpI*9}z1NTs3BePXIIofjsCuzre-a2w_ukg@U`6F=5 zy2I>hU+)F|IJfnP;x6<#7AWnS&!HyxPUfL^4a;#RN{bLA&E5Z>zn|vW|E+|76zL3| zlf`tRcv6B;q%o1aiNzzA>VR!M;HDpktcHe;^M@nhfTx?vXpEt!{vO*&kPRkz(v}J3 z5Mh6&BA%2lGg+jj4^(RB#3_hMWb8!uuGu=GQ)#Bvf_xOQo2j|;m7!j7RjGM@{8wb89k}mJO^|#SdLcz@PNC}q4)3C9TI9xRm4=)XVB@a(w~wpFLJ#wOK6^p z1wMisLYwHt+?okNXwrnepCZx|*NZA|bVIYt_YFKP`{!AG0@j+zpX2wF-OihQS166o zF-O9PBReK$BV4SUC{tjfV5}DiMnVYa+OH4yvyM!gM{2&+En+9TFD|Wy>i{Rvh#Whm zFz3vgo6#hk0g4Ja0caZ3Shw2W?OzgXsvnEX$yAlC&4ZWwn11rb3bZG!owz8E2yUPb--%)z zn6m|#C{ec&1pT=PSt`G(jk{|0;`3+tAcUv)pd11YHty_J3-_9pOF{L{*aSuYpWDs3 zP5w0YVaZmD=Y4U&wK{7}@*E5xyUCEndAKn-Dbf>g+euo1uFErW5^WIv2M-2&vNEP4 z1(Td;pld9_<_k(vL9?WA?>zqN(k_^$>-fHfsh=KNYVLz$_U~^vPRU$Q8Wq5pC0U zRAPa5Bxt-MRwp`p4@7fiGiioNQSk39P)xYFo)d>k+f>Opy1gr1G)#9ctcl55k?DSY z4KZ%*7#%gC=-YwF1!|5IB@}8|24#Yb3SQ|GlN45KPF0_mP=oGpd?z5ka?`ChrSoZk z!S(ahcvcy4gO;2aGd!Rh<1WyHnw#DqLxX@1ywOj~gW?CT`RRA`RjAa)o&qscL1r>l zR`(Wt(=l1;0Z6CzgA<|FiwLGb^b!x9WdbJ=T+RN34*dhch5MD5JM0>O(ePEdbDX+# z)Q8;3#eR3qh^p3m^T|az!Rlv|co)zkod-Xy2+2nY5E3+B{mf_~!H!p8{|@}jeU!L$ zREyiQ2u7DIcKF>jspIChgGejq_R$)E_ZKO&r_7USAlFI2rX;1R9$Ij@v59H9i0QCz zaDR~KAPDKTVbK~4HthpFFT$VXYa667oI31&J>Tc9D$L1P+Z}$k1VW?ir#1{bG zeTT7Yh6WzB=`J^2ZwK47W5=d#v%MUF3Ojn*r9S5 zGzIl8e1Jkz;9Lx_(9+7fxp*vm0MDC8#2T<8W-@(&jj^}5JK@nbCDcH@o};GXz9inE zPo$xV7v-F>YX-#W(WPriC9(B9#y);GSNH(`KLEfn4^s37KSc~(_R@CY{`d91vp1s5 z;EtANNgJexx6V4T8`}KlD5ehl-+oXWkIgk1ig1dgEP%HRojUNro$)Jaw@@*Jv_nIN+h7@O7RyPabeghx!U>eqdL56AL7&+3r)cQu%R>jhrI!3u7$ zo?epMb3p=TM7+-gw$rR2 z_Pae``q2n3D*H;l-Tz!oq=LR-2RZFH*NB$h35A0H$N(LqvjlGoOV zD9{eADTR(38^vePQyrsk(7tP@U}P8>sBnWQx0ELG=A*%aK=SBGG-zl4z!dIX;2QRA zD~ozf6x{DxNLgY;$PZ`NlKsWCRvn4w!9C%~QS z1;e285!Zen!Jg~~vHq{kRXzJ_ozg!2S-%@MN%G7K%GeV#iPv^b@s*2Z(*JNlCfW$r zo)#k=?1582V5UE7-4|Y?O|itJ2n+ygX=;cX_LZcWeodlN={Zk_e39JgJ*R-D5)}?W ze*#?&6D~(A7)e%s$<%E3I;`xHZoz8@0AUFuR?5)P8B&391eqFKeFcYE8~kL!%u!6R zDJf~K7l2scb&P?Lm}|+L@u$m>^81;O680t5Vgm#MOX2nZSe@PrFLRJZpV;QB%GxQq ze1%v=$pI_TWiHj2n$#P(e%uH)DC{r^?^oQE9qhi=@+12E4i!F~baX>uCXEanZ|S7T zlb86E4?Je9BuBZZ-OAy_81HmY8+LFpTMj%e@01MgH4{wI8=BzE;iBu@z;(V?-SCjd z0g1sy%>y0*(Kcmet2>?_79Q`!xPo{=Lw1$+A&Wniv{E>KDOJ=uJ*2l;%sc9pYMADY zUsidtF6MX;vqEZWPJwo#X{TN}>g^llTQ|-6)x^8w*e7Ph(G}n=5CmtM+u@~J53U+e z&M7BVg111Qu^-NV$1h|?xkO$Mt#+mZ1spI~%<#8aBx!Zhki6aYqDIsc`aw~5L~QQX zb0Pqq!G(H*enP)fTdFD_p>d&9nz+3utbt8SE&@%I5wj%{yZ27%KA%T$#s3*33w8sY z$cu&l+JXCwEDq4ASc4E=b2^YJ)Zn)?$OZXv68fyD#}YR(nk#(zH<3c9gwDEIsBR(d zk3(GC687ToWa}UfH~+yKryIFBw73^&H}xO72je)fW<46_alWW44f%PY$kSt^GQ6%W zDYD}iwvgVlHVeyEH!+m27pW4MN@npIKjl+o(BhGA*x4uuM0oGDZX?sTG=wZ~J&}0` zKZJ79KB3f|{PpT(CDP&02MUC4eEe=9^+)p%NHBA`c`QZWbl=-X!?SLf+2umMv9wgm za5gb#L<~&Tb=EDEKq^x6(4r4YqoUu&(rib6iu~#R9J+Oqi$>ZrW6jA(4X-FJ(^aiO zPrhY&y)-WD*y0l#INwNpwoH}8|Txx=Od04OZ>X69jjL^_gEb2cu%%ZT$qlD>& zq3sMBAu@-lPJYlaB=x**9T>R#XG6N!-oJ^aTU1k!Tu`E{XA)K!^t$SuGhefhZ+^|+ zys8+_e`U%;E^nwK;|G@Pb)An6di+bN<6F--k{erxy!j9C-)MOKcee#4rT4NC=7vx# z&WsfF2!jF6l~3ZY(vdEthJD{d7$hfgS${o?4v#eSNV&5k&{*zA(Z_V`pC&J}L-6qHtZb&tJT^(9Z}aZ~x+e zMv2Q5H|Xpd)Y%)GhC-f~WGH}l$^({I;9>4S6LC{5S`7nTVz4-6Q=@oYZd;w;Nv-X= z8`mazbpP|oP8824xYn>ss)^LG1^>ehY4LzuhWde?4(DOW9>u%MMd<@wlG}%m82Zw> zU=7366CY>Pi`({{!ct3kKcUtNVk`~Lf+(OzN8%Ehf>`H@ zC2!O!I8B6D5RXBc+VIy!`3iC6_N3eK9pqDqDTtk!(cJN(iE~47h<})lbTbxP%*F?OhXviRMLLp@g zcr|i6o@;N!RMQHknh&|$f=;6iEXif`J96v>5%91d_4f4-A;ZkhHZ<02GMNBE3n{eH zhVI-~0C=!ik?awOtyixiz=~(Znzg*VnL+HP-*?xKrdv^@++;B-OD9$P;KFzzZLK>@37K-N(?Gy1q-xrD?kp{{Ne{-C0iMV82h{^-HyuD(cA2Hvfn7_V~<&Ff8$>4F>H_K#z z7gF^x#=I9X8UNGdXu?it9@r!mNnDx{vTh&ZmscLk6Ucw)JsqzL>NIK~uLk4+e@q3$ zZR}E_5-@xYvx683Gq_jhLC*z)*4D=Ns(djO86mqGVxnHWOlweSK7{Q$_q%0}h^8Ji zI$h(k$Y4=-Lj_KWd-Ic3Mufwm#8WQUw-coaP)Njek(EZeD7q&r)<;v6hyTMUTMp51 zGcw#GI}lzt7&cBJ4+G%fDAt1sUNg86Sz;V&%m_d!5dnrwgcwjoWW|G@P6PQWq&D%(uBi##rDjtxZ26LGD9#Rua ziThLf8jBI>?KP=SJx~7Ct^HxA+jS^mK|dI~M4xcvk`};ZXt_F$1yjWjEF!IyQQMS+ zxH~ZI)XJT;wj$0i3!!OZE-|bL##Jk)T{mTi8;DRopH*wK^Ebxs>Ud8a?M9?S{w^uj z@pt;A_m2cbj$FcbX;brmEKo7Z3&Q@P4Az?cAd%xqEFHWyIw-K;+WaYZn?Fg22HuMo zm^bPrzyOO$>9aj9q2zn;KF>*6z!lY1Xa@t1z92#+uv+RG0dgVB*Q ztBbOjj#iL63~1g%f4(RX-Y*hu5J)hL)UJajsMs=HsS(Xz#XIq~o!-_II}KB~v;J2S z|4t1lFx#V6W{zKhrnMjoL3rgTiB@PPw$Z%xsNPp-k`Qf)=$w)NCvT zBADeQ4}_LSA*DxJx{U_bjBYsW;fk87Mmo~*`Ssr|BOGu4&CJ$r&fNG!+ z7~zGM&_#!x3#w7bU%EFpyH_J>1S)DC?ZyMeasoPJ4#eCjRr!8RTdf||9^$t-0!fOf zNU5JgM;JK0H+3-(a-oa#o!VN|_H<4+LZ$nFPVFyCHuV8UREX%Tc$Y}rH}77dt0h$f zU>;%2@6aj@-PkBnA?8j@i*a{OSnM=4cepq6%Y=#B9gtZ}0p|B`J9VhNvGCPifCVNy zxi>j~#Xhx&ofma;dip{t{wuCjBMdm$wMO;2 zx80L*o)&cH9nr&kMHbZ~@nlNEV;>pTHF~p}$DIDiksc_>M3{f2~(v|5BOzDC2WKeG=sw6y&BZ+?S8v?mLKo+<#W*-}p z7;qe~N|s?WgMEH>`7Bs5E(^q+0bz79?%6WMX@g%LeluKJs2phaF0fQ^J=lgi&V24IUz$*=)&RRQ-{gDJhV4O-u4uO3M1dn0TV78xptq| zV>s%A=ViKl;8Tbjt)`kl z=7__HYFlm)$LcgrSqTGGD))M`^(z80x@Pt*G7Rg0N_PFdVKj_#RRP%v5us<%TUA2u zl#3K&Z38P0-mifohez|A_@%&_md`2i0J^1)U-D_s1!S^Nb*a2#5Lj>BjA=6DsV6VO zqnB#L_=a=8cbE=l`AoOW!fh8{#Mm}HtZm9IL?1HtF3pCzd4!4N zUzGy6yL3e5v&(rxn!MjpY8_jqy>Y zJ@ehuWHsyD7-0Jy#QmRI(3x_9R(O@6xE}W=aY*E~f{|8y28PMrFdCj>A7<5`_*493PgaR4qny3+5G8ENuT&~y{;A#dA3Z3)9iD;O_ri{` zRGu~iCi&9MP8^tSq)9|iAL<-l6;R-y9oipe_lPJ&dNo1fR{LrP+97zoF+fNIknC9l z1R|y`KZ1b9SFBRGo6JWYB9iL;OgO!>;Es`cjPLdNRV)p&X0%BW#|!{vN2grVig<(@ zHTHspLo`&2%u&1$S#zC2Ukt@|TM|%>NiZKMJeiApPzSsk{oNaxMFsMS?ckSjr+(vV zsVxspJ4zFwMg!C0e8yPPB7PnXL|C~(41$P$1x;H3 zqNBObb+aW~!zmwq+-^Ebby&yPWP#jo_;eb@8cjA33K+N`Zo68xjV++2W5Kmk)wwbD zjaCvLy8%N666Rm`T~^z)Gx4lHHrkXY0BHw-DmR3REg#1HzlXI@b$3bTud!n6I5Wxts4F@ju1p|d7bF<; zlqStD=vxq{%bO$nKl>{?GpOE%t;rkyvE`1AZoo6moblNJV|G42I5thKr5X16j2u#} zzU?oH>`)_f{1U1$(!m;=hxpFp^kJM#)n2XwnVG$#4rc@K_H<;kw-l|YUR$?TfurST zh}lrsUF)fk(INlxEJsq^m||&z67<_g^P?yuy#{TxRV}D}Lus}_#+TpEqa)ZCC5tVk*qz>uf#+k}TWJZ4lymC0RW%M0u_ z0(MB`6%c@Fx`fuHmpT#dW=rca-*tKDCktkfVI{PR7A*1H-II=_&>8XaH9x9HkcY&c zX*(W+m>)21@TA*WB6NZb?p$I(8oyx?W@jScVien;PB(gZ| zFbwaPSjHJBkfM$KmAZGnN=Xmw$vJ9^ILzGD;`2{**nMo2b5?WHB!Q#R2_bg5p~>r| ziqRDfTEo&(FJpH>=f^vsRUfKLB)#z{Mkr7l2tm+>%WrXxCT;2hJ>s>?Wj7lE1$qiK z-_UL6D8MKI^OCForju`i!afmz^AX6R(S12{0my$2!J1R3DrmB&3+yLWjjw`K?sAYW z{JLNboR7z5soV?lOS?uT9Bbg@nKE@HnQV4)ZrEnV!KrL#^HP;a$(K^dY>y)Hv9fNa zDT{K&?S1&}Ly%0RN*)6Vn`gh)r=uZu<|RBL7%em1Ku>4f^ara-L9A z%eN}@ZOb;eK}vJ=VdT|8D7YKy6#DaoF$(jt4b*?Yjp0a5I(`*PVwd#-vu|H-I?oI%HqergbOk)&h}j+f;pIU^&XA#ylJSlY;;Ab0v+Y<7Yr1#eawB8d$F#oRL`y%On~Z1`Iql zQ1_{rzoB1>$s!R1%~^Imj3q3Ev3~|rEcR^EAUkXkLYEa+KgUnXz zQrZA#6fvBt-ZRyx)mx_@7E_nYp+Pj@7+xB}DmlD)gex1)M+gwclSMWnH$eMBoTuI1Qv-a0u=A z<^Gk;f8$+7^x{>pnO?vrTC9t-JZk6ql3c+%omvhqm*)k_M9$V};2AnF{-A7r^saUK zlRY|(lLKn*qNxj;%`-gJzcd?hEGirJ;ERj+Jo{QwL4Sfu2SFVO%{7-`J%((IAyAuj zRXAj(CbQrJe#nrf7|uhVCIZX(?PHn7CZxlcT2aSrwhJ3cQEWe$_J(py1Xi*hC$$Bq z#OlXst9QsQA|l#QgM?U0o%+C*$!~@*Tc=Q12WhmEfwc#dXjuX{x0P2eq)N#do@~&8 z&D_ysTosBucPMW8UJNVzf7syFC}I#gHhbL>^1C?1I>;d!`AjEo>f}VU;kyGCt7Y1< zHIP0(sPV%GuZ>Tih_&9X8*VZT1FL9Pt(s@V2~?Iel+_0W}%*%U7i5#s(^cB`6!dhz}msq8AiX;QdRc94h`n z*77^K;hMq-#GG#j#y}b*|3l+h?a!aFHrD1uvb$8OO8J2=D5FPOD>3s@M(uwVHk%?q z-c6B$A8FS`{12SDGR#sI0|=?eYCHuacVoan-tNHqhsqYJ7hUvr!BUBBPyX>50#I11 z>>FB?_PqgA2^*^zK|K7&vP4Y0Dc2>u%ri8o*!-YU<;8RGf!jIGM>QvCW5XuV%7z~C zZUh4|L7w>Zb37el^f&=M8V`9*ush<1_est{fbu+_FuYfdZ_FMFCO*ay`QMWhz^_hg>c&^CC_DMvzvr1II z_yJ)-nIRoi4wkbRJlT~7#PSDXX+yNFpQys{DEXKPlZmZtbxYe5-r9M1R5TtIM2o@m zi)@e3g61B!a!zcDbtD}-!Q%I)ebwHFdPjMId>_n69YOPJCS+d!6BO1HTC2uJMj?t% zlcw%RQ$h?5B-1MrTZxVI-PKw(B))x$DuF5ku5QQh{F~m&Fl9Ay?KNUHf@m+TgCP~T zhTH~sXMB9%f}?^Z{SOI8IddwR)(`Cvl|nNc<^554G1Qe(iZc(7>qaEpx(oq-rE(>R zGEBqdxsWLw3I&|Pm{{;CYV3~N4-}r1Q)wSfdR9Zg$-~gWdT#*?{l0CDTlJ?oqI|f> zsjM5F{N7QbrR3S%xKB)^Fgz~WiIYQ_4uqUgwB9xe?5A)6i#2b)P~r#Ov`G1w@zWi= ztI5W0;kj6Y(WIciMDk+R)f}*@(m`bz4g|z$q&+EcPM}GMF_0Hpf{Yn9oI@x$NEVB? z45v5o4S+!Axh1)P2oJp5KL?Y!q!E&67ji!X(3lJASE_EYZW32ovHqWYiSirb2n@|k zu8ndFK0%zK3JdziK~P&xm%KlrBPAvz2FD~dJq5LVF(H`<@MyXyMyrswTlmWK#eZcF z_VT#tQA6ZOU`G%cklKe%Z z?52|*;ZG7-74@HYYT3-Ij1`I78$gij<6EYz6`5xC0lmVbB5Y)AJ?I;~^;8lDvMUi& z7RcUDZ_iOSI?e00vKWJ9j)Q>%THA+8Qd09=gB`&PSNLqhQ)!8l_V_jiW$<#%U?C&= z=s{-R-6-7g-Z*X{JeI196PwZN2zFZ*qw{K&gvQD)`Je){BBM)_UnyH~K6jio)cq_Y z%Ccin@Go!SC*v}2z*EMnTrL8q(MfqOIvOFO?dI4inGf59uGo!D0J)HmW?B;FDoX-ZfbiAB4DTstI(r=!EE^B% zjlgoE7(cPJp*(SBe-s$%j=MgDjbQN}J|0>$|G4d2=Tkg|_yXP5mqD_FP`_h#c}fRt z#Z7~%3O2WGrePz*VHc{1t(qcPfhCrppvr$X@WpL$!4&SING69-l12as@1wJOh%Zz} z#WU<5FzR5Nv2AwF4+$B>&V}0P<<1mso1flTfJ7qcy`89k@#H}$Q*7c|DzM8p7>w18 zpFA6b7>fRnh6bi6M|I+!6`7E4(G%<00)*op(pv6>(@ylcul13AE4<3>w(GTm#mblH z=pUI33ThCz?F~EB#Nk3!m6YVfn4Vbh>&4^1WM4P9x?aUN5@J-xX_3}8XtRq%LrNc`EzoLI3z={7!B1UA$?;5KtkX2Z%47uA>SFone*%kV?C?3`(Y5q# z5~FWhlSj|GF_o4#T8Ol-$;eY8#U3G3uBtJ z8PQi0S$66lYh2_&q3~wB=4JRcDe4}9Bf-5gD3Hrpp~hHEbCH-542;z&ae6S(P5Y3j zJOo?C0+(&e{qWW&k?w-KkTAVy7cyBpAM}FL+r;Z*|Ky)pT+9?iSwwrD7OF!yv>@v<5@YL}fg$XJxz!?SA#iv+YHcXH zZyP!X{C3;+w?~A2;XkW~Gyl;|p|W-3w`M6{w1o68O529MCk}6D=HAWPx!JiS zVSTjh{BNY5Xis3m_fK%5d9!ukjJ$)lKk&@F^<*rkR~mruvY#zxp!D(V=ywXMVM$| zl5Q_gy`?NmW1d@Mge0KOC$i7ZXD%V|Qp&Y=6JLn0&^N?;Z;HQbm+CzSM zfq6X}T(%ivP^l&ZK5A2t2yDCHyIzdA0N$c_PPfgw$pDyMSgn&b0WXTgr?mHubJ<`M~fPgwa zyH8*hOaL`{e%XjW`L1_E;zeJrl&>5*U%>Wa)vzFo%DT(+y=Q!EpGzK-(*$=N8=JXSU zxrV{OnB@fth(F~LAhC~4z@CtD`K!$De=WRhf$do#(_qZ)d$U z#LYxPG^saw%wZ5az620_t zkfq~pCw+JD_?VmrXr<@sC#5NMS_F0YOh+{lnvr~?FS5boI@mu)DGx4AZ;%63HCkR2 zi33{vCvy@Lj;-(>8mOG_)vWyW^Og+3ONs^-Aq1Rq(<-$xa=L6BC4$u2ElYz*IRyG*>}vP2)wjj_eF8wceqmM zWrazn$HN3pcYd$v_lt+}=F>o>6tVfAVx?0>dzm58=A;Fr^6dF8VoWerip)bd(Bn%u zJkTO{^U^eIEt$)it$0c5i{u3Z#5M*BDMZHxu z(7r#NYhdR_HKjdGf(`mkdp5zEvgEOqNgpM#1Fn9h;QD(4M}Qjj_eReLq%p8Kp^!Un zs4p2EC{yAHuAt!zD!3Ugu-|YZcEp1y=o*gNS>Um8r(#D7nUo(jQ!a+hTF_(6=BG-i z3-YXnUE_xn_(mgmbQ`?nd%86>N;4p2)h^Ej`k?l+59xFdO>Fha9*2cGaMX7{=wSdghrxh=bB-Y&ifm8>>HPdDbvpJ(wbJOicWM#hAnBSA7U zJ8;H-GC#N1kGl2UepC&1f3kPPkj@T1f3l%gfvXcL#qa7dGEzP-(tY+H3O!8AF`6fW z;M+(e+1Z*K{;W`a841w!MFoU4KG6iRj@IPG*YvrE{>g*!hRR2gzxYlRJ6eGlt`W9Qk6n4i4J)vP*@ zI=&1sg5)TtM)FKFZFZ41JVqnAfL{u0P>T1};>4vO`My_xKz&`3y+XFW2~rNb`cH&2 zNsAF3xZ}-&`vPHk*bAkIW%u=X6V?%>6OOtDQqS@Qskf)Ewv#f;Rf$VmS=7kK@FKf3deyN?)M@cajtzswfY zS6cEl@L{s#tVYIlkiybAkc(}eT&_H8FY@=hNp*q8LNLUrgqsE07gJbftFq8LuZmPR zZ}!}>HkV3EB=phB?Z#Huz+<i1B;zDc~={%Dy#)8H;90((Ej~x*A2DG~|oigI~dyNyHxz|N06j#7iMy zfl@4&OS+t?!Y(L5P(70z^3>6C@FB7sI>zx})$y)RnU;fMJ#IJ>Wr2K}wZI_x$tvK2 z@$3op0XO6^2}HB#2Y&#*f*^Y8w*YEzLT!p46;GaVUBP~ruj4)`>oodjpC{#aNUGm` z@9gEY<0b7DNG$_8z8<}~O*yTu@8C3WTY*@#_vijz-$zc_sjc`j_``Q%YcU+nf}fR% z4+p17SvC^Ks8fV{k;nFif0h(-BMCnR8`I^T+{;SrIjtLTvJL343qD0~ z&EOJ~sTGc~kvdZ$uk`ee^tdjO##J|+xGGFGxK{ia8-5@pBV`Ise&1$KT3vh(8Jm%S z5F08Zb}tbXfiu3YY8%rEH4$H)ebmJGWG3p`@LTjtov*jf8^r}1E>e?nr1I~EM@)u| zsA$$eKHyplQ3X9$^?GL;4VTCsF3)v{{7V?c(B+QL&G(%RM1LyO;S5LEdPw6cbi!3dI~X?q9I)sN^D_wt(24wlt=|P`4g&JYk}~*Eti*E%?q8VvjSmzlgP| z4zD$EE3-S9FmSv(p>2_BN9&C%?(WwFnC{$K>zwR6?(owDdjv>u4F&>>xm5D?MS-6) zA?P@$VI*g2#!u>ZmpoPzA$7(RvJ$5Wu|2(m_I)lXD)$^KOL80wp(4x=@}v9B-^u^~ z$V)Ihe!_!MK}({^TFKm+LVR;d4-KMyJOpdlUpy?Cd~Of}55iI?H!`I`mi!c=cM$1C zP=IpE)fiTX-scpfwN5-7oqti6C>qi=z`qqwVC(J0`SEK_b=K*_8o`AuRZprV@sHQt zIvZuncV7h3ULdXt(a7hyNPvyeoZR&(=9YuyGoU{K%jiBqk6HE#8G1R+$y|6FYvmN= zbW2L2l7W6!zko3&Vx+9okc6#jJJpXUIiIFcJc%;I=lHQQ(f4*UuBGKcD4j+vW$}rArH` zCe&F04rYGRi=3F7A2akKYsS%y>)GwV@Jk)E+RYXcO8rw)$s}hBHj9-;&mn(*;T$;Y zda5*Q)R`HfjyC?>;xc>1vL!10F7ORz{mCR&)oS)52iZ6h235kKbTD=j{wB6wN32G( z16R}#u-O}*^nkqzzb+7uQF|8zU;UawXNBb1m{mMgv&ImHIO0M)W+bAU)~uq>F z?T6k?0ig?^0KH&DC=fWWbamyt9!>&w00uu+-)wUs_g(@2E`OPxisQ+nNb(EL??x{b z+wfe#H0NhjnZ@Xlh36|=)M@a$`h{RcG!Z2x6GQ6vUtfPdgGCgEY5X}n!H=1q_*M(z z)F-KbBZcAvuU`j1vh9*qR1J<-#{txpFTom4DVEdeEgSe~Mj9&q34s9&q)3?H1(3Gs zmm2ElRfZ9E4bDnFo2ZmCFgGG;bZt)nzm-sqyHwN92IB}?g)C|=V2(qb(-^;o-54VD zx%w&FpY2>a)rIGY8OF>NrVQcgYNzOq-94!g`3v zRD-Cp5GNR0V}W%{=q~&*ZA37ddm#Zxzo#a`I#^x$Byc4EXp*crF$7m3RJw-A(5NGm z+}`F*NvQaRsE-;D1#(Va`BVw!|u@ z1l0+jX*sAo@u3GRT?YvP&LrPiPZ<3+<<5WD8g_dn%%Nl<2aqD@3k)QWz!Wz;3XekZ zA^XjWilUP;H_t*D=#k<;wxwhQ5_f}kJE;3k>VM%x%sdO3Z1*3a(VNqIqsVBeAQ(_C z%52UMu`;kD>nX%PGwwQB#?;%l7uQ_elASccJLq#yCT(xf$i)ab^t)sJKAhR7JA({Y zx@4jd+cMZYrVdF`fHIJ#O|?gdvqMV;0)eL>8z>=S0;Kfv;0Yn9b7}%NPJmIeC;!*hkn~Y{y>)3u4Y-9pkfJ zx$wuk{Mm$}O=P05Qc;Uz7uglQ2$Cmv*%)4)F3l(+qYxR2b#7oZ3n-`nntN9&6sdgD zdHh^fR05q|Xk%#JO0EQ(8yvw)831mgO7r6mg1w>XhkeZ$`*TG_kY^>^75cI9W2*Fb zBZ2)n+4Z<2`#E{_WyPoVtVILw3O{?P0m1lLkKzcHFS>)?9_DENXPit_zo1{TuXi}y z`ov+07r9O!zIfwt%^80@-P<;t?&p=3$qN9Iz($mXApm=39P3U0W*uf#6Z?Fgpzt?! zcM?e@u{fg%5(w^eJ(ShQfu^_sxN|bAl!N1Q_XpO)#HBwi61#hAWryq!8SW?OqD*Y8 zqFe>i3%z?^p!iGZ{98O0Q zP~W+0KH2G3TUzcTdFF+W1vuR#SL>hXB_S>UgsZeq-9d(Xu+njE3<2L`{Cr(CYCqmmxh#a-OCNu&>A1#eyIhm@$Bo113~f3Xad-Mqm3S#OuBF^UL1nrw0)4GS`t<|;LV+KJq?Q$D`^To=*@*G^Rlq&_t<70g z-cxWLK%z<-PFnX@lP%$baW+?^29tim3;I}T-jO_?9!Ny{LSH_mHk>4)CHxKVPdGqI zPy*ONfa(prW9uuml|t@*#liLz{Zr1zgHJJbtj8cx0#*8_lXvn*k=ndwIm(_Yh){#R zq-$UBY7E1KoR<%Pf$C=pd1C58BCWKwmHQ+zFMnb!#{qGTdb z;zINQc5iaBR=^gdJ6Sv3%huCx`^f?ZA`2Dxml6JQEPzuQvS+YL-^}(TR1(7$8@Nbm z1VUlvBfX~U8Z4T>gk)SFwgbteD(7hTwN@Os&=`KZyQQF{;nL{-Y?{rcY#Y}b4j~n% zMGOl#154r33Z~1kYnEEvHD#54Ip!cbYe0+{G?+O@PZ;A0xaEIJ&?cj0Q-w1l+n?f& zz;>DXb$FG_q$D;S&1eNflg;Wwzpy`aQ%jP7M*Cp|v4uttao^<{i{w)ko==Y<%L~Bo z@LTLdJ~}R+IjJ4ixD3Np?_rrZ$1;-(m#mYl14$3bxmMF% zGRrQ~qkSjguC$3yV6&hlmm>x_(lTryEHTQCoI}MJ_I-6)>Mn&68$6T`ao$xHd){`w zz?e^&L+ZtepBNri+*+g2I7^VfVn-rJkaFH@K*DgK6rp&O-Ji1Wsqz0*erHjcgsdaX zKb}!f()neNbi$)j(>UJ^g>Wr^c+Dl3|y#ebKt zP(!pS-A@49TqM56`{|)|6i7KzYx()QLwR(m0dm1Bv#N00@x;YiUy=h{GJ}nvJ6N7Y znVsO!y|858G>y-E(Z^~HOVO226h3<7)ZiQ{@ANEi?H$pR9NVTdWwm(vV{WD&cdGI| zF+CeTcS;-Uhr)dSh#Dltyj}e@>$k4qhF09eW~_LEP=&UFQXzUFJH7xiF0|p$?fXa7 z;W02_T57q$c8>=xBrU3-&h@SHX7;+!ov`s=Xqucm0uifZvQ48wBC|x!yosT}C`_gV z8qw?p&kuRvG%~`fe1;dN4MfI56HT_!VcKI1FNU7jnaAt;1b3{B?vE`tFeRAN%srvR z@$)uyif-rwa?ObSt`NU3pfV{}Rm#cB`;+mcxa45}^>&j_iA3ZLHvxrX2??7nN7ATr zr-=jbLck?pixF-dg=V=SnPV-Ew8WRtX~CGmE=gI9Zp%cAGv5W1ur87?j#&mSePJiJ z2kXGQiimnr*>o-(m(gI64L9c71a9;Q6R+-f5{$=%oFys*;BcU{4kbZ<3;lMqdDkAB z>V@iO48eeJ3#40x4sTLFB{N_r2<$~w*8WkXaMPeYfhG>|C%~cV?^9$=Wi%VsRyn7vVhB z9L8{xds&)0OwgKe>x#gVj6cH~{ZNJO@G?Hr1^YM9JqJCBsc_b;5NcZWK>PuV@B56O z|4K+3K?wTqhKXaGJly8ub20s7fVT;dG7jGt$GVV7rUWZSz#(!fjL#9l-AFjU*?9hh zM~9lR8$wA7>nazb{5L;wJ*)8l7qz#H4}am9(xT&3E=#?zuXe4}P_>^L9{l9y+>ee;ywGsU4FRvU)fxytKiUyA zP1W1Nnt?gT?ewx!MU{WvondTW8$TE*S&-AVE@fXkpJik1aKfB3K_>wFI`vb^_9tkp zOoYbQL&y7f1bNEMxPuVvA}owvAD4~WeW}}^aX#@L*cackpOFk*f*vN)+WqTnj@R2F zoz263kI5r9-KCjOJ_rKXOm$DyhDf4Hpo}pw{c+3jRQU<^+F^_5Kjuu+jOjssWH8Wp zaOdv6htcnc7INp)1PH3-2=KjEl-p*1j||N;=Usj2*w`{NUk-I{)Cy~s00HYveTyFz zv0=v-e&*_&mBObZV!6a~X^FgGl(%_cgQwE&neru+*4_=3ujyX_tz2w<6gqp>_M;2I zDfifiDz4pd3A~H1h9^09`YoM!# z5`#DX{A(-J8pw4+Rs^oRjt2u&Wg0jTDyjL%e42(aSUjmfm}peIgDxzT${Y|M((75FZ{svnOSupjJ{(C3)DnEXEn5I!m0n~tfJtS>)Z4In6}|A}4k=oP7{n@@>76uZMbmNftXpW46O>K@p(^)t=&*5R z`dwtPM?4iH6+3opZb?fx`%sptr;s``d)ua3E@xcKI&bBgFa(6y9;UbpDCbMZ)<1zi z0K4v-m)H0vt1(OkyrE!vMgV`bV6BaaI{8g_e$yNVuj!HJ`0gt0ID=zO$BVM1Ul4=``MxYf>5of=N+lhH{p%xuMR!5lm&|4*7@L2M}m z_ycw%e4@P6re@z`I~-MJrCSyzhpdn~UN|SqoMkWtAQj)m$N9WOTt=SM2OkWZW|JB3 zM~oviIAKoge*-knNwsG_71#2k>0Fujb9Al}TEm*DVnfZ7{Z-5l&-cD%S1tP1XfHi^sgy-_?f@(Bo5G@g_Q@}nVlyorV_xR`UccKN?VU|3csIK z&pjhitdKNB){Vz$icTn`WA9=4U#1DU5&{Zq*C`G(n1M@M(uJRO5?Qv5JrLwvjPM)H z7d}xuze`KI1Q`LCtwu`7q08Zotz((Nj6N^`;$#6Z+G!Pc5Zl?hP9GU*QzC;Ut4yVy z(3iN5)u1Rkk(rwWL0A)w{8Q@68EZk%oq@s?rw=Xl_lXBtU2i~DmV-$__EuG>qD0*Q z&}t0Pb|TYnogjtE+*dc}D<@LV`ajnvg3m*v)3`0U zqp7TL-v)%Sib}3_IcH?z?Fw@G#_`Bw{5;V(zh@|;$4tv6x~H5^Ic51EeA9Uie^KWq zT!rjE8J=^Eh6X5sI}5!&ao1Q{+q%pfJ5kG>^eB)9N0R3hx&EHU}O8t8x04Hxc(Ra1|+ zLDk;oa!?r}Jn*+A?E(h;;st8a;}aYrJO;r2C!6Rz$eB`v?A6`@eAc+V)WC8g=FVh1 zz*d&nz{j$&qvD6l)Wd>hM)Qh#zyNJX>q^F3sqhW{yerKkNRvL7GSEw%wPx1qh&-{%zpu~&G-ACfA1onHs$b!VU_B~DXB44*M{95)BN)wj^*oRK zv|SMO6T2N!|M;kF{js|3vOWxy(;<0~Ks0zc+Zk698wAst6(|U!Jz>AtJsPz*e+8H_ z0$j8kg2!BR1q3^TqvB8IRZxERTR_t^I~!XTIyZRB%s@AEsVo=nJD{!|ZVdP5wDC`J zE}cJFLcle8-vB65^Hi7S)#0WN8z<^R&=i>gbe;fexuF36KLEghA!B_q*Vm7cF{vQC z9q;0=_4#ns=VBjT{~T*~%D>Vs3FGHgAVMNg?3W#2mv4Xo+$%G~uHbiIt9r+b zd_j#OT@To@&=A+VGeZ!H=(+2LL+({vvYqZ(y*_RPtRh6!W(@tVo5Xo;VA0}Eq075@ ztxRq1HA&${rWhsK_rCq621oLP90o)O$CUG7P<25#ntz#7mJkIwN|b{RxVRNIuvGdc z$TucVdV5V#%yn|E=0>c{k|m}U5RTnZQPo!8Lkk#ebVVlUYB}>3LNA*^c0YI!ZL8W; z3uHV1_Fu-nv$8?ab47)gxnsJj4%w2>_o_sajB6&|CkXLzVO6g%?8$k3nF@saAb$)@ zZ&~SiUe?|{ZBf5qb(pH~xx7-Rm&Z{w`Zs7^M?W>`!XDUL%cLRf0xZPP0{Sje6pd>wen z^uQi;zt#b@rAKrE4D2dvaX;SiR!5AL$HoLYzt>WMl&hz& zt?II}6GTwaPRy)1MT9Q<8JwH{bh`VGto8oZ)Q=W<+GZgb8?XSAC@>X`*NY16b{D(h z(Tloo$-||mV;gJAUYoZuRu-iAX~Gzjgph0CmYtNj#NQ_EytAg@AjJB=PSQN6e1Kge zJ8(hYA~OM_dq_Y6MGvYW_fWd#*pqdY4^F7#erL`V-v1GpOi3&m7ovk?FWYuxFjc>+a1YtR zI`U#6bC6rpW+~Dp%Pns?x`#1P*=_(`mz$L|0SO_@a5_t{e3<5|pkk-oOxs!JQxF+f zw*^so?!cA7`Dc&nu?y#IM|y7skrgIF`G;2#51c>C9O}VPMz%~AI8nBxR?CD4l(rmM zN6F8drx3GzyTGeB4?q)PpKHB*o)F2Fk3l4iE^bgJZ>A1wc{eGjfnFzo{CU{g z?2QmsnvlrSDhchqZSYf-ioQ8EMFwV?DYpPPY}P+)c%xngzWY~?FV6hISTSXdpkf|3 z7e!rzv+Qd6)FuZ7Yu{xIgzF;0;*hlPHb)Y-#1+t-q6e4`YDnu|y5nWN?N>tqL}cQz zc8F_{U8YOTOCitV|?KI*h_ymF> z5U=|>CLego^9=3&f^qwMct?en^_sH$y&pMqfkr?@XJp+q$dE4UlhAp zy)B%iXty)jPp>w<)5y)j+*3Ls|K<%UU4D(V;3cgFa2*y-jlxaDJB*FY*=LHBf8pUUuQ*SF8_kgiGlgRbcx+u4ID=W)r@Or1jBDDY64qtOy@0tec2N=vVMuP!vMtF)kX_KS_8nsM1F zEW5PXUO!O}%DP-t5`>{?SAN%clQn(Fp0>xe8ZnN$5o5hd@gjAsYZg_cScZ5DE1N~a zb=C^u6gmGG0JN#sJYOZiDFrpK^8G`N#nRw;sNA%@rC9yplzV;4_6-KKP-5`8!+ITCr;pkBO4#?V1y9N%Htfu@UfPWD$t6^@Zj7=@^iW#M`hwAV=F z@wF=CqgT@qk1qtoALuUYWSIrk1(-a?I4{oDr1B42V?+bWBLm*&w>a(bQFHO;aA~N!UYimy%2|({oiCey*&)WTt!#p4!qVtr@9YZ_$wk+ikoM* zOL)$hUU(@9#SM{drv1-@Kdb4PLiOp7Q58b**vqfwkm_mlo3(i+EZ>07;73~Oa+X02 zeP9=0Y%+sg=qjE`#--HqHfl5#74I@jnBv9hD6-IgVmetHWp&gv{Ohr!vMRh&?kI?m zXgN<~8Rk)e5E34$H45+vb-`=>A`_Z^4;%$2zx_taw(!zQzKchUMYpw2ra)v5cM|H4 zp9AtBcQt=FJM*X{ZHT0QB-9VgAk{p%g)BjzbL13&&bd?$wsp9c((WZ2924~4+gi+k zTY^ir%=(!o>=q2tmh9rH%#> ztum))jXkocm*`Ho{(2^D=k<%>Xw*d+iKs_plT3$Y%E$95tZvxl55qr?!D6G5T@Ce5 zm`_dZ!k_l(#&~uLb|p^HOaHTYnZ|=554N@}AMl9^m=)c(07#fKnwH& z%08!seLj8`Z-KuPV3nG3TFr5bWa`f+$OD_4%>TQ0eC5X1c8!B1YXrMVh8J@X%o9qb=& zD2e;NgU3mG$~87Wim9cs(cHTt6hdt*reYq^AF06jCAxEzbZYmZN_~``T~siQQzio4 z+pogQK9`4L{OyxusrGTbB*eBhqUqzy1k5O~D8c(?n(R!T+1yKx-r=Alo@cqiRE0zHKA0dC^zO1*ppSklyazGv3VTfaP?=M0-&# z;e_C3uwgJgQ#tNaFLnM)>5c2EqTE@THwy{vOes_Dk2x0;Q?vmV-X0nDlVQ`6rv|P( zja4hAdf^T&L_Ts(D{9<^A*Y7jctNw8vsqXvG3uS-rpOVah|A3FXVtTooK>T14i%KH6(Inv z6J4zgL}F;Xa^eXOxbs%kH2k?5ZlCj9Md!yKo=o1w2e%?gWEj+X$pQHVJ4S>vq*5t58N0f8OCPuH$PT)F@N&m_g&GF2t6BSBJFCa z^>2QZ@ePa`-T4S`vH|@MlI5)i>|VL0KTsa^zJ|vC4e_2fSmcW+ZF6oOADa6+@;Kf! z1FOFblp?C;E#wVwTxZguZc*|B>W0d6%H2#yaKu6!?b3UGDpt+|c2 z=F~&Lp8O|c;J&M@-1JRiHPhDvCQ(|?l7We3iiymZC;0(a5 z|Dv>;NBzarb$#7WA`3Q%b9x$JdB5Z2i+#(VBD;nAOu z(bx3M$us$@wsU0M4MPtkyYKy5RR-!rk!=>-!awXLe$DqH7{=FO8M80JfTa)r}w zKUDcW;D4#J(7tyZJ;~zx6M^JjJaPcJtO1*f$zan&Sgn#-V0ZZ%))(8LreB1=?h)GOUY)vHpL4;0V(^hIo>J%usV{uI&0#YeZEN4(&V(nsgn=2Z zx@DrKa|K`MMK(8du7#m1CPw+z_iWyuw*K*~4E1Yy#Py`@&dq zP=Bh{S;1SJfnp74FY)JTXXDHq+6|euTUQy5HAxCN$u{IjMGC{rOl8UELTY47??viJ z3P3p;Xt3kMAdSw=v0a7tWjFe=WTYyGpwL}@EcanXGCi`I#t-uA(Og z?dH!#je`P4G!5s?Q<3N`1{_=85yT@tX22|Sm@|#?D*(amUzUa%^sKdh2`b44zPAFe z3Krn|Epy|@JC9@?#h;z|Fi1KY9l=%^O3w$OIU%+4mYO>zr0kRws9@re_Nj|U2U@`a zu?|AxOK5z{g_-P`6y#!Tv>ekAj06vJhMKiPD-T48I+++lxuK@yzk$5v(Ay>c1;1O~ z^B(Kw0-a4z8!tCwyYVVPEq|rkO7-!7nrRB(S%qxrBs4uCJrGTaYk8x3C_3 zQCQPgQ7 z2DmPp{R#F7{o&>edW4LpFDn0I-F=`Toz1d?yRpa7@f6i#ave~hF)8F+z(#EW({h*aF)pDm_oaaFj)IAI}TA3gDB{{JbB|-yn@-T0kYh zX1?hZx9^-P8!?#kwM~UsH3sCb+Y@9$5&e3UbI>{qf;`fVrrIZ4QUKLx@_rslPP1QmOJGKY;D zdY%K0h~I5pVBsY6B4TB_$rNl_HEk-*$QQD#s{)P0E{8Zia(iDjb*FQLAYjYqsoOPm z5*luJ+FAJ5)AC_&a!|$P+}(S?2zH4~fdj9fBQ1%$t|8vE2uDeB-@RgJHN_dp#HNO- za{QIvs^-88ohicop}8s?HaIwf^NE|T`xw`GtVuPRvG#PuxIcfQ&luqedRr!D>0`d# z$ZjC%_q>lc3aFv%#_*Za@4IoQL+riH6jWE6XpGw%er~5`tG@-tNzp@S@rz{QZUqMn zA%J~Z2MLQgGWFe-D!uvavS$;8J?zn0sogkfu;Om93`2|2=^ z=fqzpS?`NZ#&g*tB%*v>`T*9HBBa<5 zGTdTgd~W5Ocbmm}W^SJQiK0eefwvFIG?NLtc<=Lurx}1iK|crxwbxOk;EWMG!Cb{? zvn}j;(QWwI7n1p}7lw#9ov^kpp%eP(R8`CpIW}Dp!{pRrb$t)wAQapVQa$1-@)iB! z8bdQX4$2^2RbYsI4`m1JvV|!Lcxw)E$j<+sQdPpWh+_&`Rhu{BsaKOg2gSQa{#BDX zI88;fL*puibY@4H-GOHNUoqdV3p%urYm}pSyhhL*4_GFj!J#orDLMHJ_AJ43JF+50 zEet=$%qIX$-HJ&y73_4t26EB4nkeW_SiW(K`>kT&ICeQ#E=VZoK9D6Zp1)v^=aWUl zydx}1$k_c35zv7pwEc^cvVzaNjNnv*;QceHh`eVZb~DKOAIWYy$7g}?u^B6jyA&Br z8N?Y@3=p$7==Y2S+C3RaCw{_km@LSct)hZgNC#-WYL*rvfKOK9a;sf_P1&W;rliZ@ z@+WN=p+;;wx%sE(7qlX%LM%Q;)WOT3r!8xn`fjG~KDPI}13)_VfU~HP zWK^-Q{l4c}I#KqDfZN&gS*ONQ=*KfOV9ali9|ES_9=#N1C^Q6ZBDAEb1l)8`IL$ZDNs9y2db zIxYni?oS$qzZYhd4CY&|lw?1~Y&wY(z#tCz;RiAG&exuAjrtfeHI#qu0Ll(>YaUGO zsTT!U>!3cKVK3(U|Cl@P6;66DWA9adK|5zH15u7ur%!Xl_MWSHt{JR;D!u>)RUp03 zHy7z4sTO>Qx)w+Zv!D@?I_%iw8-2U{WqntPtW5;P7cbFE1v<0Mhw700kuMy435qjA z=2S(@svDL6@nga1T&dqnIZ^q*0>c}W^Vq-)%ndoDR)&TA;#qLM#FBgf3IO0Smb>9% z8eF<6bU;p?_4CykY{^c-#$!-cxpNn?m~+J@xWn zkSI;`72Ew-oTq*$eL22VMVE*Bmt2%L!y%^C(<#{|pmcl3&sA62JxSEnT67x41bSW!y{;#!oC>95o_ws# z%yFxIZ1v40kQwp2dRRf0_+ygoy_q#vMF5mmOEyz9cUq+@<%!_ajTYauT0iHy{M}N< z|NOHf-k>K2FDypzG+s_?J%0#D7Bq|ilpt3$JEWmUIkz|UKdpg&jpoltnd$0tePwyW;2&*M~e$C-m7|I z6`!vSE)Y9`eF!JlZIU8h?tF535WmjL>WhkQW1^INYA)?3WQJNr_@@39Yz5_Z#@*0b zzOoDUw?&8n?bwktKTi-``AH~A3bE9iYz=+AS<&(`7q%1AJmHY$+~ONGPKv7t0Mx#| z+3sQNVeRl!a3yw$_cDfyxV<2Bz#?rNsFRqxKky}+CoJ^n4~p)0rUg5Uj>yeNZ8M2L z0R~4C-x)fzrf>q*6mpN?i}4!F)SDhD1tm*tTJiJReO_S|bcDDMcjBE4Zbsxixe5zO zaPo{>CQF#vkgA-a3Ws*YeqGyQpH*w@L;3R0Gnv#Rw$q%R679bxWJ9_=>7PcSka0F4|_*11p2}lppu|&nNcV?i1kg zqwU;Oc=00)Nd9cRHBT|GD*!;DZ^88g7p(pW4Ck9-l2OTs2ji7CI;R^5k2^2keOeU5 zuQjFRrVADUuw9i}U(RN@mDo8K#mE@&iLW<3g4!nC{sX8#e^-ckCUucjca>{=r_*ju zo1<_I%dQr^&OYprVbqG*m2nMCtH>HpMMv2OzscA728vcR>R%ey7Dlz7OFTv#eS|vU zNtWe(3itjK+kRz|2Z|r+gXMHQQ&;(BNg^I@_raq7KmzU&(i9CdLw8fV|7&Pb#r)M{ zRhVvW(?J1Uw21@rt%#QSK6@p=!HtCA)ttz5pHz(1uZ4-yL=>I~mZ^igt$4(PO2*3r zeJVFwYCouDry%u#-!M=^p3F#{y4Z<8-cddJGa#STt$#X-hp6`nDL8eJbEF3tuRf~X zkUsamer;{wM)^j}1RfltV~vhQ-@QD`#FY`(0bN|coM=J>z~5o7{ed(qu-6F1(*!k> zJ^misd-}&rdUHDs2oR3}P5|5I6}<7lb(Ng@#T>X$QwrbI^P-Uv_9Hx;zC)!xhjoQT z3cYIt0SsJwW{!jD1dM~0GXJ;|OMlc&`imrbfc#)(FkG7Ml|jyU9aBhf4E1q`6UU)5 zzDR)j#u8N*&(vEf4UYsf_<8a^NmbS9h=MlgOPb9m>M_Ov0;5Kg&A!1%d6M*ut4s_KE+jLX zUt3LiI&M4i?<%j$;YK<+V8j z$D-M$=C)Hes-8x)uZrC{%_r19Ot5UaFx<1toS;Ynu;N~RlQ9%F%g6Ki^A_IU9a^yt zj78WV)!&PZH0M`zI+^H&qAhdcV5?@9{9U#sbhU_GhMU57VZd3r z5M;n&8$xGll*LJiToek=^JP|MxkgN^jbJ_SPNzZvIPqoJ0h=7d+_(qf{HDB}5{GhL z%dWQZpeUS6#%$KehB-Sh8kppu(yRoXAO9-4agr3M;jsn3Tw54zCp0WnGRV|U4p>G* zyZDFMyxtwVTs4u=_m^BC5e3xzXk(kj{5@LA2dz{%fKb7;Kagf5yQcK;;<`x2 zFc~Qy^e39;8WR({;#gZ8B~`D+7dJ=2<=>PVi?@^|yK81)XEt1Y?EB#xHfzrGmOnOR zZZGZ2^Gh(bfe2olNyU<7siH7`K}N?Vj;osg?J69TK}DGXRr3z1B#ldz&*VPP-)f73INZ*cCK`*8{_J z&XfjGizefAHL5Ok&-ugy8v%0nfR#w{J5+eH)+2tl1C*smR~c=n9yVm1M*W4az;ae^ zhyzG#-Z`B}K-%WVIG-n%1zT!}ErwxMzn8R`Fm>mi=_j}nxYX>`H3jczJTrayD&DYe zgf}vciuMO96{;ilPL;SZ7~ZL6)Nk1M=boh%$zwm8!Kmh%I^YG~5P`IC&&i;aX@&jR ze{GbQQ)>5ewfmEf^bHos7mO$OrNA-gz|vB)>TM-J~oLldwGI3rXh4>#1Pr3aVFh@uT*~1lp1lp-3K{jwKs}sig1| z%Pcey2yovA&v8oF<^DOw*IXnAwf#OH+LT&}txF?Bt2#zQX<|dklrl%twuBP}r{hqW znA?n_3U2y;nHv;w14)PFmTxi95KZXHpd=|}VO-%Sh>*P^axeqJRu1^|@a^UcMc3z? zjD5Gldi=@KirgP!rCpDRw*l(u-vSm}z)e6GBfpxZWli!1Q3+`D zyn`HBqrg}74xD}2ey})rX%;Z9D1KZvCWBt@?MT2$;dprap{F86-=rPU;qdz97nF;@ z)jk0)cB2R)byj>{b5Olm}P!i{tC#kEq1XO4Y z-18^ZkZ{0XZI3f-_?cGz(x5oDXe3Sxcn;p1P0Om(g4!owtAyj_7u$Xh{jQ;E|Cw#) z>@2BuU!+1dxsiw!O*HzRDq6J)XYNJ=DL#wddW+j}gGCHcgg={G0O}e%03>{yi@fH^ z(CtBp4YMqs)pGu$iFh*|N%_zn8wX*){G7B5+d7u)mmb{w&C#n6%VA?6AW4$L5(?zG zpXrNqj!YFg7sqnAuR&wlN$UesYV(dF{zmY0jikE=^bSKRQ3GwHa22&ugNZcXV-xo( zIP^lWvXl}bQ_ZT}mYo+nrtPhY)LVW48jqkEq3yLsGO^DV;oD0|L}Ml5C%*o7L+eEq!V>~o zbHSPgHiB-@AkmFiJ!tUduw$YSHO^a1pt=M8FWJ}kt)PcDnX>v6Vn^l=JNM0ac!RTP z3P+OmZZ11b>)sH5Q#@cr&AA0lsUv@BhAqH48ImD)+PGP&)Oy`{7T`&;#WxMsd^NfYxJ}iM)Lx6n z1?8Z`>mZN|s1m|KQY0*~r@vxr!LUY>Ag9_8zO56Cju{t^;WEbc1v7VK+x{Y2&Bo@V z`68GRystrGZs2M~HhuSKVf~f2t(WzGjYTWDC??vc&tV)=WINK>k5%ymJ&u#m$Qdnd zn*^B%1{E!`c;)#@(M&fE$GxEf6dltHp?ir@Ng?j@4CxFYuXf!ZTj8YjPy-E+yqA-` zGEsZbd%02kxsIrza%!>sZ}y)k)nziE2#JPUkNrv=glhvC8(u$<3kr&+2v$DDw@hiY zwZYj|gbDrT0C0=|mc1LK42H2TLH0?${qaWy^*d&TLYKIEX?B80xsyN?)rFrgEz_V_`*}D7Zm2ST&xt|c}#Ki(F1$_xG5q1`&2y5r6gv|M>McMy>{hHT-vBo0{ zoGQg75eL-LI5whHD9?;@6suNhV)g@b;z4Yn#V8)j6I+Cq;pJZZJklsUN*H|8q0XO}$dNR7XR;zGQFwG0WRF+-wuoAQJ z!ra%3pI%h6%T_l=6Vk#Ma{SMZ^r(ko zHu>w)OV?-Kvfr&B))pX?gF&srImISWQ{;Sk_pDrW9`NHI@0_V4a$jn zt}O~Ot|VJog~_IVklR)lD;TR#6#k{+fq1&XR_+C$BQDK39#BLhwg>$cA_JA83OTOi zfUS~4)%;NL&UKSOlV#t98G)dRx|dx?r)QQ{HI|iU0~fWaW0jowYteXs07lH^WTBHH z7Ed;9$Ume--I$Po;scaPs4|!mJH+^2mhWIb*5qu4CaZQ0_IcC(iCtQE2l&Gu*)zHt z5YF^Pe4)jCzWv0MEAj8J9XzpVO6=G9xP>510Z31xpJ z%XUQPb)o=1cI9`H0opo;4=CvQm#In~sI!ktxFq};nr#mUS8M-7-Sr{lM|p3faaC?5N7U@OSz-)!xbIBG;n8S(d#dwt9KOk<(AX=Pp& zSjDWTdD9(#est*Bhc_}q&3l*SXg>qgW00`W^B)eS{=q0y-8gUS{mz_aRtvX>b;1f)z0$tR`JPM-KNbek3MGHi6ewCpey8lYQJFM-zVne~ zZ_12qlj9dJ1hBrqkzQ9WpR2DXc6L2NTt06pV?FbRA9!O;JxD`A4<8J_b4R&nMvQpJ zY-s-5TI=&xI6)X}-6IB}8cR6QGBvkPc&L2T*AIZ3Ja3c7%4Na#WniMOv?qle0Q2oM zC1NvV)RSBqMj`>@U|m3*QH)9{3*5@-N<8+|X1`%uaAlM-ku!M*ahjF+o*?%pTumv2 ztgcP9m&^w(m|S11I2>Kg$Pipf2vQELz=bgE3DjFXq)*GG&Hf-GQ#F)^tx}1KC@8da z_U*vH1oC0dBK|RrG0=f{=k6^Y z17`IgWA7;LD;S+b>GLlAi#tlh%H+1Io3qd@P_gY`Hd`aoI2-%9ob!u zlnYBH*S;)5Q$o9u9h;-WX4b_#2`j1g9%ffWWm1eXUva`#Au(P0B2p?wOFkn=QPdP( z3|cIi;B6_cv#RO)XEAoN+;miN0;3nD!i7I{ z@QTTeb2Ey+yc*~T<*jTQ$y5qOXv&O+);_g$x6lOMXwq#YPO(u zulJYjY5a^nYA1vr70D8C_9cITZ&!nVQBphn{uLS{2fYdl0V5?d2`kchr6nx$67Gvi zw~CTUS9%JRzG}xw@X%L2UsDpEJhuD^X98y&wGMg1C>Zp;675|;^2N#|Xjs4p>a%qs z{K&wYk{4~bH~lkq7xhGzavx#kew*5<+w{A|6#ZyEWpUpWeIeHC=GC!oU>O(9KgQY zJfaOx5phoS8CWRp(&7zncm^1wOu!r5EzsD*mln{K<1@P>1y^*HEEbE?C`?ZpHM2$2 zu^l|f?flK|Ro)DJyH;^08?u1<{pLEM&=w3Q*3Rz&0JpDfCn!rr2V4?ki^76srd{I& zwZck;&*S-YlGr5)(ZDiw+eVE1K^jENn+zGOPz$8~t%aGWHB;ynTJX$=jiEcQYmef0 zUk7lDSDawMlOM%GNO7Z0cj@Nbeh@^2XO^x0GnH&uS zu7y&a-L=KIsKQV-ERe5r7VK4hb-ygA0SflD)Hr&L~CB_Oi>uu0i9&W zg)IPesQmK3f=4e*^oG@;q8#T7T!$dm;F6IYYM&R=D_EF=g+=MJY1)6Wq5H=lW6l+sG}L1uS$WYkcBY$I~KxYQ2< z&&UU)90RvfDr-@Gm}>OlXOCp9R7A-^`~@zX@!M8=I7erv-QBE7L=cy4u=xwijYzF| zUe!>?4pX3g&RvCc>nQUkSOp_kWK(#fOW_ddQcH|+9OSTvxx9)fyqw9zplG=$Op|5$ zJzttCAqR8y4}b|MO(*^HvauUT;4s))uXr@UoTh}-8Ms&iO*u6@!4V*I5YG{qS`yG1 zmdY3l0x@q6e1b>JTB#iFF$-j^icfgnfKWDyY1|CnhClH6fiLKD*Z?~fD#4L7W6G7K z8OV~LQ?cS!Ql>2yT3)clDCJ;iT!(`#tyj&uu!`7S1yW1-XyD-83>`W$}{SX0KU@PC(VFO)%k@tbfKKhkl z`fnG3O%`iqJTr|nrn5o1HiFg7lKB!u;T$ie(VH;51;%^WcbP$6X_BplQ`}Wc*i?Wx2s@ZS@#uyx=~OhVPdxX>q9lFiDU0Hd+NlQMOIhmN%*)u03N&-Hipg=7Rx!C91xTBaNidY4*G%};7r zP)xt$4y6e|HRrT*{3?Nl(6Y`^yJf7!9Ann<8kJP`0~84-IO`(cYziT{l76L9=qHYW z!Umu*&tnvXKLf8prN4Mev88`W6~-s|<F!U9U*b7jGW=9sPZ~}VN0+~D zl5E^5GDTTnl?vnwtoOjx)gIJxcE$?$VMDNDSfL5$9*DB{HHiVC3MOH22HgD02uykT z!2@kLTlaL_8E#P@R zs(Pd7?Ai-4%KYuaJkfg#rq%OfbwQdSp2V6{T<8^ zCd~yvM$@X<#PXRR>9ZBD(fr)frmudvn2N$Hh%k~!{b5qMr+cx1foWRJaeJB1&b$L% z3YL_6#Qjq6P6{y8p{j<^7`c{BIlTUl({7L$;?b$qmxxW~G$~^#>ggu3JzhKBqSDL!D zIH>oVI~}-xpxF`(sY;eWZU4ek2XGO)!-Rz0bu>c;>dz~PLK++7t-1q;d1tTy8xA79 ziw?kk1k#mYtozP13Z9Fkt;KT)Wh!?+r5oB}gm*LQyCXXzgjZ{%j>g4wM7jU53WCM9 zFPb%4;S>XVthvV6bC<)RF(D7aF+WRvAQ|wvi*+>=X%QPRX*V+V5SCxZ9&v-F*RQa& zP=*SrYh+&w64z^&;6n#X*FPsXB(yKqy1@y#1@z}3aoS+($3kJ=a}EvWf*BAFB6)>@ zeEla^Em+^Y=G^@tngS?!++=SGl5B(QwN z9-lG*R@d+E;1J2l-dESTBi)E-?_QUrBwUxLkg;bH*>4Hj4S_!CsLR%`5`=j_L?X_^ zf(eB@suHSg1B#>Zw~cQm!H&W!+WqdoDX3y#VW(*FI<}79`Fs?O**l{ zrgF@2$&W|OhlL|hMi1?0g>Lf()&8YUpqMkaM#-(FC9AY~#1srjk!0#cnoA;XTK_-K zQQEEU_5_%i&(Hlsd%jWlaH>IdZqY9Z zg9?idk81SjkfcZDO{!4BTXm{ark|1$-Csk8?is65FjFA$`mb1E@fHDQx;b-ozNCTf zV%>$l8fTJ)6{Px~*^K2F`}2upbs~;PJPM%;Je^Ci8&U>MtBZ}oLy4(3t@e-XCMpB# zL0QEP+@0BaIXpt_@`9*oSi4BeK5bXr0)JW?>!38$kbs=oiUKb7D-cF*&c5$S7Eakv?Rwo>DL5N+ zc&X8n7C8tuT6fPT>$OEV^>o|HjfA1YCgcD@H|+=tydJ@A#OmB626&hclBjH(XB?5w z6DklK$QmDQsyd}*QU2bJre~{9cHFBbWSmUBm?gIU_Mh>`egaKu+~hDK;){KXfQYit zV9xznMpZ}cWTW%PrqH_LyyicFlVEa?O<9k^c*SD~4K6g5=`AX83bL&RHZw!*mdtjA zLCA-<=`*i6C2^7%an^219^SKdDw>EXv2*23)zzV=?@7p(2wzXL?h20L@ahx|pXsUahs6A(O!9u)2$Y9t$F^O2} zi>`_abwyBW7fV7KWTg`L;Y|T&<3e{&E8P!%F;mfb^v01>a8s^AsT5YhJOZuUL6nvb zG>9_#wT$3H(qH|RP{*m5mkKZI4a=R)weEQrhC#t42;ws9BX{E58rxjgsO4+wMir_nuiVRg9Hs?_fCIqpGj24w`92~@EK?lN2nfR+HS^j?e(d^r&#Z^(_*l}c$4Rk< zW1RjRW#y$3CRChgGZR%PF<-G5*$FG6tQZI%_pEf+T4k)IL6XfP*ikq-n$hiCP!Bf= zL({K(1REH%4WeVctlOBH>s_Ho)_257;qbBPk|QW3Uqi32=!GSFu@&NFB{%~{-;PG=I4Y z9UOM5SRz2## zZYwR%ZFu?T{2LE5FZb(VG{JXm3>xC$C(JGJvJdg`Tx0L~)REDAeSH~tim-^*cg|?r zywNVywslxu2wXx&#yiH0RM|B)+`Vpx=M07hY4scTkbKdWpx9?=FkEoV1#szKtjEYX zsmX96JN#7dgVT&E2qd^8J&bi{+?h@vY?`~{=!|&R@WfhA?*=XVBZz@3;%eEG*?CaC z1?nb51_9FGHb_-@ymX_D5~)uW?4XU$=S2^}Q|=NUN zao|YCro30}N%;!z%IYi7t77ZS&s1(&3uq=59vb7}RX2?ceB)E?^wv#OS}{T>V^3JI z(}NK6sVC=?b#T)f9d9EZkgG^jJF+t#NSl_nCE5VqmT^10(ZQz4#A>v40< z1w>iyJ}Y)EN*V(5x26j8(#H(BTVd-e)t<9k7VR%$mqF41?KUu0YS=xfPGx2huZHDw ztfNWRe&{|V0HelbzhtJ z*!Q&ZaL?<&bsE=q!sG#Oq)%Hjg>j)x7p_v_pW&m{=5^NDUyd`0ar?3Y z-;=QmQlma(6|EQck9xT(%|mAh#UFgYrQ48vC7Cqb^(+fc1MQ_yZnFb{B9^)6{_3fB z$D~2Vv(*U$oGhI!F_*qjO@n2cN@Kcl+$cd(nX?VEM@nS_0n%G(XJ#or5fj?DLd;EJ z>-y%P1Kzmprg*0>{Bnz!Md(`cLviet!~nE5vsausS~o1d*Hqx!kHj6x6sK65SYsOa zMH;#u&$lvL;KNj>VeNLa%3bcpyF_!kRY&K(xs4iB<6E5UOSM@ju*|@F$WV?q#!K|> zOfYLn^3NnwI=lQ1_)kZg@(9XUi0=gdpsSm0fd(weKP6 z?np4FcJQ1~G#k{9qpR?G0$~p~1K(I#)n>+PBIsTDxDVc>8j194h@cpM;=7P6|84+9 zK^H(xUTcAY;_haFI~me~q4l~R5-tpWzwJEhB}^$CCnzmtq<4W zDy9NNc*H z!NdkvJG|6jl;#~7CFOuLoh5*4k}LHvI^kAzJX%^CH$(GVxy{FQ$RY6AJeAXvq%yrN zvIgRgy53rn;(23`fq}-$8(^ptT-r5x3w_P%aUnzzn#@h!-B^#=dA%|)6_(ppaY-w6;;++5dpSN;U>Qrg@8p>FCkg`rDOCGyeI_6uc^lY!vV6`G-ct% zBOY+m^ajMY#=<)htTJfpn?_QVND2IB-FK0n-Sh_$8OG{4=89yFO`IVB-I^p@wYLA> z!_aq5o4Mf0GTYKM*m~A|^`lry0_OULg-Lj|gQh;GD08T-Ps!#dazGEBgu!?HkSg5$ zbG~Bdna-`*@g*o^OGnX*E80j9VjBzM1YM3Z;&~?s=++=ktk~irs`wPI;9it_EOUJ1 zbm8K9wV}8TGbDDYDZL&i-u=V0? zwNbie`^`3&m6Vm_5q^!7r45Qg#t`GLhjj(3%Qp%ErxBh@`!rFIs63h{aHAqcV_7Q- ze8rL*`+~<;BDoAwWD7H^2bj)Bctr(}&wBAU&2T?!sH)vN<9#J*rgOi==}(|o8WweP zc5=C;F)t^|iQ=e$ch_o@ZPl9mbL7@`2ggyAC!g$?kyb zX>;z5ekAu!G7<_Rsj)-sqxlH212$|`Z?nRtKoKPu(LI0uoKxu=wOMjBBP#X0Ai_1A zlig{6#8T}B!IkG8Y7?0E6*L>AC|I-EO6X#zkx7hkD;3sOMr^d4xCF@JlOf zRf*Gci*`{n@L)7$RfdY*hs|7o9+TG{m!=X@insd2A}2Sd5R;iNJ)0ngW+*cWwZF{xzf(f9p07}dDm$Rfxha7v0eE%pw80yBNStxtfcKk(}PD(9oG;$ ze7Ei3d7+r+?!Nl&90Rp2%ega`7qihacEe^3L3^)-%^togLV;HMNwuf) z8#LmJlWj-J`Ll_d{Vfa??S}?|Og?>=wH{v#H{Su;MxVj0tAAmF&CoWCr333)9j0Sq z9L`EVRkx6S73&yr=kU^_=dG+u41|LRzAo*oKh+ar>$Gyq`IR}NyWW9XzxoWxG4eLE z5Sit-!~>7tP=;N}AyNcRqvv!ZJvA;oV4tFNr8IIt2+<1XmW1ZRAxC;IKq{@{57)g? zuADgEN^u}qpPG)JMTq4eV6{Row!^>td|O!9cisW?^&)s#3{TgBK;T<01T;O*j~X!X z_=nT@l}DwY0j;YoO;j6cO& zMXM3DvK*^k)w|I%Qc;1rewl9v81`#Qw4M_ z659f#`A9AL!W!eqH5O)3JCUp^Cl#9R+|prg^(+LCQ!!dr@ksQb~B+HwdV`U^zb1KTF#4dFZ7X5NjnXqg509IT*>t8@MW}$bAzM5 zX)hL6d||?AE}a&a`$d~VXeSQ_OieWova-t{w5yQh3y_jDZGrg2?IbmtwhB=T)v+1` z1|~gk5YomMf(1G^UR9lplr?XJWp$~u|rT4puN>%VYLPCV2ho~*D@CF3QeuNavVZh>r zNb!MF>>ZgYgDZ6Eh5)P`q0b!Yu)dokPN*iFFSxVFar~5YX>p2l5|8qp2f+>M{@Y`5 z0S(Y#Y3OCm2^k6Kkcd@4%+s=AJbgI=Z}3f##48ch$9?rgkx(HFn)f?KBt)WJ&82Bl zrn^duNqx;vV#;^%z-LM;ySd$p(PU55ca6F#MG0>rUF@ZcD;m#L%ApbtU5U%8TAcT7 z`aYi2^5d_;F2m@Z^|#~L8C^BQA77b;h>+lAp^R;JX8{Nb4s1Fb|D*wAR7q}-X=F+v zo){xx^McLko&K=n!X_CX-gVEfRYv-5KW`NEBqqith-cx0_+7gNNr`IIC?||cI632k z&M5Cmh7ra?0*A&P+3}pukdTHRb!&(;)u~qsz>s!KTj?|5HJEEwbP?0edm2xF(ECW< zAZDHMcrb_BPG?A%wl}0MAp|@6vpp@|5v`RZqHPXTzI!RO{D<+NBrogAb@wMUu)!f$ zpx(qYNOR$8AzD5tfK^nPXga+aKBj^0D6mlDX(oZ(+WJGzRb&cYUq~v}y+<$wY3YhE z$g|0z88IR%^S|8KjTxt%kVCW-T6-cFwl6MOpkpWgdFe|;};u+>Vfi0 ziFv+ELG&qlbG@9+3EfR^xq6xVD;N;sB}4qwL=xD}xPKsWA>pYK@DD^n4xj7mmL;r{ zTa)(tQKgZN9*`MGO`kap!lc*&J%&(cnbR`Qq4~muFh;`;%^>+VHn@kaoEU*7J=FlQ z=6n{*CzVcJgz{3hP{j$kcd!IV3Kxu8KelrxzWga40HTDPQfQyU&fEKh z!?RZeqkPX1!2wbvTGaMB(a=rF*7q_l*MGDwM-50M&Gjk*KIg>=ScQ(PV2ArjI<(+( zfQ7emqJpT0~OUn9PHOU*$^}U_C_+^t3 z*Cq-ZlA{^Kt#Ty9+p;*?u&>_I)8`qdycCY5qeQQl#?KUCM$KXZMYuJAG#;6qlu4`HcVt67M zI0;>NF==xzxY%(;W#_wr0x?Wmk52_t0MQ`?TFRiSE;4<`jugyQ|DZ|zy~GHjdZDKf zoPI9dc`%R1A!#ug`!G2@bCxwENPubIGLe!r`y>1e;tGe{>?G62~ zT^vg?xAQ8<%H@6@3>& zN)ohsNRb+>Lm%;5iBw6kU&Jup8TxX$Lro#RW||NN$J@aE`9-txSq@I6LEDi~4dzq> z_$EC@vcPpglntMx>Br>~N0F2{u*W%@S8suA#U*j(WzkkV6f1_*y@B2=2?O#idz`mx z7j`_lS4j&5D~%bfXd8znLBT+dwn{tp{#~NhNEd@rz^tO z7J?T>NIxMq=Ui?K+v1f`E7IK-&Y`&1xg*D&Jt&roW5K7Yn+08vgEPfEFR*p z_9{fp?p_qS{b9Wcc!+=~4vI1L0vH2#B~~icZbz%&h|2_!*Qtsd6k)~7Sn}SFzfrA2 zhvNOI=C5$|v#9oWcD-|SCf*1#Y!~S0(%F9FzPimsYVetR_@uSjJn8*2j5ELFoU1!I z6qndDqd6eo8*|^&yoOo2Q#ylpiwopHa+@=Ja`WOyq457b>6RSAGz1}dIm_}K_{Vh} z{ZYM)K0R?9&}1g=-ZDx!wmUMA`%74LO3jann4=p=$CtNi*Y|Zcb8;U+<_E6&BvCTa zMpGta*DUcKzGyIb7NzH@@0W$RUyK`H9gy?+7C`9QMZMqP0;EN-c{b_H`p_#5g{kasAwRMH^G~`GY=mI18S#jeU5DVUVfz`AA^|LG-q=grM51kr?8L zKwae-i>^o<@}eO*97n|&lkqyjF*Vsr@|`Q)k#-)e`%c-T4wJYv9&8~JhB3Fw<|$Q| zxmvMAx+7OlIycb6+E!21Sp<3@fP7QibNyPHN(edEnjfA{P*JL=ETBR5&6FPzulrA% zzA`jwXzm(mb|7>+jw zTsW}#mgMOKdn-Pd4%l>X$`Vt?&$N+EB0k>Z`vHP=oH~Lg zqg5sQBfG9U?0b7?1dYTl<$OMKg10a+FPviWkYCs#yp0J)w&#|5Ko4Yr|6DVgwKLfP z-$sd_{IN%uXINnT9iWFo7RbuF63CAT6>lBA*cWu=$rbPAZtnzVMPqF&@v-bv>OOO{ zPOY6eW08VxH70w9Y`xBtyk15zLnF3=fge{KQ9=*5wfQznv-Uf1UMR4f+rBdImoEZ~ z5V_@KBn;;*2)gCD?ATxp?;#F$Fy%$)%a-h@2g^rOFjx)}#-+&Wg#j3L|Tx7}o5xI*A3n5L|D+xsZ_MqiJmlw*L`|+5t z>^2JvX`>&LK4?iJ(#1;*X{2mOl-OGxxNMWtJ3f;%bEu7h%J;e?R-dJAk0)9P7&S6V zz{e zMWZ9*%jn~0_T#kzI%=29rM@)Vu$sqkRL+qMVs|*y)HbBFbsNjuZEYE6O=UrEa3pLn zPPQkerGx9@8alB%?pV!1I20LPD@1erk=eK3_0T*ZK<{Y8YHIEz65g5LDO(tPPwMXG zi?aB6uTf&OByH#K{u1cBo>4?s=r302Y7D9&j8zr7(2ml%a5jg-CEy)gnS=HpH+hB4D- z)4s8Zs%0Dkf@Ra#I_be7O43Xpm(^9eg*+BajQ&dc2d6jhrs)KH9$g6X2@*~bw(8hY zv7*aYBs0f<9ySkl8mf&#MYmu~?36No6({2>}pV#yNgGd<6!!V^CT(x;EOqpJEWDM=*o!nf4QS}Nk}sb_h4ctIrWXOh zjOTpL%g%kPJiID{w*REHXkpza)#aFH?XzR16*_Ay`6U0VSq#vlR3ubi`5Qq^czVPf z_WE&~Dmg6mQVJsa3wj3ogRQY~rw9K6?r(I=k|^GVd_6hSIBLof%8Qw#dQrwxP6qjR z06+W%{Lz6Qq}9@Wp|d2WwYzQu;dwyq!&KZo)m#Gs)cle`p>`retBYW%FSk-Wh;fPm z1s5DJQKP8~#+Z8GZ=~Xsp`?UhZu4Sc0CQN2hoM!I@iV(ITZs7ng&IHHHrZ)!Vsx0U z{}xE3IZzGEYn2manK39@U1w#mhy9`|kS?v30=O8$W&@ktzQ7TGV?2{FG(3kxd)==(C*(6eW>TA&aud-qMR*#`0It33wcEb&P5)l8pC^pE-is zrDmS|q%eWg%<6@SeE|&C=43z4J|5889u9Nq^YT+Qj-rO(B+PwQ%NaJ>i|nrtU?xdx zlRKP4!kbo0l25EzLYKv2Gd^W<&*w9H>i7KnNG`jT*#xy0@$DPF6#%LW86+Yd z6YG43_)-vkLN8&y2**=b0d-|L+!|(5X|c&kg*RtaB_%Vc76;*@og&z1vqG(S(et!- zujEcL{3Ot2PA7JM*$VubXfKd3bM>2e7!9RI#<1keLf3Ks3HgN>N&@RKnO0a#I(J}W}?AbWK4h$uPWv}e$ zx9_Q3P{kVcfwPOb{VYz!7Sc)RI`m^&lP6(-W=W|;FEH{0s#(wCmorjJeee_>lV@u~ zSBjFF)|&cG@_soID9ue%1jIkSbHv|n7A`-D5RY_It-V%f2m2HqD;eFZfy+5`0+omW&Xa!33%rU!-X@Vlp-Vfl%kc)8%k}yi(R$i}`ok8?zfxR^bM}Dy&KoR!EkP z2DuSX@Ynh%g1c&r4R`oU|1=cunN|Ur%ZhdHi!5Dx(H`Nl`pYLu-t03IB#`#9(UaGEX5Mi29D06Ds z2D-8BHdT@Y?AtXMl(8XPHg+J!Fidnb#h_q02=Sq(Gtx?*?7Au>8q_~yo(J-+YqZkz?fDyal@7`r8Y>>DM_Gy6T|7Qp|s6?#gAsm5Pad5v*n2Y2@SeWk7_ ztF-Qgv@;sRChO0zMlRwIrBt??I&dO5Xjt|8VXBv27Cg^fA(Rg~2BlYA@79(Sb<)0_ z-dpLJq>z4q^DX?}N}^9IDD(-L+=+szu8AP3s0{lM9+FJio*)E{az_)MAmb&-Xzqsf z_4`j|t~nL4ZN{04$l%!^P649|A=056d#N6lbu!#hl1TKG2}OU8xz(b zk#P_t(Q8~l>B5;IP@I@cOFrK}?7J?{>o7K`tKq>U_B}4jm0d_QIVUpVU(v`|2WY3p zv-_%RGGB-Na-jA;>X+w%DpV)o{&fZ{Z~%cNN#vrw2G)a8&zM0{g-jM+m`0nY>&R>#=0`7E)PRmV8n8(dzA^KQ6(S z&{;kkzRQL@M-EQcfX+n8f28j{bN+ekY`z;=&rA<2S7{cC#0QSl4jA@~5to_LT83Tk zr4Rm!(lxx;p4+Ap!{XORi?tZ&iRbM8}jh-H<+_*(cXr6{^~uQ_{TD{*O8R;dZOoR-NQLB zb;jl9eRg1&o}ZFX$h+iHYaAB~p4#)b%Pv#+uzq%+$KQ|-J&wz>6nk%1+~N6OT%S;h zcVWk@yEsHm@2;+}MtxTFYPV4m_otjp%k{}MpdCjukl2-+2ki{sB5}F%XY!x)yPs@~ ziDCO|;VKXZntt2tGXNcZkoG;bMPiSG$a9g0z049jw@*mWP%U`%3}I~AcG7k*bHIs3 ztZ}}xVa;GE8q)5&y;s56M=tMJSEZ(=ro2#-z(OdZ1z{+^iCu>QKf{rGiBPCOf7R~L zU$$6~N7jvQP#X(|`PtYDw74--r}-?|Bd^TN)6+e~6e1Il6ff!9f-%o2$ivKf#@91R z^l?dny?;3RFGpDsiY+*5kw-h*SYM4FI+ZPidP<4~!-ZVxjBX7ea~vrH9#F5eUjiL;i@;E6-O9qSi` zC){~UdWjZvbDB}w@8x3)uPU}10zX-hL}mUfqJpv;gAO@1PM$zg@dq8B=jhpY^ScPU z1M#y5S29cbzG&2%DLmFqJldL-P_oocU=f`|0fPh=)$R^$wZeV}t`sMXrBZ=maJLk5 zG&F}}H5Jh1c{LT0E^~c=9615mM9w|;;=t}A&MnIiS$Bbr^6LrR&BG~VE9CbB0EbJN z`Gfly{Pq^%C?m_Xu`XA74g>EO@?ZL>~q?0vV8`xW>sw0rA?SF*oN z7ID0|z{?!_hxUvxuyP|0bdIE7pR-;=z3%oVh_Zt@8~(WZBe-QKZ4%KIDoG3ZxT31v zrwUtK29gaJetv^os*AdU_Vvy{#PVqheN)4jx4BGDCQF`a>s*e&=^{v2{@ykv8MwZ zQV~K82;MXw-7>$Q6#O-a-OH(Sd!m#m9jBeBvZqz4ch&VAx&~myHhKtKi>>;pwkmV) zOfkCt0Yv54jn45iUDT0lanhX8giVw%rX#qRe zHmuhiVB_Oud8WE?G1Zq^gy(`c7SbecT4D%uPW4d4X#;!RHQ3`Q=1~t1^HEa8e z1w`Zo3ZB}a@a?hhg%ZQUt+SsMkkt(4YR{B+wZK3tKdR9V#1kN!bJD9@n|&Ko>3Qkc0~`mge|QI#gS1oY3{>?D+nO7fY;x7Xg{~2 z+xywIm2L`E13_6h(l$DYC#OOa9?%=>@@O2fQ78Kl6Zt_MLkLDb?kv1AIg{XV%*74I$kV%~V@l_m%s4TTs53oWrjs76bip+^eDFV|J zB)fN#KbVjv-bSl#b{jscankdfq?32QU}c_nV&gpZb3d{eT#_hsY`!G8 z`tQ&qkb@qui{eq@$>qT~mVw8DoEpX+-exB;O-mITeI?5;2_7fdyzR$ak zf!8)Z6DQBRUvqymXhHZ$JnCnn02dPt25Ii7j%t#246n6?i6_AQpOAl$9qhaa= z@qmRmA|wbD#JJs^mr^wW5^M2~g>71OQu|hE#{xvl@iv7n7IxMnH2WYN*y9)qSHwYK z(V&!=?nw&@4OBuMF!QhX@@D~kWXvo}=we9fUQCk&IGNU{HoY34yJyTUEFNMxTa>Vg zq|&INtsEya(si{ZdQ_mYPtSAecIw*$80P~>M=w9GYPHKR~Yr(5f5fTz1o*vKv_RV@g?^S|w z8b@ESMuBAiqc?!qzLD`(Ht9<#olX4VH}poGyVu&ru)3_o$1al-t-jBSjyYeou#MKu zVPiTQdCJw)i_y}o&n6;qWTZ+Mi#0}}L9uzJyWB098{;6YyqU4@vmadN5bwcPvk}tT zni^vGdSZok*O4GP3h^OGO$!(=RcD|Uv+qTs8qGz1jB}>X*h@wRpe88wc`UCH^{uNy zHx)`FdE;Pit}RmI#dq~0t6n^t&M@OHn#EDOH#rK1;j@z#F`_I8=XbL}T z@V!d>U2#Z(^YAanyn#B6Ihg%(sNKnUY9gi%B;vvtke#Q3U24S}$TZr@&8LMkC4Mjt zZEX9GOFy2;JJOV-iUh#YmojU0E3Eubta%Yyvd3tR>Cf3al;0{-@T!>~Msr3o;SZ_m zIzTNdRAqXZQiFN90in>eOWF^Fh-y{H4xgr6+gjPdG)P&$FV@75osAt$AJ6{Pzs_3} zsk;HyWtiH!ecx4rmt)ck+PEo1fC>Shi-}LErVt?E8bUpAF}8()3|Cb!fU(CW$e@xK z2Ru$g21$gY*DK<81DF0o(%xClGP94_<~}An1N$SZ@ppL`_tuU~>AW|B8)`m3`9KzS zezmG2h;aS%R%At0PDlz{D61MG+W&U3Pcsx6o!Cy2s;{2cud5gwFWxbh07oDsFy5P# z4hn}jDkg{S&Wq|hD(}$VHJ_3FHX@lyganTE?@{5o&9F3%5l1ZoQ9R1%Xo@{jnGE}1 z0w0*I;;jcunG>F>d{+yB*9FSTPOFfOMuhF&-IB6DL(W*{=^)N+RdDD2DSfwW1&oQ; z$DR^wHvS$tZyPiEz+F6jbiZ%13~ce(ul;rEoe)*_O00DV=|7n;qn-`{q)Z8#;XSzZ zGNNr8)r5sIsW7Ok^OeT3=h2(;g!}Vbg`2VpGpK3Tf}OL#1m=2LoUO>2%Zuv}*EjL* z8Fc*7l?N-B(Zh-C8P+at`^ImbQzt=?08w*^11LNSL5tg0LYN?>BA&8|jn^TyPvmO<3&+>deD&P!{zu*b0Fd?~we^{Jmed8B2Ih&NE5_*b70yju8TATZs6Gyy_&_Upi+& zmcVzhqAggD_oQ)89JT86Y;0`Ec@QN>eQ~8fVgF6?NmP(F7Vzvv{Jv3-q=C>= zl-~F-!;b!!-?atWg#1_kkbcPYR`6Ef-qQ<0221{&*vUSHe77IBpXZ>|CdWk~{3-0p z!^$9Bs_V6bvc}#dYiC?B2Zb|MN2!zVhW#U&E9BE-00d_W@c_rA51kop75EGH^7u?r zo`ye$KEovkk&mL<^k?l>GnxT1{DZ?Q{|~1yH8REL_pmo^MF;+O1nReEZE+BPjjcbi zp?;j*pSYVQuHEP|sTNlvl$eQN-qNk~Y~s!#VvLkSRmPXWKd;V)j3)NV3hcS166skl zE6uK?b*F73Msc53D5JH!POjS)@h8izKkadBb;5=6g`9_fJn9@cr8{K*Lb+$R5H5h? z4Ej1X59CW*?-bFypDq6KQtb9}fP3Hmzd|64;>wV%wmrE-=BudMnx6(f==IY}fMrm_x(ozX2Bx}R>?X%9HP5n(Z<;aZMDxd~m2$>pAFZb8 zr5N&DyUHKTPMQSb(uHm_vuQ{l+B$A^4pKQCKKFgVQNh-@$&8`g)9LdcW)X^)gF25v z|GG4^UdL;rzeArx`>04EL=VS8OLEDI?7+Aimcoz6a3gC_io^MIMQ*+-#V*~e3VUWS zIx=RN%X{H{Cz6&5x`G`AI+!a^yWiK3${<4+$IT{**+g7I55BT3|5lB(Vbu+IFiy&s z9%<~N>NS~6l~IXezQ;0+_`anKXEbniV-|ZTqu0@l9g{d=13HLBPVe1=qvedrW;Q6+ zFZUi}Mc80JUF7S~h}<__I)DxbT&vtf?IYZ6BHPjrT%FXNOS%nn!CFr6wmj-$8n{*Q z)STe{VX$#8m*Mab9-E*#%joayk#zizUu6ngao?rByo4Wml%*c=>sUsYir22(=LMAhOqoqCP7oqz zLTS|9yi^YKkE~rF;JC~f6c}8{mQ+c{>vzL;#u{|3mvV%*?%v6oVJUEB-^51eLGE&= z^49TVUdBCpiYXbezmyqY46F^^2nsN!x{~<^(E?)vswk;fq`1M3Xx)*a&g5=lAcb=q zknMA8WouF2t12|c?%Zl;KYGeVxETi|ETz+3ggxscsctvT*ypcFTVt#O zHxougI@uj(-#P`K@z0bM7psqd#@ zgw5xleEaLH&o|GIN0WMz@fIk#j>%Kp9-aE88$3gcCjqDUmicylUsNJ5o-`t4X;PM5 z#;5!0(E*2o-IYVWqre5P{3m#Zytb}gb3DZ1qh2Qrr!iN@`XHjy90-cz!))-p&DU4D zbQ_I;YM3$I;NklMeSa6KO>P^}Nw1S09(%D6+C2u9m=srm)CfImxfnh3(WG>sxjv)A zmSUp%Uoad?FNvePBRap$?``>>7NrxAL0BX_8trgQSB-kLZ=J_?NJ4%zbxiYNjigUC zxstweNF#eEt5SWt)`HuvO3#(Icdn`;I`)am#$5OGn{MI3Uop&&+qj7(Sfcv)MGOsF zy#Dg@=QoS@L}$BxW}dF#hwr7!Ss8Q@rnv(GW2X_LWOu0RJ$*XfZlv`6X_<-sGcr z*D)^mW>lxd#&DH6+xFZWu>+kJs$OiVN`;-eHzsZM@3nGT*rw|4ZFze0xHwxR@}_n& zod%!fO1hTqM-v8suy}&CyO9SC9Z@A`DJ*y(Zdp(E2DIx2_-@b|X#kl(6|dULd+)0# znEhx@)HGIT_a2C2g&lKaOu*~2S+BiQHRDbEctcUVmH(o!k7k3u9n?i(lZP}_=yOD; zO9}UQT+iZBRL%MCn~bQbO+Op#EM`I(gl9NN;N_ek^S%VsWavI1NIM`>NW04+7qwvp zwV_Mwk9$NM+pbhL+%B>Ez6tjM0&|(;-O>1R; zq9}NJwU!Zmr}o5vZ=dD-XU}W|t%is+jiYxw>NB54Yrm6H-rIIurEoXimSK1BMdj`P zSoYZ7`|U)*ON#P3r0|Jtpl0I&>Sum!!)HiWy%7nYr2elDYY)M!))&;CY!qC1F4skF zei6?1Wp=AVsEKKCCgf#*xI%y&!wJ+9wB)&t51AXi6b<7E{1DUDb#cNuOlo@m3=2+L zvtJ|;q&o|lm}Ms#l$inS?{}*SO6aFK$9rNGBi~wb##87XQG>BFfU18&6=)9_H0qKi zXMYst027|R6vt4CPX_6~Oy}{3IEl5i{%B{~0ZMuuU{ZLJrflHghb2B z^@5>3EOc19D9CxW+*F;0gFy|j3lQxHJf@~CKL8~j+W{YVwjnxskDG_pr5sShtGSy7 zr_K^~#tutc3z^84nORUhJtl4WQ;QHzYYoT}u_y5L5atR%_FIGgqp7aWQewOOveG zg6e!L1i6Y2sGeMhPu{GcW^qdYERcZFq8o0Z*npmBG7751tp%mBm-yb(@TYDKCpd!- zXn)OXFd?;09!+n8%#;HXY0hR+lmWEg1$`bWfmuyR#2xx4Bj{qQNG1u<{4{LfPP3-_ zBbd!+p3cnp$8iH$F5A5OS57A>Gu& zbGc+b!@|XoS3fVaZ9XHl)bEE)Sc3RM$aZ#4m-$1+MWX1eb{;jQj{Q=<;Bl$&i$Z%` zHoevYlC>iDz@jU@`Z<}CW{$L}SPL^iV(T_xGaRvPj{N@I4rs>Ojn;daqN-WKLQ>ko zLP0;4eR;%K+)Z87B`mj!bc*2Z_@t3-HjBj31xlmpX1?0`vR7XtT9eexVrMqmWs9KI z5MahS4~li@)hTg(=ihqi9aXu&lQ+e#e39yBkAE3Z3#lFmpa5Ig$3Tgi5S~bQN`2sb?AWwn*8xztJvkeMET8?>7}Z22QnA7cmdwoq#3c z(7fq~RS&7@^@5T`Y1;=6zYXy%FCe6DtU-kjh1sXl4yQ83B5PjAE~Rff-TEgG0^ts5 z*h1@Z8X7dHIW}LOkmw$Evj5D2GiFXi0u7qYPA zFm^3%mW+vK6r_P6yJ#0};xOyJ&&$BVH*h9r$-V4pKge1o{F76lCX1sZr0M%Bm~kel zI&Dy^`fx78GTp#}8HUZGV+ zSul3-5{9;YbgF;U)M1q4XBZkh0gvr=lHi*zhK!a7^B%~1Ww(mJx?Iq z_&in@;TaN+qRdA38sj21nMIz&Yn{Uw@Ln$Wyx-@Ld|qCUU{ZxOG8MIMP)T%dMe^-5 z7^k&}yXHY4PyyAVDh^1J69>kZ>?J!*{*I;-X>MF6c;KJW%>}$jD8%VY1~TM8EbTOzqddyIf;S82sfMW2*X1ugf2=I@TePKwq|t z-`V^J^mP3T?K6e>Qz5vTeu3x*3`FA9R2GlB%4upJ$of}1hwvr_HA5i6{0A2e#b6;z zV>C@H?H@bD>}j-69(P0BY0)d(;THro#b~kXbAjsxpc1m3ni7uO4Cx{m_^xt@CWTdW zEd-@eq^X-yZY-ib64l(c7N+9I<+i$201+h7rxE|mU`lk2sL1va|g!)T`#!i?$}O#r=APu0A34T)kDbp)Umztle} zj{X;?4*#Bhc57(yvv+G)S6DbHQw2V{$xkde5xSN(K*F7gVN|&Ap~j2iu5CfNm_+b6 zk`HJP|FFhCr^&jUnbIei&*D?FW%~`uYLXZS=8fe>_&>w%&YAdh5g*&50pCFf^J;U2kR8yPe3* z&2i1zh0C+B`h?ZCc}MRw=hk`huy0TMm8i9aEinx;31o-}&R?ukcjZ-W}LYn9f!&Yy)tB;U{bv4c*0WaYj!B2qL{b_ps6oqX6!HY3#BUF?@5IK zgm?nbLIQ7dPwEzF7l9n@9zT8qvSv;ea#_q zPeGQTIM{usjXVb7frH}%A3kV(ZOSXGcwK}RQ1@95Tq`;Ui!CX~fCqJxuVKrCim4yz zXrMB1obTxm$ZXCTK#DDew_{BiBpPAG_YE~-K80>DRgh#q73=%f!XdNTD)c$o9}YegPS z^jG2+Xl*)pj!DVM1wI(yj*84jxuJDpDf;CQE5=c|m^F}BO|<63MyGAUW&HSpw7d4P zK1T}e3_qwfr3Cf)izft?SdD`L{b^3VKN`#CUtxs9TkHhya*PS&vndT!E!d6ZD? zp$Hz zSrhSI0@9P`5 z2=Jafdg%dW#JbM40>?`7MfYY$1VIYNuh8rxd8-W>BKT;WQvT88} z{Y;mF@g--d8!7f!1T6H?JAcpRsCPxk|1ySAdY57Wn8+r#u6SEqhS2|o@N<2c6Bm5S zBLceR0A-y^$BofNU;rnDT6jXV`s|JlIUZ2OBdd7n>{7GVg?IvFAHZ+E+F6i)$c5wS zKRfCEwH-1iT>a+>=5|YVMH`ly3tLH`YfD-$oBsV{XsHyVQ;^@24-6L?op$N56y~Az zDH+OPp_5n_sDq5?eCi}Gs5h5y`5cJH0jnqCflckdfoo?xom7DP`Gx6wzm>JbB1YY- z@-tKl?DRk7B6CN;p(xBJ5Mpy#c26_mD|GX?- z5Q&9<^HfqFyzb(4X1@^joAe8S41SsPl00|l6VWLIl2++N3 zTXR*9Lf7y~fsi;j;1ycuf4tsbkB8J&sG2htLaA@r@zaMa_ash3 zL`24@IFI12(oug7W8%5Mv*fMNm$yVQMM+7BSJ zC~;}Zv^6v|Vyo%-$XJ8VrYj+9t=%zk+ungQ}l*x4p;LAJ&b zc*6^&f}@>X!mB)%7f2)gJNUNK+O-rJBuePB(HxLyc{(lZm>~Dt-2i~|ZA@PCy)kCL)Cumi|Ju(OT|u&7gNei&U%Eqn%TEQBBcsE1u>89#=o4;l<51 zh1G4~<}4RjUh4;J)?iNX=dJ`kNq^!eU8)sq=YVG1XQDMAWP8;Ha<(;nMi58r9>o6N zru^k39KN&lL&`_iI;9u5;E5lKqKJCKt~`zm$>}2Yn{RX#qwlHUM;Ts>5{F~hVJt>Q ze|#ZU_39aw91tlFlAOA4%9xH$@Zn@8D$rBVEMffw@QPN{e6_jAQTIH8%8CXAQtAMq zGd4$7df~!J&;UVD7p0=8UeKCMqKRfEkwbE&^x-Cvd{{FIiTfCU4EYG-DVYdBfB?$D z^SRc{l2TO9+g?_x=vM!Q@BR2HqlbQ>a)+UUy-+&ER=hm?FrIgvdMcNcqG-hxKL%TW zEd^)J@k-o~mx1hgqG7Mgj@XAd_J4mEdm zr0TDWMD?JUS~;cV9#nX4GW`>7jV44U9-PNz zBZXV6bB*iThIdjrc~rIt|MH;r6x82|HENs_ZeA%|_mnjoYpC=f3Yc?(c4ESZwAI!# zN2>u^OAtU<_?0OWb22uV)Ayb4!qF2nK zyxIF+Q;T3^QO)nccKkE^FR+q+1>_ZQRG?SvpbINN1pFbFAWk6cAYY!^BF@?nqtiz{ zQ8=?(RS_ovn#I&9x<|WPsen}QlKYU_G)~=QtyY~DyFVoE{Vd(SLIbj7oMyYI(JjPs zDztRv)(q3&f|~L*f#+ahfB(a@^Eir;=xrQXCeXUZ<^D=E!n(>(SUSIy7^Pb;I6WP| zwjMiJwj!{llc*r4XwOw*chsUZvd0q?-`0(3bl;q;VfUv1&Jb;|j8nXe<~V zgd<|olC08N88aje3n3Yq$_qW&@N@_#wH-gbF{j5cS{E89yE)WnK2cKoyk*KZj{kZk-!b?IHjeitf2Z}c5$mttlmT1 zGDB|OrQm;)7Db3s7`9Hu|?&P1%_gT!0P9d4H*^ZBi zUK~qTeYrBlod0F@)yhXqAlIuc-7J?)4DE?V1Iw#CA2jsFcEXO!&wXYb(<&q>63T=U z9aU#KV_0JIly&DCXJVzHv{A(d`>{wjr%OZKO?u*`P? zc{so!vdQPjoX+4ES@5oof;` fGa@3|mznR1#;)uzHi8<{&=^IE3ZNcwW41OxL!K7WV4iNT-0*z6;d4HAW2@~@BH5&pFMWt#xpzX#@uguzA9_`*3`!m;t=~= zXbUKK;RU##i%)ts^TgK{;?AShxC0M?CVtA8a!WN zo|5}7JG|%*FYn)^Ic`>5CGo=F7Qh9Zwp=*|X*dEF~>M(cr) zyw4s;EAkHQ;*;ttha}xhxrEs&)@KF*z!T^ax~UY0oAIClj};5S_3rRG5l-qB0m`~6 zGd$DuM=x3$3qMfmgg{Lhznwp;^ue_GR#gU zKD$v%ux4_i!mX;Ig&c1nhU%rvGn$A z3li#1#AkE3m)VgLKtxf<4z5jQOwhhPKz`-N{mpv~$;^6wM@CrJzHTUGlM{Uow0T)C z+sTM$W)lL!cza!QRT2Z~)ojXtI=z7_W{b!JOfy%_tS?Rt;f+HWStuEH&oopCVTyht z+p@v|kLmKN6iNeURJL1K!yizf78)X^20F$=0oeI|_u| zR}@}zFOol|N=hmfL#h=Tj4^tYUm%@DU;F2~MK26Sv%L@N<35JNj5r&Fq6bw*E?wm_ zKQk`Tb3y1A1*&!338w=ZB9tH=12SXH!H0P>7sATLS&2eTr`%n)(IfTY7DP3zh~mTm zn-PYUR{CgPcrV`7vQg8@?y=D4?cVz}rseXCUj%kclxr)~4*14V&xqnP59clTPP*3# z?VnGgGAN>|m;$UUU;~mwm%u&rK&{iv6;UvicThb7anCn9h%P4e8iY-e!f$!fJi^e$ z1Yd3$8O$7YXomH8wCU^9LVuWF+l))$=4Q1*O?d)K(c-X$w{juU*5v0)1!L%d$12Yh zqq35@2rou}G(<@$keJ`KN_I7ZhS|CjHBD$^Q5I*(v@+Ft7qDW4-pAdlzv1h{m9tFq7*>>I z?vF2O2k+Okw4xZEmPrePCbe(EB?_s`jI0-Xs>v%w9LX4!wUx(b_|`}f5IRY})B36g z%Aqa!dMRS1NhhA$j7G)cCD!N?XVrRYj0eHtN+B$2OBq@Ob;6^xqrtIoD5MjK)PS8J z7X((YB||tzA>Nz-;!emT;PD`ll<3j3SB85E?$N6YCf`?$ZMlQG`F3ZuLEjMA<<8nS+ui*IZ+Xli zUl(3k*3hwHjoPiKQveUfM=CuFi{mYFOEUqjN7AWw8Lq`;^0f%l_3zmJh!`_&CkjhL z;g}V(KDq6#f1$^}bB+^sUMVhzcAmtO7DbLjEEIbzgRqx2kQDyZiK}b|cmxGi8T5pS zpG6ffRhqvVWC!C#+RkK?B#YNNysM6BHTYrCqF8(;?Dj(z_5B4cT{n=A9<3Gb{jWZi zMn|ErUkQ0N{J;M|a6+|79-UweQNP{6KfUQWcR7cx`$yuOlSt8R8vALk;=j3cx}F>G zB9A9dNqqN5Y??zv^Rvxfex-h5##zC^@gz0=2k8pG+oe_`t7wJ=!_ITg;LPcU9aU(}!M>rP_e(trs*`J?{?p z)zhvMF`sdMUP;@b**dWIz+ym6%tu3TmUz<8gD+pnGMGZb@X%15!(wv4KHv_eoGa)b z@cp~l;$ne(`xYrIdvK|y-Y8F-vc%IBFKKu=^sv)Xb{S{ zd8gcZZnN}Dg~S&J`*_2CM5>bVo}S?Rx&~_QKLDwa>6i$z$3R?ig{gbi#6T%K_Z;vx(8Qh6&}`Q?z(JQm%soUzImwPv8t` zE$f!EN;C{VL5h|s6VGZNYK|v3caY+!MOa2YYAxCI5B9D4lE6-)2h~Zk0#!}U&u)_ak86h z#}Hj68#J^3$Y}7-ItGKBpR{c&Asx}(C;%&d-m5|aOUfe0#8W%R((R!oGZefyUm`8R?%)Aw~(U64*f;YhY6Uw)`SG$sj_DOaHcKB-Xw)V29Rw=YEOq$ z3G}^tnbd~Qz+duC=9#Z;iH*h7(twsTD!1$CFaJf!3b;*2YdLjdh2Q>PL|-_S;WkHX zn%6$B$P1+axF4zz9zbYwBu#L2o z0>6uw$h^)jB9QrpV1l*FvF^Q`z{nQy<}33ppH#l_%c^lY>g?;%v?H@fawUZDG}?3B zbOD!3YU(3sEs%i~(3qycj`ElS>J6U;Jj6G(=z&2J^nZHM>&)Sc6HgQEx|5xhC9#YF zt$74{HBrQZ@uek)&^l*tlG)g|5AK)0H`mSR7&xH}?4hPk{Pl}XNXxANZ5w_}>!+c= zVmR4t9~g$lFsFW8D~I3MWXezEP_@k?I&_~x+&(m;X5g}JYPvRf@pxzc%SiNgw0NE( zyE7-DtE5b-*gE>jcS@ijYyAqrYjI&ljLcstg)ZxUl|}haRtO3SFfg@X`c2&ubx+K2 z;&hrT30_{zm>=BYNEsVLL=1EIQcJ1Y8h>Ko4m`w`hsv}4gzosZjX!ly!m(&TrL)Eq zLkh!pA|{)m6Dtr!AuY;5n1K*0nItpGR6GMn@474KOw@(kq02R-o7%8PcqlHcNi0af z#ByKfM`w;_Q=tZ_}L$PeZ!t)k}NzY zg=s9)G&^D|w_Qr8_46{QWcGjY_z8`k4d905XwFQB`Vy@zyok6LvGC-S&GStKNMBK> zka4v%j5?fce%8_hgyJgz1^X|?=*T(8g+7t`Sf%|204Ou&!49FmvTd*Sm3}Yc5A@!9 zGpk*qx|DQa<@6+>W8M%-_mQ~Fyk0wF(!G{Hze1r}3=f6ehk=_c<_VW76~wSYMn7q9 zLEV)PT981me5WB}ll`DFjx9B*@4E$h23G)}@gR$0{p6pbuuEtcTZ#GFarZ=)@sarMsi<;d5YH5!<_nSE9)^B6D#UK3o-Ig@ksm^5gKbRw$fD2qW4 zlkl5?uhpp+{-sG`%5vm7AdkES)I>VI{hgVG1+v{!U+P1FXp57TLNl#o?Bn!c*IW{S zwN5B*$8`lek7Yh6DMrDP6(^+oV2s*IwkDG5L?CKqOii7sCtbT{nkB@(!e?QJ6dJi% z7nXm@XKd>rx>ThNX7#yT54SO+4HyzVx6nvU7!BM~m)MrREFRTRD|D=?UfM|;=V|a4 zqZGsBW$K%mlh-Ga%08VSnLutNCIc(Gx;o3-?at(w$=stmE!Rqi1(;ly>c=G?PZKg) zAl`#hRdYRWvbi&}KK#9WK?TGjFlFoxP0f2$1Y5PYq*YhQ1EN!}#i6*2wMhTH`RD4{ z+cMz~oxL{iUVrZbq`8#XHJMjR9x0p8H~EO2H}nZPuF$>*);+*Su*L{U;><*!pKMom zbyIiXQw%GB`+N<~sKP}E5|)!A0BBV~82h1|=S{wHp?pOsx<^*(uAPVy-_lgh*{^H@*Z7?@`h$H`}ZV zWOCPJabhBiDM(@Cdy2+QWIw&Y;S4(pB-F_RLTpvvDniFDTja^iitQ#aZKH zs-E<1QM!ANet!#8jU@M+Qsbkz8X_U4@Rbq#o5TC`ijzx=Dzq`B$tRCnnmN`8PxB?2 zRY7}ppAxVE6+TtkqG7ho*v(A16nKfS<%bnIM3?=YjGtK{-e#$~lJ=Vu5iK7OoOwS* zUtC8sG8tUAl>Tb1Y&ef-_69V~Oc=w+JY4rBScE?O`vv-b?ct^N#`P*QP_8TKx7Am*SzJ%^V!c|g&TSv8>4N4t_hUtM-`4=UbCm9_XkdA^_S<=Yd zM*eubRt~VP10a;`4^2)M78(7^9+hU@n))}vsHPhVTvd7_ciJ`I7p}VwTpU&>&c+#e zx*_oQn5a&FC+CChU9WYX&L^Iw82o3K&X$Rf7Q};v{dlblx0_#+h)cju6n>2Ui>?J5 zF{TmsDMd(7<@!6&5gmk=A>sy$|ECnJw|HPetK;^$tf^dk;`Z*ke?18I zV#xTFZhEe4#oZ<|K_cT%ik5NLOw}}jet)hT9wjrkM)YEIk>0L)35L&qzxJnX2NCEl zsZ?O_=7Tc*-_v^*d=Jmpsxk9(m0A*_z}l+{>&9kY=?_He;JI%Nbvru&iLp-vZ2-%% zWf>L=kxFY}kGp`t%|8A3TC`Mi!UVG5k6yN4PSdDw!WqvO&%1hdE5U_#$ab;XjU96v zeGOB&--8xRT0@ z0B2%9+kkK$GPR2IJ&%WEZk>ZQOS$*80KqT(i)8a-f9l{d6HXFLt-v4c|8{J>D2VET z{<=ILhQ;8gE~{6d{N6-?ou1I}6v#DVtUH%NBa!m^_saI3CO3`{QIe@h8X(u3M4HeP zUr<6=(iq;v5-`&apj8~aoq<_9O^;n=tB$4S7J#BULtoStC{I;xuFksQz5rU-bgw!y z8pF7ZN{E3*-{F{8EAF4`Q=lQ8b%y#hI5eBuu5aRwy7ke(&`ihEKR*8bAxIOd5IfQs zHn{Jy6(-L#2YJ??Y~@>k)3fboDqQl&C3v}b$-Fy%#S(wy-WbZtGk0Qx29fu*On2-S zRm7f&Nsfan>)Bxi(Nog;uPvRX?rM(muf1P=7{?Yo zt9epU$H!Bn(J-owdx`|F!)g7c-GVwNT&>_{;0fzCqgLR)g$vtBG@z|hzzO5|4`r;p z@1v`4mO6x%riYYE!IcM+lC+y4d%;QSMjW?e${GGEvOV+vs2yFf_19~G2r}l*^8v}r zA4Ko!kDeK0vw`DWGY`XVwzoh?dYPg+U`)M3thMdV)E`ty(BKXQ0(_k7_Hp_RL&_J-@97CQ*w1HYU_q%Kx} zA0@9*n-UH_$3zZl2oJ5qV3X_Bx-dB3&g9rSCK&z~!dyC*df5=qJM0i*r;mzFyQ~>ISp$9cHU zvr&;1{@jKNoBswRgaNstk1P$E@1!BxG@$`t*MsDG6F@;Yni-ufM(`0FhbX}C()l6;y~a^9nl>kQlVe zBrQ7%&FVZZ>%WY#t%KA&K4&5qtyLD%_xdQrT^IxtP{RXSs8UWOazLo8p!R_$aW6N?U zBi+kZoGR};Ctj2@}B~GTX1&w(d6<^(}#+u8sRY3PcCAW9McGnAbr>7X^w#M zg4;s*s?5-|*;_s#FSUCMzHRZnok)D??)6K4q{+ ztoNppkTp!c;^nK@i{5@NEr6i40YU^&OEwJA;Tp~Dy`n)@YYNl)l3MgErfdBa)j3(V zY3sGloTdY0J646+DOdo?H)!<$jhfc&t8=Q=T|YoWpnR=%6QgIy4bWLNw6J_pb6g}l z$0C`wqpP zL09c$6h%qu`yIG6gAK3<&?9-HbHSE=;1D#|Z5Rq0(r>?$LrMSCYW9fmgw;{N+HLu{ zG~K@9wsRhW1cZ5r0uv4{aNoL6dGUUZqiD3xc2Syx+IO5}@H)6GE=pXucnoPrn2nu-Sk(oQ$}6@!`V>d8ky zt(#yh{l_E`2Y}>h5z4m&(jDroN|E7aXo2UlYwE{hXoiZeVvgyLa^paxZw@;pa@2eq zsLUy}=121QBRIt~Q7w*{XbHwdsubf^n){B+!={S;1^SPWdw5Z^)#XS>Go1l4+bK~R z5Vct8?N6TMfkz0fZ3IFcaLuzb9J)7@%5|UJE-);_Sv_2KF#@)K+2Cx>nVzKP_t2>| z*k%_|lD_u`lz*z`E3dP|OAd*aX?(?^h}(UE;o4udo{RM|RbOAW1}W7n>g`acZulJh z;dlYH=VGQ~ZSt(`)9r^PYNJ;)Vyg+RC8xo<)dG5KMXpus`z#ybd>UL$HT_m z@(y;9bgjUd=FTQw`n|80hc9?(HJ{%U%E-XucRQRQPA(z61vOaI{ku78gMgiBZ^jMA zfUO8qp3Hfv3UYqGSM`f%q{Sa&Vct+`j-5eq@0a9h+umC+=z8{}dd$p+oi2&B9?oUC zFTNCYaC6}%S8zVB@RxZA)7m#kK*pmeOn?wrkL!$s(da^J;+QN0K-XluzWl(@Z_psm zqNaViM*=8@8@&ygHFsosJ#u;QOh=xTE{d#Fy~7&)km$O_-?B)T#Q^zgpiXAlWQW^Z1*Aal z0FGpEnx@K*sRjxxfFK6miz>$~`&o}Hv{O;$m_TZ=j01cm#M4g*!%+(h$Fhwa79Xz{ zWFIA}_!Arm;(5b3Dme25jhxFLIKRv#u18b;$REM)C$sd_%(Yq0lNc3IkGXwB#WHj> zFXRWI$XQ@?j-r`13W*0Kurj^qnKM3h$bLMmxtiA8EBhL6j}5hzl5-<~$dFgyNN+z` z=GYraRe{znhiFUGQdbpr3Q~&23XR`wV|?2vVDWV!MeK$X<{}8q4m_%W_*IC%kaNG+z^uZc&_%9da_t5yLdu zP4KKr`&TA%?trYu_(^>4^Isr@f*{7NT!S4x z7$2j~q(9#d#5KWkc1ipG@h|~Mka0GNp;cY)R2STUAu2Nd71-~I+8QAK=$DOFvl?0F z9T7R z{I5;iDd{9)aK%5V^Ci#QH!-&EC*o!s+#_DM1J*n^1VA${uAxBV;kSkv1cwU4p{Zi( zUxlT~H8p!n(0V!u=dfg3>c9LZD6xcx9WbQl{&3`-JRB)=rh-{)L0@(|3Zk~@QTlIw z500wXe34OuVoS0!<;mtCy{}8;&YasIR#-4%QIJS_k|(!FWGriIUh4w#SEMua6hpQW|fLQI@giRH(L%+0*u6n z7j8Z0=~Z?p+Os~;55jS(5fpGI4jCS4HS&l+oZv}}a-Zov#Z)LqPUHr?yU(o5IPnwJ z=6QvNgp)Kb zc?NL8H3D69eQsr&$e{H^U!D{P-Ji_LM2)Wq&(NIvaM-9tk+5(r0c?}6t(6PL#TnjEny}vhULa4 z#pUN+I`rZEByfYHPkW^aeqru~n5}*ckJHDe9F27q(;IVV|7S^kGTxg)dHYtUi7U5k z2cGzK{i-3xhDCsIppEGmx)KrosC)#_BuN=3N}rD7!N55R&?b={{WzkDYv?DiM#aD- z1Kz(yzK`XpK*_`jglv0m0JmnT5lYd+-Vw63A(k0pNb>UWO|lpXj`O`wg0@A;|fv! zOn8V(5@xHc8wIN^bZKyQ0w|@V3ERg`PBH(VUzhrwLlX7m{2-irMkRRRRaLF4l_b%M z8}Cb#HJWZ{@Xl2aG~dtk*m@J=ab1RGM#+Xrk>2hk2=mk4&CfF-yPtdZ3n=KWmh6Z{ zo%y;U#hCj(Qo~6{1)UNjKkB1TYYM&4&et_tFkv{IvDf&1c9xvB%eL+XXPXrNzWDn; z1k@`Q9X+u5*c5%nc`^of9N_05G~+iR!Bf|$4vVw*s*MD%MDJF~U_#wIrIA*$ zfY{+pXb$1AkV?>4Sc+Y|>MOZ6FdlAszRyr{}!@aBiib#+&vRz!%X4xX74Y)38k z$8aLY2*c2U(>pN%5N69u%--|9t3A&gN^o?MGn%zS z<-p$PGxoo2$X$BDFE(n2DDJ~V`8*I5)7}VTa;4$-YOh3O)n9%$>HQeE9KUm5Y95eJ zCo+X*2axF87jDTYM5D!Z;Hj!)kxNNuQ$IB4=Izn?Iv#f)sTip~%c5A&p9&4*HXND4 zVY)9CMDrqi{vu*RviX%F0}ocZ@?G;RhRsnNLJUppMxcTsdnEH)9_9v}aJ?B>MM#d_ z2<5=7HTgXCGpt=ASOB|>mo?QJgA6Tlg0JA8&wsJ^2J!>uGjc3j3XfNx{14;Tg8;}u zDno*WPygL~oDHd|r%yfLMgmTA;Yecsipv3bHFEf-i<7mj{*%j4e6z1yN{@6RaOm3h z$ycU7e&M?YNBSWcVmJx_7zE>eR{nWMP=tCA2NPcGs*CU!OR~oMbt74aj=zn&;{xi< z$14tI;^<;QbPru~UlDOk3v84Hag;S})G#!M8zQw(ZYfSXDtpYQo90;x!y2&)a>-1! zdY@Wp^i%d*Cm4!EuIkvG^LBUwNc)1}p__vz9NTG8djQnKDkOgkwZG1(LVGQ}`ajS2 z<=PpQ{9u(0JYrX&4XGRktQ>&=zo4ek>{5@ zZH)AuC`$M~Uues+V}q{_3pDHH=`tBKz`3;%+va7 zQ!7(VgMwiS`161{{!^a!Fbj!jG>Xq)Y=u4;SOT@W;530LV6Skp{ZdXFpaN;@P3I4G zKhH&y%?;GLg7P!+=ssRAFSXVMu0X3hUga;gcK-#b_^Tnuocg4h`Zr1JSB6h`r0#9| zv+rv%zT^OHp=9|N!%VaA7M=ywASrOlWxtJ|9$h{dcpb9VabmMT5BK-lX z^ai2JfL()D>khF(Y>r?BVF@d0+?PBL*1uqGZp!z?;=c{K8>dGNSH4SM$2Tb2Zi+nj zOR$L1G$DBy4522hE?)d^UoMynR-}NvIVc6P9j|^qcKKue0-kX68oTSs*hRuw&bZD0!+_={1plV z&Sv8jMu0WHnEa7r^>;@%RCQvfBQza=D=Kt*{ge!?U&tc+Dq&%PE5K>y7*UFyhELSs zBYG-hUX7kg`TfFbWLdJArjLPL!)ma+1zIEK`xHwBqwUR-r6~J5D1>;}ZV5FNr)JGy zO9`(=qU|DOaW;k%_-j5o*8fdpXRsJ`DhL02@!_&gw0Cd>tDQ5w;PFgC5G?qOufngW zr(ub^dp8&VHi>Y@dF)|Yfqqq|iC@|^yp_9Un=AK=V~3tdRLFY+7`QuPZG!>O$)yZY z<7{QxV&QqG=jnTIr8+#;ZJ*apdI=bix!;1cr}NXmk~F1yH_=k9mm8-*jXGQm3%7jc z>0jv9{8@|@33}}W?fd#R+H>Kk%<3I90#|%>hA52QpM@G0L=0Li7v7Sp`xi-Q!zf*k z;zLV{2khwVaLqP_pm-uOGQvXYW1%`EZ>J+wmBtYhs-fUFg?L{WB|;py1%{7tf+!LK zS-jc+R+e#sWOcyJY$h0{)@dnRb%ag;&2dReZ;`vH3;a8gwattMzVNXESd*W=Zq^oz zJa1Ja%3PnFsx3havd;BJn!6~;{^Y5=Bh1_wdG9Up#B;N{qD9%`D@3&aOV!}o*UGKG z9OuO{3DZDO(~TIG>tBZJvT$e9*O^N z)3!nTGFxEyR1c*I3`LBBZdrNqv59P1-0A7pFVzIK% zB94TJjCE#Gb6pJxIhHBvd%$Vq;Y~95eddsUg7pDre*aTQhiC`P9+PIC%n>*ZA$9u2 zF9vW(DRbQdrfH2?Fy$)Km2Y%tl)_``M@4v38&TkknSa^$Ow`|fluq8NO!~LY*jh2( z@LlpB*)@CW@;7ZX25iUQ)IoUtiuD2sOO1U&D#b93xUmi%ovzn)(wyV;3eiO%R!rZ+ z+f2Vm#GHk%iI~4DWA*Z@Y0Qw|e24;YTodz_f}^avKCrK3Q8VPn)#6K| zx@|m?EB>j^CPkN?)!>!?a5kRe^D^pHkZNWKbS3Gug#!PsFLC66lZfG)K9Ufh!fN*I zM^OT=C=&M+l4T9h4vzJ8re>p3nZ_gb0Nu1V4O=Xq`t`I52fh!C#`)L1N>l-AL~3IM zVzr9VsCG%`CPtT<%@0WpkYWEZs-1I8YL@BsIzq##N@Lj0 z(MxN_DYB5b3Ha3ku3JgOUYRoqX0Y#CA(pakPd1v7+TXnmL1Jh87>Jqc%kVw|=}YvZVPZe1 z<{_%He`V#H#%!#S6(qeLkrSd|zsDH(Qw z#o&?0;t&kVGXp6DT0AQzG(gqmwGFbSv1O&T_R6x~|3Fq2d`{xHf`BG(O*y$lOIXjb zsu5}=v4#QNXr-^v8hsC;0R^&uM{H!${?PDKQJ+~I$*-o0(I zXp~(WgAV@2!#{6`AT_YC#0!1warmzZ=Nq8!AB);#DC6?wPxJn70#?5$2XSbWR2`$% zKGC-d1Ot#-s*qbeW`+}n{xk+*GcTaTE_5i9g?qHxDm9d}zp%RLW$pL~4%H4b>tg5; z-9@1e_iKW|2gO9P`@kQQ%K{TMvGuEOKW?}d4_47ab?1^GuG-~iDTf`jz{U*_`4-Dn z`v>)UNS$Pt_-GcljCDqVH5T-icib)RkYAOkj9Oov3vhBvCKv_OwAhTO-HPVAQAOnL zC@%`9w>-N7HS&N9(QiO){oO7eZK0EEXwbd;Xz>&|Z~fjDt+bpRqDc!Xi+4@`Omyvk zC!+Mt{dq}co8;8V_M_SiEP8SLhXNF-$#K-!F%RsZw&31>(7^<|hg6C358nFe#!bIw zD&;0fYC>s>%MJS;>om3EsNS@~+J4m{d36|4-FTNy!D9LJCt0_wO*nZ%^&erx(4#^0 z!CRf3O>D19gwJfy*&LNx3Q&d}i^K`+%Ajl(D%5Go5 z_8(`7-wCeBtDNVLUvkO#hJ7u(1Y%f;FHkvPG22L;IIo}Ebqvy?%`LxLf__eN{idR) zbTl=fz{A9XU+?^ak|r{1JDfOcMmm3u$tzrHV3#ZtlIKeT@Bq8wM$ijzB0(>*zA>`gon8Pmx&|l|vk{i~ z`K6R zMa_4Z(C7{PxzD_9V@zAGV(rF7#T$4uPPDHC0gi;_S!yyq|EDE|(w0j0iRVsiGD!#) zIGcY{s1idaowJWDMoz=bj(9v$TW?~{zdW$PQW^To{k?`UqVdu#LsB&DMjJfiu3l1@ zd#s_vTVpBS%>V*G{lC1hh~Ggxr&d!|w)IhZSKtU;Q_V(&tkcbOdr1RGvW;!|;^+&(J1?7?3Yj1JWfXP-c&B3KRT1!R?UJjOiaYoYnKqV_BP7-*hGV_+egom58n}Q zcMy-8QJI#MKJX)aOXxiUeB`!pc_y-ZQ|q2~zGx1EDSmQi(Fc)5LzY{1h0py@O^^3T zFp^wZg+qeNSTUnjZ#nntMQI&uXMLB33K z=mHK~6f~6bRS_f!GbSw>5Go|DnygXu;~qkZURkE(C|q8xT3SDa$a<5;eAXx$>(x9p z+w0C!H*>)7pKQ3*MuitPBZtjZO52Mowg|XyO`;~0hIK-`#h8dnb)YDf44%N|fx~kZ z7J~IoYmu?<+Dbb)ysXu*vk2P?^A*UUbfu`EE)mg!2wjkE#_JZBD(gM@O8!U^rJCGn z=#DfVz0@8eHW9WE63B6Nr<2K6Y%06kXKi1r2_tQ**KL&KQQQY|)@Y~vjX+bXSa40_ zL(I<0$;F$Pf__DvcS(5$q_HXi&kL33hK+(ms4$aozP1UF;7K?vxB%rH$DXA1Flikk z1((-k-okt;R4o^$(-V%%@yLHbK)bJt*F_|SUC3!gJIg536t?B}u+?*;Tv-1qi{SVu zKLUQ1yG^Y3^JK(=fMs4x@m*W3+hp?#96@Eb&E*hvoT3O!oL`%G8{Aja{lsj*I3`(+ zf42qDR0^1Rp!X!3sBk=^Jc_oz7Et(ucI%0(gVfTW4tSczRu;56yRvN#6b+VCTa;it zT{yVZAmG>PL7KDoBd_70T7y~eTV&xm8I$AgNP*>IN#i|7REYc_t*>dow!~+v-&3CQ zy0G;LZOkivTmPV(&JDf{%`LhVh{M-YfmK|wFi968RgVonV!YqGJ2b&95Tq~|Vsgfr z{q3vY2OZ{oC^XeeLoiPI%|+V+i7>_Z)qxw2i)U?W$<}(9Jq3JZ#}EUq?BwiKxX5|a zyEHWEY#n06oR$ptfZVtjB=gk}sVYi`jg7)4XgU$iIjKm@fy9oRNI} z7dgvp+yDN@uu3uXWAi#H!6{(h7b;%6O!yKAiJ5vn z&H#6>!02;1W567}k#;NVe%(s#yw8C?uAH1Q&&qi<{v%q%-IPLxyt7^y+tiyCf=V!w z(QRbGnZJ!jTNgcChv>nq;660%r>P=4GfO6IC(SMzc+brkAL|TN3s?%)EDsM%>dH9| z&)Wn+VnkE;5%JvE)G;+2 z4{1mEh4$|t3eT52y-lQugEk|!XCnI^=ddKO+T_Xq9}0ZGhPG_sOCTLmRp!e{mGdsCf>UhI~$ zj&i`e$qv*0o3x}t{A@~!AtIQH~DWm}N5SM$GfWQyNGetwW6S$9FZn>+V zC7?TA+@J2+lmug%$OYNjKeUjMl9%ZT@a4mgtD8s+yyyjSigsq7RC8VMd5H+89_O-- zd@=*dT_YPFiGhj>m7xH-Wg+PjlGfK4f%}oyo&`-mMz6relob!``?7ml zLbWDq1~Q0%Rfo3fJHPApi-X-)9A{Wo;eVKNOquIC0c#wZqbagKe?mEm;*0! z*5C35mU=z1D9@#|!lGXiNAf)7kT$P$^&2B;MKPl#;mi;3`^DrGk}op|XkBzxd1-;0 z!G7xYsFr8uEeby+yv9-{O7nq4klpKIan5CWF$?`05LqdSNX9n~*{E7|y686~$H}^H zr!Rskz$fbj)iC>b%n7_6MfBq-@D+BTxW0%=kKoD8Y&7hIw~9>g=&=1pRV#X2L$(~k zCjLZsyyUflR=OmQ$P`z2pH|HhzF(O6LFHX=GOfbAwZKs3Q&4(Ke*344%~Ar0)7xiw ztnTVKzi5jH+~;AuJSLXztCS^rO2I-WRd63g;b^zm`7=W;8}SOa2KD zmZF|os8I#1Yn?>Nf5QP^#})S$ zBkwX!{J1F3g}IBS8CEb7M!=%;s13s(btC@G1EzUY=EK;QqE%=e+wh7BqnA?`9RwT= z91c^E!*wfdN_F^7Ihj2frfF{+8^G$Iw|GeOW%UkopN8Wd#yASYz8l~TD-?%jR7^SX zR?sF@c!x}HARkj04lQ=Tus}ktI<^T4(ySP6;0d~=naFlHLi%NR?W@g9cdsT83%9ba zR_kcB)uc-rMV9=4yBJoMx@H?_NV!EXMnek_M5<+KL6J|w(a*%$76V)53%SJX10!Zp z$eD}i0xj;c1+oC$8O2CtpI->dBXPNKFpOF@$SbG=mYMm75!>=8RLCl{2G|Qv56$el zstHhJRc2${s=fuF7e-%G(iUI0wYEapq4f?gByT+sJ%9IU6*M8a^?7H-4WEY#^o z**igBorjj7g?y8VAbY?k;~Ja~NKop^rr70=+(A8k{=eq?6U?`bC2pm#VQ!X+Dw^=m zEWs9%4{F}0Z_M_kX_Qig=X~5OPIFQlcmD;|2OaWIzsZpr%@CKA( zibtt~oa+Du{@b2p9_2*z`GVa0bolQC$RTRJ>mV?(8`UgqHYje2u@)o+sF@QIPcUrBa}po^K` zd)2bkd)2KGyXe)tjKcF0+%wHz>&pf(|Ch&4JyNy}SQnyLuBh4IbBI=qN;~bA-eEs8 z8W)NDz}ud=Bl6(o2d!k4wYSOl<=+x3j_raW4U8?pZ2>u<_tQsmrc;A}rQP$il2j;l<%F)(1{%O_wQPY|pKL#a1^Z?UpnL&~SJFibsb{u5V+7 zut_gWY7*Q9?YG1VVX&l+;dzdaR|gz8-BFLO)WFrD_AqLzi9$SrYcsFRR#hrQXK(4` zFs}eecsPazzHqZih0h}|u@?ZkcH@qLr;KC<2(2SB?a}|9foT+FU7^Aw()H*|c*azP zhg~1AxzUDN@H>w(Qq_V&)D`b!_3Iavkjp5PuX}7*rsvVz8ST75x0Bf2JEk$~6w=bz z;6QS%3vbyErLJX`R}a-0fif7QZmhzZgIGmQ})VBirj&D7A+7fidN7%|V*orlL2uDSazRf))H7!Vxn0poTDd^UpskdLSHqAXU zDY>^~5jUA{lS3TJon~cIWHNV9c`wjhbCT-`-AII;k4KVjp(p2K2_lW>QES;~yN8@? zYUi*HyA-2j280C9TQ$9y>N``wbj(T%K6Ij`*t zAkZdYK?=e?MbX2V_r5JRYBwN!tR<>;tIVpxV;w~y?vj$k_E>TPOXW2;G1eR)4joFB z*g(3FLeC@cc8B(J({MyxO_ykAZERsSq2~v{-kRmacvwAk$mI?L15h{P_&3e^>1@Bx z`ulKLHq?=Y90cD;%lP#byi_5f*X%o@ZoSV86Wi}>p56m`ACGAQtB^}Y&p4nMIQww_=aHXOipD=W=3rxK2Yid~mkpbt`?q3fsNv;=S z#YQ^)=x{*55yrnKtufG0IN4}DT8{l)2Xk`Ap-xY|=sE{VX;>o7>N`G;?$QTu4QzFo z>J5w{dvRrBDN5h95^!XOzNq4Yu?LSdqq~Z;ooYTNmOlkvCv(z-p;7l7S;H3vY}1bZ z*TsDWzu{mN$pMuLk@mse$Fh%tG{Ai=Z);!1jIDkru+~-EP@aNXbzYF*WyRhb_G*4e zD4%{)-)#Fg$EWk5#jmC-xnZXDM8w>2{JpW^K25)|wr3dC>fwbtcFU`U;9uy_x>4KM zZqN^^-f`1!<5=J7E_zwXDPxz`h%@ZS(Z*;NxMn4Gqb<_{mvm)?r)C9-maHijMY;p^ z&1_Y%G3?bbaOscS2|-2I;)_E_II%AsG%Z|nFJZ#?f$Zwc;Mw!ynUS3!+Nv+9K; zLgYHlIZ=a+P4uTR&&;0nN54(4PEq_&vUvDZTgEkj|4w()Bn!RGpk=%j-odPQR1CLh zj~4Hl-__*ZKO1#&Kq>h9N$foc(+)g+35TjRM}w18WJ%KjucTy1-J&Q{Wt@M9u_w0) zZ3Of!9?+?^n1V#-d5)p_6N&9$dsGla92F#B$pwrJTWb)xcueMq% z9Xyv!f9TciZcu;*pA}0>Eb(H~E-)bCqNqUkhljwi88x9MN$`|yD!O&tRU3HEWfg(= zEp|OjJ6z4cL|p#9OmzRnw2zs5o_>oGcML34@sjN3Um_?S5>Hi%c8e$EZ{S4ZF=S$u zuvf;^GXipXJ&KWj7@SZ_gf&%hap}k77^sf`yBPuPY6i>5K+bcQrcn%&4y(CWO?BB0 z3KSa4-3foM?^6CUIO!mswYYVjT}}*vsZ4>ia)3OzK;MjGS{!`z?Hbf@AIk3qepF|8gFDaW0kk`{hKdD{RdI<4ol4&nwB-!CTAW*;nC&))3MB*dW zLBEF{*f{7Mdc)<6)x!ylTHOYzdLt8}h7MDZp8x&V(KyK*>x`Wp0ohh88JdP7u4l=* z>o*0ab*&9NkN=LY?6ZJo2k35O|u z#Sn1NYg!5=b-JrQ=3&yiI6UcN^_W1#qYv~NQ6WmfZ=s0DW5sGhvM&^NFeV=nGqK^K zPL%fGSV0>gZK^Wwk26yxGKsFx@`zyyee;!k5!e3OR!akG2tM46I)VJj$-iY);8h)oi0*-(Mn z&smkdUL8!zL_A4Q>7)b((cY?o8`}KF<0=WpL!wy0axfVRF~bfk+D^R4MwUYZhHTRz zZt^>E-|STM#-j7ApZuA95Ti()n1-q=kA-0DckFJ0y+;&;b9rm+CdD!c1z=!@z4EaI zAyfX7=3C_yJQEgQQIk0q*NUUVhAoD)e7y}4W`&jYk48~NDGDZ=X1mw-+5+7?mh~a@ z27a$UF|unwT~&8GYZvETWlZ+%M;fel`XzlZ*Q-!%?OvSkBi*iP==2~fmoj-PaaHXR z@3idu9l^lE(fcqx&cO6|Y~@wW?grF-Gf3F&$J)h(5=xvCu@FkCeXQ8%Z?cm<;R@yZ zLKjV=JY1rr&GoK|-o;AU=ZIkIUe_WlOZh#PDJxRY)Rd~*hnpipDltHU9W0Yf++*g1 z)n0dJpdYMPICkB!!B3-AzUkFt@VWMz%#KHO=cFLL>`FYlGLEFK4?2fxF;KWcm#V~c z5cQnv`Y*6T4kPgbZ^c{s%i;Y@nk6X;6*Z_X-nm8*bJPSRqZ!YrwT{^!t zx6Sg4;XF4WW`Ndb&Gl&K-H<*59nG3l5!83J+F{XtsXC#~%DO;B&Xg)qGp<&L+k1mh z&K#biz?+ax!P{OOp{YMGcHoTVtozMDLT0mifCVqDU~^j8R#+(=Z_une8ja^Evpag< zz;(ay%~@BQI3{nkAwC-b^LaoL^d+ zyw}bE$Ly&(#5M<+t`OV;Z2~G|rKP_BhS`X{Smd|$jlYMjv0t|3T%{Lm4QZ*zC!dWi08M2Y+Tr$hEC20 z5~^poq`Z&)OIr+3|BTA=&*aaY^K}eA$gNT^;(^MP>-+J5tkwsQMcdyLPP62#m+s#P zPTy?OkR&y8w>V4kr{ALV-M4f}-3RURN3Z$yE#n?bFYxPY{NW}`*4qW3h;KWMH@8yx zWaA4_@P}RNUd@8F_*wykcmEJYugALI!?JJpLzzGnc1_tm6!6=Y?gUDv-&l`qMIao| z&jAGcK5gs>c8l`sXkvt)ZQm742pH|TefN`9RPkWr8D?8B#a>i#*BU*pBCHNNi+SK! zLgIUP>&RHlf_|=v*$-{#EJh}J!?VQ(A$W-*I_m+K-}6pWx!wxHuT>umxHP8epDeLs zY2ZjDR#<&37x0px-y1M6^A&vBP?wq$%TH8iU%c(z@*eQJB;kr|tuWC4K#bxcbq+d7 zV)@vOY@duO?GR=C$1Vj&mE-~oq5hwDZd&RUoP!z>KUVIh=`;9c;mE`uy-iA*drfgYF~3h1egM#>L57P zIR6G=N&%nDx)UytFH)C2Q+_loy|nEyzZ+t2qt=yMVd{haO?jEf(#B6+MdE_65 ztQG5>8fS&J)2i6U(#xV1^#q*b$*5_Y89OQEo=@h5Xw0DhGrH+`;P{^@lcKmp@)g3n z+OCZrzXJFK?%yrQ66`Hwp~b}#0+XF!oCMP;WfDAq)`A&z7k0cCEgOO+;-Nm)k7#=+ zp%ceMExe>)_=xr30E?`?XMMR)5Dh#Q7>}#{#hli~bZ2uctBLwRtF{%|-9YGN`gf6_ zHFmX+I@&!QF&{haUQ&GeygSr}s2O3!;iREJN$HRF#^e;qzGIszm$?JtZ&NTR8>sY^ zGLdc6ISZ0U1K`j+W!QHuR7GFo|c_-EK8|yek#LVlbQah zJuq7Qme7EKM=Re~c9hOE)C`2?k=`ePR{CpZbm*!C`}vN3@FedK{_UqLBk@fXU^VQB z7m&T-!Pvwd2yOJ3`UT{DX6Tkwefc zVLz8q!xeD2DNkDAGU&eOG}kP5^KapwVWF$FDkB623FB7>SyB6}i-{WxZ-2R0$du<| zON$LPz28X&3RaoWh0lJl2uS(eGTi1&Ls|Adw+Vhqi8dZ2uQ{_uI(P%CUl}HiY4o`y z!n{PhO`u_YfIb{E?TVExuHlG+{d|sFFMS!M-nghN#8z2Ca^~m4io4GD4!ZtKMvQ_q z6G4g&TzR0lsbDBwy2a<7Y7xoUo8sIqD!lyCDIB!l6Y;@oDEc|}Jv7YqzcX?L)dlAt zHOaz^)Ohs%4=@4<)xe+Q-1*rjQR@-Q%gnMFLF_GeY21~j3>DakcxfsgQ#Jy8># zWt8wPp(^G^pC#|NWn9cEXdK%{N8m8F#JJxZVP57g_j+|!&tC)iX!dz4 zO;O@y0FrDG~WvYFm%zj8P$*Y<$UG(osrGx8J6pFXFUa^2Btdi zg--d&RWe=*?X2}vz=w&%t3?g62CnC~okTWY>n8Ug%vUpa9|x%dEsrx4LK3F{eL@^6+?Y0asGX4YAI4%JzI|^v0rTQFyxR&<0hCx@1i>!45lRCazF45_ z7!Jn~!$g4BVFM$4v>N|($T2add_$4yD`8v_S^KDn@+VVLOSqn3Y@wAvbqItVAngB4 zU16~9$s~z-n+RWXq*kUfNOf=~hkk)ML*?67<5y%%lIe`F%<;jYbd6xN3WV4j7?~Al zitAasd*w!P(Pk0VKPL(=?7W?>n+86FiT2`~m|xNC?Vm^m$l^#C5=Y#F`b&)qFFYhd zt|7J5rKrwGpvU*TPRtFsl!p{(cR#%Xw8{^FBTOrKc$v0L*=7Vzw{AeX4kyUg7IC7g zpn2)(q3O%VZ}kiR9rG5DAdb5?s!&WUjE@k+EnGjYJ(8>A%_E}m6S+05dXBO@8j zJ$S8Ql-gFs%p(#rFz9I6UQVgnF_Tz{9u!&Q>N`#uj zWIQfYU&ylU)qf9%Ug6$ErP3wy6N|MB!IP!l_ZzV9;NThWm{aVuY|sL7-W?4K#yIP@ zS!>_V{$|Wp2m7_&-uwHZHKnqZYk~*bR!FHxf*5Hsm&97D!ad%cWEPIy^3DQ#lhis< z#tQTI!gJb8fc!3^zBBosn!kZPxmk$0$Xl^-e>^$x#BGG3oqby=o!39)1EJM!dl}`| zg0uS0^{b3~>dxAXsBBV24H0$G@KEECnE4+$&c@e(>gokPn>FC8lje59Sg;svRWsn; z)XUX>5U|cqi0LHo2IWHdscI6$HPXP~Q!!~O^6Se-yRKo){0RG|2edQ#kV@PFcQpc3 zPaS^wKM?{U47L~%ii|?b)$vG4=U|b-bqf38Iu4iv#fN>tyGfdX=^WKKw~0d4ZU$2l zv2z%pkLe?0*7C*3L0sc~)`m+mgQ(q(7Xm~UTdMy@BmJl^p1@VkYPOPtmy+l{PS(_2 zV?0Jy=54O2Ly2sG9WlMqg>t~0ADLr^IDia3wxiECIN_W|oP2_jeL428fgt8w>fW#C z1an|95SiS$T?TMy8G-;hfV81hDgsDHF%z$eW1`Y;s3EE026L{Zyao4B=zbGS6)epl z<`R$?sO7JKK@aow(b{A6d3ON6B-YF;5N*7wZAp^-|8b}gs+XC6V`zO{Y(|IHSJq1o z+Qu{^GY886+3>|IVzhZE2D{xs+&ux#&fm2BaxNIDzY)|M+9tX46yw4$P?cE$kSkY1 zuXS`iBK(Z^OX_BBi5hxNv9!4^T|U&)0z_O2)UXG3iP8J1D33jiEpPo`)f4uJM?k)@ z_I1`|z$>$jTUQ#Nf6w2!l>j_*)N!_NNWG28nf1EO7)m4)460;D+g%JQ@kab^ZwhQB zQ8z47X8HI|(ef{}zjYUCNUzpM(<$oQTe;$JGwxpr#d1t7(Xn&E57T{BilwIYISaND zb!NhA!Ufl-$I7*9-NR^uRvEZbVqS;n8Pzyz3N9@}P$$qCr+U4}oZ1bC;u)g$GEZ8v z!$3kQfKp~>-n6&O&}Df!5%4IM{s)wIkq-r~e9tZI+)azwNL(RpXiAtMSR%x+3MxI{ zUlhlu3-*EIG`hqM#}SB-<&t(f63`=(RM8}HFXqB#DYpf%H zi)@->?BWr>bcx+);MqCGrE$`ASq}w}h<` z|6fYZ(qSq>jzx8r)LG-=&NCRzMsn;Bf*jj4h@6T{djL>Sv4l=Wmjr5HyW7*i35;KO z`WerMK}kQI<*Vcgy(QvKR^6V$@;Uyde)nmTPoFJwlpew3dIt zPgW#u6W-Kf&jVX!Ie^JFC@dAEO|vA4J9*8wE=r*ar7MMUUhgA>xLbUq- zbM|t==(a$}G_jZz8Og+hjq*}Eh4g{m!l;~b(`Mp&hFY!jkb>E+ zK*uo-+9pQE(bl#12DX+hc5X!zsqnvuSb^Rlaq=6VIhMv6mC+~7(2ko0apzk=6;sFE z?3vd)VyCFQo`Z7LH=57E>Z@~t;JFvUzXtOA?MMKq4Y7wOxA0Jg zjr+)`sLxMuu6lZM%QkO~toi9L!*G1xD_ms)=9#yxmQsxEBM|B_jI7_TTNHK<#wZLY|sDAZ;bua(O{A!Vt1-DV7M`VP$^xc=w)Q!SN1Dp zi?|AZKAsPcU!Hp?4_-j9QWVaTQQFx2_X#oHcnrK1%D&p1tLeL^@`MjlzE^^YwwJ%C zZ{>QP7_gC9T)NGu_+PVVH9zt0;4l?R9tPR{K-IHK&cV0ZL;$lP zg;$g!_h}+?q|z&<(1DUcN-Q&x-44uYX8m8Jlx$#~(bhklUVFAA;99I2LMc(g`#-BX za$ss-LC8i-pj0R_wBEQGC{#?x=o}n3y*Ij0{EycYPnSwB2TBnIm|WG48zl*0V#ta; zvOnrnX5XOgD#rHYczy(FSG**_C7#=^bx4S3)miY1Xp|)DUd?iJvY}M0MmVnX9t{Va zg~2~D6Pe68^pG#NCoo8CsIvVMS0=M|*wL_&fxGT!4@VX1l}PWGCI5lTAM_Qh3o2ZV zPBC!5InS45n)cUL>G`h@4i1%oz}($EAxRg1*9_Lv4yN2n+7CYa*d5SkDpT!U!Cc1! zRfM>3!f#~Pn+Of6(MUrwQ~DxD9Qk!!~-#BosM<#0uBObw78OHvYt@~79oQ^0!t7YD8x5Gq z>A(is@Z`|qrI9>y-tUD`8sUBTwd`j`CU2sJ+_DKlGm5meIUn}$zD}0MQs{d_!oIBV zAa9icQY7QzZYv!hh#1J@8gamy{a8r#m%;;4QJ&?LzZt-KcxTW?cSh-6uC_X4rwcD8 z!D8e|>{8T7qrWjAmB$B z_`|T%Suu_9AD*bWt=wJ(?Yz|}r34lCqt^)LRdMb@m9*s5ECXM(mITqSyh6u_fPZT^ zFKpOTbWDz%Re$7B?!c!G8)`)d(6?FT(<2or4mGjw7C6|MehgJCl1PKHBa29ztMCH& zJ@2q!q4K}0epG-tI@9cic6k)FIN!XLokmm}GWkN9F7mTX#deC2xc~Cavj1$)&dLv4 zHVml`kV3K@7*aU7wx`i5bXJ`b(kE(q@Q4NSvQ(t#y;Ck3QG}F-aJoPNwxtAS?Z^mk z!nE5dQCsn=yJqkByz}`1l8~zHJ0q_}GwSF~5&mO*0Jd!X!+B)>-o#@ZpIYq&$z58q ziwW8ow^#$O%?R2Ft~qte5o@jEd*e?vtToo8AYg!r!E&)%l_MU(+;~=?xgE zD+P+~Rk|pH<8oIi|EQEOuYqKyvpZcXXk;=T+;|K}p8}R<=RkZn_Ag2CKFABms zjTP#T#}-YN3e|>Nh6nxes#NNYDv`b1rrvP?5Esn6Ci~|aenuLcxJ8npDAk2nK@5my zh&{H@2c2!awx$*Ryoa=u_Z&-jQ5x#f%hretc`dmXw5D7|^m`AiO_*^NQ$OEwe<$fg zk6KlV@K|RtXFVcFJWbJ{Ss{TGeMTj?)lNl;L3mPwBN)kt<4zS~4YuHNhzx|lY>{`= z8sP*Vr>q+6ax|QkGmSef2yM{xsQ#IzSbJ6R+8ef@dlqcNmDTOP@R>nlwgoE1f!3wL zJJ4=CgTaWjP;9d_x^kkJ(b@KzO z(F6PmLpj9_5y)rWJ&`B$R;>+FgeuJbGu)01k-#>Gy{}c5Ck#Za2ej)8F&QE#MEW8- zf}%+qC^OPsmPTAAns*QQtLe?g?dBw^HCK~%+N7)Pk>DO#XtQWW@^$(uP0P6mP!wpU z;o{(e6Xz*#`7%oYv(z6xD_nIlrRzVi3mnYo4wMUxS&(i)T;V25Y&x$Fc1V;jo-1EU zlVN_wPgDd!{EbiznIcO%NYgksJzObtSYyVq2|LP1d$?*0w6s9tfjY7x*3#^>wB^2r ztLpAWZD>`ZNdf`(B7i9jkw{+zUl4X z_m5U)$1161@S7V3p8XAIsIB`fx~4fX5g{Ej^fq0>e+zOVYor7O403BYBno`^?ceA_ z*jf@k;F=*CC}Q>duyZD{+aWYN|Lb}>+cgg?=tl6(Hr4%2I@CEkYorb&?P2kO(99c~ zI4fRjw;Rt;>uec703G_5iouWQ1v_{E37vhUVc*+G~8@$S-xdZDE;giBbT#2b?eje zJ?&;29*>?VcsJ2&Tmjir9GKu9!$%(#V!9-m=3O{Pj)BqmXJOxtUyRwCHxlbOP z0w%+~^+HHF&dfcdoa2rt>;zLL$^g88nuPnigMJBBhPGk2UrptUyfE@AugCWtskP97 z>2~pj3N56V;lGN00>)l!cZFXX6hxgHpC+`k^6aJ=ZeJW28bHY7tPDN{qNHM(ArKxE zD$pGEtgbJjXkGr%WSU*RiqxAC@^gKppbbUA@}#kzHLUu#ji2Zf2q@ndR8;oK*K}ny zzUA#QeR}Bq{Bs(KH!X`(H1-6-vfrM0USd2k{Z{#rV!w*6YKP4E<)PtMhC` zPDB}!KGaya_FkZ`PCHR_FtGAH`ut0G5kasaH?N_Rwx~v{SX2fzFUIh*=o!T;i(RwX zer@Q~jYmF0x!#3}nu(nI6sYyvr$h5T^)(*;!X2xct)1&1go&au97*Xb@%poxzD50wDV`iko zF$-hKqOJhnkaHCJKxRK{X!IEAc=|b23C&_19DF&{=ouJw1UK$J)AB54#IP6?BqvFZ zb@tiANI4Hx#C!Bxc%tjbYk}&U%@cP(gu2~W$fg)1&Gq43Q;$9>@vpRYs{mN zMlUXzxO0P7?X#ZM#=9EzkNAwWSkdO?7cM+PCSgRaq4e^_VKvx`E!&+YtyZgJC%Fnb zQG&w#x*po>CF2o*7#Jy8dYB%rFPcYi(QU@)ZIf0Y+W}*gOsQWS_xI)jiHWvAk#%L| z)21eIbW?nBHZb%!cODVeTlP4hN#?}7(%7<{Jk1;Q2ro5c*N0PAQb8z>tk0UpsG1)crjCBJC|^A9Nx{mqaGCw}%m>fNYhCka|2myW$U8 zA^dC|*yA1y0XBdV6D4_L`SU|(9pHo*3OLVgpQI|*J+eNAf3svB_^BMh0e=9iq+FHg z>H)7H3bCjF`szF-;^m!OE#NmL+*beyKpYisIs+(Hs6Weh_LVuC0u&nh0cD=#X1q%c zpHLyz$o^gI=yHG;s?L3IfwTQmFC6+hUCH24WnpTp(6(c*M7iS8?#+<9O4%&FinCVL ztxB+lgR203Qu@ZZ5H)Ei`XHyb_MB&t5tt@%y#R(fWnI9;tPihf^ zCxIvZ$O37X4Jo~INJaZ6oaZzLZb!w?Gmo2OB8ktzL{_MIIbVEy95 z#EU!xcE@$iVi4;0+Typ+_R#hO?Rm@@ax$Jx_UdHIuU-n=@e^hzs34EFJwWlklJ@!5 zN3PKD*Zf8ti0Z9MRh*69EEIf72dbk^bc%b%fGuiX>UbCHY9dgiTncwM&O}uj89qqu z9?mNtXVsIwp_%vYT<&?d=IJpGSWlK!Wb3=1?O_-Mw>(P5_6};^?8k-W#<#|m4;C{E zA)!>4p6-mb5!R#T@-sU&#TCUJLjRqm4j!Xz9DbBUQFW#L+E|*Mt~5Q>tX&+KaGPdh zgSF)$|8KF%8}}P+;I$`HdN?m*UWT2VD9E5}G-7E)Cf${I}1~n z`GR~;EIkJea4JVf(WZx!*!H3R*4XxJTyBR2xCFTriPgb4(KjovCIza!D{vW`DoS}z zG`43@$YF9?R)AjVpU2nz11F^ol$zQUss~?xfG$|mfX!{1WwU4<)_3bS|%Y^TXy9%QPd=9jq$3hqMLs@^kDx>Fa^tx0cf% z{M(PDT~c3aMEJ`3PW}^6eF&V!^{}G4?;r;T=tlEP_>z!JJk@T-;H9f3aM6fPRXVTC zTSGKb#xWmC^RaGjH{rSg>GX=}NnEP`HUAZpHzCX;_uBk5>?oM!{^>L~Kn>4sAzph! zWLgFjMlAbKZZ_!H_`aCGso()1sJTm;7+v%%R>3}|CEM_z&ED@RI&@3mfnlQ_nm?!! zMujv$%+N>bVyzi;(e59%o9|wUVsOc~hA7AXfH>3y9~H9KSs4$suVPcT)-y+~d1{ur zOLmVz5?%Npnmf%u>*iY55`*l681cL*TzLOT@3Vr!RuHn)&jrQYEt}~lxx;Ua z8|X#)Vb%{H!>DA)BzeS+3;VmbC#VWv(TgY5V|^V?X`*ROTi<}ti(B00QJ&(TG7pGH z$%?xKovh|xCQ+h_FS>@6f>DjH13%1PntTTnmQ6wj5mVmNyis}NY7j7dWBg?1{(}Ju zB`dJe;PNqFIF@=H>L}fr&^639*2bE0gph-bxb-NCB-l&y&PhylEt$?DWS>(MZw2*+ z-x@_ea@~z|55BaZOatW+!SL%KQr6C0*)xN*+T8#n3-bX#l_En22|vmxe#;P)O$ecC zGm{@Q@m~N!<|z_!9rH9FI!C@E(y9cs;4+0)evjcUbEQse(#%yXD9R?1!7o&IS)Q&*sSR^Sz0 zipL;^GPj*w<9_%0p;etPea1t1nR$MM6`7b6C9Y9A8@FSx!0OWLA-47PR9>YK%KysJ&|724yATj*-`YVh4G`ns3l3B9ad)R= zjY#sVOedB>{0rC>HzP89(?yY0Ymn~^B8sOj&Eq-|Wa}Z_$X(`@n(a#>1QbA&NYs4z)85JObqMM$ePQV82oG(VPg$M- zjB6Z`mK5SsGX59amqfkm+=p@38FOj|#?Vc+q$Yy=4%_Yr$m>%ZNN~gTupL)XggAiCC8U9X^T=} zkd{8o%2d%^(KwTOKTra#T2!nHL@b(`dk)Q}CTC$xff(4>fd2X0PPh4H>-9Q=@g%d% zZu``Yk~{l#setjgdz1muAw)aa|Gze1Y2Di7QH0nJlCiV4kuy$z;$NQA2K_Om$FXVE#-B__CW%WRW}rFTv&uM6 z9A+gbyId2y9AfezT)(ZbM!K&UAL_m=&-&X~_7o(d^6FDhV#Cmwg`?#~Y~kExRYcpW zX@5CdRDC*tWQrZ*Eb=q?9H4*T=Svi6Z*)7fgZgAsNt$N--EN@??E_Gj8tK(QP~V;g z>Wn@rV?XRhIvzheh&@KZPV?_|=&ReG_HWHO?dhy~d?Fsdp4kRbn){IkeXc{r74z=l zOV$F*VumEa?1R5othY`&z_w2n0RKM#z}v)X==dXJ&$tQLZV_zvmHp`*z2rJMdM$YQ zGjKJJ+jnVxO1&vR@I#iUUN>>W6xOry;b6spwlD#^t`^F&R^9$q)w=TJN+I_(@AUyQ zsa(yuMKGk-4n)7m+cxrpMJy{=icEe&xnwO)o>{EXr-7~HZm#q|L()=sASyfyH6N~&{4@AcfcySayVOrt#_UUn1Q$`@ zk=9KxjdBz>YUI~Y=c5;RiPhUMhzbab2VoF_@Dl&r0C{+asN#f|n4){;Ws{K1i;_h* zkrd`=f%`lYoWRm$!{I1kN2Ll*jTX?J1O;SJ{P8tqrC{8k@|o0C0Dgjr1u0h|7?wTo zWV%czE;G1G8E3(99iu*o&ko$JSSz#8xG56J?aFq-Q|ih`?7xejBK4&#?q?TcZ#oFO z3F%i6 zP*c!Xf36AzIH=x>XU*vyM=D#niC*RdOyKR)JCujJ+`+&%b$E^p59D`MdttCdVR@vn zH#N9rZ!MK3kP}jfBUZutzd!lS0JpvGEw1Z%FPu2I6?L!IGqbI(0YkW7rr)~6k0dmh z0v)pXHBfrI4^;a8;W5~9^`*dc3^{w_*gHOh)h4Qgp*K*($nfsC5fn1knSVty&wZ#uPo*(K% zh!;1=1HBD%kF1GH3%0r}@jt0DR|$8A^V3xBWiYyHIIXT7v-^wWNbrTkI7H2RC zUEviW@@8CGYt+wAx!}IiR7}|Ci(5NAu*8in2AJS&Mcg}1dkV9oc%Xy9u@LQ8SIge-iVYp2Wm89Hoc+OS;|lCX`mxSD=6x7_pcMplhk$C zl-3~3(z*(x0LJ%>F`|W@5RYe)WkunOwd$3wtsMg)NRSmrzX1u5@|xSyMtVsfF2f>k z0$|WXQQi2QxDwS-IpzuUg&I>FK(U-#KU%*)pmVY+(p_NTD~iu%=WZ#fE*1+^PQUt? z-0)nk4Kb-U_;>S8f-wG^SlVKIJMs9t9sSr6jIs14bFkGVz3}%X1j8`7L%ngI>F7mpo_7>S)VS zGCIQ8*DbLFa`1VaBB>{`uq%q}nZK`4HU-P*GZ_xK^}gqGE~_UVLy(6ND%>)KG<8A% z2rzvh^D(b`W*VLLLJ*Q9mv=)36v5=>rRq8L-GL?4ap?BtvTa=#@Vic*GLG|On677? z#tT;eEi(HtAVQ4v@ilG*O8mQ$(U&6}{d}PsI#Un+mx88&&QRCPi+Xm8A1^LF^{nq{ z3dZ%xX0@C%MG=DY{yFDq(t1?qPbw(NFf!5>Q^|4LaJB}q8&(%kJkf3zi&J1>h1!XA zT2oUA_-r|$y&CX2D8c6mS(<0+dlT+E1l@K*R%umE_QH|ix%_5ZD$>eCMeV7QP>7ecOL7?9Hf)Lf{Nc>@jxQ%XR1 z?@~O3T^cLE_C48OXGOQ;ZHIT!Vo-Ld z^h-WQ8Mx|#jbUz%{QDgv_ZX{h!tJ(VmsmF^sYlC>!3vqm zBf?EHyUG?98@AP84M z0mgC9Ge3BYxLFAje0p02C36OIC%0Jhu;lM8B&->uq({lVp^ule3 z`8JW{TUc3jJ*+F|x-sV}X7ht|Mj(TY!5t2LdH!7W8|=bs3<6j+96BAxq4%3$4!sN< z#6@~Y=J?ttLk`sZrK1@`pK9#LE4dj`A-_WwBw`_DOaD{4@3RZ@>4Wad!9c#?C}b~@ zhV=rxUL0SfSIaM!OK>s^x{$+Xpr(V{SL8%0x|k*2K*2Z_d^I~js8tC1W_W=S^RT(_a$b44nh7~t8ZqqONrimO{qjlxEN!C(8&7Uw{3~FL1Hzp{W^wqLT>G3 zUd2m7dw@-N;=G>q)wOpJ$yAzo5#||xCCkqC#f!5D62hXIQ5eQAP82c&Cxmgn(q&|K z{aw*+>Z?qC*Auoq*Z*k>E+>Qqi(}fY7bBFskN{i_SBJa#24jThel-YReBGWBl_2X_ zrZk-^ihl;)JW*9DuFgjLw{NR-l^_ZiV@72)I6ipWf61t`i<{cPTX7IFM}ra-3S48l z^#~!SBa+}kc0zI7v5bLMg4=;=#m+}Pfu5c3Q2Or*VvQ{4PjaVa4qT9qzlGQAMwvDn zsD5AuZZKcdJBO>@Li{vb4Xme`ZbB-B?xz$yY{1CI%k%YdbZLZ%qttWLrn;@*qr z5-8=A>PUmk%!p{delN4y(khepq0OC}oyV(cZA8jo3@>2h)TE2jFC$C4f~cG@w$o1)}9d zZD3KWVdWwqt<(wOscf@D+2kir1jh!xwZ^44U!$bbGhSd8wgpO$ysBU>D#NUP1Xid? z@!*F3fV2Yr$|zwnMx|s z!b{-fAIonch;7{T7KpRJY-|Qit%Ad^c{E>9A=*w3B1H_%zinBn-4nFts4?jI*^YgW z;Tblb9!75lZOvs$wSy^3`Ewe@CQ|OptZm&r`;1#-M^K(qqG)jo?n;?nj9q|*M4gst z`>53&p(`BSxj{Y#VV^bev!3_VQM9t%M~e)yno+$uR-fD?eU&&s8|PBLuBJdu$z1F= zfX2yi4-sw%?T7Z*vqE;kD;XkHj<7S+a*QIv z^f84AkPf0M>>k#3vOh!2_n!TV=-aJ{DJhi$2QO_ml%HpSi7V?^o2h>AKm@21z@&0p z=@kgw-;!%-=Um`x;X-^m&^;=&u8^uwvh;As2=NHXm98h>>ep3V^ZUH7z;I1kGIbUX zJb@AV(;21acD19uskhDThuz+IHXtSUfNIlxC6x_CuSDl6KoQEgZ%B^PHyS~4F)#JR zbdevlxRJQp$r2RJ!$ju_sU`$E2$ih;;{ntX13GM*9Ui8BrzrtpnwWJjrfb_FGAz^~ ztPEOy(Cw4C0SSxqWMGbh3zxS7nBe#>c#9g|6|X5xPoQtzK)>z*?b3gAm48`YJe3YP zphOttdVYYq1<wl% z@sZZ_Dyn~I(H{_?r<5M6F4ou_$+KKqY)O%`2g%#I6eRHhb$H4J9-sBLZ-;#Q)>+p7bEzcSe$df)k2Jl2qnq_%-lcF0H^- zeWn&$MH8wihYQw{O+HF$?nVUofWgdNzW){R+Ak^-7f z+|ILK3^NR5^r&IRPbghjC~kL)SbC_1nC0E3?+g~hSBC@%US`GCHy?FL>Dr|qKa{hPoq93 z;ayNkUCZynN08uuVo%WZUyhA@!B9u78E4WaY|dDXYmfKKf?lRAcvk&3s-!}Os^=RL zevc^Zk`yaYz4;r|Hrp2>AUgI=g~EA+Glc*U08{A-t23^cC8#z?@7=0AkS3BE(M+>C zkLo}S)JVo5JF0F1GHct2PVvYKeaLHJy(|B#gTB+W%JKo-f}lA`Fh*`ht9 zu$CMwZfCA&QM3-kB3s=5ZnYH~Hm4L+I+njYP@1a&I>E~3BZDO$JgASIPkzMjPeYcG zrZP=gx~S!im2w29%LLwBCN8>;h)oZ#5yC3ZDa=5-RYoO}hKO(t??Y7SAc&Vto`qUl znz(7R3IQotQ{bk`5e=WAM{msd#x9fnW{59-4yUWGPdrI?lls=ui1G)!`>Y-hN9~Kz zmIekL{M)J0m6MDl6aq7&v2R`D>8ityw>YCzGGqwCA=@igTgzJ3tE0TibA=JUc zbw8kj+2da_t?zoQE3OOiAHak&FcLz1PewRYmLRsbv^x+I;o7G1kEs$`?AuvwvqiTD zZ-x$dJ?CS8nMNEDQv77A>579)3;E{?ER?CCkD!R)HUI9Qb9lCto_brTza>3ngwUUZ zq@pjnf{5Wagg5f)&$m`qO$jtDwl0>hp#wU9Fi9YJojgT6K!=P&RN?EK098?Rm9!iu zrN){_V0`$WcIr9@CU#^~r%v8ihp3AfbK_8U}eF~)2R)*x|=sT!>CiJ>XW4!$3Js#%-d||op zqLH380T|_(hC4e~TprsgU9Yvb&Q&ZQvZ#K-YNd^eYy?O#l z*@aZSu(2h{V#Uc|?c}erMTMeIdg+gvp6!Esqd;d93;f-0?Zcpjx&dLKNR_iLAMTH> zWP2r;^Q=UfW+YuC3s*r7!nkH%Of{knTB0#C5+mipB;waR*Wra@v$cQ>CIGCujGL!4 z#p42%a4P*pt>rT8+!s4XEH5(mkop|mz~C3p)OJhE%lJ1wGwIOrAQ zBx!CR;?wvvVB?%0!hLX5>9*1zNXsh+eEBFSPCK3Sbm`Y$mEt+5PKZ#t*Qh zVud3s>lsJ+Oa6?c2~4lx9m!I*z4Fp!EN?-J3Jdi-j3hQQPU1xc)} zPH=Ex1{N2hG&tmh zsA$sL>iYyA>C8Oc?qd_|KT#__~pef5-TTxFntJOlBs9@Ng3BZ(V za_LI@0~P8B2?N=CCNfoR|Nqe=L6;0~vZ9}y2{Nmg-$`O=n+8nxvon4>o63<#BJ}#E zrZ*S7;?WwBPu#bxDJVcOTZ?^5s~nS2S<#*U@UmpclM3HhP>6PDT;Ij%wjfp;W2}iP z@)Hj651>ZwcIq|Q;NNJ6V2axUoR~aV_plD&sD6qH45obfm%q|l;$=c z(A}GFHHmfS{8M3&6M<%u-E60aKC&Dpm3k|kMrhoAo6Z0l#pr`WN%{B%#H)XAwPUn@ z7!#OybU~Lj49MSsgTqFEH)qkUs!-BPC$0loxoChGU6Fufq_55pI$+l{2*=&R4B;92 z$8kh+AEQ*{Uf)=jPs2cHh8(6|+CNQ+&-`jLi8VgU!{LHrRAMEp#-Vy{@Ca368u%uD zAlqw5z~dIc=v5RMN-mGFqf{36eb?*Z7!`_EF9?cvg-B{jo=BQGE=&`0i84 z|K+PMgWf3alni~Qt2g8ZoTzD9B+5nRI@GSLWCc&TWUGp(ypAFL1Y9PllWJmd8Nab>~LZS&p2%4RsXW`S3G_Dp&H9pRT5fJ>yc_1@ROnw`ADIF_b{dw56;v2>(LGTH9x)#!Pb_2hOG0H^q&gDRP* zgNG+y3FYBlk>#Nwp|-DYr`?4Kq+6rToApr$mBvS|(Mo9BvxB}#K~Ys)W8KZE{*cBgENOjSE zGBkP^XEC91b1Q2%j}nNOA{%Jc_+^~LzM_qvJa)Sw`<@fE2juRm-rP#EoQ=|CELm6l zU%(W9%(9+Nv5RMnw=ZQ4&Q6s9Ew_Hy$%G;o0ASG-;DlY1=))6?ym$hxq_O?;O>N(A z_FeXXzRzAjslCq5)&VAEn?DQgL_K@5$q#}%`4s;Tp|d64zlZK01z-_ldszL^Q}mai zuVe^KR6v%RC%{^XA6C1%l|(;74R$kG;#DvMs(pgLk#z5)hk4sg1$`F<8sSr)SFADX z=i!H-ZFZ1lJm})TF_wQlyY1U#d}PnH3lDO%LM_ySvR4a;Ryzu>!y{(qTCWl-e1afb z_Mm%FKo;csuUKd-gE!=3O@XIUDK5Luoh|i8%!nRBn0~mFS2-?fIg2cm{P2a;i{#`L z;ykGvDkBv2b@iD?2H7AADGFijWTAydfQmFhqOiovv@rdSo<5nAE!>N3)z{OTOL)~@ z5aC_C-^wb(19@-4mp8K~HmGaQ0UNn_z3(O@OYWBVFs&k_2}tC1pmHnocUE9#AH`hB zCuXdeFh>51)ryxv%m#)>wcf?VP9Hag{DD>QGGTtD*4ZU?CJXY2*y|>#3e>CHf~uBg!4flOf(r)Tlr?e+scD*bZls%=>E z*r?G18LkX!S>udpLLjRQa|kX)9zSz@Jp; z(mvsj{)%fG)0U(ry*%mioscQf|ydN?efx131Q#4(d3 zsi6r%`8%K~GWK9t;ncexcl6Bl8`2}Ijz0JNc{bb=Hq(``v|v}x zS-Ti6$of+Btc}z)`eaPH;r;_(7Id@<##RQ^cFhwZ#b+S|=|J=dfL6U;55(}Zed%a} zdit325@o-(^YI}`ynY#CZ0L9e~NLB*slscf2P4bH4Inl9owB93ormogU~ zS$m^{`Z>+X=VOG%CZde?wCxwcH&voDp&+#SbsoWgdgclne@f?lj?( zcJf%->+Q5?w{X)G^Rzqo06YF&2(iKhuSXL37o@)W0vG%8I6x?L!=CHdgByM5@$jIOI{par6uQW!D0T74q$0{fJ!FK8z%3?uP~VV;Sh&DeO0csV((G z3%da1KO{q_BrhYA(UyKu;e&eCF83c&?QyBEs7~&AKiI9%3SgYZ#?fA+o%d26o`h1} zeYlVZ6Oe@rF&;|?Yq!zgh=$iWLq`mJr(J|iL7#D1QQ7q$ z)f{9H!c6WZTh==Uk}(npcMqf;TEf2>&rP05ilt}zH@c zAL~_m$kI)DjAruutKn$nCYVDdymq&omvg_K5@TQc6gRc9i^jiwo<{XlZB(Y?9uG}u z!Q_SM@qXXSk0Y`FoFvBxALSrx|BA^P$h0_VX;?AJ~l+%Xs zL?HC?>cg?AQG}J94_-*G+}grQaI7J=%WVdGo#WW7n<&Ib(*owbri>x9s*a1V%weJgtq ziXe>n1qr`87Hnxj7mGN9!;|@08$Nvi_9F< z=dN9P{Plb#UVjv;7Spat^5u!q!aSjX)!miHJ%0kh|ZO& z)7|bKl-P*zMJ7yGD(Q?ucq#bkTvB~u29=6pCA15tTmE(1N9>csEh0S((atCa%;n&b z`Mx7~QOdLZXeh!+%YX#@It-keLo(P(D8yYp?S#enB1?l1y0^$Lx$_#f)bvyX{7TFa zp;mtNkL<@-5v*jW{GUVNONlt}ROe5=vgis269_#U*n=t_=EVE@Efqk;mYSJ9pd44GQE z3w3O5Qi7VV)?EMRchc9LWUcPw^l@w}RBX0vuD~A>NiODHUV)?A;UIZJxA%JcI^@RU zf)3MvPM=Dklzw(yu%Mo5A%l)nj1DXb4h@)MD%MlK-_NFI9yv0XFd*dpXKlxb6enMy z8$CnV(3V;?@Qv(42rd=`H8iMpV2`@^cd3Y~8nA z1*i;|IFU3BC8qtcoR=*@t%53OQgQ+^2oZWSM2$&}IQjC*-yH0>$C5pn51}l|NTd`J z?ua~bB&%(3ND;psUc%Vjp}Dh1J6)cgMPkPtqG01k()6gBXJ(i^n&@q$d&X1aO`Ivd z7~FLGqDLql3YO8B>2ac%Hc3!<>(r+T0Eacle@M3tC3`&BPZ-?w;V{`t?qOm6L4j*BHN(fRzTq=*;q4wOo3wJR!O3SsdOS{{aJr z^B~UZ*_URCQ#&yR#KcX)M#Se-ZhsiJzS}6C z)2OYzT-lFQx#$acHc57;jK=kn&Enb`+x7hn0jO>o3jCGO6oEiT=Old(5A(Y6*FbF4 zFOqtae_=RcCYvcOL(Y%cK`Sq7c*vJy+6Lh@dzNS*PqqTQ^_O#acw><={wp}*3Q7KE zD5@QdSHl{i((uSkw}%hV;0vv-I3fENk&JbILO#ew5-=l)w*^%ngs#5dgB`|o=2g6W zsZ48JRA>xpLzOpb7zYxFwzYD9i?2I04l-<9yb*r7&!x;!chm7jgb~?<)V`X0t)+{S z`XS#@8m;~DN&H---&i->xMO`b#6!gx_9AFt8v?en^^BDj}IKvBcTM_eqHqGKi~J1|w4y>(#?=6>YVD5;ql6F~nq@xB!y|D--k z9`4wBTtMqYSr@#;9~v#0JD95T+4|XE@Ez#Pt`Tp=I3-uih^5e>RhtQm9^|xx`lQX72MNjaplv&=a{uDrU2eYo zeobh`-{WN-JtlD&l8cVsV>_GFPiSfYa+jn#jgJuzdn-?V8PHplYkKhDKCpQDv4-jY zL;x(PRI#7l<%Y=_;SsJ*e$qk`a+uj!bv%-lIrM$Hz64yV>OyB!+_H6O6VbJ|zSta| zC@?z#v4A&2Y#tkWlkKP-l2~zNY6Pi!Q!n={M zHm@ENF*WsIVM77^mGRGHI`M&MXJYvEXBZ__WrmAO`(G3cC0!%S6}O}`8k%g==UFMf z1pG&q3P^E%Xf{IRC@vZ;SqwIA{+AX5}B)Jgm@td z#QJ0T{#PL1O1}t(Z^CRN!VMXpsQkcsLfK;qfe<3?um)#=VJct}73bW2%y%5^&8vV^ z@KtOG<|eT0d-JehhNmsqGN&L}?2)^HdFzOP1#S{(uIBmx5MCwL8PLF->{vzO8M1Mp zuL_>nm1z4FT;m;83^nYx&9Pn0qIz)Z7|01c%h66+Pda;%pGFmP+*aXqach{WRkhS+Pz9zlK_5@GGQI}TgjMD>EY%zlyl?4>vH6OI?-5r>8pqm0B(mv6aM!(FayUEcS}Y7 zwfHBYvp_gvRStoQWW^E(iQ5KPG}Va@OFizx2pqC>-mffA62wT3u2~CC6S-}{U}C2| zYm=iyiJnbv>T|ipLsVy)&9ckz77VCPxE*$aMn>NZa(GCFs7$o*=y7hlX>0I}tx&Bz#VSP3&OEJfHPRF6o(-@X&LgsEmzdHgcuwp5b z5EmE{_#oH#sinD~hjG^ZDHdV|KJC~zQ4)gw`6MvYd{*prf@B1*kKd+C zsHNkq=0yV;VUN)k6AQ&7I_gPlK^*6?+wd0aRF^xi{k`{}XV2Y(wDi)A~x)*~)rL;DWdwmj9rPmlNe$*+MN)P1o&Us49W-5oX z1FQ3Y`BjY~3jx)XSdCSo#G3^)@C{;>g~W!Wc?3e@Gq@SmiiC2f`{1c` zztXQ#MmE1L<`r21dHHA41dbET6fTo2=T&#=5EjD+U;&c9TBFq#fGZOos>>HAS^*H5QWqD&^>fKD@ScQtbh_Y%U(Dbc# z3=w~4&#kK|2vvn!#AXoPAIEKgi3TztOqH?CZ)d?#09L<2e#0^`Wms{P z4Q5`E>7;L#shhob&(#+K+~k02xr?0#WiOKFK6=%m0^I#vXgehQuDh1)Pa0fEhWd7{ zxHFGQH%@<3N&94Apl0RR5r%w=6~#yv6r18sG;6tnr+ghUhcDfhn6sv621CcWUG*K> zg|fdZBv0jkktzo1t5%y7|3NvslNr5f89sKSmuuKM-nAiPCMx9ii=~JgYZ-&;t?#Xn zucSS!S~t?<<&(eVgw9*=-CR+AG#B-zRU`!N{|n-Jz*3_d!CD&)Jd_*SmcpwO)1jG{ zuTf>;_2QoBraPH5!_V9Gfn-_|4oM}j*~n2=rQ>V;F}TGSRN_gT_=2Tzrqyxy$N^qS ziBBT-i3CjKK3nz^OQCA^>M<`2IOO~3v_G?ge6XNL2xZ1LQ&`wR*hb%lpni%qjA}e2 z_$1G?r^^eOvAT#+-U$T8s*r<>oCg`?!!|K z#umHFOELi=5L)Ju6L+4~$Vr^;_uwt|l357$DF}sMRHenSJ)8AL3{9m>t>qf2^;Smi zXb@gP{D|8L)ju(tyyGJddpwnv7$ zDBKxExWq@i(AJ3DRs-;vh9CoU;3#ozrI;01f`(W5qya=F@9!z8pXgBa zJCn2pe)jR2p?|vY#@jP859#YWe2Fe%vHee$NO;q_>6g5?NjzqV^-!WBAD@=`T3d~< zE@UH14YYd=_jHbpUhCIw^3f}&_*3`-6m$=-WLuc!ftzp`>5xF=*OaF-F`C_bJi8@^ zEd4KJ0j?uvc@B7a$SLM-@neD7IKHCm2@&qcI9(jhq`aTBn1VAy)uWu zfVGlaSW8z1%3m!Q3mWJ zfx*EouBDXyeQQ!1wfeTz(g>q(X(m@%g6I7tR7vw@imVb`zuMMHE-0``ljHL*wd1F6 zHANY-h00TkWT>m5N}}h*$@VH*i-zb0qSyu-Qw?r`K5w3J#fp9mO&j$}h!}K+g0?sv zdm_-Q+z>|nw=pvewlE3x^+KOHB9_D)%Kg*ahlvxMGznWSE*SlyYXeKE3hJlc@XPEU z={+P9d?pn)l;U&Z60o4E2$sr1eaZvCp>=fCGZI>f@U|x2J3@1pZ4MK1ek|-uAHa!F zpDU3iQsN#ZSF>zQ8XX#B?do`L8XEW(94oj7b?EfF#?n$_W7~`DMj0oV$3E1(bdois zj*$;pCqj2*z;9EQKX*FZ5@PVXXV>;})C6}_Jvf**@--PHAYeEjHCz*i@m)L%i#kljG2 zc{DVaRtxMn{(czL91=aAy2 zeIxCqCRz5cS=-;t@Yg-KlM4T`r?X>G!ku>a02djP#w=?(Cb0JQOX+yeGi7RzlsB-L z)x)Y{qf^pDxlk0QRksFi)3K2@{VQ7ryGE3nBPzNF5KILT8GpZV&%omM7ft$nLCD?_ zD`%WXGzyO$%*O)3aD>K1WSroGM;4Emqa4+G6}Hql(cFB~R=8)lmrRK0kCrecb$!^i z*!r4h9;MeZEEs`H#o@9OUwDQMUR!;#pL#oS?yK~WmJg7rvviFmTG;G_FivA72QD)zQ1X4zM&bH!p#p&A`jS2tPt{i#G6epeZLnfkV4 zRakqR3|%RAMUcRWTiw@UI!`hu-YPb!ljq=5S}O+PcCUwZ=@M>EGqV%rY-lJEU-D(U z2%kO^IT7Izs%etJy;bS6nZ^{WIV21(JEUk{ij^7_C<8RnuX&yEaNm~wBEo0 zI&MjCMAc_v|Z>XCI*TIJ1id9vblCDfaPKYs&P&{9c*hek52^6(sZChw<_@FMHpasuLW5g4u++00YE9V76 z>@ooDvQUUM%bZqbcbu46ziEdNbFi`V%O8d%M>+CjN&pTSt62xVqFkblA=vRHu)YH9 z4hA1)bdArt*5JaxG2J|gx?DD)*l7Wc5mbb=d^&LZ!;OZgy|d)~KHTY7^0sD?vEW+l zD3SO5JS5d)D;&BSS&I#Ks|%UUWZ$rj4J2*B}$ime!e`!7|%3`nxFsx4lay#o}SC8SP$0M1g$ z6XuzR)F1aiWmxBTQdvO<0Xof` zQ8i#lT2eRlL%+^zDuURnz#dZdC)q?>aLW~z(s*HSu?J3cSObquOxI*LGY<|1bJgYN zR~|(xbOd$)&Ch3&dGsNo*OvhAn36j~#I}*ZQuU|jW`GRSFC&r@g|*ilz<_3klR(JV z6RL}wG(R3Ml7c#y=_RxFh0Aa8#w_pbz(m zuSkypsbLqqs@*@{)PK zU<`C=*^rl0#oN{RF5{N4MvskEsEV}fexFx4?Emkx8am;jaz`Mgxso7aTYuc*8$Y;r zVGh{#7yYH!s+Y-9PluzhrIHnOE&B@29v(H;x2m%~kS~469cQffN#~=R>K3J>KSnMu z3H~O3umQv?HJU?}A5MU8^lj>cS325O0*3*fGr`I6|6$K6{MG5GTR}xA#C|_ed8C$E)@}^b5)keqBjE3kVN7pWzAe!vVRu`i7dYxKSo#)iZ#O zN{f3LP5)}puZV*(s(;L)=bPBeU-}s^u>G)gnVzxJ;tnX?x0_UWZh_lOJDQ&t--$B; zNWli`u$TJat5$bm*y-=}vlnFWDwUi=iPx7ivl_og_#9MT|o(=)N~kHnNc81t#-fgej+tQ&i(@?`E>40X8v zrjI(jfXh-?1vMNXP}HZ-%=Q}o_!6g%7tWDD=hzIbH_H3UIiq*y%Da5Y1Im@nVl#EL zUppmL!L*7oogqvS&jin)#2N934n8pzlMwh_zO~s@SwO*CHHV_bBh1W!@Ah9yzb2GFZ^gO3#2Hwy6~Vy-g z0#`tT(;c7PQsNc@DTQ`Df@hevats>`V95dSCrG5f%Z)-D?ssJvtzv;gL7@|36$BVgqpH6;50R*s(SSbWAH_Gm9 zW*Am^H2*UJyCK~Q5O#CFbEUi>Y=Q9el?K_e*GfrB3}hVD16yCKmG8ax1;0w_U~?eL z?MrS(^&mK!fT$s+*Ir)uz;FK1r*w#|OPtxF(_(95yT4VfG8(phyl`1BDVKresH5};)lmPR>|t}l zHVXlED7hwv>wELqOYN#Klsgq@#@1B%woN!(L*yMyIh&TaC69$22VeoJHd%-E?ZGrw z73H09oAs?$Z1@;B^)Vt%PBU45kR6^e6tIWfGLqfm;qE=K32AFRmVb#2w?A$v>@M6X zEjBOK1Y0QL8OmuYeW2(vO03Q!rG8>^$YzNfv_8Fj9X!Dy&)*D&bakC8?I-6gJiSQc zPk7hgYxa`@Hh)8O3raOWk6GBPmFNJ;;v+Du(N>d@X{HROJF)$-QUDB zJM%#x@sW84O8i&43nv{JFDf+dcFUF^Xv7BbF%whlu~dH0B)SBc$RUNX!6U3?@6G=I zGylvtaWK$Iggu1^X7K2W63Uc4Aa{*riUrb&a85eQXm3*^hQEN%&)_yjYMNzS`X0te z=hD)CsxIQE#j)6rE1ULm?uzLdij}`ry24WiER1t0e`@4w^axr9@l|r1Fm4230Z=Bg zk2PI{2S@TBUqO45BG&9Ta*~tPid%n{LEX2G=_lH8>*wN=>kb}du{B5a+o0jWPkLP!t| zNUZ+lXBTt1;@Snx@@@JK#7e5{e8L*%3^&$R0b@+mR>(iqV&So5BVWau$mu-sUX|~5 z*6_M7q!>6}>JF#pB^|`3pdNWvE21p_A6Y_w0RKM#z)iI9-t_DYV6uIu6O3K4b!d^f zqQ;$eo{La$?$F!65QT-h4&#DfM*>Q1>R2u9u%0=8i4dJe_Jw(RP^8R7r&7(cT+{j) zXX9LE1lhY0t6>?E5>e1xY%!{J_gOW|kQH052YuMm(IqT4x>KTu37|*#H<{!xwlWvK}9Zk|zyBL;{Lgf}6p|0ic));GPDAXGxnXh^Tcpfb$|j_~2`Xs_S}7 z?{_(9?Nv?s2pjyR@Rb%wD>lkEcdfh#2USqW!1yGOxme0fXs+kJz$iFj76h^eSVBG3 z{OoiGtm#H_I@uO79GNS0MtX}Qs|^7-gW6I<@PQJvog}hk2-Ic9#IF~ zuC+Z_rvnWtZK;!u65{yi*#kU6LFMtU(X!FmJcX{nX=~ky#`wdkw888}OYEwzJOO${ zZI0X(fFH>kW;)+io6w0LNJ(p_kP&PR@U}|mKRI7j z=M$?zn|ig`x<&5>8VR<17%D1%q}Zc`6+2qNa`}HXjaH@qazzvina_sVhhcI=JMkSKfC#W)~Qb2 zPOU%}Z|$5@H8-fz75u2Yrrc%;8SY1UUf;d>t#h1d@4zfpV}%|Qcj+-TzUiqyJVQ%BS#*v95Z zJsd=(1TKF9Z;ABzc2>m^mzODR)NC;_LD$S;I4e#C-Qa=q7_+m$2vF{^E!hj^GJban z{v@0>itdgs^9b*tjV@|c)_y!+U(zJHE+>NA>_n70R{lF};H~UaYKtVz2XxTEf4bBf zFVJ~$?l4ILS}l(T(m>e!2VLZfh%6;{tjEG0d9opx{>ADA2+}Bu7gWb-ITAoHc>nOM zGsbrPV`odk%D%e?JYJy!+dylV-0f4?f5W550-AHY3>Q5a15QI1=AqZ7ERV_wfgXPzRL)`7-N^ zgGxY%`-i9SNSA&jG5T5`$M$-2jfrW>56OeEn?LcSIgJL+b4zM7ik}8!#(;FMGP7Ho z>CeG1NCRQLa70kvuq*NrvxGfjKUDdPOq%kcWl#Ufl<|NS4Fkd!GI4N&T`|Nuo!U67 zp=er=Q8a5U-0q`74_7%$eV6>=OdsAPeZQ5l2G68y!6CvpmVXcekvdl1bGLu_YZ>|) zE5FL7L5sOPLoc$j@N#pvh}EH->IGCJ`!qUxRAEE!JO3VRdOVDN0a*>T_Wx<1Gnc@L z6@~bf+gkeDTYFLUGsW*GSVl2&+}co%noK*}FDh`V3*iRp)ZmzK7Sq>|_Q>X#&~YZY z63mx6T(%H%zR6BdiqtXlU%nO|oF0z!r4-;)DqO*`MM3(0z@(@He5wFsKk}$Ky_VH` z6Gyn|Ll2LF1eIqm;am@A{xW;A6Si3r-?dWwb-ot4DTAO;*ufwWqB_l?6{U`zE zqcTd|F=F;M*s@q9n+mwVd9(F_S2_t*c>t~6L!nqDR;vMos@*9QsAvOAq50??FPezq zn*A3)Vn)DRjyOOzwp`+xnP8|WJ07A0aNj2bRqt{47y3|17x>_)I(D$RI`bL_U7Y0M zzR959J*9?MC?VWy)*RX3*0`3l0F|Pi1@jn^v^D)Z(K+L>$VKi{4>1hrGD|z$R5~Qf zSS|B&L^JMN#n_ukH~q@^Twdox#{-e~K~M0V^W3W^BM1GW=dR8poxq4CxL?^#KE+_PRzp?SA;hGW<61AIV>`n`E=B;pj$Mk!D#ri@8Wc7WVLC(b=sAnI}uFnz~hY_oTff?n1F@zPp#Qp{zh;5p_R8W7!V+ViY@O8w_`ZsFsIk_aVhcm z9jlpCS1!G84tEuFH41|IdHU&uXFRb~7qOF?5Ihn#1!B(?4-^99MLobCS8${qSOXDh zMrMzkg96*~HscqE8ds&Ns4ovUmrhZ_wM5_4S#Z==GnrI8Z$uFm!aAx4`+|GyGGr+U zK~2RvN)uK#RF5(g7Shj?Q_=0*32J>O_BZf^ETQ@cJUh!-!@%*&06#dO2ubC@8DQP* zo+AjJVF4B{i+818Ob5(8A+Ete(*HqF;Y$p0J=W+w4aBOmeG7QG8DgfU|?6sO^~| z<0L?CuR8>RNj1-5{K1xw=FtTg0QLoIhq?a1WWi3PIsEt3HmR`s zt)JH`@3}j2=%-dk`zh6WkP|V2Pg^Wj_P^_}cSO+Sr-%6#8HPT`=&V58@Ylw0u#>n2 zZ!toS!^PVeftfN*5^I8R!j6*x2ea;bHLFw62S+lc^N4zHQ!D|YEr8rN5=rp-|3XRH zalrJlC-$IhYuh=81UwoclA?{0OGVax_q@fZP)%EC(4KMqbf17;9gniKq*@1L`Mk{) zclQ}^>G%~CKy%<{)%Rt?6Xe77n-YyrfQ8>D>T6|+;pDc!i+=v+DV-akMBh){W1|9rKJvD#hE)no`x3bsgd={=jFD!(X$s1xq`9)Gkq@zz_7)8gb5K*i26|=- z_j%1IMz-%{&jDGmm~bLtVtxL;J$^)$eH;Nouky@uT(@1qY?}&ie9VNQWMTn!^hX@6 zAfSMC>LMqyr!%nW|3Mt}(}zM!9>hk_cQY~sCRTuw5?d#67$en{;3WnKp9%nK&}`n6 zx6F&S#jI%$N+j;nb9w=C1LwWi;NdNF6bW4Z(@+Sg6%Cwe!&N$74UR)hvBwFV;Mcuk z?d-90VZJfD&Id-NuLI@?mZffFW*X(a$gWxeIPH8?Fj4(;fxF#y5_$E0hvqGDSBB}} zFlbK)!BK2A-7hZ0PwzZA^+};6@hSHS{YK_ob@|w>vL(*rwiQAR9dyheZV7?V&)$SM z4Co=a|0Z>#o$ZJBNU!N3a@=SO7U@^Ye#cO#Jp$BW`+2d4w`EK(w__)2H}>1rWu)V1 zF*7{2q18ca3J~$aRBrF-klK3yK@2_F$-&p3b#G+h;$ zd>H6VJ+o6Z6Ll8)FI^ngWn1!^bhYrWxDjt@{Hjmdmhdpkt8pBs zJU&tk5jqKN<*nCMB8R9~Re~g6cg1p$H_L z4AK$uk}Ir_aYvzvTY%o2;x1~nlS60Ns4iwYSkPGr5C4HIwdyLO@6D4MTP?JO5?LXY z9Hf~CA{^AiYz{1AUH58hd!EpUq`T9#8H=t1pJ9hu4TyH@yvWym-%Y*DENC20Fm>=d z5js6rS@x&13vK4x=rwlOVv{c)Ny-*(9F>*w*f;I{#HCP8o=S|daZsoVM#9NC4 z_ynBBY(pz4Lb`-M%=>emJyY<0>h}Qv?yx z396u+T~xcVF4pPfqi8-?Q}sx6ZT^|Di*NRvZf9o;O+WsHOa}v4wnIhwB|!BUqM?TZ z$|i7JW+C~Fhr5e1RAPNc6cYa~x2P#ViIMA+S)Sj0Q)DOkz2LY)%&J{YF&`zgi^gi| zPtcJn9qM)=GOHo8WeM58ZJ_wy6kMzbmPWsSY`e$9b088Xkp!o>2kl(>4)hpEeNPfRvsQqwG$i`b6EejdCPM3NymYn-6C$H!c zt8i=%ZZVFVne^&cp~5lAyU5U6b%*SdVT*!;j6|FfT!F~hv@ImuIN7WbknA<1Gc~Q5 z45`g~qNyJud#)jy5!>ySC z6eAw2@gD3dVG;UXd1EcmZgK+bb2daRSLcpcIbv+?es@9X4zAYu>2>t<55<`bZwcP( z2~d(_Q%Z`&jC7V`FzssPlyouho+6|TH%O)26;xHhV7*EW$hYQr+dv*V_x>pcnQ5eN z*2;IUCYzX-p@9sV7@j3@$WFhj_EEbY3tZ_Ao(nHRk+h#JePjAhkC`J$h?keGY7?I^ zZtx!6NyNg9+fd$AVL@QQ0w5+%W0UBH3s1k3$HQ)9)@ytcs@9^RRTT_; zP)}%9baa-mkjWORWmxo9`<6|2 z6Il|Al?~9$M`bAt3_3Jzx}!`&(c#9|62Y)`skALs{7sY|iD{6TMoPZGa+Rtic3bES zClDXWK%4{Y&q`5749Hs#K3X@~oNBpCmPC09jE9x4Y7Ei^EF(a05LC|-uXg?x!0Sv< zXMd%EQOwqLN>L8lJy|KuFskP`zb3IaE}-hZ@;8q2CI-z-eGr$Ow5dp!iBrByi! z;b`mqvDGI)oLnx2F+fkhkG?mP$Hm=@MFn;I-9KEMl0a*6%Dvj@%YU7O{d0`4LKVh_ zLBld5X|Tr(^O~!Yo)7`kS1a@bX+h_>LjrmbAiM`{aOe*idhJ-r4fS5sj>j^eN}qw1 zyp1L>*M*{i2YS-vBkwv_!=|DZ_tUov5-P(f4rD>Zk2f zdy544jO7U$ac2nJaOqeFrM{;>jN$S`>T*xcM8<@K&S1+G#7ifusN#?*FmI9#KT_3T zL|#q|Z_}XM6STh8fR1)4Bi1!3jd<0++Yi_HbBg;dQ&onBtPZtSmQ-Bi>)h?;2MF$( z*PnZF9J@2`#$~NhuFr^wHAImXYMFN4sXm@6b@tXmQymYkgq>XUDBem`4r|Kh&%{QG z7F2jwvM&9#q3B$e^ym6C+(gc>ZmI;ijq_GO8ZNyS;2((Z zP?T1I96LB8;>_>c@M)e(k-gAzv=TGq^r+lyVqL7n^LeB_fA#4t?_kT}?+gLhG?-?VPL+$uT-_k#{APBerx-qid3w>Z31G1Kqvy@(lPz*17!*E)%Q$j`BArFz*pbmfpM5^>Rgp;U#~ z&$9O#iZxi77B@5I?XcWh3ey&rJwVpN>q1Xv?Pjm34t$NFjqbXF_{gHr2zL=$Z2kfkKWw^q zgATlB(K5<`#1aYWNWtF_!{ZzRoS3v$_X#+(uF7C{1&19-ir{y+fT*0wb3&tL{6x2m ztftX$D6PG@eSX;w743=IS~Vns)_`)zwZ@r6|1Plmg&x>8;s!8$_zbZGCqh2gz(5J+Gf|$fy4$X@p5Hx9HKp_6 z@Z1u?yabo0C3V;&@$qEfe9awTmZ7$;I**9Dhds=UL)w-~X>|etP2mKvr(GM2y zr1xTjk$5W*Y0r{%>eh&@GX^-%o_u;9q{e3o?TBuLH>`@cMO!*IrPVj)KPN!<0B$vr zpLLssjw^~)^DDy1tIkaYx#1lf0N#kL37|&P~A?9>G z^B^RWtOSaW!o%r;h}T<(9a}>+wWQ12nG&llw~#&6IIt#^4rUc99!q)mb7{ePT`P9X zYBbZKA_nc^VIqL8)?q3{mX@T11&+yckO8i(o$p^FJlDpg)t)sF2*O0}yGqdwP03$W zoK89us}+DW25TJgZ6yl9PB_Yym9Er*op}Wh&6rqWjCSp3b1fLw5J^xtY0X>x*`5*j3Ls|U@VKG@1D?#16ED{6*=ZZR@*WlD`$D@WIn zfNOWnv$JRwW0?^kP^7y7C^^{ITkz~R|DpKaB5nIbl9sV!~nPHmxu-#6SP1hbQy+4I42IlAl74_(<*)Ct1(sQ<^Q;l4#Q;bc>_p>Jh;;k3u58p9hk3{Y|8=6#Qkrk4(@Io9{xib6a?>q!Bew{bWT z4d@wC-=iV_((iNd*B7{YPh*FObdKV)(rQ~Xgw`*Jy=;HEDK={~Pl^C)7

}8E$7CD5Aw~f{MUl$|ie!lJd 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 MSZy^P|kdyt}hE{tTmuTd1 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 Dd$`d3 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260512/20260512060002-Config.rsc b/MikroMaster/20260512/20260512060002-Config.rsc new file mode 100644 index 0000000..5611f57 --- /dev/null +++ b/MikroMaster/20260512/20260512060002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-12 06:00: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/635/33f8040a\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 11.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.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260512/20260512060002-Diff-Config.rsc b/MikroMaster/history/20260512/20260512060002-Diff-Config.rsc new file mode 100644 index 0000000..83237dd --- /dev/null +++ b/MikroMaster/history/20260512/20260512060002-Diff-Config.rsc @@ -0,0 +1,4 @@ +4311d4310 +< add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +4312a4312 +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN -- 2.52.0