From 2d3a03425f3d270852dd4da04cafef88a328532d Mon Sep 17 00:00:00 2001 From: acetone <63557806+acetoneRu@users.noreply.github.com> Date: Mon, 12 Apr 2021 13:23:31 -0400 Subject: [PATCH 1/5] Create README.md --- yggdrasil/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 yggdrasil/README.md diff --git a/yggdrasil/README.md b/yggdrasil/README.md new file mode 100644 index 0000000..81de7c6 --- /dev/null +++ b/yggdrasil/README.md @@ -0,0 +1 @@ +Yggdrasil I2P Reseed creator - bash script for creating reseed with Yggdrasil routers. From 56d24363017ec2ae66f0def900c9e36d27f4f482 Mon Sep 17 00:00:00 2001 From: acetone <63557806+acetoneRu@users.noreply.github.com> Date: Mon, 12 Apr 2021 13:35:45 -0400 Subject: [PATCH 2/5] Main files --- yggdrasil/err.html | 22 +++++ yggdrasil/reseed_nginx.conf | 15 +++ yggdrasil/seed.html | 19 ++++ yggdrasil/wild-putin.png | Bin 0 -> 37604 bytes yggdrasil/y2r.sh | 186 ++++++++++++++++++++++++++++++++++++ 5 files changed, 242 insertions(+) create mode 100644 yggdrasil/err.html create mode 100644 yggdrasil/reseed_nginx.conf create mode 100644 yggdrasil/seed.html create mode 100644 yggdrasil/wild-putin.png create mode 100644 yggdrasil/y2r.sh diff --git a/yggdrasil/err.html b/yggdrasil/err.html new file mode 100644 index 0000000..718e915 --- /dev/null +++ b/yggdrasil/err.html @@ -0,0 +1,22 @@ + + + + + Access denied + + +
+

The reseed is available for download from an I2P router only!

+ +

+ diff --git a/yggdrasil/reseed_nginx.conf b/yggdrasil/reseed_nginx.conf new file mode 100644 index 0000000..013d55d --- /dev/null +++ b/yggdrasil/reseed_nginx.conf @@ -0,0 +1,15 @@ +limit_req_zone $binary_remote_addr zone=reseed:512k rate=10r/m; + +server { + root /srv/pyseeder/output; + listen [324:9de3:fea4:f6ac::ace]:7070; + index seed.html; + location /i2pseeds.su3 { + limit_req zone=reseed burst=5; + error_page 403 /err.html; + if ($http_user_agent !~* "Wget/1.11.4" ) { return 403; } + } + location /acetone_at_mail.i2p.crt { + limit_req zone=reseed; + } +} diff --git a/yggdrasil/seed.html b/yggdrasil/seed.html new file mode 100644 index 0000000..02ba654 --- /dev/null +++ b/yggdrasil/seed.html @@ -0,0 +1,19 @@ + + + + + I2P Reseed. First in Yggdrasil. + + +
+

Number of Yggdrasil routers in the I2P network.

+

Data from the current reseed. Updated hourly.

+

13

+
+ diff --git a/yggdrasil/wild-putin.png b/yggdrasil/wild-putin.png new file mode 100644 index 0000000000000000000000000000000000000000..63ec084c694c03e784bfda73b24822b30d74a54b GIT binary patch literal 37604 zcmafa1yEew(%=m4?he7-EjR=V1c!kjgS)#A8rhw1aeWc zH*;|}bTS2qo7fwfQpnjFnwzSc8k%@I4x0)A0MIy=>L3@8qJp5Yy)CQZKQyc!whr&y z0DzFFhl8Q9wW$k*k*T?*oiNo!YbOQlc}257jP@rk}LQ={s+xQMe#2Z7i(dv|1t`ss7xVg?_^5B z!^+EI%)!k`!6(4V!OJed$<0i`$3rm4WHsk+F?X2$UV9KUy>TK`oWc;2Fvk(7aevjS%ThTv+@74%P*&Dmsn%cR@ zNeNTEV^~crO$52Pxw*wZaed;E=H%nx_$0y4A@NC4f|vah|2vwKSK>dsa(2!xhIYoL z|KYX#-@H=)PhLSuCsRWgdna{!dz=4cPuarW#opP%-ho0=@}F$+Q)pS*nb^BK{}bGQ z+iL1$>1Jvo?PPCD@vrCzTK*3UczHMkxCGdFr8vd8d89ZvdHBV--^Y@?yaMd}yzEj` z|K>6IA0GdIdDz~Sv;C9G|B>4Npx*1{pW%NO>O1h?rEY5XUf)jdg?u+s84m!&n#oCt zt9z`Rwj=)9mG)%S)ktWW6mT{(5F)!k9^mx=MsZYx%Wd;h@;&3%Cp=dU@GcDm*TRM& zVk{6-^eq`n$U0#scstu)NlH*4>PoV1p(>yd5F1AgwhHI?PAssL9oJk`FqWw^md*Q4 zj0u=aXUNR@w#-{Kse7HgY}gk_Ak46yy0P|~uByKiMP<9(6!ecFGn|!f0w(z7 zTGv?uHPPII6W15zi(@CY$s_NI_b^~6?p#x&)sPEQu)y;`(0T!~8OyIG$UN(3jI6W+ z0YZSzt+_?-BpbB{YHxW40JjXteD1ly$^vd071v3FFZ7ABoD$K6=zO6yBz0I`y^4?_ z?)sOj0ssZ11+gG`cIsZiEJX?Z>$cLJ%Q>Pxh&jq_wZFY_Ii?XtNq$LaNOOBA=Tb7)dfZ32SmrPba5Ban%h!Hl%dS zy2nOh{46jO(|^s_L}LUcvPE^H+LvAtEx;zkm|)p`+%HA-zZ~uSvp^`Wi7YPX?-ujd zBd}A_K|X<+GHc)wPwN1J^b&GqzhuYx#Z95`DCgY9e({)pqutER?ZAXYiM+{vGA7ae zY@^Q8%FHV~Ex627b9F^yJ1uBzC1rtKPABOUS7d<)jO@|N440Y#%lp;zNXS0E{>QX1nTj@t} z&4FR#%)9gUonLybevhXYYkq_GV+#H-iR_NtjM5|dt;DH&R-ic}t6y)Mo@dt0FjX!L z8=@?|I$a?R6d#*eBfnctV@eVdA4}Z-;1WxoWA|u44Z39d8(lUPR;W-%-#%GYcCF?{m*{G(`x_njRl7nkHVKdr)-VN0S>;|SUP zv3wGL__f5HD`oAUkq30iTfH;{-31s7f%rn`yGlU^2xfuU@dAHCkiI}UTo37ghslUz za6qD&igInCK4$0SEf%wK+Dj9PHZCL{mhn9Mo%TyeTF5`?#2ImnwP)x1qu>NJ3K^gM z<}a&j$xG?0=!Tr&K?nplS&@>V#;ta{K>%K_FT%{vi7F_?A{Y28&p;0hd56R}>h51mxfRC1P=wBK zC}I@17lz3!y%b)&s{} z)qmYIsGfKQh$P9U^y6RaTYb8Nw#3o_nC3ccI>QoBLI0$R3(NY#*Y-;Tf9a4#cQRAm zUK-k$`Hwc0{9qW0%!X{|<=ZRVhrMzn*43+{uXdj4D77Nq^Yiu{#&555lWVWSGnwnL zn@vu8^8Kn?)o61CaR*!p#RQ35+yzkMTsN6%kEH7B1w%<`f(AoL)M?6O@>B8{#q($M zg!mc_LbaqG=>cRRQBkG`NIB5_-GTzVF)xX$)7#%7^jw$gsym&Gl+5QblIe9bZMa>i7af!Ehn|_92;(Xz60eJhZLJ8r+7#{` zPPz?9`WcH$KyhEoJ|YMXU4&pHN(d=+$xbLm5HnvjRpuQLR(J=zIfJ>@BYD z%j4$T(uY|4T!o@#c#5fHJ|Fi==zM*-5@jpNcVRIa>cw{AqbuhMc$(=l6b-Ee;PTq3dyVl41a0^fr zVZ4|S!e=``CPm{?r5795e84=VbpkDTDSnfj5&{g9x^m`L&V$PrDp%pg&t*{Ckh!;u z$tw;=VwdPOQL$MZG@1~-pkI$-R1=2%(QmY;vWubD?MSoYqCuwMsYsni(?!%Q=w5di z-|;+gv~0<5Z@k#?w!Ua^dw$oMV}_tLgX$52m#(g-WcSfHID<9t^e5%ONL>}#_3#v( zRv5IGKg&W-%15z>G_`r&j!F6yiqJNKbADnUmG#9l0+t4;X@1HZo=SqUYG>0WP51>S zeaHEmw_i@Z7mz#joA2~JxQe1Xzh`Zbmc~8srOwep(Oeq0NM$jOWHGuYDV3BB5vl&E z^4!4#>aUk@lIR+7RlxBbHDF;^E51A}Y>y|7YqDmsmTj-+WIX94T;+tB=h~G#74f!J zG|kj4w!Y`tr{AqfN5i|98R31wU(ybSR(9=`5`+JG`PRGNkzGyy)N?(%HI7-yoAj0% zF{EqC(Q$t{i)1TnqZ|LtDb5VHYz6vOxj5xJo)&Ee;6fj~(w9xa>!pWb$_&-mDqFLl ze})rJ3twNiOKscLGT;o8Yo7cJcAK~MznE=xJEd-j6^VEvxo{cYy@x>>0eqp?`A{Hx zm8mi@K#C_1hnv`#8~4Jch9o6{Yu5F|aTJVY0R{d>qOB|jjFZ4Q;QTX--OAge5~Lb5 zhQt@|t_S$R0f0Q)z!cX$CPK_(EC!10WaAr@oza?y8tuNP$6X1jo~6Su;%<4ONsOm? zR9`?|i^Ia9l$=QuL78<6?u0?(eS;xa?$8KWo+4cpX@7C8-&VESo`Z~yjdy3<+wV9( z%VIsg)(Z!@F3x1qYLq2MKqGT@_^xI+zOR2gG)re{q@T9);@32uMI>hx$8h^`VeG?f zz9p;UuNb2?v9!F@4aNfrGy&T!S~;^ucOdwsFVsK;P`H@bR{;SzTG|23Mh_xr4a%px z^As?ggb;+l0~;4R{u$+sw{tNEW=jAHVbVANCld+tbjtvTw;3Oh)7JVC9>KrS@QteRWTxJWL5ArnG4rv|zcO=NQ-pQ;8fq zc^D-QNk=+F@m<2d8oM7NX#-mFTXKrI6)Htaz!`}^Xn-lJ*>5d*eC zIU^_=E$oc31?s~x%^ylL%py6*FHH6nCQ>T`5DpChKNbP7wis)bA&-RQg*$%#`%D#} zmO@_ioVd7h37W*Z2H(7r@GpDZZuBsbYY`#S`2NKGubB_Pv3=^_5&N=hnUeO~v3}=) zYDzC7sP1D2MDh)Buj9FT29ZSCVoppgY=a^A0EAu`UE2ziV(~-ZWK%q)8R19-b{_i} zqET$rl9HUt*0)R~*91VjW0Wfg^_IK-<%u13cpOd;wp_pSv1hfNnQXc^P!|g8!kW)7 zAr~G2GmNn1Ap|CxB7x5kW-xI}k=SJb;S35eY^-0G&?kp(KjbI$O(A6X#eJ_cxk6K( zmNz~wMM%hNDI5_CXoU(AIP3c7gu50!5t%*AP@UvkpN`x?~0o9 zJRi(sx%tD_Wd&g3RAu4HpscNR#B#%e;gsd!9E25HOU?cCF~PNvkicYPOe|wbK}1RQ zenMoq!9Vxe*V*JtMp*55Xf*L~vO)9j^AN(Bz%U|N&ip3|UK8$7aYO!~Mz9dI^w%yO z`b}U_-z5|pU2$tbNiS=SUoUPG#kS-6ua%HYVuFPHuUUys^CaS54M__mkxzI7 zLI?#*a}_nevNUV6%K3>jp*4e(RtKJ_R?e(YG~}8?7W3`Cjg61x$)E*M?L`wu$OZ}a zI{>?2du_H}s4)p9!2G3#v{7aJoKZfhW)$#>qw2bO;)Y*grB_Hy=BCGIpjM?=BBv4- z(ek(Ty6S6c9&_@#NNg?%yO>U8{{+7TKh%ZSsdIJWD4H<(%MiIwWhsQqQO?NCZ_&&J zG;S#a215)%d3t9{&DfjJaV@X89rs@znta=77mO9Iyg&?uy2cfM*3b|yhw*!d2!q7T zJkUMg|H`CuGX_zvj+qRUn8sN5Ii}ajv(L@@0HJ%uzwZG|)cw25_~)r>Hz34_*o~HOS*Jjr)Bd%B>VjHd2JMESR*oECE!Qsy0ijaZ9yV>b*UT zL}sUG%@hEmz?a4Xid8;{lFk|&D1UkZ<(?X#V+koP5}=)$Vn6OE=wU$^S1rQH8~m(dH5zgO;&p^D0U^uy;mOWl@dfksbCI0 zPs&|VF<@M(rEbMCgjDFqc|V!U>qDm-~OE;T%b=>csW1j6+|kVqyFrOIQI=*#!mlkrYiT9IMy}9 zdm%m2-*dg>7t(LK44NmpfMP(ew(`gCCIXT|j#4T0Ay^0tPzwRg%_nXxhfI z5^fd%SMm=jj-dn-&tRyxh2}LvWUlG$9!@4yi!}0T2?`wIz^_;ebIe=1nQrAVc*7Dj zl@J$F`eXMTRcT~Gl=O!(CLZd;_FV#dypt*Tei{l?y8c>tPOijc^gs`euvlY3;71~2 ztpmh}l_A@MN8ziY1L3=?Cndon1Ha#$Z{r6{WB%kPOa=zZzVw%j&QnT;CLS8bt)9O?q@uj1SCJ7)fuzu_s0$tv%6# z6HBoM8F{fmAssdJY-uJ@q03663cR%P=T6U=40Hgs-#g{p0m{Hn2=W;jzeO^_x?5V z^&-{2^}5p8A85y`!K9y!wZ$8uSVkf511lb6xPqBxgJ4xwmXP=04cL71dcNKsb zLe~gPJLj1%Ojlr+Hmnh%h^VL4W3h2b@x{ydYR6xeNghQ~u1TJowWb7HU$>KzUrO5+ zsglsOX{NW$khw8`Fc(##`qWCZ%(Sfp;sI)-5 znKmE2agF!yuQRRJCsDoZN^NiI`ZRW`Olk^SP%BzH1R(8wcRJmMr0QxmH1}7et?c_Y zR517Hayzm8AB--*U($GR0@qwNRhoM$qdl>OL7+8lKa!AYQN&@|8@)2_ag^AE1})GJ z9ww={d?u)>uFK6ZZ*=z1*C~5vkU9;)_svUE8yhhSQO?n^&xQ(BP$s_43p-<}p&Qq?GRv&)cbgW+q5ykT#6+gP2toAcw3D8 zw*aSp>y?-GxRJI!~rbrI+m%1r`!`uw#WBgVJD_-n#cecC12T|-+lu}^t zHkySe52Nb2W7ypm6Pvf>BmSa(V#+t!=+udV*>GtVQeqE4D*gF%kP*`)`3+&2J(|wE z^<;@@ohcaWkulQj^w`{gpReY#aq`?)o}b3I_~Bu>%KBQz9qD?@S=xHP7q5D+8!KiO zWBDO5CkK+r1a>12?24c%D7IlH_ntHW8)!yLz|*;%FhN!MsQ;Yo4MaK)^UqCH{`4v7)#9YIMjMfB zpz`?KPi;b0Q-oZ9znbg1|0y@?^S+>As^Lr(J4GJTw{5W?0;&fV`D+m|h z;`x-P(>FJ#Ka=RcLlBES6KftfE~ZZz3ac#JwonuYJHH_t@tA?pOqX!f@vY2M#Ha|C zbOiuBLrfoEiQ+g5iOM?;T3BYMk=YIw*cVIf3An!2%6&UPx2Qd~oI2FDJ_exB?bVam zc}0h}JMGkN!$J92*=EX5ZTkd2X4vh_^+_gM1ReWFJ^l2&!A<=M(P-edBwNAB^HH$o z_~!;U=0FE*dw=Xb@0-kd3{=``%E!v0!hL3FT!vNXJ0C|VPMj7N3)bYTE{}(0Mp?Ve z|6W2m_u^EYUg5-|`#-+f(N}p4? zeeREZRZNm&M>(OCue|r|gLK2tT0YnNllE&r{Rf4(k|mvZ>hWr&XBU044WVN1b^G(6Vi|@QLE}bg!HNWU zAD^P|^)h*az$BTB!IcVU_oUPXZW@E6IJ7M| z#E!fG+qFix3M`WLJ$k3Pco|CPBR6L=lQHF4r;W5kAW!~J!YI#LOM5r8^u>-N!r>0H zY3lV(cccL3qe-gT{)F%10m4He+%1Wgceq#@KCy+yS9re`o%@d;RIUS7L5Z5Wf9%>zSCqAWR zFU#DXZGLt;U1D7%HM!VWN3hFl57>t(X7(}1A7u>6BTs~1tP%-|LIWv2itd**j#VQt z9AIc#e&y{o!lPeK9asF>v$s9UrbJ^w11;<=GWmV*^RKKAPjsp2eyUR`apgK`1kB7CK@Z$boSAOZ~ zj@4U~SNbgR3%|-dyWNv4^|;@(CHi4YQ}hIFWx^=1>$<9-B^-+e9CR zOX7B7MKSwdk`pUvpo!JGi`|9-@uoxIWWoAlQq!Z0l*c4vEiz=@3PzLdyYVt)ly~dy zS}$sU8<&OJV;#d?DHVb0vt1AQo-{`-}sCBG~YMd)b|qA*T_29ab8WL>CS= zqqJE)Dv!uj!6^;4ebD>Ua+HL+f4nP&uc)!Km?P{xRIS%4D~hSjX9+f+#J?of+VHy8 zS{PHf6QZlR@PK_v(PDFhxqf)xMjhlL_-aP!?ozq54A*@&Df&>-#=719{+tRA3V_e^ z@qgm3D!*c41$z=MjGru!Ulz?<=X#BnYfP?VfBJgL2<@hAKuocQ6!$=1tPK*oT*DhJ zSQ^*5W_c9AAIX>!xJ#plE-LFuCy(88o!xF^8dx!~2OvkVlGX3T*(GxRAY!;5J}y`Aj9&q&I6Xr~e>UBcr{JR)dagSK!Ij z3e(0C6yETOh%2Ll1b&wUeAgNr8Z@+=!R2mA+ZDX=x_SDp7B#6Mh+a`OyR*LyUkyjf z#{X4Ib6U+KKTXjm>P4TyEOZe{vw12L2{kOsF*Dc_4zhp3E&_jS$e~dbptB`=rUUvB zlM9ES^M|xch;jnaN-@9zeaqprZZIJ_lTV&vRqO|eCv}EhSMlxHa-@P4+^B$>52-wL zkQr=E?+0G%z3^M4@@f%kur^xWQHpWbv23$HSPvr??g=metFv^z-a6eVHH8XVfX9@z z;5$9`V3(%VEM4NkxHinC8+aklx$B$A)PG#J-{eJ4WOp6w{uQXA0Ze(~gIFOcRKQmD zLo?&Y3E~3G-p;IaT=%r%JcSP|5A-6fs$!zuS|RGVK$5xfWq`CHlMW0XtHKeE-a@L^ z?FXmDMnX|J_UD^AYl^)=GQpkMV{%!!ZkOxkW>nc!1;eUOWoOB+1D2v(bjjwN66=WD z?SQTr{%r)9;9*=Qjpmd-?t(n}!pR%6;hc5vX(69K-SESb=%OI{HTWma#Ls;_V^YD! z0F~Dz>=;Q!RQ;eA(LY_h_4apUV`VVlQ*i<*qJlDO1zk14^kvih=tVVe$wc~rJoOPu z8MXS>3H|`RHit#*w?8Qto44~wiE)XKfqty?%as)u#-RNs(YHQ2{K}X^a?W{eGsIWN_-eU?J{6DK*XE#EE>JLuLBd)S+#h7V& zX$G`{#%gz@=P`VU*_tEIL(JKs9^p6EGXwt&PW{1zVU2JnHZ{Ibt?FreL_YKv9xS8F( z_tRoexiVt~tWQ=@Yxq=F&2C{i>06|tcWGa1m`3Dp1%p}ITNd)|BBz409 z*q;*ZL?9adwWS(3lV+gg&h@@K<#T>|fd$FQmL)M43`Hccy`UuVZOIjC>)}z*jU1gQ z;itzBKW(TJnFduFpcZasy)PtFTo3d_rLNJskkK#$b$(|AKBOE5dgp}$!QCenS~XJF z7-=K`JboC3WCSp1>cQ--!?!f|%)=8D80Tf&*G9+ulDw)7Y*Ys<5G9={r#?0k8o3>Y!o({ zy<}ReX_a_+jFpfm_$~zQ8tg)bpL?YrsHbeC8qllBg`mP97BPW73GS)9zOWi%73mEK zoE#W`fm?tvz!n7}2>|W3Ng^Y<;Yt`VJV>_wB_}S*`r_61(2)BDMT1|OW0)v|J!xxWd4-d$N6p&F+3gMwSC0P=+bJjug^TD-vF5>$u;3AFXwD zA}ZiN%Wgra`61MlKtrpBG*bM5AbIo`r{alXN$v~rW_~y9a?IXV6l&`p^V4e??X z-5{BB6r($eA%-t*F)*39OS0MePTxeg>yYA@%y_a=^SuKwZlB+5M;B<65|DjI|JM~& z5HoOpvGej~l-YKq#PETe$$eFXf!6E;Q(|871ahs#Xl({owCXjCDl3>zdFN55i&dFT znb`<_gBr6wur|u~{*ReP{9^imk%jMfeGhhwwBs%j-1B}nz}Oy0{1ASM_65f>y4WnO z@cN}kO>5+pH6nbhc{l%-McxoK&}j!t1DOA3RCRqzV%HJ8-)Bmth-GRnmfA`6()?m_ zu%l*jhy8JAXPpBj5i$jb!V3$KH=Y@EGmbdQyM?{fzIqM$Vd_9kM}YTzMw4RD$*o1{ z{9$_CB$pfg`v?PoGVMFNl*32%^#O`pC*kErN0w#gWl{)Utq9mM4xTVXk6YzZQo)>v zy`0#dJ!-2&Xz}l9!n73pCRC!&t8&BUhQ1 z)ftXlwdm!Q$@tVjRrV-+KK`h}C6O7vfy&MNbHCZ&3kQ`o(R=LHTO3Up?QhFqwElzy zm%7pf@rn8|y*xg0Jybw>Nw8g5#=h%Pv^m>n%Na*4@j?RpHuO_OFHWePoFwLhVC*kl zTMLSrym`&($9;~)?a|7DL_HLc>2>Ex;X~@BR`bqVFSv3~xY_W7DD8fz(M2XEM`Hm- zaFpNm0x{doq59f%>0=>nWw)2;)7SdS_#5U0~4ivSu}YBw^JBHO|3OWOUxEN4NP5CB_0`G<$!W{<_&^ct4tGKm`d>+iIqdn>xfbO z-Gg|vSCodfuy*Pa^MJ+{VhUVs@m~!hSiCtbh>bs5CPehZgd#9+--#eAc*msvWFrNTX++uc8r5~p}RfB zim(>Eowr~e^-Y_jQ;3e!-sQKT21qlN)}B28Eb)=(mlPf)I_BT5A74aY)c?{-cwyGo z>a$H`+6=)eG|P~ClBBQvu)RzCM(!ItHm0z%)YGD`Bgz#mR659DXrQJRfGgsBZM)f= zgaa+}ghoN5k&)b6YvYS7_L-y{(v(JompwRguG8QK?E&Km4yjDTDMcQ|&F^mV9{idY zVay#<)VxcO>2>zvk{7DM`(V*)O@~m0byd+3s~KdlKwc{+sW`yAlkPpP$*2n_-X2w1 zT6Gz4@HxAo>oWRsMnui}tAmMhJdR)MF<7x)9v7^Sw4im_qZ}PraX#tXz|njyD0fBV$)zp zUVPS72%XP{?>+7~Y{U11TU+ojm0a&(0K=+vY5j%>Hs}H8JOsepMe{j74JWeCR%%Su zC!#)(DE2*NN2S;$%xu}@8R9mvpVx{Vo2vVDIS~`xg9wO+khF(q)35Q1KQkk5u(4N0 znF>7hL#EhA0Bh>*>=yyr2y&|>IZi~II}CgMw!KjwM)i ziOkTY_;hl4iTHXl=WJuk;z>S{3D?GDNIj>+s^d&*=hRp#0^%%aq7GT(fJD4zZn&IP zrrOLskj&`{iX`Az=V0N3`-~jj_X*f8*x2|lZs;Dt5+Y$Y4$K&FNJS1{o?NXmX*sv7 z(w|2M;cz^~iuU*V1cNmKJ5h_z59oe>4$j-;BUJwMJ*-OgI9t*O!`@siZ2M!}W^KnYd_(~|l3$PNA2YW=v*iYE%AoT1x{ zrA^oe0{#JjZCl^`ObkHIWK_F`Swz{2$bYF!mpN|t`5(xRgih8V94Q0#gn1v3!&aTczp^5qIuLTI;E+EhZhOiGJUdnf7%! zP2Xz8?S^6U;di6{Y!7}AQrvJP1ud>lDU#k)Znp<3%dwh9Xej?SdytR>zqMc{0M<3( zqdDg-v|#BP+p*>p|4!Yv;cDO3VeD3S@OYJ)k}o3^R-YBSF%`Dw-RUI-_TA<^~ql z48OQwtL#_N*TF!fg^XbMAPsKevY;OozMb*y7XWNjyqmTpgU`&hoM-`gbuqjo#^pH( z8CG6JJ0sgU84ae1K^FGbSUae3-J4zcTXl<>pMKoT=Dy-o#b}nL;oERAv zT%AvPn)UqF;F#@7%F4f}+o=SI=a#MB0Xr}8xX?!XG^268-8Angc|A5+FLnl$^fLlP zzPDiv2F(+VJ<&2~X`$xr9lA}2v3NF8pR;FX92fW2qUAo!p~&uQ-E?=9ML1{Iym!*} zYpRl?)YJ33&52BqmGzqY@deQPVNtsXzLQFMAo%k?>|)at=p+V^v9klX5u72aQy?_2 z3qR75qGOY~Jo@Jy;|!cJ)BEbLo$kbk+O#w4+^$VKRby7}wQgS{QEjnehH6juYmef% z#_HJ-AA}bE?ya7`Y%JUmCu>rVaA+p;J%!b&6%aVXM+)$)YO2Gb{)l`N$_Vd*2_bSu zOT+a57{WpV>nAa4U@J$0`3ce`#`Sm;O_y-PRexq?nR=ZZ9OOKVRsHmPTdi^CX6(&V zRXq(qvif=y2j(&8;sl$5^aU@pox*`B7Qb2$zT6mly}rH}JU{kD;5*k$F}2k+Z;0{X z7EgnVk-ZDl`{Cy6=-wak$qwOuvb)FjnvoY+KsFq(I4lCm8__u&R?W6fj{=hdKC*@F z<#BZfa(ta_C=~rDQ+#(e7<^oZo7jRR6`@c$tD>)fV8&5_Fg$ebKreL1RmK;0R{^thlyI1nJKam{> zx4qGbBxsxMI1|lEiO_!nCxk#v>LrKZ^a6G%AQ|9udWz6V6pU)HwqC_}GTW=)Xo?!i z%g98TE7Qf}-?Cysb?&X}X~1~JF$fRG7_W8PB01DFH4%|ikBO>3qTsjlq=h1Vf`&gTR1FK!jQ67NTVp*6>a^-ro{>e3>hx0ah~|9cbrg%p zc20MV2T|6f3t65_mXOhum{@_5xM5Fsy z4FuT>X$LKR(X39R`7pucvX%8giW`G|iQSoTk4J3qfa^yU0sp?RR(~sJ^|DeWlb2M? zEldyxt%ClDz9`Ksx>Dj%nf91?u-B!-_&|P~3ythJ2QC)ujw(;(JjumoyO~(B zrp8S+JaVm55gkz_SFK7Fq#M%YQ2dE&;q*AFItE`XH2;WlSgq0x84Rm0MXv~*yIyDf zQMyAC#+M-G_XQ_P#h1un4(Jxbw6x7%Hw&L-o2?r?U1+c+LStjGcqTuE=o&Y)mdA+M z3A5F$5#rq;cxc#mNKW1^wKG}wWfvYu$x0raAfr6vsyH{Wp=-YwLTfTwTd`Z*mn*U8zSO#h&`ihM`iQFM%$8*yG#o zerU{a^EC5%&OSUFT&SmtbV3hr&8G7i2HaI+h7L=W)EMG&@a4v!th6~I9RNCh;|O%~ zNZ)U?lWk~wv>oZ6@NT#OJb-olds~3DACJ$h*#@ilLv{_Mg6NijCpP*^g2YO!k&4@x z0Yw!+b3}@Qy9`EYsvWFH82Z%dv%_NV22!-DBRw|+!Ou`v&Q_K)=HCi4gSCNpO@I+z z;0IL{k|to~$#RGD#*tEM4qW*I0KIf3x-@@5J$QqDr^mBE@L2nBvU?imhUPL7a8OpK_m>$2sncRK#l9m!UYYEe zg&=@6ftlHD_Q&Sk@B4H$2 zsFzvs@h`$E*eRPffdkn+e$K1$RlCkH4)_zmiCFr3&zzf79b8*O3V-CpgBX4=NW6f{ zPt{6lZnQdK<{i$JfPQpr;^0r@n`HE%w3`S+lMvD+VyL5~an$EIUT&n)T-a4rj&z_g z-)5CiQF2?RF1o@Pouq(FCAsHT%rxb519~=5TsNV`e`|Fk&Z$T5+D>w`TINXYT`U`v80_9%!9gn;lTUU>J`z zX{Wia)VY30@B$X)DNa*VGzUX3UqX0bE3w$82!Nl%!2Izo0dkVt-s-tY9=yg%kk|7sJ+@&sdvns`8ZRy} zoGU`L&_ELxvY*_t2=Ee*6L<~tT6ANhl;7?ZuLo4!*SDz?7iB8GsZ-T>4tZcszw)>L*%1 zb^+nlx6ySZ0OZM8h|Ucw_S5*or3Q)JLj{vnYBy!r2pYLAJdPIr2?odY5(KJ_2jis~59C;?gOd+!o(f&nA4Xas8nP@N8`?^(8)4ZT;quV< zI&;Jg94s)ds;3B1M#9lT)BBc1M{%3f`8nwXPew~fu!P9lZC1enS7OlvUhctUj}|*S1S&1$D2_m2l0;-g(R6I z>LKY{`%+N4grl|oLWlO5@+6`gqMoqwT&Bdb(g2u_?A}Agz#@JgTS%JX$WbJt4;`$F z3x*n+0Hx|arsjHIx9GLreN-q%6iYw2y&Wa1l|U~jH`3LB;HKS)wC^1{i~Mw)r5Q@I z0KqYr#qpprC{L39}cW@ahN`*z@*)m1bq^?}soEy5!a7%}^ACOXq40Zy4)M zNAXa|NH0q3W=kRr5fMRu5D?&Y6h5_oyI;@qhXNB?Rzb&~Gt;wsp7w?@GY|Mh`XcJW zB~j4h3J(C;ieLE8=8~GkkSOS)p1%hm`+epoi-&yjh!x|rDMDooy=}~0dlJ>ZO0Myp zhbp55%s2etgV3aW1joZgF}mI6`L@k`f(EP)MurG5=4>2S7H6`&)9QiJB*P9x-K?XQ}s+=DWr*j#=%F? zSg$KWHNjMMYn&x1+|JIWG8xx(SVhK$_GF>5|M8rn{tjBhx0~NI4_@31t)w~J3V;m6 z5L8z)$0}@o#l1VIwM_$(&YE-VIZn^rx-5lyorS7!tOG5oYex3O;w3->nlXu&m$)WA z{lT2}YOpTfQ#3`Mwfyf|;2_*#j+ch-oB1iSKX&9)PtLi|)eMDWg*PzH5kkAQ>^jfn zJ=#p2_KJVz`iyut6a&h4pnY+_RmOfMtZyGw6le50gQ^AzC8a6Za|U0ML-d#ZQ7=wowI5t>Qrtwvv)s& zlQB18U#6BlMCT)r#S#c-`?`FzL?E7G2W@@s-GW|CpHt`cp_ZixSVq`0ASFn#tcLx! z>(QVd4~Iz)V9%P`|M1stzwKi9`=?{wRhON7@<)K01J#bHZo^Jh#Cr%OZ&L_y&|Rb% z&8f4%Y%mMFB%P-ntYoUvG~~duJY?L%NQ&VBx*2Q`dPMHT190v(O#&{f0d!D5KwllJ zx@xEH{_3LIYvbb5a_#dh{!N?nz97sd-_Z#0bUUt0^kzh-;^^9W@_Mnv=uxUAeIh5k zxSvY4(j&Xr9@3RJKb1hB`VBB8gfr!g0mn|D^9s`dbgK}>Zsj;2WQHcF78o%+&=x?F zK!Xcu4)$XSVttZm#*e-qs>3VvVaLKs&X=Yg0F?YT)ymAOa=K~5dh84o1|8+~l-~(v z=Cov9srHmZ$LbhN)i5MGCs(XkKQ$eba+&5~*7Q&SEJBKTNU8PQW?sxeZ$|RKQyakz zbtwd{ojBLq^KW5Lr%Gh2vJ$tX$U&4OtcC_E}AX6*bPO$patrc|>r ziYBB=!w3Wbmni5R`AkPEfv0K5m_Y%Sb@}Qk4@2Ua z^=kDls*Exw%I~T6VGQ-qUYw8+!WqIiuMQ$q#kbC5?)di;V@=dz2KriTM7m zJ3wjyVqmSEKBdt+w`}=^Z%#};FJ_@i!LZ_FxJmD^+~)bs*YSK4uN2Gk>%=NqPdzB` zfo!7~Pd2=n)C9bmu&pfBrlwP~dCtjbfK_6F4elu#81r4tmmv)^28>=bDAp&3#$39vp27nbfz{M<(3P`crNRv(YqTql*s5*k*u&p@A zy?StLk$T+UpHjM2%(EE5faHQYtf*CG<1Zx>lPfS3V@!+c9f()d0E*klzcDmIBvv3R zAxEYBM<4#TuYZE%u~_|icnOCFtfk(UFsab2XpLrNm!$FaZL`@@+E4&=TY}s9Q#gvp z0;+*Zv8x^!mQb zP+H+}@M%`U0UA5ul3Q#`H1t^5V!wHAS6RfAg#>f_bYe2jo+(M0!a4k(7OOr850hfL z@hEznj7z)84bGkNy)k;y1`|&+CKaNPBHhl~gz3=rKSUSYanp-bX9Iw1fRT1)1nV_$niOPF1^@ z?jUSOQZFwm;|$cvGtZZtBIG*^&F|TUnJK3}6W-q1s!Ai@Rw* zzS6?!K)^D&Yqcpc4FJMTwD#A~8ZFp0`+i=ol|P@c+(g4lsVK2DDvHMi(d_o?%F-8k zNg|e4*kDAN#>jrGU{Ax4z!n5{2Hv|fg78O|-FDkQ>|43A^Weq}>mOLT^2qxMKWZnX z8}|}&L@$mRwjN6q06{|xcm&fFJ5ooTERtPLugWYhn0sBadfjSr+R9b;eB?`C{bQ2n z2>S8}-NKqFDJDE8mibp_5)K`QwOjzp2CX{HDkSB$-EQYxSI=r<5*lD~n`UIsFMZNU zueq-~c7g&dLX`7Z;3hC&lb{F&+-E*d(w2CI)I@e!v=R;x#h^ z(}E_qkbq_DTjo41jQ5EQ4OplLIE_o}>t!wjr`EZ$N)D+8syy3|-IM}NM!9Qf754R8 zzWpvz%-c&zv7Ag(uN;o`yH`!F{fnbFzvw#=d!aN9L-?*$Yu1yK!|=|J-SDkXki5ik zLaIAhx$Mg12ii%|eUHd)0~R@y0gDiS8}7jI3RdY=Rp34 z&PlL>(l3JQM)2VEVK`#rkPZYamtom}RePNT8wgmwdf~&EO>SHD`c6NVwT`a(u#(Ny zfA7))ti*FXE?}9A0$Oz*t@i>#vnmfp*Rs2qccTE)eZG9lx8K=G(>aT+xV78~@s}&E z`nxKK(>C)A@Fb+VfL~SD9Gh*~HQjB-HB$2P;?}7h&DB*^^xl0Qd$w~6YBMb}hfr-I zW`B#^Y&6@M)iCNmeZliCB>sjERb$v?I_`L{`b^b5mDKDjcD7GF3@jz(dRikb;W8Wx zu3c@PprD3P84yZHxhW;9Ffk+Nz0hWEm!5LM6%TdBPU`DUzEHe4(NTXwmuf+?Ffaud zn|ttbkYj~e$WP2fLF3|9!mD9jZoxW#{vj`!k%PJ?`(LM6d@e7EGb&KiT4B+g=>-9p z2FJ(*tvL^(U`R+0Lu9h}lCneHiovc6>2OodNKVs%4j;stLeC%^l_4^hW#W0w9jh%rSzK=PP_+2{ZGn9Ub`bJfb1K$M!6YaRo7Y1 znotNn)Ok3tb0`_UzFGErilHe=bWbzAFAM^H>wn(yI^vHUuL7(pup%{pWiuwbvvf?V z8>!lsP8Gwl^*8^_bOdSwyjL( zBgq1rgf5fw#anR?BNGnGN};cq7Zr5)F6fxINL_f{<3Xe^W>ARpAx{J zDB0hkI-*^W9#o}G$JFqG;(uBzik+M}*DJ_9H_WKlf(^L&R77|aMl*Ok1?<3qK@&E~ z1ucM{U2eGQdzjbju|O$LZs}>!fCDrLDM53d#{%dJ?7fB)Tv4bS@G>d9BDGp@Wipi|AEc0#ds5ft%<#AeX62vc2sm)gxq zscBiZya2(Q_+1mfwPZm@kV>{)*X-4P|0p50d(1)ixnV+0*%he)Ea8}RO$B(j4H#eO z8-H0{dy;$k!T}nT@AWE8tF*7zop|iKwu|5xhCs#9r0U6UPM9DGRbdM__?QlYr1K0g zX_v!_HC0VwZd@Ij;gVq;nIyYOeJd`rxNK%rlh9>MRe)6$=8%#DP(n9cW?<#kx~d98 zuo+dASJ20>@bkZZ%88$zf#PVGiouaxrD24*feNKm1xXZiFxOZM?z$qSy7a{eX!ptm zoW?5bq9S5p0)TfUvN1NYUJ4?qZQBs;7svHyC6J+HUD)pN3jvmE4N#$xAJGb7m z33auMu*|d_?;`4Rj9^ho@PwW^GxPWmr_S!mJRg(L2Bg?B^SI}Ix2*XAGp&}xVuMUo zoYbJd8);g<^`xV(!FF)avL2fPFf2WyQf)*Q1*noo6%gRj|3LWGJ69=@032Sgo zzSLn@>0+Fpa2bG=53uTDs0L|RrTuJ=!pTdHJK|$K-B_RxZH*v^5+d0(K!LcfO2ja< zCsb9&(rC+y&ZWh>s^q#Y3`$dl)CX=0z`B~&)mpAM_$Yu?4y0ZD-{C%oLJn9YP^D3c z5!YlMCZX^E)&bF`8p{MrRlXp_{)BcnX!m*K*`}(keW^zL)kkf9`Rk6^{4rIxLp8mG zM+jSpX-ZOPn*>b)baoH-XcB_vuZ?m84V#qQE{6ul4jLz>E0EUm_=qb2OwUb~Fq)JNajCyU&RZmBUWyLNg=n#EBK%KfV}DSzdpW41yYaaf_Z3G|dhZ(pElvU3_4 zwKW?+*jXnb*d0Z%ympbzlzcNmsq1vp^p_FRZWfA5agmoS%6r;HgJ+ut=_w0Us~!sZ zxH!+9Y~#RN(2x!$ShT6t!-tyx{jqwb5rc*OAZh)p|M}f3iN6k2QF0gI7x#n3@|)xcOPQWV{@zh839(OYM^^7=t379OY)#ykko^b=Y;LY&Ix6{h3D>47S82JblQb_B z6>L)U@o)gFDlcA0s=a`NOg=Be`qkr){bWzjZX&@7ynrBT(kQ_ADrEu&+02%zUIEzW z4NHF@3$yd9Tkx3AceZ-n;04UVfBw(guNp$Dsw!tJY~V4^L6K#FZZVeTx>~W-y;xEc zQMd%Y-v*$_0jMS>U{GWJW!wMqvBz&kAFuqY7pS)5JWy#h0z872Igh;pFztq7Ep|1# z&@5On1x-YohvlGR)992BL}^z6@ePP3s>njkdu65=W#c}3ufZ(K7O-wqv-!^b{sVJk zH7beYG~lST^%|&iT_(uJes7lei{EoWRF`JP(~6Z4+sN7rqw*wJ+q2BCc2YOpeJZ}v`xsR zV&*R=yYUHs`066zr-*&6mtU^%hPSBO246Y z@>z>e?J_^(yAfc0;J*7mK!y(#EhQ!w!flvp+N#Bk-2CJIMkNNQmWt-c7U?^y%)p5F z147-`I-d8kK+|7&(n;6PrJT*l3#B69I7w(qVr(g{gFuC(yMk)fiD8>>)4Y_EiXwOm z)Hc3d4v)niGllU3MgJPCzkkvR?eD3>KAAR&ozdJs0VLwfz`4>x&qN;`!bh8mwz$0TiY(a%Er~puoonGu&g=1BK za=0AVwU8C-%5^Sv?fF2(%f0X{A3de_`GC)=*A8BwrgCkYd&ED0(+1<3(NSFmPM7OO z0{g*n0w^#VTyvj#nrq->DO9^J?UW{cvky?#^HC_TYyY<_tX<~I#0sw`DH+6`8a!ujdG{Ytn?2e3lra$@PRowf zTB@mHY>~jqJ-I$M6?p*6H3#wWf|E}A^uJDwy=;yrWL7eOo?QE)hv5f;sugB^PV_}! zK~{UcuFyFYks$CXfuz0VF>jYcel3T(I4GasU1&EZpTF$6=UwdqB09u# zMc4|*r*;R{12Cu{h)QPSQXSjjA^>F7jNz*q>Wb=iSVQ>AlTN(q!5}yt0zk78b!e$* zcOS;72P$INTm%|q;=9ORqctW#o0QxxgH6IFJrB+EG&8qy51a|<3joZ(tcG|fIk5M! z;K(Ls-=H-Q7FBL-6;kMl`!ne{OLWXH2E%Hy1~r-%g4HD_p77djjGdlX+DtKNm|?L! zD85JKM=~009tEo%aIIO_E~A)rP2M*q*jUs_{^!Gwz2}#b^j}U4qkAVNCNkk0w@Ls`;2_RwgE});eh$K;HSx+JNTVGWUh2rs4nMVi13?HT$t-Y zKypE7&|}qWHna1-uI&547t(E5mVO(|MzTGIaijA0?W|*6>d6b%2(4gkOtcNAT8X2favB%jkVAT}NYzAmQrxt(-h?B7^nN{5|Vt_dzET)u+uQl3- z8+lv=xWOSB2B4aV!$lUS$G@G-EpkKGw?9!jo~1WiSDBx6W+)3htV*yNFw~kA(S;#F zvIs)*;+;GH&SF1q>#Qb#H56!l?7i>8qs%%uWr^$p%eck+oT>a@YIkV0BQ%4g)P)~q_Ge5 zlOj+Ryw19JCD9%_`EnR`$h+>l>l>ulQ8~6is1C4f(6WK94zxH0LPzt-DC)3Wbk~;; zs+eF)yQHULvj{6V5!FN)9Cm;;s9K^ulh|OPOMe!^s}F=pXczq}9P3rbop_ON#u;@M zs_XJwWlGLRk6EZ~4hEa2nEJP+5*Q_HvGGt8=&%iliH$5IPkG;sF`0o46CtShpv8Uys1p0lY#jtdG9u z_k^T|S=a&q6*hd*&utc*#tDX75H1Q$Rq{uESOQiRSOwO_2rTe2`Vl*TCLt^xQW0+P zu49h7z(gLa$I))aHURbTUSP7i<|jXS=KvWbA%oj*rH-zfdLD6G1yDSzfu+V_vDOvd zWGu+E)GDjta7})8+giIZSVljx=`thbjN64U2`R~|JlJtpg*1q-tXcajb>?4_n5MRI z#o@hxgcM0oc>2`-ouoblA#t=UA7BZOIT$;yA@hpkxDZuuyv_h#$fk^@DPQk&IwjMv zE#Oz4A#4-S)~wtZsD(BO4Mt4WKhinOG{tn78by8G!j7$FUYXQM>xg;^Mh z^zTbcI+gkT(BK3I7=#UQm3S{WBfqwH?`J)xpgZx4$Z$1-5WIfvDNnz`Xi?}2=B<$4 zF2ewp^2QNe1P{`-SWp<3Rhb^5VjEkpDrsI4sJM6X9MXJqC!8wKY5}VVTAcXnRu5|u zMx^M0Z2Fu%KDqKKwBJ()1o>8k)m|u^QAKL833CwaFu6f}k@rQ%17*o!b1vM036tKf zxBuW$Qr-Bp%4_Hg5>5W_EpJq*n!N0>&P+FGE}_z$y;UfD?dPikMMtfhb~pf*Ei4jJ zU8j1GNocgGQK~}ltY=%+lBxO4TDYKxp%R~)8izB*Di-$(!+;E6RX*UdrIPHk@BO{Y zA@mc^FS^xvKJJW%nFao9GE52QDn_*wJl5e7zVvxXfFcXZ!0C#MuPB`4Yd&+00ku&J zouxP2c*CXVJ@bOCgv?^*x^ITEH30QK(}K7d>c=fC&M(An23G;KV@s>5gi=~AbXU@~ znwS?xP`8hZEiM|W-)xTq-SUlUGfb!-jv)XnC8=VUoHT1KZ!;}B^#)hn_DjV|VI|$X zkAZ;qD9s!mT%R-1z^qf(BrRx?X5voLH2bZyv$HK=4GCbPlF^WoPB3h@+$^6_=@5l9 z)=KuYoGS|)SeA8Yo{uKKi(2P`6=$+0?dH86#CN~x4Z=7t7%lpR?XEr8g|o(tbIUs$ zfJ$}!`26p*#L$)k!&=rt3j-=_iG^>t_zlAb<#{!PC{)ZoWRZO2xDq*ondd%_*ivqd zwA60s<^0>Kyly6n9KZx(t}wb?K7Y%jJ3m%q3c6;Y&tr%zD+s9yK4r@L2+zZSk|<=^ z3V%b)7ZeFJk7Jz<=|&Ou3y36Z5)e=d;TK6lW~ZmKwKqFWlKvb?;~uWi6A_A4LRiLF z)FBhyF|uams+M6bK)OyV z*CrSYp}?~BwGe**6L~xTAt}nrA|Ni~tvF+OtsAgtnaGUY*ak75>`WCR}v#eOL0tZYY zPxQOq_dYvEFz`Hgt20Cnm=(e(?2;U=eo+^@vMfxRhR0p#`eG`j>U1O+^f16vYdb=9 zsSSE)fzqhUTkhTV%^G>4Du1wGBEIJ>mw5{csSeU9HbynT0*?SZ06^>3twX?Cvt~`9 z95MhKTrc=s6m{`E05o{N-;<1L|2_#;kCT0JUtkJi!&hlOZrZd7_tyf}yrwsvRp28P zO;<^=)qQ2Mvjbc-P2-F~xEhwJ5md{Q9J9>r!?0K$mnLBa_HQ+s$Gacje*J%W=;8Zb z@XT}mut!99ZhA(676#6mQot$#!S+5`+G3+)TP}_ZmuVNnUW8%PO*E@Ib5Yp)&AKbe z^9}$rwQnzi6o3z03jh{iLC`@O7?s%`wJhE7*@P?@b_SpX@9*8am+arO7XfRo-y>AM z5BoUch$Be1+bw*i1*{PlIN5MP-u>Z^y5QrhbrpCXeZUny{i$bPR~OrKs8mp=H=JqFPK@3+76`*4oVe#+?|&dQV!hhaHFa4L8udmHrHQUoeWYNEfH zu7}PF%_f=%?fyJLs_FqiaYc|;vD9&*%(i`d_8<^pCmeabfB^wu!E;mh%9wPf+Nh~A zYP2uVx?mr>ckd=M`z5PN6suY#nHc~USTXRoU9GeQtPz*#>1kWLs#|@UR@L7ufE&yR z>Z}Y-F(02H2fSd2C|-^36Bq^?e-U(Eh~`;MKT_^mtc z{4pta#SU!~SulYNdMtsG;2pu-*U&^Ps+>M*D=qtPm`N|1o&Ed=e*BX!lXClXJBuLX zy0BrP2eR>`rbWO?4-;l;mgvWdg2X(EtG!R5x9?Ob(y237??1lbd{@j!*i z$D6V)bJ`S}B?vMggBao5YyhAItjK^B*5#6qpiKeD!E*pobWmv>Yi_nr_U)UJpf#Z9(Pvn1A%bihtPL0T1@EX>q zqbxS7FoU~FH-Z6w%eQa4loUG=Ck}Nq=Mg{lbF*__{MSzOV%xOL%~+NR?KW`N_4D(g zvsh-}Wf+zgr-w2Byw8)EXCMSXH8VX&rl)2x907m_n9zz9D<#N;C`+WNz(x|O7Uhv) zrOG=9AY{5dCz5qd$^FdE^hw<3+C(P^Sg-fu>&&!s~{=YDxK`BnWd~Ek$2j0^rhy7m5b#=>MKZACnO7P z&_UT7CA_Ls5|GGl``+!ZC&fkvZsIL<&bxU3w)_A6E2lmA#Wqu8REx7L(K?^d^{>kf z4VoluQ(fV6Xz)KkRY;YdSOk7NMoT^reF-Eq+&!dj?aV1m6BPxkEy8{$=JYYrS(N%#q#<|E=J@oNk8rD z-)ExVBO;bS9meGfSd3J+=d%BfYPQLAtn<%##`Wo3pZHQM)eTZC(QzFPQL+9AFyQengJ`bn!jP9g7*QaW@mf2CK8<#D`c7Z z2%!?H@kgAl2lI}#yCQM0>qU?a1ee;b` zGG?nu!#FBUfAZCP?*3y^Zop}qga*K(3LPdh9c;4`vffbaVk$Y^?Ia|0HO}R_l=4Tj zT6&P?5|K!VgbYr0t~Co^^XtDVSR7|#4+B4~^JkK+&3QMh%e-&EDhR0dUZ?0`G?DIR z8@ogjn3_FgYB4&rRLqveazz`5H6O6DO}&s*_ZW<-#Q6Vl{BdXAJU)IQ?ZvvREvaN! zCQz_)&>rL)WmJs?9*+vxLtp*TogZ}oDkgc;0~@d^O%~fDrPx+c`-82pge(iKKueVu zCk}x+@08}cfcgDY73{03cjfaIdWHF3Z@R#)0ca8lN-@-ElmB`U+!?Ao!K_k*2`tqy zQ_4}4J3{j71^QMWFEQ0p0i_-MOsqjt<;OCTS1)In*4+Zu=wRh)RfFQNN^x1AJ?f~- zMNLxYpo*hQNmy@eOUr@#mp{Jeag&z{_S$$h_jY%qhY!J}XfP@LAogH2V%?Vk*G0 zwbKB%Yc;IVbStAj`BH6M6EGrv4`OiRh7HHWJ!uL;^c~phk)j1gBu?P!Q09o;+U-tR z79^^KWl>7_g=SBMsOXXq?3=BUT0y<|ceBysmdFLq($RCXQx+h_j#(Hx8dg+sQ}K`g zblYcNa>9up1*Zd4wgeLpZwwMxZP9FjT?cQ|<*8v&!HV(#x|KPK@c;%ZCRdSv{LXEE zOsd;>HDXureBFk17>ue+H#IJD?_Y5OQh<~w)=CwNh42+*ObO3C!M3@`q?dB;(FL@b)+IqZOw?R%KX}VLj?N@-tnmszD1`43y?<%djsq zuDR2|!faFQ{JgZZ#^nN7ZgjfMvg*WlyJ2ef`4^w}%un#SxO4**!b}+Ti^b~dHrBF+ z@+|sVGl}`>2BzK-bXkG6<^S@H|9FQ5M!x=cHh?iQApgx|`kUZHyZyO+LmUcbpxw$n z8<=50PGI8hFWi3D#|JnsniQ49HPex(N$X0A=QHcptn@2W9tK{EV-+l#v#}%#28HVb zk5%K;Hb3*y8Vgh<+WI=U z*!mUmJ@*BUR(=0cK6iDKP5r{j7w)+C;}$U0t%J(R;NNp`U$Y|J7(z=Cd6tBVS`Wic z*02@A5^Qz^aa$1XVEPk4-YtL?1cn;D%b0!2Bn%t|mm4=(&S@Js+8C^=qSSqwR#hqv zg4G4*oViu>`*@L4uDYB+A2*gd%qdlIM5)%IxG;&Yazv>JQ)>W)N}w!~?cS78JY zM-TC&p?KWJ<$H#EZkaUu3Kfa(07aUR@y-NULD;MZn7G3NjG0*1I3asau&&atbgu>Y zF5`MqHxJD;7*u???vcyVkwD}CLRR^_3PZMOele)Z#e+A2UH<&usV`V2psWA6fw(d8 z_aMyHSN;0W3-b5_S|eozpbu#=WC0j6GO1XVmg#oKGffKsiHaCIm&0oTi*Q>2E?{h? zN`nEfPBcbVu3VYbn4_elg?T-hi;xh~mPl@*TZI)S;UG=Rejm5F;2BT34g>4Bx{*}c z4awM*ut9`ra$$=2(E*y(5)CUd$2!xSBR75TJ692>brh*?$kFH*8IV+w?Mi4D8K$`r z{w6BEzCzYwFfo7otKxf5)f&|!t?NigARm3;!7q9AK-aXkfhutx3uYoPAj5`@XD0+W;o(d}R!PGd4ONDr#wXp)(fooE7Mu);9bGJ?QK-Q0@k zgK9fJ4?MO(6+?#tFs|C+YKqI0Cj}`tBs}po$p~0nv6e`A zY~3D$iQ~ZVXq--ffP#U{Cgq70yN~Bul4MdHRWe596XyK{;Sqqy=wV<+BJ09Z zNNLtw!T?|pbntsjaY~4N4RqNcWjew!wW537=&7n@Rh1i9yWOvyd*&Yqym)yK=u(^I z7fKZNEv&3rRRuMgN9Nc|ULEVA-A{b?KQQ8hYpyoII*sWF{QG9_Y!GQ!Bh72P_kpWlz$|TnsW1 zKi41o1z=R)DKd{FPo1du7O>p=s{~k8RT%=0hE>wEo=DRpRmDW6J#Ti7o(V+=OE*qd zt)Vaj$4eHlOzao+i(e%ZWPm6)-#un~A5TJShj^x|)_(^HSGL6I=OZ0qa;ZILoxaShw2}eV&En zlOm3kGN=2+U9PH%b~AI3SLlMmBfPt5Pno&+8!!I(QUFV!nW$V6y#cJt>qUIqsVBbd)>SJm zgkoiiDgFQKU44)oM|JP+ncX{`&&=MPbh~@qs@3l8-OldLbpQIj-+S-(Xl@Fd0xD*yOKJNC7H;BVP%U{D z{1T6qrf^J>Y9uhkU)2?rS4y8KH^B+l`_L8jhd^lD%5xkaXC{T=iPrbT4@k8!Z(WjT z7P|fZZ@x*U9wh_^SUHa*MaAu}0v6=E80jR{k|>Ju{h%e5&t2DW0%rFoqX7=13Ru*$ zIA{&Og;N>Wf6Yu^)0@lki&b>}C~~Td%x|K1O_KMPYu9>yR2LoYB}fAKJ|2re2F|;$ z$0N9zLol0}jX#I)oM{4Envz;=S&Grm(Sq*OS9b5cEf9$Col{?)n|^%#JKoHjIvBxx zDcnT|mR{+{R3LZIb?_0^#pA*6=b1O9_k^D#T3BUQ(A{WDiwj!=ovSXs;B%@@(D>)Z znli3gq46Uq#B4^S%#d|dcx2<6F#7Ii4&6?|35-4ti;-qc{5(PT+70V(l@u}ZfLHM? zz;PXF9;rpUd9L@L9`Fgd*ghUG=dT>S*ps)btnEgr2h^7$6W5wC&P<6xyOm1^$ zc5@dT04I%r)dX1B74by?E1>n3*IfF!Z0Ye0+L(GN?^3cm5}H)?sp#hn$9mVk5OLcz?kA21W5)H{+5G>cC}bYkdW^Ze<8WA zusnIP+d0?iTM246hrxTRE8S#vkm-O-D)Z>nOx-%h8 z)g?Zc&VAIws>}^ano}7ZvD_yTUw=RXwQd=8UZ_8QLgRX1N2Uyj_^^*Qr9lDr#J5 zzRzol3y39#ELtbZSFx_psm6e1w7()?`2dT0xGG#9=mR(X{I<0(x>zN|abitrY-)p) zhQfCreO_vKz+!GEZqo=skg9H2QbV*Sx4dNSJABHaQkK=~N4W}MK2y|o`>8vRZJMSE zgF6CndR4&kk?ZjJB!SCU$E6vmR@(a{GPnD`Qhst0ju2mjs{3yAD5K_*REBo zp8th4&wID_toq74PKrDd=?X?9XaG?FmP9mw+o@Q>maMIO8_p+Kv^#kEw#R<<5mFzy zf|fxjD(JPi?w#ts5uPVZ5-Zn6|BhC_!>D!_!si>irs{kB)niZm1!R>}IwEv&*N44q@sfE6FFngi$f^jyy^sgm!}!oqHJyY9_t0JxHy zH@x_hLg1Y#A(J}l7PwjjTaO%liiCyZ;EmR}fEB|1O&iYnh)-&z{JH3YUBZ#Ft?YNb z`nkhTv^=MxhC7r+W;!iNE!SON+>oR!1Cx~^im>e%KJTiGrwWK@<6-3#3Yg;+0W0hh zhHhBTUH{Cb$q?qftl*<;raA{Zh^*{JHX&PZeQ@=+D!8K68a$F4m9}0jY-QYX-rttq z7ln~Qj;aLAy8W0+Ei^J9Ov)zy3f|WVBEn?c^sC z6dQ%jb9|&RhOs{WFz2xylA~$eqU~3x`wzVD8W*fiDOA*u@A>1mz2S1Hd&N@|uu=aw zD8mT@mlNWX9+%O9P_h4G0IS<5Do@LfU2HTzZlSsn0Soh1w1(62@>{pOblp2u=?!&~ z97DW$Nnw=w!C|p20`Ku!F4#8OQ}25A@SUWcj<^7z6w<-Zt=K!xJmW@UyR7&?$DDgn z;jkPBQnVWzF%!y{2gb@g5a0wu7FCmWyEb~h{@oq=IM=;#E5|M5d~*bsFI9s^Rp6nt z3c9dKMI&I1D5pD0fK`_;>ibGZ#+seC z&I&rA3kiQ7)s@=vMcU*ae7+Ao_4IwDUggs5`aXUTTUy$Zz5c~#{h`ZilR0RWxfL#p z+=}9FI9P0CQ2=YPQyvmernx}ftl##`p)ZjkltY1^m7tAQpZ~9Z`);U+LGb-`SG`Wk zQkyhdl0ypRQ$c`I>I+UEi}PVL$VRhdDjgB9ati}mTRyvkdaN?@*pcM2{bYBGOPA(Y zw{WpGlx8c4v~vGik;DGq)wP;}H%98U@%8f$&P<>AgQ@Q2R1om8wzMQ4sYySK#SG8$ zM;?D-J36N!Yl?vLO2J7e0Ty~K!H>WCo$m#F=YVp?6|a#_9!6KO>SAW|U6oiL=C{f~ zB`QBxdKt(l;KxX{pgHjZlK(LPG1X){(MUkmg%LJVuL_>ECR1VN3*sy)yZtd6MU-a# zFmPl|i=q0hgkmFzHIkT>9i4@+8_y)xf^#q%HPZnHN#1ktm)lzKDgwBJIH*zSp#7e8 zXMa*x3kbL4i-J2NE?c{!Uyu=*hshnuTjXhpV504?E_K`8ztZwvpS!Z+hUg$pKo)W? zAg8T~Sf^l3aRgKe_}N8ep%oUCp$_az6-C%@e*c~}uhoy=cI8&70#c6KavWMQkFyF_ z#-ie=SJNs*pR1jPrT-Vz{DhX1e=%H(a?Z;VozTG>zyIl{c9G^>A?e`{sfWK(ILLCq z0WI(KcW&8t9(INvS8J;VOcv!E^V5u~!jp&4#cE^EN@@g*H(aV4Zh)bQb%=~G?Bx-pyFuLPJQlRNacl|qA6Qm9~t zh+t@O)p3XU2C`+t+RwU9zy*Ir3cw=LW=hMTp*Rfp)E3wlW0Psq;1xt<@wrNX+vh+& z1Avqvzu2iZBtuwNtzANNygJLQ5-j+}_V1VG%Wu5ya)HVI5vYA0IlzJqCLCzN&Np6{ z@XIg!wJnNNbX{wWk(B_A7|{q?Aq$``%nYMPmDkF8-o|&_`6j3`#WyIvLg`LWLP-0> z#tx|uX0Uf{IOnErH`R@071zh@ly-cE(r6%7qp#BZLJp^SHLMl3kmxPWB8TFKK5(^! zHB76K_WaSn1|Uc^6~_fRINC%O#U*U{T4=q6BAw#jzPF>~^1k)8m&sAEj+Y8Esb`l8 z^&afnTN>iB_MEbE3tIXlCs>AZtclwb9Q8xx$^6=j`)0oD58vmC4I4fV=4cnq&yMH0 z&}|CbPX(T9bL-CIHBIk>KbJNhzOnt@k;uSKml&{ob%Q=-2A_aj{<=d6J6raw^=(x| z8L+A{kdUbslxi-ZcTG#eyRscdX{#OFuMdRCoFSz+a2;6wz91B>>%eFM7Kz2~RH#ls zTz~#ckNoN>(wuwM=ElJ}miO%Z@eNnL^5wTNnQ3fPd5>BFOT90%HEPnl#5OtC^_*Jw zP1*!rrvD4Z4JGlH#+;Z5*s=GnpxCN%yu0v zL4MWZTi0mmrUy(f@^V*a6BX1Qb1XFxDkf<4t#KKeAHXJ>t(Vo5q6>$JwC1f?UO zW~~BPzT`!EVtJ|%cV*s(SNOA3pv@~ub+qst(cky4dw=+M#NT^Rkg5c-@L0XFhHzhU zmylFTitu;ji#X9o9ZCwUI)m?W|K2?}kZ^0M9snqA@8|5_r|7&xH{6$x1X@9{3pp zRtIeekVkaxcL!Lvm5xQ1Z`yd9>b{aml4r6nhK04%fJF%cEMfAoxajAbhw4rEzkB!I z-~p_Vcpvw;gC{+$p#@msj^MD72HqIO$pWmU;IQga6d0+m8}thMX^V<3ZZv60RW9p3 zFBLkQe}FKv7OZ@xdPc%>$O7>xj-yCOwc|4dmK6@Q=D8!PBQb8^Itu4;!JA58lPT+} zr{tnnY~1$XLwn!Hs`I>bp1?WeLs(Ty;SzELLKMB8x8&L;f^-js(A$8Pc1^Z!I_L8l zr@EqCAF#)bvVzLQrkwN@$K&#aq{(vE3JorEHxs7uM3PzM1!2i~aLxrN+d;duKnf1! zggZ-!({hhPtQHAV7~I?Dt-)0Nmn`IYixW54)dy2$$NqoxZ9s!o7;6&=uCuK2 zbIa;2Gj$DFA(^e`i_){ACIfu)`R9MuxaSYuK#E+e1Z*5~9v0S8xP%-86<~@6{MkM3 zgJbt66|m~U=}l1!P4wNp`?2@F`uugbbKOvinNGI0iKj^(mBh5fGwaPYo5(BKZ8s6c z0hP4cnWzAklhcCk3AaG$WM&d7s<}qA+&xB!vU~_$3>B*+uevwKNjr>eJU(~d7Y;mr zCjz88z~ZE)y%gFITq8OkKyk1D9aydN5hIFUA_zc{FK*j_D zq72kcxjZ9QSrl9rt-jUoQdV{0(@M7z8eUY^rAl%gZJxis2Dkwr?%Ma`8$2A953qO( zPRsFH3~^RiAkio2SK%MGUbOKa75J-l+#gt4%2E})0GW(JU2xV2I{5*25Qy*3i3NT5 z8Y&iPO5%dha=R=iQB=~CBA$d(VXxcZ8Y*6qb*&DSX<;V6vwP3`S5*5#ih!Fo3TX|z zCV&8Ma2{pg@$eUD!lQ(hMRw_h7u;@IdYMV2)`|u!*NH^wn`a8lWMN4S{;sdebRl2? zwNmEvuO$mEsQh`_uPnSy(rv%suR;~boZUX}@UsPQp~mq5Hhn>reVNU} zNDiC7v4VJZ)62_>M5h2W$*mGX-;l6_Ikn^doi~lJONar=m&SlCDmTAe^tm@_Q9?qR z3v(gAg3Vm~Iz7AY-L><^D_(W!?Rvpv87X&kF&Wn`KV0q7Mq0zw0#*h5^F|f4SD7bC zGTj(itW>&J>gqfe8!@h}Du4N(-MeoEq$Zp+bsW{OoEGLT5CNipd8k72mU~%9jH5b_eUaccwVrKwEM_+-!%Nz4VXF*WqlivwtnD-@OR?mwx-`Ev zT?Ag3d9GtqQ{>?Oic2o}doIm}rUehPUVaQIg{1>bI>qyQbB}I1dhCIV56>QW`!mly zdV*a-0W7NoaFiL~tR%n;I4`lt<_WWcmI|;!8MPUTBvMk}V!c#C&`GBTlVotw#hlKS zQ4vFLYW-zZ4wCS;Y^HX#8bRmAe<;d*4=O3H<*&jT8Xz!3|4Q_r= z6hUUhpPA1C5&jdZ*tk?KAwfhsPF}3#tVp$3S|96?6*FgC|MH9eN~tUAR0d+BfP)32 zLe9z+)GJ@@{yLe_lJ3Gyz6@A9tVEWZ9niW66oC-)F9^tw6*9N7;u7WyY=DI6;JWYL zxA)ITk=)q><~B6F`yevI1K{r?Pq_!soSV+(5fIUjzw&|?Y`ACDs#iQXv*Pku!cT?s zikHg_i~?phS9Q&-tL5BDl{D)TP7QL)ynfO*x16;lh%86_d@|Fts<3I~=ac-}^m(tu zYdOP80)pOH>l9d9r)U>aeFxQQUOiScgqlC8dp%9^`JvoK6GhH)QlANPj<{`}p|z=q zqC2L_z|76%HktQa-#b88o`yajV6zx}I=T7i(f`gP58+=fnQBBp7}_Z#Z7{NDN({m%Wz2@P6%u+^5X|Fn_g6acCt^f4!DdKDszk@gGF*Yl-YnRhHH0NB^Bu*{*FAjou< zJ^QT(9{3=s=IBAr3IbByMmk5zrAHG3Si}Q9SYF207ccRU@=$7{bJ@jPwq?D3zSC-x z-s7raz+#qEUAb~4nVFd}ZOI3qckI|Pa_s0VIePS{1{BH5g|eBv`Snvy|7|(AesleP-pIu9S(R4sI&H-ktV`hqwhH*5ZI;=n zscsBRi^OR+$4x2*2TM-Weif=EuZ#4P9lLkGFO?E*WW9g|)dsNmBmx%k0G7|9Diu4U z#grnzO5c3h<$wLFjGxxa`Z-~W0ZU3*$&DfwFcerhv%b$w6v~=%2FwtFP>cO46ZzknhKwNf{c|y_|@t5lONckR$ zLWb%*r@(c9b)B#ScN1VO)VdlLu!aGsrq6<3n@TDxmz#d$yNcFsGJ zBE;8G%Vq*{gp14ZPT=YW-4;4HI`4PZ%;db|dq-BixA-0chj7E_#~DDwT>T(z~4 zbuM2Uz{(~Suqblx5)xJ+?E(u6S^*Hi^zXNB*|JT60)QfKbjUYhU{_vcrC}aKSZ*vg z<-sngUh6C?_ZXA!JhSQs`u$C`NV%@=IBxQ&`xR-IY`^cm8;L)W&nMK^q!^H)Xd@0! zCmz7^@r^L4lr9ICkd*b>aQPTp00_@(RW*I~$GhE`{nJyY9ZuQQPrBXJPj)+J9_*xN z92;EIBP>1bxg=dPxL@>Bk=XTGv=t?i}_O2v{e?!WxA(UofQ~W&=yWs}Qie z5zj(}HE~V0aBVt5B`j_Q{wO}d4N3wUfb208_&`oe0hX&#bQWNDYGBc2W@qj93(HUm z6JB!Rg|}aO`0$rM{KzABk#a2;jv&HNwEI0nzlWtbxETToL?_+xpr}QPqKeDGCBy=f zI7&upzW2!nFtWDS>kV$tHhe#d$alOB+m_Aw3a}?CO6WUrz9^v2qQcV2P%0K`!sip| zz2~0$TMx|4TY z0A{wgwXh~GN?5mxCCE*j3IJ4xR5P(*bP-Rae4^cT>Zxaablv(79AoU%QWFAKM`j=E ztwVu_QZluG#i(p7#Dz6zPy@Zlg08xylJiQ$hyx%sVQ};F=Hth=-}&%?eqfHfbBkp?WRP`;yY-ZZ5( z@Z|(p1X)$7Co%;&D{OILZUyoW6@9IDY`X9RPjoux!BP?kSX$(703-?PkmHIRmnIuM zBrfMWh5{_-BIeeXkQMinfij&OI9b{9a}i1xje7a9WA}aW;RAP)`n)Ud;jDUropBD3 z@6cL>0g)708Oy;Xgc3(|99+U70L<-o#>LMEfBE^O5rEUZY*6Tppw;Nx66tSp+liypvA2(2`@5VV|2 z!vY-K_0K%>54Zl}|L!N@MA4>+hJS`BBsc&PTC|hw5;79b?4DGYP?Bm5D(o51Cspa~ zx#6$q_yZOJK$LpiKA)^_r^Zzw9&4b)mF+n7^t1lx#pixZ15pO@ss;~LUX)A?c$C0I z2y5vu`yA8#0U-zFZn=v%u$X3NXDbP&`f=8;0FnDObX6;-7if0v-M0@$6eXBsZ8DT0 zHz7Qn6)cKo%g8090S;@@T|!)A=;O4oT0?)i0v7eSd!bSu*fBaZk?v+3$d?7-?nbXy zSZ}6mrJAHF0A=9#vM=u6|G|y3vxms=;b;hGJ`MMzX2DK!T0@gU?#QJz%+n>5$l{VD z>S47W9gj=sE9LPK!F4WSO8l*?DxHu2`K%Xi{PgNGZ{b4ZMYuSx%0=*!q*DSc$2B>y z(YaL#JT11Vfy^cF*vr8&r@(+^#$`Du<070pckOyFSy%!f_W)L%TQsRIAq`lR z%fThY=`C1St%pc?vYY{nk^16jOavzlraB}3L{&!WL)L5_WUhYhQ!jYomVZC(^s5hc zx@(lgm(g{ZFT+R_>gcS#vP$ z%seukuK7hLJ@a6vvu2jkm4}lRtB)kfnsVcd;u>13iW9$JpAWEt7S^@bygpOb+Sk7M zUD!Q`Ekl=(wg9Y2b_uat=xc5=e@U4M11v(y`9PSnVu9Ts0}Uhok{?FG;p#fTYO{0G z2J2&(W3^r6p;|)BHMFs~c!PViT+$lG(IuQOV3B}@1~o1CpQynWD)8L z9fu!;MGc=fN`SSPX$^8zE7E}@Ta@bOtbJ*|V8szf1gtT(zA$)Aic5$I_y|^UM8KLr@Zv3iY8+fb3}SJ_5dmu%x|F`h z!&+h|+9iwt6-NZDIOYv-5kTUIW1fS>QxHcSaYPHNWLrd|B91uXh!$2Hal{b;D~>qg zh$8}49C5@EM+B@m;)o*xRvdA}5k~~9IO2#SjtE$B#1TgXtT^I`BaR4Ial{cv91*bM zh$D^&SaHM=M;sBb;)o-TI3i%h5l0*oGX7tH0RUIjsjn*x@ Bc$xqJ literal 0 HcmV?d00001 diff --git a/yggdrasil/y2r.sh b/yggdrasil/y2r.sh new file mode 100644 index 0000000..97d1d0a --- /dev/null +++ b/yggdrasil/y2r.sh @@ -0,0 +1,186 @@ +#!/bin/bash +# +# The script finds routers with a Yggdrasil IPv6 +# and mixes 30% of regular routers with them. +# +# If Yggdrasil < 25 then regular routers 25; +# +# Путь до папки netDb, которая будет скопирована +netdb=/var/lib/i2pd/netDb +# Путь до выходной папки +outdb=/srv/pyseeder/transitoutput +# +### +temp=/tmp/yggreseed +success=/tmp/yggreseed.success +padding=/tmp/yggreseed.padding +minimum=25 # Минимальное количество роутеров с Ygg +timestart=$(date '+%Y-%m-%d %H:%M:%S') +### + +# Проверка рабочих директорий: +echo -n $netdb... +cd $netdb &> /dev/null +if [[ $? != 0 ]]; then + echo "X" + exit 1 +else + echo "OK" +fi +ls + +echo -n $outdb... +cd $outdb &> /dev/null +if [[ $? != 0 ]]; then + echo "X" + exit 2 +else + echo "OK" +fi +ls + +# Очистка выходной директории +echo "Clearing the output directory..." +rm -r $outdb/* &> /dev/null + +maketemp () { # Создание временной папки первичной сортировки + echo "Creating temp directory..." + rm -r $temp &> /dev/null + mkdir $temp &> /dev/null + if [[ $? != 0 ]]; then + echo "Error. Exiting." + exit 3 + fi +} +maketemp + +copy () { # Копирование базы роутера в первичную временную папку + echo "Copying the router base to the temp directory..." + cp -r $netdb/* $temp/ &> /dev/null + if [[ $? != 0 ]]; then + echo "Error. Exiting." + exit 4 + fi +} +copy + +# Main section + +echo "Finding the Yggdrasil routers:" +cd $temp +yggaddr=0 +count=1 + +for((;;)); do # Поиск Yggdrasil-роутеров и их копирование в выходную директорию + dir=$(ls -lh | head -n 2 | tail -n 1 | grep -o r.$) + if [[ $? != 0 ]]; then + break + fi + + cd $dir + for((;;)); do + dat=$(ls -lh | head -n 2 | tail -n 1 | grep -E -w -o routerInfo.*.dat$) + if [[ $? != 0 ]]; then # Если файлов в папке не осталось, выходим и удаляем ее + cd $temp + rmdir $dir + break + fi + + echo -n "[$count] " + echo -n "$dat [" + cat $dat | grep '=.[23]..:' &> /dev/null # Поиск host=200: или host=300: + + if [[ $? == 0 ]]; then # Успех, забираем + echo "+]" + let yggaddr++ + mkdir $outdb/$dir &> /dev/null + mv ./$dat $outdb/$dir + echo $dat >> $success + else # Не успех, удаляем + echo ".]" + rm ./$dat + fi + let count++ + done +done + +echo -e "\n================================================= YGGDRASIL *" +cat $success +rm $success +echo -e "===========================================================" + +echo -e "Reseed building..." +yggvolume=$(($yggaddr / 100 * 70)) # 70% ресида - Ygg-роутеры. +echo -n "Need " +if [[ $yggvolume < $minimum ]]; then # Если их меньше minimum, докладываем 25 роутеров обычных + echo -n "25 " + paddingcount=25 +else + paddingcount=$(($yggaddr / 100 * 30)) + echo -n "$paddingcount " +fi +echo "regular routers" + +cd $temp +maketemp +copy +echo -n "Padding status: " +realpadding=0 +for((i=0; $i < $paddingcount; i++)); do + + rand=$(( $RANDOM % 10 )) + for((j=0;$j!=$rand;j++)); do + cd $temp + dir=$(ls -lh | head -n 2 | tail -n 1 | grep -o r.$) + if [[ $? != 0 ]]; then + echo "Dir error! PADDING-RAND-FOR" + exit 5 + fi + cd $dir + dat=$(ls -lh | head -n 2 | tail -n 1 | grep -E -w -o routerInfo.*.dat$) + if [[ $? != 0 ]]; then # Если файлов в папке не осталось, выходим и удаляем ее + cd $temp + rmdir $dir + else + rm ./$dat + fi + cd $temp + done + + padselect () { # Дополнение ресида случайными роутерами + cd $temp + dir=$(ls -lh | head -n 2 | tail -n 1 | grep -o r.$) + if [[ $? != 0 ]]; then + echo "." + padselect + fi + cd $dir + dat=$(ls -lh | head -n 2 | tail -n 1 | grep -E -w -o routerInfo.*.dat$) + if [[ $? != 0 ]]; then # Если файлов в папке не осталось, выходим и удаляем ее + cd $temp + rmdir $dir + padselect + fi + } + padselect + + mkdir $outdb/$dir &> /dev/null + mv ./$dat $outdb/$dir + echo $dat >> $padding + let realpadding++ + echo -n "*" +done + +echo -e "\n=================================================== PADDING *" +cat $padding +rm $padding +echo -e "===========================================================" +echo -e "\nstarted: $timestart\nfinished: $(date '+%Y-%m-%d %H:%M:%S')" +echo -e "total routers: $count" +echo -e "reseed build: $(($yggaddr+$realpadding)) ($yggaddr/$realpadding)\n" +echo -e "Yggdrasil I2P reseed creator (c) GPLv3, acetone, 2021\n" + +# Update web page + +sed -i "s/>[0-9]\{1,1000\}$yggaddr Date: Mon, 12 Apr 2021 13:37:02 -0400 Subject: [PATCH 3/5] Update seed.html --- yggdrasil/seed.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/yggdrasil/seed.html b/yggdrasil/seed.html index 02ba654..956d77d 100644 --- a/yggdrasil/seed.html +++ b/yggdrasil/seed.html @@ -2,7 +2,7 @@ - I2P Reseed. First in Yggdrasil. + I2P Reseed in Yggdrasil.