From e4da1f5947a3fd2edebd312a714b9bd056f919d8 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 6 Jun 2026 18:20:31 +0300 Subject: [PATCH] Backup for MikroGig created successfully at Jun 06 18:20:31. --- .../20260606/20260606182027-Binary.backup | Bin 0 -> 164162 bytes MikroGig/20260606/20260606182027-Config.rsc | 2667 +++++++++++++++++ .../20260606/20260606182027-Diff-Config.rsc | 8 + 3 files changed, 2675 insertions(+) create mode 100644 MikroGig/20260606/20260606182027-Binary.backup create mode 100644 MikroGig/20260606/20260606182027-Config.rsc create mode 100644 MikroGig/history/20260606/20260606182027-Diff-Config.rsc diff --git a/MikroGig/20260606/20260606182027-Binary.backup b/MikroGig/20260606/20260606182027-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..e7d863f1afd959a125894789c368b8334083ba4e GIT binary patch literal 164162 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¨1?Kp|U&u`(0o5ezK{)lO)q4Gh zg5t)N2K4Z^P(Q!o9md!9m$`813|D1yu%nheb?O?~>3H?~9u9cLDp|6O9A4&TvKwQA zyf7PHR#a@S8SQ*H{+rm#X)ow90Hk8_ zL&ea~SF+X%LC4+SVo4?Lp(|=m$gMlv#b)C^{z~7{mx2*y`u5D~+r+ecAtdXl6PIFf z42DK^V-~xbdiC5sb{0YX)psdq`}lfAo9Z@_&)+-2vP?=BC2c^9Bhc}Quvi_v4@F+O zlKei(AmNv3&|oGGxKo!JKea=&OGmBQ<{8n*dUf=24UrgHoeEL_4YIpTfF$6<8rS-W z-{vO^`aYn5iVVfnB8n^AlYRa03oVq$h`vMf1+Z1RJG}x1yImj}gUI2>#5%b=J1pw- zd&=&%HnR4oXryH+Bxu_n0ge!CvC_*s@e&D+LZO+fWMddFqCGwYCoE#Iz$Q1%TV738 z^D!uzy%()*;Sq}AMu+Vs_M4y5icFff7J9P#skbvmBspfM;Jzw}(zSC!iSPC-2iX0J zA!=$|o{_@nsFm4*9=tScxX|*YyO)1V-7aDM%`^A;+OCQd77G3Hiis}tDtI6|bpfIm z;bs^MAhRwg_4s?eIXvOB&$W%L=?OjjFz3d4#uR1o#Lg zWKI{7QgK5Gu}5lbVs0(tt54CScvPAF21egco%vKbs|U=aOxYHk>?Ap_|09krnqO#* z%4aQeHsBPtwUt%=>mKifYj2`?sMvz(cB{vH+KR@DR-&kyex{snr3HBvt}}Als0}&S z!(B+mQ*385=mMub+OdFrfJb=o3d~dMEy=B0xk^BLv@3*^k_y9vlz)klu-cq5^4SsF z4KyGJ#OrAsh1#C49J|j|$h}Cd{Yp4(D%NU}V$OTIBN?Rzd3910jii2^ zySK9!K5=^Qp9s~#W9rlm*xl8#+6ax}VlXOV62}210R{zp(5^hceI~pov9#bEaKY9> zkf`3b1v3iCScDgW_2(#*Q=FSWrjo4w|NSt4L#En0xojDUR!tcegtKR{KeiMmL{~MW zYDp@ea@vRftEwf&@fSu4lDOyqCHPGHN`eD=f+b%IKxgEKiAG z3msLJaOVJXj3nqKU&Y0-+);VckgxI4_IZXa~yz8+U zs~LLpy+RDAjamY>0aV-Nr?d>91px%NBelX!w_S*Gkr?CiHC&oCp4k zw-Hg@Q>5eh&<=IUswTu}a4_}?Rho;hSksj0KqMRuqJk$$6zpvx>$~b2uG=N!e=Gl? zg6i4oz)Z7ZPfxKdNf_icUL>in+TPkynYG36=6Ll|7AYBFlYt77mY3u>o&$|G74oP` zQf&|A3k*SV&`06u?@jBVmH#8s*;ymGpA zo)M&Y1b#|E(~r+6^z10#ys2)bc0(RIw}YAVMEC?eDSHy=;`*hi>j$=-15$iXpBScv zIn5c{jM^>|@`M8bFn*2ohC+Le16{yFy^BxZKzm^e9Y(1?h^8;D#{4??;gLX=d7?L}PUrGNh!Z0`A-^i7hZt1lJ zb2fW!21s^A8c;?b%L_4nGIhxJH_15kjySv|RD7aHU|#A3RyC#gIeFpy*Xj-OLAkx0 zKv0DZu+wz>4UHV=qoP7n$TBW@nq;Rvpq+f+(WmcyFDP_a#zS2bWZ4skMd8>3&`E?3 z9C?ElJSqVHKLEhF2w#24571n+FaM?Or#`0-&Tw96x-1&qfhQQa->i!7<;)SX28toF zmuD&#PyPZ#9_k|;YOsV98jtk1WzX-{n+T{=fI4_F!NARBS9|B(II4$N-L- zb?IfyD?F#LuKK#Q=PbS2p~Vk-mAYnwjhmgUXK9(A(#m}0d06#w7}fuu{-M-IGe zMbj_-ELxF~!IP>XpaCDaf`jr&C!#8*p8EsQKv0u$NGXMh{B)6uj;;+eLQ33zS!*jh z_;LzFt_^*>d=^5u*9S?f$&^6m>pdf|S+4U6A`S|G$$F%|Z7# zlatUwX0x`JI!^Xm7lGmNBogEo4@dnERmCcrpnW^y*N+MSCCXWdPrlOWC<~fz_)3ly zaCYBP`)%5_g~a^E6(Y@kLv{LwG}JB1`4K$gMr<1q{F_MGQzr%VTj7)^j+q4N z7no2~VA|r&h%8s{b|(1uY2`t@SHFAcO>DWGvsiV8x?DNacJ^Ben{@1&Gjz<)N^C$< z-?X83J-KX;Dv6RHfRb+fS|Wv0jW(9bwEa5 zoU5vmAb`gkI+_>5+JA7_eRWS>tOyRo8%icQoe0MLT&dwbPCGq zh_k(@P04wCPQ1b~1l~i;P_d``FH83MWv4R=*t#(Ya-&4PV5CQy_~h8c2-vUS05)HK z%2t0GhK?t$Cb>_aod3b9s;y$Cg9D===*^u;&-8SQfK}CKH82b{Y0<#Ie_o&~- ztR7Dj9rTRWQRf<{r)CGhMG1^2PE9?FdT;9D_~5sW%Y4{~lAX|M0@^JVFQw*$C33tB z-2+(zXK?wAT~wUHk_(rkPM3?bgEKTM0GFb&0w6U$y;=kXh?6lr4RqiY7bLa{T`2N- zCM!u6pp%c}10I&k(FX+P&>^Hh5Z~67;eF0WPjMESUGdoPq(AG6i0}wyBAo1|21N}H zS7^?Fd8f2QjQZ%m;vLMYPm**56O%QeU8Z!eLV25rIqYY=I~=8;`@QY5)4BiRMB+u< z)rRYsbcxvEQ%v@6!!%7uYh(qhN$9n%lI}0n*xQLHX%iC>ir#vnlNleuw-MhJ7uf*q zj4b>`=cct(rK=lF$o6KQtP%K;Cs@zJD`9ppRYID^MNH!Efl?vkqranV^1_u?Ir2ZM z=DU_O+H$l0;RC)0$`dCBc9mLcd#d0_E6x`usqzByUcVB-LI`X%N`r}frnCpkT4K0k zY-iFM+B03d&1&7EG9=s7<~dy~>Je9Jy=Q)Xib{qo9U2e*di<9Nb6eztQw#Pj%WTpF zU?YXhc+71WCyN5ExfvhH3%_y#de7y){1ySOZ2kqVjRF!w(5cp$0>7lW)fs(KiW+_R%hBwXqZW>` z%h=&kp_&)ds$!hI3E-F)PpX$p7$A^l$=UwK(<8(JyWCMw-YvmPB)_r;E)u$)E zSa8{XWo#o%?Fs87+DQV3qyVXGUcUQ@>d?j&e~xx9ceK@ zAIbBjxohA&@&d;*V#ra&2q^~$Cop5hhNgIemyBH`KC5?ui{y8y8LAZYP4}Gj)c34g zga@z&aE!tJk@Q6^Ft#vNsGA^F9g6$}6W~6WSBNjXwZW!zph4U0iCsi;_9)qhsz;HX zXMj1b*9*Oj1aOI~=&dChw$ibO_3xK`s@noJalZ?}r{+e9i@BKN-c^vDAgCmdbgP&% zj65qSbcn>2m%O2w9=R=};$Z8-C;3|fB=VN-ol{rSB0%zhdqNZ0LPnkkBB8E%4U0IQ zP7PLTM2{*b2+2l3pY5L<3crK@HgvoCUCy$=`67i*QQ^~*PJb$G;-+_)E9O7|3I4Xz zGZnN?e%EPLVOv8^y%)Zd?k~Cv5d%a#FR^S>zafjobF+v-?~;BtG5!qS&NNS_Rb!3@ zDa^ZqzcX9L?B!{jGTeIBL+!yYFG*fdeD$In zHD&4q)i0$9ptM-g$bvb^Oukl0iP7m|v#qp!aUVmgyFgwx|AdYJP#f?v+rQo5ps%J) zO?U{ON)%}E>uW?i4ERj$w&jq60daTa60zDIfQdnYC$2Q1LJzgAg7??$a?oy2c=BkQ zl;yhjL&qk!xzGfSS9y!IVV;(;7h)iLoz^^}J%#JyFm62~1>z07Xa%dLOlH2)7Hh8g zx;PAXcqo5^=U#YK-9sY2aDl}5&w*NgDvQh)NC%->9l?m0Q^E#?{@|o20-zd`?iWHY zz}qSYcI!C^TvQ#&g6DYN%}W}|AXG2rq~m9UrHHoEe_zW!z2^K*Pdh&gE}x=Tqn`^~ z^8vW#T~nsHlb8LOdU@YsXdIXu3C}}q&S+Sn=sT-{OZkvyqLfyg2F*v(>Qf?G##E~w zKa%}sT2Mzaa1bH}J2+yBU5mU-Nh5M?ltVpOo!HkV6GiYz{+krWGQHZ6ru*>I>KgOJ zyq5rJpn>DK)WQRe+{cwwrB~x%Xtm->k|5t_OdBJ`#a;wGR_*g2+Usu7?+dg>E%v~^ z4L(Yww3cMsF*A5R%I3k%=uA?83B6oF$X!w{ERAr%VALOP+{#sr7!`qBn?4y=;Gv|= z)|1bfBXtZIo{|{gTZ9y=?w=w!JGK&=S@phMoy*O!f01XK=_*)2y4{4KDxIDt6!3-H zFpGn}7^xg_okuN~K4s`>r@y^wV{rsnc*FXE%_q}%Y<0Wlpc;A1LKxP0{#o0#=`nHA z2;go4$$_}tXFO?L;flPUwa_%FRtRV&c_vO!`h22%P`;}D*;{yo;*+2x^6OE}x3jmT zsrvi63wMr>Ma z1P9Qr0%aU72N(nET0}$hS>*-;U*$Fa=AGTWm%E-YQw|$u!lD{~ zs@~St!0Rf|f*1P*r?Io97^6Ws#1;>kHU{*^szlP0XwjUx7Q+oT39m-ILq~$U^xCDi z>z#UiK|OvkS~nu3Y}=jYH<-!20!_^JRe%}EV?i!L%Mey3EzMfoF=aqe3{z7MV7}C@tjrE2bO@2{~`}6u5rTJ zBQwfSanJni#=KGXOUNaWA+r(-6*wubzrCQwf%6E-m8O%RhPR?sUpnL;Amu01n z0E($&ttl0jq#$1>%V+~M6YIGBD6*ckgD%k)8jk)oyMso?hl5IYY$QtBy3W36BFmXv zAJ&)@z%flD@H1a)ExyqjMO+UK_2##ng!Fa4#!w%E(z}3(VOk#kd`??5QzZ2dC^|xw zgGRl)mlwQr&je5E((R<43wP81W)0k%C)WR~R55N_w6paJvMzM*I0xF)DTe4_zlwvm z=tDoLWyj+XFKcfu-}x6}nWGu1s*I?5jbTrJt|zg_f51$Yr>ZQ&(4a~^T@)&*;R_6grwyPI(6 zUpVLIkQ%}NG+2ru!kk}GMAsqK)44=0U!c%wqS?Q8p~Iue84F*cf)RkpAa}cx+`Q&x z*G@@(V7H`msi0~d>#gDGMAxCOI0dJKfUbFsia>0m!-PB9EJ*};fE*o{VBQiY-sl{? zRs5%b3d|?ImP5D|ti;hc>8|pmr^$PqfEQ1;!APF|YY!IOB>D3?V$~#+ZA=0b;P!73 z!0iYUL?gb19Vu2;Sw$C+?Wx9nCW3&WA9fdZwrh}Q=55Il-?%c$~a zYizj6xS(Y9n;j2~!#~gyg1o<5hpu1h{x?DRNo5thrzl@-l1z^f-r#O~Ntq3y^m@nD z-rCV?D*2#>5NyOJ(pO$^4r)!Et2+T1z`khv)Sv-(lE+GgQYzN&WNBi%{@!=FF^>QZ z=^diK;-0|0wrkn;O@toM))G3GD2j`BbN~0K%+6MzmtQEun%XB*MiD-@YHJbb|F*I6 zB|E3>g>%oHxiE=$h4^LDU8&a#ml?)su`-K+@w=o^l|xxZu)9$HVcw9TFljQf1{ZSWZ{U((TOeYGCPKSQFWqH@86 zCLz)u;@MxF5e6h20bFG!rg9k*Y>9l-wTb#1A;wl9OS~{dw-OCdJ&Ka+xi5so)q{(( z(<4(LqiEK*JMQwBI8W#@2sqF=*VTb*QwA>lIL;3dDPCVBd5$DQosw7ZVUVd(TRcI7 z1N`{rP4;4EamG-k@%*M{9S|uT=TO6`{R|3LezPV&V-U@ihv>CT$Zxhb&ll#5CT}7C zIGLF}E-;EAz;UfjgDqkIfeZk*jYKB;Hcbld*_nT04U-v44@2l+5c0moBNu~Mg|NIZ zm-M**#fL*9dP)R0l{Xd){F&?4yu+!Mt29}9#~KrY5`|6O5)Ral!)6U0&O3PgJ^}aQ zNdECWe8h{{ws`@m?GwDE${fEd2)7MOicY!VLcIj0HANr}JO2UQ$`bhT&PGu`k1x1& zllQ{Vc7r&7y;ywmMKe?eR*&z8LDP5JFgir$0hGY-(Ubb{08c?E+;z?(OH_+-r-bsGMID)gO!1#NA zV^?Q*%Qcm2wkybH@f%|GnGoVN7(Kr$FEc?flzB2!1z69xY9m7Q;y&pKJ$z&N|5qyR za^woP&4PVpq~V44H*DdC6zRI9S|`T?=$+X`-4V(|x=$gTU{{Oj_B;$))kr z_b-Pp*?gy#@D%Nb+k6xJbp_Kps7_u4-$yo1{q)GNFYK0Wb z?QjhtJ^d@oaMUeY4X1Q~$d#DU~aoL#cL+csYujm@ppGSbx-quk7nlMn>edP*7< zA3;&*w>aR#YOkbkDTL^o$^md4MynOwIku+;Zw}yim+rl~#stIgxIX<25~g0GgxYaKQ_8zK!_riP;3z^xqi;aM+z* zj_El2;UYsVlaz>4hW3(PFk1M$m#mQk_BlnGpz=Cl_;6reIlBtTx^KxA&3c|304OLo zodb?(?i2f=42yFTB&l%+3yP5)U{7>1GvI^8+uF`*y|#o4v7|`txn*d9#_Q& zab#}Fnak|IPb9e9{5a~L03qPPWVo*}kgZu_wcVKSN`*ubHN+@7G%HC6&c!;x1xdV8dfWZp4;<~-YdcU?VlU^UI~cU^ zcG2Ln&T!l>-3bP>S=lC0ieEuQ2%FdkN3@(mf!XBLozA%X@<=oMtE+^DzpvNPePuba zqniHz6pd_L)bHi>Kz5$R16S%{#tP;A3sWBv5N3;(g705ff^FlPjwZ%p5Ydio;OmI$ zybvVLnrT;U@k}N>ny*4_@F+vJSeG!54v7b|0b##RnzSQy4@%d$r5#a$33*e;C1Pi$ z(^7o==mp>kWw4LP`!@5ee-l^&OMmT7MpSd*Xs?4ZwsJ8+q}$g2^VGha+WqOAcdWCUG_b*>&S^!>AlSDnrOQ}Kw& z^;DxdM}dZ|&X9S#OQ$ZFs{*{SzVOw;d)v1Rc)GR z-^H>#>&-G@UOBpuW_d#SzfZwH_&yy_riZE<;8_Sy0H>#~j=jp^{ z^BxzJca8{wWs!rUfi7MyT4p6(Yh6}=Z+xs+UrsQp7xYQPKL>FIb2cUF@AD}$Ha-IZ zGf4hBnLU3_1Y`b57H>CYTLYPI4;{YFu75OPwja3bfq%Ezng-=I-XQWSAcK7_&{vuFvj6l8#2Ze<l2ZjKZU>Zhe@&JDEcbLj86>; zw0Y!18ORbm1V*Z1pr(@{M0ODc7ci|H3Kh#rN~}hH_5;XnYvk+hazQvFm&YiAJL(;vD>JdTYV07#AT%Ht+ZcObRnkCR(=ujRT zV}=-UhcXj0W@FA^<2rn|Va+p+8z~m=kXU z#aAn579Us*9zG66?2-Qj@1GDZ{lmaD90dGKaV*|8-OG)~F~txSXmJ!0z;w3$XnA7@ z_(&z{C=yTcK0+8=^=D-Ni2#MjE@v>yWAey!%I81nWcR`e|oF$uB z+cB|xphL~w8Sh<;CbUwf#DjNpC#8KDd>sqzXDNDakw*HELJCE3E+ZXJ$0S0(*2QcM z>^GnIj=-gQCrQM{bdLeEhSXvZy-8?$2N`v9|EYIJtGpwQqPO6j2bHABf%!)VJ$fno zs64hTNYcyydl*#C6m#9hrP8gaO{MHR>9zn#al-25MQmKgTcsmT0e1n2{t7(DuAJkM zw&Ndv>jKJh(q?uO)A3Z>HhiLCTJ}t1dW<%)e_FTvroyH0VP}M@IO$3}``u}WMqziB zH~%`1SQC1bFm2=3ge<1!&wEX<%YJ6EGX7UTjA<1kuTV0k9y+DWZIOuv%K)EH3}1Lk zx~cV}HTcNp2D8qz@fnBk7|gHg6A3k7`?{T@X|c*%n!3zH0FePUV&#)Yx$Hk_YzAv*p2{l@{KE1eCC>hsmRA-;%pL*|4M||ItzX-&X+^zzm zS!`zm!xawpvdtun<4I6l(S{PE4xKk4@rrb?yNGB-7Lu!u#yup&2w8N|qo}aNHs;^% zi2zZ^k=t1J;-sV_b zsP*GIrzK{*kWYQ!vAW}rSJjY(5|vg!q0|ZIWXwV|A1Fa%%qHcFV-24oMjXF@ag^pH zx{}^^GmU4|kAt}keI2XA==Lj6C6x0?2IN);DxNuvm4mdW4A9YO%uvpbGn_(5nn*E+ zI_2fay0pG_@B3HXG-wh1=d6e=NqDC&(d*hcENHdW;?L8AyBo9Z{8j{D8bD);>4PjAhe=hsx!Y5cI|1#_>48_yF{^}At*h- zh#?(=IV9*|B1tuqk((BHLeCFYW)|BWC+X4;SWbNC=NIBY#%Z(OQe2vl2)&}TDcMAe zt;6fl0mL)egNJ*fpHUs2M-#<=+Z}8@Sv%(x~qss7A~Tn2cuH$B%%zN zY+xr3-(;Ca2U1ZoY#jY55^}1|tqztTdH0QFd~!TAK)lLZ4eUsv1cY+)7py~Op~Jd?t#hVHpcw_l3Fy4;vTwDM9v!o|m(FK4E-A<74Y+iE7u8~XwU?N%j# zYQ3iVm0l7%u&Y3oCg=#F9R`jlm%nh5iWPNG*da5v_pIXGK2It+MPdCeNB5O+5GY@# zdqQwuHs^RPxpRKUa)~Un;J%f41%&Y<9J&aoy+mzhltsk3=SD`QxtI0fsYNOPuA1P>wJh!l|A-a{jKIqbB-fL#s*qyi?2Wb_u#?it~!9~Cbol> z^~>8v{X!l2APd&f&B8n%mKd;AwlL;Lp1h?EBrM7-XnHlO(AOLFZlbgm-<{0etVA#= ziY~eVN2x1K&3tWZ@Dp<+S|7^nz;5X8tThC1V^(RE7lJKm!#d&p)`EQ(&W=b~|Gg^& zISoxlf1d|bN+Pu_i!;Q(TH+)F&*%K6`j!I0RcTBs2?ZR?{_!T?yMFwFlE|ywIyx;7 z!JuHkk#$@-4+rxCV1WgF=ic14RXH@zYLZ46de6ENaGzvvYTbeS-^u%vWHljxnvC7aRA-jJ|pWPQkMY`&z8-4#)IESFT;t zB8U^cBO=IVn$70oU>Lh+<;IGX+gLWQfY@jti zmMBd^U*xY>P_Mr%Bb3{~#v%%2-6CHE(Pf%nMU&H+=Z%plcc z^jdxU%m}XaVQLli;`WCX1h4dQgUVU(wb8*dJaZAc_TyG}#B68oDxrAgchNhhp?&A9 zU;<=WpFfS_HI5T285F`JmXr8iJ83sdq=eBLh{_G+y0{e@JJ- zgOfM~B!PA4in|)oz8;Lt)ObEdnt?oWx7!df#>GW|f&C(s~947KDsr zYkM!KjM7H1Xz9iv_6>&|{uyUYRn^{@=Sf0iSD}T;#Zr~RzT(V#-KS1`5Mj^w2yttjPrw;$pc=23W4>2N3X@=c_sc znuFMcwPe4fuSqBSWvkXx!$_+r)VFXCqVPHE?i!4y)t5dh*Kfk?7%=jCZU)BSDWjAX z3`JXuJ`_>lDf_q{%dT8oINERcs;S*z0J(_)B{WYZQycE4X3Br2H*{i7cjfKfolV&m ziZWT3VE#u4DjQk!;rZ|EZIlZIo5%L+gm~B0!X#>+69XgCSStYLSKpxihkDc z?ScvrgjaIKq9)bG0JjRgK~xiCHV=((CHl$#d3Oz};hI4i+cVI~Y$%uSJJSQjA+agw zgQ1A%uCSrZAWE&+w?`!Ic4~Nk5*q%u-2~xm1aj-w&0dGhR$hcB{8E*iHr3>M)r;R} zg8uX;bYTHza0fHN@l2D3f)t{--$$F{|KRJ!U(HAwZ>{wYNg;m?+dN-D5Sp$ltYQZ_!_{tq}m>fcjrktgkcqnlX_|rd4_c|y|g(7`? z>t(Ws|MQip=ITy&eL}AsVrI?4fu1a67O1z&&Zec%y?VA{`s|EA*ZvsV?WemJ2Ku-25Kj;<@M1po{`tE;8{9IS>mVu$(B^bO548Dmmbr>NW#-Z3^#> z<1Hwrs1s0^YM`u1r3{yeqB6Z46bD1~B*}}w?crU(t7r_}E!zd&B5AqV1v{tzc-Pc9 z=DGxvj!marRq5ihk=+;D7&y3g0x+T)Pad^@ehdw0tmdvPY~F#N!?+J5P2fF^BfyEP zISK8hJ|j*0tTdS*%-`7vw=m17>qtt@2N!VC8pTTjJ#46Dh0mTAEU1oqpIlI6pueYd z@`LFE2DnxSu|}iau~Zo|X4&#A00v37Se`E%mxFTj$|k`$TI*kY<@a};J>91pHiR-} zDYxAIzm$Z&)^< z9HJ0b2O|;FlWD0HR4MBKmyq(XSmA`VHN9u*dVH8IKgGF+)%)sK!!_Wgh8gVFy&wA* zIl(Chp1F=9x}S$c@m(}H+=PSq1TvxTI9b95&CCcrzj|XC8rFYMaHSMMGN6XbS%n{O zo%yjdkS1D^=z|)Yi0~=Ye(=^6arCD#S;Iyr4)R;YYIL1wfWzX9O)xlg!L2<9CKM`Yoe1SYWEyFn7fjE^;217 zzH{GOKhaQo@yK`7w;xN?F%yY|&s-=NPur~tKXwlm?dEu3()fs_aG9FQrdQi8JL3u| zQFHffn~Ld~uSD$Zp=GVe?GsbjenH_D^8CCMHTz4nTZ!{?o6AZ4(d`~{{yfz@NgWVp zjlGq~*zOPt*MBQOi)`a^6(q~%mQ#zUbs(Emj*&th$5nb3b71-rpg{QgTW0;o3}kF+ zZz#u&{8uNMZZ#QEC3!&U@WahARpdWNxO)XaXVr0;Cet@!6CZKYZA?=+e>yi+Z&7pv z3AnJ2LQwZ(0(9XN-&SR>BlvMjBxadqTyuFc_ZFTLx_dkk+H_eoAG{R(>vkw*^TSp& z+aH)ZOzQ8UaH{l=kT76>1<80Y3o24V>hbPl)fo8O{WqA4P3UmBwQWNTeXZSoAh`Hr z?%&AE^UFV?*nqsVyHP^ElRTLh`=@cR(b2yGF&iP5ogr)k(tPZsGlDLt{E2U#j1F6Z zHmJaJN)#MA)^E?&j@g^v+{bwT?S4BRi+bF?nuR0tOHiy}YKkT5_|_$Xh;9*6d7i+5 zcIX2$X$5_|s0hYWgE65pTP|$uJJ>_rus8b!#DoicYTP3WIbwUC>*D%$H~CIS@HS`S z0ZQ}pH?>InG_fzATHmMXg77Eb3yee4q=#vyfdYT%B=`Lq4(Z$%?Nby5wqx6EPJE7jXgl)zeE>jxXEG_nd%L}1)DZi9D=j)!cMvY+ZWrS8G7ZKN&UL6*$CfqDRoR^~| zaf~)gD@RCaG7v~etct5yxpt^;NWC7Y7#-v~t^2?Mq7LSmirwf((84@-P7N4RBR1x# zm6D|g#XS3GmqN14%<98k2dsJ9wycuGcBLL<18!`rxI|cyU6z! z7{4gB=i2&&((WB|TMS33qJOJJU295bN$Wy(%x`E_LR{bxIspJ@MM=|$@<#Nuwd<&} zr%`^f7Np|C`|7kZ=(x2UZ;ha=&Z{?M;U7db}=Z6Gb?9FfR1u3S-|K6iU74z;K;*G%o5FL!WVsbYsxP!jex-=6~< z;6vZ*vCiXaD>;$)5X3BI1301CYmtLh&t$2GKVgsAwmK}#xNkHX)WsDQmXJ^WOmb?v zO#`|;PtH6(C>@s}IF_+eMY<`Aw$OyZ!fDdBJgt6!B*5NW3d}lNa{8Qxb zWlIwu7>40_@&jv~z$YF2gh3FlA!973{b#j?YF)4r=lp2-IDGjD-X#S2xfl||Jows*voZ;-U9{XX-@ERf7Owd4acouz($_@ zc0F=-*KmOO)OUR-6~g-84X;Zzwp#og8E5DzUh;6-*N#2;m?sHzb57C>`ostE;!?jX zE4AYx0biX5M6;_2PX)V5*~+EitkdIFi=-+h+HP3_l+z@l0}$W*UFW@wX?`u7Ml%I; zauVoM{KUL?Eq5|i92C1wQ*Rb*c^oAQ>dO8 zU4zTZpexS$@{ek;>vgk6C@BRyegheq#6b5CDVQ+U)pKN6ilZaza)eNde{HHjao|<6 zF5Pa!H8|;ASYj0%L>X1qL0x(kq~X}rUb>=Om-U1szaSc(jKW!o+%RyCyR0!}dWER> zC?wQrYYU@2H)17o#RuSSiGx{e(sy0HeHVCG_y$DG8tXVSU|r(+jbZj-$Q10Lmu?n; z!nNE+))D^cu80ud>>C`!5&b%!M9Y!xBdc?1&L1;}0GU7uXSjooVJush^+Y4A8H}(> zWA9i*szSJ#m*Kwy0;7Q~`-5VC?o}mw6w&Y}odX%WLlxe=Rijx9#8_r#^KwYrG~sT#{3CfOM?e8(`CEvfITwU=y8uy(@GW z+^hJl+AvVc2i}8r7G}fwqDi7%RVyzss7^U4_1bv&OSBpcr$u@VFelRnQp)5W#6z25 z`LX?mm4D_&)Cv>x=ZoYUR^%!?Q3)S#%eYF|_)(98&(`Hw1qo?wTQZ%FgQh6hO$g@i zwfCFuk1*AsuZ(s?b1EyJEq;=&qFi=g<-Y)w5B~`GD!##g6-cVt%Q64`pO$h{i>=4^ zrT?)5N_Sc8r6;`+07)HYv5b0qs#o&(lSJIJYph^Lb(_$TABAeFz*7(I;(^o^dAx># zkOCDt)LA_T*RTh5(B3MW34oSqjZZ-G_$0NBHDNIR~#S~L6Yd; zUj1`3PgZK<8C^ZdQ_{e-TOatKBWR4^K`9RgLPi%(Q5&pHU^0zwcI{wB@ydy~+v%4n z!;lswGg03V%amOllw&4mlcbBI7{xfp>vqE5(vT8JJ zN2$|tC?FL?>UphjWTXk3>m3xcwc|95P8BllV&+O|g+<{L!D$;rNGsGGDtTXFjZF|Y zn0|#mX~~ifNHGEB7swICIDQ?5%vdaQgizFSrk#`EHSeOK;C%M41bLgjSvSLR@S@=S z1GLng_@+7ZhWRl zN}AHCiyWQDb1a|FQNv^u4x}<()9!nRSbP>@*Fnod*(HmvS7_yg5Tz4Vd5OX~5xrM*D=G|&f>fv)K7!vxN0SFF*o0trgwBrB$Aa)xhx(P zNBS}x=34xzV75ESMMcb#S@E^lVJ;e83P1y#5eP>5@wO^QC4ibqTu~9LxXFnF6&Ua) zcN#YG;7(5O26cp;`yo0( zwk9!;M*yEt4LpMay7ekt9_epnjn85liwpx1tn?72))u(t#C8SH?lvZsc1F;{ zxQ6(xqPirc9d^2^!$H?gBJ@p=PVvP&x-Ve)&AaY zu|Z%(6qDR+!3&PrA!r1o3KxEpP?N0Fa}YEPqtKZtA91OXFv}9G&XZ*4XI; zems2}X*sop2tU zSkTmoW~C6(xvsr(o?2RTgAjIG$g`#DSrJu5E{JC4sZZdrA)&jCOjNJJg4l2w|HOaP zyuYjjtrBJ*dTgvJeo=aJo?{e?wGU3Le!6pe1Z<&;ev9|~?990$y7smBcd2SCG(h~x zs z!D&PpVp|~_ISflA?L@xE36X}Pa!2iF9$wmn2m)FEkEhC{TpFtPMsrvbJdD9$j)#AB z=JbN@htHMLSS!_pm6?5+e1|tQ{mnRUjmvAc#oLf1E&ouLu**}PkUtPXc8ae{WMyTyT2%0)I)`MafeNE4D$D5pT`i6YS=OGyW z^(j8Jngh7EQgsw{W_MvcSuZa;{8izm&GeWLZUX*7&cXw9I}z9bR-9&JcCgTiZzCTH zR~BBX_HK%PE=SB>h`V%EL6k=X!hP7 zl(FFeqk`UBIS~YaJU5WnB+`;r9TgJpw8aNAnGqG8?A_|W%S`HVYt|r(FNrDLPC)1F z-Y~-jQx&`17N7=Ih0$aJE+@NL0Q*v)n98B`Z2Nqq=P$}AZKb;k7FiXf+4R#T&(_4H zk!m(%1fr=8YPMdezx|EVD33o?XtBBvjul*Kiyo&_OoD-@N=;gg>X7OM+T(urmhThe z1*Qys5?=vgK2m6P7fH^lY3Ew#qf2+9V$DRBb^@3Njx z(nOQn^q1&fMV6Hq2FmR;VP~17V~BJnKqtBGwGIi0c~22>jqj3P(xR^@?g3wX(z4gi z1ciY(XtA@erN0penLQ*RctoJFcbVTAAon=bJ(T)~$W~{QjpKsi-x7C=J>fz#OHr@Q}0;nLW_c)xOaBB*j^Md5m;m#OmR#2?V(R_q&Y)7)S zS$%?kqW2DIP~(=7or4?4KI*tFw4Mx=_4iNAS6Pt;|6)M1h#WS@O_0MH6Q11oF+F}@ z4dWIl|K&etW{Gezt&G-|Y-rY0psyim5>8PTr5=vj>Chc5jR+xJ3U*4E+agP3v+{FH z$Hl|Den$pOT(rBAk!BlMGlM&Jtf*C;l#|0ykmW3i z^ba%lmnl7Uuc2y{O`53tNb+nBj+pnkjLb>E5o0USc6o784ID!42?e5^=uJOHGiGE) zp5@>Tz0UBIijODtSm%p!71mzRUUD*MsY8gN7*%_`APCh5DFi1+8oKh zpS6zM=O)EVcK7$sZ4p7ssFG>1CBU)2!GECv<>^0x2J67}zi8#<7qM8$Xh4WOz!*-r zN+_vQx&RtwBpj*qSr;O^8oIYEQf`yy-M=DS{66)nZo4B;pyv>j$Mh$j|2L1AxAuQD zUUFW(yA#*3FCJy2t*tfMdI?z`tlz&8cg43Z2k&4}bwK20t%FqV#WGSwr)E3yWeXBD zNcNYYyAu*r8)6P4A|qziW}Fmv28i=qz~PL$L*esYcvIj4YbBt3mAHpAkb4Cd^5-j+ zb^3G6dtXBle#Xhsuc%Kl;Z6=N)32&dQt6;~oK&nTCSEJ-P2KgezH=uw_%p@Z`Mu)^ zPW_LEDqOH{J(sML{WsszO@}~|E5TzXO?RtYDTLju`Xd+oL(|mQOB2EA4I)dMGTR{7 zj=mvM^S;$1HiQ6x#i6VRzz3KKbN!9B5<`m&l6hADJvGQazr-2j61h9 z;Th00(mN^JO$Y`u3uSB58R%=x@~&Qzn-Q+R(pJuX_X?%|Y5^ddyb;+z(@#NZlv9uX zM}O)&L^l7g^u3LXC2ll`8hd% z(IrbYZ6=hCjb%Uh2yxiAP?te3Q20b`(iG4^bxD7|kC_tji1TkXURzU6Se9CA%khuK z#L{VB;dI8WEqshe0DL-+cFy@F#ij)E7PVy1mlb~Vk8N&muUy;&J8Ee{FIweji32Ko z(xft$bp${?d~LW4ctc6^=-YYKezV?^tq=38uxw{&k4jta07F1GA(A$A)N2=<9HI=M z2w9#C<^;))=1#HMJtD?Dh>xRWOzMwDjV<+D;@|Qm*mnqxky82h>m|W-$3r7jOIZ#jNg48-+zf z3tQhLLy(z;dDSi7l>|Sc%fa6ljK-K9x&!@yQD%}8U6?V>oWg{Q6YUkb9ITT-JF}<* zbOx!~+H*gH2X`jnvy7>E1A*%HrF*ASdy{#Oeo)1e_RlckfRiMqQYvi zo6%+ExV#4TGUpMI&SyF|UECYK014gsF&fBOhW#WjKY;+V$*wz@wXvY0h^G_G6~Q+7 zX`6q=hVbkK3eY#I7)kP_;%a<5W_V$n6A_|St5vh~ZVT6%AQDF)Jy}mM+CUDLFi(!X zO&7MHp?aqm7Xz|`~MfnEo#W70IjTv*9? zx-{~#l{3Ss7lCi#Ysqz$TPqv_v5a2E0V0Qq^HE;)3k7$Lr>#$T&Kpg-jxZ1c(ySPP zJM@IF{j*}v4|V)9wm`o4+WKi}x}p^ztfO{3Tptu7sLUP~`{HIiBRx)mIUTo%4!HeR z&u)@%~-P9skZjp>zJ0$SCRxX8(TI ziLLfRAK~z#8Y$ZCC3ZXn7JW+8gn~?ZMZEC>3=cM;GKEa>e^PqUBi$BA+1^%O$_XGUPk<9D z7XtB?jLY} z<)su$SYG*;6P|t;+fdyV2@5_KfHjv5hGW9ypL7V>F+$g>QPUX#J~@oL;e3e^h4Q?8UQ-|N$4YH#7;7!` z1e|E*Q*PT{A|gPPNTe|3vAC#-M|2BME(@?}`N%NSG$+J{ZtRoe5%s=ts>>DS>foAcb1oYz9>B$`=1zD;9hL46-B1D=r^5U$?ePh z6sUO0{vA6H0ShrXYLyz{jy$L!FG{j5s4DY}`kWy~*T9tKv!Gm=_9KsQ6Ik6iH)X^C%Z^##qH!#SoCA?)rJ}SCyvd zhgNnm{kEHESBu7z@(~IK zVP4shy>$JvK|IP~;aTgW!x;V3F;p~lb9 zZnw;@m2Ni~)sO^-Y1Hp|Bq<-45)04h`R!>|V$Mf1J^3gK3&Dw*3^>EzEUzEK>7F*n zVC~SpjzOQ_n{(;p%|f$w&~RAx&;})#)LvVwTv@0RJe8lZzcKk{)vgQpvSYGT zsznPp;wFUZOd*vQ(2o_Xu=EMg)1Pxt_d@vW$QC)>N|2shTG-7S&xdmR^ZQ@DQe0W0 zcfU_)2$rg!K;#=Ge9K?EXuCf0*+@}dQ}g?ot?{*nttoKa7=_wR`-L^ZLc9A~xpN)1 z&ovnJ9-i!CB4PFPp(mX3YC7=@l771zqKa1DOl(<0mr*D^ssA{yX!{{XP0x7$hhw!{ zQ)kF$X&jpO%&`*}YRAhh?nBO<)yW`7i7JUx`kz!l7|c%l%%q_3B`ScArx9iD%j}041Zmo{dK{ObVQH)!AbieG`Q6 zmS_p#3$mf=Hhb4{wKc#oO3z0M_b>FN(mIwR{pCPTDe)n%yKB=Tdl7;=P_0@8Dc#bx zAF?q7W{SwaCs`67(@iQ9X(Kre2~e)Iseftmo&G zyVk9?D}WiFj9z4^>LjY6{rQG?D!1x?5v$*AMHK@QQK@w3iO!V&h1~`hlj; zLZ^!)TyGr98By+ROs$+Nb@7|j>jR$SM+PRl^D|zZcA(XR;Iy(;@_nAUnB#yxxL`CQ zzYdlTRy-ULUQ>8^u!gkz%YalUE6@XQT#l=8f6U(5Cv|`5l5lOL=%f8U0|J3|by%IS5fPyay zp^Bu8b*yM?0sod!2Mm>Q$>e#mq>t*Rx7WJWVcRY6Ke`t~6Wq0i&ci(ZvP^cok4&d{ zCKOIy)&uX8_K(>hs8dVPgvwpC)9h6MGv!Xm!Bxj&gf5u1$o$i`_4K=??Vre?BBL4O zHJWCbo$J(PRLR%5vP*Q*z@XLgqGAv17>7r#Zr0FtS!5hom7jq9e-7v_o5J*xVBluz z$N`e;6RVeWr_UR)cl!ml?`a#oMC!a*B9j-H_L+np;L#Yq3jJLkfG7HeKPXW${j&@D zw)A|8io#_hJ9yt%_Zowi5h~LX>(8g%oAsw4yf9~#f<<5~6LT>P$u~8mH}IEQs>4eb z$S_$>J~g$V(*qCrfcsF`>AGb!8AecMphlHPi0u|74L?*b_=~(vv6m}^=~c)A#$EuV zuNmqrQSDIhPO)%Pb~nI$%8C8}$=p9IDPAaCkI}X8a1>q6#-FR4{-+ya06OlVRyE*3 zeI^GZz~jbA1G~OtL6Wijg9r7>QNC4c^@VTyQ6Lw+v_e9Bu%*0*ZLS|o56oKKl@%F2 z)|YN)@>#aSS~`h2X09YNy*BznXKHH{QX~W_??r>bQjQ0Yn>aV{)ak-i9o;9%Xri?7 zt>?k(o+lYNUP)%){0v!Od=;9*a>&}Rn!Ll_dLjR&*zUf`?e}&XFQQ%|fNe_IhM!bZ z#0jDj<_^c~F+h+UoLsBl8RO#~EvI^pngdvtDhKkCHdeANQK7h4h!Lxwntopqx4j2#ou+vj(Uo#OJ9kwPf)91zQBp zd8~2iyEB@j7j3+2us?mD%+pYi@K^V=LCei%UMZ{1cJtv;iqDd}?(d2xmVuQ)lYb6u z05qZ!>$iS?wu8-QatG|k#00+KNV);qXNKx50ghb5-xxDMm+m;<639-fSjsGeHJ59x z7Fkdf`Dj+eh_|ndqwL&y%Ub0VyEnZQMdVBXBO`O=t#^DZW!CdLqs=TA_S>qtpn4%U zJa?>eygWAIp_P|!#3iPTcESG1 z$RbwvJv|VHyA)Ki9(p2x|;Z$pT_su@~E+RY?uJnjCfg&BSDo zdjcRd8znn3Y9uQbv1e7*1^DQMfZyEAe5d8b_l7K8x;Wt_bD=2CFG_9ib%7-JXA}$n zKoY)E)+supgw4f^be7R3lev@gSizKu*Z0@8_ibf*o`B$Xdyz|je)+)F`HxdBRG=Cs*IocZ}aXr?u zW!Pd50@QaEJ43(Nlk{(zM$#I;KJ^1e>v&}ryN$>MPwrV3tGSY&a}Y@2d9p4t%*D2d z*Tg0_rB-lWWR?y07o+FsV|o<5i4fN?FP@=qQNLx%gNsC4atO`P6HUmW>q~icIy{K5 z8KEPkNVhD6GK%2(-POdMK%oA=8Zz09mF0KK7BgfdN-~ zzF4|K#S>~ql@Y)?l*=Svq{mf%-VvGP7dMx96I(71fq);QE=uo*_uA@=HSZQb^NIMy z%Z2S}pKul0{uEW3Bsq^Nqrpu0*l;)aXbGl6QCOd*Q8Y(Fr$=Gv%_f{Ndy6ll#+9)ms9UA=I9K0WGO?7w@lFWd-MyPG2vZ9lhSl?(gtXd8ln)H}f zC`3TH`l!zb2yy8K3U^L0V^th>KKI8Ebasz@x6tFnvRdb;^NIdrwEb;fS#+=42NWZr zg4xYRk^7jTf{pO}t_X+vJ$5ti#>A26sfJ^kFRqr6L+2ZbkjZ$4jn{_pjU6X7TX3uS z0{(yWIhn(x=jHmQu+bXmMt04)yG9KFg?n$hro<2|aRr-j304gKhTnMQ`V@{WZx{6j z`s~w05`esdJGiQt(fbW>AO`%dq`1CT9@E?o+Ptw#tgo_$f9s(Z?NfheW$vE%+Dg!h zHZjs3v*jkzoRWd>u^Z7%82QWAx3|P@&{Q&?^u61~k_Lt7=?sXQ@Kg=bFIwBzQbztl zivInAvgPFAC^rO8=DR13aUym<#*oodg>E*2SVf333n9#V0+F7{DFPXS$rB91>W`F! z6c;?f=R{u5l)ky`F~HcY_0yvlPis>sHGEw8a>9AZ8)qK9gT=oXWOY%~y<=fX_48qd zJjAF7XCs2yON>~Np|Y2$BC2bLcov5u3lVouHj^Y}rXMebVrc#!Y&9A0haY}2Os@#% z!*`%4*n-UW3IVYB)|+g~Dv+i|;FcI?m>;H+^?2Vm z$mIM^zF=w&2NRF0UkOLr*QAFJPFuk_n8f|<_P!#Y(VGz;sne4K6?=?a`FbVUDk%4l zkF^rw0?f@ZO@TSBXVofUC|BHBjc+Pso?mBu9tzp{~lP2)8MWk~<- z(M`Z7zp6cHdu1)P9qv|d2!zl9V1^?Vi00BFY*-siD9(d?B#J@9StIg#1LoRl2sJH9 znbQp4qlq&3i*g#2@=Q(E#4*=kD3uP+4kQX^G1v~%nX`H!5RQ_k-Qt2?>uB^=L*8D; zAhN2nEeb*Kb4s85tVnOUX_fy6dU4DN1r3mi@N!v~4tu9Lc{2WLiK^i_tmlMGl6;O> z8%JN4&qc>W1s~KZxP8;g>9Ah_?|6lE@XhH8`8ER@lvodbZx89mE3Ku;<<7yXeHF)r zD{5wIQXE(e_P!ZLA;wo~ljJMR3jHvTn2A1JkhDxOoYt*p^-+B-EoN=5;~(wTLBSB0 zm9MN;cW=2k<;g{wQ&GFcz0V--Gb!f={R9*+?K!!6Pv2*)p*o>8`$wR1IQjW}f%1Q3 z1gBd2Z zQC2s5YGof`G>jd(g3-qh@I8xP9PwAS0 z{kps&=w=&oFntditxV1HzIqp%qpqV4%a&pYzP|z}{~+O78&krIgVA3PV#^YWlxMYn z_p|XN<}h%1IZ|NqM5lAd>c{#YG*JHWD+1}vh)~Dxk(RW_J}%6jO?_w071?$_=1Q_F zu_<=ED5$#+ek!;RXG(zG*2x@CtKCtF7J>PzHy_ohKt|68Q0-XFpd_<%%I|ki&(?wC zH28Lsz_dmC9?9C)X*fD&T$o#b?&!kRsO z;s8$P3ZOCB+adY)GVKLz+XLqnX?vt)@vsJa3FZ;z>JSknztC*HL>K#J!I`Pys&kmzR_`}Y@9K?0_qpH-fDQ-so)^6Um=;)&x`y;)MczOGk+ed0 ztthomWbDM<7Hi39eGz6Cb8H~x?#h*oSE^6Ck?k{hrD1|WQtbaBsa(NyQ0phAkpj(a zPrmMZs*OKAyjRR*1#S87+@2BeT|m_W|9bDPSg2|d2_nfA&e}Xa6?_M)?VN{FmDBlf zRd}Sjix6Ac{*>M4vadroD<`N~IB_Z2pX4|Upo^(Sr2Mtyg52kO2xGfj97Z1 zVLDUgbFq0+^bfPqk^_i#a5@&O4ZD-AKZV3_KGA&v-{y$G5y7bslzE9Yy&ZNvNBIC@pV3n-xT`~^Y6q+3Y@i1MrD z#K@A{=FX6E$@)p+i<#BQ&>4V}{?F6klFLvux+KC@DCQIW^{cYGj^{UVc zaV|L*66ouyI}LG)-$ztfKcZbwxvh=ZlaP&0@+JKx+{rv6AK7^}KGPm&+;hd92iB4a zHkG6zi~zU*Fls!y7uBx?E47uA=%P^Y{Jb~4D8Pkc&f(P}cbF1~v20Yd(UXQfr|>Ny zjxYKEg=?+f<8QRI!PpVh{H{u2M1o?QTehl~nsg}Q?j3qc@Ri`31silC#FocdIT1fh z1gMmYAWfkn8>*)Uxnn{WFzq4Y%)(kYXgf(kzh?5 zlpc7Co>4Q}Xv@6;H%?rMRdz8?3&1uSmj^&m&Nh;2n9BgSobJRMXYs`>$PfMQEH{*| zx~w$PKkUiJp;j$5AP>6FgVJ7H#^}EX!#0ORzkD_=$h62D1d6XKbPXaUb9mj@OMgB>O3!G^F3$kK=prD9=C+EcrK1Yrou3!Sx6olP>0W4XJ zr>R{9p9Rk*#`*I+`A3ljk7{VdsDw$Vl(9~0qA9JogYy@LRJpquHNv}YmTQLgnpp+e z6m?CKhs*%h|H^!QYvYUUwCa75+Yb&xV(G)VAiGUbQ>`~Hy1K=AQub2eL{iAvTC(-{ zWP$J|^+xsO;F>yUQjv``XbSvR&kFayMOw7Nd}$G$|>VMA$6HI!|YdnB{u@xq-rYuZ&8`5>%D zYJ%mVps#LAT7X0!uuil7%+=PDQe~=c?qI3(q|-h@IuXYOsr zDu|Job1Z0gYGH1Zcrz@MtfuZ_R-d22p>N#kqOzW`=cj!ju2=*CovU13xdN_BkeyHZ zVW=-^m*4vn*Grfi46$!-j+ct-sN1064~l3+2Y-Q&l@Si?7m8}@32S1rkA^trqiBozM|um}nM#8j<<+>qakKOfu*cB*XmJ8?13Rx*myHg}T<# zeP+hys*fY;U4j$25$R_VF&t=L2!|=J#D&^&nI2E>1m5V$;sDhtw}aFqV?kk z<$i1l!gF$e4HWd%F?Q(0-`Pl82FARh!0p#&{%WkAJ7z4hBsB>O`+9SEz>0+*#Jf zJ1+K%#AM}@3U}a(J6=v;xV=843c(61TMG_BS7Y_)h6-L^Fb@jnQfgbl^MvuL4(-ET z0+F~yjfW3y4@V2yyRitz|Nf~{5(1U{w74>C;`SSdJ*HPi{>oK!wluwi^7Jtva<@fp zj}GT3Qg`3i1fkbpcRwt80A+XO6JT(pUltl|_Cfo z&Yz3SJNS84;}OzWNtv#EIR1?MD#mUJ;xwP;6j;bw*amfDlkeDP7J-3(ZNAhoD&68U zdHqu086C{xZf!mB0jYME`5e0D8NILVS-CJi1Mjpott$Xgv#6lZh`j;T1V78B)e?#BKGb)iiJ$yu-_vVAq4}JN zva+iK(LR{D&W?;#rya6Vb_vL65p5iZ3pjy_ZDpf7I@e_fUIBUjui2QKll04X#Y%3u zjl0oEblB%bS$Sa;Wm{X#)=-kiW;kbQmd+}`e%1(Msx4R9C6$%2c80Wum} z)#@aGy^tKWs?ZOA;wYsbi4xoma{@jUwC-nXbi23}8bMrRl3~<><1W)5V3FQopN{N= zL{5g7&{vw;&{hpe9h9)^(ya|D0N?#4OTl^uCo>eEBm<WOq^xVr_~ zztOn=KCBJCp5JC7hO>irlMr2XeKAKaiQSOT_Wp!oh_xfwFWT2abt`2l4ntv)cz%2d z0B1ZX+u#liyJz?+f0_P*$d^nhdKYfVg_K&_u%WG#8+@0W1M8wW_4f{c_F#9u*o3~s zz|mR-MJ^nZH?DKinNUL`K|l>J=J9>4j}b|cTgx8`A#l0?!Y8`>h3jK(j4>k}D?n=j zdJK-@BrzI~mm+|&B^XZ(%Akigxh^kyLHW^PUnp>pxQ~MUm1uHv{SJt@Pcv*D0iu|4?TYIBao zAP2OtCJk(INNq@iGH}Ol`$5Htd0pq9zg#(?*h8Nx4DVztfI2Qgg z%tDH~nR5iZ!9kFZ6chy}L^h3S>ku6xjfAXrfSF={@wO+)V+g%G%Q2gvwpVp@IPaYrj3uTWUbQ3NCfv0Ad!VY$QQQL3Dg_;jE1{F;iLAfWk8NxD=$~@Y$b=yGo^H0uXkm z%$bW?-_`yWshdD9#w zn47hvqoBOI%7YSQXJvm%7P}BIR?P`W9M7;W?6{~D%0kIA4)Tz%<3?F;WszT0IENTo zJ5wOrmZ%`q0ksJ z5hPKbvuVB%K#bY=y)!;MsBD4GmrEe`Kqm{8#de`xftXTGBF2WK@5VTmE=Ll1$0-nVR93}{2w zEVkJSXWa>l=1>9^N_eOmHSTbl>ck_nH)yU}E5Dv>s?*0WY?4ZrEIa6Dfw+6xZhxi9 z*XugFe>jC%-!Y7i_Xq~MK$o5E0|7Vbzq?Y#%}1WytR!aDa1NA(s+eC2$R z5p7d0%vm$pB{C}%Yk_6rn(*aTook={)tUGzt}@zOkiO%hll|9Gm$iRZPCiLo{`nL? zV&(*<;s8Sw#5gs2f#ZBretSDp$?HCf3Zp15+ewdK%AP`S9zOMCpjBfo3r$o|%aw`W z4qo~r`m94kORdX(yGDgrowXS}ACA6|we-G!IE%Wk%(BGqIRNFbCYYbNi16Y1PbPmW z=#$#jFi9b>g;~6w9nQ>ow6Ih>6{u@O9fv?UG)@M|q%q!7n1Du#87LR8W)CV!>1>}f zL5^_;pgw&+AI8@d&QLwyJ1_osZO_RqiRbKLonOo^O!h_pgiCv0e^aAS*Xat=O>Zd&8uOO+?!f+ zA$}x`Yik~Q6Lk0oL9*#5njLo->sZbXQ!q>pc>Ey;54a>cCdkd@;~bWI{K9u9Q9|9| zNc$K>1G;WbAF!eqFt3qhN7C^kI*}pD{){u#@x%?5(tRwaAH&@evF4D`4^4>)X=#wO zz2@DVcL~pTQHZXEO#EteGt5<-p$f;zgp9@DlZL?Q$dy6@n@66F^!E4$AGbv#g6#o>1nyQY8U|nyGZFF zAa}Bs-FLDEVN)gYRmu5cF*B|{qkD`z;A(HE@Yy@2tBxTdikcyiBs%o--3+!axEu}H z?JsM>k_90C!B><(JO&p3gCCOQmVt4wlIKTj4K}+*^DEXZ+Be~AR>Q5kbl5*Xuw zHLJiD(8CtKQDrA%Y&s_#ggMqItUc<~sxHiv-gTTEnbEYj((-_Xp|PU6YiWT)dZGN= zl50m7Yz|v5CJ@8%cdk|HVgdE$<7Cg4gU{EpIikBPU5Npw|7I=6TkJRjC+)8YloUfs zC~)gHC1d2Ba6893UGC(!583#u|5L1+ir9Y_rm&o0%USD=%ecE^QW|*P=oOiTixKb1 zZtCl&zU0Kqa!nyoTqAa;557ZR-Z@~_pQfi;nD9agsX5ye8Zden(P!SUB`rn7I8-cH zS8)EhRA0WO-U~ER$Ltns_L~1AkFHWPI219YyV96E(u%4xB;zl%xNCD#;FYkRaun2n zd?KKO${^*0#M@i~l$MxhSb=>!z<1oKH~1qHm7UPE4SUIE@jjnyQ@I^t!UB{1qFyJg z7N7T4EUY)0=>`4OmXHRmf&`T0xz*gsz`?q~j5LrW{hM4cg)w;>LQ_(E0TI%N0Tf|~ zETrzUFs{O5bwSK;9=9B@v{XROw54U4dKy(eLm2l>n|aJL1pGi_{q%=k0eYr02sRj1 zy(jB^nrM@+51zaBA74YGupc;bZad}cXoA7PpmhZr0loGXl$+6(vY@O;o_A3`cdr{c5f5HMHQp=vcCLM-O2?C0n5-wyy)`t`t~) zHq3tVNs`p*nd1+Kpqd3SIB&*Zte#e)mL9Yp+$>I2F>}XFXq^KMQ7?~m3f99}lrOo| z;|OtKzHD`gs|%zDprWTv84WNz%a@ex#{)QP2Gw)^uO>aC(NoRwv3ZC3Pyb zBsmVRz>Y;#NZ<0kyCU@`r%|C?Eb!@yX_1(q*IS-Z(#Yg`9O3+NG+|-5w?V>KQ;OM1 z3o#Sogwjm^8w=TjTlE;&f4`tNu$hyc9EFnP{hlOKXi#doc0Lez{}6=z!C?5?J$$R= zfXVdT^5ZN4Ics;;dhYnw)m`kc1cA7vt-CB7xq~flu=!S87DNAFo%K<5e5D+@!QIX-lZu{hk-fyAoNZG@Cvp1NSs z&MVl>s8@_OzemuH6d@gz0O1Ymt;%JLxbA$@P`UCNfTF^qCP#x_vC(W(cLiFLA7P=B zYO>nB9@Puj-+GyKR(-?EKGoi*Abd49wew6d+5UZXuY zZHfm|P;^tZ#L&b6KD}KGt6Ituy{X84_u7GK5o5L3W2V~rO%->zy`k`dEUy*fbme9B zpMeI12!HK>ee5vPaaXxMxeZDc`FqW1bHR*Idl^RPjGEFMkwyC7lR`O`?u82wgg|e6 zTm|h?*-<)K{`i(3#$s#KvG4HOKTK=!v7L%M9mFIAD29JK!LZp@-%(E#WO2^nPik^4 z`T^Z&iAT;~z=jWhPwKZg)pC9>wv@+rWgSjPsfsSVvF8*YT5+B<))S7IuaZ!UaD?ui zR~WRgR;uJ~&TsETYkjD+Nm$G&>XN@nH_@9KwJug$ zDRxomueZ%8g@F;wwCs>!fAOVCWrnj^_@C)Wj#RKtRLob{l<(Z;oCZUwAE)@+ZRGe} zm~mD@JLHn$Q|oAV_)YX%g<^)P6)5psir_hHJ_Pd}avTyQX@9X~!p`b=mqJ9(^g(zm z>LnYnK_dAJGYv;8Q~X|2cHHfV!_}RX5pXj=$)cs`2bLooEs#|fSu3WKCzc`wFPT=Q z`a%4ji6B0VN%=g5YvJG$Dnb}CoPU@eDgv3e9H)v26+B$*@(3qv?00eN9QSFD?AG}| zKhw3DFj>HJ{RHjbR+2!rs~YOLSy5cSVVZs?iyea*!6G+t*525MSSiHAR}}~VDN%RN z>o4=`o~2+~H4HcDWI~As6yP~509@`%nRaq5BIuzlkBsgvx0f8_FVxN*inrhB4tdEl z+(u=19C77~(m?H^S-!0k40{!K1S4AfCFBT~tNJMR* z{0eSycrJ`rqYgw4MXyFlyK;y#IlndB3U8|hba9629p_h~q;zKIqf+AGrxBmJ*@o7! zd+7-U;OLCA5{8r){W3;BeiiyY*EA!}q5@1-rULSeak8uJWNAw2IrI+Zu3sRzZe?&gX1|jl4J1(pB$q_qLFB>w^Kl_tAJ>Wul9ja!hEZlA}@t zanQ#_p{^gqcJS z&oB)%gU8m}kf9!F!u6XQ6=EbQq=>0w=zl{p zlWJ2AjrarYs}!ORKD@7@7Jw!G5m3~LK^?|p;{nyI3u!As^x@6r-KFuaAiGShK~ z!V}Lg8%{9VBcT&5xvb=s=szT=3~)b*%**JT1s$XmZ{l zkw#m9%zT&aIjoj9p;etpAqAX(n%u$(M<-C#*O1IhxmJ|~zzigkyycG0&8SNHo@TXi zZDLTnVLjDGwmVpWa(|wZjTF*DmLkgsyNPE$!{}O)W~dQ%?k!h2%^~T?@}2QfWz* zF4htmZohQfT8<|FkCZ$?PCdgXr-U1gm}fhg!SGWSitl_Qxyf0I@oweHMA@wKRhFA` zmdUEA3)VBL;6H6{4AFDXDDE4mWln?$F85DtsN}Vc5clB$#!0Ibe~3O;GMZ?2J`fQ9 zHpXObWx+L|;!z@dB)|k@Ad{Sty)r(BE^!22M+UPX!fFpe{rn7i(KGKr&kqcx4?T~` ziX)AgmqV^-KPWd|8}+1sD?}hIW#}PZX`UALB@o@e2AhOUAFC2y z1$>Robc(-zRY1R}>Ij|!OgNTkx$LvSzwTOc|6Mf~b?0;q<_(%408!67`p1&x0V9ME zdqtRk#47mdD#H5|MNK~9hsU-j`Cj5qVFY^#rmS7t;dIRFO@r^=_?pz9Z(W7dNgdUJ zHPG-Y7WL0k$}c3VCnhZdL-f+j4P$^6FDT}Ho;^l*OS+8f`h^jP;(I0OS^`l26`o|& zs0WGgkMTjT8`I5^ZZcI)(sV+!55-b&PR-vXhA2|BdSV^L?sd&ydIOM-d3fZKz_Ygl+G_PhEzRH6F<{A?D_3 z>Ihm!khVg>?yP4=Uu*~V|9v*l;a?OSgg1^@7Rp|WP@^&i4|?7F6haoEtcds29<-3TYH|DThNTL)JdTli{uyVu)L!@mL!P}n z=t={ct)(hDK=mX6tD9PIQ%c)4mDl1vf$?k8Pi}2E|?Fv2VgN zxNTRPz|kxcmJ(1<8z+(ew;=shl2IH=2P?C;Y;kP2*8tEev0Ku(kf`YSKwW)V_YDle zRK`QZm%V=&`LR=-}<6Mkn0bX9Mig&`Mw)DbmHo%PI*5})Ars0fz4 zAu&V5N4DzE?>FA<675<;`PD*_yaj&YXd&}LQ`GOJ-WS$*e5`P3`gegV{A`laSPbTBY7ozZm~`={v1JFnc@9=`q(o#m zXuoR=n&lrb?;l*HB(ZDVUuEg{<0cHsIjsSQl93(kUbX`B=2R@xqHoCnXIL9f{AlRf zlIW^lqE%yXrkSaR+*FuTOWd%tHJA(WTupd=Z7G6C`vasxPp+D3Xl9?TR;zU*&k?7l zYMQVlrpPqht#^*+RO?Dq+M#5UX3WI8h4~Vtvd&nj|376XGIRE>wTwxFRui*_X#!G? zo%<(s;k9y`DFb|~SL5&!m4*2DHP0@vHe?PaEY@!injizGye8H@M*MdRm0Qp%nbXGl*$hA>j!JMlrW_PF$&RV8 zGoww9Oob?g3lYcw5EYS87NM;4DMD1|0z;17w;2CG?t)LRKuGKy-TNmNt5Ye~?6MTM zX{VUsZK_K+_M#juona3Yu&^!T%s2R0bo-Xj)1X){p!7*j(?K~fsA9noXv$UBN9vhTzL z(JoZ&{!h`tXMcILsdXtliN4;&sWZkM;yCkM$zP*w*=*Th;nkgJnCVNH?S_;SU|ll{ z)o-=Q?F|rxfg|rEsu#)*h7F4pse<^go+yiz6~10l{;qMWaGilx+rAI{t1P}B>O_52 zKusOk38a^mVmREizalX9svZs^xDK`H_RO6iDv<8QGNlIO=gI7I4I}?&`LVE5mQm=6 zpos6QW}m*yn0l^mt|_kW!fHTrJsQ1i%7BqQN+1A8$7a#T*ul+yL?F45O{L-HaK!$;$J0sjGLuk` zL^Q?WmI*m){rLPU+Z=*z=V40hSmZ$jRa&UttPEW(MN1wp^6lLvnNTK{m(&}S5qKq+ z&-Rg~vR9*ZTlO?l z2p3<{98@*yn75~*gqE|mHaq+qs1*qDV_D1YdZWr*avlKf=12J#xaOv`d34J7Ric}c z7r~!F-kaiFuC$2ybOD3T-rTkR-AZu+XIL#_vkFA#TRxM0ZrTqR)atYevF%KLu$8#qq~u5DL*GpDUAb_p=89}LHq zzbi4vo5JRzQT*F9e>Gqqe?1?;ZX+|vZPI5Vi)%B#7{B|qyXnJV-6E=+$anNms+0`^ zY{xVw{t>Lw3KskVSISM%^oHcFJaPqv;Q~@i?H|Ej%};?=p-s3{yl{nd6k+w^FSTx2 zN&f^q&s`HPHk(~wi&72Bn`j&MX`C_9TwM6DZk7E*Z_O2<+{#F6ROR2-x3kX{i9|j! z3EWHqS-GPH`5SwH@1|Wxo`Sa0W?q(bkx;R%34m;Il9(C-)+4IXN?bH-vn4cH!14EV zht%q*!3fsRo{S~4m5RE+?snufXD8R+3k&JO>7BmyV^;B05p-`YmfI$Iexf}~k%S2? zS+qwoQ)dfTxkmk=_8rxL^(P_rHnEKtr-G3x7&pNrF?kT{px7{`I{Tyt8gVT$_mSR( zCFAd*wi@+!&r!EZJ?Ev6leW6dVJ;Wd4piG>_J%wfE4EDjO=5`wd4#jPcWQDMm8Mf8 zzOV+^ecs|M*{Cpo2OZo?a+g>Poq9ie>mmo^;dI>`d~yYJ9+79Xzp4$RJBxzrZxJLk z8UKty(TV5&!?)dQMZRK+0l0uWlLH72qtUBzOjOSr#q==hyorbqejT1;(l5N(5Ch?} z!S8$9%G=dUyZ&ne@XjHgYx&LyFa$^=gy```#5ygi1)8+6=yHu@4Oo#M`+9W6x|Tw5 zI=mC1ckL#Q@p4)I2`hQDCfsLp%t>v8_oS&S>tAbw4IXPaiNgC4CwHsu&WCZUho#9Cg^v`Poq;86 zkrrh8BayY#>if?NFR=`D<;~bZ;RSb*&*p*9^^2%yHl+|mgQ^FHgFv;)$~$|j7mi)5 zXoxNK7hIhq6M(?mRiI0SL7_-B#%(NuzQT}nEm!zB_^%{}KnF8_$q0=I4H>>KcRu(eCYJZ_@I`hOLS^Ie6;&T?j|q z;2-p4BrljN7TxiIB%#HqLA~ zYpy;r9b5N+akw@aH4CF65b7`F%rdjwfvlVKC{c=bH6NI`ZMUN<(fc~<7!Fwmj#!)v zlroGS7zj1OjuM%XTbmM-FiS^0KxlP*2|*^(!ymH~pQ`HMs2g_bZ9sN5PWN=(4#GJP zL52{RvD9<5CT+>&bmfL3W{owhrjf$rNY5_>+UpabTHuFy0q^WCY{450L>+i5Ct;M@c8dr>ENwT@M?0jRI4{dkpC+CqSWvWa8mKowx|5NF;TsP+nG2>+ZtKVSrF zcas^8%gWJ+4eX~3oaJve4qrBC|8m)+b6dXo58?3sMwAV3Pmx2!bkWYT*F{jP?c#yij zhk@59I6J9R%G{#?x=rk^J1KJ!4Bz0J=wuLNyMafF>l(*pF&T?BC60cWUj!`c_Y(Qh zo|H$}O`6c|nwp`!&It}$?Bc*!At8n=Z!;~YCbU&`bXG(+~KAALuKfOcOV*QY3cRriCd~HgW6h+tw(v^a~aR2?p;%9WfNd6 zfr4*uNPCCM657`={RqXo`0ksdST6tqK>fc=0IS=ax$rJY*QIgFNABgsW&xzII8*3)O{m@QSFTfo<{+ud_U9P21PwI?tlDWKY-|Zq_fwsBtG2&>&%bgPY&byNZWoDSr2K+Ht?^K z?1Wbk6#l)p|B5-?i+P+&eboVhwiXADlU9-ussSF2#z-e~${wiToQ?8hD3U^zoIu&% zQ`+g5b&wyo?Wbe&C4{J=qNr2tEHKgO(1a2=ovHSvkz>nrFh)4`oD_~zD4{h(X=_iQ zjG`4C;A(Iz?IoG%YUTa5@#aOadzZ+}t7+^At*#ZYLc+bX73_Or7 zf{);?g}m8tt{F-d1l&PR=p{ zi+Cy6hx_T3flSJFfkyu|E_-9s*Jo)=tA>29B-xzom#M&_3h%r4`IE%Savfv0x|#WB z?1=GKIZuLfr^N|#`129GIV{o(bb-g*j@;lQ_z&ytQ?N-0f){2@Dh)HoqwEP0rqVCm zU-t;P3LFFDrB={O;D(%fKjdggQ>-vQ1wh}IUG+EKPRdWo?PuM_YF$p!{cnyE2i!AD z3>@2l6D0iM13jC;M9Y_=99YzWkS(>R`K8>X=rg=z zFXyMa9s&H4H`Jf>Kp(s>>V>`4qo0V8U{jWfaUm2WOtFbGyDEODD)qVw!s1|6!;<6Ocy9ijmsvm4jYMx;TGxAD zKehTQoQJ@5oDeM(NFL!R;o8lniPj!VPbf|5Cf%e&VWc)w`GDkm`3uL5ik*z$k* zS(ypcvUd|q41g*`XWV-8J=xvuo0q`j>bYq52|H8vql-Lx91XVgTUlLx0u0M#Wyz49wXt{0{H<3( zndv5L3*PV9fAc~ky6~s0nPVXS?sq>Odc}6Ia>#T?cpVRO!rSX7A-oK&Kz?-|2N?U$ zvWKxIIlqN*RU_S;*D`&EG0hk`SNJ`r6>iJ9X@tJX!+z|gU(nAivzNE*!LF5==FhE& zPXc4^jFD_0;B(6ew7MhZQf5K+bphVT*5q15uAH@*$FZEHH0Wm`o)?jffD5+u;(P-6 zd(SZy7+|)W>|I4CT4zS@9DA_27B6T^J_T*gcW>7pv6vr&dAod;s-};aaP}B-MItkB z8SEMG;CAZ%PuITs(<-_)XW3C9Cml8u52r?}HjRNHbBXdgBJM1hbr#3KsNu+(zvJ?| z0D?(hn-jE4=32v`tfHPd<}*|zumkXj?FLaI^Z!G6rtEgY^e!)af%dQK+WW~0lZq;P zP4kDx_e)f4Z*~xRS0wdwsHefX;vh)rTHev|0 znNGd7>IJJl6`&0RPfsisC~mu!9gc6vST9XazY#}`s9u0QZ`=JTKE=wM9n-+Me=hT= z;n`%4+RrtW`#k@Pwe!n@iTS1;j=+pciOh1D*wYLYX`x#JlG<&Jh(tc&-%=8TdS8s3 z#;AAusV6h3H(PE|U{&usbQoj#X?06_Xo$OJO_JD+Jj-`WJx&rmij!SN{Wjl0F$r z6JOZB-w80m9F=t?F0fEk&Hya8{> zYUoKxl6e9^jWl9S44>~`>^q!mSkd+^Hqn$9cSh(h>N({$QEE=xp&{4ceVTfW+V_I* zcBETgNzMSXIDen@MVUk_r?I!mZAt*gMTdK)xZ{Wb>1BAhST%})cd0U=n#&EQf?hCP zqe~diMi_iBmI|;TVNUE*OdsZ~3dxB*6;3DLd2zxkUuA+wGGO*Tj`S_Bz}nv7T|f6K z+PD&*5g*LBo_BVUmKia{pY7!0$zSZwz*$9M0N-`4JUrJf#kVfEin3bs`L81uKbOFP zN`EWqfK?GmKLsq4^O>uDhW!IJvSXS>wjr}_bX$)zc*Se-Pv=}J*UscE-A%)30ddkG z7hdso0AHmeW9&+!H9|zAJ^GV=tq%?duv+NRp|RR}Yz+lmX-smwHpWND&9~`}85T9d z9_}S*Ac-L@yq+K`v5X67Qb}P#zp9qhgBHMAzB%0H2~1B>Iyec1VRKa$)*__kM1jNR z8ORs41B*%3aJOR@X*WD>MqU&c1iB=081I6zZzL@1ydr@Ac;l$nR_FkLC2*xSwC7na zK!{;F0)9%Ua)@6W1ML!Fw6?jX1-Ci)m84Zn#FKY!f0DbEpCla&xU$$Pn24z5Iy|Z< zszyq@j&=w1hj&a0<*X^0HD8fV^2l277JI-t?8gG8>2e-CfFLgtBOK12vEE8F=~Ujh#4D;e=3q*vp$5?l*(dRfJd(Di znZV@B`Wg62D%=s7!TA|{IsRBnS5Xq~!~ z#$T*%@rvZ&fMwlTvYuokQpjK##7RWfxO7SD z=E{I|ckP5w--4em6Tgp5Urq|s<;Qd~EK`SgQv~ukHU{i3(_CN2OADH_IyoC+0o_eb z7AmQEKQslfgSL51>Ca{#*Lu#LW5zHUXoQNxOJli+Hf`mJK2Wa!8ZapbVGMgZ9R?G+ z!*4+8BI(~~(V3uy9M}|?IBsbcY;>_9);2@qsZ+J-vR228D<>dVtvH(olfPvH@7sRk zg;6Ag1((g52U~3)O`2I=GyA>!au{qkfM=&YzMg}U(H1?@7VcGX=DNIj=L!Zq8?fJ8 zI66oVQ|<17l8b()=HfDmYX=YN=sqwgt1x$hO{_xFm4+&`(FpbtD@jT=qz#2q9+Too zJ9N{AKx!4H8}b1xLsTzA;t4thB1P;+^K^7{Ao;rzAv~0vmm;VDDB#BVVHRUvJA<+u9_s|iY(9-AGgpGiT#_v3iw!3x zuez3${yX|DT?X`zwpLC`f#(XPMY%=drOHEO3TiLUNepjj?B9>}Tm2%7U7yhQThOcF zCRIkxT>qSx`oW5ffxN|#&3jqao%kix-&GUI%cgng(8e}RrY&U+=f1+H$RQcn=J#rl zT;H$fihrqY*p8c*xv$^S!ll#W`I_DAQIF~}mr3)(DV2A#wr!m%gWmX)IJ1b1;?z2` zyXsX7?Vv33Y$HJgAW zY-9tp9Fcj;RkEo@On_B6CGU%htfVY|qqQtKJ|n!pjnlD~cWS6RFj^CL)+5hOIq}bM z+m#pL8Y}m0zqJ&&M$5;BU~8QZKI$@XbXh3!K*xXm@OI5I@xr=X47xfi_!bd)r{-1> zsrV!lrPW|9hMf5S51`OJ!nC)?|E5nJ2!k#ZX9e3svk5NtPX3u#9EZ8hTCpExy*qfevF;v$!&2q_+>M^LOV z1X+RSx0xPuV=ga{9i)8=;U4ia#zk5JZs`uOLWh&ca?^wkd%D(%^uZew<4oAtHTO}( zIxdp9_~+5g!^KhB_yUfOA935u`#y^$_aHxopTQya#OnYXRWAvl^fVnjJW zM#{Gb@K&oNB-|pT#0tv@t`(y@*DV}Cb}jop@4EWKF6o`hybu&;JVxinSeH*u2D#pi znV`YCe` zXE;x!v#)QL(E_e0rs_^cz=pXYk2;(}l{k#m^gHL}x=t3c@C_-j zJ7;PbD+sOg58;#{u1_TD<2F!{*Nv9+(n!@Ae;T}Dl*xBnf*)e<>ux=h*?-(xEAU}& z%6XR7YiBMGYjOUi%gTQya|bg-DXMRpiE>UciVG{IksoJ3m=4<}BbA@D&YGBEM$bls z6IAVJxOjwapPe*3O!|r)g!0otIXcAvBbpG3ge@+?L@wwraHxA!EhqLf8cbG}wJ@su zo67c!!!Kf!kE2hwP%u|hVS+-PQhcL!E71~@!uV)4SI*iV`VOl^61A6G5PzIBn8;s7M{TfCC`+?e$I}6la?e6Ofum+ z<9D$T0}0EVBOV~x(mbt#S)MW&4Tw8iJdQt*rIE6{+vhP3e;F*qc@}i+1UbFReO32` zK%i>L8sYVz&nmeTH*=ckDs4J#>_S}z7n!G8bv2{pRYy@faKh}CIKz%A|HRQCIXI~&S(3}D!PE|xnS!zHW<_`f@}T$u&(rCd@NsLgEVr8 z3nyU4%7ZS)r_QW?27Ih#J?-NO%xou2>Dy^O$9rW2kfP2q6CnPZEK5OKN)I#FZ*lu# z=Qf^^V4c*GUwm4(boc7%B7!ZA2kyjinvC85n2u{#=B-ryN`$`!b4j{+-hD8P{V`vmdw0{QmVaoOYqic+Y7FqFm zuHhz?6*V}AaSvt%QP3PY`6`@MD1+iJhMM4f;e!n5B>|~agXui zUh0=R2-?L3`vZfQ=lFxwJZ4r$X24+FY^60t|8P!Qob1qdWq4?l+~DhG+`2&r`Sp`>>nB&^_Sn=tOvvDuz|bLC&6LR?V&hD) zR@wdBf`d|iSUnj5%NrXJ94ZnqI*mMNzP9D|*#TJCk!U;c*M;*+wOi-y%vZnl7fg5Ma^?{dqqL#zVLECHm`24|8fjEV zb43Vdn|&Lfn?U^K$Ed!84t-9oV&tDV^98&;xBiX2lAQqkU}Dv=twF*#pFz}fIt+dK z!#d~abC1FB724^y)OGRawPv(elE+W{4Q|TOLV2RZ(lF|I{g&2p9*sr07#xpge7h?`6s5`yNV44oQx+Wka_LMRi@Qtl@2N)CXfrS`>U`lOS;y0Bz zqsRSaB7-TAMAfJ9ImQ42=-Gst5o&@$`4cuweuzbK9JAlCU%G*=Ov0&o#qsL%VV*RJ zBVm4gU({vK{rMpa^J^Wa>IDlmp)m$iaZwia@K0E>kJpH6?usKHQd@5)BO$w2S(W|& zr@zr&JMxy>k`LfX<5%3!bGt>F=tlLy1fcnEH{getiN46JojntrJkzW$kTT!xcnxFh zj83_?*5TT|ZB`tp3T5~#-!lq_SU9a*v7)DQ@}b93eN9;3_H0`((KOO2725k)TmIZT zF`0VD%eJ+>uB+cK*H;I!GuU6_^MMt=LTYsLty-hJ`RDzP#3HJOc>$YwUTTZtnf9`-ga;XsU&(Zhi(#WZ$@5r=KF{G z2mTxm4?Dg2=;C%|_!s;!(h^L_v;LP<=7^$jaD#4u*3<9{D}v9yb%W)(2z|Y1Ud9fl!V^g|43w`SHa>#9V-d*EJ9kV9bs^Hg0=b zJt6}DO7x2w!!crb;1WUy@J3(R1x6s&m8w|iFR#lyWinXj$&c9(tEE8OJm)&d+!E(6 zsnxTqL9$wi)b9XFx8Tc2Dvw9$8u0?fCaBAK7mYOx3JnnyZQ$g%ZDSbNEr%2up->;F z^wAGmbxllN1GD`*9E@e*^ACi!GYYD9Q}*uF|s}hifpEUF1Yw zS1$Wq*j1-?UB>`FW_(57B0DBrEe8#ZLH^^VFlgnO4=o2hUC}yD^D% z_&S}v;3NkGGa$n-aiMHzJX&fROd`+G%>+f{V*4&U@wPqj5ckt0=JE7S`dawh){a+= zvNh8FTdAAo`rH8+gT`HUN$aS^-#WV3qM8IY;AiK}%=Hq%XPP!wNC`fJVGi6lL)A{2 z^X^SklhG2V2pitORcxSu9ndKn(-u7rEmaZaB;r8GOhHKsqOUrOwi7Q1TE3MlB_58q zcQGJcpO|`wT7zS0@$uob%8k7|o?(Dy&F6Za@h1M?Jj$k_Ko8 zEfFzoo4gK_KA)07GDm6k19@PVATK3BW5TjFIBUGGCnrr#jYv^;rs)>jdyZ%vwArd8WH=pX?%-|1o(Bo2CO83ZdojS_(l{fM912F z_rr1xK^5aV60M+`>mIgi?eNfE$0&_Vl@{PuNK_?tv|7pgi4gILJ?%C9>#T+R zoP7U_-fuIXR|=LwTJCFOVX}5&@dc=?pWtqKCRHuXJoo5d11M%9vu>X%@cpULunNCB zoYP2BH;K)z>vo7PwxGKavK?WYAUoco@=bNd{Q2md89C91?5mNvP^h;-^zlgE7NYzM zn`J4X#-3QcLDoVF@_EAE>!|#Wr!^9#fr_8FLap?i3^wDZ9>XF?5^IXFWTI@bhPlCy z@3_6t$X0k!WIfe4l!^JE7GBzG_?KhK%o?2QFPe^hZcuWA{R_ z-3ie?c|)BjXcUR=VI!SS(5WTk1tnHZNO>mU4-S;q01e{+Lt$-3Ft!}bEck!iR+qt# z8RLYm<;6MUN=nBB^eCT38`Gp6b?g|f5v0*6RN%h9rqf1^ssuw-I-agOk8T95?i(O4 z{b-e_CD<_m%pnfn?$g0WVfpe!LdX^m644gUh7cpzhK%Z?G{&l%kSYs6|uJ7%*^zgrEf1sp9zJ(VodpD{!m%NL-o- z2wMnLQ*y}IGB;GyNy^6^5P8EoG)@i=M*J<}rw_u)8#{AaltYDBuEWY*%z~wK@YPLR zs?lhJCS^+G$_Mohj0+HJElesW3-|^APw>x{UyP95VT=-gixwS@bhi`6A1LqL0uuH13OtdxB0zy875mt>d~pf(Ui(MRbIqIEgtr+bSY3o1`>T% zV(-Z=xLJvxr(kFyT7}Y9*_Eaz9W8q!zLR#R<%_|9pw6}iZ2h`$_p*oJ`Ct~g9Tk&V zuG(117T>%=#fXEk0fCaOZp5^FVJwT20nkDfI3P?uin>mUDCCXwmX@Hv<$%3uPiu*n zwG4dbUj5a7ku^!qWc)&Yaxa)>CKc=t@e#3m%mrNYaR(JTE17JCK&}#in;9byR6LLp zKd6@mT-k+a1E!FT+OdscTtpUKv!OVMoX=1}1!8pvFWL_n8g>kO_~qF>E7G`^gU!Dg zQ7+g;Mg1+8+LYe10(z|}GE{ySc7%Gu%&`$Z>YR7ZFt{J0sjuE0q=We^e1DjRaMo^(ke3?kmSex-e?eX#EYzrFNgxwD@;@MUuiOdO$KruX zkG88TL(Wv?vDSQhh6*G2huM(AB=nKQ%+FXWDK;)cudZQ41_Gx+DzYFlewxijho#cI zyJzhjfL+s6F59b3UBNQsm^yNE)GdRw2Ef@`8F+UtwogaoOE?@|%9RL%E%pY9;t(Pp z-n_sea9_E~tsU&{*5Vm6PRVwZscO3&@`?=la3nYvVb>#fZJgg3Wpp8|fy;EDT=gbY zuioftM68WC8NrrE?eOKpmnTLX=B9JD>Ov~r@{p)<>;q{7>fzq>LaINEr109V_+_P) zgV1<5;1;7^@@3it*xW}^9}2XH1fDct{9%6EP0K)?(mr4zzLd_TcVhTCf^GcI$I(hx z$+-t!G0$q4T_z+b#>4(E6N4&L^FFdFaG2jqCkI%f^bNLyVVlL-x5A%1DY6q#(>O|6 z?g)a?j&p}0Hap^vbMTu(<=uP{b187;42wZ9%q)Xo_=={D| zbnrO{P{V3v?b6)yIpLGL!`y*Y>$1hM=n$@!A+riH6@jl2TX#}U-WK4s!;&MQoCZ{4 zxLU(HM0a0<`wzId;EX)U-5(^zru+-!_{nFNaFc=LH&2Mee&4g|dV ze*~zXClw&R&oyEWKPG+<{V1|NI5WrPyjQ^`1PzMeba zv6jlP`R}HLkM5{!ZT@bUuZ?j*#ksYGQk!hk$xf@ejye+^f9jTV-aRC1RktJiqol}> zxP>_G|C(KA@-4GM;GRZ-hBjbb?Sh`0)0MrW%I!UoUx+8>9d zW?1GWUpQZZ%qzX$RqJN(RC#!6u$0qtvP`|C%x=QW7r#vFU3Kuf{HIa!EjO|3%()&) zFLxCrDmwHd6ga1bw)vc@>P{Hp>IEF18_4SuaXBT*!LO|^Rs^X*+DQ(ueh%(+vyzDP zv&-XTv=q9pF6ba`;jw7H1l3Fs~t(p3h8^2pwBo?bUF zwm7A$z23;wf5Gq6>SJt|@F{v*4wg4iv+#!Wr2rFyrB6$hqMNDel43chu zRmOo3BPB>rZ=S^aOC_DT4$}=x^ki`169(NCg-BY~N8y9A@w3PYadmMBA-Uo^C4b_G ztPG;QrS08?(F?P~0@pbJs@X$_845IpxtV?)KJKExXW#x8hSBwQtx7k|N|qCi*(ACj zv7*Y`j}-*~Q?vf>?@yKs#PK4&TRw2b)SDg+gGW^+5Vn=q8>~5ujVIod*S-6Yv~Lj)SSi8!_7#O5t(&njYlCou zPwt!k-5+Z18FP9{siT@4*TR)#Vun#us}DieTH4$5=JPuA#`Wu&^1HgeX93X zNt8r1%5pS2%+DJZaOFo3nuXh^{O2WNpdPI$sa%%REhC>d95fBRrcziOFixts5YDD2 zehVFnSv8+LC_+KZW?oc4oq9;+$i0IZrhKtB<2p_qr*gys+>osf%*ApQ?D(mro9~}4 z^ftKw$oEFLYPoaR9KE#SO}_CCMJ&0CEyY8k{pB~ z31%&D7zUQXzK=qG9}6b+TINYoptGJ}XwZHo+pILz4eUUe)2QPhS_6t;o2*GGun=Q- z;n*8qp!O;qRGrO4WSxpxvd!YRiIc>HD73Xkk@v_NJ#O3~L{oX@CcutQ;IrZ2^2$L) zh~{?c^#A0Aox3T_CPVP3+GqU*AX`nn9CvhtvNFb({G9tP^*4k;A#OM~USUhGq^0>{ z1A!UNol9mBo{HHyNk5gRzrVxRLzECBne5eG)=pS|KyCm9s z(cKl=?&8y3qaAa|@t8G>IvjFy5&>+wB@|VMQr?Nay9qFgQI(`$unUsv z3;sB?JxPV8XT z$e})9eTS?xY%S4!v>E|b_RH_`kMd_$Ff;*^k=B+0@Fr*!wKWbfl8T;Ehw>sstya2s zwn^n8s|w9f3IDcUDlY#CiklW092eEd%~GzS=|FQog2F*JysMZxTNVO=Z!+)0!BLI3 zb2rzCcd=}{&V9eu*k|7Ddp~m8!M_U(C`Z)8&`%=(go%Oi8ljCK#O>vh512FvAowkR zk#i>0q=ST+!OT^oAf?lQMV#-Ls_$5dl}Bcw2KlC|Bs+_W=`jBzUEx&7YM)ZEZDaSC zDgDb5Ifgt(e!eQiLLtwe@vQ(CCh9LHpTy5+`U<(?h((6eQKSDVm1?w^{6~O@&Nan}~#1O5#%Nd%O?*tNX z<%y5CtE9_kE}2^&P#4rH$;RW-me~*g=VcJIEB669bzfk!Z(B+2 zo;9jiGR^*CD(ZY^=t<4|c$v9NK@2Uvl2B0@wMp*SLgMk;j=a{_S&K+V_xl5^S7%D2 z49!M?A))1+Pg!NLL7qtM(UqZDv@|klEA~fYC9Y}7e~-W9V&f1vFN%(LEQ*7aK(POh zq6X0t5`SS9al16h6o;n9J4OB(7MLo3O6c@WF_L(=q4|B24twY!HQt&aH)!^}ww%yE|HLT_Kj1o6Rb6uk4 zmhdy`DM1B`^t3t(A^)}3zoe|9!NT39g^ctD6YJrKk#83$LziY*TaE+Dsg&l;+k2n!Kaf>vVQY;rtsHV-e`Kb)-}Oj%u}lU!LfxAp9+d$b|w zoHzQZp`$1S$o0f11v?R&VIN~jeaJ<|&AZ{cVuLoG8>LQi0d2GCxAt<0ql(2&>ZA)EN z+FHbW_@sdLQt!jD5}Z3S~qFG|OkSk8r)5zI#3sTI= z6)1FlrXVg_%`$C*@Hn!Z!IN--*MsqaN4t8bbBaOSmi|S%Yr#DTZO9YimSK?3h`cPCItPQnh;{N2s3@j5)moTPe z5f#;_(1$px((-U%c!E`$;8MspmtKgQg)A#?m@9we%hD{1R*CMM(hbTpU!wNJ zk1Flw378xl-%VbS@pl7EcctFZYO|2No3CCTZU}i;Q3xYfI6Nk-?YAjpa!2SwA}GpZ zDLn*#6O5$NV`gFzxup$f!tO%1o(1efqp;ma+D<7M+W82sf-^jIqRFZ37GP_o@op#+ z&+O-{E#Bn!58-4dHZCj}O-@}1ycViSfqEusB50=T_I=8~SLhIJtx$EhrRud3SqBuZ zd5tG6fD+UU`T6xGp<^3VgqcRX!Xd0@|~JkkrW&fSV-I%zT1yZPN!L^Ao3o zA~T>_2c~DEie6NunF`bSDT1LDTN>Kr*HUF*ys;OZ^#;>okFP!nTb#*n;^u>^Uiab4d~3Y@ZIGhonU+A(cFFdif*9rC|MBOn|Qrk>>1?X_~zo+Wi+%+JOr*uzoBvzs5hZZ=Nnfv!gRj(ewkk)-|7O1{=kaobf zZ2Z{Y_qwrE8uPge_n+k0_?_KdsKGrL6N`B@fJ5C}7P32>y~TJ1k%1-j%?jNTqezL> z63Iw^;#G<1%GSCOVU?3a=pc3E8cUwi9-~9l_cfQ(^Zl6P>97<77pI7~&G0LWP9zeb z=K9UK#aP~-5PcoE-zk)JZ_TyzH1%O!$54T}U<>bZG@JXd%u&ZoC-QxlvIvnNxqo|N zqTPzCE$>v$PQ|OUW)zm(*JNC|d1yASx2|#sfs%2LE#a|_ZRW}3m}_BqA`$uH9%D@w&k7+ zvU8%@BztUu&{!Onj^9XYbP({`&{c#vMFD3biOLj3qy|_J+SqYR8BYOzidY|bbe?VY zBG@ZF9IYlZk(2V*SS4h;#=Q$f_St88yBi#Bb(w{jI))SE`DBU;Ka>}_wO+dnU481- z-B0J5*G%`Y8SD?MDN5yk`k@_4>Jp`}Hp;GQ(qeKkn`5PH1LSI{(4We%|D(AgHmOKo zS%u$}gKeA#X3vHu0EKcOQFeis(Jqr8f?yHB0p3hLZ<49c9EO7ukcso~dDwAc&1HM2 z2+7<5FkQdB0=pc}pDaSKQVC?{Q z4Oe9Z3~W6A=7JUj{S#*5O@UDUTscyd37psyEDTC_2d^R4%VlYpfe-5POg>(X?5*Xa zg?EG|I60@4sR8<#EaB)+D1${*4nVVekmM3^I0a>{3$EG1XjljDH4-(J@bmkVh#=#y zH~DPf%20yTxT-HWR(#UoSjs)36O@W)T=d^6d02D$38|%@gH$faSrAZdSbohFBJ_{n zKUpRD8tqih&!h{OV2{;*79D%i!4#>6W_wUh86_a8mVYtMsTQy)IHi1cu)+JAV-|5_ zlSYKYejKhNho$?g>5Z>#QpkR@fOnsb*{CwLK$ z!wWbMW?isrS&WElAbazG6H!C&DCGoEu>U-l?cx22zQm=g|JGJ}FE&)^vu~8sn?& z1!N_s<9yORBjnY{&x)ExmdA);VIcNws|F5ZEK%IVC9i}3V*obkwqw=OK6Y4BQH3+! zZzvi-pAh2VyI4~{oe9xfO{h=g?K!(k0Jp5!Cd(JtD7NHkxKVng=~tZW3hlE8L@IPz z*)ovWwMcts%5zv<(3B<~RkiUgIxJLivVdW?N1 z49PA)SnC0`YTQa8fRy0irK`;jGg>h_E!?1O!kEOFwsxqOnK3K95--&rxci5dC#2z+DyU$!|#BkHsk8QWiPKL`awM0o`qMD zOa|_)YhG5?LXQc#d^|^e?0Ktde z3ypeU>HN3M9Q%p3@`)e?EUAJ$yuu;s>|qgu+Stt*$;}cGyL*fxPTmu(Ski*2-K5C* zpjz$Dga}#+6Go-)4+bNUIWB;sdM&T8{)nqA_PKsarPzNddahI-(`AY_ybzeP5bIDP z!@Chu-TkqJK@1V+S0@g2u4+i6ijtIFv`*3CKS^O+M>}oBgOC>=PR|ZKR{k)=(4?tC zHB$Xi{drk;Bj+BH;YDnTs#LO@F8dAL+oIo3Nwu_5th!18tw)}?^wI>0{qE(pluIqA z(Ue4&L5YgF`Es`mG0 zVi4ij2#GUJ+9=!KhuvsKTe9=T*0vQ@;&zptAlAcWb%x0>gX=GU0q7>n4hR}KWs{GWDBv}olpgzl zEdaGubtP__WW7vS`}@w$tKxRtrp5ohf`mv4WR#FLu9#`l$V1I%892s4M z->;uU@_O4m2~v(%P~85P{ba!mGBUzhTO%%uJ(=cw$kmRx=z0=;p{&HJYwmhM##fe7pE%HxTqAikU)|Is$_z=1RfX`$9DL&rg2i7B4^>Ktr zuw%(_$MW5Xt%*T~WKF5Tf0f0FG4zpuWimmC8ApQkMw3g?)PYzg-8?@`=|VvGCR?Ik z;gUH5e$?G;@DpRFyaT| zgBkcpb>>gjGXTfTgTcl=o{6gUAJkYL_xq$bkL+2pH{PbA+9(@sxwcR0uX<@FJ&H zbs#Z`24iDY%)xcprLJ`|p%X(ZMMt#WzxoyLhH?aIn zTBD@*sdSXMM^hY){GImaMuy}*4PDQI(+3P_zDLP~TLDP{w*F#){k9k@#^P_h_5huo z>=kIQwon{*+)_U7`7@%;AsT2uT+%DgICxH2G2v5C5~yiCJSNs4>c2*d!W;hMCH*$a ze7>GQQ5;7IKKafv9pY~p_@di2`V$`x;Np5HbLJ;}nw#)JS?zp?!MnG+%plaZ$WOl5 z*O9Re3~wjSN(hZpAv$z-tejDqV4`|WM61itQij+2JkkU;6y0EY6j$BB3rT!)lsr_5 zKf493yEX6`%s=As?6vT@iA!g|qnh?X&Zt+7L{MLNrY_;CrE6I2Lr7QS{OEhcpQko2if%vx_xvhr8sFMENPj%_XvC3T+\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :local Script \"mod/AM-Certs-By-Ident\";\r\ + \n \r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetch \ + check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".\ + rsc\") output=user as-value ]->\"data\");\r\ + \n /system/script run \$Script;\r\ + \n :global tmpAddCerts;\r\ + \n :while ([ \$tmpAddCerts ] = true) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n :delay 1s;\r\ + \n :put \"Removing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/672/7cf8bc7a\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:04 06.06.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="Download custom Certificates By Routers Identity " \ + dont-require-permissions=no name=mod/AM-Certs-By-Ident owner=\ + mod/AM-Certs-By-Ident policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-Certs-By-Ident\r\ + \n# Script comment: Download custom Certificates By Routers Identity \r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n#:local ScriptName [ :jobname ];\r\ + \n#\r\ + \n# CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n:global tmpAddCerts true; \r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n:local UrlSuffix [/system/identity/get name];\r\ + \n:local UrlDir \"certs/\";\r\ + \n:local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\");\r\ + \n\r\ + \n:log error \$CertUrl;\r\ + \n\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n:global tmpAddCerts (a);\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \r\ + \n:global GlobalScriptsUrl;\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n" +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com diff --git a/MikroGig/history/20260606/20260606182027-Diff-Config.rsc b/MikroGig/history/20260606/20260606182027-Diff-Config.rsc new file mode 100644 index 0000000..4541e5f --- /dev/null +++ b/MikroGig/history/20260606/20260606182027-Diff-Config.rsc @@ -0,0 +1,8 @@ +579c579 +< \n:global CommitId \"main/672/7cf8bc7a\";\r\ +--- +> \n:global CommitId \"main/670/7de640a1\";\r\ +582c582 +< r: root, in 14:35:04 06.06.2026.\";\r\ +--- +> r: root, in 13:30:03 01.06.2026.\";\r\ -- 2.52.0