From e6a9bf639c184b713217a22f426fa8bb01e9f08a Mon Sep 17 00:00:00 2001 From: vados-dev Date: Wed, 20 May 2026 15:01:08 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 20 15:01:08. --- .../20260520/20260520150002-Binary.backup | Bin 0 -> 251985 bytes .../20260520/20260520150002-Config.rsc | 3445 +++++++++++++++++ .../20260520/20260520150002-Diff-Config.rsc | 4 + 3 files changed, 3449 insertions(+) create mode 100644 MikroMaster/20260520/20260520150002-Binary.backup create mode 100644 MikroMaster/20260520/20260520150002-Config.rsc create mode 100644 MikroMaster/history/20260520/20260520150002-Diff-Config.rsc diff --git a/MikroMaster/20260520/20260520150002-Binary.backup b/MikroMaster/20260520/20260520150002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..b9df4748f38a86e5490f7ad3fa382323a774f9e9 GIT binary patch literal 251985 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

=oDB26SBJ zy{s%;F0$t;iE-m!MhsWFda{yM{I&pWk9= zL@6GBvYYZrRmV9!|9{<9&R`nq$ZVMKL0ctNZQ<^w53u-l; z{`Y9u`+_-fjomkJ60_YU1ZRZX#@{AR`*!zj~jT}m;J zpE{d{umKYlf`uT|lDr6YFol0PmUuB6am*&fshz`nQwtKg&1ES zHKyx}4Gcnc7gIaBpyLG=^)=_JcRc&g&h>yzeg{4;W1flg*Sc5iFK!jt*}-|}Rkd0V za-{-Pq4|d+U<7nu60S7xz%v+rT#haae0Wk&MaJXjv+K(;$jLR zyi!JiIzIh!pU$(cWWFED?{Ug-gqQ`5N-fSfQ^pzMDqh_KB6phD%R>LvI=1ZLIHYA? zL#3ezI3*qv6+KzeQe{NZV$0fRiwlbPiKzhpKLEhzfx<0S|4B;0`9Q>-e(yxx(F37y zRfK(ST`q&19dsip0#x^nS)*XkxL6iQz%ZUn>1YN2dT;wCdTRkNNJ>5?_OB2^K^m)M zp`3@=^pFnBy7YYl3qpmw+j7|JAWm}NdKF}(jBpB5qY7leYvPA3Hlj0sXRH8U1e~~) z#4SntjkV)kXP1+*fc$>93uSDn1G`Lr&1w`C2C|2fL}&|`i@@@s<&BAss+LP@CllGg z0GYlEv#`gf0?!~YxIf}e5U?yT?L<8PU$XR2;Zoq2uBniu|i0W8s&6{k> zI{PB+*coYMzH$To-o=3ISqSP&+dW4u0xDVwQ&o*;FI%C%iTVG-ajzBq7|@zB z1uFXFl__Fr%X!fW28wmC+*T?r=HZhdC)pIGX{tSLq|-s%jxxU%YBV0IZo!hgD)NMP zNclN*6)IC07ND<5KI7Aaq|vpG%-wKpQrePLKA}acTqLJNl*Jr!!nwnFkiY6#R=g4J zQ(9DjtobJibxLkEmK%H{dSIfLedt|B{}xO#qg0X|8TWf#jyS3%z!Yd^hCl98^H1Uh zFDV>&l)lyGSikb^o9H~Fvv6mrQd1~wOD$qulMd9B{4gm`$lU~VUnH9dIMm&-LV=dL zO<;Zg2Yb?PWfHbeM%XG7oORtyq-lAxY^?z2NZq9F2=Pu5LG8(DineKBV49JTu0PO! zpJ*yR@B5K7!W5p0gz21Tw&w^^`-#)E-}@r5J2M45^bvvK*?bP0$J9O4yu9W4*INgx z5|!zV?$>epL5&4{=BlJKff%5FwG*00BK={ZWOCD_)c#6Ba2L$W>(C7sz6J@D!>jp5 zCY%^QYUvkVVw*hHT_O3RJ8deN48&-}Z34bI^c}v*Yl(`D9cj zH$gkL;2Qq}QJ?l64sH61cFB5wM%|F&XGUED>Sg|Xg5m`J6B}kRmy@3%5J6}`^yR#g z%Nx_&{TG08O|9uk_m2<}`dr5g>2SaI>T+GoPK%q5R<#F?nXOPL8d9qgYY0yPsZ4Jww>fY z*e3ec*$Zb54R(k1W-*!p9zlGCZj=z>x1LD|KK@QwvWy)CFaC+H@n~bx0SQYkOpo=H zK_Y1hvcoFmy>N`b-P!U65zIXzb~Q*$26$JF3azlNRvUAdMWIw{#$|~0_eyC%_f!@L z-1#latJox5qO9LhC8PDc6?Pe;N{xy*xI1m`z!hEt!@o;p`8*M+-aW-FYfs=pn=vkilxUbn8!N*j`G zL4i|joLqvkW&>ifRprz3745kM!dyoF@a{byQ{+1a4z@vdDS|d(m`XuN;>sa=d$O~B zgLD*n-^;mwIHe`wR2dxv32z|ZJf=D?tyZt*XjmUKfxDW;W<9qigZvW+mSOc>QhC8x znng%4LTx!ucR`bp*yin$c+Hxqv49Z&*d01K?oun7m8-&6c{`yHhvO8kh@})Lt+s$mb_fr zO^S+!SGL9uNt&jbg*ur6fwTHyWB;JOyaltl4iB+hxiaueJr3Bret`ros`7C4ix7QO zyh^pfaWpE%1EvdYZCgMi#pQG_b|r^`6Hej1+`A>s-@%fexx5dIL~GHbejbf(mz{lp`?ZexTDmuT3v32L<>E(uN=&GO$}I^YX*<+u-KL40fh7VDhQ(Kl*<;G6HrG}shKk=TgEmH zLc@2XBME=Sk%Odz?{za2e{CFeq{1sv2w3dQ9m8KM0MHw*>fT@T*SMf03up3Mz(}yo zwR|Q?#(gDcUdio(nQn^vFh4k?oEQk1=faJ~OS1SLg;Yk(dLgW6S% z2AGP8L#@X!30)h-+mK`m)`YNnh2vA`Zlk_Ir-dWdSnqC9gAS@+PxGOB5Y zMkLz=zdpD1Cjha2JLF!r9*lf#<};ICIK8)Ak=Ij%C=r>U_;o1Ssxmq1 zjem}(x{o3ZGG0w8<@8KD9c}_rQ^S5oFqIG=Yn#TuX>$C;gOH9kkUjsVT{}mxqa|f1 zIaB7jAY3fiI5IXJ{X21s zA87vJssKoc6*?C!7V=8D!{LSVd=%$66D6p5k7oBii=pD#_{fcYEPW3AU|R{j4Q zkw}_<{MXK8^eRXnxpL8H(Z%WZX3`S4j*u8J>?_|KJvjKSI!r>2fJik#2bm9u0qD!? zONhf!okogl^y}Q-cix)wGL{Y%f6pK@BB>qNhMOauz*9q=O+q>X65Z+pBd8-n^uxDB z=XvZW)V|6cZ1TP@bvluxP@m;2o=BwuzB&8F{sG(C7NDgdvyeW770FqD5o*g!q%TQz z)<#nGw+CN((a+dweo||CtTaR6=D*g2=A>~L!6BKC4b-~|u5tJl8I?bh7S8!F*J63h ze%`5MufFo)mrjDE&ODK-x>qX;y4*peGfFKP>n}@Exc*r{3Cl%cRTD;vWry}tg{81( z`GTFeAezybtthYMDq7EQMB?0ONm;kG5}!0ey*?+-ZqbVvlh3jwJdS-6;%nv!taC;k z1LayF$4n+Vd(N5$R^dUs4c~7n~lfWv-lH7_;>TD78#21)!-=0-PEFB%*jAAzX}Dh|H!X7I>>)Hl61Hx.aT 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%0A%e?3W`pAH|_zr!@7<+GSMn( zN&$36N=vjHr86j?XU=#uielcj+F-!R&Kz92o79b6Ws|%N>UD~I<4MkVBez1gPf2S$nlzWUa3p7h5B*a|XYH!!$oF&Fc`q+z0vn?pP z#vmkbAixLwT_)-Los9OT{f%TGGwNzwZvLNi^DqGaKLEg#E%rj^rZ4vrg`#q!e@z@P z3BhoYPUwiSq9jXb*rtFm#2M68In{ACH(799`|FkMuze)fJ^^PI`7qn1a|F^cm)&mg zZFe4`bmhZ2(D}+5S>|c?Ugb~RK1=@owK5H#6OA{VIT~y8Q1v*&0P!HDl3cg$=j}T41-gqlr z0pPPJFcWYs@Cob21j7M_n>$p7yal2`d)po=0&&VagjurN4f1} zzob7=GC}~s@j`k_AP^jo>cZyN=qdUDU`lI;`triCrrgg^= zkx&FlLaGTEMg_cyJ-bo2(OmBG-x!jM@Nzua1@sOjaFP^5!Q-&6ZSCrK^50?S5&TGe zCBpo``#=I0_wk_-EP5H zSpjlVEEC;%njg^=gB<6uZMT?*0it>p0`XDQ11Bd2=YG$H@67cK{FRd~dlc9ne6Q2% zxyFs3&%&DL(1)Uu@DovCT#@xvD|p>QZ)Y?80{1;YlNF-lFWycm?Zak7)iMgNXK*QR zc&k)VRV5^k57zcW8PulVXj9(BA6FCb3fy6&&3LV9&)bGNMVK*ZD@HQ1!VDLU=o?1?p;K994+g=8HvZ zb`*9?y4y+*TPgDMdU|mL`;Zz3GBE8Ak;AZ8dcfjB zrI6d*m);+EmAivL$r~uSXr1=h;9vfR9Xq0>8Ea*wXt-l?{hA%3txoG8582e{5`^Ey z@Ll#?juXnXDU9RL4{|b!%(!qRkSku;Xx>tvY^{Gc6&g32pOOM}yp2=eESOlAQ4&i8 zH{!bP;TH^xghHkq_{v~&gS0!uQ3w?PBLl&GDZ*p+knrk|-4)y41j~JlTK_DcHO?uw z)R#6!fL`HsLTgQ&wKT$B>Z}fWz)LkM&HMZ`2&AL`CvJv6t$VN^F-{!rwcO!&GZSgB zuQd_3L$L&xGJ8VtYoujiM4K532Xc3S)eBJ#pSr375izeZ# zdzETbbi$*ydpYvRgif37jt|Dy*Pao+)K(- zgaE_Ge?+5~%OQNhH}-@Fo4+9@>{snxYW@Y;&7E3Yec*7Qgy(e&`mb%Jrk1AEs`=^w zTPblUf|u7n6gnrmDx4uku{fn}U`gN{RmjnTwY4OTXpBf=XD$8ZfV={?2+OcDcC~H=pFv77)t`=c)mBC-e zbSI3BzlSmP)iU1fpoC(tf)Cc-tB9g^jI8h4_XVIWqWWRhV&7?oXoU>Pg8`h$8bfJUk?Ya=< z6rHXWT>!8Pqh0E}Z3*5K_psAM`(ClD#Bf6pUP{ zzJmm{EsKocf0uKi)z;d~V_=dt9fW8~9d8~s*c~g)kb>L2-q}IH4v;eG@^oEIVnU_dY=!s)o65I%+$9)DKw+@A_m7ksQ`!teLDt7SB zml&jTESJKz7D~fY2R~Tx)A8Z%W2(c*R#^)oQY#g3EsL=7t0Y=49l(Zosqh?}_zeXl zu{=LGD0dtsC~e}uNNHCL9;n9R5Y?$_Vag}}U*&<+avB%`;d z{--cr14McM!XkCIimPofl!DM3E*>a@53jRTtt@RvS}Hv)>7T*bz2Vbl1xZ@I4bU#x z+7@%G=aY1?B4@SXY*Ue<#rfUki$l}*{ZG1c2w2sMRv-rK;;5&~dWRK}QyAPTkMqXq zQOy+h4(i?i?_qT2z!3EACn;qA2kbQs8G=Fn*mJ!1uco+28*GcYZNB}At4%|tM(g=s z1Qwn28(?oSMZq1QfCc{^a_R%8eT=Y(08dx*!RlbtcfW(J*t9N9hf;J8A#25nsKyeD zo}$-jT~}q6gVjnfOLE2in%LY4nDe+tgR}aU@@nxZUt>j@Bivj6zH@X)ao@z4N5cz>goT@93vZTN4O zokkM?9nW~3Msr6eH^Bm%Y9>NoOk(7MH=liee2RT^Cn&NQq#HNb}7zv4n0Q+{s$ zWVBhex@0_f`2Nj5f+!?@3{wAEy<^&7JW~dE^=&u#M1r8;YSTCzU#~z67KCI%Tm+_y z#%JuJE4ifwX^5^Qe~ygtHa@|kR8$g1Z8vy93WPz*bQmHCk#ngbh6|xs^amPQV}Zjb z$q*%X0upEbzKep1hZRSyw#J#CXQ*u>lph()kLBYW6Qae+m!(8YKk_^Z2M( zE>4o{_oD;gI=l&l?!}Naoo**luSA2+oA$LEXOFnt**D{8FeH)Bj8#&j3g5lm4si*3 zmqTO;Sgmn?g0#6fM$o;=$V+f)l0d&Vt{bCvl+fp#3ooV{0 ziw4Trzym7{0MM$C0{`4eSrQPgZyuxWOVtY#KZ^99U-y6N8QWVh77Sm^<852;M-$@~ z@RVUbpaXdX>VmcwNaVNS^3$IH{!HiL$6MR9y^z#zTLUt=GPQ7!*76}Jcv#nE*M&=U zO1UoXTNDj%h9XiC6~G8vXZwz5)59jnm&~TfE5p@UaQBtqrA!Q!$-!Zn8knx=i$8&~ z2|l6^=B_)x5iB519>u`QvzAWB-k;rVXW2vj+FEUNcd-@D^??*kM}9RSJFf64w4Ltt zl)te#rId=FSm;G^dyU#EqiCY-nf`c$E=-bO3ZGU~Is5QGvM<|N5towcJK@xy6QOZ9 z+t(Deg1x+bO(thoVx)qD+Sbw2A@KTq!H=U%n8Ku!XQP~6;fnY0nz2UABml~Mcf^T} zk2sp=*I~S0@j4D49#JfqPZEbkDXJ1+6-a!C4F!nP7mr*; zu81^f9bR*n!>g6$9&O?D4fS+a9H)xz1E|_>C{A=XY zXnJ{<7n{^-qG;I;fb%in5lv5*{+L7dN}vqJzc>rLxk>`7>!J8={u(~Wyq6kDhG42T zes6)RD1U*#)H5L!y7ed^xfBUWG2!$? z7`ScD3`L&i<#s@y;X;!&C1p>rq~~MUjCv*!{=i&1hMcZn05w zDKt5^J*5}lP(T4T4xXvz+`!USyq6GTa%-V0p4u?0uTPtfhKOD zQ-~jD^X6-i9CCQjX_9Jl(!`L?mN834_G?F}R|-KV1et3vjiyfYpB2#58A&K9B~&g6@z`-}oc zU<-9c8wes)0zI7dx#B{^m^WaC;n|sbp`G7rkLBlg-mcU(DiGs_y$LUFx}%M{n(B(S zNgCo!PP0*UKl6xgt8y^OusfCw%7qG!uTUa>qL7^PRfr4EO&nv`ys3?Yj>K#+zJ3lv zRS6TCZAEOR&!0S?Oz})WOY{7UR$?R;X} zO#rQ;0W=T0h;Po$A&}@c=T;!)ksC}Nz}cq~J`W6H^UdQFRbJD66gkR6tQte4Co`*S zp=+)UJ&}uQNb*kPY#+Q2S43Jjo<5y1^UM4kvKJ;i)e_z8G6j0ueK}SLBTumLwG96U zxihX@_~m<>!_NV5*j~VbX08|wFqpA|olxsd3jv-FK%3gVlV*Dax!?#Y3H#VqZQ57P zSgt@5X+LWJ%-7Yia{1{`=M?|5CGGEep$kC13)K|S&{*<0*$4Vyd*LS}HcV(WNE`sr z8Q<`5y9V<(QH+O>QTvp*#v`{)ueS+aokSkE7d857Lx4r6L)bCSAQvjtp@BV{R zajOLnmBvB=+Dxx026Xgoz7PVwdFLWq4jlvFDu|UOdZ2pC_ME`h&IrNw`O?995B$n&!r(|uuw8l`goa&utNMRqNcX)5H2=A$R&`8W@eW&sYmq{-%%>o9sOs(w z*%c4$>}YidsT_~l;^Wg)5Uujgbpfj!Wm&TCbO3}$jxQtlkh^ELSurWwO^ZNSBj9af z;4#yz*iJDQYvzZ1dK^`EAHHcq@FS;W1_{cvT7g~x?n0A)r+6Nh?T?!IU4@1?Nq>uw z>|BB@9ok}uHYRp>wLR1VR`He(aWdqoqMoFOu;`t$^@MO#-s@~T-4HZ@N7{(_Q z38?!6Ds7BeH!ucF>VlZKzR!F+@mOV_-sZz#K~N(Jhs8|#e&UMV-j@1y(+AR1pi@YL z7y4FIU3Ft`{4{a&7-dH(7y%m@BfD)7d z+{_gQk0cCjmfI#0#3?B-?P+NIea8s4GZi|zVX8eFFzPfjMHZt}rWQq}SHu*EutpKv zw+SbOkGmM8hv7hXsn#`t;ww4+r%i@@4FeB`v#T>U8#r&lf*vHD-&5i~bu)aP8Q|Jf z`@xq^Y$uNKu%kWqKAe8NojET?Ig&EQ*Kke$HwuMo7ePBaQSa@b%F&be%WH2qRRv*M zFpm)I-+C1TQApOfj{_&yP79|(!!b@*rFU~uBhEr=|r(G_AeyX7wjIRRR zo5FnGQmQ@-eo(2NAZ_^JVPM2Z9jgprlS0r=XbCnXqTXH@cJG^aEg zH-X&Y$vwC72xLw6GXhW^J|v3J5#ZleIPL(?`*^mwMcNPJ8yy}|4pvI*E+#=Cg7-R= z8j5t_gUy<`44B;gmD$hEXy9WmMcuKqj##0=(83*`ZiLcO&LA*JrTC$@2^51Ne>*Ff z?@w9i1d+iS{Uj(0YwLP!3@HLtRDf$Ut93N9*1S?3bVyt+OY#v12*&KE^?OqTbaacw znN&KrPABVyx>$|npL1A9*MzwOoRdk`a3D}AQcDQc9!nV4>JhiA&q=|>RwHTmrk`mG zleULS{+1wiB>8l5g7sMR_z1PCvKH?VRe3UNyGBHRnbW+Sue6b*7^!Ko$D{_YD(bd3 z#dYv5aDSyISs376&MiL}A$i^XBn+|^TXg8 z)pVzP5rz2M%Xh!OYGvuvOi88{GTI$Y7GvEgs3liAb{~7(CX9yZmr?$J z>J{R_v1S9nVEV?-L-O)~1|q41Ai#`F8PVvjAV$+IDBaCRU^KI|1?26U2~_Q#e;i+W)=Bhtw6=quu9sFEhs zCH^XB-@0UvE%_30is-WMr$m2VXJAtP8U-!3@T`>T#nh}7REo-!)u{qpbnRZ;AzoyH zeq2qq9$DCk%(-$ateI=K+Eb@Sw7dpanUr5fmRcOpsGW`XQT-pRIR}}2Q}RTMRNYUM zwIr0zi+wm{x>)Kck9)*t82ECnTiy&?L*Zrs;2}hPIQ_-|QhlUP+7-o7mqR>sxKied zGc3dqS_t$M$P>DOLk6s+TEe^6xvV-iQKG=Or`gd3RYy~u(StTNO9#~v<{X#h*3n_( zRlAKZ&Hx$g&PKkHR8+Qc2KwX{P4 zNM`m{mrW|AJwIB?3sR9hJp=ahlk>n%7s@;2u8t#$!Pm%{M;FzlyLvf0VCi$> zOB(_8kwD#y)NCI0Qy151kqt7$iYshX01)=mvaZWtDd z^u5Qx!vH6H9sn$Td5>6(XvrEr^Eb~OeOh~BbJLe5B!o9_?IJ?sg#x1znIph!E26dxCbEg zGQP(v)%9S>VD~lOgrT3E!1friSR{RdpfdAGVqz(xl#8-vQ2Y5p5 zt}1dd1R}}r!AOuDN;ngGYqhZ>T?ob4i95q;!#W%jyUDHgbF!0}{Q=mp9}n~w^P9cx ztF~eP0}r^@w*s^imE1`BXY8LdtasnRhfjz@1p87bs>n=J(B{l;PdANw+2m{mQggjx znoq+e>B2+(L8vb=w=st77jZ51q-FwJ=o+QD!tYOB9~&v3$Q7Wv<0Vi4RX0u1xVEz# zZf}rNW~m1{7hVKJ4KI}?=(u@7=a!I5V5GTsR%O~n>s?~E32%*_8g7qLo$eLQ*HQLO zDhmg#1P_GQVn(O}w%l=zI~H{ajbIZc@Ui1JccN?^b5opXlkBnK2Kmhg>zKh9b!EC8 zc4*pS{`c;A{l%i|rR9ETjEfLHt8w&0B`Y!@P1P}nl2ryr(t-PiVySfxojr04L+{*# zEaiG-p&mr0?Ob@)H_1K$>RXT@LcR<2MNq-@2Wz0sn%%~@`=t0zo01A{Pou9zl=+G4 zL}vHYC}(eHX$igRx8MGN;>(Ebqn~RMg)HM5_m_$x-b)B?I>g7D-*cvsTL(D9`ICA*>OB$G{MH+QyVE`PU~D;o2NThzE-% zTO!Gk8t)N7{mXp$qe9tMJ5OZ1D`C9aw3lCyj+>H3e9(suWHHXa-KKFfVW}0NWj5-~ zBIJ=I-iT;>PcM+Tr9ErIvQAk^K>x?WXQu(2jEDtt6;2l%R|ZbEj5HlBZbYx6TesMr<%V%`a0QWQ&s zMjb*U%4|1oP2CJl{KV*eOUN&ST9@Nm<|ifqkQ|I;Bx+|1)QT0GKNsmoi%T{+y{HbA zHp?;R+}k6*UF8WG@9Anfmo4bA*ZpqMi|Q6{FO|Px@<)7m z1D;l71Cut^7QnHRrkWv&0m}D5BhRMQ`pc{9W?U~RwVj*V;^c7y+Q(-cz!0RYwqw1EQLEi^do<8i1X!VdGCQS@LsmZw=$a# z`s4kNA0{ZtD4KPWa8D6Odgd`4G1HyNSrtAd*>v}sx#eM&M#01?F|BEPEg_onMh_Dh z)-$4=k21APa~CsiWf_rU_XD7=IG6u3K-`z>=zSzKdh1jhc?k4id;WCp%G;$I$2NLs zytl$*V786_h)?dNd3pq+R69OvTF;5=ZTi_BnZk0pd44H(Gj{|1sCp zAp%_>H_L~T-bjfq)9v5vhjbNQSnpm(?9KlICIA) ze!|1)$Jo{Qo8HsZbVG!(MFry|!l^*OQ~Mo%dYvGSpg)78J`5rmpT_5WyInZCVig=1 z_iM(_aDILCysS9sj^N0)yVscN=tgI%?39&aSnZHzv19e3?fE4;<_A|}*6K3V86hCQ zB1k{Aqoj&rq2kn4DL{LF_UC)(pGlvgwQ(+(OT|g3Jo7a4I=LS$D-FdVa!NTO&W`xR zbyeS9_`zIIJR&&KI=Q$H$_(@Y3wGnc)7 z4Y^a1rL>n`V4a#_L#*`$N{!Jwe19K+Tgh0WtjaGmRN2kEp{I&IMe2bi9a^GmpSgs9 zST~-YHTtgH#-;%`v7pI$ZKf12Iz?wsXdrIMS8vb@CTLls6fPD+qaR*U-cEH5El)?_ zYqbk-AzrZ=x27Moe;HpfK6pU4+Ia(yRH|80cMQ4&K=Iu!iY&~whV`OqV*-5uloiOk zQU2|=m?T1e7G&@szdZuctlR#B6^=3}%&Y=db@t@(1p=-txht1H_2{#M@!?VVDg>XB z)Fd@#MA053o$!)8AKYaNia^cGyw-4E?0?nj4cP?>wGoCz93O#X z&xq#se)Srp0r5QgJeF!%dTEX-METUhXJ$h9+wLg>ZdwQ&?I2#PqiS~4p|7x03oTmo zjXJ*fa&x*05$cPRS1dM&#`wkdGGY;5j!!7!4!=_68${F!nt<6i?e(*L&b^UsZR&m} z@MJ#@U$^(RKMElJUX}Sh@ZN!%G9u>Oxk-Ow*}NWS*^R=X$7A*7|5>;`Apl>unMyJk zjmTFW)vFkRte(~I3)M~`Mc^M0RQr46Cw}#91ERf&WK`abWr14T(iTES>dR4=_c23CMkh~zc`g4=hYjD!Nz;er1~TDUXb8}c8cFh zI>dK8+}_Mss?gU|XRsP-&s07SBg3LD`g6v2Q{>}JtLOar2oIHkDfKA>7Kzp2R(}Fu z2wu^CCipuunoM0*b(=Z``{R~=_P25efSc=$@11xhO&6YF+qq}R&;G%FgZ z=Wm=<6ZBAVEZmlZLWJ+6ZdHil1TpESdvbvZjA~5Kc&1t@%OUM0ioWFmKwC{^|GMEm zKFT=y1%UuEsMm!fp%qb#sUqOZy}!*g`3qjY$AFwv`IFp$DZO9UUl242MBwEyw(qPw8iNSs;+D97KUD;C_J<0lG6@9xtWU*GM?+Co9%&Dw>WIE| zrCY|)#(y1IpT|j>VncABh`R*ecA8(wYXM1ZCLla@-UA5ijp8!j7HI8ZR)HE|Nk2Fu zi;gheuxI1WP5ftGf8nm%ij#fxFws&M?Q3c-i2E}L8G=Kw1ndor;$`+_U6bw`=$FX= z7z`>OykVEyJ9&#(Wdzouh1d z-!;}we)2(VVTo-Z;;Hk$e4xK(Hwtjz7U!iAEI7qYHt5=^o>w`WvVyg9EXGC`r@2hz z4t{u3DZ?(bIi9x#bs}%ov?urHmUn{Fsf;k5cK?Q_*5PhonPz>CL}eztqWdeawOgu|j3P}9 zj~~g_I#Ul^d+mA#5ltQ2-%wkT3@PpnhvnCfE^z^TYI(;>F>(Z#<*ThYsWCHu>9xk@ zS<3VZiCe%a#}LsbxmXzT2;AECLoL?UjnUi(f+uYc-@50Smzd|1YVhPufeB#Xfy3z3 z;+Lr4Gd;En5h7WlcL@$qdPf8S;+F`JOgeL3nfUvw)lq&jpTpa>p|wBO15ypp%hnK2 zJsp9xuE-h$7OKW(ZW=bigjj#q>bz$g`ycSnHkjh00O2pWRz6=%BobUdXs1(`Zy|JI zToiC#dy2_tSqU~EmaC?-x}ruZT(?<132F3T=%((HyHy9|qJ}iQ2j@h?~}bvHrZk6bO(U zz;g*H4KE&$hejT~p@BYK9*fUmxX5y2E?arJemjd+@L4O_JP957i{GH8=!;4gyn2A$$X75RK+nJ<-4w!DnBJeWO>6Ah1YQ%TMVUx-vE3N<{HR- zh0x_@+Hcd8(pSlTM9HE+qitPTWg(4g9MTH#BDbI{%@ZbY_9@s<*j#J-kaLyk3S|Q( z$t8e|LZc{lgVJ0___EEh7{OlJzuS1@a_f`8wX-8p3zsT6JMqtTT|$YC>_XfuxnHEw zg3GDQrOdx6g{Gy2OOzw0F`4p3TY%Uo!O48V&=}Xx+ygC16D1o(0irZyn0u#F{VN<+ z!!M4GK0R-2ctN!ki}o9L=CD**jM43<7lNIiV@T1#D#j-+2lRQDA5d`Lm z7|g^Gqx+uua{LkWZJ=TD#^72Ehp$*pX(PbxPQ0frumSM<>$S=M3|yHU29xit)ArVO znmGl|<>?MZ;%BSWILua~GdDHfh~Ga!Ac+Hka-680cSz|b%EkK~?`59RSas#1W2v;# zL{ymvLHEM)HaR>s0jjNCh@}zO8yi|3I- zC_;o3-p+}N#QQ-EBR1S--GBmx=_BtFw$>$pfsU2y#hVi&e)R~FxD|CM6?D#43 zWcGeEC4uW`#kE`si?Caaq$rVijv+m%6AF9q76ZaAA%YrFdR&D?n4p&7hu}Cr(eqUw z{b=(5g|Yz|38*Ms^Vmu4>rzGpmm)H zHPu%m_-dxwq~{DyWUb_{^>(<53-vcR^hr-~i6zpxE#<*Gs5soF%^T$IT zeyKwA0|h}&VBSRgFG;C8JouJLUhEfOwf*$dlqEytw4(4Y9s6H2Vk4x zS+6qd7tsv0lUcX&WUe#o&*@0@YN&~EIOtaW60>oDK6E01qH971bMuuA2ZjVwjte!g zJR-j@w7{4c?>EM@o<(7Kz`~F(v-8UCnqTonJ**~SGnp#z?N@hRXgFW0lE&f&2gjv- zu9ROn6SHz+D14+IRq3c+ukEfRk-=7*{YXt8pDqmv;%H+5@B?B0v#x(sm4)!k_MAndJ!W;D8O$Mu zNO{nHlb&a|3?}pmA@NkNhDAh|tGzeBBnxzuK+B6K$cAAx~ZK!~> zJ2OyB-r}^+S>F&`|KoVrj4Y@*sf$$OQoXeaj)A&5(DO?S7~2SI zCmcI3Rp+%aT^fQ!h6;=O)Y+W#JGJX0Og1LfL8UPz<- zcC=r*fr5|mR>|oTQKYp|5U91>$t#1c`XH*z2PRyy=4DTi`clLMxfJziNOQ%!eovn?mq5jeY_k4hk4 zBn8)Zw=4Jcg1LyT+ANX^dOcb;P&iNz2zt6IkEjyQs;$Em!x^7Lu!y~xc}oMAe@Goj zElQda$0Nq{^UJe+j;wq6d>Fbu*k)k$3a4Yoj0Ta)6NfpmMRIq;1esQKO@xk5JfcvnF)$P!o1jQmwjQ7I z1`&~!3Vk+>tn8zL@CrbP~=`r2ZV6>92eEcwvIdxaVSk5@FV@n$gw>eGDzD`!OIEyCYt~Z z+8|8yfFUnwthCs}?z%0tPsM*eE22A7UOa8qDyr%ScB`)7-tCD3vE9-9^gSrRb?6f5 z@y3$J!2e~!V^R4(Mfz{&>6hQ!&2nkhI#D)%gzLR;z?{Xl7I+RfyF7FYdm>ff$7=gX zWU|a%^ouw7h}gtz@15TjnKq7zK2FhyhH5oWu&t+a#HL3Bv>pJzX=22*@Cab=>);IW zoT*~;*TBmMGE&_VG^SCBOnk+{Gytzb`h>J46a(pO%8J1#=T*jUTyu$d`jf%n?q2I#2^`Vy1S>vhocjft zTxffWY4OQ_&u+D{Bdl;Zh;{;;p?k_`#l^Aam zx5cbGS?h%(%Y|Q=FxcSv$eru$pNQ>kceB`*y$*DW2X#%Nj&G@_C~sy+=Pz(63$v*# zfDD-<@YM+?I^Tj8EGqWuQtIG^d^0p@YrFL8bIb@!ijoV(FOsJ~q$GM&ipdusW;%ZP zjamou8`yVdWywA|IZ}&`UU0>!Yxqt2+neltrT*8;E{v(k8~7@YP22yXUS^;W0-<1q zfU@*~WQBVJ?XtRvEdw<>Y%tjw?@<~aVH42hiUC;Q{n;57vgr+fe|Y|UuP3TP<{Zr0 z=Es=&qdHliG5A)amdUT~`JFEY>~C&CJLlw8f$>JJ*t)tP8Hz48URKeFl4Lb8>LS9- zzbV-}f-ku}G^!n!q1jM^E4{GC^l|~s-+3z^d@u-W;R16jIBY-8{7U_U43~C4S|mvU z#a0`VfTkOpJ3mBz*2I8M@BO{boW6(689{pIW%wO99`sz0&v}U#N|30;Ce2SBB@kkR z9p|S{O+>vY;NZ_86JobE&E8Y0lXbYFdfEY%xthJDtdH{q*YT)@zlNVOfFxz4lxd^; zN!E-cSeDSIh6s%N>K)2Tk1dUDu)`*F&0bhE7Z$O@Tb<>+LGFE>5K%^f9dVgVSU6@& zoGM>ZkKY?$#~o5cigSUhn$72TaS@(;Jgm_oKj7);?Y@WJLl5u9r@@>v$+f;|46)oY z?@soMni}vf4@~CBdGSEhE<$qnU9bzojdbg>_>HL6r0wE#zOd4yM|SznP8Hj( z^2X)Y@Dfy14!bEr?I3FUD3F^sB?ca4ACJfG?Rka9!cODvHe<;UTWVcm(&W@4BeU_`KL<_1BD8nWbOG51lSqxlEPV$JCfftw`BL1v2%%kNKAM>mXP}m z*#4Av{PFHzuza3vAF1_2co{0uC8+|>3u>XF0l$R%VNZC}Rec(dFRfsV(`hmat=qDQ zh$@7l?T9iL-Qnvs127m!cE~{JmfqvlwxMi0HaQ6#_vYU~$$Bys$60%Id%9gmTlB~K z#u)vTUM3d~gY&R3V@I|qH>i1m(F}2i%-%Ck7XG$$oTPoY#q}|!ii45#W$<@TjO>b) z42(V-YQHy%LL5+Kr+LRK7^>~BgHDmva{QUEYFK;`pDtK(ra%~{(Y%}x31vt|?>Pku zx}rPas}d9Qd-PW5Mfy8u{4mAf_sd;f$zh^dAU_QbW#8PS<>!m7+J1hu-JWkt$R@+D z?-_raDhol*HlofLc2OF*6&WNodt8Y4oMT^PDLr_qYAROB`;AM(zT3jwP5;C4u9cVH za8A&GU}UiQt)m>|r!uT?W_ksc!dyHa-<tOGf56QTt zof5*V=m^T)54?D@b41S_ zT*e#BQ|bhe^{RKVlc_O;`8-w&+pI_%=x0{ zK#5gFmQXTfAXmLJ=78=P7l0gvo)d$y`AIdHJwX2jDDK|ER$}_B_qLo){7=SyV6=b( zKp8ANs0Q|z*Hn=&!6|C76|>1d!hZSi;}}R8+uiKW*-04-o58xU9rDT4 zRK~~wF+`}BwU2q^>9fsyANi_OHvR$b-(RFz07$=v!+59wRzjU;0#bhrpJ+Vh6%60K z=g?uRxmmObV6V$_g%R|BZDXiw`()oTP%9`m%VmdUV6ep?%-vj}xDGU&J{Wqc4tX@= z0k%nCoDFm1!)MVE&ACaMLl!}*!%R%oRzqr@w7jRj-)A#SS_k~Bn2NzBEjvag*zZ4- zri=CoQW65B2rNTwSxj#G4~kJM>SYd2@zACTIE&1sOmFDNGY-=X%ZaJBz7l`_B;9>O z0Sl%_@Hw4>pEkUr;i32}vZTJd*TPFvdM$_8T|if%x>iDqCU1lg##*(Q{`w+G|k1~%C$`Zpl?Q$E(!zL;?lfNvp+%h6?Y{T@~sNU0HYdfWXMfK_OSw!(vxbMa5Wr zEqQ!h_0#9=@2EvUJS?~-mDTX)<-MRPqEX+t7hf`+U|?jeIx#3N1|AI{3jN(fo3R&$ zMOaSkpRwhSbWQk9P2$+9j*3w~!_!Si$6ZDuCr+n-ePhemY3`nF-S`OTVMDa3q%FDX zsG|m!$OzB084KB?sf>)`xjNvG!w1#i7|G`&QZr-UdpsZLvbI2B)wG)i=OVPuh@pS+v) zxR`P*qk>6e=auEcyo<1&(CC_E==xns`a-^2b|5naFi|f+wmu#Sx%S)@2?Z!&TfRS4&=9a zZ6n&sHtXGtN(_tR*YYVqWAv9=(nDkeS@4ij$mJUhDpdt;4!J0_FI#FY*}H8sbs@Epch0y*0 zXIE~?>~@v2%bjYsMnoN(o2&E=VxR8T(KF&r*jbg*zRS<;rSr*aE7l(OghvvFWPZio zW36eYWL3o2>%+EgWzGsx6y@M2ppf;vi=!dja%e5OhTc*6qgb}5S99k@>wssFm1ROT z>RsbAl%Y^ZO^n3>WTenI{WsfDHy$lX+khg1#O-ZFZzTi1N*uj92CA+iS1c~GA(h@H zihwiX*ioQyD80Z}BdG$L7vfS{shioBBD?G`g1zdp2{yYo5r|Da-v2nq)X<+xPVXnhcgoESZrxpdq1q<-Sx&-fV={oRuBQ`#n zVy9OP@2~T=rkwjV&ek%toYGzH!VPFGf@&=< zjMC>0{qq9?rUln}iX`>g6j(qNM8n*=VPf=j5oHh{=}D}$d_n;KKLEf%Wl`{39Zl}P zjki^D>%D>2>NHL!q_Cd~Y*v#;AvATutOm@>Qmc9&KUm-w+RMqx_!ZIkFMx>fm&v5J zb0+V7`AzGFsqd#01D;OlP9JviuPqa38~fDr4X`YU@f$a}V>hOkR4q6Unbzq(2MHrhtt zHGw%a7m{t+QWfRWJ*qcn4E~hVz>1_tk!P9aPmYDp&C;1eYWq6=cXo0@$h^0pq}TE1 z7)A2R-iD~yhSfn)f!NTRR5p#VJnBZt2sB~fgDj)}(#UsN7U%1%u9_s?+%-a4%&#MY z$|S^^1;8m{P2P9|-SmAo_D6^22l^mtr=)c_ZC^r%>5nr zrjyox)%a@;x^Cc?2!4BgcP6#`E&9&hl}cHU*h?>mNixucH~Fr|K#|Ex%$-dtbYayRb{m+iNJT%_Z?r}T^gk2#Ml7TIM75sHG8(kh=mV4S`8(O5a*6|fjn&}U)9Aw78 zb4?%mG89=&(9NDsa{*1|4Ke4{z*xHd1;5@#7I(lH)mi{2-B-YK?`#&2Y5XxCMy zKjIPmd_ zyh>Gn-$?wIh-sLX^tp66``}q$$8FrtLSFXUt*d^~_2y%w`3=8^$#3U^TRWpd-d0vok~W`w91jQj|C`+#E+5DOeA?wy{3tS8RpV z(XB=DxAv%&OuwCnFa#8`w!&5<#Vi&YEyk#8{XT6i=;&GmcOfPa2kG*Ho*Y}LeDg%9 zz4GLB=K-)Tra9rj_6Ocfe%+vU(Aj3{(*kntGF3AQfg1DJXwE?ZSBX~OFeBrxT`rU**Dtk- z;UBPHFbju@VZ%0o5~2{66-kOQphAELnKHkxF&%RMdEwe#gR>Q_F^J1(x@O%4Rz5h# zaohnHe*;thY;w0@*`1Z--C;hK(`^N^?*{a4&IjMv;T4xtn*{e496}-o`~~&433*fZ z|AdEZrRNW0uJ(MI!{Ebhvs=!@b-veTepH{a4 zIHYv;5-1k!5PWj3zz-F41wNCJ+W7r#dEvOL(6|r3pxgW-4a=*4{T{dB)P$TIOy45O z5DU#l$NY{_sjfpY9z&NIkJ=fln#sLa3OvjwtnQqnDO;e5B<=9eD}4Zur(i4avW`ljLCL34bCV z`y|&y64_e*EuBztUr{uD&lGwp=+ylI;E3q@89dBdG1t5ZuBsAmJ3O|1*=9l{@kbNF zBdjGB`}tV&%w>q2Nd@u;VBTUMS3fyX(NeX~Cj)p%b#-l{FBDBl!wu*5FJx1@W99Pv zMoK5t*Wq+Cu`}+Mz+i9H)>PQ~Z1II3`Jnt9{7HenUz)0pzG3h> zX~v<>AgsS+)s}SN_Oq#iW&`a-jo~s-EbGtW5{M8_57=T@*xKM%Q}*zu*Yg2_x)EgF zALwp4St&9N7R9X1Ye|W49Wp=xY))CQ@<2t09xl%_++!DX5FecexTiVSy}{5Q&CIB! zxn)hxgtxz%%Zx=}u23=_bCyJnmOsaA*ac!U4KAXjUY+U|pt7?L{729*;n&M=oilLOOqY?5K^Vabv*<18y#ny@8&MX%umzXATP_?qfZ{C z@8ogl9$4(SR{2O)hD96Y6~6yu%{h2*s+9cyei@*AOEYXdd{%;(2}5B;F3GKte%;#~ zIkbSllMgFqPY3>%y;|u~r`>q;Gl@7BE=07sDQ_dZR;I-W^dfvP{j^6ikaufi$u;l{ZjY@alz{Ag_q;7h>Jiq z6IjP+1N*Os-=5=>?nn9YbR+Y^%^OOe8te<@)N=K4^DWegGM8{LPKN zrR8XWidnzTbIF+>ZG3}Px82?Z1}0|9-}P+e#k<4OMKq_E2JpivI3XqVzefGZhqTJYWPS5p8RI1(5gAjHrF9(1X zaxkr(QR-WA(l%7z&9Lk0u+lRQ!a{$m{5+(ZFRB;3cc%W2B6>aK%YOuXtiU9fXmIT+1AZw?b6Y!qn4#aWUC87DibebfAJD?`L4>N>0<#@1UrC6RC- zmx(9iU_u(Aj+ai#twd{eRPKTk^;vRtS4r+ZOewqoKCCa{n5)aMf~GVXuPE!}|Ejc7wpvSd73p&}cB~vb@Bv#9)M!*(qdf z=y)YW%6}*?AB5HWoiH>SbnaoKczwqqTvcVqpo;rS`zSNH)?1rJ+7n>tobQQ)Ey@SX zC6BaRGW}<#lp9}EogmF*P{!WKQk_-X?ip?PlEbRjP*89d>Fd!hpBl14u78@$awj(s z0gf;9Lv*A_g=N#d4Uc2%EGeAb6*BY+v4HklG;F3cTFrkLV`NRmq}6CqRcTRH$1`Tc zeqv}{KonGehkp@%P~0pufhGUQV6;Glbr7o3_1TGhyqPS&Qn8`O$7wMU+-(nIyL1W^ z!-UtD8b-`zox@q-oDkUo5is*idx{(ooj|DT?#7QZE0;7RtsBZ`amK?0TuWB(M}*Mk z|4#tDj*FWQHK`{zT_QSY1s0`FYOdI?pMn(g_GJn?fW1f*U!j;$ZC4_xpR7}hWD$z} zppHGfFu7Kew&@B*5k(QEKS&4a%HaFipEBurI$?Z=*zjyZmm3sH;~X;EHkh0$&L+uYencRy zYGnJ(Tg+ZU@U?M;IOQCu8782ki_|CWMD4$iS!vOzGn;Nbz;X>|pKp9tgl;>qKYq3g z!X2%od^IpIe?WJu!GTURp!)}3c;UNS{3hKJ8-yjDG;k@B_|y(VTx1GwWxG@8-z@cn z4vIowV7-9=0xWuR)Q-*wTlYzf!ZPgR5B{xD-h>7E5V)BoqTaLo#TO57fzYW_l7ZCO z84VO+-cp$glk*dq-w9NTvP|+HP=`taPQmw`r@ik!Zd-@E7zdY}eDbH8v-1H`ynmTI z7ICU_s_*+D+PG@VThlfxNMd6$)Z-O(!h3traSoGk!J=jHL%001LQxo6v?Bjoz-O4` zE7ewH&}3T`7xAa$IDZCT`C;4L+`Quk`n>|n^JfrkwHeeP+Ps{L1Pry40|297LYS%@ zeXk@!fQ&BPHgcOCXAlflBBE_4hqgxTd+eUhHD53A}hf6gHjSp2myotwc{uJoZf+*WSt1niu3TU zQi5OYeNQQKR)SqtvUryedxG}G^q99G8!WhaQ{xh04E-#s7druM^ zPaT5do-R&{h(qaT`MregfU+D&f&SUZKU3Y95XT!j4xqk6Mpq?fq1t{?sixN>-Zk}j zA>9rf!+dm0r%ITjIRjISDuhT6W-=IJ$CgLLZ)Sma)mjG=k)M%7pg&40h>Nf`2bw)Da{rsIIA?VkO1dx zzI@AScx38|O)to_27(WZ?%!Mur?2Vid9~Dy+{#&o!q4y5z0F>q^aZ^nKuskUZCaR5$dq`-}jPCBb};h?hFgGJU}==_`lnWLl}N zBp(yExP@EO2h8Pl3@XrVTVX=3$Ryu#VaL#WLSQYAZtMfnWu_JTBqQq;_0QuWj>5ZL zWneo7gXwPJMUIeT==l0N$^TtH^H_XM)Db#;e1*PX*f)6lw)c9UsF!}M^*Ky9-z*z^ zDC<>;7o-dTRd>bm1NJi5<+QKHoADP(+9$OF@%Om;KZ6}l@CDbmKb3FT%XE=FrJTW{ z_j0jLh7%3n@JdI2Cb1llhI!4{<#``lgWC( z;)(#v-_tI#LE-C-mvXi$zaP(q!1CAkMQXQ096H4LOd&oB{4N8(Rua8`!%4zWHB&5A zsQsTa{A*HIA1dg2Mfv8`%i}byUeE~<;naf_k*ma;a4H~G6&F^HED!F)`#*gfNq~&{ zO6G#7W9Q@RvJ@n}IftDXGV@ikF!GJ-I1Ya28d#KKIkgy*UGiYP+*Y2wV6Vn$W3!MP z&ph|q2oQGUy_+b0DTkvkizx3~XlJ`qY>HxPTE@Yaox4g3t!wo(!K5|E26m1_0gP+e zp;uwRx!T!0iubSbT2kgYw~=a-1FGpI!!LH-gUZW{cSteu`t++T%IByi(T!xOF-cV^ zum5pI#8)?jZu^?e3z2}wM%=B<+FlSZd4?ebq@tS`2~ZUp*lAux)QG`vjP{elIN1Wz zeql8=qok@yvZb{7%tsr4JnG z8{VIO+h|?J5$pOGc37BPpKgunLTpkHN<$=ZMPD9;cHNIGY2?2(;4d!UivYc>)1bnv zi=MyJ?g9BYh{F^+_A(OFRW>2kDLkmzboKiBL-3hecje%ZH<8A)Kx0V#J7&?AfW;4E zJZ6(!!u0`_IXiA4ge3Tv&)~ku>qXWj#M%$Dc-5Pj;Z(4uo>R;IZrDRPX63@hp|&@- zG{1@FUl|SsB}P{Px7qW}H)G@GE71MUOax@+ydpbk!aPsDCpd`RQAQ<`9kIfwVEe;D$ z4*Y&z6On>SSqyji8!YHR8qe^Z;v23~U$UiuzN?$#5TaCkQnBTAK;wcc_*?K^zM^-J zji>*TI;?}m2WjgV%x!4to2XzHeUiFRwZ$x=``+|6z$R1wF1@OYfiZ$DJC{Q8xDV>% zi#5fo99@$ymNZm5v1QNs}P|K#UdZu-eXpWiBBflm)i`> zz>V9;P%MMHd>vvV%uAb(V={SuHDEz{Q|X!WKuCP9{@I|nz5B$VJ8KO~8Ong4DQYOi zvUO4lLx7dz5!@b;p0fT1ZaLc?5VuIm;>mFiHV1Ud>xS-puVmfO(#YK7^mdda@>Wsj zri+7=;c#dULYiNjzL}QxQ_k`rE2Ssq(^_Sl0Zx%b<$82)nEJ`bOSv$HlwvWL(mds( z#ZXDmlP6I4Vo$^ffliE~>iX&j9v%nnqWGNLvelG97$bLPvw!7YYy?X;dloXlABU+w z?-@n(Cc@~T#Yk{g#$;7Ty?0!G`^;qgjw7fcma|4_B>27ckYYYO8b80ByDn?}(|&*K zuPl5#>|eTjC~}(apymYT>>ULO8X&_igYpo0?~Tu-W9J|i0UQix#t9j;5ht=}a5}da z8IpPbpUA2asoCp1W~pAxBcc{?$(^16sdw{tI1#ze11o2Hk4V7+-P8bg`h}vmcFme2 zo-Rlz94U}0vStQ%O5`paoen9CBlRRPtO<}0kGfqc(r7qTTg?iqkgI^EmLU@u-n#6R zxlh8gu+tjkPn-B1HDu81QlVN+zRdnQLr&B442{KX`-T!wSlArqxwsLY+bnOnPY5}G z-_SY*)RHsYlLC0HZ0D+*dRKddEeZlMta`=j2TU3LS1tojWr8D{-LSw%C}zmI;Mpr- z?Dn?;0*qJKt-2mZ!`mb#0?0}$z!{moTV?G;Q^GqFqkRe?CSP82G1k|-odtx3buOlE zxBG9}Fhs&~_vIqsR?vQ$vpR_1b-1zpa~7bUPnt!wO`c2f&J*Ss1!f}lJ-pk;fM2WH zK#A12E7@?-ROeZC)$e7ya&1Rc5Dx8D`U2!5oD%wAD@(umwd8;ntJHDmot!VjjBVDU*#o z!ngDR)F*JU^8Ipzhv)jY%R(F#%4dOh?krU_qw35N)j^R!VHki{n^Wcdj}aCX8e<)a}VNMk29Abx<1 zqzpJXO@*|k+&e%vt_uFeAbiiQ&fDV6bh_Xkh&VYY^nAKxbKwXYNBqGs$v+!<*WGi9 zV8e`IB~rP(5w-4eCPeDr^ikM3rHI6Xll zVEhYqeN^-H;X1hmC@|Q~PKMC9p)~D~TTO@PADa4;LH!9)?W$x<97sauuV5?_6F!|f zYMKL1MD#Eov&#;?_j`!X-<)1`}T5&KvwYH=fQHFAl5VW}!#{aR)vqaC!yq3@`0 z^^lnlOHB0w6lpjeiEgcHxKJ9@2BOW=IP7mv=h{c=^M~842;^Tp;`gXDOI+mS^_seF z*-Y7hY?$711xBZTr2v97fR2bkndIw_qf?5QTS#~r##?jH0By{s)>e*)qN#8HvjvE) znZM!Evi(O~L_r&aY2;-a`3VqG2H|(H)POg$sX1Jxj z%f=zfEpydIc4U#Y3*sO$VZkk>Jowz@LcMG)1~hGL#ACMsAEjWwP3D>!cFQye8^{)g zfu)pQz$Af;f=_&G!_50%_2u&%L<_PK-|q*7t_8l*!~huml~^k|j-1z69F={&p;RfmZhj3kfLn?BigPSb+X0 z9450TlX8Rx-RV{`q|M%ec+G)Ot8?6xsY$be$Y z-Wc)Fb2uj{0IFMpobCr;`A2l>5HHr{5eQQS=mq9`WS71^qEUjIYN(2Svb{~dvuIUn zXGFcfoDF~aST{NJaz-kW0DoGaQWr}lBhys!%GHIgqobL4%<4GJctWE$ipOqRFI!#I zhh%7iEYOr$16hDjT5hj~iF!Xh3#yD6OXow2IlY(hW|x+LJusc{@Xt#{+SBUJu|Mq^ zBA)THl#b9C2B1_txLK>%{VT*+u51NQYf( z*R*BI(^TBV(1s092P;U;Gwoy*mt+44gcHBrs7pefXQ2gqP47 zc#~gnZ|UE87;UK)yW@=tp{moAl5coi!!rVZ_}2Buxj_7>t_)ehj;RYyjVdf~A9-xMCDKOcIy-}H7*JNFTP-}DlTFiv=!NWVCbj3V?i9Pl z6&sqP3RZ@s6xh&ioMKuJz&Z1&(P?>vR)y>A(~>Uma@1?%#hMsNYxK*~@Zx5wwHiS0 z;#Fu!3^7{9SdKOwznwtsCgZ&b^j3_48jdu%B&;^0(Ute2v(d~w+UX75fU&}B z$apIJ{}IhA$qA$=80C%XVI1+(9Fy5zx^(v$aB(uu`LlA7IfKx8@ zTb2%{0?G9kAFo(eeMFBAV{p_PUW3PTvig|C9~J?!*tNNwcpuskPkiX{tvn!mOT@to zmj=@XDS^x*s1SXgoBe^BBQ8k_KiCu@l}X#BZ+^0_eseuz{_G3cGbZy1D6`ma-leW zYkNIw?2vyCY+>pC8obJk9k4+tV&T&-OPKN5o<57uuafs#T!{zY%$rLOrQDjREs(%| ztWDfU#(x^SJaK8Uw6jykK>n9p$68fsd4Gf6!*|qli$r%(5OPVUbqp((ZdMZ1F9zps z(>>s@p&=ZmzT!8Kso(%fzmi!?44@b!s6MGMl!-WuH*IT%ol=WD zvF@9yrW3@YfkA6fEQ(1^Eb>V|g0lEw2n+#dfMJ?Ora4iIetM zR!NO+Ei(YS9t+BjW4Y4{K=8dLIXSu>&Z)9QX8L9Zz0faP=m^Ge;S3LF-PFBF_l(6a zq0j%VdhUlE+DCqjuvF1-O$Jw zs?%&Dx<`b^UGkgNF=!dlSOD#wPQKgFQ{ll;b)2OeE}`VH?a?)dSV9qT zi883osH&y!FHhGSpw4y49Bb9;JK)cPU+*MIu$V@Ml6LgXw-v~6^8T!Z zrP`M96adjT9Krne5qMlO+{Y(4UbZKA5JR^r6 zP=3SWagS`AG^c<(j6>25rN?_6qN!LmhLD_}fgUkk<30k}l3gJM zS0e&H7r})d{|dYkFIK5lp?pQee=92~fKXok;fCmWr89V@DV4SMF9JC2mAcWBQ=(G2)Y$W{`+1J5qp^kg}XbW z1lmk7dCZLJcbb#F!@&^$s~MnGqMRmsFbwi!2cg2G0n5V9!i-_bH=AYTJEEwi$fBnY zH~&zX-k3#VgmvwYEwH!Px*EhRSxO6RmZrW=^N%f1K^z9;?w!cMV-4Uo^e}U5$3J6p zN)o}o0K$7ZBt8!gxHSgP)_L252mgyUnVK8=fW(*z6Y8TZraS*N%0&fuk14JV zXDowm99(MO@V=NlF2XU1N(_`kDm^Wr6CaXv z9rhfmO?OMrL0B7;C)~LHUIFD*7{i5WXJGPdU<1PX9d)Ne6d%(?rOo+?PE@5#Co^e` z*)V2TxZ9;{9!(Hl)5|-9r&KpizJi#~6%e`_*Tu{s!3zLa!}2{e-(#QIAEo9Kz{#%w z`M1QScB=-I73aJ?r}a`jSZZ49XQl5zC;7u24P}949$JrdeH5%Gj+uO%k1o@;NR>J& zeSgml1n*;hv((b^f6j2xLvSn_cuhd(@Z!h<4*m!BiNI2ic~{Me&5gg@UtY( zNcCt4j(`%D;%6ZkQ7nUZ7*XW?IE{>PD9nMZZgm7+?z;INqStM?sYd1NDXP{#^fcIl z6mZuBC$OAo+2VlhE7qs79T5c-wut!b5md^NwL2~x?&Q@`;bEA^Mt9|ma4fWoxc{=> zZMCnm>yiTy;MDn4@S+~3P?<~B}hI~cr|odNVf$6qy` zp3N%k&H_PKWavC~cNid-HxpvB`l>2kE{@xjhv|6u5)>(fes~RPU>Ub=C|7IM}abjH+aTi)+OSKXpr=x9}}*V-0H6^GEX! z#8!F7`2R%-?RKlb)t%-Ku!Ije&I0i!Na@6+q|lZ)C=chL7>+8zwfcK(S@oW z;6*ZRa%e;`!uk|-XO%q4RRK~}O}K@I|MV6SUYwLd#HJ9?uKb3CFP(>LijXs9#vv|p zgCiolIbC4>qPjPH@F@PqA7?#+BD1%Or0C*3;da0&H+Jk-v*QJZz~mw}!J?UTK}?d( zmq-cZw+>$-kYeq2CMu1{=jTIkH7+Na(uEUgE;PON!NtNv*QNia7^4bb*lrY$`_nu0 zpMPuFvt9TCrrLdLDqvF^6x{nTr$c-@)4&d>pGblV!mMpm(PR9Jh!((O$7>lMtcgWf z1o_UgU>(FH?`wgaw4Y zQ{sL@=7FOsRK-y`c?|5?Pm^h*GjdBuvF@fqP4F{~W!^6yw&`Q`XCGQ!shw4BGX}jj zA7#=($4@^Y#TZI%M<(d9=wqj;By%~d3FmWPhrgTD8gY^+w<{7hvcVb)EqK`E@xn9) z#AY$yL|tpa-1VgE@s=98$Xo1ODC@GOjaFMjvWa(z_hO`>Tw{v11hkZ#M2brxj=V>8 zQD_zNkR(>pG=~F#?eW#Fz3`D)FPIm#di#IK!ydvkev06{juP%;FfIm7L-JYsfQWrN_ zx$F@c@Sk)rk&3Xr^3r_qu+m^@#r0y64g#&^2R|L&y)Fh@z}Ju{ve@E6a1v+bFf0Bz z96mr3O1q(_S(z-Xe%rBneQ5J3|NhL~*$&1ec5ktdlpK6tez_dL^Zj|uZNS5#7xFRA zMOpZr$_`AzYhazeA)A)MMN_|gnmE{rIdX-LjdTDJ@wcQKNT>YyrXwE7@&Q>*A;##Ye8g@H(oyf) z0tQIhbWDt>ZSPWD7Z~nbwN=WOS;hQ<>3zT84^Ow4-{&c*$NMGZm zLNd_)HYrQWFgr;axx_VcrY98BXE-|L75`Sa#N45H!=Qxs{){maoM1t; zpoj{D_ee$PGH?=yuEB-s?M8y;0d6aNwt0-;^6ioe*_rtK2kVri6;~31zWd)B5DafE z#bo{b)<;)H7vle|pM3Z|D?ZP(UX9jn~9g+{~5(T!*>O{;!;^b2n8PSZw_BJ6V|Q06##p= zeh&~*hC1o(71el3n10IY*_7u zS?N&Rer|YoG=WjB%X3$62ps~p{j@PN9wf&Sqd!@)8BqU1xL?xI!~6c#wF2MOyW@=9 z$^y>I#n#>Byh^2T)@7W~@U=*RmJu!$=V1kCzLsX*R?1EpiIZMgMzmx9(sxgRdsC_6bqj>Y>L#5L z@<~Z%wtJJQB1@>bnmyS`J2a%;Iq;BA_%c1hhV%&4UeL&a*jX zp(5n=eKhYGx!d-4;8-b;?w_ZxMH-gW#B8;MW?8{8z)@eg9;G;)kw^kwFRqWS3j&dA zI1mMmCk|+5yDGEno)5&8J0P)8`|sNh_xi}uzT5kEEmiCOK{?Nfa-sng;4Ecdpsp0|yAuo1b#Fs6EGtiX85LCo z)83P%x47n!`zX59CoGU0j=+r?SJ?1qXnYR;O;~Y5!Kb$>k`GnTLmeH<;R?%*QWrhM zE8<5P4!*IqqF9hX(2*0wuZRKbg{c}SE20c8Tf|pM@t#yEAFIi$*CP`4_wvR^L{)#y zE`W}`!n6(S@z(xO*ZOSJdXCwatWsjqK3G_^1U=(HZ=&fb3 z_3g~;e0E+OvzWuioin{1SMbyGV#0*wB{2xN4oM()djViBB{9Ds1!hxdPm~qkESCS zV7Lul4BaCAj7lZEDAT%(bCv=Q-gaR(4y0Sv*TR=2EWiN|ZbJ=}6Is>&meQ1D+>oXA zC`^I=aSl>0u;K`(#t0T4N%^8LdV>*VK-ZFDD&p*u%DAO8_H%vGQ3{8Rqw{r0rfN=A zWv!g5tDbBHDmSQKPC^d+yUM5C0;*n(FCV`57i8eIsUY%G*c9Ukq&FYhdAHvJ0?v6o zg{YnH?B$~|i)(ouK`{nE84mA~>C8qi2+6yN?Ufpg zpF#rjLzFd>{#D$z%!8}Hx*IRB16dQ~TSh-m$g_eGWEkAv1nZou6w68rk^hZUXt>Be z12Wt85?MAO1k#4?t;axoU+Sl9lEouU#kRlEl;20;d=^hk19s#4Pk4XNcf;#dg_j$#}(XbQv@o4LEz`pe8OCq*QG;D8KK3!{Z4T;cuGthjK8>J^oD0@~oO7YP?{n zsaeAi4buDjGC~f{Y-oNgB(U2X4iOy_mO4-#CB4%5Fu}umy_()?zHN$t&9AR#Db(|+ z{8m@4E~(A5GB=EJmZb|Cug664@56%T;hakm)4{Vd3XS(dTf!`!l()VsWV^eH{MTqS z<(+;yKn1=lWMQQ`GmYeM4fqB>vG!8d07xoifndR^14dOg!iYZ zBlw{F^ndWh)s^0``Zb@>7*808%L~Rz=U6CVQlZ-G6j*-&Jo@Eiz!hW)yk4P^+AM_v zqmd)ym3{SJUZhw-hYUmGz$M_~k^Kf|jH(zpXWt7A`0XRyd}niD9?ZVOkQ8!yXTpn? z9UY6z{O=Jk$fGs~7BzeHP?YdFI^JSKgC&}?RddBNJ=z6;^KT$tUZ;T4J|6JkI~;v2 z0f>t2(&VqqoM2WCRoJV>q3lRTU}*t<7U)GlY@WKLQn%Mfhgo`>2vJbG=%hcB8p(9* zFNHM+X*ycwbNIcJ^qlcB{Ff`@Z9%KBT=4P3W${5_LquS`4?1}oW#X*zqP~7_0(6Rc z-w@O_rAMH{Lsy40ZHFLhrQ(*8ACovsr;SBNUGQLUqsPvTgPkyx zdxH5a3TY3zQEkaKQ8|wyiplHb`C!qtJ9K_ctb!=es5LMo-FCy!y?-dv8dkb;FoGto z)1BtF$X(8-HL<*TyikfO1%}U@YW3)fAsIvRK$_vvwKDtqYrNIzFDEhKC6g8Ef-b+9 zJJtxFj-yuH8AwWGA0Am(A}t|?o@VFm@G% zdp5M}m3v($$Zs;Vn)rV@szPo|%wAFh@*5z)`xzBmyw9XzvD7+cw_ld@??S^;*M0jm#h)@fC=2$$av$JYw%7`64nivXAIotabE% z!-DMq?yteX^HVi#*JbZ?m|=x3vFb|GevGjCdq(dcUwE0XP)AC z!`z)GObOK=flCp4T?Rgj5S1T;0!di%TzCI8UQ_6$Ix(CD?=(pzc4kRi1(i{rYHj4bm}BM z$4S5^wk9LoR(rn#B9J1>HO;2vQef%#H$ek)(esErrs=$!I-y`GwN&6^W4kV6Hq)mP*0Ul%z(Hw!FmPol# zP`hSZ&ZB}c zXQ7{Pm-CTa-;_P#(yalgiSRS)HvQ0v*tVbr)?!Hh9qQWYQPHuaS`nMaMajfqoUJ!I z*CXOt$SoYKgK_FQZ>2;${+cV9e5$WnLZ@0JiS(x$zbcbcgMwjH&^t1saMga{xFte> z-3C?Z)?)g7pL!d;ED9znU!f}w!hS2!N%`ho#fontW>GNX7k5lHsR&D1CxaENS9pgn zW0K7PT$POugTGaV&>m-?R*H{g^#-Yhyy%Qdfk=Jtef0E&m6eauOgPaU0SV+d8r8_h z#kg%1!}~WHKU|UQV1bOEzL{WcvqGNFV%*>S39Qa{V$_&*X>L-4O@;HLd621m@5aJY zS`=9K1XX0HTDfB;V*_S?rXY?jRaSy0NUC2%x6D7Wd~as0lZV(of`XNWlSAie4%&L? z&PI2v1xBEN_A_onpIbMZ&5&WSxA}uOHjt&>)X@ZKBO6nu(#eHC3!bi199XnA@hL*l zRtiB!h%bjtawBt&Mtz+oK@wW9;A_zjS2Xn3ZLE@ zvihUK9b4O6K2v>N$F|90?jiT{@|Y_s9q4pRaAc`EdI$rmIMBCCQ#?D z(GGh{^%R$@F{PR-HKUa}hf~kyGf`Px6JlN3R*FnzQ>ePVr&-SlTECr+8DkKf6bZ>| zZFY0;9-MOhOs<|YibwdM5wL;wC8ec}Sv)sbK!X9??R>`XoNX~Y4(Lk+H{H)kP@q#j zw~LbI!#VMR3H>X246KZ}D$;38D%(FeE=js*M$$NFw(k3}qGN<9(>nX-*`d5}$|TdB z4-D4*ZzboMMI^zqtd-N?u#VoqggtMuY-4yVo4?rEFHwh}@xf#*e}$4CTtAm$;P+YR zeI3r~Fr!6ti?UgV-F6ZvJ;06MJH7b`dPNHz6~0f-A3&yMNyA3$zZQFwZzm>`6r4R# zNUVekG!!e}i6r3t?yRfRV@OUEg?pf4G)s5!-J|kARjIgXb=D2 zexUK9w*nyIPK?pM^<-$B-zCtx<~m=TkLd&Tdn3&5)My2Jy`={FRA{sm{;;U0LBMd< z{yye3d5(HlaNy;0IbU?L6`mn$DzsRZ^8B7wkeW2<;F~@k6S?al(*;ILDW(AbKLEf1 zM9=c%r-sP%H=yQMq5}2nX)$soz0r+4SUF8Lh?=K61DgWAI`LGGSgvK{VY_nx9NmDR z*3(jwa>?&Y)$1k(@?bP(CzUrF;vWAD@U<*~QyiVXwlHQ!aXO`Gw4yGwm+fTQQO4p% zVi9~^@f=D+Uysnm#_!j|2%K1-5r5b?&&jM>7NC+8daLj;S{Kt7j`pvb$NivU<~;{P z_kHN)`w}cyjQ<;vN9=6k!eml%msY@wqncPR;uDd@c z=ZH3x@1r9~j-u7^(T<3l@(2bIB4f&n6@mW?=AzgZO6`wj%MElZq$R^nEsrc%&k+>k zT^W(kZDnUSr6NImt(`Ws=|X^bEKgkZIVp$GGb=55seV7ZAvkps!C?ZY1*_fa`}1M^$s%wS)<;Ra{&H zd)a`282eO0a>tPE@|@vSUE;+Ll$<@}p?+Jh?nmR*A~UZRh(x<$$gB2(&>yDnFLcE9 zmNf1Den!`Vwwg_3TmTEwiqcm=V=YL3#W&x01Y8zVt1+n*dVTZPJ99AS|JVFL&fNusg#m-v=gH761;3|`tr6Hb6Ah@obL43vASfk| zK3~{p?_QUFhbd(>Ibl_GVmbCP+pgT32TKj=n9+~gx4GrW^AF$oX*eAany|&_G~S%m zxAvjL6exq)OQ^ONw2+6tx=;6+pr@w9fiFuv+|qU8qOI$}$r-kGw3TjL8a@agPgmf! z3mK38x(9}2npQNdeYFikWYP*OLf~6LFkM(#Suc{+07|g?6OGC4_b7MZp=MWkv*7aA zlsT}*lWQm9kJQvY=yjAoR+jLj<_K{y0(Jfw6vV{TF5)dn;hR7V+c?c&ZO6x&!h4T;UsT5VFTy zf$ruyOLMTz*zVnVxLJF2tRA?jKEw>s zCfRSUQ>i+sFY_k_2XDDK7uUpv%LMAYZGiNDDIvJFb;K4qvXL(JzTy7YW)5y0OFG=W zP?_T4Dl>SbfeV&vmsu<^D%WID?P?*rGkh{Pub9%n)MaAn8&+-`QmVrS8Ahb*aE{P5dIh`IvPF(5?92n5(%_U2(k8gSd) zF!0pJZMzpk?~SHWV2Sdm;TdGb$WTzin;ID(xk6WfaSnx9Auk`0S(U1}$R^e;q=!H4 zm>EvpT7F+~J@&<;o9d>Ft6{bCf}i!T;9uL)aI6wtoI-$-BN|E0Zes>X43aSEN!^j+ zM6Op#XcQ9X0alr4ax0Ubyy*lu=S#NzDiBbL9}|%D^sf2#LBot2w7v@HFw*?8mzyuS znAU{^^(oR^tmsV*MR)*FYVYdm=yy>h)z=h{;saIWPhKU+nmO9ci6Dw`4YTl{OZ3r` z0y<4%ZyW<}xY&nOGhYnY)&saQwdmJ`qkz8gjsnB49OYCPw7t01MoRKKLg4*{72Si; zJ2^~BVuZ7{VA&NcR5{pZC%q>?-O^u4|#WyfF9Slg4K;;hLFC>A=<`oWG2Kh~Alj>x? ze>d3Om1@g!M>z^PWkD*vS&TwY2wk^(P3O8@GW5JLtE>SlKt%_2$mf`t{zy?BMLS@e{)tSDwjTh||s*R4!hYJAj# z>yiiW*>~5I0Fsp&&1hLVYP$$#r^!CK$fhe54k24l%qKg5Zem}(&R<8PU>J@cg~f9lfTT$Yit+KSP98XK085dar731Djb*`l0~YqI z!1~}5*_vL!Uim16@ubXgHi|6R7Ai@ia3v)?Zmbt0wb<(0mI6P|Mo@naNnR|EGz(ja z$gD%=LoznwTrtO2PZagAyLInU*gGgF14uB`L`0O$-8n4qCrMrVAqknht@}QcW^OeL zp`3#X#!$o?d@3%kga=L)6SiQ`YHF00<%&hSEfdlAR8K@G>3_k!!{3TVoCfka5R%z+71Qkq=ONl+ z5x+KVnwphu&^#$<(-4{5auaeB`{~nP&BAy&Y@#TaC#q}2J>;Ne+WQOvsrWmSHUZmU zyPuBP4Yf1O1tVHQM3F=>CS|yDs;DXX$P4|t9M7q>o`z5n}N*j!7Ww9k7X^D81(=)^Mk(-+Ag2otdLd|?g z9qX5i!NsE^oFBIMHPh1b`nEmW+qg5?WMhK0j_xjTgj*51!@A?;KlOI}iuPuKZgn-P zZsJl2e~)*EC-nIx4?fQ8yXlq)DNJG2eI<{dAPh3qnqr#R_-`;;<@RBu&4=n)3#g0C3+%t;0;T8Nab(?+0*L;6Ev;??%S$0?U)n980aq zpV4*gWXKz#S2@oQ=G#m-Yk{G8Z$0fa=kOjIB%E6RZ_q}$->hT!VY2dvGGp6__WI}Y zMD@fXl<(Qw(Fp3}&jqI2R(H^$;c2C>vDhcI$SC}9um_e|qB5+9^$(N(!!dOB?+3E` zS$^+8A4NC(f|bW`j)!U-21+T~yYszxFrM4cMCua0^mhwYGq=+9_Tbyc0IbaqEK&A` zY}LcR{Bp=>(a8KFI_{o;}vp6&M^L%W(Eu zXqET7ma|PhMz%>uSZUT1m?Wa&g}qxA7P;nFn=HiD1Yq|0`D~E>p8?9_OdjmoC5Xe3 zX2kD$55(+kw;>H7b~OLUdI@GP2LovyuTGL)MsUEW%XuJ*BxGW4Je2)$$^R*MlYH6T zXBr;qhM~C_4Yj8|L;^`%6W^%69Gm;U(LONct_ImdO*S6T!*=6(#M4%r)S?0Y+0p;c zQwCJ!pqHsN0oLnG3OOEG2dtN}m_aZWYn(F4h;2oR!6*%vq}yQ=e>$E`vr|qN0=g)1 z>!c91iie}Sbq<322yEtL1n|Eli;`fnE^%v!Ao+byN>7lox78rO7N=+du+z%9G{c4V5{!Q zFA18W&i6R+DW<@HF({v{ih&O3R+Mngc=`>2Ni-=p@$=rXz3I?Aj6q&sr9J_-OpB%1 zgOUF3r2sLqTeeUdYp%%s^DdiO>=Ys)!B9c!>O1N}r_dT&^b8c}H7X(P@i~~QUsM_9 z-KO+E;%Q%EY=_;fsMx7>+HaWHc8(JKtg{*!2%(g&a(zoV~U2#yd)9P>R8_;7l z7c#NNmVo^m?SV`fox!s1$&+LD`)m`03=^x_<2~7!G+AZk9xjPoayc*H{Eylj8BBMll?A9J;eD+bKBdQ#lM zR$+Xj{va0s@%bjLS*>=^)s;HEAzqa`d@<+3&hScP=GzzoU5n+bhO=v~LQB1=N8P5K z+;#Vh(ny%-_aoKR^&0f}BtQ#Jl_(q0fLg-WElt?!>mK9wE1Imov+F9ccH{VU^)Hb) za-D6UUka%rwhA6MpgwWOcsS}mAFFf^nmsK3h>s=Zl4u+PTD?bVw){U*77>DUK zbS@#Y9FS%S1A+q>H&thmNKvrz8x9Acwo||~*{Ruek2YNegm7tt3i~*p?!5?N{6e#O zS%5Nm2yx@+rX`ce6M3C1M!8qwDDfbcMG`*OAq@8v7fH}^PjIAjMtlxYt;m38H-Ez^ z0c2WvlRlXD%rY6KIlxwxbx$CXV68hrbuI}6td;7qH8F?+UF8Uc9$nroGx)C5VC>jXjImq?E`iYR z$(;@1jSjNP)P$mV94VQGeX%h-NDD6xqmw%o-BcrBW982Rm%|X-j8SzE<82Y~GNp%Y z2XKAjOa~tytYoz01$N<0j1>CG*_TxHk?5XY&BO*~Qqab&-9+333{5e@B6@Y59=v?+ zg==YWO4}4hJ2@|QDA@Y@k&frg3E&%^Jd6p~uGpwV%I~Rn1FNTgI}&zCmlEK?qQ=yk z4tj0dOfU?pb`^BVz==<+Nvf>n%2^nS+C%;2~v*HEh&-tO}0SxMjBq1UoAASoM z-^e~uc=?BY#FY2V$6Er@nmoyPm=`E3_>{B@CLCMv!(~mb}z$F%qi5N!@zD%n4Q zjJPGWZif`Xo+DM*i)LKdq%|&#fRX&^Ux4&l40Qnrf0i{tzA)R??x-K|ro6XLLnxbr zY!3lfjr(l>NbN_VEHx*^i#(_qRa68E_kQT>+()!Hc}Um~s@ zb0o>^{GC`mY7*)y$*tGy+TasyGZ-m@lq(Hs=;-YQgqlZ_F5F5%(ep}|+JvIk0V0%G zIbvLKe{e&FgwyPvQQIyu>=$5C*{`)nGeZqQ6k|!zhiM6K-vr(?4bpBuav%hg1{meG z`^ZU}MiA-@?4P4^OQExQ8Ch7BH3d<-QdjyC-X?RsIYwdUY~ahJ`6R74{G^*PSXZ&4 zb#0LE*2y0h!ZVgM_PshfL}t=L`6dvWmhB*zf)6nXg4r#M$LBi0{d*1LAEAEfID2I> zAbP9qg#L$6D~2pSLX^<{R=*N1!bdyQcFS%=@jh*Fx&g`}4(Kd<<+W@?L!o3U2nz1| z+H>W=iHS#*0AQ;AOLUTu|02#kDZ3kU0ek0xUEMM|-GUV&%LrIwEBP;~btd`sl4+io z6gWHK}$jJbsQ-iH~AA^XIAV%ejs>kyuU2fKh zNgSW1i>=69RiHddZY!Gz-b6f6E4Shv{(Xy{sQxcXY?JoyYkAi;{d!;JsT#U;+AsYU zHG*8X+2f{yS_x{=JBO1z-F)r&5L&uxlw62uo)i|X`AlZfhL6LZ>v|6W+|lqMS)oD& zlp;3>LLcVNCC%ke!2u@(CWAhrbbhVM+U^h{TRX%`Ry!fV#ufen$8A1g)ZHK_qav>q zO$HABtl9&-l5_AvjAmH&Y=>-xiy7A=sPjtEkd7_9x!pg{?nZ zlap6v3K{6PHycD;l;``Qw#>C3sb?{5X2;Y3O0mYCIzRE!d<_Kr@e}*k7)R5dV$N1< zQx8vxH_x#AuZb~MQI`o27^<5@j>X_G*G1iyEKD)_*MGpJzwRu%EjxkHIH@{JwWb=Q zN^+C|NGL{7G*QjL?FGSpskdvIn#44`SkZzCXJt-s&ub)w=Cj-3J*gD4wHxm!Y8I$p zb0wNo0p>|`+%a5^CO3OIYAg~oIP_c3i`AQdOu!f!7ZGc%lWzNRyQ%LoS+7!!E#O3* z*Q97}glj~{A{-tl48b)8oZ|M1R8x|+eIP9`ab9eR2px05EtvPodl31y4S+eB_AL_l zSUyhbDZmWI2AQYM>7@?}dXrZa;4bL#rA^ZqZrHXoT1mwbN`YV#PzL5AF4Nfz#i5}1 zU3|0y+ZLq1H&K(2IG~HG`0&zYaEWa=dyH zTg)uXf$ogl0M-0_oyKaOsacu~uo-)3=kdIZfFailmt|?Ukwz4$YIHyF;ToHG`?G}( zlNpoBH>YEET<|+grOjS1yv;$KU=c-4NI*$#QgqKw8lLkZ;xWm&ADd(^I;R&LPp2D|QZ- zv@MV18)eCQ7yvpVFdJJ9UUJRnBQ%q`elw!+S^m~@NcH20(9b`i|Zj?g~U5h``k{PT&Z2|Ckmn?N)O zt0Xeqh3Fl5PemV&WqwBJm0`>=01`U#KXCW$_iQ#6J8p3n3vRDn1GrTpjEzMZu8X?Z zf3783ET_))-Z-ZHcW_M&K)Grh5xuCGupEQupR@9OFcxsLVw|&e&&GaFYE)qOD>4@0 zB+h!3ximV^O&AS=i_#t^zJ81xSY{_Md1(B--wi()7=fq9z6I81(z6S z=|ZVtLHyO7vnaKEon3Q2>{V$$TALW3gK-zG5;!>D&i=G4f47ou+^QYo=>grasJ<6~ z6Knx+x%;D6XSHMfWKmeeY=g+ZB{k9Gk_McS0Fr&v>raJ1=#ICcD}s4o9Qj(Rr)nH< z?3q74wMS;o0`mSHHUT}Ms<0t0_bCYc)DVj7x2j#q_ctWTX#Zbp<+4zK+Wkqa>tI( zRzYXiz)(z4cyqO+{qvBI1_zG%R{u6sFw_3sbW&&Fi%Q0fSXgmYEERs?Ruj0`HoH&l z0Ag+SkvHlMY34a_Q>pEqj!AS6f=gQdNR^X9vHO|?jBMS#*pmNs=XWN#jBVP5k1ZGX zDi`O?t})U(8EUYRbD73_r!a`OYCqUFT9IDi(w0q4%@fs#^IlP2w*zRsa(Aelq@uKK z75Mr42MEY%D`x4u&T_QxwcmgphI;bGVViq5*TYpW8k&gU{Je&FE@E75d zVw|d@SmYSx81r+|D2kA)5NnKT|1f~?xN&HuvHiNKb;jY9v-3~7cF*IL9+Awj`R$p+ zgqull#&Mq>m>TLGNcns>A)|O*Ho7oV)=kHZ2FiQ&@fKipj6YLZqjAup%>VR}cJj#& zVW3UlCCV*3K-Sjkb-f1E0qC5^)^)PTp5RJtq#xNM1`NVo9t1|nSv)Olf3zjPJJVB6 zi%b9;3^3~-KqK6qP=!w@ML8&5YD-X@oAH?OanE9STtgz}D7Rob5FU~osEd9F-FYOT zQ@>-Es$y_GI4Gv9YL8J1tkhaQ@I7d3O%6F1-o=w_pNWeugmty2p1xdaHKAtXp6Kws zn>m4VV)~Y};IBE+siUlQ3QhJsZV&)8ILk5#R(Kpt@o?>{5`PuNb?>>!E1JD~z!(kn zxB$7$+!F{Jd^KRFtd;J2%aWf&?U#wzFn#qOtYVqKHrc9+&jH@gk{Hr0=%_PeVD3r1}bR2CYp#4NT@MgWy1+m zx`C6WYfq3%M6tIvr$Z?!6M+qRe{fVtUmZw8oTxSMPR9?oMk}Kp6UxNwL>!_E1tYz> z*=`B4=CZ_lQ`*ccD<`3^4sLH3wSy?ngWN=%v|^Q^>ya(8tZ_Nka9eZt*qamsB=0WD6UwkZ7oZ14Qw4{M(E2F>LG zs&Qnev&IhKan5`o|5_ja-JeBK{3^ghMGA5biBdO!IaHE~4w=NB-3RGJDY;y|#Q4L0 zJ}fiGz;-W8T0+60?<9OKyj#t-kLh}DLwCqXp9EQj8F{l6W%19=3e_+4#jOcZ?^o7@ zxW}}fC;=|}XVSPcE zT?{|ExRn!iy4L?qGhC2pHPR`4KtjN>zTT30A>Q3zyI4{^of zI;K5cX_VSeuz zMspOC=dfQo5>yT`^X={gonOloE6!yDro710Yo8MHBCf*sui08+pveHSFHpy=Yd4+; zO!0I}0>fR$&1A>fGF4Q<5%~TdnKXGODvc<8^uTLQQPWHy(D6`IAq=F^;F`vMqR3%cC2%97n4ST zmeJpyAILkrFBXBE0y7!Jb#&rSb4RFE2D?T~ZC}!5Z_;!}tevjAf~j+qAQi;(s?XFZ zb3rz-PAud(%46t;eVmFQf{F->fQ-kU5qAii;Jz5u0EDm+uII)`pUTdwdiF)fHpbSu zsTBrl?BcLu9ph=zf^fY(OMTx(V0HSM8=5wiz1 zdtr$G2*R${z;Tu;6Px6#2hHVxUi>DaBWA18px?AKo9%L{3)V01LYn@- zWJIj448}#SUO?7Hr0Bz#@wpkYi_xtq2{-g?rr>SSLbD6za|nkpgR1Lhp)5f|wmrjY z_(5(S}s`@Sshn0!RRq)!H4D zIcg0vg+%F75U3G`zBe(FWiUAXlZDOuBA??wD>OYy2}04C%$<##H_%*tj`mk=N4?BD z1U-+?Ry;8OPMS|?Q}TRMxI;MOd-r)Al=|##U{b>1>W=ld^JMCft&dR>%2Xy34)leX z=QCId!({N?5-P~0spU=y#<1v9{%C~F?iaI}qb9 zIhQtHl|*ni<{_DCIEk`x63)Z)qW5AdrVFXNp7GPb5|4Ul(rUQ!iZe(c>KNmrPPS*l zO3&1wx^xxXZU+=Lv{Ol5I=&)*Z?` z<5(yDU(M=^Y3K2sxE8;k5l(5s(Yp=V{YrC2ejU`^DjJ;|yy)Opq(r4TYjhC8}abMWK>tke*w@ z@QT2)LD*B39S+NHKY;co?!PXaGrl7=BnF`oT{oBM1kM6i^yVuydK4B%$Dd~Z0g5u& z12yPIB%LlnaXo1j63e!P972y2Mh)?{*!VDoOvEg8M->KP0%p4M=efS})8uVf0MlGt zKy9}c`%RDRN$TDnOWY%OiIyCP`?Kt5#K{D!mD6G;<8G7&p|}|{e137j;NH}>gbDMF zJ}>C@(kiuE_+^vezR+PPPUlnH2Z(d|irbgm$uyXIle02sg$`am4m{X3dGn@ZbP;Hu zNH1;0Jfw+pS7L>8x>>7jNCS%vEwkzxUm{RO^4IV~o^zu}BGFrYJXC|npSyYo2dFj} z76}8b;Wt_5_y|qcDfqNzg}?3k&H-gK>pYzmp%+i1RgVmvcvFW|S~b?jwpEFh%6!}1 z>AyyPlIEYylt6=b@r;73IlQY^(DAr%1a4?y=Unj5hPXCtnzdMSPJ4p|8KpVyG3d}w zr!^%D>PF6D>xvBDmWHG<;Dd9IJa)%gc^&6-)CUHfNw9pxfQo7Y?|e1aSP?8U5$1$cGR*~*ilwC4wxb6>P_0sqlLqrKwzcD*()Bj1qpNSp4dd(%~OTEaKbu?KBza zEipH2gI75h(d~F8+k=zcBBCP!`5Pz|&<&k4{C9cmHH+AJ&e6qu1h3wE#<0pDnTy>B zBi2x05T^Ef%s7PQKB+Zj0ZmeNdxcJl!2wB@con2Gp0bgs#eYHK!n{3OKNaZ6K21pd zlGh(ms|L6OU(sbXUixlOIg{gnUmDRpJjb|7 zurIlA)91N5;Q_YDWme{(*?3>NVe*oy$P3*9jVDV{)}W zgcliIOX%WugFCELI(AUGOKQnh%I^0SFVWnVfX%_uOskowL|6oPW2$RJUQxvA09+($ zvd4?}(nd@{RuSkC*kuh{Oa}Uw$BG`L(iCJcsW!=Tyw5-KxFNqdauc!xMY8f4mjmYK zEk{kbivv=WgEf-PCi*5Ta7?O|0-+Mo`c{ScV@hB5BjFy0%kJVwM}Dk^J1pl&Pvgu* zSFOSIxs$-)^pRG+>K*l&VbRcBDY0c|VtUvBqIo~akhH#aMKM$9R$#!18waxq`nTp2GnM2P+64fkmR_K!5>NwQC*Apz$Ju#8u=sf{hfgP?2M zc!x^bno^aY`^tX!n{Bnlia!X_`i*Q%qS#Aec5my(y*n&d*1D(1I&Wybs;V^QyxaMD zcd*gm#QGH$jnPC|6TXd&w(&!Vy`DgFYR$s_5zb;P9)->Y*^w(6IXsWM104=}*qWaKC@CjXPEUYOznk@7m^2eeV&5Om4W`78>f`$O^UCRk9p zU&?LN1|9>gBRe`keCS4esU`!0iGczDk(ep{pg+cS2!e#Lh{pD)#0RDpHt4ia2Jlyd zg*BNbO*YyLH@)QQ$Wj$);;ru`i`_{%CgP_Aow>YQX3}M~{JR3T;Ep!uD#x3IG!;%P zi2I2Kmv!7e3$0y<{%>gYu7#@Xm#fE>mRHbB4FDydC}cDM^%b)vvSr^602>xD&4bM+ zj5bkDr0I!+kfU`?FAkEycRyNp^I=r7T(1s@2~}FmJWb#Rj~ZKEB<0-cQ*aO4Q}wfb zrvz|we%OYlEtD>vqSo14nm)X^#(&4eVQJw%^g_v-*a`CCealG`dYQSv#VzEQ=PKbH zK}0QUfIV+8$QnSy@k-)?jr_BcXPmM-&Jo}DUBW$VwQ%KGKDepN#*l4h2;S$0+uSLo zaX#8cln<%9IH}NU$fB9HjFvdWyI(`?{U^8-nvxuUEt7=iGOsrlxo2&`Q>iUq#OIVI z9if%S+=dYz2ZuZ^vNc0I*VyUqfD_K)uf(AgA`nFIXBZ5l(R_Z$h|quta$B*YGBa-R zS$8vKr4S6l9~#+GZNS1?eFKgw>Z|DdZNt~ku?P%sG!b#5yh-)T8M9&R&FB9^CU-28RR|~adE@HR3>~$r;F-~s&!)*9{ie?_54^o&~j{+ zxqqAxtAadOjKvV2fgy}WA#wP?fuf*qqMR26U)FUg>F_-L4sAU7qqr8JksJIlhw3lO z0|va4JBc5gSFrKe9n66FF=_qvIqBjXJ*l2QBSGUiV0GvLBUo)_@0}~P5H9l;Zq3p8 z!t*D^fOlJUrr0#W%XayTp4h+kY7*JNR>CqVO^qUaVu?44xPv*tSHz0A(EDf9DhUH> zyY$%Y9xHoMeR8O2T^6A+I{OPBSP}e^4tNr_1eDAwqw25@eo?0cW5!f@mx}~{1Z~7| ztr;iI6w4w&;Z9fH5hl)h0>sweaEOc1u!VigXrO!)&{xACb*mMEm~Og;W+I-SeRs=d zQyZ|I_&x&O7&$79wgDq4DEZrz;lRL*J!Xq#(O{&3C93Qx$wr>{TDB7g9So>r)hPb~ zBQj-LUmPwc+v*t`mR?;q!36BJz{_57YVg29A1U)b}ITW&81Pc!60Si3Zr!m!s)tSvI4nHUDZ{r)?P0xM1|5)u4faq(a)}f z<##DmLc~);sm}*wNh|9iB|%-BAW`|RQT-{DS+#X*64FiefsK*~^NkgqnNEeBRs<8d z12XtT7z9Bq-BVOa5T_MSguvuw+K!Mo^eFy!fglYQ2Aj;Ioy^Y*2zZP)cTm%B&W z^X4-5Om!Ta^_SgHq|KDmVoi^T0Rp|>By^7W)1w)3bD7-L>hGrNPtauJWrLJw#B$%e zHBP1ZO$9Q1$RIo`oqTpGFsv>C91lkwsg!O4wY;xrN73w%Mw|PQhgN@A)ht0QlDQw0 zAbW3H0OliK@d-$!~Xd;-zjQ8uIS?vP~dNc=Ssa8U3*o1YKGTx(X?NiKVgZg zr~P7=JkL6dzWXVnyWE(%r=Q|3?Lwan*oq#XmB(S_9SXd*8^fx<)^w?!VF-JVbnl-z zB|mFe>~FVQRfTRg`T6w8w9F{5@Edda0nRxs347WAX|h}O(N5NZuzN3fFnU6(3$E@^ z$#6-I&jR2HU6DwtPv7Uv&kn+7F&`9a9ST_Rxg`cQj{^`9lsp8sf>%>Y6`kV$Q z9^i}k`RQaDn7^1LHWy!v3WYyFDC_{qq{1;HwufHwFcXj;mP^fEv3s}%)g(*LRN$Hz zY|?mqk2k4ojwtP&m$4I~T{ZSR#)824wr>kGKr$TLcv(74PU>qFbwGFqv~XGYtK;--tc*RqJumJaN2w5;jO3dfYXW%)N13^ z%;dNe98zfphKBTX$fdcb54ZfQghSFX<7~*8^lR#Pkhb;*{2<>SGIv~Qldj-6jAW*S zL}b%!%sAx!TSS~;B}21;(89!3P(B{qYPOt#ENC_xQD1Kb>lo*?xYh#VZfQl>0oYws z)n1Fun>_7rF-DrIH4UT5++~bkJfl%&8@P_0`t;_9hNfWI-ugjK8{>QPq8xXj(XsFK zZx8#k|3iAOYjifIYrg?Q;!%8a;S3(AzCFFBsk^5!_*^iT6)FXkhT4G^%!mK|KhX;% zf@mvEN($xCaPWLh6iD0ga^Z$$!$u-Pz4+_~EY{{88np=vMJVvnXZrhPo!8^p?vQ8y@BQv$aZx&B$l6zFLZo&E@kQ4iaQQN7ze>C9(qL;ay(%^L z3j%60*7TiIuKU|&$PzHYE?>N(x6}nUx!2@Mr^g)#fZySi!#p(@Lxeo?IlVEoxz;(G zE)2Vyb$^M?1l>Ko`yIw`^VjKRbSFIVjV#8}95ZI*(6yf24IL1Wo^<*}7BoEnJb3Z6 zT9?0HmBm(9w0^dS3B$es^LP|m0RNChtxEydG>;*b&!A&ydN~R76!PG;-?`I`g(1r^ zCG~voA9i?xFPqI7$T1?wDY-a)B*wmI?E_p!4GV|EQD$QKU=rWRosY*ZsuY?_WmF!; z{?tF@b8C2okBLeKnwW|hk97swenTDH4(k)Qn|6r~&i1NVu{}0;-d0tf^C6rOn8d*r zH01S{H>RDO#vQg9r7;Geh~Dsy5OQ-fvH)$3MBt~N()(T4C{5_RP`dfegRK7aI8=ok ze+MhU6q+uh$IzUBns?uGBBlhXvr=xnmT5iGvoIpEe5CHyXG=cXaxI@_`rD*KN}j)f z&m3#%=WTBvW9{Ov^KoF*r^hrpV}#70!UvSuDHHJS#CU&W0)`}Ci%iI+o9dN zf;y!>cm6R>-P(15^S;uAG_{N@JaUaI6_gupj^f=%6QSeYcvy5zqZ#h{P!Ok}1(K+k zDqfo-nh~h47+$oi0G2C4A~bUWSxJ@O6pOnz*0`nK4i)&Zd#>9_e8$n6C;!x=ZoOfL znz~NUv#7!1CIJ3eS^A*Hv6&+%k*UD^ovjCLuNcTgvz6U-*gaXj;a+sFR($dFLYmq~ zE|Ts>K@95hVycs=1&TgAOom@ab~_?&tKsV61N0KQwhzBS&3hZ$)j9!VN3~sBV|1Ru|QTcG6Ks=|{cH-VNdey@f_#MR&O?m0-X9|t8KByv>27xMVSb`cZ^bSU8 z)6uCp2T%IuY>?&*GrzgDc7%bG(a%)#He|r3sYrf>%^l z)_rN<4fywA=Am<;9bW#6FAl09OxPyLLeTkD;=cXW19qs2&S9N$AC7*`6Kcgd;(1_7 z`?Q>=MK^pV{Yt~8l#C9kLU09SJbbpV+W$j@#o1KM^LnpfXyfHtlH`Ftt9ZLmna%0N zGqHs=ug1vE#1&+jl0X(HaoG5euPdt-*G($%c-;+D@j2!22dgts%B8GpjT)68#_~>0 zGsK%&u(H4Swb29Rmo}3{^~WWQiQOmAa5eYqp?zQn!X9E>s4iwWakD)mWKhDbSI2oG zkPA4`)J2NGyo!qXdeQc{LEAL6FNK-|uUH^^IIgU4^>Z_xBnOfJ=2yEc&)sCa9490q z_y(S?<#ka5i(!#OCnaOGzX+6@=W#UQw5$!9)QBpR%0qxZ%%6CfQ2?f0ae5R=<+)Oe z4XPb3i;fDzQ2{GrogsJ4Wu9|&UXMT~!->hhdTlfP4vJ+tX1s!DL)$}C=Jk>$FTY_l(BLF zn!8=sIA>`NWi!3rua2~M!}nk>{7x2{Em=JunHAEvoW=r*o*cV;xNPa0KFAg#x7-e; z!c~nXShwBR@*%TMS}~EIdNWn|L8JT%3lW{QfNO3VSJoMYJ5QSOIJ}c%CR_ zaM`gTT`s~T{xG$0+z6P4sw=QKUg$T0JTV1DDZ>odc%0(z(vYe>LMLYt2e-vsr`m;> ztO=iXjp9|?#N`G1wML8XI%)OScL6d0?pB1M!>yzrGj8BS@~S!mZ@^Zd$)W4o&dnqn zbNyEJ;$oo=0ybw3c8Gm+CH+&BiekziEJ2Hh3<-LrGoDFh`8$oSldoM$l*SyW`$=k% z@87!NFVw`(T2Qm(ZN*E4XP)BEFxzKe5N&FIcKFAQp0vmEu`~fNG(C{Fdjw9tEXqF# zYaP#OkD)V!v3Q@-Vx>sLbpgI$ok~1v>AW*a9tc-B!5BD9dMuHm)!oF9)fkB2dysHyY?{~r&pDmBb=0`?_QZMsnX|$-e#L7~4uQQp^>zBz}N)ODlq0=8>Ds7O&sqTnTD?Zw@kMWQ5bB-+? zj;5J%tLTsW_8FE4=E}P1^h0hXSoLhhYe3%JBH?UbItl>9bb8whLTPpjnFa~P^2lct z{T9U2crgBIT7n9Q%wlXN@1{4jKE2az&j9@f0-Pt3Lay6wS@PH<24f5Bv$*DyHu(Nn zzha18hJEjaA+L8i4Dl*0&Rthx;#`m!;Xv!>ha^R}1I7}dqxtKqL&Cu=8@nVT7NX*D zGoWM5_38tF>jFPJrj?rkwKd{~Hs2gNA@1#hW4u?O&t%O~%xgH}!p*EwixiUOhq*a<11`BfEc?O#+uP z{p!bGJ+~K71+B0Y1!$ORJW5y0ABG%X(}^$yai}31vh!}mT^n4BnogrzE5P!q@rTC| zz7an2y?eF7uPn^tlH@9NhV*{L%vC4dBr0g6!W+4F@maDH1G(XADd|?4p=I#z_NLVN z5SQDVPK$F}2Xs(ldOHB!B!l^ryNZc-YKurg^MPM1A^NhM*l!KqXzy*LI#Bhq07soF zoyB@%RGfh-e9Af|;eia3wbDPbg?Y61*K78;Nc%+WKX$_mUnQyNpwMU~zOcL6_jeC8 zpOJ;%xk!I0#M!AEyP~p`t*!k%+o;e+Rp1Sy(}PfGz1Cif*wYb=a~B~fHndavC1*k? zqQuKIlEDG(mxoW#iK1Endc2)9qy-DE2oHtY06&QqnmnB7vKfbyISE#5^51H>9sud} zy{hRVuQ+Aj!6jQ)sKG~LIO-xPZrZok?M?ysZELZBG}ev+dsD30gXk1QelrRkkTa z*f>mTrCFtB-$6?YpJ~jX`UUR}g)_i(1v$BkW}i=<2R`xB%$b$$2TcJ@GxZA%@9yE# z&>f;|nmz>^@8q!^}bbgagww#yprx*{yf8yb3I7s3deFiq_iS;LjvR?olRX<-@|( z0}Nb@1o0yet_dh&pfQWF8O?DjJ@B@)3EF0*o00OMO6WXs5oOp%htNmgcqsFB^nEeU z=KMO#sTu)LxHX@($ds_7{Pi0}%bR|eQ{2xAOJZb;NJ_7O>!B#%<9BcSJ}Bz0AHfefcmvo!9;H$?b)3EsFcFhU?*n8i`S6SJa6K(bPqRv)y=E=xmX|3=k$Vh87%MG^)3cH#RFmcYL1wtd8W@=10vJV=?Qu5KZo?zH?ngMCBoUk32a0!& z5Uq^mK?h8xdQ#wei>9ssA3~5gWlE_T?vj%4Omu4XFV0J^&W*2;EMa;sB71B-U6Rlq zLj=cAt#>qW@F&XIMt6Xprc(MPHmBuLHYpLIP>jXl&OxgNAqUh?I{u-hs73LM&v#g~ zcwvR?=387;5r|UMrLm27r*OuHsNN-!$_lzkk9%=<6p)rgB6wENW|6^GIrY=be}CtsiT(~f}(v}6)WDtDUOfVkn?f0HPbpep9;-*B2Sg;_rSCil)| zi_uX%@$=jWgia~A$Nj>_M~s@X#`h3x6z98F2jn97NI1(_Wd3lh|3bJR+xijHRT@u| zhoQ{gG?tpjkP6Y=e=c%p?drC)#m&oOeBI-y^+lVl_hgI zU!1CLNYZnP(#bm{nHE#qN(rGcJD4Ye_!Z~Z`)pV;dEUl@Mh+&wp2xI1<`&V zJA0|kJ2cQ+O{_FH)b(`umk1+v8(1_PX^hhagR)=l6JT4@d)sdzSn_~)ds`T!ECi4p z;*uLrHs{eY1W#UQGz|Sp$F3s9sgbguKwB>8XJYODzU;@H}+dT6PAt5?NUELc}M*4ZSd9&peo4K z8n#L1`7|3aiQ+YPh&y55R^+?QkJPoy*3;t9Mp)_MnQ2?HRX7tk@JATAqafC;wnE*# z@o2ID1io645t&lFLWhI;XvmiM~y5?>yAU3KJ$?{z?BHEl%z+{}C;35PaIv7Ls zMrRFYR9zR5%M;kn@R-*qmgY!F(qMwQRci_u2uAgRpp3n_rdGk2RD7%Y}n z65AHXYRD_AhVD@M?F@6nLOi^vUq(3S^M={)QZ>T`_TT2r7)FN7imkKpIY0#K;tgR? zG1fTZQf9`#gKzcXyny{Q9d)Npd?KmusM&-&@M~H-Dl(o?Vh|Ma`cTiAMPj?yN5t0u z%L(jbLVfag$JCJGK7;0rh@I=|k2lvklY(E`bE-nax*By}^s!QMk50;m`S`28H6{1! z)gfu03CwlJ5_d1iODK3S-Z%+EG;3TnVvo^4c@N=G| z_b`awo2LuF()-r|>VJj8G*B_6l+*c1$Hjo^RC}p+y1LvjgaKkKX%bMT*i=o(+0ihT zcZ5R1qIhz1;7xz%vjjYK>{$bPqbLm09tUVrbP}2F*Odx($(nBoRG)~6(ega`ll+TK8CZLgHYNocb9JbdR9DDAPW^yAC;^n!{U8GzDacJ})|! za!BIuJK$~hJ+7x!#aS6VRTl~>nyWkw*002r_q1PGoWF{XAQ83XZ69+@0@AYuaTx30 zgQuNFTpCc8pcYu&SuPsdqs`rr^5k}|mTN4?jFXy?_r(yrU*$P0YZ03BUmT17Zv>Nt z^q{2oHca^goI90Z)oJ@-x}UoD#2qEJ9&asn&Ed4h5dv${{ka_bR6jt27}3^I!_N7lZW6#cWRKxSi=6L8JTK$UTJH9jYJW-I%yXlt1&L!JrG-t1OK_HN12rp zH(PwU9c@Yjkrpkc3hT~hDv5o+l(G6=?sFKv@yF;@<20o?WGZDHdUubU4`9_Deaa-F zC_y`&0GlQDHb?c!&eweyXxlMP{YiU>P!@w#`<9tG)>v%cV%c5Ptrg4EmnXU%7}%b0nV^?w@^XTi%2aF07)dD z+&d8Ja_?2rMckpqQ-gHNCyjC>=nP?js@Kt-1<_6L!*SukQqOv-+?s;m#@1ts99p)j zcn>~v3Xmh+gAsRgq0~#pF3)G6e!R*x^1vtaVmI6-G=869&F%u4m;LYP1KhH6?V$Wo za$dRaBUoMNt{ohBXg-4vvcUWtZOcGw#v=!up({7l{hEs@iiog+3n2_x3ho%3X;W4r zr&i2g!p4IXW$w*4)o}R(2$Ed z>~oKMd`7o@nDPLB$A1`KVZVu&b%=igQC3#M*Sx2N(ubZnJ2@S1p*xAn=|&(i;T+F; z3Bo-Zih~;0!?Buj)?tYN;$XN!5gGqOnyYN5YzRMhx5%>B>|;kcluuN__8XQgq^A{M z_;9#lxu@nY&Elj~s$e*=Z(v)(A=T~lfSZG57TVH8$=Uz1Ci8k?7zw)s#ldhHBZ z=wDR7Cfmyv3c=>=iCR1`fX&C3Nu)E9gTJt8EhM_qIlJta>ij@I4Z=#9`aPF@I(agk z;Q?n;4lG6dJ$A>rQpy^MN1rAnY1$Zdw#V%p!7kzjTQS6HPSW-T!>=Ma^hSM#9sL2hKIP=gHg={o;8a8=69jpOlB6{z7OPfC!vB z7XDrqMy1u4#cnRH;W0R@*@KWaLT6L8hgL0;PQ%8%MtM__^wY*d@FEtzvJFGe=QpTd zRnO0*>agoU&_8;TQNMy1v&6pl(DP6|^Je?pYT#$6*<#F70yun__!KOAD|`iP#aN!v z$pH}evn9FTu>mCKp_6cyt@g_4S)1Q=m+lL&gPjWhMRzHM zG7~T}=k%tD>Yt7;^mOEZ0&fwf2?yo4Zp%}5q+7Q4^zjNmTk((7D_534WRqx00?Q}j9h&tpb=bZtKp3e#B`TsHR{ZAeX>$~Rk-JwsB@Bw(|&|b5rHj2U$84gNz}CSOfbAeeybk8pj$=c zxFL9Ud=tOTI7PKYXF|^?1aJs*MoyKEjF9Z7Yw#vrL}Wuha2r4NpIL)y)>%>LfR(@n zlx>)jI*yV~yoSX3;7&-qsA6NZyj&gel6jM6^pP>=j?xac$gR^dDPZK+U!{`vzgOKn zK?@{YJP%B&mW9mA#kf}(mY&IEbTemA8o=~&RSj2DRi`4E67zqHlv#MA%Q z+iI(i@+1PBm7tcyXj(cI<8_IenaDB{JQsdse@PaIS`XmmYBfRBgSeeBqa9j<3}QKIf`U%ENgCz}tu^ zN@+|mwK(-z0BGR(o4eUR|g!2H1gvqfnCc%-qlM+({z4Z zZQS!Cg4izqSBoU{=D#xl4e*odk@JcggBN;lXu zzxmiK_wiJ3!Q((j)zm$j(W|+tZ8u%8pl5iuQ0+QEN3wSb`a^}o#c!_;7D-+I3SUO1 zW~_|Ki@IW|>6j+zIeOdix&_IA1m818#ahnwU1-k9-M9u589FfizXgeL=+tdnPX-bN z`pG9KyF}QVy!xCQdkJd6w%cXDzas0N)m90wX4~nALdXI`_&(!KBoTtKjm2TGjui#E z4^Vx^ySr*lm4W|eSjGtG_a>PG-6IMi=C_h!z7OoXsJT%uhT;hlw7bOpEr#)%3N;&n zQ}EBjYFwi)H;rXE3^Y!XoCMAXKE>-}W5t0ICFRI7Le=-ipVF(W5}M`g2oJ}(C7|`B zlzKWmxjS>69?J^y6P#L5330eTB25FfaB74TRyJx&Yobiq|toW zPchPPtZBg4vwrc!Z1*kLjF3)vQ-dEg;z#j3=!>bgB<=w53&UXwS7N{f5@i5;5{x_PoTs!ArkBHnr_zf|h4kTo(IWuLy z3MBz_9JX=7D|>$X3DjV18|5#MNlK(Lu+5H%r!-vdet3P5Tw7$6(;?B7G95-F(v8Aj zv3#a&!B(*Owa!51&A}bUQkQ0Ir-EtV1DE(mqKTGR0uYD>&kEN?_7HB-^i5@=0Zb-q zRefYaKYbTkkGKm97<_$$`*z-2dMyg!IqDk&+>(7#NfxEh+IK2U4QAZcg!uB5C? zn0n4W7|sDma~s&C5OR3sxrzNJ$A^u@o0-4w93ZF@HJ)avn0t3_9`?B|WZk}&buy3) zD06|3HTMEqoIk8(R-_fga;R~!;5a7AHXVzi9ZGf$r%{o>k{z^#%=M+B)VKt5TA(Lu z_9^1|-Q7P#aXTksUqKiHY#reF7bM{WnLD+ZjC!d(vHaXn%yLJBH(hH(q?(#%kBUe4 zn7|j+n`YIV?lr9L-Ms`=;^E6jpP#>w#-_0|tV920!sR&jVp74h$6li4Gn6Hyj-d@x zY!#g;Ou^DV_*ndPI^=+X`K<<3>9Wzjl8$S{_x2d7+b zQ!Mv6U!?ByYIl;tYQKiczdj5J#6Uv(cAA-1$nkT{P@%iyrlS&Br46!pVwg~3oI6B}D!-uNVoriKeI4Hb zpHd(iCRVu7!l~1r4D8?z+4NJyFBUXDX!LjgPZCB;8|gmAI4Q<8g`?Tm4M=uyNfcR~ z7FF7#qOs}KUE6#JXJO+YM4f5U=E`O=;74FAb{S0^pt7ZmOsL-xdd1&prOxd0J@{z9 z3Sjvu=}VzGTjc9-Y45^Y@_Sovfb;4)vbrtwr7SBN)q@DHAkm|{BU`{=NYd2kuup)# zo3@*{L^(TITgnMQxJ}(RJZ!}&(Npt=pzKbc7RD%{0JsNSybVPqWzGbu%#Wbc!9nx* zTKcC)#uTS)KFb0$YABGvS>@wrx#ecJADt-GP@TZbje3x$3~NprV&)^|jH;28Jx9)}-Uy%>s3yEW(T8$>T;e zyLa5L+-U7=An#6w{6FcvybgJ;zhzxY&{5F#T(UBxjOESbjC*p^JCiT`<~(Z^f12PDC+lFNpc z*tV58UA0^xzd;dsk;O{Vuv*_T z?QqD8CAg8IIW|O-$yK*V3!5JFW=FX?GKzk4{s$!1Gv-fs%GswLu=g>IR z-E@Oy#CL~q6sF5V9^-c!=BNs{9$t!S`e-=h2>wQ&Ug15D_I7?QiQ5=gGq`;RvRiVM z;+_bL0V4Cb7O=i+MDp&p?CM&k_8D5!bRqaQ{lt%^Gz;j|51|A|a8hPqW`?Tz8 z@_e7glTf&@GGKZ|^JvgakytnN`D;h!PF+wnq{i(Y6xT#)dSR+zLI05-eU!_v%cDH4 zXK5n!1+588kEviWzq2U|r`9MD*~J1^Ra5JOLF#Ohd)xISNrIi#(N7m4bEHVZczwTt zoD=mf_*#Pch1!tuvvl}slt{r{q77t8x88P$1awB>xC78dvTpKRm!_dYo|pUzMq!G3 z8~k-<-F6l>1l6j03(I1QoBGw!*XkV3E*T;3VRkHj^>ZWcp^YSQUCJHVPRhVpIhyGq z7Zkai3ngSY0rGZY$vql^8oIHPYI19l0ujdmD=P~N_gpF9eX4-59g>0Z*UC3<?a#udb@kZ)V$v)~b_Z7?TB`TG`zA=3UDc7mk;A7O}YA zxZ$pZ6mW;-bS-2_7$8^qSPG-+vY}0p%-(NG;HP1>$c`DuI;t4~-kVOSI|H|yam{fu z&sYLx)gU{^7^tbWg6Z7ISfhXP;Xq`r59+UhwI;z`ohDz_$*lU?Tu^OH^VT$c2gz?t zzp$6?(9UDHuW<_-mtj;?_karS^#B)MP26ikPDJs{uCp~inRD<~ivVG*Z*sC{MUeOy zpBV5Jfu>pPo;WH;Yi~4Q=#x!uIsCZWNN4uDiRM@o(~cICP3aVuN_rB*f39SteX#iA&I)zV?J^ngSg6~$!1;C-t z)Tob!80XF>MsBu_u|dnz7ReK0mt%&JP14ss5z=TBhb}L39wEMfG6hy!wY{80My`5) zUzZyq)8{rlH%Hd4gRb1qzAjQG4v0Y0wG+9+&fug z?^Xr|n;QAhjKrw)maNR-{h_CBL0&u|MUwd{LU|v0A@-sjy)Zo&U_e4g^&IKOKAe8x z`v;wmfE;;xP3|3t1UciHs5`=7e2mOlC$U-(9E!h>60O!HIa~vx9fX;jq?Pcqr4kVj zu$L=h5LW(8>Pa@{XuSFWum|-(YSKYhjTGCJwV;7)TR^hIH9T3dE8G~D=!QzMXc}61 zD_~#^K#mkdd5tnxlUvPdF(O9$f)%RNE=GMC4*+{d7YuRZiQi zeTa4}4A|OpMXeKR<=Inc)Z#{Oq`a)`C-b?Qnh0X*;1O0)zfm?v_{T|FDE_~KdFhI} zs6pj9OpD#&w|f}bYHmgaK37?#?D$?SzU>FKyD~U9(qI70&Q0+;?TZhrQ}!e!8mOsk zJO)@1yvfaXaGsuyvHNLmG*QW=q|40wcF9IBUPw$1@6s)eB<*`(ShJfBw$NWebTj6e z2a|N6<+L({s0ES_wsS64ik4tnJR<$X{i6Bqs-HjZ_3>ciL`;RKO_wIFJGqK>w%l2) zTyD9|A+EhqQ3IUn7F|dFQ}JN0_qYPO#_3znTFa9!E3W?uIV^ zBkY=k=AGdD4trZxtQQS+WYA9Z3yN|5G;^8+450I7g*RJmAfmJCnD(n;Pkc_)%S~Pl zU7N$JMm|6_xppxdXl81hw^g;f`jb^zY}lN3LOIG~D`fnC7D`9IB$-L(r1FsNGs;% z;MWUmn-JLcT&ZU@j*uznxx;!3CN@k?lyh(WPoE+cwiT<+Iofn1V?r3k_~Pwnuw@dg z9H2RhMfuy^8E&Q>Z{?C?r$znhK@lji5=KmoS);$o)c?rS9V&;2kMQg%9^SOfmy;hozJ6UCE(gCn~pd% z6cZxB=L>0P^ph=-Ev)(d?J=dF{k`~8pW1uCKg2(vgZdl=izB15jj%{ufNGa*5?52P zEb5u=m3FFvUCvbxBukPk0QXDNoZ=qN(Z>_(C}$@&ybHr2$8wrp*^<@sYk#ZqE7Z+62EZKF8W_h z7JwtkC@E*fl1&cVNp!d0tY5*hf_MFgD)DX=J}%l64>@cTsT5;J9pXSn!AC96SUR-YJJlYPuJ=fHd7*}0%0<0CBOi-rHIQFNk_E-(v~{X|NSp%1B=^?G7#Dz# zvf4h;U@5l!*KuK62*%Lw+$xiL@ZT@DgjIJPxw(n;f@+NW6^A8+=^?>3!~Yw8UT| zBF4{XMOoI~$k-e}8{fWeLmYZ1)ticuj-vM{bgN{~6gH{~lPE|M%dmtjPZ z7FZc#f$c#LMG%iZ5qADkkloUk2Cawm_}>*$#Jmx&5t|DuI>0KDgf5o#VO!ugu%7|w z3^+)u>=-z$C^3(y{ig6rbab!&8QgRpbV`Y1SxI3s+sz6=^v%(@xyrWAvjq)O8)caG zz{3{^_8U~KZi#)b8rr8$0!N0B8-=^E+dt3(HGNy@kt+5elfdP(fmmtb{eYA!Xw=of zviGes$10OU#g;~Uw#(&rN^5J$<;Gwo^mm0HG14^O)i8l%9&#MWvEF5xw9tXWYbbC| z_b5)#s|!rnLZ9_R-5*qiYKZARSZ86_;JWq^c6p=9Tm#xqnTx{Ms(Q$KUNhmS*)b~_ z?X{N`izBHZEx0W~Pi)w(8KN8mY!=*CAQM#ln}5NJ{9Km0VT4CvYp;CO`YfNg8Fgzx zn;ZF}o_3tG02Wpwd4^L8)fQB9o7RFyQM91xElw%|Mzkxo*R)oN81wY$=vcKc%i@5N zVyS~~dc*S~(x~?gw4!9xuxJnSF+e>r&!?kes|CFV7Uqt_D=Ij{6#nw)lyAKV)C4%< zQqLaRO~|<%v_@DsJ%897U#V))%ahyg8bqs7r>y?3z2)*o9&SNx3 z1R79Cp;JR>O@X2a&0%lkO6_vpNOBDM7G>8v}KnpNV)hwv>UWpiw{(? zk7E?P;Ub@kARz!i=U%w&JuYcpq%yS7A12Zu6#gPMKGx z(oTB!8v7|F!V91_Oz>=LxYhA4UaUL#uB7;xkhyGXI8qiY(YMdYn2#^)x%!P)%#Ghi zHe)m7|4?H^cJ*ql+PJST4wO&lcMf7Y99+q-A!#ReH`+W)|MlBnJS=BxV4L1-U>cu= ztTj1e8|^TB_N}-+funAz!M*ib=qQ<_Gt?nqJuR${L$TQwz*PMv%M0 zj45o0QKd%FfVWy3U{Uk7$m}_sM&4G}$Z|7!s~0tyQ_UKM-P{S@g`7M$P*(x}R}PDQ zWVpK$L)-1dU>!gbT1w(<9xjAGIj!(w#!g4*!xydL zxG0NiY(>0lLoC~wDi?vI34&yTU#mXa_J+hUq6WWvfvshAar?#$;3$qqVm6YQWtWt= zpoiv8`RCMY)!wjs3hIkK@h{@fzR+J@?vSXQ=iC&_n`Hb>Y}QR?xXRT=?qsSg)e3=z z+5!&QX1@r5ZG@~rLP*5l`QDRqM*z?4Kvq3uwH@Q#kfTya%<>PFx=6<@rmz&{xEmT& zQJM$)uN{a2+iePv2PxqR#zaLxbkLt&m^3rAy$B2(1KY~4!DT@JFOr1;he{Kf!woT0p?~>YP zs{A|8NM5op!{fVKV*N0~Gaamna$NFkJbz_nOpmSOq*WhCRR00QrIddZOhTRRUy)|r zqAGtgsxa>QKnlS~cCv*-G~o^8?h?u1#mu@<6o2+Zm5hG-ow?m|IvY~bf*J_R7DUPw zdQSaU55{$OW3nPRAh?NB#9)9u?Wcdi@SDO0!OEzUC=K;wjv4@Xk# z)#p*}C?1oU`4?<#iWc(@$*>LWW5LOEa3Fu~uj)OD049Cx95tgQU~u0CjX>;hmua}E z%V_%c&!Sr#zVd-tlbVtKGP(*t&qmuVKMe$6n>D^=s(PF=6&9snerx@bo>-xHAo0bXA!E_YKkBJBsOm2g@<7BtI8pio zN4P_Z!oY%Mvm6G>3G069m2VtidZ$xOQo2u1OKHbA(%*08zs&>7amd(pLIze9e;iI# z7g6UMM9SsTOx1bXSG+5cLtly)CRG>$$G;+VuC=Xwc3;N#JRd<75#~voXZMIgJT?V> z2Zn%f+<*(C0XRoJLB+QTJG-`z{Kbx1b0gBu3#^w{0xIwn((*`-S#^-q^?Bf%Q*Wxc zShLyFQNxusRV9X5*;&xf^BLptC-ZS`ZDds9_sH(t{bs>a8vQWDs5Gb5-<$4uhSV0o z>6Gg`0ssBt9E=qZFL)eF6xS>T$u^ym(xI1M09ykagq zc0Oc(@+O6t^yqlZ-`amt@8F1~H;p3Z2Is84JmBe5z>l}I$kBy*HrEn-M#h}(>i41c zWetK<8@&e~(z6l8FuYKcC!aEJeTd&lHbUEmeaGe4>d9;8HCCQpS`~Yy3?Eg?s5UR8 zv{?^=%JsK&bsQL3Yn(Ph_v8+#kY4oc)iaD;Q{Fqcc zJgE>ZKVW zWQo7RTD4k5KwSd)MNqq&(2^S12eunVJdcmI|IL<${M4;sS48$)Jxc~=EAk+omje&| z5b#P0)@B)+RMSBCs*|e{S7(&}BrDiUhA_85-nhkgN@UqA4j`OIQFy%gaps%Lf3z|c z=y|~N#go$Zghra2|K%H>7&{*5k3S)&CGH<8$oe_=^9=9kSu4hIgOqL&aNGqhH&Tc)M zjW+WRK;gXQ%&?A5h}3{?=n)f3ffKWIWfvn&@T?C!#D0E)7M%|=irBTaMi;q^Y}A*Gb9Tz_H(6jG))%J-Vw?UZZ9 zgOEnzo{%wAy-)8FHTQu`{KAYb8ozoEpwv-kmk08L)(Os5JRJ7apSl;xP;2Sd?*4d; zLd4Ot!SPB3nPP>eIG&hUI}B9_)}h`6LmQ&HdwY6@J?S@OgmtY$2zGsrHHf+!{k79HCCghX@p23*HE z1v1i{j2EH7q*4+8q$OR+X=@%}m5WU(W+kVk+UW>y;oM(9nJ{*G<-?K%Dy(W0HP0Zh0ox(bllQuT(-Ng#|Mxg@G#Ld%CC0h=>(DG7 z0;@m^qdKYyx*TVhgRlWDH-}=-frXI-;oG0{gRy`%(T5Q?jwpgB8O;y)UbI-m{&T5T z2j2L=4qq2=a&7B+ENwW5%x8$Of52nC_*4YTXs%=wvBIpBEBFLHeeV+19{tZo z7&Addqp-4>G)5je+p^QHhG(tKjngH-gpJ~>$A(huVTW!(cV%`;_u#pL z1R=(x@r$6Wyzvr&iuA^Cc1tk&wiBhSt_Sxo=S*7j)pjTP0r7=(EYYf?H*IJ zP&JK(#E7y0=~nDLdF=e?`ZApKEZqz-(BBWyHhSA>v6P!X$VD+s*A|KU)Knv8S04LS zgzgw_u~n>%Z?B$p#U*S{Gsb^4ZM)E4SiQ?c4vS*Ls9?{t5Br6kS;WInm#*YPJ1H*46>4;MP}MyCi&>{UB)&yTSb>qJ0pMczk`YAItbbj2|4W56 z&)dcDDXlbR>Uhali)&Sigy_9k=Rz)KFKf=}gG#UoTS2Blx&QnaB1TP(H_!@E#E2aA zWZrA7f-RN|3!o#=XlDGYC}%gebGAPVWtA^+F#{G^~vYS z;z@_T?qAu{lY~LiS^K}Xsy>Y5U%SecLH$Xp6APcEb^Xt2q--XGOE`Q$p^ttoT=Y!39*F^~t)m|;1Kt~)HL3F- zlrb72=X0lglQ^8q34PwP48(;GL6|?dMz*Yt`q!dnD>v6+C@^R?CV4LfVG%~AFB(BJ z8pTf0M)(aRA(CGS{Jpw89p2MXMWbffYo-hTG|5B3#hMHgbu+5qZ=J4Fs>bapb?h9^ z(KM)r6$Pjhc=ujWl+7LYF`;8}L%goG?z`s2n}BK8yky!S^_URDmu^J^)~E#)f24g$qo8 z%Oyz*QQbBs#(6b)va;;C$s~2e_jvU?U4NO^=7Tf!TXLBPWjWa@dGH3}b%UwCGo?(y z@U_9W_%Fx4=zVOvU7I3-ahDqA#{TV55$-ncA~@9jpu0Tbi*ZLqIwY$95paeJg4jOg zEm>~I2MQMxhhlE6dImL{vS#G=7bMyWrM_c9F|mmoXvJmk3ee@XElWw>n+78pm2)ZQG z&>)lpqoZ`nM7&pP3^$N4ljkgVy-;0+sAND$mn-)6;M6=4h&Q4w2wNBSp05XBog_7* z|LCCkP;EL%&v?RibHe?9yI)!Mrw8rlZgakpsW#ENK#_6!u(PumFn)TrV*JAYSf|$&dTJC9B6=tzHp;YbY(0;xyZh^2`=UKEP;> z%Uj{0{fNNSnTRr!U(UnxcVPcZ(fc^l{ zB-9-qUk$?%YUMzTY#F8ZoRlg|sgg_uM@TFCBclpI%%3E}(Rd;Z2V6|vsDe3<-Z@m) zAw@;~tkzc_a4e>L>YbXl&XoY}Lk{#{i{6|hqy*&HJ=R*!O(F(Q-mzBZ^>4WqWzrv1 zaSJy8Hc(t?eSxKbFXXLeEw11?m1*0wM+WFy)2P1hKO@q8sIfA`o4Pc&J!D(LLAIAr z*0iLu?fY3ORpqjk!!}uh(I~dkqMkll6HOc2Y|x7(*Fe~%RXZ{H=)P?DL&n+^+k^I8 z62hUPW_RK}vJ$>yjBa+kAff+j0@Kk})7JL3B;7;PDBEmT6Cz?P4(T?yQBVr?9~g@! zhjMnNb0X11y9F*DOjkkia0KC6FB2FvOT&n75+~Am2b}&BqJ5dr>v5|Q_a^@+m>N~- z(g#l=8-gK(U|0b|yt;jpUartuDt?QWk|V-jh5#^=U_l5-2WHLB;Z`kh$^`u8!Y%QV zJ8nC*m=%aI;`L_s5F@8BA0k1}RX|DuA7{Tc$Z8oj#OqUb5!ml1?E=gbL{Pcmt!wB% z>4Qd_^4gcx0Y&eb6@5eb+9Uuv_arS%mR}}um~I|gvl@h-X8q8%K>J`Sb3RvW<}P9V z1!|KF{)SOB=1|p0A~rx?kvUbcSmy)Ex0e(C z=?TcCu&sM2nh+acwTnd#UzWSrZiMAxTJTn{Q-&*dZ(D=pWj8a{JecA^- zI4Q_qQ9-%sNjqe!;2CU#d|`a~{iSQbAj`q--_x>M_*Ig%e8inY(b-y8$VF+77kN3N zyW#5p!%)OckHJvCI-M&-WkRPp05)ziT?|^;uBZN%n})*H+Y9mXsk)y8z6Aby@q}AN zI@=leWi4(a*%uP0qs+w0TZ@eh zql@+|G^srZ0Tq$=sLf^8n>B!T%i~IPqfQl-!5J;4iipWn%%vkzt0=kc=G5QPPR#oHQ{kEf$M^J1}T$qApE_b2v?xu&%#HUBcFJ>Bpw_8ZIV`BMP zW0^B+xU_deeGqg9fdKzM0Kn5@ds;u&5Ijd0GO5FXW(14B`fmqCSy^tFcpEpx->^2Jgrq34j3ovyY$U z^5st|#ynL)p@+Wi(eeyDeh=)298P7)7NhCH+~4J!SMigGoTVw57&fIox9_Su$_dKo z`!Vqw9$*pmG*C}^G3ydS6^G_BAj6e6s6h53>@}CWC!GN^ke<<#-jhvX>UDEdHKVQH zc`k)I(FU_`=IJHCv@kKyU0yKGhrwDWgZ3RD;%ZGjZ&Ejt1*@JsPXUxfm`3o(+yTS^ zAXd3WjjaAVXs|>ODxwOI1j(*y7Dfn?bwAH1u+t;1l-UBboWi`lfPd0i}&roIr}%Lz9g~zk!|$auvYr zt@mn!JSOy#+St3I-(Sxujv%6A0Qdmo5!$6mnOHTd^wL{eyx~)lf!jI;#UPg~BLLSd zXVH>j)yhZ)xdRFkc~%jfgp1h@Mp&u9qlcx^O46cKqtpz5>y-I}+z@D}qDJ*IoD_FC zbhbkyuZW&CmfzrS1{mN9cfC(ZdjYRQjrA?C)5C`DLcJ8T^B!dlkf(A>`px+GhCVxO zLrAU#{5)H+mvS@fyLVmKs-uv` z1mSr~-^|XtovW0!4sU32`_-qFO}R6G|Av#Rl>DsYTT&tDhJG=9O=GFhW3?_HZ-NVIniBQ&pUNr4 zip4t5E8=Q}5KPidLb#_UTrG2FA+#hC54e!iUXwbkT(ek&=(s;kJY9(=+O-|!)JYS% zWmQe~UH!`0=je~y%N;#gTUBnv$)X^@v4l^&0*hkr-|2h@OiPse#2a{y!kcX3eO<0IjX$~V1xSdzX&Bs4x!~bS4bGO ztG&l7^Gx?9&pVx>+2P_w{S^axDt*sPNg)JZ%M7hvMwrxxin-S8T9|pJ(`$HtUyW9F zFoJc078W>*>?Z|Njpef(#DkmvxFA1G21bghU1Dcmeq8oFYN)bEPs$Kw(gNR`)KR@+ zN|**0c71-cp~Bbj*KftHC-*t;1Qg&dYM|bdjYEhbh*c^?BqS<^b6SzdbbzZlPtZ^h z+(a_b=Qh}hIHJ=;xf(%_0d}id>day(1LlGsfK&rYe zz#mglt9%aps!BJdx3%3y`@L%Q!`>;sE_|a{*R`Z>St#&18t(;}jDk&zCoN^tEnCzw zoc_ADWePHa!_%ZWvT^Yhs2_W;C$kux-yo4mPT!VH@eF^LdF_7DJzGjU%N>eMMa5!^ zbN8DLx1@iNHupzcSlY!0JkkGih`b#D=x#~Q@0JG;P8c^P=0_RPdiw(cAF zuJTZ~yG&Ox@*>Z!d*z18wP6z6F@hMdbe7GIkmg%K)dvv0(}n!wHHh2!viopEcgu75 zvcS65{RiV=YV`37|04rSwBPbH1YjT0evX>y)qeb+z^_0dO<6lu{ z%x>T2eiDroV&zxRyJu|>8<`iL8BvHz00fk_>@=ZnW<@4{I&4*w*TFI}ZxUTT^3##H zN?CMRhk&X&q^aCxlxtkydd_R0-y^VlpB@roX(1{Ft59Zuis{s-G!SOp2zj?#x1 zl{@x-wG8We8Ez*}1JLQzm%r5s$^5w^Py#-%S;|fvim}KIf-K03hdEF`gk}z>7y22t z1yMuuggmz31I;B~;9#Lu@Vba6srkM;kz}0q7iS84%vMSnn$;;pt6)q5k?w`RE?)FS z_oP@!mWZI7s%$2^G0>DKa4;LWTpBE=(4j^8lp6hwU>B~A%6t2(`V7CyzjGJ*_V?M* zoXG3i-=A#AL5I=V6gkn}K2Lwd&j+*eDt=N|le^#tE1hIX>R2UAxvxZla$qbL6N)1Hev?8yFIuHaIT$l8jF($UOw*!RF$0$MAaynf`+_tU%&SPJi z^F}Vi{OAiYEMR=LreYMHEy3AeImTC5d%jrd*Q3BMpa)EK2~wQ7mtsAv;;Hv&arLpK zp}GAt%F+N_Sx*8vb$EYm9&vAv9jL9o-O^7Qj0z=STWIIhM31ir^V4JILr(KUk+_Zr z;5jp8C5F#H^Ef~Z;E7xY7iq0b?!KGvm?_r;DtiL3NdG^p5UOfTX)t(Lh@R&&NqQk7 zS4+7bb?FX35cE-M^%wGWdY}-8|CdcDW3M%y;uJR0OrM~2Z^P~jr_ZiFPY6_(1F+6r zioGX7N=SFsVPFNVxkbK})jzCNR>Z}KUFShYm%Vug5-8rOj0hlkv*%WA1xYKET3d-a ztv~C}X(ij7Sn|G)YxG~|)D-?*Ky~B~vo;a*o^$)bw8X+EBO0)Nx1tjhM@UBM*b%An zwaQWML-&+z{3qZ?YW<(wnU`xckYxlul|1fio%0tZbKGw?t4xEjF+~9idQ|OwaKC)P zGz&XYs|)y>YQJ62t?tFCh=IM;2hq#DjyK)v=s;3+ie$NJA#hSNYrtcaqiO^MvYbsq z`O&7$T~RN|tg3dj_^vdtLM0Z>qqhT)mP|CX&NGFtNZ>=X$5&S)toz$Ble~nRKyeB5 zi6KHoQUQGNncEHMJT0&~Z%p;-E?N+cvvK|pc%+uwJTWe2hKueJE!rMHe+ zifTsx%$?IFm`xdm5q;p@abWD&AH(7Px`b^i^pPqwr8s&q(m)STp&tsSl|SFGwGoP) zZtsiSxp*f$0J?hh1}+9>GXSLWuxoRac4%(i)VQv@)n53wz-qCxciilXIY2fSs1-8_ zolWAEV9<~&DgrkYA`&Y)p=L-~!jAO=J#P>A%#xUn=CVM|4*xVqtu!hk8D*;pS&0PX z#&4Zbl90~z1cRnZMFm1CzjvnpaYkv8w7Li+vRyAvSbs|ZjBSB=>t#48C5}81fR2V1 zjsy^AG;5DRU=t=&f|_`jVt&Ma@UE|~Lzc7b_Mdk0EbJ0X2aMZF$Fkl*D#}eme7D%z zt(2x!cmco{(;czv#e#tjY3$iUn6{BadCV%p_A{Pqf;*y3 z>;O#>w{fajQu3(T7bu5&LB$)GH(D|~aJ;crw2O*cz_!PGw!oT&h*SKAM#x2#Es>53 zvW0Z5s|rvl0uhTtec2-nl*!!oF|aRrJRCQwOD*I=%D}5{p43&(aFQO z5Y6h2qjm`$EBN3Vti2^lKk1w}fX(|4%<1_LlaCo6qZ3%=`_c3%muZ|qL`d#qBUS3g z9OmC=cI{kxv31ME7e4)h09QzE6Xwd<9Wh!43z0qd_<#qZM9MWJ&gH)B6f(Kng~7qk zth3rIjv@ut-($zE(~YQk(P)lK7v4`nCNrESW_jDjA9)+OwUsVAEJ9AIeuYzpU9MjA zIQg(QV5Ad*>N;6bB+fOpbQ-iA-q|e2gDn7%Y1B!`v>Xu7Qn+q@^QZQmQ_)|&^&XR2 zTS&v-7K}*^dw#WmpoJFQ3*-e(E%S4|=_T}hnjDu$;K46}LD(i}1Mq`;aCYl|A;8bV zg)AqhADJX$jw2B{<5GfwS%=?|6NGG{E3AlKx(aaRoyb`{;5jyej6U=LyN>I$_vM;K zmXuU-LPM~)y#TAV{OC8SfO>iJn&+Mq7%yn|aT@>_|tt@D^@s6o9nw z=v~w-x4#FeDV)l1IH<9B6XRw+Csd&6u_a0v=)|+>zQZZ(p-d89=pRu2 zjv!Ir^(4E)b(v$2+oX!Z6?3%GH5T`PW&s7?Ju6akfKpqR?MC5gpcLP5zQ{~+O$z=B zDMwLGNgOS|>!9f)6qs-w7BeM@TpRKOXe7>M3wvfbbTl=Hm(#f57AtLd+6Q4y$RbW2kHRkG72MsgAPsk=mk8 zAP52%K+(S4E)frYOMJPhh!nak25$;K+@1*YY zI$V~*yTAU$+x!$8vh4bMwJyQdYo;92*&S>Ba&>O|M))IJm;YZ+N82?CW*UU>#Le13 zL}SZ`U)dX(R{6@;k^i6PXr=LNJfYjBx)GQCqW6j}m_N+)2oB}u%Nlk<=YE+;4BMpR zO^h2)XHG6{yUm?4WN{_!BM%Id?e-u&L zSKw6X5<}U*YOyHB{xBe|nttJo$FdFn$$588=k)%&>X3UlD$=Zm8ncy&D*3fvwCa;g z%1r}8H3Tgbw{c!fiMDy3JZ`~n9s+ifvJsNJhOb8R1hWX=Aw&vseVFCCjhMSj306b|~lv+3b9F4ZOi5uIUn2-7&#XRx1n@8B*$S#-08f z=C{;UAqJ7Qdh06*=14VfMX3wXG88_YSoz`igC-6Sb!v7emC6#w*Tf-(^H^HWepH=1 zz?Lx^lWYsCP5?0z`nI+&x{K?i({Y$uZm&yaXm9}&Saw<;3llTSp55+u+xvGPn<}QL zJ9soRs#@i(;acS+Cw6cCGqfI@z_6YB?&H{v)JB2#bYF3^qsgB_no)Ya^J{xQKeX-M zt7une=mFnV9w3afQ7eA@Ip%c0b3%-N@30d4DY=>x9ker_QHz=5rQKdabQH-s0z!stZ%lN>4?B-oppYI0UMDBWlmXqG&W&k<$ zY=}W_v0M#TpP*}Quzv@*`lD$O!4K`;38zl0TeezY&zdQ~+zIdcd;^~|apYo;sg@OD zP=&NIcuBV{eEgtcbpb3EH@}bB3fOs-v5s^ zWn(R=_J2Twlq+V>Xk3$LQ6p#dhtSxym;FuS=Ue{_M;ipF!1sV0$VnP%xTL8~(F6xt znM|_oIeFOm*^<3Gx?n2d_FY z{E=V8l>Drlqz>!~J5aEYc_crd1{Q~`V0I1z2SOe(?K}RxK*78%vlQO10k}_!IO}{za++zt;<+8k zeCU*?`EX6Fyc+cIS0I+L>;07%W{2)l)up-A+|aL`^g4?=NnLK_g`Z7wxgR19@US+a zL|B^<1|Fzmaf5Qh+3wNlt2t$gdcscAG6>mG%%yA@8I~ZsY2aTtVoN|vt~W1?IlZZG z{3V<)oSTR?%_xeuE1=&(7dbuoSew#2ZKn6a6ZP|qEImigwOcNP{RpXV@zseA;5a72Ie}Zynu2sa5iRI#n^_1* zWnI2$iD7lrb_&~;G$T><|FgI+SRVaTR03=)hJ0X+F0%sKNBr*yJh&9TfDAPfY*DTp zPW)SG;)#DZbP!pN|6GITEiuP5%RdHO4~ji1vvl8}5~^JyZTOl|rx z!((3TKK-gd1P{FLZF&neF*~$SNd0Gw1Z1K6Kh`9hA)+=lWX>(nrSy%+0qCJ)ri+T- zQ?}AQr&$K*EU{#KB4qsd!tG0dT(5uQX;7gZlAhB@VnX|3lAM#4_O*`|C+zcM2|sxS z>g1nB=8TV(;2Ky>;HDPU_F+{iH|cbI956|C4s{T8S_*k#$}Q6UxEBI2!iWQ`69El< zHa>x43*6hT9G)>b=BN82=%Y;?uxgExQ1J5JJ}Lx<%q&AYcT|QZbX{B-9dC^Ceb7?i z+!5!7jX|k#a98L%s`1)VXZ6W$@={@Gl(wG@C(au?=!Si4I0!xb{dlH?h)jt~Q**bn z5i8p6McA{BS_~P z$6l^XxRvyu=yGE2YUMY1MwuWz6D#Fh55ImmOC4IV@<<+6K9nbGfereme&|@|*dzIS zM5o?yr;{a^24hiN(%^f76XKT4q(O2_zN8^}x;F`yNs;-6mHV3=pKf~K9L)~#wt|PA zAwcJf^#EOqDi*9POLkSkDcm%9>m2YmpPvabCf*7*HtjU&Q0*q>d-lIH@QQ-#(g|ix zYGMwD(p{KCEITu5>T6#)5Giey$lN@%uN4-YH|}zIO_7yEr;$jveiZM7M3_vr0l=BF z-=1m=Q1Lt!72IfbGj&pY_368<7%&aIf~>>ZmPd8HUVLjz?FwRLD@+x*1P=$jtmXE# zoyKNg$}_iHF|X0F(G1Qwxz_x*LzN>G_5g#Je&)UtcAxENnH#@yU{#pquCbSJai0>6 z{zcetG}?it_ar=5mWqPidXD#gf%c@bL%93=dK-%LB?nO7O640WJc7T_4wE_wr3Bx+ z^saGO7PxO$63A#Xs;MgIcqCbeP)jE?;3$E$!vH1*->mAvx6qE)*;5y9qz0NM7P7CW z<_48y*ht^LC0?o3j~D*|+JSpTNM%h?US^0EZX?fH^ucGs{D&A(1p|+fPu2BY_Mc5( z3&>pI@oMkwXF#H${5j4&&zl#BOq9)K#(Hi(!5Iyd9Cn;$p9Du67vLO5Ms-R7@UOc} z7EQTBo94=)L6kybp8psq76-ela@SJ_E|0ypK|Zuo#>{E|t+2ID@B3&ekZR(Q9+Ah- z450;j3@`#sZzhzj;+mG{5ZI|>4AlaD``OSM03~t6&4rubBRzvr!Og>#?nF4((B+i~ z%#$^~<_TRx)zX4_v2DUDZ&StE*qDmHn5WK8=@4;7hYfy}@hB0d-mF;WZKPh;OZ2I= zuicTd2LxLs21QWER{Ta&WHx9699q-oA&LiElY_uOu1;kuvc3C%Y;Wsy{kwkkm z%&));SDzHi?&u9o9Q|sovROXGvZxq^!*9Qj?+ffsauWr_Y162 zq{M}G0X&ZI6EOI%{WB*M3VRdlGdQ!|Gn9 zXSjuj4T2~$lS`D`XjJf?kRmee%C;wzeR&|y&wuUbZ08h#Eri013nF~t=+#qk6pPOO zYNZrG{t3z)Tq#rdtw5-V)?q@>^wVma6^R$^JiO}^NMpeXW=X;|xgBnkITdTn2pgUz zPhl8^?k^4-gCegD^HBX?l=VCSYC@Kn&tBW><@0sap*Dd)bNFa6%`o`HToR6Rm7$+( z(Eb^+5xp&IhLF&P4A)o-`^kFCDTW1SUItSlUs5*7G<_jHJ^|Ssa$8s`k~hE%LAb`? zDx&qdqOLwyhmmO+ojG~3y`2^+!cYGp8&;_*)fcQja{`+$E$_MY;DZ9+XCQhgwq87< zW+8UD-+^9|TmrcN)dxF9cqd_AX&Wlbu+LRlfh6{Ij)`(qtpLG>OCS$n_!fjl zy0H-c+)UzA?GQRCSI7~sUwaVdEjsE-R$2JIfScKa}y3N|B0VcnzU7VP600B8A zsV*#Mik0unec}!%O}V~zbwVUj(R^XV0mZI@U}&2}$DB>JDNsPrR&wLz>%};Yer?LA zwrLWx;;F2s1;5PuVQ>|^k)OP%Kv>ZI13UhD_NF9ZeHC7d0a5VtkWz1*!QJIe2F1!W z_kz#h`yDTd_Pl{Ytwkc4K;+gyzyj|5Sjnl5l{tSX%XQX-ERialDc^ak@ zkisHCEah00(lqA#+w3ws;;%RyRTxqj{6AWetD4}hx0ikR~k zGXwjYz`h92oOx)jnW&TS)e=sWLo{sfuy$w`(YwpLAHBv6yp&P45xI`uQ4<6R+bgOx z2zo{pqd}#_AihOch*L)u5Yh_5_7wfCB~U(3f6}*?r8&uPO6^Q7pg1U-$JOWHb}7GJ zzm0oLB+fli4`g`p;j|Dz_TF=z$2XA!r%ebM{BHSSx#bjF(t}KV5EkybyLfi9>{gA zRQeqqmwU4DCKAjsfN~?|+=L0PnNZT_m!cl-BLkV@5LtUUu1quRBF#7KQ<}L683G?k*OJL6TP?R zNsf7LjX_O4SiGH7)=(gU+{FayQsBO@JWU1nZSfjs6lqP9|1Yo9fu1^Tq&%`HCKi%G znP6h0wwSVPNN34T$ivNt66Nt2V3m+%zVAbrp>F?sD=r zZ1F2;CadJWY?RW4-Vz5@1&Gnd!hpD8ASBm>o2WSkrAcMM&+1Yw4bS{&WqK7W9`L`> z^C~UB=MM}R+KH4|F$l#Jp~|FViXF01<8YfU{Z}*brWj zV!8>?Qs5<`u*RJ_JQ^copdXE^hijm3kPI-qV~RHkYiZ?K8lA1?^8w?5GAm^H)bggO zqQ|vgaWk=JCoTYE76=8vnh{4imvZhHhA{Maepau88g1(ROw3$Dv^Xv!TxRnMmcG1w zb`e_{mQu_STaLYg)so#U7B0HG+Gf_3xxs0n;iDGSMNB&K;)W^w;wbgxffX>6oo$~LpH2mW> zB8lz@g6;7p;noorxueFsE?cj}K$@BN{(zs`;aQDtWG;V_L8js0bjr-{Ym=H2;?&@o z#7qJL6Og#@3`iO&c%{Ck9TI`?FPk1_dus8%;1q?^J+R1ap(`8+q-h2|#~pYNV(EdC zfo>d4i_gH&8qj<#cd{i3QTIl$?>W0p$8lE;zQjkLu3^2#M+wmj6cTH(ZuQ6|)btwG}hnXEXiU>`rJ!NaZc zLE`(qtHM8d&s0y%rq~Z0*>UL3#tw7>l>VG_6nR$jCvHIK+P1n5cL8FS`c7M_n~Ic- ziFwKoX*J&m^3i(jFZ@WdOog6N@T)z3*aDK1@9^9>`?r|O|7N9o;@jDEJ6by~AXAQ1 zu-o;ignO@NsgRSM)DF;_tVYNgFC%UyjIXU}<0t{W#yd&mWh&D{+I0vAjKpc|qVmG0 z8TZ zsYeJ1$jt4-?oc!J`CXa# z(*C)41)d&g{~`)^Z>V(@V#a-8h+aXl%Z=eO1R7U&p^P_H{jXZORQA%nFT4&LM;{+6 z2sxqqNoxxzcb4>C?Q-WJV$>ktcOj8oF0`>j}Dr68Yn<*u98D9>s7}yxrLWj1{R>x%e0c7ByVPw zw+xr5;xb_N7_*FW&3mvieP-ROpr4w-Jmqx$Is?lE^-Hg&Q1p6Erx!fVW~HI=6qUPG z$wV1j0@~O0AK6%GHlhW%j`uI`HM0{|6I-|T+XQr=ewb1#tc>=YtB8C|BfYk|SZ%bj z{BHU{WH<#>v+#m@cLz+~4XwbPsw9K-OaED=jNxg{tfgu=e@z}F;5yp%@#1MtO0OFa z6h5R^7xo`Eaz*&gB6&2LfX9`Xi=NBRS~Qyg+^^mLZH}IRmmIt+*)4g}oH3C2DzMM? z#Z7ris@>CdY_n!{JD{0E@y^iupQr0tNs5yjD1};0IjrKfU#wB!;knm-_kK^krPyvI z6#%_o>6K(_uvf{=xD8esZFggP>ff#QTb~s%%VOvgcYq&!c(ho5;z!iMZB{0V+8Y3>c_+70 zfnfB+==7h>ljvG_c)p2kX#!-g?`kZ$H@&`-aOAjpA}p=M(7Ur9Vnb;YsBYNKzONzk zd8WLz+GxHa9%~l4O(8=#)P)k&*chAMYx0I@gk`JdqlNFV`N0>*S`T}lu;St8thaY>Jx}i{$V2xn8g4GHg@0uri*z0d9 zTS-cmYXCcJm6%a5#J4o7QQ~85abR@C_yUt~~#ON2GJsW4)T%Tso}duNS!r@1&Ga z1+mdSkxzm=VvBmZ7`|*|np1fcIMV-^mGC>5ne<7!kn4o-KfdrGdg4ov&HD^tn>K~DeEp57LH~L8>_Wl4*<$M3qeG-0jyt4&VaxdK=eZ?XS5@X$DEfWNV>R1Gh4KuSMT zn*9+V9roeFYbG8$DVNo^K_>=wEL9y70bk^Xu-ixj^BU61$>!##1MDhZ*?9=|eX1=^ zYkQHz9rVlAH(;n%GwG~9XsJ7lBH-$(t@B>-T@bOT<7D9A znC%EUdmxzf-JLd=?&Uv#O}$Zgc}aJy?7XVBnmKur?C z@4BsUTBIk12&f*I`IWgdr<;164Y;kh;tFT4xfc7hXmd8+!|m_;sSk#L(CC7kL@13E zNzI>X99_|mNlf3lI^eSv!2~-@9?2q<*jJp6#!%2Bc`xPB@AQ4B*-}{rjnjsy%vL-? zQ2Aw9WRTO`hr`ynS?v^l5G@1}VhF?QqpZ!`d>!{pK0MC))xJ|;8u4r@7cRr9Ju%ZD zy0H4Pp>l73wO2QU=HD&rx7^ZM39PxVu!jEUOkD((P^@Y&tLWO4jOIzmO||uI-niRM z&_CFxp}0MB74|~CY|+BLP1INPoZUAP3&|UyQJ!%?6(bEvoLZy)co9^E>v^yGncV#f z2MG#E^_=rU7b_8?v|IyAA9*R&BA42?0I_D4i<>vIxc&zhsTg~?@?R~!CZOa*8)LdD z#da9~%*p%I@Hl*X$1;tnER*23lg2PxKe{~{_rCIh+cvn}JCl@teRkPO8-~oL4)XDj_qXUbx6F1y&_D21}#7TfBj%l(xN7ylW%~VPMo|`@ucyZ+rq-W3{Y= z@@8$`mA>PJZ&qg!|Jy!0$GyalOQ9b?6=+z?vV9d9Mg)YFgRw*#c1uSe_la*6e=$FR z!gkFw-r!^tw&eW(*(Ur9wDq61&du%h=wnxA66>_Y@l6`k4|@$6S2B-aW)_5 z@NAwXl zh`k2Dmi|5va#S0U?@`-RBk%YX=kat{3+*X@bZkAoW!et9JOmH$bw4Sp0}9cy>906R zOk4EY)pVzsXvaNTbdw0B9rK*x(+g5#E^xz;!7K)6m4PnWTK}~jGI%0n_ z2l6H$E#6z3{b%};NW25pZNvK8*rzV&3Jg`WV#m&o*om^|E3SG8B zh_6Ju0FVdVteyZ~k%rjW5mY=t@)40o-q3(hOdt#jeu*th43NLQdu`me%y)rs zciE?C_j3l|^XhU8MHyxPx{~bVeG?uu4QU)i_!G2}9y*>XHAZZ@9C@2Qz3{LlG~ z=#y(7EeonJ5wUs+5N5$Ft2HLCY<&9?e2l8D1NIzZg2=?Y{!qHg9Cm`*h^tunwPt7n zK1CjQz_>+KcmLE?1oK!|16a=P+G&?6* zUxaj|tYK}yFwOD27hMNvOh;zfwKHEpQ8yccKQCO`29q?^4YD#S8tBdbpv}Ur1f$X4 zLtEf6CJzP(%NDLU-A``}VDodbM5eJW$QspNmf)ZRugboRA6ETuBd?0&h?cMVYSzZ2 zunO0DNyx5p@yt_OdIXeaLBW=puw#;CiPr-OO=2o@M$=fb7RD_&zf2+X*kZ;|Uwq{| zt8lG?giv;R_SONbaj&z#I82_?uO%xq2*%Ev4)Sx<>z>a#AQ33B3e0hi^(RprE`R;7 zqg5G)xi_=9_1+>3HCM~S3{WrC*U!Dd4J+=O0W*5H(f(+gNFg01_FFU;^dI@b+&|og zytrmZmf>pTOqZeZA+A-$&_g+82lvUQ}$)0)1D2NCg;A zz;B!=O=K?Ic-%*y=6oP4&zIeoNFZAm(N}|q^lw6@9#N;bOVOTDMO_xYLvz#pbZ=!@ zQNpM-16qUSqmzIuh}R9`o*OI1t$ih*sInM;nLl=Mty#Z3UskE>q0+!r@G?LwNtF*LhC*dhDaxl@VAgyR%~j2LfPS&rNXh zUrBTZ$|JK%KxdLp2mZzgDOu{=>|x_TVY9ZOKyC>wBh*>06o*V3$JSi1eUBk$P7y@B zTT!^7LytwycwT|GFHgk$NXduNV{!Q^EwZ?tUX^rM=vY^|rEI zhxCD{^z`0vAe)U3|GO>U-BqH~t2hGv=cF=uy%Z-{rJ~33UfYLbdOwV+>iRWsmkE;7 z)60TQUlu*yQR7$Ai^ZH!gNzc*%jAak9u&;QR4ud6=`AYAGYK>54Sire`PsUN0F|p< z+vOuCuRLliy%irlYawzX?1aBf2l0-|GWjzD6KLM&g?d8vU+*IIIf@U)tOk3{;2_Z5 z=(r?-m%Il5M1$W5*!95gP7O@qF8FcfaEzHdCD)Yw8;Qhu=d~Jk>4Sj906;6IBOu`V z?$=j#kp8n<Dje&&-u1?xXkxlxYjFVzl#9PiVz*-bGdl-dPl!S=71>a0 z5~sFu_<*3^GQy%KELtaiz@yx?an}>-VfGQXs*|DWT5_u9xWo6N6Ux58+$?rpW{-R{ zh3U=y`4$CnBFZ>(7!2J@uLt@cE7$~`&W^ccfKT+!?yuT*Kgb=GTf-$=;j~rjNLex} z?2Dda?0QRj_XnM~Z6ybA6!txxX)Y^%F)K`boFwj^eFRFsd&BDACE_h3&RBifK! zAa6UNaMAdohk$!L<8wU7sDAAnadeCw4rvDaLQa2L^tUgiekr?)E|h_mg`Z|bHU!0y z{wP8+jXtG>1XCDS5yEWClpa&^D1K-vs~orL`B>irGi}jOJM{g4mb01 z{iujUI2kX9Pq5%AnCeD!Mta-mIFgA6z(x`bX^hZR7J=mIUEOOq@;tYo*-RBy%F{a6 zM?!Vkg5jiq7A+Iog57;Y6VSf7$}st;RllOnE%h$gpo4AqOTM*EiXo+TuQ~$?S%U&b zURU+!sbtWG0=k8WQ%B;`w;Hve<2^lb)OAxag`Z~OOzb^i{rnrhkW6?orzEzgSK_{> z$)a=?jrsuMGm(ZN>N-Jk#}x(+yeQ7Yk+20{qs8V&H4}pqZ!<;O>X7E58)d<=I1umo zokh!vCzhl%=wE7vZCb@H8a%}6>3aGi2q z+lsRA_w6ic<74CLIr4}C>d46glnLbnb$32qaxm)&vp&jD(XDwV?H?S+C@TaIART`6 zspKiV4=zT~DEfVwa~ci#-JTC-n>tBhE5m~`3>ttKpLsd`xrX=t-C&9|FYcet%CjXG z3^hpz>O8d>X=EeZbDOA7^^Gve_(1f6+h+JtwXy-rpiQTSthW!yA*zaBg1jss@!AU- zfKR)Nkf386=R*}Ipx{@f&1;S?lW`7|0_Ll`IFNgtJ_vp@Zf)HibUkZAVGXt}90iPm zE=5z@(O#3b9jB<7g&Zz5UNwM*^-ta`hd3)i-j+z+t~66DM<=DLounwlAPIabgZlqN zl6}q}-mwHMOfXJ-LODtIWk)r9zt8JHuz-VC+9#?PO}-m4xDhekTkMog`VnT^g~tEmaCcTcqeC^GlL3rh;L$d8=X^d_(Z3luWho)s`-G>(Zc`Y9e?Yj zEqJu3QBFu>lw41cQoZT$r0b`li^bhVzU~1wQ{CspZT49W130k5-YlMtdAC@N(}C~n z23GG)u6)fqq*5V0b`Gb+f^U;-)By@Cb$*)~ZpP#|;Dxp5KH?ms7*nfb>$aF`mRL=J zou2C?7e@q~?GiN*LS9^M?2k#p#nno-<$n0Yc`~gCNsM500VK<(WuK6^oL?>60_wq+ z)GFm*cD4+GRzdx)y(CyZ4@pj%|Gg!G%^&Gn7jpE_m8?|twM%f{VpA0>gsR#7s#sWd zR2T7QKB})}9`KlYbvggSIK2cQ@N==OuH{jNBA`5P{R-~sJ-0J?Ig)FOy;MnT*gI-8@yT24E! zIb@Y#s(16EpNf~NCXQeoQ#k&1W$cH{TRdWsRz9LSJ(ypFR;WctltQ-ifvow!w$P^Z znYNY;87s5DxQf{stR92+q<&6*0IlAI-!R8sOG33{34t;d`Swa)9gX@Op;pbZ`;<{1 ziQ0`Ryogz7rk;7hL9>-h-t?TOm|Aq@Z*ZT^mKu+WYvO}3lUQAH6~Bg{r4&7}LA^~} z&Sv}_y*T5>iV+nMZqb69KzkW|uS})YCr|E5SQL4E?CN?=QEMjL0#4j4Nvb&@%f;8P zZWO#w-10JVc0B^OWJLc#D}-}B@kGqTZ`vZyekJoaBX_DVyB@ zTu9&Jd!O^OWXHNWh_h+r$Lsgcy!7-TK-Ql!r06xhI1)1G|7rswO{+K`<9ZGZ@OeX! z-CCx$T^lgT?=y96B@*4+F}6snrOXwu{E4=EIw1nrra0MfRV)^sK6f@V?4xBID07MU z?M`atJ0U}~rJT%JtC9sR;C&)vIj!n!ozjc;bL>b=k+KBA5bpjBjh?WQp@bv!pxZZ9I1gaWQS~B31d#7#Na{B)6>O^$I;c zP3y}oVjbFi&}3t-!SJS>*1dev(J<5bdKEL0W~~8byUxk#V%7#LtM8`%n}e{C2|qYo z62s3{3qB^sNy7Yq%`{I{t{(H|WC2|mqUXXtro&CYur|2cS0!)(6J;8j{Y$I5j{<}= zYRw%DjW@)E%*ENNpX+%-O-erZ(kHIozEa6^<Wl4j#e?o`<11k7PGd?3pFYtwJl7IA;r`<(lPJEVR zzbt{A4C54U#c$&8{cby->iBNDYc0n5^+oP4HdmlMNiVdVvu5G=>-V}e_zY1G4G()V ziIbi}xTt)$+@hOJISTiau9eoj2VCdTJ>@uuwcsV~^5p{2Z{N&}KlLfW){J6FrHZ(& z=*$aXwSi1YW%hAW5JsRC4<|Io>w6^w=42`@6j=KWbj>o={)S-$0nPbaD= zY-7mt2GqY{&VZygu=l0i{K-u5HsUsbpmMO;zSG9;19sAd@$W1J%_dH*WIQ=1M2Ee> zHrP*dT;)yX>T_b!I-7`v_r+0(ZjKYrf5;LLk{2N*Oh^=#gCoYdac z%VY2`EhAyk@V1g1y>4>E8u#?7c&Q(+$L*EfJB ze^atxbLw6kyG0>lag>i&(F5!5mpMU^hp0BzKRCKM9-5IoctK1I zgvmhGomp=zrzKa~{$aW*EgK2Y5N$PtK2m;=&wS<%6A&C?X2(5%FwB7tJrpbcsn(y$ z?)_d6^W)r*NOi|R8_=S9q0VF_ZW%b3v>kTANSrT#!aPPg!*4b(D8ynLoc&DHeKmk* zqlL6a#2_6~*5P3MAMDg?${SVc^J^S@OUE&>>zkiyTJ2_5Dlc58JUW_I<@2d)#c(2V zj>W19VUI5>bZ$oIOJo=dvBgqOSn6$3s)U7D$6%szMZ;$HJL7JXLCNxoqV>bFUt@U2 zgJli#F;8Bep{G0ObG_xx;l~}gD_t|pz3g#VLNi;AItNzJk_%|sDR4!N(Js-{Q8YER z<6l15KxK2QRMgAiX#@5ow1gizXV{92`1LN7aA{RpUzkQdpZQ&AB?smiiH^;-qO7=3 z(CN;IevFy|n{0qoDtE?NX14yg=OuDDtLe-qW}(r|A`5Q6xDMJ>WAyRF-Mv}|EV_$| z0R@e^0(5J)(m4CEv#A0>Bop33?|d;!J(~ayYAR--75*{|`?1r$l4`2)Kk2zo90QHVsx|;Da{}&$!^cBT z2=1;&1T)8xb2|IWoX#K=&iTJ_Mri#tB%GGj&3ev4y(ne=N)Ts9(cWA3OqC-TgW3gX zjKYxlgSR97A>v;IwHtI-*|`dqEmweiLCsh4C}2|q#W^t2W{)tfT(Hnp3@l=*y!ZnC zcWC)P1kbw&JewZFOpGa;O0{WtIp0mpO?00)v_I0*qi;iUxhNyQPptZfmb)5iHb)p@ za*xM7O;Dr~mXsDOD_Dk51^!#Yhfi$zT|W{k{{!8ZZfetVV~DyTcjR9fx`SYl7ddnb z_0k9P6wuOmHO9EW|H*rwhp1gdQWfZIF$UOZLM?t&97!R->=oy;*_Kgnb#pSVjU*k> z?A!+LuwETPr@vN(!A(8>?;2l-l7G7X=^H(ah1_bE^W#ODt?Ao-TA?SOn2_pf`zRKH;r(4mhLa`UB(MeByXT;d>Z57?2K?wD6 zvx?1mH*psE&a2NLe?~+pGZqV@{9`8FM;92VW*{M1!7tiR4x|UGhD#7bpPKc%|#^S zv@*Izif=VhEL9rZi4>S$I>?Be0aQ6=l5exSMw6?=W;n{2PfzV4UXoWi1nhiJoh(UH z%#5TT9WJi?`m5TR#f*iQwX=VD9yYyh5rVj#rC&vu+It#;FLFcV^?cU3`uO+Gl1$^+7MKG20Cy5qy^Ev|`^WyHr-&sA zUkhzwMmKBH;p@5lG#U4JZ~A)JGmf09Cl5^iN|yQx$@-@;&5-o_#c`sKmY@`z-#cO% zO5Eoaax)}!YD)Tp#O8#+xPV2P+tLPvsmlVNMLuyht9!|d?X#>Wh9?%#TH6c%{Ev^s zrFkJMwbnq>RvHtn9Wv-;s4CUICxP}CsQtVPB!Ufed9AXtjhQ|>v@$WRn0ND$8HgO69mCeI1O!JVup zd`s!MBozgWbl)0}rGQoAeVZZfl$F)QdJ;t6OVBWogAE7ey*frX`bHf4qAV2xxy6#* zWJemI?2nL+<$kLk{o*+WVJMTH*`X!ZZe_RL#Mk4IXnZTiH|pD9^+lRy+LX6_FDNQs zEkC5*XjAEPyFa)+r#n2-`J8wOp#w<$3rv(;t=SQvDVdyEWfas<)hE3Wqg%?v3JNgn3mL zsp|TeXRb;T$V^nP-K$$GMr_$5-&EBV3gGsP{oT zXSv$MqxMQ1aXRcup{Ie}VBMP8pjf#yZm?0=XjNN}mt-70r1?G!jP0~;WHVAAY7Q>+ zN~=Zi!`LXq$?li1xv^FD(oE{}D=xaBXPQ@G2{!~-Xi6M44XzZWY|M? zcFSrrTB2lFn9110yyXYredY^YE@%6=)4x}^nXtkxhrY{m3V`^>4qLTOH(2`i*&zms zQl)As^Yqs`b;LW>@@xb7vcXgC^1+RODO;Z)hLm z8}-j2;vNRxsLeP`ir(q|Yo9Z8*|q7dBqrw5%%Ia+>V=y`Es=`55l3*o2JOl0lgE1@ zth6N%KwD04E=^-A>6}k3(wAe1n$+F@FLiVaCm}q7qgRbE{;WbsHkp8rPF~YHt5{#I z+bjkv*#&z`9imLVHM@#FG5&U;+_%d5uq-^ek&^~UDKC*z$5V&mg+94_)X0z~i&eHi z5=AKVIXx4O%se9(%i{|96#jeQRU*?0cV7&>P}KWamkwA_%0lzlfYxRtIpmGnczW%I zU((7@_yhMB-}Tym#EnOj`BQhHBf^#7kl@*sY`+w-k_+KWwzMmPZ%^04PH=|R?{(l} zK!5b=YWs4{w%dx;GIvXBf!uV&>JOv%wnW=UJmju2)V>QhClGP%b!s`lO^u?3?r}2? z$t?v4cm93?iiLF^3DfR8-o$l-C|8q;%GwEc<(%;$fObE#-66y#uIHRTZ+aedTb&#Y zd#67F@yishRCpZYcA_AY5PGu~+r(5KHgf~nwD-h0iD*f13@VxW5(9_)4{WQzDiaD5 z>ZIDhrDZg*XfU28>f`J$&Q*>J`$(fx7vw!Co-5u+z*z)XlXwzGnd`_BwW5#|?5^&ShBr?S zkF0Ze=ekMZTiz=wRkW*ua{I}wEyr;9BEn|l6g4&-fG!tI!rkGwTO)XOh zEliBy=;Vu*pl_UQN4eC1pC9p-M=n4N#^^1^%`GHXe%>e8BP3>S9`cPk5Khr-h=MY| zYb3qzAA?Y7`|5Q#=4^9=bZ?VmOHyl4EmHGnsM60I>Il#TCP{|I+Ubc0r;5jShO_Vn z0443!3GB^{nBlp8h7$BUTH0nmS8(1pG#LK$w_BUoakVB_02Lkm=bm3gDQBLsp;FEH z8~Qg=qkxuBMwyoXQgG`V$M|I1_8a(kYMwk zF&zCvZV7jE0-}YGRa)((MHkwkB6%4aI!%)UFfID`DPOKUfcZIH$EF8}-W$r6R7hR* zunZpeuMWzJZ~D#IPnC~t#X^lCY6YV~V9CUSor^7&z9!o%Ymd6i!cxwBlq10DfA&3) zV^v0>;no}Yv}#>;Co%d!%Eqb1vf#!bA7 zMMGde0+aDe#t+uyZIVlR%5xb=sI#Zc!DgiLCE%4AEAV18XyrZc=AYfH&Za?x ziBt}yq*L7nUh$FyYdHMaZQ5T}#V^*NrWsCrSjiab+ppW)3Yi8|!LD;@d`t>SQ00he zHKCLfF;A>UfIY^-t(WPrL`gJaZpKDrXfh9olIFEaIA7Gei4~QEFuFBb4bxO`sj15> zt`ybD2b~AV^i8qPP_1rlISH&sXmlcHnZe-!d~WPVbcmk-8lQuIxtxnWua_F3xMQNH z4gOEL|5F~aeXz?kXuD@`<8A4RKBf?a`bDw|DI~fa>}PHOa!D5maMWS_d;nb)Fr7vJ z02vj^rap{MeVSkF86b@>ZwWF`wi#)u!MMVQW?0(8x3(hXyA9?2Qbn==U7|(vNs1|4&`LTQ#c^5>MIAwC%U$ zA?Tj)71XRYqH@=aIAP#Ij&p+~9O^b*Ls)6+f*I~#b4_5lkeVCnf#(ilTvSh#XhNz-UFG($7xirs2Kt z@qQ+-fIsUO!bmSiJ0dkyig7Oy)&dW(kSPAXxci&VBBZt65)GHh;uDOHt8(HMsDyr>iV@;)nb;V!tIXZ32INZd`qqni%mYsz54n`4!PQsw)*( zh+5NG3)i;3551|q-iY7AT+WNQ9VW2A_@fWebGLzOecfk#ZM@5`{d)Dq4?zaoE`ij! zH%%pk5(@l>cSPWcz$E@ak34r@Z%8aP5Aaf}b~{fLPfstNSu6|0Snxa1QPWMal5m#R zXpDMj0@?6*ccWcToiXh%&um7d=<`U$0KBNB`iM!XjPD#ohZDYZUQ3j(z)-r--sCVf zg(2`Zi&!PohWZ!D?7_S{|C!GyZL7XR78L3~L<`nM72P{F)pzTXiL$&l2uu@oCLpo^ zMt^Bp{iVv#csksrFwl+J#Gcnpnv_6N>-VdVC+A=td70q$;*h!^(Q{lw@zMS<0++1Q zarC4pi2Yv%I^qzN0UCm$zRQiJTW)5rpUS4%O3wjchNvKLt$wcQ!Lf6e}KU|!=;-8`CcYG9T9TxFQAu$_=*zh7~Qhfpy-7jGyl3CT~t2eaap zcTQBE?2tU{@E;NI1fj|;V6CKF2&ULatOvN4TF73vW;no(Eern zUdFbgyJ@FAq`tRTs*hi78VRN5{hp?t!bBr8)ISv7xzZbN`Mt7x=Fl-p;pH`rI{lMf zCRr!7CqvY5%8wkS>qv8kWUmW9T4foff<$1=MEESZeIgq z+Yw>~$Y&Y{e0313ijY8r4ViSF3*@nZ!;pYWVF^1LW?oM#c6j6sIhX}^GSleQm5=?@ z;lPGvwmSfr95)mr?^&MmE2cd5ORQH?LP|V0I2E`(8W^tyA}(r+r$^b3JN&;!Go?&U z{@OWOY*9JH{}DuT&rwN*A*XHAFQ|w`(QTgj;HRZ|l zzZf0dMlxQQl9B*uV|mZn9V(Fx(KXwt7W$-X?&E>z#X!aPW^w1A2`A1lCLQqqJq;ywz(W)H a1m&W&A>`-k7j_qCqPhwpGl~*#+A>vfkKj=N literal 0 HcmV?d00001 diff --git a/MikroMaster/20260520/20260520150002-Config.rsc b/MikroMaster/20260520/20260520150002-Config.rsc new file mode 100644 index 0000000..6524867 --- /dev/null +++ b/MikroMaster/20260520/20260520150002-Config.rsc @@ -0,0 +1,3445 @@ +# 2026-05-20 15:00:04 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add mtu=1598 name=Bridge-LAN port-cost-mode=short protocol-mode=stp +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" name="ether1 - Unet" +set [ find default-name=ether2 ] comment=LAN-2 +set [ find default-name=ether3 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-3 +set [ find default-name=ether4 ] comment=LAN-4 +set [ find default-name=ether5 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-5 \ + loop-protect=on poe-out=off rx-flow-control=auto tx-flow-control=auto +/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 wireless +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +# managed by CAPsMAN +# channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add listen-port=13231 mtu=1420 name=WG +/interface list +add name=WAN +add name=LAN +/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 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 smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ipv6 dhcp-server +add address-pool=vadosV6 disabled=yes interface=Bridge-LAN name=masterIPV6 \ + prefix-pool=vados use-reconfigure=yes +/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=":\ + global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n\r\ + \n#:local Script AM-setup\ + \n;\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n\r\ + \n#\ + \n\r\ + \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\r\ + \n#\r\ + \n\ + \n#root.mnuc.backuper\ + \n\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n\ + \n#:local Script AM-GlobalConfig;\ + \n\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n\r\ + \n\r\ + \n#\ + \n:global MkDir;\ + \n\r\ + \n\ + \n#:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n\r\ + \n#\$MkDir \$localDir;\r\ + \n\ + \n#\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\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/659/af48ca83\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 18.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 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=\ + "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 \"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 \"facebook.com\"\r\ + \n \"instagram.com\"\r\ + \n \"x.com\"\r\ + \n \"twitter.com\"\r\ + \n \"youtube.com\"\r\ + \n \"googleapis.com\"\r\ + \n \"youtu.be\"\r\ + \n \"googlevideo.com\"\r\ + \n \"gstatic.com\"\r\ + \n \"googleusercontent.com\"\r\ + \n \"nhacmp3youtube.com\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"RKN-dnsLookup\";\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 :retry delay=500ms max=5 on-error={:log error \"dns resolve fail\ + ure [ \$aItem - resolve ip ]\"} command={:resolve \$aItem}\r\ + \n# } on-error={\r\ + \n# :log error \"dns resolve failure [ \$arItem - 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=\$newA\ + ddress comment=\$aItem;\r\ + \n :log warning \"Successfully adding ip to list A record: \ + \$dnsRecord, address: \$newAddress domain: \$aItem\";\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list A record: \$dn\ + sRecord, address: \$newAddress domain: \$aItem\";\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 :local cnameAddress;\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 :set cnameAddress [/ip dns cache all get \$aRecord d\ + ata];\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =\$cnameAddress comment=\$aItem;\r\ + \n :log warning \"Succesfully adding ip to list CNAME r\ + ecord: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \ + \$aItem.\";\r\ + \n# /ip firewall raw add action=add-dst-to-address-list\ + \_address-list=\$ListRKN address-list-timeout=none-dynamic chain=preroutin\ + g comment=\$aItem content=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list CNAME reco\ + rd: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \$aI\ + tem.\";\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:30: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 2s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name="renameLists " owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local oldName \"Test\";\ + \n:local newName \"Test-IP\";\ + \n/ip firewall address-list\ + \n:foreach i in=[find list=\$oldName] do={\ + \nset \$i list=\$newName;\ + \n}\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy,logging" crl-store=system +/interface bridge port +add bridge=Bridge-LAN interface=ether5 trusted=yes trusted-dhcpv6=yes +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/interface bridge settings +set use-ip-firewall=yes +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface=Bridge-LAN list=LAN +add comment=Unet interface="ether1 - Unet" list=WAN +add interface=ether2 list=LAN +add interface=ether3 list=LAN +add interface=ether4 list=LAN +add interface=ether5 list=LAN +add interface=wlan1 list=LAN +add interface=wlan2 list=LAN +/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=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add interface="ether1 - Unet" name=client1 +/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.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +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 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=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=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" name=dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" name=dns.quad9.net \ + type=A +add address=195.133.25.16 comment="DNS Comss" name=dns.comss.one type=A +add address=91.192.189.2 comment=Unet-DNS 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 +/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=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-IP +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-IP +add address=geoip.co list=NoVdsina +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=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=VDSina +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!!!" 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=VDSina +add address=vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns.vados.ru comment=VDSina-vpn list=VDSina +add address=vdsina.com comment=VDSina-vpn list=VDSina +add address=cp.vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns1.vdsina.ru comment=VDSina-vpn list=VDSina +add address=10.30.30.0/24 comment="Local Network" list=Local-Net +add address=10.8.0.0/24 comment="WireGuard Network" list=Local-Net +add address=146.120.64.208/29 comment="External Net" list=Unet +add address=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.21.9.225 comment=lostfilm.tv list=RKN-dnsLookup +add address=172.67.161.94 comment=lostfilm.tv list=RKN-dnsLookup +add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +add address=104.247.81.99 comment=lurkmore.to list=RKN-dnsLookup +add address=172.66.164.200 comment=dou.ua list=RKN-dnsLookup +add address=104.20.28.254 comment=dou.ua list=RKN-dnsLookup +add address=66.254.114.79 comment=youporn.com list=RKN-dnsLookup +add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +add address=149.154.167.99 comment=telegram.org list=RKN-dnsLookup +add address=149.154.166.110 comment=api.telegram.org list=RKN-dnsLookup +add address=31.13.70.36 comment=facebook.com list=RKN-dnsLookup +add address=31.13.70.174 comment=instagram.com list=RKN-dnsLookup +add address=162.159.140.229 comment=x.com list=RKN-dnsLookup +add address=74.125.131.91 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.136 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.93 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.190 comment=youtube.com list=RKN-dnsLookup +add address=64.233.162.99 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.105 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.104 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.106 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.103 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.147 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.163.190 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.91 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.136 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.93 comment=youtu.be list=RKN-dnsLookup +add address=173.194.222.103 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.106 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.105 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.104 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.99 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.161.120 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.161.94 comment=gstatic.com list=RKN-dnsLookup +add address=142.251.1.132 comment=googleusercontent.com list=RKN-dnsLookup +add address=34.41.139.193 comment=nhacmp3youtube.com list=RKN-dnsLookup +/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-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-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-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 +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 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" \ + disabled=yes ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + disabled=yes 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" src-address-list=\ + !VDSina +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-connection chain=prerouting comment=\ + "Mark Routing main for VDSina" dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina new-connection-mark=no-mark passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark Routing main for NoVdsina" dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-connection-mark=no-mark passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + disabled=yes new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=NoWG +add action=mark-routing chain=prerouting comment=\ + "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ + Unet new-routing-mark=main passthrough=no +add action=mark-routing chain=prerouting comment="Test-IP sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test-IP 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=RKN-dnsLookup new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address-list=!Local-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" new-connection-mark=\ + VPN_No_FastTrack +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" disabled=yes \ + dst-address=10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +/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" \ + in-interface-list=LAN out-interface="ether1 - Unet" +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + fragment=no in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru 3x-ui" dst-port=2904 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2904 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment=reg.vados.ru dst-port=5000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=5000 +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=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + out-interface=WG +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=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com.akadns.net raw" content=smtp.mail.me.com.akadns.net \ + disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com disabled=yes +/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 ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add disabled=no distance=2 dst-address=0.0.0.0/0 gateway=146.120.64.209 \ + routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set 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 certificate=Root-YE 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 disabled=yes forced-ip=89.110.101.17 interface=WG type=external +/ipv6 dhcp-client +add add-default-route=yes allow-reconfigure=yes custom-duid=\ + 00030001050000000000 custom-iana-id=0 custom-iapd-id=0 \ + default-route-tables=main:1 disabled=yes interface=WG pool-name=vados \ + pool-prefix-length=128 request=address,prefix use-interface-duid=yes \ + use-peer-dns=no +/ipv6 dhcp-server binding +add disabled=yes duid=0x000010001000000000 iaid=1 prefix-pool=vados server=\ + masterIPV6 +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="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" disabled=yes 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="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260520/20260520150002-Diff-Config.rsc b/MikroMaster/history/20260520/20260520150002-Diff-Config.rsc new file mode 100644 index 0000000..5cf7e1b --- /dev/null +++ b/MikroMaster/history/20260520/20260520150002-Diff-Config.rsc @@ -0,0 +1,4 @@ +27c27 +< # channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +--- +> # channel: 2442/20-Ce/gn(18dBm), SSID: vados, local forwarding -- 2.52.0