From a75eb7baf1d560391e4d6de2d79cb8124e40fcd3 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 15 May 2026 23:20:25 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 15 23:20:25. --- .../20260515/20260515232002-Binary.backup | Bin 0 -> 245494 bytes .../20260515/20260515232002-Config.rsc | 3412 +++++++++++++++++ .../20260515/20260515232002-Diff-Config.rsc | 4 + 3 files changed, 3416 insertions(+) create mode 100644 MikroMaster/20260515/20260515232002-Binary.backup create mode 100644 MikroMaster/20260515/20260515232002-Config.rsc create mode 100644 MikroMaster/history/20260515/20260515232002-Diff-Config.rsc diff --git a/MikroMaster/20260515/20260515232002-Binary.backup b/MikroMaster/20260515/20260515232002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..c9bf1146027c721ab37f22eece87885703586434 GIT binary patch literal 245494 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®G z@6I!cKQ+q_h5vDxD5huPO$hXYlE7-O+YkU_>U@0~$dNPKDqqQzBO(sBkrR1OVON;F zn2B^yB-Ej*YWJr>wL*iFlPorSYM6CTZrW?|ZDkxP;iHAzCopr2w_18yK&4+ViCd)l zj>{5>>&Q-R!;kpwMiV#=h$I0eze>FxSWT?kwR7?yicPri-a(t=^z=>6=Z(#0qcX`J zF2ci4g%qGaV2K@zbUJ{R*M{0VWY<&7_LtQfI+EOQ84zO{(MM8H$S_7~K>5t;qWLkw zDU1l)5C(eqTZ8kRSqSv3b=y>$7TUj_kZMk&o@BYE5QXg56>Au9GhkffMa;YQ6sn&^sMYzzspCej{An(() z>SC8vAvUsU5E}~E?^~M`vvAN1!Gba@^~GkFCByOBq=SjP*O;U1lY7-5yQaP_sL}jI z;il65cUSCYZwLTkptUo}2Nc=9VeHHuvP{7j5MD9hR&h5xfya>xClCbZB+5g!M~MuD75WaQMb;@UH3w8*k3YsvYL zPp{ZJ5D_XTRfghW86F=e+lO;&xSmR1ETNcE3`_Tu6ML3r)7n&Ru^4idxS+^m!$Pd5 z9BzoS3t@opzt`X)lx1*&{r`a2ov+teZn}-TXs#DkBAgsV)99~8l{lcRvy2@+9CqZ? zoKMtqB>f`wCgO~#lz~K1K9YH!RZD6ut`(Rnf7TT2tZ4VvG1F;kX&mq;&WjD5wSwc! z9~gz~EHWPo2br@iy+h)@#K{tPK79#x%{#c;*Z=-cSl~qPv*x3sA`u~fWzZakbn6=a;sl4u#4qpNp@G zDP*NE9*1hiv?HS=UYHKcN&C%#if6|zw7w8j(*;$)MTupy2;(bGRqccDX!cZ?0h?s8 zvS$qsIAXwSE$3gJH+VQGuMsl&cCB<}Rfr|X>=|V0A*2%ZD{C(EE7KwyRO5DDO=Gv` z%4IIo)`v${L*jrZ6q>~uO%M&4!^9luh_>|i)y%VKe~JJYD`0rFqf#U7X`NAFCdp|! z^M7m?Bn*BM2m^Jk%E>7>mTKx0Ys3jOu3ZUC2w|0@^s$LAS_M-NhQk;W%eWU?W(+{( zLV?x1ko7qJo){IIUdYA6uc)r<_BJqAQ;`)FyIKys9OUT@eTS#HDF9lziO=^Z!xSNr zIGeA80j!ZJ0(Cc!C9G!rle&8*_I1kK+!EV@)ZXxQ+U54z@Si^s*cu9FlAhLnoMIoj zMSs)MjrX#+H&D7Go~EQ11(JY#z6;@m`d(1pdB+xU@ssH360(zgjoadcHqVKs%X*oy zc-|``s?ZPmsh^oU#Vh+n%C0;Q#1>aW>mkxiI@$qf$vF|ehSLqcR>p%%ncnNgU^~O1 zyrm?tJoyL?Hv+x#J828YRg+gK>aO#HrI|5Fk)`EA#+Lr!R5=Yk-G4M;5R$||+>!ow^~Jxi0&);_>zhAkOMoVirK zW-}2yQ>x)QJgE?r8tFK0@nWTImT9(Di!$>X)O{s3BQU10y>Lp`gJ412*qvwRa2OuG z!fT~4rv79DO%%wiy!p8=LH#0869%Hv8v`46HY7;a9It*oVk5`)(leKd>|%(1I$S`; z0>6DSLL3G%Nje^*tInmx`p}6*B{4xHAb}5jd|nBPYCWl~2>J!X@Y1CQ>MmC99?y#4KH>c z1156*XRswg)6hp|2|AZ6Ib&1zEl=W#B#4^i&AvNEJ(lZ-5&QwMxDfcREn9<5pm3mp zNGp+I-;^B#M|vTP#ljz;9G(e|fSx1S4;+9nY-{dGSq&1)7 z(hG+Tu|Q*vLq&234XYL8oQ0VLoa#TJ6W>i~SdOoOLZ)of+uDNu{s*@*1+l}znjS4e zi-bTdSRP4ug61czGuNyIAS=BoKq*05Qtt6(8>s_$gYvt6s!pXA<^x=-V(XPMI$RQ0 z4}B0^DngX=j&Y<$g8$L5MB8?lB!4YInVfS&I%UBimTf~GGHyxf@tZ?vzn@E$y&kPs zbeEk~X`ve&og*2HJhs~(ro%)YcDj1R_ybFyndg=#cWQB(UUdAyv$;sPH(rrVZna4kZ=S9|`}? zV~0ra@f!jHp7xuGD(*{j(;T?AAb~-Y=3FXb87P2)98Q(thmLulq*XVFV6yr7$U08W zR)C$FUF$IShS-h@6?hXnYsRgly#l(eGaC0(zTB>p37Epd4E>u2V4uxOF>;%P1D|n{ zm$degyj05j$;+4V5FfU}$Dv|V#BNj}9@_&6e##=KuDGy-KaWTwYCw{koqrN40w%}y zLSa!OQf7$s8Z7NdJ8!to1*jy2o_7znvo}jN#S46|VS#3Tk!De?(_Q`>$Ha4|iS;ga z)EcAcB6hdy&Lf%kLn*8|(g|uLM2#5{^!O*aeMl-Pm4Jmv7V3p0=G>qbR|UTm;~74X zlbClmZiZ&*l^;HyGETj*@J=X^efv(G93?cZB@tmM!tMJ2Fq+0vEIWn(k_b{4Bu2fX zMiM{4sixfpeXUI`OJt`sq+rdWKpoyrd7Q1mVjEx+;UJs?EwQ>8iS|(0GVCI=iYLQ5 zNL+ze@Jq)tlch>0&dk`=#oYt-_ZHY}dUA2iQPsGb7jkt%;gBUD!+7O3EkqSEo~xVz zb+b8T4s5^==Fm>N{r2~ypc*X6oMNb}lCdmz93wEGe##YJ&r74kc`pYj@uh8>+O*^O z6ndR+pZ&KTu_$sa)Yof#eb)oSS|TXrqp0;CAgMG2Y%(#a{NjH9c8QOu2W+5>)PUsO zKaKPB^%M*kFlb_EkTlnYI2DWkUE{W+&RP)Lbc|AH;c~2NQ$s$Vo;o_Oyp8pn{ttRV z+eTSO7JU=BF(Mv)F-$FaooOD@E-pV{xy^$07B!kfdeICL*yn57?Uza*uJD4rC}-ar ztsI6Nj0t9Zqn-c}xx6BECVD_}^!c{bh{Xp?42XEHcM^bJSW&=V@6ymFLn3#?r?M85!)vUzWG+a?R zsQ5Xh{srAiZ$O`ySls4~_yKq#`TGLELw73}X3pB#PH}F7SFwUo6u@H*2FF=f;c!QX zQ?n4>5wXQr=8shC>C~TG(?kFa*1j=9&Ooj^2En|JT#N`M_N+zWTp|@p`~Rb8+>jMwsanT7 zNPC;)W@tzqV>y~rV3OhQ2<$Bg&r?2pd~ap zNvYoZ3zj;^zq1@YX_ns<1V+=2h+zc>8w;ceSCM7ueT892cPu9N1VNB*?X!TNz^DBp z|J#fETd5C(8ryqhb)>zO#{I%npKSVjLJq^XN6KX*Sj9;tF$=yAe1_KcrPOg^e!3_w zy`&E5eS;yAA>v-)4U^_#%81@xl6gbp=jXzCn1pb-L!xl=zZ;yRpFZ7+XQx*Kv_*S^ zyy|Q>_a0RP7BN)!HeZV7^|G&O*e&oNX_`m)ko}fW8d`_K>nROaY~lFIdbkEdQ+Zd? z;x)ApXU%St#Ml?^Yo1?m6!TwC^2CIv*cy4MM|1jbW*ckgM{PJ#y^moz3T1b|ixu?u zRFOG?A>>HyReSE5#tGecmf!_|M;>G93qp*@?FETr+L;Ra39^ ze|NJ#8OgA(UfG_%Bvns{-1&h#FVf68;X{TT5_AD|(`$QHrS(eeryslza zetv*n8=H4OMT`$d+lJzTqh-V9WWEL;xt-b_yNJWBPMYSuzhtx;*4xnZ0~^QR7$N;3 z-T(Ebbk*v#+DeTeddCXkCtmxb=!yua-d4IngOMQzf%BP>V=RRu+;MRR2M;9lkxhjQ zE%JaKcd`T?0fYc_-?I{AwJ8_g1E6Nxn%p&WZTG|+Vfn79`uc!`UJ1;YMWuVpdIHX| zMoNneMRF$UJ!HdOuHFCXCxc#kXv2m~H`-G6bIWq1PCLRYcw--U3qXXm!=LJZHA_d6 zNHsV0?WB0YK?O_`&9EAt#^sA@=KO}o>n}UyS;#rO1obuW@GUyQpI>O^fkhF<8XxOt z9&K4IS6GlwK(>2d0Y$j$*xf3)94KYY1@IYXQvfGeP9Dr6A+3q2Cm9vH;gYsc?$t|V zqvMz`hT_8`L3LQp?dd|d?b!F3+`EHqPUfeS7Jk+WjYXWse-EXI^-33qY76IT{(Xzy z94)*LyuV3tXOtsL^$0g2ss9)&PjJP zw2~SkS+}~%-~J5ou%m#4fiBcBhdgb`4eNl>(C1w8r+2_|6XGZo4aIz#zY?8&WSFh@ zszw1yU%kf}BWWEoX}_feBW)`+vJN1vt*YgtDwpWj@G@bD1h`o_TC~T+p|P8YxiY^v zOSPKqMxi8=%gN8H3KY#YDVrW$M2&K-QfnM}RKRrVI|-Yryh)pcH0Y*Uu5WbicI4b3 zY~KDyPHYAGSzYSE3nD=t2jpHGHNyj|(|{Lm_2@BuQ8IDi=UK80?oftzt3VkGP4TRn zAfTol0Bw5Xdek65psJdfkIl!*&p>4$x$}pll=tngA*k?167~A=jkPTl61XeWpFT5F z7J{=NZ(FLS>}p6palCLX-cm-6E5tuZk$Zm?C!{;UkD&kLBL#_l1vEm1fTx7j&FOKe1a5#u=+c$0!?v`bFR@ZhP6H zn@6-JQz6380w7A-8{`FnS7_P{j-$NnM&?9O{ipw@nm({P4Cw$5UuAVxWcchfE9?KU z-ATb6`0YMx(8E^8OvMK>az;OFhOoloA-yy{I9J#Juv6el12PBCY1$-YL7R^>o2Wa{ zp%S-K_TZ?#Izlb|3t=!b$edb%EZ9D|zmp`PK7{kRz4_#X$m12fcs@;rz5r-~ihuWC zyvD1W4PkxQe9I7d1;f=9@w3LaiwY8`R8W-RJ{-Mi&8LV;WC}T51{4hB{Fs1w>v$#y1!r^Gn zo_?%;p-xfnM>ICVET$4wn`E3+E)u$_e{4*#1rOv0O_Ek{b0xjTIN z#Q&1t#}?pSa?ems%1?5GYY&BWcM=&~uIu5q*0pzyb%R+euew#0(wuram%U}kZ?a#* zs%Fh{U@V}v>x7OifBWkd-=b654KFK%JMl|Ly=<5MHe`uFx$oG0^T_ns z{Ibi&$tJVWTk5d12Q?Vq^~d7=y%q(X54`dErSrPdHBo1Ggu$@q zxXoSDqPfkbMYb^dZM2XM9I*%@z745%4? zC~!uW1L1&S&hmxzH)kFERtaJ7wiG|}j?o8@mHXTyFv%4cHkxp;BuC^})efW*Q9>@) zm-DBO9{}UtMK5-l#Ce+Z9ki70N#$t9y=O1~;mV@&Tzt>-Oz62*1xQ0$vb{P}yjy#? zlP0l)w&K!3^w`2s7EG|M#G*~xn>3(A!rolH={=vjVgrCbQvmGqF@B-ANL+LJ1HT`) zG^J;rP4rJiZD4^UG12?_As_J}H)V-TqHDAW%T0vUf*YY6U41A&@70x7wi?PcsRt)u z2W%XBj>`YN6tJmG3F%jJ65!%dXgz8FoUB?4R=^a(4v5n)*nwpfT=PnbLD-t=oW$w0- zG$9O-uCNVHBs92`Oo=v49kys^M|HYQ-KJ96FZu8_MDJ}2-$OS2S-L4WIUl}Imm)_u z;Lrra^gv(X`fcaIFlVZjJ{qyV3Z0EA_!MVef^=m&c#o!Ah{yv8IWeX@iyhj*CtG~h zs#5P5q$(5#z{6qDZew6n0zp(TcmZygCQ z(PcJ^?3gzY9G`h;h0}2iqpC+vjbVj*oO!AiDZm9lNzJw>|>QCo&{H`^N)pu`oQb#(F@0 zP8LG`hq*;JICjY4yn9koAuTKhF)q1AoJ#O;i#v-`Nhu0bH;b;+C6bO$v#Rwr(jgE# z@VGwOwUk^|H=)PD77bS5#aKiZyg=MsZ5EhPtUVXqOjllBxc_hQxr*wH8D{5l10X%? z1PZP;dxAyGfnKCC{HwyUMcB7WqHJ%uSn!9TPYd<_pD*NIku_qNsR6ELceNFR?k~~5 zKUMgLv;K3U5;t+ncOSj$Mdm;?-GupOG~QrES6KN`12MT${vY8yIe1s(uSm3#LXnKx z0a)@j-dS{#dl^y6bK#)1cqgfzGgMSkrWC}v8zoRlV2>xuvj?1s!86TEtowYrR{f`g zyg?r<^x^kqpJCn{kDIb@5GG+=Yfv8=%@7RPWKPO#4|FwmT=~ z?g`^@gI8Pa&lQA(N=%{Bz-iGKu6u84xj5HzN=lZk!KiBHx{8GsxJ5;H?E!_Xy9z9t zO=D{x&F{3Np>q{UoK!H`xfp><%d}3jU_nL8d6ghZ0k&2#98%_IZDP5r`DHj%`LoWw zL?O&&ghas~K;gD$szjeC@f0tBE~}&O+peGjWGTN{3v>vz>r>YGwN3kaZg1BgqDo#= zQGNiZ2&jkBYVO6QoH`IGKOH`pQ79@-nlvwK**~CC@0@a$9Q(c((9t^Si+Vx`P^UgM zWmGBmKvljL(98T3I(g#E{RwRcL8Ca`nh&?3lO~Q~1;_Dd{`8RrJz94WHzM@E zl*cn?gcqbTGNXiPk?sQh9iljWSCi|ur0Y_z%CnX8kNI$g%y*p1syVta=l4GT?;5>G+z6*CpwVfF)#pRvT>>qv#S?Ig zf`-MRVNwI5UAPo0PYeU3KJSm|aMx{qR? z)4uYOJ3<26GsB@ZI38YPplHM)vl-hTWr11b{~yih#Ec#>s9~BQE?{t);uN;SCkO?e z$u_+!AAoF?bgQuU3W_HKb9DK2T9Mwb4Ml35#NDt{mJ6QjY6DL>$AhTyS0qrpn9|7= zzTHEtYf@RALN=|KLe1UVE>0iG3Sr;I9gHzCrXPU4eLYikn-Zg0E;71v*H!K59Dw&! zYI4^L2U!lgp)xH~+sHx2ce!BOMU`vp=T4;7J*g~li~cW>tJOQBjDk~qDC2s9v$`r( z0e)y9GD?f`l!cA$NYdqHH+Jn1NDupqDYW`-1XK2rZxqRQav9&02XV5(sT}6Tzio6 z+C4x#sy6DlX=(ftf*O3wr&{?Ry_T6pIh#~$x1r+6LK0Q(*oyhcSRaoXOY3a}MZ~YC z$nQf{yNQ?ZLq<-4$qXX&`NaH=B{aq~S( zu3I)u?x3SovQjz1SrgX?2)*Ug^px;aw-6A21m*Q=pCHiU1EL2@vOFLe=J zk?FDIqP83~V2+lu*Z<9^)Ul2b|A)U?`=S2NJ-Ze)Y@5)$i_ZE?A{eAU*0Vl%F;`Ghyo_}y!^g=Ppurma-26q4l$<8^G>;G;Z3-6g=t}> zR|)sn0WfB!u4@1uZ(hcbnC;k9Cr40?D04LgcXWb&7(oHRyVTCSZ^eYcuw^CBe_0t$I*TB~*Yk>w=j?%x%A#^6i`>{|ns3 z+xQ!g?F`OboFkRMEI;nv}*R{^!Cdxp8j z@7bAZ+~Z|k$tXhq{;7LmWxHiMYk*5CPim+<_LlK6^dXxn2vhPAxJp8Y9vg z+WRx?8`LDN4EKY{s6?7L8TPt{ih|tpL7p+}0T?GyHP9C(dO?ruP&oP`$^X?^%3<#T z#%INSk3h75&rIdqq$LUVbe4pqUdh8vk-sGza89k@m;=3xJA?uV>$76==PN>cj=<)D z&&hRLKlWfXdMA%Se?gE?7p9LvrJlktWzF%mg$^uu?@#$-RTWIJl_2l9tV6=(Y_JJ&t`|+bssZO2o1mqX`%*wuuobX+)GIOza^(A z>G~7-OfCwyib5SFB_EojiVjd%-!7!^ZKQK!%&JG5O{+EzzSuZg1?q5^=h{ST#@Qog zbtss5f!No%0b*(9V1_^bvX?+1Y@Bt8+z8Z-CIf&)!H){cOsc`#<-ObNoNp*ynDfkM zsF@$-+)xOY$~5}7dCL%l$TTC}C-nNXp8b5U;t4~ilDE0vZnmJ8>zaSbn24>5VuA#8 zHt?ToQw!Y2j-DzKX5Dx|=RDKaJc``zCYlYaW6xzN6A)T*x!(IoV>&f7+N1}(JpTo9r;DAA7UBKx=uI1J+G3!uiD zjwjDJRxX#}Bf^R-iqDGco48TcNs<38r~AO<>FYo5rKQDcPp->WJB-83ENFEW%42l2 z`&ia(&MzNp^UWhuP?&fYXUoCy#-E)~2^)#ovxTS;6yY`ky4n22p_~*y1Tfr(msgQW4Mf9XCQ&1Ah?kf#B;Z8hP zmPyNp(e3C62uYSaNL=8;EO}IG6`cLi6C&v5vFp30oMlO0UB2TEAqA=kBM@2nXUJ~~ z_kN^*30jbA5L>~mR7QHxZ-|zSSrQx%r62WAM(4ak&nG2Z!fx)~qI*WJSqV(Czy?)8 z^e0cPd00V>4#Oq$qHj$3pQc{cCx<*Ei3cN0D#Z`3)>E&89e0*16GScRP7$zs=E3WW za*paNJ}JGOGJP`$H{*uYxIK;X+cq_{7iT4#ba;7XNU88YUd{hptW2|yLjm_9r=Y2hu8Ai!h!wr!i?#U{?r(Hy~K z|4@A7hu#+wqg&9geb2xIaF%{js8YjZNutNOn4RTTf>(X7Ck5(qjV=GyJ!yH`(*4D` zSjVN83T4hi@=c+K07UTKinzPI%M9z3cV?whmStBlMlj|T0**2_#i*I zB|VMr_Ky2y3ptb!p}yJM2mk9Y)POk>YYNLBAd?E>3-fLnn6Clj_z+Zjq`d@uviiap zvXkJ>d5(pq`F1H0eSHm~%$G5vJl%Kr(R2K-VxQUEaNtvSx$rT7zW4CZG0wxS(+4bZ zxTcRdw_YBnEmKaW3%uoxKd(Kl%*_jI!O~RSRmg<^d6LHIVXBxQtnJCRiF3q;=x=k! z;}vk3ZFoGnemM*r7^Rj(gJP3I@Dmx z5ou^uY6UP&w0m~0&XOq07|^@8q60Bc-V|z}<};HApVR?A3{|CMzGDu}6mJ0tknoVU zh0bu31!A-xfHmqWKe+Bl-V<(aVt2p+iV~@^<`E+Ajik6=Y<*ITxZ-s)gUw z{^tFZmiLubyr<$|002g>f9u;zGKJW@o2M!{6&|>L?U<;ndcEv7*etYz4IkRM8&9=x zS@eFq`he#I@jPB5jLK*QF|2Hk(293u^n3KbFcZlB#Iq;GJSs@d)n#L$z;jUsZ>60ZFjTwBT3HdP zLC)i@_I9((RH$}VC{5*=O`>C;yYS%4{5?`0#kz(mdV1;)kA%2UQS0uN)_1p5-8e?LOQ6`ZPhU6O=y zJfttKLKnhPf5@SLG;dYeuS~!J`2+$>mQgI63{?HP`Ya7oz@&#$QIS^wFsmk=ft<-rR)DA~#xK@U3WlAJs zWq-BYV9p;QE%8aDnExtbs6%x>NZ|$P;EN<7s$Ms%G(xS+66-DgL~DfP4l%IPu8VQD zqo(v=2yYi`T<`41L0FUx)!VxXWSXntNQ353(IIKAIocI;q#nasM6rU%E-!iQ`dJ2| z(ac-B(qvM3?D`dVmX^8=)Z-D%MZmHZJ;cKx57H7)OmkZ|;X@-R)?^5Gg{5ZulYfxP zG9Ark>)_+wJY;g!la0%jnq`4I|ek9w%-ZD}~j?m5ocO;J*4AsioU&JAnyn_b@Lh|)tNrlc&u zJ7IWWyb%EqL~aq z_Tu4pRp)4?>x?=rRVlVw7@K^O&o?ie4|UjuR|9H;6?2YKEMX4z$Iswmf{Uf@tGvrh zkf{O`%HgvPirT!mM^mKtM^VZIb1-eLE<}l%ImjlF&LL=q+uWG{er{FsX(Sf7IIEt-31MB z%3ss=1u~(LFlZ#j$*<1?u;Y_*BB$3{xa_>G(Hoc)9I#A>29n1LHdl9uZ+JsT3Tc9P zztVM}-Ra{=qp6q`kMVzG0R%T^VL1qAY5&aDxzT#crPv6O=Y$Wzj5dug2bAfJL5+pu zHR_a61R+z}>CU!$KRazFh6nr(EXln@DAUSF3i8inNKXk;c{GxlvhCdk+QE~yvG?)J zspUJM|B1iv*wvs;dCiqLe;_BNMxAq{mdi+)U9$3K%<_BlEQy^H$QgjSdQxg2j1aap z7b;sC$$$=Ryu~G)DPO|q3tr*lE3kpb3IXbRM*jLw=>BF4 zeSLF)r^bFT1Ed{?#c+u&xI3Na>gs;{DY5ZzDAj&!R*vhy`1j#4HMG&gN4=69)h(>X z@Mi8p8ylNRrTe{~F6Akp?Gm6??;X00m`GyBAB`4?kDxo14#ND2_~FyOEuZ*DUDoId zyaV1a5*Yng_1ZHAn72@4=qYS1si~4GLEpnnQW*RBaFW@A-@cdUa(U*Jg-s(;+T-3m zCt<(8WqqO6Q`^MJ8H+0^Mp`R1ebpV0+SVBBC?wwHSbE_8pP2TC>VKIenOsfgLwP*! z#Vi8gS3K!U(laku)7~V}O@yPg79SObA8x*^DtkK>8E7Y*Tggf?*@0H$YkO2_q_q3c z#qw33B3ucEn7rbhJh_M)&|c!#R;R>4UC?nt!W}UVKOohh_K@j!saeykIXTg?Ql=3uQ8mMWI99K8`(!5sEAQMQ|H+51!PS{)*+w8x z0!ZdTZ_C56R|zZ4FsD}jzA`-is;G~KffPT!g6V6ryOB9*STWp>HFPuJ21!BI7Ca9N z{w3Z>DMrGZQ^<*~7vr=(L08!~2^gk2X?j%gE2FZQRN?iIyuPZ4Ye5)Q#oK^O@Dwl* z03M#Lrm()Zu;mo-bfSQV@QblmbWq%H=`eo!*_6b5*d)9wfh1;xRV}3qGne)RJckBL z2?9mz_2fQXP-k3fRhfPI$!%$qdz(?|ppf64z&x3@+>|B73}PJNU9SZWw!BMx#!^?- zz}Fp6sSuMVvI}M1Jk@AB)b8|Kgd^}O)UB+n^Vfr*^fs;uC(oBeEqAgZK(!kbKkdod z?}(oO^K1#z^a=j}?rV%dPeQe;L`49-F{L-+f!k|pK@551axYEkMc+xtW^W1?S*;c_ zx)@w5K7hVGDg^3*@NV~|fRh^04lKMvyfh|jJPyq7-W#8LwxFjuEX=cN4}2eI&UX{{-woZb86O;%!vuZ^u}ChcpcZiG%O1A8xN1Ma+J}?oYd6Wk z|BMy8M?%!mN9lVtjXWVkb^zaEatXhg7hI6VspdZXX$mhOkT}R}{Da)0kVC6dC;53< zhz>F%qg03hr`#}&=y9uQLW)wrITKgmyy(Sl(z6V7{Z?m)XneDuqHFkv@PCh#^qyj< zNhd{fh;73C$}B@;K}7Jisw^iR`fLIIBl<*{yFkv+yg27Nj;WA;Wi8)f8d$|JS(|bw z<$RUYs=sV~{)HlccP2-9sqH^YHMkIH3Pfx;jUi%V3cDr%#MdL5Y91}}T+aG@*C%}9hL5^r~SAPz7su;=7UJ9X?V`pn6yZU82nZWb6V;k^emdg2&HPJR{Ue3)ONfv*Z`8+LzpI507KsTwc)6EZM z)Y4lH9LocYQ^##c92C3oVZKOFCUx%)l-JK2Zsr(7~{o}7h zvHLS*gWO2!4z)Sd!l-`%_#}-cUeMrYmHT5ap(-V>-@b1!w_{xf{YezhIfGb)s(mPr zdM4iPwJ|sgN1703mSH(sK89F2)|xrysXMq1XI`o5V^vT+AjzR(&%QTJ{)uB;++5LL zwfVyOMowhD>F;&>!aJ!53JR#eKDj8@kxE#nes`Jq7VyjeJK=?APIm~)$eas_Q+G^t z4Nd+K@?J|sl$qdla=>k~~ z&}L|_VjBZ{p_tpf*a(z1?J8V4-aap;_#Xc&t1O5vmGl;u^@%BXDtCgxLaA+e=E>i@ ze5{6PU8Mty?d7ZqU4+MlHtA0H2T+D&d_LsAK4Vnurn3I7O%k36~r1iO~LU{BH& zEc3qV#XuwK55a8S=qT$+Odi{QXujkOg7^0n-@(f-kA34(=--mVxzL_L*ta}b@A)=k zHx(FP%~{?j(eI&pUuSZz&*b}J*MrW46{7D8Ax6%AIdEm4a9$+Mx6s<&<21Co>|)VG zZVCsh@0cIoX6G3cu2N#AnUXgdQRIqPdPA?@sr0JQ*bnU+{nlY&&N#sPcD8CA8q2Gwh#MBOmCmVJzh>NpmUhriut#H=o|-Y?0-6Vw7(WPIQqd1?;?d;q7s%w45@)5u$_|EW|o z@UMs1VLU=BH%1icZ3lexr>6pFwxM`W3p~nw8@E?>b<%b z=~Dr8+ndj6KX*D}h) zgu=kcmfUQLm*T80otrZ@d;*pwn^zJ&jCcI}(~RijJpC;I-a{xGP((4II>0h|ff~|r z{s-ng)9LJ5TYtJ-0B2+3d4NlJZX4ByVgB;@;GUsre@y?+bJL4Ne>k%}?CT03fPhiI zY4g-UH&9MS`-=j9#s5jS>GaEi(OyDjR{P8BT9KuhZ}2w#*M|@K-zqdpv@Nk zL#pns!!8IsLUO41v&i1sYo7)-x4AtC!S%9mY)$^+UTMBbyIg8*2-Ep&zK!vJ zs@+l!#&&81(mh+*HYkMSzdOR9$;p@f<*4p0 zKBFM75z93uKhlsPDT|ZW6a1ZH8d1r28N?Pu$W8R+A&283oVFYvw`u{9i~3gs&9RoS zAosme-O)I$u1~(DRH;rVFFHRp102V8w0>-o)ng}l!_9-t34ek_3do{vYLdHZ%?JWC z1WSCT|F_r|VXwyrMXptJ1n`oCuH5=63F$ZUjlP;ewv-CIJjh^JmKo=OrS|_yMm6f0n8UFEmt}0EK z_Uip{L#IxN`xe)6Sb)~i4nD#T(QjI&a(lOOkQjp;A-w3?tz|gjJA40O5DE>*5coO6 z{pzT}Y_3qSQnfnUN+IEUe4xIn=$hZ%@Q|b}R&t|7FA=HF$MZ$4qK(ac7zvK_*SOPZ zOAKu{8g3}FLu*EO+$U{tTl5$Ua^@=;uy8}>I*+jAa^#{pzTUpNLIiP770J{|kyp6^ zET`f2k{@uJWEaD1FOJgR!xf_L@Hrb1H03CN{ssW&FD334_%QIN-TB;SKIjEbj>yxC*`VHe#Wwkl|L@DU3AQQ-P(Cd7xHf4QWGk zi75VG82QTmJ%KAH>ATeN5yk`7=n9FN%$f1$%bLq6KH9UhA9Qx4#qTJLZ4loP zV;uTVMa*qklBNcf5Ld8`nH=uJIMLr{c+>9u=MONQa==SFf5&{3J>d`ZFI)qc^c!Z= zdG>Otab@0r9fnL?Q4V)ZmhTqrH&#E#q0Zv2JFHv%WK9Chsdj}ENw^xMU)lAeW&`VX zEX?Ukf&jvbp&acAfx|XDJrNWDC{EtM8Mj<3^cC>hVqTLe8{#~<{z^(fJI}$G0~o5H})ZePw`0Gyh}dwSFNL-QHkv@pL#NH zm~J(H78quj6&7Tx75TF=CC<5Q%%s z*G+i!HzerAHW|w)d28_jx@@0bC_nnR?0g=ks9+erR8&nt}31#NIAX*O!eeW@2Ldj-p}Eb?Q_CO;@+vV zOGRW1)KoI-Hc@$pKy6TQgdlHeUhRNRa%=ccJ&mAWC8~qcvPT(%^A-owFPmtC zXP|ol^e9x1d8A619266AQ4D|rK%@ANs5P5>iu9`CM~sV?hr$*q1nT2pGtlcpRfMm# zKzz>ZPte%ZQIQ=A@FXAg>8gA29lB;EziH&S3G7R9%{aM|d;`9^-CleTx-GVOknmuD z)>E&`HM-7UZ-_VD!QK>@M(UGeLf2& zMOzE=(Osy@KB0Xo`zpQH?MC!-aYtC^%{QYUs3w-%udE9yX4U|bs*glxPamov%DGwm z^Qb8a(*De9)wn6%lXHaIjK z1)xibyRrm+9K#^fr{Lr_iA(CJrj1KU`dg0N=CrnGzoU>fjDBJzq2~@qI0kcQVJ0! z>n}PddG3D@DsrLZ8M{=cduqU?140GoLrT}2At`{M=&t?MAUQJWn5bRfX*c7}=tlkr z3gtdslrkfIJq(C`+HAZ?H9E)^y!%uHEC>4cC$*qBQpwAYGBuP3_v*KZC9==j{k!DI z#CZ4~*gDmdHA`MV*MMu%bMO$rS70DuUxRhRROVIL6xxbo|3Lu5H+H4*5BE9;)= z8=|4;lxzysZQ-;?=kuPSMg^Slm&SD6o&}nSsSu?mLw|gY`7sGh%BQB?r3+k%HSHeb z=k;&UcaQ-q_gc^tc{za1U>NjCjX$8X!UOfVkKgk$e}(JjGe?jj%NNm|4oSXdao4f>y5 z618gThc(G79DmyJ!xHI2P+5L%0da2UqB-x)o6!ue)i|5=ZA5wE@@zNa7&@@>H}s){ ze1o8vs70vEGdp25aLssBl1Q2g>g0cG3Zvva=Ccj%<|`xN-nPgYW+d?sVk0^7pr-2lg`DOSg z%ondQ%)%=nsE!W_G0Gf2>cN+5o1z_1*iB@|{yTfJa1% zO9ln>Hm!KIFq0K|U0TXFrFB5$7Y8D}a-Heqs2HP-a1P4oHCEfe&H5J3faS3nu z8HXcRS+1YUg$@vsXkqQ-2#7s5#!TkCsACe)rjFBe)Dg*EqsTE})&~6&yS5Mx!^1yT z#eH#pbLx6u?1YR267f01LeJgG+Z3$L7TrlgOgYvc+>``R@hW2^o+*gtqAMb=@W0*I ze67t0zJuFh$p&gUY_f^Q)|0TWyrOWwPUn6A&MDXLVKeDL5DdO@MjILV9QKDLOh;cJ z4Q5iyN_ev#v;q!s*6>-O1HFgy<-1PUQ&p>DfU}Nk$RscRj$6QKA-)Bi0e#rlidx0j zNTsuTE()ZkR$TN-<5`RtDU{ORB+i4qhg;78uQi(&es>Gx*LRtVBzQ;vHw3QJW`+qd zh=wMxtj@Wl3Gc%J9DM}-T#Dy&HK^;g%uVat&rjqE%7fxLHFGK&HXJ_XTsngc!gKdr z6y_j@asSe)sTS#fe|NLRR1R^&d*s3km2qW(#OT#B*=b$>h^Ec z+{=b}1?U0NVZ+*myTQ)ssNQy!MwHKxa8u^h5$(w$ync(#vNqxhReIQ(~aeA$TmRfaoSiTEX(Ntmy z=;%Ddrj^DS0_yoZ)sQp8?@S#0&}R2nNg@i>qfw$Qg%Pk|@3oG_<>t;O z2s)2JjUQc<39b^~odJh$Y78x+rc_#qd|bCXWGP!&ykn-GNWQ>!b7FspyrYN*kd2iO zDFhT*J)OGnT<)GwKi^w;;?Oz+0?kIBhic1snuA$Lys!QH8EllMJHn}4^m-*yE&|6@ z6anwVfHfU(o%6OhqTxe!#y@yfS>qsrNiHL@#BmRRt^f^|)}r!ZZar9qUy29O&W;=N zl4%!2sV5b_WFX%@3XX6OnU8yxL9U79aCc$+9r*7MHuFmF&}cEL<6CR}Vn_`+UWLBO z{Bg(>2%EOKHRbT6>Bs>I-P8N~;cX{+Sz4}dAt-q@4xt{~onkM@zEhW9G9^Hj5D;&i z@QBU%*lX-Ilr2S?w%TJTA)(82%l)vPVZ5Ry!FX?hr7L)sLd$~=m0+cop~F9xnQ#UY z&EFla!Xz-<6Frl={o0ACV2_1VpL|-G$_%pkC&WD$rQ|~2%G)NYHT4i3m*lAk9hND< zlqz&N`ISt5gaof%F3TBot44I436W(?>`7LZyzfl0CrL1fZJ@Q;^3R-eQj~%ty4PO= zQB~S$p|5wJ3^w0~UFteR5O%#k3l|JD`QfOIKtr7WM;ntF4iq0&N`1=pyL$aDXw>#( zhe_9%#LnC}Kd96QR_+NkI#TLFbN+DTF5wNn2e{)~2S~|xK*d{&$`b9tVYS(NIxBp7 z-U!WdiFLfrpb8|9It)M^z1Jq^rxuf?{k5saQ#CJXN!Es_?be6opck?I;=73SiOD%eqxyQv$5GGV~wr)ko|Y<-`m1hIYCw&U%BMNa(MEZi0)qVC>2$*iOc@QA_bmI zB3fSWWW#dF(eBqvC))LPt8$;L@Q$HJ2%yAF*}aB*$H9=l2d2e)0dRgN*O*0#CEF%facg`?%E?buOvefyKLfwG;Q0=KKA1=VK8{0=aouFZ3WE$b zHL>3hATmFX-Lk|Rn zX@mC^PZ+WUV};G3RF>s0?))cj!RZP*dG5Tmycm8wN=^O=u-1fhpev>aR2Mdg{&kL# zYNE?+%bYjLuH7-J^X5wzT2Y6*g*H*ZqX9CUNO)W&_(tg6<&wmPB;?2zRTTcHK7H~4 zw+V&|O4tU z+!oQOu-EXaZT>0r&0)FBD~uiYzjO7tnlcmPwm%pCOQ!{ExFbPWh2U=i6W*u3 zy$O^v6l(6EdRjzZOO#7z?8LH#`V~Ed4>nDl`y2hOkVGHR|1!uBv`bH^F2JsgwSc-7 z(%H@XkMo*3waiTln=*o>H946k!*J4A*n*|Jf*cT(I($33A{*S@&L%77QCj}Vq7}>V zosE>jr+i;OBO48lJ?aoZ-HZas0VU-sN-zZ4QCX1f-bMDdR`2+=So<&~NpEu%+XcGA zIiUqkyL|La9eKGP!%QOKJB?NOME366s#B0TmUBI&47z~dvs@(yNZYS-cqZxJ;~wi( ze>pVUCDc;)pIuRUQFI{vd*ctIZb(x^*6-@wyPf-?%mqJdYF0f~Z_d0DbC>Gmd=@<^ zM)ck-H~8#zdFfU&hC#Z=pSWJ(P|*O97c#W~(M z*sfArb6^VNb`vfeV(w->jbHirNc5(ld`Wei&4{~AUZZdB!?o(~BjC;vI#13ZS?>^j z4g=}X%F1~UAV|zuK9`aGul}Gh%QJ+)6%-T0w*-L2M)PdK*LuGIoENuS^<+TN{uC(c zZ@t%w*detC%1+tgK_vZgsTV(QQx}aMy(%(rrbCdc#5=2p&shz$+Y{{jfpk%peveH#XtQ@-t7qW#Z;hN2pkm_V#7~=8+$HGPT$Bjj(s6PK-)9%7yzJe`E1EakoXNkWP9gpLU+TJxRd%P^T6yPXj*pap}3SCA+^P&%vHf5h@P6} z_7MA^AB7O)vIWU67Fsz*^d`57I$XFvDlL^!b{=hzqgA%0#2aQR-&7{^={00-e6;> zmK+=O;Qa7bD?lHa`qJKHB_Ku6Md@1e#Tl5s+70AB>|^B^NsOx%dPf9+XG;6@^$?mtLvyJ)drHD_J;U(#6~hHLEi8x*a>)C#?PGKR~gUPjd^m?WVLTE#0-ZyvG7! z`!{333~P9^NZ1!$SbgyFMuW%%8q8bAYbde{nQxg$chS*Zq84dvSac=-#I_$#SW3RJ z`Y~Fhzw{u~uMKch^mMuX18ZKDQSkd>?U}e*$3&BP-^WzgF@lQ0*N7&MOS+IZq~z;& z*s}cRG0lOd-7UFtW&Gj1Kh}dodEWk(Qr-J?Y_2Sfgqba!fyBA@P#QEJ`qKpZ>(Of5 zRS^$%X!(qlt*f`M?*;QVfLK#=09FagxDqe~SuhOSdv}Wdi5<3Y zBjgp_=H|)yX|Ta5-x$LCTVSL;3)tu^n->zP*M#@p;8$EYfv(ovkrFB~UnsUy`U$^n z=dU`SFo!%mKlJMc*Su0p@D^6b8_)A)4u-94Zawf(S64tVKeodCM=wE-bgBjL6gYNW zahSoUz*+vRhPRk^{fSD+Q-F9+i9m$-7zFJAZ%V!9IZH5EFCpg#-dHY57$NRuz9SUC!8<18v^h#n%eFY8$u`Z0oL+UMDs}q;GMW1P#Ls>0FoZ zFw;Hy@O>2TQY&-qp;4UHwK&77teplHl#E-IvYrsw0E6r<|C}_FHx$mTBJSTu{0fog z<$mg94Z??NBEfL6611$P55E{)KkpS{a8onU?SmDN%GUmAEw6J2NkU?lG0oNjtNraj z`vHLkK}GPlm#l|aUl^VjaZcZ#k?S9%hGg{_&wqdm>_sZq(WI#um%B_0X};i~=Q!f7 zHTHgf_Ciw6y3<*?fcjFXi`WVN2Y_Q{o#W)FOS-BX0(Ht9xDbv${u{WxB@6X54fgL? z6BiMfmX?T@&VFX1k!x6Pwg)6ttv7W(&X%Tk`W^dcT?qTR7-;MkEEUDZ^r&%UAjSxX z#n`MMxyR}dS(uqsZJOu)tVCt4tNSd=_2Lh<^`?l{-N=Tvj03=RPS&xAgyD={uv3?6 z(6qE8n!(+1f09R(5~`eF!&n8-0k5|6$_24K$tpC>*RlWu3lCbP)BlKvI^cw2E3r13l+9NK4Z0$DnFzBQLO<{s|#I)qpj?@d;lTU`@DDvqw zQ@a%6fSL&BE~$7pK-J;J-pKxIjQd#0ax)Q$MEbs>MICFG`Q(+0g=6G75m*lke)d4w z%|V6lg=lC5)vrAk zPmTX3$u#a4=$L0HpT_a`DvcCXcIl%udk;x>c^4`tZjPVe56a!2IX5^;XO8RH_<|HVA=2f16PXMuBPv7pSc8q^oF@&!6l_bqg7m>jJOh@1Eh8a^6?G)Ka3vz5G8-icr zb)@OG4r)W=GHLkDx&0$lR zEwcR(MW%q~aT3^ePTaLWY_+u7TIXrH$!EWGpU!H0-U=+KZqei#A-v`8?&DvDfY1U5 z=KbF*S_-=6e|b8NML}UKtSZ(FTIJvzs)7`bISLgJYUkkGHN;zS4BB_a<1De-8%>yK zF2I%haz-8BvO$%U?JqYD`-}Dw2UhEj+K*B zMUW2xg3F;YT*X>HuJd)XNGyTR&JXyldTzVqdIk!{B3)Ys&1LB6O*d$(tDhq-T_s~o zBZ4&F8wvlX^8Xcp8DQwCgY+E6J4IXP4GwOLg?p{rVU5Rj_>+zM1xvdr1(-rRzi2me z#Pi^8uEPz&R_6afeB1uzeUA8R*?@V}@a;kgiG*u{PgV-7F!j(Dwl5NhsKGIFxP*b~ zqo617efqTW#D~Ce(`T-&NUonOE~EW)*&f`)A?&0e**)?h`P%L5G@QAMEkWL!K#;Jm zyD-yaCh-P}P=YVckN+C(ywH2gw7cKYI|ET8Qfn*12t5;ALt@{0zCk&R0bl+Tz0#%r zPHi>rtuc$p&^TJ7gA~-)e{JGeLdn1bFS-}3N*KRJjoi}aJAK^A?Y7Z4+_;nKkEe(g zQ6$_0aO7&TLfgrZTT^9x@PYMZ@MZVVB+QZZtK2)9JHNO6y7r0M95$~RI_LT63GWH7xjjdgKzm<1HqxsZ$^ zWq1hYju^M-ifcWpayo@Q}({ezEc}c3C_vgD&^o0Sx&#Fj`~+H^HK3?MkNVW!WvM? zx+qMM>fqlKhivE#J9d`g;|IgJe3Urv+e5$eDZ_yUnMM3e@wPne$rLmscrMe&&#`j!f&HRLlft7l;-y+0l43d~Fna7iV^qpy1KQ1@h)iWRmVp66NkE-6#p)2%iM{7{ zI_N6){f*2*t6nm9L+P6#rECVUHcyV0Xxc*Uy;OZYws@ZUWhljqxv7d?JDA4-; zD~B-=dAu1TtTm5W-&XblSKlZ25~5p|FD!Z`5z+EyTdG*aRz~)?TJC5zo~7-$0|zS{ zfJptAlXLF4;p3CoXz}w~ct(=V2o36;v%uJ82Kwt)iia!+qIt;|8W@LH_;_2!W4|za zoB|-Uzo)Uq(zk&)I!(IxJe$x;3m+rHMNEayr-eTEK>x>PVAqrNNkPORs0+iby9J-}3{vZMl8MRE7Z=ddU?~(TQdFIj+#dz`GJ{9o6M&|jFnD7@&0~gwcP$eqM z(>)xWz`y0)TtT+fi+ZnPFY%83DfNU3tN-aRo?9!iXJ?@j#3Yo3Z zA`mE0<9D~=fs?O(?UnqNRHNtNqoLog7BX*nun_q;Q08*>RF)Q>JHdZgh`F}T!QGlY z5u_?*!fsFKSv4D5D@rma>y_#?fiG#KprQYZ6O*SJ1SXlV4J@SIWg*ga&oW_rxyy4s zlW&Zt0&=RH2owAWTzCRmGFVUd{-tm5kPIBGk#62C?P+ZgTES0rl`ZfF_V2$ly6}kp z!1AzIP6Ze2)R9ZGH1aW^tQ?j8u&TY+0^giT7?da!z$pG!ef z2MKJamY>(ia0sF+DE~n%J(&PdXtq&P& ziF)NKo=fW2?(J-s=;3GUGJ-{@E3&d|=&!eGVtk2}sO6b@;RtcV%a0yeT!|!l3C~ESdp zjRSvjM#R)#%3^c#ja`U4t>JySEM#BsUJ4YZk?(n9<=)` z4hejh2g;KRW|B%l9d6X{{v;BkvK(ZW%1n<`p4^C{cj*K8SmsQ;EI2kvgU>ZNm04SM zUUH@EldAciZk1fQGrtX{#j=6^dG)5b?p`Dhf@CH#I3((?K2Cii^dLl8)e_N& z&1<}6>GB+09*7BN`!U)#BJL!;H6lT40FN&uUG{B_DZGyxj~myp$hPc2t?jh}O_! z1D3F|>qF z>NPV&d0f2Qq2Jnl&hEwRF;-uLsA40Mk(CD^P1B8x_!7G-XSYqtr~@ANnAXFtlKbd%|Bz&RSD_OAs;B-Ch@^yxh*`oStWP)`{Eq zFOLTRO}ARxz6gC*x-Pcoxohf_K`|w~sZ7ft7|N`8QdblqI8|A&`EJf?YYjud!Hk~0 zdW;rBiQvyWsuE0hNjsmETG-H5F~hW!34gegGzUN_M6_%7iqP?j7+l6d_e}doI zTNi^rc2Mdn2p4G4Z5hn#R;L&X>T??HgVm} zAaYo`4_JJMCbVhdaiHjL?9{ABn^b!U3p%q}9?Jkznu%VkV^j)2q2jq4;(}>=cf6q! zC%GX7vl7B=Vo_hCoP+B<>Yjrls%@+|#sLSQANyK@Y+G0yv@qIM%(z~k4NtMcq4$FM zx$u(*i7DfIS2dE7*8cIgUiCWEaKTJ2`kd8a-F7gTAMw>~K#5FbswWR2q*GWr$vXrp zVs+0I4`^u0?gpER%CsyQqUAr@9r+eYU=S6Xw*GbqdP%+nf-Hbu80ok1DSriT9RS4O zeqOUbl|B6VYAoj9sL%?3+3>!+Yvcg8HA~vcrk1r_y5Se`l(bIEMv^ zF>km2-rX zPltaX01%xWATH9(-ln`J=8GiQ;tiuk!hYZ%H#C%7O(Ts4=%kx}o>Hs1vKIUifFLRt;Cc7{W@~xYe9*yEj)S;LyYZZ%^p~Y{ zl|pc)q7y6s6@%0yUmP*8;PbVa*=<>7p%5t(2`X4Bjp4&Gi}<`q2~cxQPIBW0_0cCD z1LRAxG_s8A{A%il$Bhm6Izug&s9Eq8ce-IZEu8(a(M7bztOPa#YBY3=eW;DKOFs(!pP zd$5(GtE|4rYFR?3yoz;mRncOevW#W`eGc_ZCvS@4_x7J}u;kX5Nd8jAO8?d`;|r`M<^V3l7}W_` zx?xX3HOy=Po(BDi>kKWsu8yv3v@Ixz3~?2x(Djvb$4l zgep&3I=m4{1%+P1igLqg2xf}yI>fmaf9u&PYZyj<@pJ(aA+gjctNo@djuk5RI{?x{MoOiBHchaiDefCU!kHNLmtlevX&A; zyrV`jw&b<@!OChI^id8VL}77c7a16|r}7;9QsPZ#rrHO3LO(fDC<#98K2U=o`GKN> zmhI2}Ais0*l4ISy5-NK_SL8kqs+}YbW<2jiif8f_vb<=Xe-48OvWpYl(wHnvhBGHN z*N}NWX&SY)AgOQ!hiy+=l3>}#=nA4cEvjc8SgEq*#;V2sL~rkV9--@QW+$NtgYU_O zUZ&a4#HyO!Sf`$fXo0k+x3DX^kQcV5oX;k1l%4h$rgyh&kw+=!oe3j%P=v10|ilSR`AjW9%^t*oUB1PiTz0V+9GCS=f8S+!zsC zJub~XCZj3K#L{9ZFISV8hVaZ(oo5_+Z|d~4Mrb-W3&T#-(yUsv?7Q$Bxe(i32S$+; zUcOWan~(%uHn>b|sqVlIjS`V>*k8PzX?WPl9E~uwMQ^o6LheADl_v~AHf#IQ?9MqCs zF{{pr+Ywhq$fxM=Y+wEdr#sbDn+{5!wKFliMkQ`@JmB!%5I>WFYu4hMY#rV1fH;3K zTl~c)1ykK>_Nk8u#`sQz52mTVU-x@MUUK%f<-EKU5H-P^Erdbuy2Ufc3PY&`mxv>1 z(wQd8=>UFlrYl;fFe-4moihfYw|HQla5SH?xQlL*sB^VoblImwhLfO~*PIIca5X(T zyf3(^;g$TsCTpp_t05YsfF{6l>th;2siMoy)q8_mjd1`O17T?4#_p4PxEEOyk|5mI zEP%HeKBW0})W#yIlQ&`na@P~Bm9SPMn6X#Sv&s@c2!UBG*0ytR!J~?9*vsorbgF%fK2uR=xk{uSaJ;&d5s{5%61Tz2Xfsatjc9r1UAdGKc zL6Au%Ah(4Wf9D$29|B~u`6K2RgXigape!pNIbAZU@HXjyAyE+KRX+>C_XMF@ z{=e=@3i48L1)++Z1kCeEaI(A!(=Ep?jQM&eiqUY2#^OjJe)DY@0(Up&k5yH4a4&T;PA z+NHz8;tY0=JD(!O?LFEC3+!0h)zsB)P_HHoYI3a{`tQGsM;l}pHW5!`m|apa52urH z%E!}T(#zxA=udl<#vr&zBZN$V1Ls9zv{jrZFsQz(7f@z@Vb408xuxcJo3enmh`MUF z2bM@L#yF^(K?TUGfXp9yA|$^230~aIck0N8y})OtxH9hrcHAFN8w+DFg9PQ1E~0^4 zWAfcdjAa)o-3<)3OEyCiF=IIw7Q%A}W6C*DEA|U&w7FT+q|_@qWX$ z75uo_O3cz2A+-`(D*6O2$xxe{ioXnl_V@1frj{_}=Yui#Op=Yo?9Z}h^b-D9ChaI! z$mqU7Ee1cqUFKb`D`stA=Wmef%L#xG)H=nI5q4a^t{FKJM;%xJ8f#22KQ%WDkd_;H zb6<#$%M_Eih8eT&=uts=4c%Xw@{T~40R~^2(+UIraIZ3I4j9eg_;~FY0A2&0m7$og z-18aIrEfBfr|P*XL($ggQd=CeARpnJ$-O+?_)d?QD|u{(;aet|2aj)9!aB?$YrfU0 zhKLr(NElK;_sQ)v{_ps$9f3F zIZF=XHXhCA4)M8=MvN93fES#H%tV5puGN$OSFlgjBw-SpGJikiEHD8+>Txuk+HPd# zK7^0L2SNgdIY(h29stiaG4Kzw<&(V~n1WbQ_{M#ytv!pgZ|`0r?XfAR^-kQ@ll*{@ z6ZaFAJQdWze~E^cKfKo|bh-MLh_lH92%AJXM;i&K@j}uO-qgtKK&B-^#l%{bMDUC$39BK=7 z^Vj%Dq#Jeewv2S{@1)HIM2-}?A8LvJ0q1s96SdLm8wCsJr(+o!Y7DZG5i0#WfdLOK zmq&X-&2l3x#jb2y;q+7T=?KUBhc#$+D}8u&{cP|~U^6{+U9%IsB6N1uYhL`vGc~|p zS;M)mJ3M30Ov&xNXXGr(;De2U+SBTMzZ+=Dp?scdE0W`;H`ra4>Z25jy6s@AQSKoh z?nMqsfp>b7mdmBAsFzjk0k8Mt>(9l@zu>~Lk_a*fKA6;T@MvYD3}aF!R*y@`X%znB__}U#E?eZyU6ELD;=FNOWrQJZ-|$bFrX@w*+pcXo;lM$`=~<0uaDoyn(9mWvrc3yMg+%XK*Q3TV8;k%_O$Ii84 z!3p4td>V*L`&G<*+SKjacE0{EE7oh56I=f4xvdfL(+|z1n<-%3D~0}>_J*IcT4J=- zpy{;U@#5DB`mKk;wBU|615E0Q0hQg z&_LU&vmLR~i;$2?jl+2`=kezk=$TIeUj)9$&Wf~Cg2uK;L$l+wP@4#MS>(&?qZT5q zVpDC36*cpIBVF6}%dmvFGibBT=R9ITd>$(nIU4=|Fi4d1O(Nc^hY@;a1TP9&X4Zul z?0Z8kSb<*>aF)p!(r)aY92)mkkA4aOE)3V1uOsB{YNL8DL6I}5gt%yGME226Zi3#S zvO%kFJ)cEV_5y`W)6Ll?K>-#!sqg||m2M{weRSP3By{)Ak;pf$)yG`gjP24l&!<(| z2t!odB##3DM(}S203Ka3_b*s&Fl=7`2S#)oas8>`m#cHcQ(skg5&r=ZWF4<9_%eYcQzIta8t5TBJ1Y{6h`Ee?vZWp z=lXFnM+LM#7iZ21Tau4YJ(5IRPen&?5K3EN=Mv{$2bj@Q$KM0FQf>QoSeBn851vZ` zG6|8&kD;JF$m9vu>D4(c7}sAr1_iB)$1N!Uqqe8WP}7t`DTGm}z=h&G$TVCy{58)v z!W=;`VUx}0iXVIdCGwfN`$P_Uf_NBg;N!QO@MM%ju^i?5A9Nl#BtevI5l0WSohyhG5^gFqZ(zbWa!M`HzzlrT?#6f66HjcXLxB7YE9_Equ1^^|f8#ok4Lk$7> zB^OW1ppk#;-kfe!K2}vI)rQKZacsgXgP#1++G31FLP%&gLgd2mf#z0ry}(HfV+gPD zCCjJc-IceSAO>xTrdFpD2=|fd;rLVzBuGJ%;jKj#bQhG!nPPdfk50i;Q&tyEfau`G1 zyJsi>^AH4)yGeU6U}4->u?%ajl$D>F^2LePuv>J62JU;r~_%;+Nu2 zD<-8kffUf(7Xb6{Am^al+84?dQ4fh7YRsGmf8y%(VRP$$@f!^W+sRZ5*aP2TkCY?r z^(!P8SZm3qzDUZ9!QGlY;L))+L*l++gq_}-w!p(`#mh0OmbiQ|BzP>{ei1sS#PyT=#AkRJWetD|7FFll z@4=vu@lz~sxXJ-?Xhc`-kRHE8BY<;Lw_4d)rR0fio@w5T@yMz*Hz@jO6XgKBpL(bP~Lqwf*z!(Zz;p&|dwd*%T)Y*=7`H2*Mqj zGel)zSU!C6Njj@l_5{J%>Q{@?L)CWyTzS2=?G}>((aUkf_^<}S^)~Qxwb)w_XGfR2 zeBjHP9{HYCbaL|UP{nufi4)38MY;a}y`n8{g^CKo)Kj4W(sdC4bd4irw%l1R3Fpo@8$b+0MF&4&{v%rbW zNtS$N5op9~e*+HX;=XDKE`TU_i_#>inFH*{X z4iN=$ye<@?9pecJz+TTDQ8pYV+OZ9@82qa?Q#(hT;05==4^{K6GeT%6LB=Zx6JnEY zD4S8P(d$XBPXbE_R@gc!>ZeE06VBJ^fDLC~jb3O>C&;{@JW6SoL!LGw|G1UyFv93| z9DXA^tqaI>78Zp)UW&`M37=})#M0=3XTG3}?r|YB=C46&)t0gC z=@AK`>4crIJ)>HNt(QxY;i9QS>#Xe6aCxM+j)%8H17mlkG{>qpE}a*EJZ%@bbL26+ z!jUAUhbelM`L(FpeEZVN4q0^yxn0A;(RjMeG&r%!#gOM~e*5~OZnb!m0FCdd`5R!6 zN2+5ua1)J)=quTat^>ncYyQrFT3W>ZEdZEBDAPkWQH)K-rjL1EKtu}P%X2BL50Et zpHj9wHf&>kqU$|Zi16-}@t(J=Z^v@h%`(7#Dwra^Ws_+(X}si3W1O@M+k-Mf@3tbE zSMemGbBS`AT~MEmtNU-R-B+|YstgR(LHPDoEMQ~a2U&Xt*12Ys`W`~bniS5si^#j> zfl%gnKF0`jICyy%uE)JycTsTxUs36B1LV$4*!4{`6%}mb+{odjcMg{GVD|d81}P)2 z+1S4d8%XQ-R9q?N{R~(y236{YBReNG=K1vfv$j|-4Mmq2)b314YRYyvXwGo$$htDM zoJ();iD5_mjtQwHD4nNWKPlg9!>W_ z7c~}pVY8y=^AhYoAQPv{3^=f>rsx0(5!h zC&}zOAM#)$Wde%;r5x;)Ugqas3DBFTNdM-ioX@)ia6IZ~Z794SVB@ZcoZon~feCIM z!L&nV^bnz@srkrnPYZP z;#HLi?{B=bH|U)F3fA74%U2d|75M(=$lbA5EMO$|yJ5~(bwK-k!egQKg3ux~7yDnH zJP@+`+kJf`-NP+j!*T{lORB{26KZYN!lNM|p=p?X9L{O&5GTUsV5FuSN?tXf`3Q%c z2yp~CB-UzGHJlv%_(+p;)RNgnFmDbeswy~<0FOPMB96#`>+Z*Se&At11MHTTBd#2o zIeK|2Oyz2{d+8Ocm#uA9w9yqcHK#RbHP9BG&XRqv5#P&yWA-Q;;K+22{+jPV2VKW4 zblgQHXL$T_2d!)5w`PqD#yhPWmrmrqQj#C=sN3sW5U^wh=O?JT7_`+?>#Jz#r9H}$ zO_hxQ>tFVY3~8$f7<213J{=gMkbdHoY&)?bgw~KqcugQZNGto}bq=^7LpYykg1 z0Kg&*z|xO#bNP;#SViHw$`5HwFOhh=>(_}oJ($0t8GEQQM{rUI`(v5wucM@`znvMB z2SzvrlfO3vQWC$ML6{5^&ctl+hfY}dInFY|VQiHJHm%hE>l)6{f(<3(bX_P+d@*>) z49H5CjaLdwcui(vxvXZo<||0|vXb|Nv?4<3&W(uyf)KCqS?`~%qmfV=QBCm;v~B%u zTWqi~w2kURuT7T?O|`EdHK2V`RUp3ge;8}8fw61ye`kNHMJKo=UcR&@1?3fUv2OHlZyx1`f{zt%vL-YIyoVsV~6OdKN@=0iw!BW(L=RE}^ z?q$QWQb(Fse&S#TGFAFEDc>wrU%VyINgu#zk><^VlU(K?kp_3xb=0A}e#Xy&nd!Lv zIn$k_O)L#rL-%MGT-`r4G~%h16H_$+aMBy!Qw@5HjhLpF9Dff)v+2^~@Lmy8p-S0q zhW}|pY4y+szyo;b#Jcih6WHHI5zYCFVIPxfoltgGooe_xHwIdub^SYV-VOWk9Ggdd z>_HY~Qh8xyi98O#?0RWJ63q4utRxDSj*c>VZ68}0ribBooE@qs6O6x9HK@==9RN*L z^WJ|hdwZRmnaHOh@j^Q5@mIiO@|zIUOC!40EJMd5u|=-wj18YWqCd^aead^XHMb!c z`Cq}e!7>W2lp|9~?zESW_s)(XTweoB%-H}(TUO5N)m7T3Sshsm#zIY!rZj6i|JxGO zCGbVAcVj6PMSWXW%C{Qjq8SV#eO4kO1_6%n@$-KfP%q_fGn<8d`Q9$tuxlEJlE}5^ z=)ROVT7m$GL{L2OfbfB(MLP8Aa-?YigB(O2S5!t{~j_HaCHIGb^k>*>OCda&s z8%WgAwrL_t$L31USO)%AC{nq9Z z5ur#jXPTVvh4OzdoM4J~kqA|DXX?UW*#(e*pyDIdROYZvmt~3W7>;Vj1T+>YU-_}h1uRM!JJvW~ij^>DxH7YIa&wfz@5HA|Bn#RA zoECs%{gQM=*xHjVhIKROA4d&bd%{1S_9%5@ifPS3>&S^J@gMB9b{vHVRi_Ap&y^6agj+)`o@n_L~(#h;c4E!_8f0NKL6s z0j8$@Kn9f^5soF zy7s7=*k8{bcPDj7y8xv!FB!!;W>*b)K#*G9s+*{`}#fS?O7LW_XhXSsq%CSYmZ@WVnSm&{tTin zC{=ZH=Brz$(3d=`?QB*>B?pmUKGN{X4UmU9}?pd3B92=sq=&j9~3Dv231al)itNwR1Db6>AEm_(K+F^KfX!^4&)Sr(>3f;+_a@A?V-s>dpkLSYZDoE3X z{LP;*jtLN8CRs=LZl&(hs4uT{1t_8ZdVKhnn?H`o3--4o->Yj-r57%y8OY?iD^7X4zL+P{6xlV9%f{V2oF-Wgy8QGTZ^>5k4${O3pti49NK= zru7wua^q@_xZj5F^ZVQRh){Yrk6h=;C5cS!vj)D13-FCl{9IQSBbBSYNA%TBWbe_vb{N$Hcmy%uvps*Ev3>tU3u(Shte z8sO92Cx@Z-s5rgW+AR;>itt>ytcjtjw?(A8BPfa-Qd))!1+n6dgdJD=BkD054AD*> zIIiyg|68QPLH~_rssUF_mRJ#Lb3c$vaeV7ZrP+@Xh{S5D$M)gh9SkAn zt6u@8&3~5stO`9c^9<*mQ*(H^!g}Ukg5`I*f3C>Hm6ua*{D%G@-EjJ=WL>iTf2ED( zeaqO#fLj8?P#ir`8q-~Qiu~Vi6f=Hy(qFLvlqKgh2EeCC`T0vs>}9KlZqo$TME^k#?{L(vs{yHqSw?NAcbjs^7^ccS3shj553$qN} z)#u?F&-rL8Df6UX-CW<{gpuTk@a?U7; z@Yk~B^F~z>G;s9|32}3blTl^(z4=$HmG3zxQUS*__Wr^AdX@eqk=k1&6Js@gZbeQr zz&z+0Df1j08PN;OOa1KGnDk4TPGf~}Q&$05)h|B9|0wRhrvZ+38pw5M^xs+SVb z+#q5D2~3QzE>B&1$%&PM7}`O%S~qs7RCL3YPunlQKlY?*}~+=)^kbp z9FGV~y*lB+?sW)XLde1bG0c&uolkB=wrCo&X>1#7ho8mO85;o#nQ@m!E7U!)rux`C zsvzUWky}uDBF~`Dtd4|j6)>1{@&))2Sb%x+-tS2sSHzVOG`}d;buBiS>9x2j*O9L9 z9&IQ-GBNpCQi=G6(ULl2u71NK6H%_PaXyB&@E&~G+>chMSf1dL5DFh544Fof!TD75 zukY|2%_kKo^U}>^M3~!eoz{JUv$Al%<66x<0Kz+-{V`*2*X9}YuJ0xGct?Ixzt<+4 zN;O?PdTXh1C+Cz)K^xO2QzJ)4e_<*i1mH2s)ozq3THWwz6%y?#1$ts+|NP<`T!@Wc z=PAC;SoKST#o%bGAr1@c0|MD55}fje4pHx5+~eA?Vr5n&Cs!O&MSwmL?IOefk7wZz z#unZv11MuUI3lxz(b0>HmvgZ?77oa^d!uO&shFL`*YB7C>3*;pNc;pWJJ|3TfTyFJ z>8EaVxDLAo&=?<4P|gBX$u0@w}qR0>66g(lc0LCHAlxgj1>Ql3;f%syVtC` z;I;x*-xH46>3(o>|9xNu?0K-$#TVE_Qh4W_Y?~ZoO*8~D8@pJQsa8?ZpeCVV>05lF zT-UFA5%(;%pnHdTnbMUgNJG60(EPtc~^JU_9R9BudiJDjD9pYPU(- ziaf{5Y*ROwFE9IYVJr=~xV^)rztl*uH;7jrv`o||Xi~th$d;8ytqNdecQC~I`rkw# zri<%1ulAX1y{;aUh=_TE#YZY@vy9j$dn`J7bdv5oi1ophDj^g5tCPWCkm`>2B&eH? z+E9Tq23PawHVj@*_a6`wWW*OYl3ah>l(n^2Ycp}%l9vvj;2j=%AZy|ti_|(-LP=PW z{>BetIu%ADqnXc!zhgQL6ZohjK&_)BFv#8G|E*kHvQmRc0k(7TObudi%7QK*h;=N- zPu@|2MnEeQaAyP$&HiO6?%{#DIR@}%{eRSCVOMY5k-`eF%?C_u#1)z!oZPP_;l~)7 z8{BQtqcwo4K=?TfWOv)>rG`RqV1o)4o!lS*+oE5cR7_c;Z{Dz*Kz%@<2b35K`^=w} z;j?8vX1*1Iu*>c~mDs2;GGkX{7_lW2zWkslrr`YTvW>l$>XTLO2M%5G*;Ueyalk5gA2?hlig7P9Ce1b3t zQp>F-rlwU?lnsT}EX6?C1!l^USXh!H_IIxKQ^Teu45zQv!!n0aM?03yY1Af#PfRyn z_c`jwA4%mu@ZDRD;6*uA|Hkrnjx)pJsp}D2W-OJhQPqdjRWx{E50Eg*DS2a2#bK_f z&|S)rKWFO^gZm1Yu|@Q%vx&Pj8JqAnNTW6^326jUvoZwzl4o<|+$-RDv=IvS;p8Ect(+P2 z2oIC?{6D3!75nZ(FkR$xUfVn82&C|i{=aRB5 z>+6f1d;p%UA+Zy#AW?*M=!{Pt2_m2fy~f9Cj`0i_{8!_B_8kYA6dQsHXVkAi3SzG= z`w#zU(-U76Nk0j*HqLmGUiCMU9)}$!um7eU{R{9yXHn<=Tr<`=qLTjRmlMvXDvzqv zcRR>5ROoxg%eelCaBq14&r??VEiELKFWZUwkmMe+9Ns)#&3!hI%g@So`yHcYIv#n6 zYz;ZqOhMG~jUPS_P*SEKe2|~>@Y2-1hEPzic6J54vic@8)Md}1_Q59#YrYWsIvsCX zziN;Kjm7JDtU>7>ME}?V@N;+LMF8*=bmQ(ar{Kku@cW4QC>NCFPmy>Q5 zru#OVP3vekUbp)hBz)6^<5KwV+j>Mql!ln6r7cEr;0}mXPf|qq8BmO7s^Cc}wBbz1 ztYu`iOVTmhNS!adAbi$hN?B0YqZ(mR*%$7 zGW&rvc8>>(zw^;S2__PH;wh}18-`tI)fo!`zew;$R?KT)N7I<^7R@W84fO*I8q?zx zti5YFQB@xN(*hH{(r!~a1&PysNU|M8T1QWmpO!ZQEC6~oLU*Py^gLz*!()Q zS)%BRksz@WA2)}?LGC@?qrnP+4i$Sc%^iu z3emh?(fh`!R9JMfTppu`1-1Y?2;oC!0;|Xz-y>@|jil;h$LdN$w@KxD6-M_Mdb2yJ zqG7D|gO0!x)jLmfXJmRpSwKXXQ8Ptn$KKDy=zdm^xJfx8i=1wes}G1{{33asZop8p z1hP&OzqyJ9@xq4xnvx5>!?&$Jv^WK@Y+VNZdsTskfa48$gIo@(UK<0aqOI*{sPLLV zjZ%bkAKI4700Us$h>v)br!>W7e{yUN^Z2`n`cvJ{nfR}h10;nK*%W2yJgDIbz;CB< ztqR4irc}DoA?#3&$z}`@6h-W{-XqN<=zo|yNYD=^e%$2UoG?d#0s2qv!MXzOPtj?I zHG|rSr6j{(7tY|1#|yic>`YP+{3x-YFR8P(OXX*D^_eTLN$s7NGITm)6K3oe&0ZF$cm=>dug3x2D?AA7ionMum3`C4gggXlkYe6 zu06JKt`-={fwV(Hc#lthPH~ z@KQw$+{;ufNN9Lk^uaBC>ryPC3y}-T$vkz{0#m(It=T#Hbw41nQ7Vh?{Sz5SW$zH} zA)nA)4Ya?OEt3IgU0)foJP{>iq=U909@ObO<^_N>|11 z^``NLUaY7vp0b+b8ZMQ9NZ~H*>?OGt(5T+o`TrLpwhQEKe#8rsXVGG9dGeCrdog(? z!{2>raS|2G#-A!VeS9-`vL~_Ss_=;c!V7}@+GkdO8%Pc^g}LGQ;&c|q47##N>q4Z4 zVTK!0#@RBzmfs>nHRr;qH3iaqYsgM|+n0uE|FiLGnkWXxEzdmZVV6sv?twG-to`gM z?|0tiq=-49NX_qO2nW*CBF+i>*2$)_qUl!SQG{uVS#tfAs-CM|ORI92Svzt$7wIV- z7RnPWvm-i|TR0bK69tS0laGXat)~cVXKQNsylT)`VMxuK_R<>U)1*j$PpES3jIon% z_1g?bqAn^`J|L6(iDv`Z__y@H9Ubz(S@#FXxuz(DX!Ix~Su031eXSnoo1?nIglyUl zI8e%Mj3h$pRNWb6B;SIN;qEVc4y!jdjOCF+%JsH@@zA~pj1ONlWI(+(@!Hd5ZMpyc z(FXC*-`!@eGCHJbzoR&=v+y~h(Q;ukemS1NDz0qtnJzfija!vQvGqJHx01i1gZ>6k zVYLZ8$w5+E!A$mvb@->BzLE0LQai8xr*G2L#@Vhi^MpQCXu%(-_czX?&w4wdHj?Wv z-SzwQp(!AOG+Eh|gSnmcD38bJBEHaBBAW0Xb=n3rqHL1fx-!56zY)K9MjnfP5)@%viw ztKk-K(4M;)D|cq2n2I*BW*)2|3nR=}<6I&u?>jH`KnDUrTYu9TFbDUJi$hKZ@4JB- z>us((P8_m{mJ6wWf<&>8S!5KaOV`p%8=h(fH+N7G_fAOv2}Cz@SnyiX`O&#co(^MK* z$ayPh-o^HXhQqBHdPY)s;gj7+9|h3OsEpE&C%qhOf?tqmq!UpyS@_bTqC~wby?Db& zDi(5=un1NjO7Q8-Z6bV|(gn56NYL(-s=SFn@-P0NezELBswLgAIwYKBbvAUAXe6_x zW3prr64SA%dUz@C%QG3zo4R0%?z?b1GLr!(Qiq;<)u#`#gEsWYB0)d*11E3RrBCQ2 zinB)>lErUHc##20I_oUdUJ$NhTRKzz{t@(rIj*zA)pu#87KUV9)4!)+9@jH3{q!_Y!g8yEuw=$8c@Vbptv>U!X{OuHn^$l3%X$y| zN)Sd~lW(=fk(^($=WvmvNvC(HeCbbew^{}t{!O}tp%uxBRIm|V+^AhHPRbM{t8Kx) z|Nof%7&N{wO+p0I4!kYSf|9xd#Lh1I>p)50^4t4(1cXTLROWc4x9yCQN${cDbvdkL zeMPD*fSURpYt!7v_exY{|m4I5N;P5dVn7`S2oR};X$KfRaGAuD}d@w#z=!9oE75yEawztT=+Jl@$KIE!G-!|i|JG*s8b}fF<_eP}y;S7Q9 ze-`Ed>OQ5}_lx&I;PIRqwxF}}oRhuT*w2fcNVeS5%<4n1TFK~p`)z@v{W^($s=h^K zo=8UJF>ZfP7JSCBrhW2r*tVY}9?igdFBUYRZ7rOGhe<=%F6u~+-C|mH;RdT3>&)!>slZjX9+~l`4Jy$J0W!2@jmFq z@C1G5C4e2x)}hTWbMRm=Lx;>2a$$hI_ZOr^{Q1*RprVFRlYMQbn^wTnva*?J z|H$aQ2Pq=06;cCleMLT7r8=x0G3$sK>zixkbRaizMgEE%;sby3;|awaI@lz+GP%3f zA1ul88~($a@{NYJ6-WXgz))7v)!IWr)9xGFTaM(f4TsCxzz)f-{)PGA!u+_SZ3^{K ze_Ff1#hhzR1i3Xpqq{5EFYI=*MzX*T4kP2-9EwRNzDM?LXO|T?7G$PX{i~H}-J(Q^pMxLhL+K%@ir_M89qnT*PH( z;5c7L0-}BTmwHFtnBrPg6BA@=gAD2Gn|r(*cX8#E<-F8KNF5m%Md9>D1VXF=I3N+^ zKrXsbf%|cBiKYs1<1PJZfW~o?St)Q%3-bW^=R9@Wo@|C#2B9YF;x&RR=rwKke#v|3 ziB>O^w(e3@I#n7rc^MQlgwxE)vp2jMcGB&TCQ`6Z$G2jE1{^Z1{xCVTXPo$e`W%G_ z>cwo1YdetGXzq0g%w3SCh6w}7v%MOy)ltikd!xOa*c5eL#uipgFd}P@k7bSzNahBV zg$)o&wP4q!6eEAsbB(1jL#B)rr8Q?POgfc6oizp$9Ii{YKa(+~f2D|t`u?JCj|L6| zlsM1~MzdlsvxQ@}idhJCb=-an%V%1?h~!=>x4I;k{Lb}?R^hwJaa4wI`%7+aS%>W_ zh5-5zo-x`r{M#BJaZw zbMCCxWHM(L-v{qn>Vi=B^HzSp;mZ*cNDMm)_KNNd*}#hU%4xt+2&>K*uPZ6iCCVX%zbKp#oTfbn}3ug5nG zQ-A&I4h-v*U4w>^@zz=mIhg7=RgMsh*>8-h*LREi(ikb*i5y4>uyJ+&bGNc9MNn16 zM6T!e3_`p53NfMWOj_P16r!x?U!aCnWkHqV85f_dn}2BQ3JfHiq18Xbe(uiqu=I|@QO|-D$On`G-0(yLudIjLgt24<}noiI|%+s}i$5vJ{znNJ1=WAFFCvEay!Tzww zU8wh$Gj9?f+b8y_C)}gr`4}~|VLMpd?y+utl^kLwX2G%wUzMwf`PuT%{oqz%D3QSl zx=-7H!t&}(d-{*1ax%jdtvQUEDZa8PF2cv=d4yj7zg7^4NmXx@`i4ygJCSQL7c-alhuTeJ%zdyV@9z8=-7xrx=`-dCwUfi?61vpG7 zo)PPh*vo$@=d3D`qVESBCfeXdh;GM`cJ%Wr+4#2a6w)mF=X$EkV~;C>#BXu}Fd%ct zc6AMRSU--0j{1A6h#7li3^k6I$BzLWAA&V%}|-Nu4S0 znfxxse)C$Oe`Ltyx9VvF{XTDib_yd!-9}zM$USEVCjfB2NB6%xS61}!a0ypP5mO>9`6^} zm9(kkOcKX<6Ky+2Ydg0>+JK?juO@Fln!?RwnZ^Y;r;r5tVo?%G3Nk zuy%4DL2WXq4CWX#G(u&y0)J`lCSnhWpCmLuY06uQj)9Sy>V@5Pm0oI#wQ?<%9uh6Z zj0btO($pE|+Q`V#JRKJ-1FP9A?25IjIPKJ~SI%UdJ++&Who3q3BF}5U0~s?uY1F&K z=Qy+MAR)0L%(kGS<9Vny#{XJ{Nh>|_0l7~WmsX~&xr<2pI~lBnk!>wc7s+<`hp4K+ zN{Rgp9c8W8SAlhF6fFla%-Uq6Q7|A!vSzn`XQillPsdXjLy%eVp4J|%^K9uMc*q5#DQ;6tqWh`K+F85xN=`w zw6l54%KTpg1uRpQ_~S29DqXgwSmZ@u*@rD?Md85q)t1RAwB-{u)da)bm=|TnynK64 ztUryix6v3^zqB_^X9LNWoXM!IsC*S}*<-j(TlbSaG7Sc2HCGbFfo1sc-F0`*cOnuc zH@GmSS4$F&GpfQd1ZY2|_Kg~!ZIS%(zAWGn>!NYDAotQ&&w4L6hN)ssw*1=x3?x4K zJGcgfgao0}fPURGJ+JqM(MRoKGt66?BKys#x`x;w*wWS?HSc9TV+BDwAb37{r+FUK zPnnE;7rtstlHLF*{~=U}36C7(vNtZhe2F}hCI z4h9be?cei_l-S%EpZ>YdrR~56R<4As%kuw0ds2l!IAkDX1KR%{YYNRQdc9@IF9*ry zW_ZH2NZFlyo3Zt>sz96g@5}0eG5pLeYwQa7uXPt7PNzOmm9d6Tj|_H2U9T7f|A^?t z64x_7SNWb(pui^uj*Sb7}kvH9h+NpoBb6{JE%}jzZx>(q?-VU6*vs*}d ztI*O2dubKE6WmQaYwB_r#7Xm+QKBGJ>GNq?;+HC8F{h1h=T-(ft_KkJH+QxT$Jd+i$s!f`W1f@7a^MBEZ(UKyIZW3aJwWw;7m*C%?qW-a+|{1P(R;=jeA+2H3{y9tB4l7DED^ z1o)|t_%f-64Ds*WuZ>9mdJG~$C(?OaLiu(gt-3M9LV8WsG3l;js{F2|`mybEe$j+Z z)$3pfH?}k1>e1X`%+*BuT2i41QSul89$r~-Z%|Xig}1WjR9CwYu{0eJP{a}qFf1yC z>~~WtM&5}qQvY6m2wiyrd>$IalW#SQIVSJ_gKrKO<&Bupdd*`Ta-}t3K-t?V}$zhcKs{B=YbR58xWG7}U0P~^6UmX@kb*OOK< zP3oTuew9YuL-dvXY^_E}E;)S-2mRPewj+lY5yw)fOR6fOGJV*(5
+V(pKydJ?O5bofWxyI?n_~c5-R}*IhbZLHDN-goqL!QnL_AS~A!0fgHVr&tRyOPQCPiLT2!!h@`9UD8uw2&KR2U{nKxCjvGSQU3M|2L0Z=Oiy;W=n<8Y=qq(*spG}O3iW-D6ozwJxHvGu| z2irC&yO07@^EyXH50#i-Ke7(J=PPC8$b8IxBjmKNnbp)IU>mA(p1$q_>Ttu53S96- zWvYS>m$b+M!PK5s##RLjYDk+zc_IM8c_7j8IOB@ERy?u3N)iYp?R8Im!pO=2%hA)e z2P=?Y=79y>Et=crw>W8;Sifi4kuZT=hmQ@P%wOR3?Q$V}(r3IP_qGpW6qvt^YswY( zLcio>EpiQuRh`p7i#4+^GHher4H7n)Yo`E$CYYIJup|ygd@IMxK}s8y_L_BBu`n=D z!mC&EnSuSOi__Gk_`3>t7XV?jh z@bHJu?F{!Uhsrcm+@DVJL%Xw@pW0M?t7(M#bJkl}m~#Y6DRLos`@_QV#NwL6mN zK_m`%_Rg7|i$1ygsGQ)=;m7$Mlui;)mVT^;hi>;|3-$$&dV9GT_+K@`7v{O8a3Y6T zt<#;>L;{h_Uw&i-znl2>%S0_j(iv>HF>mHckVOLcG5Z$x(|M88v^h>46fYq_i;Ok{ z83Xw?`GM(HA>>U^ldlzu{F;$|b})yp4DH18&={QRWF1@HqUim19c~%MhR%&CtH-Uu z@C)Nf(=Vk%-euuM_u+}5Bg&>pq9?w*cFAv`#v!}w#v`7h_y)4PDx~2KE;k(S225DQY+O z<%9tF1?IO2nzF*Ui$k$bWM?0F$OJm#;Hkq8I9s`EO*emXrn8=v@3oox~z3C=~B!0iOU_z6FWy5g%G2b&j5is;4e-eTC8)&V8T5SEidLyPpMN49vR3u&j+J#UQ(X00l8fXF zjy~>m`vMA%xK)tUl_3Nfr+TJPC(8W}ErM&7LmyHwZ4tA|y-U0A3wnXqr97-lBLNEN zLw;K5rdiP~*_r|9GAZ-TxK@1A1Sb?tzSx1nuNd$M-C_8e;psoa7legWc$@f|)Y3#= zVg`L(6Gfx_L$%TpRj~~3nI9)?BZ=Mcg%ENe1<1C@d$Y_gNf!HKL5in&gH)9ce*lf~ zX^_p`!`tp89#xp5(urI|O`q4ybZ~QrqnR0GBcB&YC`kGi+}M;}O1^T1{)k`b#vVn^ z4oOf6ctsj7b_^Gv%Sd4&L)N<%9|w%|B{akt57$#q!g)cRgIV^ltOLy#X6)ANII<4B zhOZ%K7)!OoR?yp6KzyQjB=}G302%E<0|NC02mI%rV*N{RJAInI{N*H~*ko;t-3>LJ zv+VdV_bHBmU|1UA}_Tp_)u{++E_%LH7d|WDQMefe$}bs9gTZFD=hGC*44bD*wmPsU*j%+$c&z)j^AFSCio z-JI(7<4@*K2aNZUOkXmP+?XZ#ZNoNMk7{z0UXC+}=oPtJ4J~Qbbbm7nL%*W@3OqJk zjbJRD6~|!UAvn@%b4;83cRoBF--_mlA}%_@lz z5DXY44EGCFXz6>Gz!-A^UjNj$_MfAM-HZatAQUUh@oL(xfDiwFX#Mwp(yRRup8jt+ zL8e1c!gYIyZMRNxsRqjXJmlBHvU!K9l0mz%H(A$;APh+ zoCuk_6yrTNwuH|h2o5oxQJS#(V&PrQ7aN3}+q;as^bzcT<3TK>(QsX!+ZEEQfqVq9 zW*tno;7niuipIAruY{EQ;iUQ0Fczhp0LYWq$QH~c~ zbv;9W;&(b{*76(Zg{R)W?zM1s4=SN}3HRhip%Y@&Br(%qBg$WT(g)HJcisE5!T78H$HQ&B1kVhOhE5JDkG?>uBt z?F15exiBk3!qf$mzWV2@O%5jD_P0xeQGKA*N}S9as`S50B;a?Q7{wa$L2mX1nuJK$ z%6pn+D+<0`o7@?CG#}_q=`)s2ePjSlswg+V1Ib%qB@6R)Q-PGcPUK;@k-x znWa}sIg?Shul0KUkyTmU%=IS1Pg)Ei;dY1 z)-ATqfV}W&&tr!XMm0&e)`%$22f~C4b&%E9qOarjI5~>mrtNdO(o8xf45j9wGan)T z8&c8CHSCdzdqJ*!8F|5+QpeXmTAg__#owQMh9;xX0d}n5=|u(Ps~HpKAAEXEPtRNS zSz@cR5^Gf}JNNr#S_^(pJq9#sf`0$jVB0}$B2bX<3G@_$J1itVmzjY|E%r#XnG}bi z#Ph17-{G9A;AY2Jt5*vRwHZgbXB($Q8_e#=;&*{h$nH_rt$Q(#Rj55n|JmvcOP)d`+q|3_G1| zpm2m-X>09o-0*bARO5T@-!*Vs)W{LRzA8?zCP0KxmFuEG8eQboPs zj)*gv{nkd-JWZ!@Y91{3h11;Qa-s6>fEEqgvm+j>3ZdJ=%BtXNjiz^Z zEV2#~SoyhJ3(Uwa^k&`J$0aw(>Fxq@3AO-Jz?_n{`CN)FWlRw1d+g>C?y-L!=Sz3< zR;jD%a9X0+$4I(O8Lk4HkOfN_6;7?Jbf>`@Y%M%D_GbO}6o@)BQI z*zSQc4!CBrK?lDq?>&o^T#4ZV(S1FU%&UQwh#CdbT8`C`HIu)0zqujzOsz;B8g95A z)s<7*{BsN}LkH$nfOWS!K8Hq{Z`j(pg-mWK zBtOOweA)|;{pi5cicq2}nY~^S6%fxLRJyz;fBAddyK-AaKG2a3#TSFh2IdRQphugU zg?4gstB0?^1OKpEVY8_ir||FLjdPS~q|{J*x>_{O^vq>gPosPK{~-$F2&Zl;=-0G{ zE>fja6RcXiS1_J?XiV05@QD#*sW>+%Pcd1tL8jK1fs4YJhPIF&81$BxUHDSKrDts< zJ$CpLz0F9$s%otxpP`JlwCqQtWTDWs6QiW0$4B}TvvaIDiQ9O92fy|Eu|xlxW=rIb zI-BLENxU+8z;s3BUTCL=_aW46!5(#!eQuWDcPrM6HF2xuw4MH(B#Vya&ReVy(w{2B zUmCR)j1_thy{!C3mPq=1rJvJtcEnjQqGQ4ftfl}zca6K1dyG3X?5O5(C#)V#m6*iaxy5ecoq{FE(K<;;}Z{8QxB!Z=?z0Mm}R5Z_q9K*1io zvx3}tt!2U7d`OK#((UMlhhPF}Xn6%Tkblgp3$UQ0OW1M})(j3%CxUQi$XIW^2s%pXo4ePU5{K&9A@+h%`pX&b7J-ZM;$tCx&?zlVXYb-7z$`XhD6izRi6@V=tgC zIV=xw?4kwz_b-MWT%Tz>XgCN76peT<>{pDgn~av-r7))4jjYkkKyBERhAs(eF1o04 z?jjHl`*)NYBB4Q}kqtj_1ErPp> z^DolIwzKrayB4lg9?ScQjOZ5Eu$HA!!MtA7@a_9zQI6z<^7kP)SO4m1zj5w9hQC?% z*Dk3}<`=uT!o=u)*p}7GX7i!4W`Tqxf-3-;MP#138Q^+e7+!?&H<_GqpM0LtM?;{n z5$Z{oLQQd9v;I#DO0_`L4=s9t{Ld?b!cvEo4CphXIDs37n}%*P2X<#zvb8QXZ+GOE z`?2gRI}zEZP_C&H>T3eXQzdpqK&D_m!uJso$X+#pQ6lTk6l0&~ns`~WDIYwjQ2-f{ z7WE4V#9P@HE#Y%szSzu1^9s2i$i$?TyVlsqE#|jjBOxR!ZYZzl#5r`qQT-OKiiHpW zc8~?;dL{S>WGJeaVZ<3y@&JHZAlw%-D_UZ|o9q`he9%NmTP%-?qUlEI80#Dc)AK4& z#-{*&Ia#Iv@I)q0t|F&!1rRw!gp|pb;}k13tQlSxY_0U`bG-u=r2;GRVZ2ZVbk@K# zj=*f#>Dmm>lPx=<7J?m9Syv2!*KzIa`u{%7@A&AJkBd@$2n1G;8aVXd4AlPbN3=pV z>y&=PZI^QbN6?;mD71p_XOK%Dm&kN;LcX!_@^JU}Asf2mQ^eHI!K&k8L0_DSzS1)$%vGotI%SCs>k0(^>G^P}j+!W0Pz zMugfeSVUH!X}PRkT0mT>LH zkcM8s&P(32ux&##xP>-{yWa#D)f7&4R(zknGlAmL#+S2%Pm7x-j^TO%APjc%F<0#z z>%{w*+)-q>pk1{xI~TrXtleLme?dNhhvXc90Un?olv-?^HcO)!wdH7dU>?4Y@z^l~ zsasqFwdn-*HjKl@oeJW*Q(b6W4#$eW<*;{ry|454ff=7e2z;fnYyR^v{nVMYq=uNA zV2+TAhIi_c9pa5DJ1q2h0snJ9gxw^|RIw?`fAfuSfsEWDWxvFO=X(`;(1N z`WE5UI(eRgoG&B#?!fuYtv#=VWzN*5SU?}tL6?+J$bpFfcWx%(V^r)|}+iR_VUm4NKAf31vC( zk{?*u*#oBOYz(zNM@GLDB7LDxQfy?RpC3o)Z~WNti67O0DqXReo@*kpk(bBJws~Nn zA&8D0P@;m#6g>4r*MOX zNfgBPc-E`eoiXy~jDW2X#QlI?gkE4s?uF#~&ePP#t@@R{bcGk-JUqUycxqd)d3Mo+ zF*%onr6x5kNsfXkl*Q6BYS(zDlu*E#q_Kr9Hiw~5%}d^PpfN#b_Q+$Di&#Y(&7KHW z;fVH`w0-QTZN#RZn5*r#oEQvWF{Ay%lO3u>L7+9-wE|C!{^IO&$uJC$cZCWEXJ9pZ z$~Mkm{afO(c{Fp&h_CgT-~P9r8|c!5U$HWtt!URqJQ}BdBa%=eN*N!Cn3gVl4kbe? z$6|&Tv?=IMlg+5%)52UVi>Z5_^uy6}HM{@Ddex&BjC_*{73jmNi6zw3HA6#XSGG0m z#;r6L_HpjR*xo-MSoyo3S35{98JZM7r9L9?fL`nM+?UaR)UrU+NaIx!C`roj^X(_l zoW?J1V7XIFWq8;fgnkpGQO)ffm3)Hk+0txK(Ru123veEP#ZW^95n)%6O=c!r?_cTJ z`{ggNtUdQT+*M~a5%QGj+wm_BP6z#o;%bD~iDz1uE_!;&+eqJU)2%*n z{R4TCYN9QbZKcEcxMAigWm@x}F|4sb72ob#a6<08)XJ!K#iYQ(Ru`R(a?1ldkXpT^ z&=(WT{d^TOm?VaLpLkxLKTO`aePv>@)l?Zc*4ndXX0LaJTzSgv@qH0Uet=Zoj58;B zOud4$1rljU#y6h4s=7xFv2kR=eAhN5;lZs!$TMl9>>u&^aMJQEjU(Pmh2>^6gPpLe zN-umnkU2S83zyXMFT5Sg`g9UoeE<_1qq16nVNp*cfy$OoRmwCxb~T;&4}&x`jN|E`@);(fc$7ELm`uUVrS>n@i1no03nD1K?^hlno*FQKO7BPaS@ zmb}CsJkLo@%PBQ-^pxFpMXVJ2i2LOT;5AZd}b(FKCGxzH#A$el{|06B6m95*gO zc=Ix72a#XQO(=k!baq0!+}Hs5bc`3AL_J{8XMkEG`m1ap0J8OP^iZJgk9;*^re}x~ zEBr2f?g0Nk0KlLLrs0{Swk>YnI{Htw5*fv!|A z(O(_$4Zu(-n*i~RGXp8Y(v912)q2@=THiTovi%Noxw$Yj%qL&)Oxw4|K{EK8kEuBU zD%2|vN50$|6$@)}?Vhkd6fAKqy^u6a?ky~?s;*2Q1?tnz6HIeg6peS}NjmmRsbW}q zA}1tZ@QboaX=M03|1bm3^oZL)|6qz_wc*{>&2aRBsExfB(qSw$ z*yqPLz-Pn5H?Tt0x&AnaJUy``v%}#s&PSdu&6kD@1{%RPz*GjP4Ap+JiZisHnH!c> zP?|m{?9oPz~&o|Mw)4XZxBM!Oc)-KxGakE12U=S;uf$kA!D@rk5*oS0txr~U9PzEVavS2}P8?G-8sdBCc51FjC2K5pgS}$k{%+j;d>3IKDOxleQjN2XAzUWg4<77)+W<<;8@2{yjTKLdz zuTa*r9Rn*TnLIM9`~W(0A2=y;h`df4rPSnoBqOD}K6qv`ct*$rHok)UJ8wFMQGw18xTN&Mw_35XbEn|2vNTSHmKqGG9uHXTfn|=KuO5zU#%SigXRqY@uEE|Y# z5lS5Dk5;!{^T_qDQGBgj)c@(1#@LnmG@ifA-N5daw9<%3Aj8V$gCcP?p8UAo9=bEV zTKcP-ynZPgHMc~Yx8Wul|Bt8}AoUfT18%!t{|vOVos256*-{h0B~N-F>n(+2P5MFl z*2!Lei9XN95ds_ioz$>Uf)p%ZhY7kx=xYCFX`UwU$a+7lRcpVQdLr znKWzmH^42?lx3-=P!J&#%06k<5cFeWvzc!vVVJYXaHyuaj;yU_ zkN%nLz&Z;W(*~k7lwI&U74Z>SUjY!IBJFZ~9q9y{=;?nPr9%BYI{hRNQaz&{^&cCV~ihy;Ca z{ob23atQcDwCT6HkO-L`dMPIzMiY^?AAVI#INf01MkdPVynD;im?=>6hZ{9vX|3~; zgJFhI1q6idt?{|9c*Ms}!Y}8*nvYAWCUwDrlcg4DAe3cXCXIrey|BEUls1?ELhGxMTG zt)3IHM=^YLc$MYZ^o^4P$@kZ^?f*RnOv>JNo~?Y9 zCXF`GL22@EWued^LCQLcB5z`+U2KC7Jd_^TBx|JdBE}`HF&K9pRs|a~o&&97K)9RaTnuAXjr;uj!9UfqBo|JZv1-Fk>23apgx}`bHTD}1 zvaG9qkYeahDYM(BRU%TbSsxMjw>6|bZ~4D~AL64*Ofy$j4Q1n~(OLjp!|kiuT#d=n zF{R_nXwoznofDHL2#e`V#8-$=vw1=FguApiskK=<4&51ZlDJef#h=#(k7c#q@*-&X ze3`SJm6hs2D9EFu$)9j+pA_@C9~H;8>)U^VpQCz3Zn zU&uiuN={J=)_}KHc*|D8nn@M zf>hhZ8ZS5b06)`RH)Nf&!qni7dfg2jSuYl&LyW@bm&eK1apFoLUHSIHf@Qj%Nx6Ng zTCAdD#q`|JMNTQOGTyLI3a1pXgX6~F{!|Uqc|Ia7#DR>*{IH3>8QSn&6)l-2w@8QGLBBomHD>DKS0wd$t5`QuxI<=TUKk$<@wdG;cX92i$lj0@k@$17QmiLm z0fm1ygm-tmWF)OoFmn-kM>&VUjhgC+#dRcJJF1Kcq<`<(+?T>>VOcCCZ-oT|U~lkq z!6&1D?r+R>eW_5JVtqJxiXQmqfmwZ9mcLap)&budUtC;P0v4wD6Fc62c`u)GL+xUY zdB1N^heFlP=%t;tld7)@L(gk>7N+p*sK_0}ee!TQtRvdb!i9=5{RxJ!E-_|hPr!8; zRf%ol-}&)v+5a0rk|0ye=9W>9X2%;7R(PxM**SfOv)w4^)kI{oum0iyL$Y)4_RZ{Z z-#zFJ8`Jw^@K2m@`h%FcVts6|^Uz#*0n z^`L-xY}>6mFqM@l%2cI3?$O13)DPjM#~@MzmH1-OJ=2z&?A>f93=QmHKI^*rc^z@t zVP4%e7a1)FJxeZq?{GE*Fc{FE1g-%oev~7#I|ptaSyd!b>teDfo}_$d`Vs8^krfqF-SH z3%~FU#5Ev`kLfjLZy=)Uh^wv^RE&+&F(=Glugl=ODMa%;WJl)R`2*)U(u4n&yA6xT zhC?gxd{AW&^uhd#e`thO%dUz!i^z!V%`r3(QOH95&;%=kQRISo zt>V|4?7GLe80TQOnLf(+rra_|gS@W$4BfgXq{xGc_;u92tPE+uJH5AiP38yg=A1F*z;p%*cOoCH>5Zp_348P%XOS|xM}0S?uf>Tri9B#ZE4gB%^V$sbmhb62 zoqXCXO-N#)rL?`=(uAv^8@ThG&BNo2H@1-)y!dDf_5I;C;bC^QB03!lKef)#j|K&h zmG#;(o|&m=(zW+EjJNSu09YP0wHB!Dt*v;mQDhg$KgrC34cjd2pUEE0BM}=*&v2NR zkJq+90Z8?Q}rHlx1fdOLvM{F;2 zWw_}pYBgu~moax;3V%N4gSBImb5=C5r}t<)f;JR8v8NZ5KhC%&n5e~?ZeLx>_p#|O zg*no>d9I6rU^GlZ!m&?qFVq>W>OzMIL1xtD0w86*yjSr*L(@|d<2;6_#_ha^5o9J2 zvE}A0|HDU_E8kzE-EtEEJUWBiZWT1K;A$a$E}ZwD@~r|oY);~=obBgQkYvE5f9aXO zgj&)ziKd@~Zas=UNHZ~BLJV#iLsekjxRx=*k2EDU(v5@l zqpdNz=mV6=p84xz){HXk;-R65;d5H@W(C_u(7=2LLJRUAd%u;%5@>bcWuLO^w6#2H z4U=GW*aW`?*tlqGbbUR9L%Pt@2V=2+H-b|lzYW?a zwT0*7rMX?16x2l#ANn>iH|`m9*{Qoid7reY?$Nyt|GE#xCdZ?DHIPyk0be=!LcDUX z<_Th&f^8@Y6{r(rGIX|i_tJ*o?T7v1X^o86yUkf15c&x8jK53?Z~`TS))Z3*Q&H#D z3+2<%HD<5_3dx(HLCTt}Ifs6kI;SrlDNifL`o_QGsTF+#_cl3=lY*n@TlX(3+iJ`i z*(lHW1b;pxQ2<^B|AMt(>|D3mc!4}fV(PBt>)~e$g!FuTop=bQ;L`!23<-5oufjX<}UZDk@o*1y}@2Kh4`)g zQ*iu&yVi1=xk|3~c0moSQ(W7JFN;xzu;T$P@ooEL&NGe|>h-k7z&k^hW70qrC#_pm`~G#S1w~%&sy@G%PO^3;c_9Xtpg< ztP+v*gS)%soO%^Jw`W16opdj&uSRwYoS@3uycr7JI~4ZnXu?Z$w)th@iD!`GgYl=> zE5c|oCHX*sk9fxI+&)&jeBxOQH_`OU&)psI7IrvSweOG~3^-|( z8I!gD_yF0hp#-(mNVKsN^Ij@kBvyCV53PO=`LPyi`W5UQR#97+GD0cQb~G%m^y!rM zkRs-l9SphV-Lki_T!PE5m@~xEX7G1FoOfL}r=c7qZXIwcITN(DaPX$MZU2QYetHh3 zY4kI<=-s+x)ZUAv6dKTDj*ts~HQg%|?Nf*><2`lXuU~pY+FF7tSMAj^Y;)PD0PU69 zevheq)fCLqa}!vHLic8YXolI=1dG z%xjYmAc$!kymG`Qj$-8(hX`}>`y&mzz^Oofb-<-~uGGP&76Eh>_nOl~seguV1;c9s zc=k*lQwX!}W-8C2!uG;s#Ow?GadcpJFaJMPp)tfC0K&j06yW{P1{YuI&=46+ zB7}td`el%8Yjt=l>Mxo0KX%qz-r36T7F1d@OK5KV%w=!v0r`g?>4E=P7+@>vo@km0a1 z9+y~?U&x|A^FY8Y7Ds7haF=*8`z`#V4rU+k=lkl<*A|lA{zr|J6Otg4i}|wAa$n$w z^W#n9xS1wcjEp{WtrUOtKF9Jsh!n!lU8@L_aqPRt=r}DJ`wG1-Wib>6j|gM?Ikq!? zW;Z)Dl4Gbc()-~TT0a?p04F;);1PqJKl+#yNk5R$Igl5>4AOa($F^4%Sr`m0Nynjz z@RH$i>wTbLqdc2ItvLusmT|G7DsU4hCB?_UjNM(l76#|gu7_m0_vlNz!B{~`T@1b*hB<_E zHmQm|S@xym^n*m3uVP=wv(>1H*l0sAo5K0A{h`8SQ10#SrF@_xH`aa01Eh7q>e&ZL3Pq~rr+ zcP^lsNd9)R#KBR`RpB+)v7e=6S|(Y1eSxFvteS~iAAR#_t-(x{*GYu;7Uooh4UkkI zP6_*+&FQ!0%g~SCYYm_Y;-T-5xT%GUh17rVb}N4IOsu1nVpWU(6ZHSF;iC7=an0A~ z$<)OJIr)cL9-aCaC%uR>G>TJ&I$oqV+`5c4JQX2HIvQ@hBa#!3(Nh*8*@>5ikznIl<*te#R5E$w7C3(lM@B)YMna{IC3Lqy zYm6)Q5m94uWgvGN&$M=O$BUhQamzvlqtoLN&5O5CLS|bALZ?WQ^mI77JJ>aw0Nsv|X+20?ixT3;8 zkNRE8B*z;7+B)w85Qn44#}e@U6i-&l3rQ$Kh1(ozDOZ+FkS?#TZ~!dAji%yf z9M(%dc`QDNG%-{|ULZCVf{`o`LtbQtGAc122ty&r!!`ACBW7*HykFT+)_t6rEZCr3 zZGsYU%L1^FJI9mul(B4lW6>sWR^oa1|CUR%k1?L;tZ+c>!e(E~_3{m+qZ@$+zgyn$ z+CxR2=Q&>T;z%L_oj{e=5G|5uShRYP@1)n!N8LUmTpl{pubU&IFg?xp59r$q3_z<1 zpfkDcl5YNGF|hn=lI9sO3n;>R9#gW>JoHT*_m@IYZ8eDg@5NR)Yjl@+{1&Q&vCUYx zzr~Dk4DWDPgrLu=`H z=Dw2`>gS2TE3?&++AzU-eNGnBZg;y!PG1Xa;<+NM#@6`4YT>&!Pd}3@9_x3WWf^xr zeE_G+okM)?XN;hMaH9rO7OnGZZHAWJd~13vA-0(VScsio#~@7&&*!Zm6*i4`0jvme zw5n0wc^2#QuzHW!#HXN99ZD0OGCFX@;#!RweAFK2IpDKaj@3Uh)kq+VkT(aB?rZJr zi6<5pIjCepXtIf-lh;U(V)-YxsaUE`>y+M?^RN3$XU_F9Ty6urp6h7sa7bnaTFv~9 z-G7ykd0EM*KQGSSEt;CurA9#-iA>?j8CLaY++`1f(Wzx(HklN$P;*;;88mu9(2qc*=}rIzU1 zFeQ{g&zL{=cT&;a7>xdXq^GdsFrfxJ;&2IENB&TYNo{R`CsvXu*YQ-!DBF6*sDS6b zZi&~ENoFbQ0BhGB!@a&TR_Jdx3$v2JZ!4cHiSJC*~$ z78s$ZGhp`OPX9Vi>ZYtB)GK|KkOoIvPX_7p2@k_nGWpZu>?fi<3X^LPb2Bv`M@8QyCEhql0pJ85wg#N+VvizHC8kafnIU8t>2J#VW&~_4L@~r}9&J zGftZ-r*d;j>DQ7bFJ#b%qAwCKIXl9rW2r)q#gD+#mSqAt&Xk4(i2H9S=dUs6ur^0-Fh+%_2G>+uHxN5#qRR;V=d1Ocz3>T+oTf5+{!x*v7# zxZTRunnHEiCVGvJ)#z3?uot?7!^sHwP%tBHOMY0`9lxCutveh#Vbxm?{8D1?6Pn{J;1bZGp13S( z*~ai31gFsm*6;7FQiG{gzC(QyL*G&Qi18?Z{aR7U$HR;MNI&2D%1a>0V@SypV8Dr< zcp(PhN8-k|Z~V}U*M z@ccu;Yxm*Hlxsx+fJa2A@*jLWEB(q(b-^Yfq1L_NN*%0GQHi9Z8tr_LckB&Bc4~Ts zF;nHbowEpKyW82GC!vO~&0%pX6UxN9>w#DYZnLM}v6 zAQ17PR>bcpCEmnQnfDIbSQ+n!3r>%YicYunISso>f*pX}O!}AJCwkTJ2FRV@iU#lpPyH;-2%F zUF&@3(NY=toE_R6Z$7vHM+7Mm{qH*PFTLIevD;sxt}`*ejW&{y2~Rbk|gucsW_v!l2KnN-X8PVF7ldm#(d@ zs!%$HR0kGy>4THV8b(<4JFSYTAijaRgOQ9)u8AB%y;7PEE}nXZrbVL40~tz)x|tDZ zIopeVmvjjUxzDBEsx>ihGN2y+S^Z!zPZ7#k7Xs>0@x5Pmol!1W=m7pYBj^HZV7-&gDIv*q7g4sk{n*X+0F`{7EF=`M) zzoN#kB93l=5=c-q!yi+yBL3ybTn-uLtk75KF>JHo`RNX?ivC>>6;whh+62%1UTNItK&$3>d&=_rZb^vS5)r9! zear@0Isa(wbx7kO_5BWapw7$`bOCK|KLpEzM-E1z9)9Wc4pQh=Zd+FkmRx5B-dfPW zC@yE9nlkgpXG~$PSgYP#SrM@QX{0u$^aG150pgvbmsHm^Ry4{OikZan0kq?E>J(k5 z5;L1n9-BhC?J@X45;OQ;V;s?*#196A;{C4&jA_%SEVat8AEe?J2E2Tt%0f82;} zGHyToLp{)k{zK@ZY$IcDt*_lqD4D)w<0G=y(yFTXEuhEm>vJB?@DI&s%E56ke!~4U zRTxr@h+NpQEZcjEZ=Ax*)c=2L)_Fx|I&U9P+d8Wa0s5zW*oocqe1wmm2pL|~km+q) zh_W04T`2mbv*DmU%oUDS0k76EEM}Gr1|P^`0hH0O17Eh0N!}A;ZhXEew9`e5_gji^ zh(@f%N-yL!RNUR5rRuhfiv1vHDc3BiL~64eMO-&O%#xptuTJb0MD@ALU`{q+poXLz zMoxverrZzqdyQrHmm#>B-hN`ZT~%IC*QR@Tr_>E~%DrOt&jkri$*72V|CBCwaL&*> z$<8;5NA!->X4X^VMjf_7j=&X$Qhc>qqV=8$z!8_x1DJhy=M*EI;8HquS&4b{<2k<1 z1!v;TtjINmG8X;V^$@#=LK) zjZWFGvnvRJyC)g_W6NE7zI$QTqFSaku(mxkG;j)YN=6H+Ik#0v42q*GsHWNmG+DE( z{9nSp%Y^MNtE5$HU)x$DggiI#X`^({bk0YXA(~Kp*sb0xjs-A=8Bx;(hhzo|$(Y9k zb$BkBld5b${HrGB-A0}07Kk>w^~z(!S~}6^I-K8KWl50uJHl9nf)-DbgNISO-VT2b zq1usIvw)5aKLTR=(Z{u_y!og>M50kx(Eh1UWl56G`v)aqacui3#t!iE*;8L-&SjeM z=a=^qJe0Mf*7ph$&A!!=&@%mD0JrZCV$;-#A*YjU33Z^E!<{B9QU43i91G1I$ha@1 zrC=XNeHa3u)hIdj=$6JXZd?IxM}K%mVEzvh6Z!4x4~3fe`pZ23pBPtEmA`?hn@6M- zm>hFS{{R{MynC)|BgSM}TBn8{nW+4D>&qYOHx@A7A#*|<(jG4L#xIVeQ@IK(@XnPC ztcxl$7whMN#Ec?atAX^y9U9|1@x4Lrm|Si?t>6jXXG0{%WU1{8B?M>av~?qg>8zOO z|0gJwC&Q5}fhKWr*JHlS68SU--Y*bUPi=h*NiwlFr!ypxMb-)hMlnYLvK{N82G~)Qj8TY4?Y~cELHwi0v4f1ff9-`I#KJabG5vVVm7X~6}Mht2yA;_hm$>rdU z|0G17{{DGe+aZ3gJz%aBcCoH-*$cIA8D^1yo@qId;;X)@Tqs9@ugwF`ZbzC!HC5Jn zNQw@iyg5@XJ@C;@?uisoxyxfdH zd7up)JweAAF!I*mn_&75m-VHF=P?#;L-V`4tG{)Yf}fZ%J7GMxi&q8D$@UnJqe@`Y zdv7wB9%Mxcy_R`G^R)d6(#wc6h}>th##;KQevy9I(TnhOiq4m#6w_j+?{Pm-C^RW_ zuKG=Q6W0=qP3?#Lrp>jH9}@=A7bzS{IMB3ox8kgn*3HFwQIkmQP${oJ0?h}8{6v{s zfF6wxrt0=m6CofyU&@g?OgmT^m#g96Yz?>g(x z2j8Cs%~AEAl~@@?SL~y`3TvAp_A(ZkT}GE0Dm;;^TFD;@CB!Pyn);P^221ZOD3Ouz z+hkgxk`8=ZMFOK2e;i4*HB{z%-O#2Y92V@eQs(oqoyUC2`6B~n zj_2jQB7Z~=Pb3}H$+*4JtEe(vF*Uo>u_54+Psn{WU3Q9ySU3s`+__%N4!=on=A?TK zH9c0Q1`u2sN`Yqw5zd5W4}u?#ig@bY+HDz{NC0#MG(t&kNwlWNL*qDE%ZQGP$Q8Sp zCdKOUn@_eXw+P7VlT&}GmnU5KXK>*hP2>V^k3;Yusf+$PNO8-7eHc@8t#hewPc4~r z!hGPVI`D$UMEz8NFnev9&MnBvg}I=m`gsto<_dDTj>`QutaxBf0`w zymddn^dX%w8`IT(V2-@Q@4K0MLLm#(W8~CGdFgJMbU%JfvOPFOf1V(TLs=fb$|q^U zpp+YkF|ebf`#`z+AW_^@D(u`C1DW$yj!c(yX~PP=(g4y%6mJ@%)pcGSQ%D6A11!H8 zJV#3k`e+PYy{iOp6HuOY>V`uDpXh|o)FMve$@!y;xStNjTX{A%hN*gZy^k7M)Uqgn zmbHfN9;t21y`dSodLJRuBZ)okA7rx@^Ko>+ilnNyg8_y7SUSA)Pa>*~lkN8?SVlNk z3htp^gmKIo<^^T?I**V04=b*ad_O{2${`#mV$ogu2L)yv$hUC__bxLW;>r#o=vojV zIzHaY{k`!Zf3P`rp;Df_q9etpswkfDGQmRTBgux!5Z*TPPBUohQ=eDbJQUjaWp~MLIdt+4u1cXr&g38 zugHZJUj$G)g}T-6${bb1lzF7;y!@jijX{_A-XZQH&;$krB~*NvToQ#i^l3^0*my}>|+#w za!Anz$v6Y$WbctcnKT|9+^^rB4HrDl(4xB)nU<0)rjiM%eOE}Z^`$iKa(!H%oXgSy zU-&3;sp^Ki2TzPQ{uzCCh)bKAOQ=FWDqJRaP2RFMWRA~$Uh9ie$8w9jiRksLiWg>z zustUbk^P(p^E7#Z29CeeFYAUQBH1gK#1ipdKdF2v<8U)wOHgd8@E3kk8&Z z(GW0;{0^mE&*dx}9TMQVxboB-|LpPT>VKV14Vi!QuAMgrn8n$T;*~PTiOh*;nxp|? zDmF0m`Brv3agG6+8j@x348c2WheBhbKnkQ>;+Q&NeJECU!L1?c27jVsUi5YxCaP;E zZptSCxPzYp559aO>QPWOdGb3aEY#c1lh}Tc5X!K2H00{|RJn8ESxb}AqF6Ou+L-uw zS_4<@wZsR1a{j#jFi%H)xLNa_MVA02Am*y9XjQDb=5D6~H}0{DB3*;C)m}1901Mv& zbgv>YqWzWcn+}g^EwkEM|D-1Qk+xr@uj(>M58ZCp^TKSK0ui?nEDKYyyNW^m2&^8XH8;BV1 zxUiR9qp~jH&jCy!sqayl59hNinlc;fL&Lm1gV{jIn<@PR`&2$4d-0BK4)A zi3B{E2^Q>T`*2!PjKB^uCWw?E6ul3J>=nc)ooOxXeBUhtQ6wp=PjrnnS;_bq-JvP{ zSKi6bHR%TADb)c-^+evl-aRxs%rQcls=Agox+KSo-&%w=d{x}}<7%P2SoxNE>87;Y z6nVM{+b{_+SWxOGp99TV+8%+5fV6;Ea$?nz0*VW`Njd;9kIFm)0bt-{sK(6`qz!$q zh4boq&~pUWpK}rYbFAttrN@$~=iX5>0pl5DTe=yH$Mqwg_g0QyRWj!y2;u1N9u?wRq8Vu_fG6{SOt=!ouocUK*t!X^^IwaV8inH}g0_rHN27qp zUV6XL7ayN)W_I?0{5Uk8`!R!hw18=I6nUt@TUrd<0%D&)=}NnPVIVSO6d!* zT&$9wZK7c90JiMzY+5<(!Gm5iV~3E)HKPA8SwOp@nuTeD3O)!F>`QD*S``_<&wDnu zks93-jjnZ+)A$Yz1E6pQDFM_yb4s&sXS4;3;q401-@3HGO?Vr!?>l<(7cXtthbl|-7I$>y`qlf4%*40#q=AlNw&pYC-G zd*LN9LprK;G*L8>PtqE)l(re6?;U>59l@E`^puV-nOHoc$b^y&g!4tVyuFD?rEFpeJlJ~`T&1l8*}S#lR{@bZ+a2zY{1 z6!yu)DNqd`(9ME40CNQJYlX_!z>cXK7$do0p;x`B=nKVq#Xr$kB$Js zHFn8R83s{sG=0>|{xY?`d}4f9irywrToWE3w3NIj-9*Kt5cEzka4Xt9dKkB94jR1U zUMjm4vx6~LC*L))^YvttNJ@>;C}!mVXH)>xtFlP7vWm*I3g$%bxLL5tn2vSsZ7E@* z9mSK9#jih#@}8n+8cHc;ojPPE-XFnGFDx?w;Rb?w_QzarsMHTaO8ANNw=AcZVswNn znj9e1gW`2HG^p0#lsWD0dMaJmyokSkBv1g)q3c{-PL&ZZe?cm9tg3`#_1S=CVd3GB z@D;a6`iwRZt{#y-|0W&KCw#qud=2D3h3t5 zabRM&a35B3L{-AA`7~aL%1S1kfQ|(Zu8u83M8GVPvMfvxPQ7UsC&yPDI6`)1poC_5 zHyDE2aTkb(f$+c1tS9OwK5*Fcxl4(m!#NjwgdNd-i|O8+9g+xE1~dd^xr_+zQ`M?^ z^Td#RdA<*hX`HGKDJA<9UE0c=TP;u{nH{rxks+D5-0;>=*?%L%2-5`gNF8f{<%x?X z3fszrKX0Vmot3T`y{6|IiWA+}s|F2hX&nR9Au%AJrSwz9RmrmkxsKn*R_bpu+e`j1 zJ1@{EAx`a^F7#Rih*t_l62cszAbCBIwhl5Fef-PmEE2l&4*CT1cXn-=?X#^{$X+&r zPtLk$D=U{Wcux|DM}wIKjIBidN@zd#62@s#u^tSi8Z$N)Xb>o z5Uuf?2=SKg%FQX9balepEstGxbH%l%6JTHr-I|)w5XZQsa~$2h*4*-Amb}*4!|REW zK{!0)ZY`H6+m0{kA_>3~Ch@FBV2`tZ+r)}1oOrbD8Vb-vTPof6VI*!2yF2A#57BZ87d_9Tx`k=EC*Y>N zJ1sV&Y8e{B8n3ap%BGDLQ{x17i2j~O??)h5c}{n0K`^5^+s5zZ@(?>{5LBNxtc`=r z?@c>YinXJ4-4k*%SosuBn($ZWLku)?`s?p4*>SSsw=T}3g;C-nU(=>X zOUeqmlaOf|>ObrN9^Jnoy?Bw%-G)_x7T)MjG#E$}#hl8P^_l(bVlM%sHAX=Uu6z&57WPC$( zP2_@g_qcWloYwHsp1YZ@9=S+#ZR%NUf&yeqjO7AR;4Q)(nT+~=_`kj8&qv4^%3?SRJWYqpNfdce3{&GZch(jf_b0@ zy4xd$r5TOACC14mgmgL<9bM5NI&kgQH$fWw4cYD2FfXp%l76tBgbt5Wo1iBR9@0$L zqPJbFbQcM$!V8jyN3HB_W1yA<(J|!Xce0gcp7(Zel1jehH;);wJS4oIJ+AxF+^y++ zLFCQMW5emiRGkV_G5$oeu`WCvg5vII0xRrn)JM?l9s=|>f=k{e#cCr)B-@s7(%ii! zHcnw5lNQ6vYJQeHZSb7wv7*|LvZqn={;##{%AsL(q)lZ3*?MJ4 zP>)@dkD|i`doMHY>B=(oMpqrbWH12fMSZDRYvW8DJkeAwA~OI02ZH4(B^?k?3Qeg^ zBw0!MBW))r0{lS3I7?Ni{2XDjQYbFf%Yj^PU;{KUw<%3xvY7;dN%-UAL{p~OK?nyS zL60DrzOFQSYQLC|^`V+V>Iuun{smH9kWfelb?^uVQCHXp@q$-xJ5Q9d-W_=%n}<@L z#)Nf*)SjB#2efiZIJJ(}f&>fUu62<*P4AUOyf!SvpxJhFMMEy}L@^1xX2^$dXrwlP z_gVu=^hRs3(BIXrCvjKJzC2a`HfR5F!XD)hDpx|q1Ie{QZ`J#=a>(TYV^942F${5` z(+UaFV*z=TCBRWm`75}LzY66GWMVbpoT)P(5vZMCA$4;h8KAls7h(IJx;CzbP-qfw-J8RnA-JSC=%#CoVYtb;WkMCoDIwWT26 z`?}hjFCfG1h}pkODn(Ldr^q`mrgfE#k-y@0y3FJ-S5IyEj|c3QZFlCNx$SDwBub6z z4|;*%&=4YXk+8!?4SCla&FBiSuoj*|h7-_RRce%tW&JVDy$2i`%9JPSho)nzR;QK+ z=U$GI^8`b>x2(mo$()x5w$FBM9rn1TJ&3ZUa!HxJuS1;0xdk`QM0@Hvy}DPTbRCR6 z_94blzS-@(!vQ6hB7p)SI7JM2J1fJg!=!=RP>V482MpN@&a*f2fMg1txtGQ_q7w5I zi=w5mjC+5XXFX;1yw6PiG!ZJ;_dzeq?O*)8vy|a3TukDvgj-Md z&J@Bvwh42Y0uFa^8SV@u+^40yOUzW6X_>lywt(GpoN{5ETwE(y)7oW?cpZ>8sG7vn zjn5UgcF7b6fPu#{<7A}(em&>HaM%AZMZn7N^0$m7dK=Or>N77KdgD29A5S~rAv90E z0THmu%yI<7ULPhy`UxXO8h#RjM>!Z~cza=yJQb?h*VRS2_;86bZo6&p(zfd9lc|q_ zCl;OYG1CWJcB~_ICD$Qv_V2@S0Z}H;Hk{itEr0NJ9_I`R{)9QziL(+ae_h()Ld6OF zyo(t~+zrl$WXQ-+5DRb{@ep_cO~`BQ-F2pGm;&5+-a4Ku%*&#@EftuqPg#~if6`Nx z4`y7Bw}H+~5yD^vW;nvP>M4J`WS9>-i{~oI@RRe|il8#nQDG`r7CP zbL<%14Gy;t)TYHOS+Jm+p=L4&3p@@db#l<$xucD57ZNV8%1#33Y$?^0oKQqe3nx1 z=IeQf?bGenRB&b&DIvq2T`_<}<`{UOTRN0!de#=O>eeknQk2-Q_eMRWA7?=f$&`es z?*8cpOykdOikhgz${y{nDgUN&_tR!O9KW$cPoY}TGI~X`YV(h)6X6+adES=Po>cjN z)gJrxWZ+w+lDWtA&L3NHJA*2ffjglPI{7oSuyuF>^N4N=XH`>a?q2`LcBo?7l$+T3 zLY$lEltQCZs*hSYUu~T_= zuZ6xD(UJwHawa+epU7pNdg@{wnZKrTvT3kO{0^j>5ZTe z=VZZ!y;fOeat0-G&Dir$NW}xpd2>NKYp07YK{1uBdiX-a=FZU!cz7mA67Ys{WkY&jacJt=hGrb-dyKgzo$P|1fIyQ234&*5dN6~i)_bKW@BCJeV0*O)0cY1C!0?+fEk z^vg?QN4AqtrOtyQoM0y{K_w%0zgf;IexLmp>#dR1NP(YH|GuE)ut|JM+29tZf|tBC zAQs%0Tnjc!>3u3N(K>}G#2<1lK9=Z`4}hKTF%ux`8CnF0zrS@nAHCOezxju0YDXrK z;P;{mDRTf^>fmzY&hQc_Y=6ySva>4j=kd~2t(HgYGl;t+Kq@8Wkbcfa@f;#)y6sWy z?ayIjnw4$5r#$Yxt1lk-H0e&5?Uh)W&ZdB{q%%+wH*bSG=r#?wef>j40@gNZ{m5|1 zq~FqmSYGMagZsbs`!GVa726}111;*$eg2QT$YE-G-$o7C1KVtlojchx%OBPS$%BN$ zYU{O6$bNfe3MgB1pcwCw-D1(N?BINnMB^Kv^#|puy^0UfgeZcJwq>wg7;X~B%4B4} zuP{QSY0}>P=4xE?USnO-$sDnnoF3sh%A%btTN{1B1GpLKOwL9T>8*>N<)*vn;6PIw zR0t}?5C=8hp&Ak50yq~V&HpwTU7Z+FehNUbe#^_Z_SuOq+Ih55H79FV*-R2_rZ<%; zqa+6pNCUe~<<)H9$%FoW^3HF1qDvP{=m9`x-y#^(KhCWW_&YZJHh6o)>@`Rp-%Zap7?+ z)f}6HqhO#}_U`HQ%!K8Ux@r$2UL9GYg5QPX615Mpr~S4bNqv(bhLVSa(I0PCEAn1} z8r#y@>xX;_vg61n(Efsa(rWfBYzhSez^xgL4m>n8f$l0>W(uZz$AzpndD(NiSze=lVi;sTbT_X#SA zGf(Xb(?20b*2~$*9Le;aFJ@Wj9F*hRU*=*?se5B{V|Q(?D@3>Mg8=&1XeP#O>eR%U zQH8^&^n&y7oW0inm1IVQqPIZ8LYeuEL z6Hd$RQq@|z2e%s~V{(EI^-;B^)24NXuAjD8F?#2*fFS<{dIt1I`uhe<4czORRF@HA z*Lrh97cJt@S2Wu(4uGmr@eMgy*u9fqZAD9$t_U?slC4;F#yMjTjnX)#{UKLV9Osq- z1b57;5(`kWxk5Ow6MpeR=)lYHntp-{@4B+K+f0tL8q+@>3j1)TP(Pb120XvmZAqm@ zTTUz*B>=k7UiGn#!-RP@=G|m z-~&q^ou6L}@A>2s^3PI~Vo|qhuLZ}|Yue?P2jvQ{&@A*H@Z#2 zK}*GiXOw&`n`2PADvh7-b)VXXd5XS{!oO1qG6Ti}=3nNW-ThcQ9)cg$0+3US;|yme zz2TeJMs1JcFe1`X)au@$xnRMzUJ9`YO9F5~rEpmPm=ubU>5(#c&SC~&D?oO<)r370 z+S^z#s?7}{(8>0S=Q9c4?LdcvxhECzaeFqwE~TOO)&AU@YxzHamYhliB8r9KL-eW^ z;nYiE3y-CEaaIzWe$Na^2ED~U;;#oREm@S%=SZDV$PipbxD|qoZ^4Y#t5MLFm&jSZ z(z=#JvehosH|~(EkNlO|ygjcf6U7QqHVyriP>O3$>+D+D?YE4$@?^1S|FSIEqNto`e8TcSw-0q>1n$h-MS;d&dEJl-B(J@gUFf41oL#iP=^j%Q&c;fdT5AL^IR6! zpG~j~pORkqws!fh#?`#yx)aTk5VR+bR@mo_-larW6!b;CqPYiE^f5JmPsK7`A}HTd zk>$Lhgjd)40-BBd_yqZMF{%G`-FmY|2xuXvXdrk1$5H9f8-70_|F>vdtWJpIDWAk| zu{)bMJm9ekwlqaG%_XcRGv^TzVKnS<8V(_CR|P={b3RdRWHj7V9V{z1Cc){oTZ^#x63vFi zZXz0GPte5kFM<1_e|uRc!!PboAQOW#jA-OHn5FFpMC9c4h*mLuS6^@*G;$wn&#vIC zkw3^?_T|ia_xH+0*oGG8xK@~W=7GkqOaON%MnvGr_r3TPgf@V(7Fnw;7HPAx%jwSL zlMj^ude+04YYCdJ=uM=ERV{ywLf*+4=Lwj*)9TbDwuny0t0c>!WX0Gz<+494q5`1O zGXOcK#r=RGs%s&;MI4J#DAMxRI5lVg2+RAeqYE}U@=VB*GzG#L6?KLh&XkFispsPN z_u%p#C|1NX{m?b-GT50{2WzGAD~GqICRCb*hsL5Ga|lRxG(w#yx*r7$;7qcW+O=^r zgj0qbz_Gi})jeNWTEE0(*?S^|89@oKYz@hF*(CoJIHxZErX+#tm8tmY<7#rCFZ;iB zJQ~8tTZ786d|-};w>ho3!%P?qiZS&m8jfAetiZU!CHt}q_6zJ*d&3eD9q<)xA|8_=6<3ANBx$UqJLLLxn`s%SUlH~1 z4oyKK#<+c6^@YpbJE_un;0~73XlE4(r~(I1$RKgDJW#Oy%$L0_d)7dLH9Lv*z)g$+ zg`&l(`0$(ZV!24e%Zc4{9Oc8%_BQ=zfZJ;=&F5Jv_q&YQv{UL{K85C4^>&2zB8$TQPgnLr!k0UX;!pf3R_W`ye6QsEsmDY zPxJ(Pn56WB77h`wUw-#kV#PiY*ctY7)4s)y2u;JIYC=w6vUFrj4kPe>qmes*f5Ad9 z^Jg6+vQujy`7`v)U9VZB0;1$S#uIB>Wb%ChP&zal{{#$9rPG6!djjE}#RH$A@G8n~ zl~;0^u$eXGDhjO?O_2XbuKYD*S`on@JDyqh(^?a)KVPNoh?&VN02sVV2&KStcj%#6 zP{T@7NB5}5OBaZV9J*r35kvK`a{AZJ;NTjmKA^9PkvN_j1nW|2&5BKC+Uw}eHN3XLi8BRm2w*IohO zgk%a@qOR_55>N5@@ZKMi%tmJ&V1LQrQH6{Zk+@`5s#XfRc ztz3~_3@F}`n3cS--$(PiFFZYc(NpZ!tK^VNwjdl0l%)A%IST?u&5jt^rk$Q6+-9W* zIPq_Y@?&fNuy$ZnC$Z}*_OX;&>)G9--|%|+lj@yxC5bkUS#U;`2PXpX>)AEFwzN%8 zp1zMzp=+4hhr5>1p#nbkr!&KC?yCi+w~~y@DjVmq!HAp|{qw&7l{K4OZ>Kckfw49a z@LYu$VR&FSP}ZZ#Y@UVrv?1Y-ZrQz^h+CsY)He;$RvaF%@pYT>TUf7SZpH4ZrX~b8 z-hA$(aVgBRL^oD+@bQ!t^-wP82*LD}jC*s!*90~j9B1ITf70VEk$&p<0R76tt7W#A z_;`D{a|Yy50i0j?{KXAP`e+4MsKDq@QsC0#S=`{!g&l%ZLFs_)8_8M-4suI|az2Rq zLOt3o(7dIUX4`HJ<#F$h*FRYUr8(U#C##8sp|kY$xq>>hWdrJb2T;A4CspJy{Seip z_^#Rrd0YRENuf|&@}g)Mjl{e(5gbkYN4{PjlTPoNGlhl1N7C@{!qJVk!chNQ8z>oW znya?aQ19*VI~^Ag5R7d2$;{E(1zznMSni0GYNrljyKn+H7Z2*md7<`B$UZo!Myr8^ z0C%=;=QTI=9-sYu4~hbne0HtnlJaj+7*73>hOz|S2}jv%+>r_EQR(4?Yx^Q+7h^4_ zT5JV)Nmyh)D5HK+lc$Z)TYk9Q`sRsvJ}%Z~yz1XXAnJm&kAHB_(rp9q4)eixS?Dh& zrs6M8$jt7z@-KFYt%31WRc@U|(2Djllj){N9ynH6La?-5pM zfVUukx4`KIVzx^Pw$lMsY}m%gJX7}pMYxq6B~(*Z*v8oYdavqvwMlcuq&XKG94m5d ze*liQ)d(aKgJ&%=pA;Y%1@e6R_W2-e$|$Yt8F9knzjW|KnUHef%;ZeopTB6{9(-p= zqqntE;gwc0wRKal#DyDJNjO>(T}QvE(FMGl<9jx?(Dz^?Eg%SdILKNE50i%&c$;Pe zwNju|(O4bL9Pd3a6o#KXd_u<$OCx6gNh0qdO|qxLm)2j0xAVA*t(17-h_xNdt$9Lo ze1w@0F{kA597~I0lK?O$)xKgp1qmo!=lTaR$^Tf*zPeQa;Y7%gv1cQ^5+A@5T*pCG zt;+L7xHZ;OG8xk|1*b(LZZ^G);*S*vwH`gfP1EIt0B{+2n|R1YbgJ21@9M$Qo}{X!2MSl++7TN}y8((hAYgmmvf`6kMQOR2S)P7*9S5BB@%DNs9s=W&)U z6pt6OfxgewCn-cSkQ|GFL3eGu*$em`JMgLHx#yxfVq|vMZ52e?XyD3cK^8nhKhKx9 zW|Par>+SzGshcu3klVsgh=P9Shq)*YPLMF9F5Y^T*KTaW$fh_b3xocKy6G$fD#cAV zGZAzs2O6H3ql8;iYHG*lt{Q8FK>{&ly{*twML6u_=4dI!48VS2yu-{7V?woKq^Kn1 zcDQEVUtI?rIkQzRD`m%1xQU*3BIia+(r)Bih!s@k#CVT4r=u!mDMknLjW7dw0TE@S zn-$0PjO$D+okK74jktozVG0qHXPl)(`Zk_=6^-aDyKVtfi=B;F+E<~SLke&UfF{z?GM zG285g;-xqcn!^H|Y?iT--WxK5JOv7NhwlfU_ts~KWRK>@Oy1VkC1 z@XdiORN1u%Sok~G=AJ{;F>iR|do0$hrQ9H!qPXS!v(-=ntBX{t1T|P(fMCSYHBlLT zc^)N+e3=cxb_HwmzRYTWRZ2kqcOjA}^a^DN)BA0`rdk;~BZ*V<2|j1cfMeEVt$()q z39%$kq0n|Fi;r)j;2F-^uO}LvAqD$MCopRmhqU!}hROmZa&sumKIFnc8~cAI{|vzd zGljsD$2=?%G}avnHm2SX~8Uqd=f1+C8&Lt)g%*VER}S+VfC z?Mjv5px!GZfMlelr!fkLqs5Ll_j_rDe{$2xiA%)MazJX1t5Yl=pf+vM5zkz>%!}!m<-VZ6P$=3%4FJ5flC23 zZzmotaaO6>{t5t!snaIoFYTSCkMLML^VMlb2L(@7w&HE^gOY!+O!OKAf%c{tiWn*H z)sS9>lQNNkQbBrP)vo27cr^bJZ*HR~+1@I*10*p>$6i;o(ZLI_mh2~2F6EfwBaXE% z5HDv`07D1K>9th~oE={v#4I@=w%T(HU(kAE*prQy2L0n|o# z`LmRVXb!!;pdO(4p>j)Jb^jLLjA%|X+Ld@ z$3WDK6Pej>zd^>f!2i#cNY|#PLf+p7dlSvN~Vm+DSz`9$hmF!%?U0F8p1NH!0C6 zczfyYx!DrSArwJ21Xg_gy@lsM^B{-!n3vc(QoA^_xGI5{Y!~Q= z#Ngmoowko6SY^@)t329JwlE^YF#sBjm}8CH=X)Fagi7wnX{{%~gh5u1B$&0l+Hp3J-RZi8Wr zB(8y7+Q87rZtUnWE3eU|Tgnie0FVqEq*mV%hx#MqRxpdP#B?27;1LMi> zcXas@u4zklssQaG%`%CAjSJ9iKS3`J08O+vMu$Ykz@3h_L0fq=^$ts`aV*2<_!~sAh)vUzpe~ zy}n2&Nt}RYWWs#6lBK9|bem;chk+9^nS0qZ<%P?@e&F{Uk*cvnoE9k?LMG#9tBx;< z+yU#Od6v8<@oaxYhVJ#9!!NBgv#;&Ij=O2zqYQ{PYWN3LGxZNVPSi{VDDRmwsQ)57 z^JqkhOlo1J){(qe2kMN(`6%@kfVKvmlS&fChCihz^YphG_>qiVCr+V(_K z+eK;~@CtZLGsazCW7B`X5y~?(K4@QkfiNWGOfZh6yFf(AK+0BR!ex2#Jm}x&my|rr zGQE(qrYx|-m{b)`eotD@h=ZTY%{1-K>^NLc$3wvb?|34`Fv$Ne8_b9n5<>0h(w`AP z^b3qwqsJuHCsdKpY=2UP5KvRn}FUy z&ipKJal}MA!_>``>g8}d$c6%Q-ZKl`!_rhjZ2KWqiq~=w_eC;+JggT7P=m1(-9G9j?H?osH;)?9b4yw0=Lpnl>qsQH+%tXKu743cbK8O7*&okamUiws5sJyu1 zvoN(#n}SII8PP;D`lIy|7kgawcounvvI$sjcJ#sAR&LrQol4W(7$1>XI7(rCB_#P- z)9CeaBA^$z_YH)qiKoG>r)7P7N4A7j(Mq<+Og2F9#kOZ?@IVEPNV|*!_Trpu%US~t zBbU3Wh%ANgQ8Hl>e_wAJeso;M5U)5`MdKVGzanXH2`}}9CV*;GExosY@?FZPZAG=- zCRI$9S++lEKF%$8lpyj(#O#}W8rZ8Zmp&Huqhh`Fn^eMno>ab??N%=y6+|Od&46MS zDEV`-JPndf9TRWqNSO#(Vo-G7vH!YRDy-ugOz?E}A}*xjzr5mI^nt16#0tbJ9s({+ zsShsiEYk@>{Dvr|VB1FQki|%ddu#Y!%5cP+F&D%gI#m|PKx@SKhr#XigAR3rFxPV8 zk+`-c>6+fW(38>AI*XNpWfdm5mdhf8KAIVW(Q{o4$D#Qv}^lSF|x#mQhH0kr;Oc(!Ay zZ!LqPqh&udZM1C3k6WXVggKB>XPqY5>_giU&Br-?kjYFgnoJ4ztwssvczZW3;;3>$ z%h)4*c#7dyeT%O#xKzlVxJy|HNWw^)6{Pg<4aVKRiq7>E1A<0qkMb0~s-l>xuRKWCd zwH8&hpu}2Vyt!YRe^KO)U#kd!iLFQBhQ884q zpfeFRnX{rvG0k|by-=%T5}+-7*7?(EfU>!t5qSrXl84`OjfcYrJr>W1WFcPcY)l-? zdM$@Am^kuNZb4ulVl_%`le&~`$dKJFDqiuXdg^upY-&0Na9+^L;YLklKBi1ga;}ZA zvMjqAUS^a8oBmM-WwRxQw)Iy0|Cudjgv%Zh*W<_f);w_ro8?Kyrqcg@|8m zy5F^5J0?u!$2gR#Oe=4ZrohPdEfSJl8+~LRW+{S~nK=4n*14Z49^=h{MBM2` zn4(bG-n;cGeVH`(fzG>p?pmtE8DT=#RxEI+j)yph*54)|#xGLoR( zpPtwNSGw#RG)VZRP={%+@2{N%Fv^8F{Y1n?-E^{tz|Oe`Wb+JJ=)3@c-34xLHNO(W zqR2rQZICUW(rV-R({dVkyvPXr@RuSvQIBL~gB4 zt9QAo{B6X!%QHOkFv%TBiUc5!RNsjq-J<63FiOAJ9RjAB=Yjt!TZ(nqxS#D&4o99a zpzNLE=zAgS|D0gCN~oFCGsma$c({$JS9jp&u#N6sz!9YyCZ2`{S6e4Llh9k1Iiq5Y zCnv|35AKKbR91Jp$TYr=NV!tya)dc4TrJ?H(*>BtltPW%vG$SzbYNEX&BHw#S6HS5 zTXwvesjM|3s@3uJf9huY+iCZiq6NrQs2-1lPmdd;g|moSQ8yh0RFNdJE@%y^s8|GWS4a1=J9|BJIR&kjUztKvZWcjA5M7T`ohW^}s-l2FHe>v{sSti%{Hl&2$n69Qyfyz+E$P#Tsa5iO&A&3dpFH=f3?MLT%#La~FN|715#Z zIM;>^;D{KV@w0>#;=*8A*)m)EV7j8ndvR>ogr+1-zS4{%90`;Wu#SlhzK{c&)#+(^ z(<#ncru7h5iT7*OM$j_M>JpeWb;FIa0V)%XQWJiGm<;3Hv58=W=C*m+n^sAH z!KB@L(nbM#3}R8{PrDY0ENp;Mw`q=(`voE0>HHq8k0vRO+Oua8Oca6Be9!DmcruV8 zqcR3tZ}TlFsQ^bCz7uJm*v7!i;d8uyx8!GR@HY|v10A1@)w*JQT>#)too$eAZH$hJ zY&-Fut2{Oo=6;!JiZ+FohPKo^RI-{(@U=MDwZjUjHA|r@QwWs+t65v1-TdomTBDpW zG)4VI>x;vsFpB&VbY6g*cr`*d^hq9B{+qQJwkcu``T%0kF`BgwGKP~UzC>Z)jc*l_v2B$XrRk_WMwd zlA%@vwSGN!?#=n-bu{a6c0IJ{3r-V&Z6qp+A9EIivqCH`1+K3hG73>>)XWl(u{>Sy z0Ha*_!(cFEwqD-htSlqkG%b3TdcJ8}SW;=hMtwnFxG#c$a65Unn*ttZNsG$8f!+B` zbuS4WK-T|SI+U4;$b!9)o$*>0u2u6v{8OY~1s`jSM-v_xj#D`>jWT1drFUm5#{In_ zInB+?2M7ISUMFJ1$*ApO&%YIItC$#IX+}SnK=L^VCNV0e%v+-73?aO&oS${;!8EAWkNaRc3TYQ{4epCdmOpYo5luTcw8 z8q7S}UDfE{^HV(L?ljAt6$BewQ1**V_ii^LH}s|##pj2L3Mo%utRD+~i(oC*78U+( zKj$tBV3)bE-=qtx%@-UCS;{pGEj?(4_Bb;0NLuw$26AQQWc#{zuHzuxiL%O;!Y(;S zi&Aq~Wn52ApPlvu`HzEx3emZ|CU@{Ogdu#{BPc-Eo9+dqn2u=$W$_~@E4>|3A|WPj z9k0$9zhGq{WgjV^VY}(Hhux5F6r=utrcTZIsYwhqJ9Y7N26*MG2K!l#hc$t8T=<8S zq^mqJK8Y%L^0Sq)UP1UrcxkLx?h}PwN<>vE+*Un79Q?1e%COGHXi^RK&iMl*x66Fc z8*~QLzM+9iiR(|~@?GUvygrZ9E#x!mBU<-F)Xe>vL79iwQc?dyuHk{Baea?EP*-%tDDA>GAYx`SB|g08o*+h4u(>mW$?bPJ-hO zXNhGbqV!iAH=yQ^_=949?tMq&uVsuDnO5b(-HgxqiAl#aiv+2cH*j(N__AePTy{s8 zf@Se@G4qI1Tn9wsiUX7cT$hiZu6*0;_1D>X0NhS})6r8+E>SnQ>^>kEdVnaE&XYnC zi2W#E!hq0RklsZ%`gE-wKyehh^+Qt>bl-(C`DnuH{*p^<*c{OhA|nm0H>6obCD0da zAGl!vO{c=%#T@RAZ~(L3)B$G;qR~lPlus0`PkF|9E$b5v`eIor@MT0hoD?U2z{4mW zjHSEu(}9v3m+iN*!+wQ6`N1WkhNZ35N?4#{?wI_=!n}_ofs4N53BW(_8aJ13t&RF`OrT(YzSWm2MsiWV*d*&NRp#5uzdSMQQ1C8>jD-(Fh=c z37%33^~#HW3oH}V4beaLGxtfHKWE7Tfuo$q0ho$CxT$O8whIOTiemB~FI@j?mkG>A z^qx48y|vEB??-A!8&=?nY~p$Ff4f422Fi%BPQe{sP*b$$A^T)&mvfaGvsF zMtJ9T+FJAJi35iQMI-$7lRj`4zfYd?rq}L$mqA4R-HA<`g>Et_%m5U?Sh8BFyDOBw zIA%uFeI0Gie(6s-f@>-`%!e|qOi*%c6;$fxH(3=@iTS_B8>oYokkxf*CI=t>c%vwc zlPz6BKgf0LGdyW(LUxJZTm)<5=e$q!x1N%tqv3GEnoIo*xMd%@hr!m4<%LdTF^v(5 zfMEGKY0&ocC)tsx^v_#I?T;opY$_);Umj?eCYXjiebR~J+>X!*xIhD2rMbr?vc$zg zen(pLj_x|=OOn;fTPi5TGrSwG$qPSTu!w@wf5_sGl3w>KwY92pLOV$WmjR+1&Pjp ztnIN1)#{600_eXU@=H)fqLav^W{|oZQ^Q?`Q%KfT*}oplxjF|5t2(fJ#P!t zNAMM%HPM;;p;B@KPjJbs1jq&km7i!__8Hhpi{d@+KS$c=Pb1XaLT>sH^||m+1*+(L zhbm6`S-x#3M);Dxt=dT#?Ues(NBU|p>eNGKw%Fn@M+#-mad+3n@I2Aei(t+*Ywfy~ znGbI;3ThN67A)Swc`bsl*u^!tG2Gg6@3Gq`b-?~%LavtL8~tDW2d&D1rm{JZm@l~+ z8+o9#8rr7Z{V47KwOBdg7vL3)<>+H(DDFXDh+T|Z1JbA;)9}KVWNlfa-OoiwDoc=@ zwJ|PIZ4Li%7UhEBGOuWyewOnDlXFL0;@Kf)18l@R2=?}B-xdaUKBur?jY38<#rN^5 z?B(s$Wo5$SU$mY&LxFNHH(Hq4dazd-N1x*%LzR7zyMy{Q{mJfR$!C=aOXggiC^w@! z^_;D>N5Ej>jJqH%Jb1)f^Y!%#jZb$$d5hNey0hv00vs;>0B8O}P~r|8#^skm@Su%U zY}<|iUC~{vK0YtUG>Y2Up?shH=oJVu8Y9JI9|P!VqMu>79w+}ECb%i?@&ir<2|8KS z+{nv4H!y9jnA(v2us!bU7uWsJjJ1$zr>hJvX$k`TLwh#QdVT5Jd*9hDrecI4g1Kie zX#b*g@|11ubWO$<20!guraeHlT@rg8Isk7kM6(2xXTUdFI+12y>(qsnd!Qv|rRwo} z4PZ6|G;8S^kwYV?rC>ET5O#kz8nm)JGaa&vuB1_fsC#jAB8tEiULzhi&J+JlOXcWh zr0Ip(q*FRni{ZJ}D{aEXz-99;GJI?y^H`);=kO@0585>E`a@GUM%|tM z_el2(J!9oX8O!F00}q`NfqL|cpSNU9M4Hz@(fV`IRuO>nFKyB_z0T}Wi11R2o+CHH z7L_4}^*&>KZmZ@*qg_E?g3vFk&Ocr~&TFc({1cKLEtB#TY!pNmT7Y!Ytxyz91JWUz zq;y>xILo3Z*D1jkfOUX~o6nn(=<^%y1)z@Hp4DVrX@>Kl0pNP;zdfQt7XF1gf!-c6 zkR)+Cw>vPA2K)Y}TyX%YR|}0pH`YmScHBhy6V~z`fR*!#28CY6P*0*V`5!fr1x$7? zQId)Jg^>32<1#0+F}$8F0?^Me&!U1((A@|Gl&+XU081lp8}f_5(VB(79BQG=C@<-t z7Cw1(uc@o;0VlgmTvrQfuR=Z8NSUGb|G;%?<_h6=q)0_k!cS{s#(X_a_35q*Y{&vu z`{$#vIc|ifz3*;@o!?*F6Iy)PW%u5WdRp**pO`aOI87-!@?mv)5*GK z)|MT>wg(^9$z`XQz)Bp-&a4L53S8Qxn1I>u6ckkLou}iLZumsXqkwDlvwOM}x*-ve zTp`6p>Vk5l+U+%_Ebyw{ntr4sy9h`?2|}dWr%Yl>l`T|?lyU~$?#@MYB(p;9T54%f z)ax9NEaT)EIiRP^QVCIt-ZW{@#`$+(#zDi9lb^KLeWoEEz+OhLu#zLt_s2r#EwBIv z;&IF-Slf{y^jveogygV`rszRQT{1pz`!}rgqXjv?ZOneh>xIA9)x~Pp%Z&V~d3_62 zXeszWvTK*VhLF#2<5Ta1xhlaY;7ZH(ETn8K>*gFmZ&_I^X!i6ufZ50(y9>hxj?B)zcgPovMr4)} z+{A6Z#3RRnP9zI=G2c8#!NCx@&V4nU!a)WsoRtVseQ6%)UTyRfNrRJME1Bw0Yp?O; zHLWZK)enhSXvfiMaip|MMeVX%5?>AA3y_qsUKU#(&#~3yUiVMIcnaUwgU80i@6+sy zb*u&ZJ_2v@6!sX_2M&%Me#_6~%gJR3Rk>0irI{BFo9()9z4{BUrF}H1^BfWTb*nB{ z&61w+Lb`c<(;gy#I~1uOkZ^h&LZWxqGmPa&9WZ}|Jo&6~a()s40F4Y9Xyy{67Az%Q z8`?)OL7D?VhDX)j_3;-6r1ngT_zk`j3v^QYVnm?@a5Q~LR>I8?lw#z>i2kZnp zn$dZtQGLB1_F*^JBL>;SY~ODP1nf-e`;e1cj1C`R39}fKOg3jxMW;iLz6jl(X35QO|GpZ^TGrs`XLarwCbO}w4)R{WoEL6p$z!M ztcKPdCF&LM`3D5an4F3ET?F38@-qr#q~VlAJ-sB}9gMp777AgguMxlmkFxf9PkOBn zj1OdHBkOJ!>{RlqE5(#S^&a;H3z1;KQr}2w!?g+QGq$8F%jW1kQ;mMIn|e%G)*D6A zS;3a+LTX=l%=RKKPj>1^Y6w`4O9#&(`{Ep6YI|bGC)+HPl@#p~na>mfv#68`^DXxmP z9-)HAO*BIs1yBOE3MF8pT@o74i$U?$z+`L5Pv`IIMd(WHj}cZjHwSu8jysP1l$Qqb zKv+3iy`-}*Aky+p3^Cr4>B)Xar*1uAB$K?b0THy2YZ3*T$`1)1{#|6g z=L_oH$pL;GmW6OAKel;hYA(U%H}w$yqR+k~fnA(puSsG&y499Y`}g>2`)GViA2GQP zTIQ8R zm3iS5BsmyfE`OXI!b2TW$AGiUVcgOjov1+kUVvotvW?X&>&0zx+xyo(Vf{t^F~&c_ zJP^e+0@IY}BzXg0v^HuIC^UrhC7*_SNk4Q$Ldy^Nicwy9RAlSFGzq=c!Pc8O?m?m-%N~*vN4>4^Pr2O410n&ek8H$A;vI)Du-NFqqpeCnA}&d)5$@RFuh)7{f#?IJDL zV&SGy%R;hTN5xVCOdDK9=ThsxI;)Wu#Egs$1?{7UEqHxq_?~tG*9}S&#m<*{1`9Q4 zLT^FfH_1gpqJ8Sq%=y1kvNX(iE&w7*XaZwF>BTh??2!PhyyQ|M#hw6X2p)UoQ1-?H zdp+xy_hmG6j>`9a#q>KBm{5}!ZgNGcu1&!R%>^FN5m$5J*L5mCpx~OF^wh-iOet10 z9A>wQ0!f(o>&K1EA6r^DiNtOKK~3X;*38~vjC4|)1)CmXaFk5=LzHK`dw-b7C|Fnj zF^h-x$SuY9jTEut1i+Nmr{g?&kz@&P-kL;7K{W|MMCLKABEX_GxV2&_q6gy)qXuVy z{=9o~oq!&%`P*G06!W?@-~AN}n}ahz4(#e?xA6O0xDWzu@Z4@y4!08r@+cJ`oOdJ~ zFAnIYA`gnRn>m^P#xpAE0>G1$U@Jq#^(q`US&KIm$w-=zdyJdVL=ThXqJWP{(QYd^ zTy~u0xPVh*P?^c=Mz@ECU;F8@lv$524G22-8Qx?BjsoyT4?3`HA&;g>wE2`|^@x^( zv+(UIaxn{sIxmu88XYQtu_U7^*cjRigU!3_a6O=Zqd72cfZg@=WXbV%c0`-LzGPc+nT9t@`i|i7&R84m6^a z8;l~iLu|H@U4pJiQ_ciyjx@@CxM+#0Ac!Y#CC5g>4?=xp)M-?+Ahu3}u`%JF;6Bn= exlQF@LwC1hJ%rc>K;}qB*>8LOBI=wr-h|9k4XHi= literal 0 HcmV?d00001 diff --git a/MikroMaster/20260515/20260515232002-Config.rsc b/MikroMaster/20260515/20260515232002-Config.rsc new file mode 100644 index 0000000..2b10bba --- /dev/null +++ b/MikroMaster/20260515/20260515232002-Config.rsc @@ -0,0 +1,3412 @@ +# 2026-05-15 23:20:03 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add name=Bridge-LAN +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +/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: 2442/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 +/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/657/b0bd77b1\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:15:02 15.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 +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 +/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 interface="ether1 - Unet" list=WAN +/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=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-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 disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" 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-routing chain=prerouting comment="Mark Routing main for NoWG" \ + new-routing-mark=main passthrough=no src-address=10.30.30.0/24 \ + src-address-list=NoWG +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for VDSina" dst-address-list=VDSina new-routing-mark=\ + main passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" dst-address-list=NoVdsina \ + new-routing-mark=main passthrough=no src-address=10.30.30.0/24 +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-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + new-connection-mark=VPN_No_FastTrack routing-mark=To-VPN +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 log-prefix=VPN-all new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +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=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +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=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru 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=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=To-VPN to-addresses=10.30.30.33 \ + to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com +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 +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 +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 +/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 +/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/20260515/20260515232002-Diff-Config.rsc b/MikroMaster/history/20260515/20260515232002-Diff-Config.rsc new file mode 100644 index 0000000..12a0c25 --- /dev/null +++ b/MikroMaster/history/20260515/20260515232002-Diff-Config.rsc @@ -0,0 +1,4 @@ +3226,3228d3225 +< 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 -- 2.52.0