From 1c2483b744c0d44f8285755ed56d97aff8fa0714 Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Mon, 8 Jul 2024 13:05:45 -0400 Subject: [PATCH 01/15] frontend wip --- .../self-hosting/personalized-frontend/_category_.json | 7 +++++++ .../personalized-frontend/personalized-frontend.md | 3 +++ 2 files changed, 10 insertions(+) create mode 100644 docs/guides/self-hosting/personalized-frontend/_category_.json create mode 100644 docs/guides/self-hosting/personalized-frontend/personalized-frontend.md diff --git a/docs/guides/self-hosting/personalized-frontend/_category_.json b/docs/guides/self-hosting/personalized-frontend/_category_.json new file mode 100644 index 000000000..94c985cb6 --- /dev/null +++ b/docs/guides/self-hosting/personalized-frontend/_category_.json @@ -0,0 +1,7 @@ +{ + "label": "Personalized Frontends", + "position": 19, + "link": { + "type": "generated-index" + } +} diff --git a/docs/guides/self-hosting/personalized-frontend/personalized-frontend.md b/docs/guides/self-hosting/personalized-frontend/personalized-frontend.md new file mode 100644 index 000000000..ad9950f5b --- /dev/null +++ b/docs/guides/self-hosting/personalized-frontend/personalized-frontend.md @@ -0,0 +1,3 @@ +# Personalized Frontend + +This document describes an approach for self-hosting a public frontend for one or many zrok shares, complete with TLS and personalized DNS. This implementation can give you all of the advantages of a personalized domain name for your zrok shares, without having to self-host the entirety of the zrok and OpenZiti stack. \ No newline at end of file From 7f7e0ff42c391ac44cc6e18771c93f3c0675fae4 Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Mon, 8 Jul 2024 13:08:51 -0400 Subject: [PATCH 02/15] refactor --- .../{personalized-frontend => }/personalized-frontend.md | 6 +++++- .../self-hosting/personalized-frontend/_category_.json | 7 ------- 2 files changed, 5 insertions(+), 8 deletions(-) rename docs/guides/self-hosting/{personalized-frontend => }/personalized-frontend.md (77%) delete mode 100644 docs/guides/self-hosting/personalized-frontend/_category_.json diff --git a/docs/guides/self-hosting/personalized-frontend/personalized-frontend.md b/docs/guides/self-hosting/personalized-frontend.md similarity index 77% rename from docs/guides/self-hosting/personalized-frontend/personalized-frontend.md rename to docs/guides/self-hosting/personalized-frontend.md index ad9950f5b..cd00c5d40 100644 --- a/docs/guides/self-hosting/personalized-frontend/personalized-frontend.md +++ b/docs/guides/self-hosting/personalized-frontend.md @@ -1,3 +1,7 @@ -# Personalized Frontend +--- +title: Personalized Frontend +sidebar_label: Personalized Frontend +sidebar_position: 19 +--- This document describes an approach for self-hosting a public frontend for one or many zrok shares, complete with TLS and personalized DNS. This implementation can give you all of the advantages of a personalized domain name for your zrok shares, without having to self-host the entirety of the zrok and OpenZiti stack. \ No newline at end of file diff --git a/docs/guides/self-hosting/personalized-frontend/_category_.json b/docs/guides/self-hosting/personalized-frontend/_category_.json deleted file mode 100644 index 94c985cb6..000000000 --- a/docs/guides/self-hosting/personalized-frontend/_category_.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "label": "Personalized Frontends", - "position": 19, - "link": { - "type": "generated-index" - } -} From 4716310989323ff49de5f626c64c3d2bb54b13de Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Mon, 8 Jul 2024 13:34:02 -0400 Subject: [PATCH 03/15] personalized frontend --- .../self-hosting/personalized-frontend.md | 12 +++++++++++- docs/images/personalized-frontend-1.png | Bin 0 -> 37093 bytes 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 docs/images/personalized-frontend-1.png diff --git a/docs/guides/self-hosting/personalized-frontend.md b/docs/guides/self-hosting/personalized-frontend.md index cd00c5d40..f331d0257 100644 --- a/docs/guides/self-hosting/personalized-frontend.md +++ b/docs/guides/self-hosting/personalized-frontend.md @@ -4,4 +4,14 @@ sidebar_label: Personalized Frontend sidebar_position: 19 --- -This document describes an approach for self-hosting a public frontend for one or many zrok shares, complete with TLS and personalized DNS. This implementation can give you all of the advantages of a personalized domain name for your zrok shares, without having to self-host the entirety of the zrok and OpenZiti stack. \ No newline at end of file +This guide describes an approach for self-hosting _only_ the components required to manage a public frontend, complete with TLS and customized DNS, for one or many zrok private shares. + +This approach gives you complete control over the way that your shares are accessed publicly, and can be self-hosted on an extremely minimal VPS instance or through a container hosting service. + +We're going to explore this approach using a minimal VPS through this guide. + +## Overview + +The approach looks like this: + +![personalized-frontend-1](../../images/personalized-frontend-1.png) \ No newline at end of file diff --git a/docs/images/personalized-frontend-1.png b/docs/images/personalized-frontend-1.png new file mode 100644 index 0000000000000000000000000000000000000000..f0fbb60e2a21fa59ee5d8b80f634edbaa4493b03 GIT binary patch literal 37093 zcmeFZ1z43`);Erb2#Asbl1g`XOLvzvhweCZBMkx~9TFnl(gGrq(j}cD-O~NPkHGWz zIP=cD^ZsY%o9F$$OD?(3zIUv>)^Dx7*4pb3EGHv+9|0Qy3JU7JxR{Uv6cjWV3hI_7 z94ye1@rK<7_;m}cASwV=)PuVM1x0n+URcfE(%Hz=!VrptN$~24gpuCF8f;I(Bt*i< zC~RSlN)WoKYizv{1N zY-n{ok+ij|sfC3e38M%LEj=(5xf%n|T>yBJGPQDW27WuUv+A%iQvgp-ZEP$IRSiLs zruLBjOl-7FtdJp+VoK6dB#eT1pX{S?M`AXc_1^fH%KyN`#S}mf;6Iih4$RcBVfq2idQoy`J&aUezs~ z6_icECW>}e#%#vI(xRgDwpV*}G_(Vo0u1`WuA9XngY8{x46j-Z3>{7N0ZJgPV0}G{ z>t=?l7Lc`_fuY^?cz|$55+-31`lmo&$PbgCfvKLcot`D|!AcL<&yRKF0M61}k2k#* zhk&61*xt~IRf<7DTFk+T!$DqL?$_CF=CpJcwbQdPk+wE4v;ZbHaK4(BfrW$ZiYNn@ zs}@#ffMF22jqPsMxn361plIrPvloEaAKe^G4Gh88vt2dWTU%S$o7()bQQz9i3P9E$ zI_lZkSv&o)n~}A}_3o}$wE;H%he41A#lPSwq*c|_z~1DlFFXA;d60H7LsMgu>y=q= zURdhg^u6v0HqkS%cDfq=qv>a%T(R+nnReFJz;r*!?B~}voh+RN4J{zNzG36_IsoGS z@v*-#!|pfz`u{VXqNIqK5RJ8o1cRlxGn=)r6C1tt4Z0llEF7*m?rLXk{zJ!p;Mm^f z2FJj@0PzBy1OTS}z`VYNwF4kG0VfkvdqYJVJplYnLQVkUfHo6*OAFu=MEL=`Vi*F67Z})CJ6IX~I2$0c{l`Qv%nJGUgMc3d|4RkT!v2eZng5D_Zw$lF0>0_@ zpCe$V|G9vFlJ);~0W;lb>(3he=MXU9_xz&4DsqZfZQy^t1vWA=WYyOP)bKAXumKwf z2;kVi#{x4jUgP@40yF$@ix}yDk{{!ZOn+8T2Dbk=6MSuI{?Y{N>FXPU!8fY+2g7<} zc>ldN*vQC;@xKs0D~Ofl-({T{nST-fjn(~0_zZsz<-K;D|5EmU|M>m)TIc^1(X;$f z^nYTz&2Vjqev`fj27;FADzwd85>X1X~<_F@m%UPQO36bAI4Mz4q0-oh2 z)VNvcie1;EAdbM_k0O3s4|w=1OENM2vg8d?Z>d(J4*j_mE*Y4u`4}c1QIBJKBc>MQvNSdI<{Xl0HQGv-MZ0$ ze}U5d;?Oex>ZksBl@4IsF9C{`v8k2wUufR%r`A879rzD%PZ)p$_Qz%+=O^&Qc$4t? z=}h6c#?sGc%8dhigRlSdd7+z){KMYKf9;0+Rj+~ZZ@Ue@`z|*&^U8>_{TK#uY<_n) zetd#39^#{1iQ%8(Z!lZ~`0v`jA2#xDpHx>zFXYhu?GXG!%zEQo{0xqpwtthu@rxm1 zWcrueKE_|nEyIo0+^EB!*Y+`A;qYIrMOW$o@wb0-<9~L(|0^x}PgJ5G-u<6li5UL< zUOVIeUa$Q+wf7Gz5g4!=|Fb~(kB80QQxixGd=*~<*9Jd_#DDK_1IGOtTmLi9t*g2I z?y>dbc>A+!95eHEgmUe9G5>mo{PSIQW{zK${Pm>#^B!A&d8crNrGH(V{6Ez=4oK4Z z_axMh(E7hV2mdn^?njL9XID5DreDziuUEKVZ)KVP_bA+TP0fGvh_kY`g49wN=z&ds zyG{Qo?t-+->DdDbTS(0jkn^I4q{PES6o3*Uf!_n}eu>$^(IqG)ZG z1GSIwP|!;cr)x`Fu{DN9(O4>*iOno1vhu{4W8-tgU$joM9B6~Kg6<6q+uyls7#6En!sh7LZJ& zr+!AlZ*8QH;Y#A?@A?3*Z~7vTegw%h_UI4()axTCJoUE@z+~j{P@x=mxFV#DucrPn zHk88?_V?9D({!P!7tz?W4xckm&7ZU?2g*stPV^L5M&IY_onIp z5%jk>#Qy|7ncWt8?@Ohn#!gEZe7g@I8V+Y4%Nwa9AD!*??zCX)%$D`?-acnzBYk`q zkj%H)JC)aBM}O)~1P-x@ntt>dB(tU2gJ$%bRPBR-*|ffs_WJ)OkUlP8^j^;bw;pMl z1$6SFLgnSCDOS?`wQlLWg6K!heQq3HNW9&2tU0>gw+bs4h7s!IE%_`Tq53}n1K zdYJ&+JhlerIr@Bq201b4Ge&taIroIOFlt@mAxU@juc#nFn`LfzRi9m3Sr$L2HS@je z3S<1;Fzk%kMro6;)d2`A-V@pM`;A0h=DP(%vn&d?*mOhd_xgqA$?0#sWRyf#ss0 z7?B#URO|gyZyi$mrik~f_b|Zk7v)osuJq011yuGiOF%3a?X6oFU=r`PD#jm(_Vz@X zZBO<*)}SaeWXMLBEqx6va0B*sUw}kU>c6f<%S5+iz$+OeE|Jr%OkL^wvzT0-hfM~SK6*a{N83|z7w{N@k0XE!_4S+|jEB6t(Q`=AWkpi$hQLk7dT43V&gW+uw z^PAynZbQg>0g#6WCYKF_U*?4HdJTW^7??~>3Bo#w7sUXW`ST%YR6gTo2R6+Jp)f#3 zFY21Y6qqAJffUbvr+h#Lr)VE{udJqz0Dx?-bom{BR6s+>o><_ATmd0k8W3E^L28kD zFGxm}r*jwdn?CM62WY9cVUm6I8)o{H0W$2rlyTFMrey%U$jk^|Folq30U<9e+}Z#j z4+qBi)_c~R-FSdG?Fqmf9BzS@fP&3F1h_OG_#86Z%Os%PlkkSw0QVcD&{5HKNGSjS zzxuk^c)gv^z#_#4TPsByz`7$<+)P(&m16=#2jOWp2C(qZ^GGhe-^h;lb_BF$@PQM4 z%x`q-LYqO9lm@E?4Vd691Sq*;yX*jgwu%XZh^$4+XIUfYv4pa|NqN zj=usc$dO`&JR1i;wVhGa{k$c)$R&EI=}N}fL;$kG(ig%d0UgnVpWP|E0!o?=M07eA zDjgQjx+q!{Ey%7E_{Wmp9|K1p!M)#r^M|AFM9h0o^JLi}g$Wo@OawV3k$|4)!hj8- z>d>;F2AWZk0ny$vz=v>nAENmuYId@~!ppD#Q{T^trU2RlVH2RZI;0TgKnJ8#Lr64_ zbIolX0Es#}Jak(wW${r}UZb2>w7f(Cxc#~Pk%a^+Fwq(P4{EQ6Gy>qJ7IH*!?QEdO z0!9=;GNd>PP-_kf(@ukef<2hoXRs-Jz0li;y{U$`dds%Yj+wADs^3JX2TM^KGF@#5 zu#Y~^0sK$}y?pMKitdWL!cY~Ng6#dmna_Y2hLC6lrOU#ckfrr*rodH3p!qvYZLRc`)cLxEzjJ5`ke*DSdm^d>{O5?n zCluevUlGYPwPqk8B1-9kHWBo}YyesCkwzv8ClzHq5)r~8X6THHM3D*DVaCrsi+Q@@ z<(Be(4sbsjkc_yv#%=w~mdU4G8^U4_ zc;I~%L`rN-U?c-uze=Ko32B=Z&?(GY5z%m91*Zq@mAu_|_LSr#NrudIM^-@J3zsd@}``Q1`Mf zG|-5837>pN|0)=fRz3nX`sEBc%kj$)AMzovFDSG=Xy82QgSN+i#}6n!f)H`UJ%v$B~wOe0=

r8U|wlLaoTcfo;-n1=~hXP_KB1#q)vHe8tfBPR|eNB8S`9mmxR8oSg|hr zi1tPmq@bu54UUk7USDE8VsM&MIlT8sJsUrYkqH$Aqa24qypf)fCaipjec!&TzE0rd zryiVVk81<9XazlarH)jRDNseJduQKhi~tf9CwL(Ji`*S}~Oa-WCZN!yTDc8&3~p zb(e|Cc;BIiXF>ci3j?$%1w#-VJM75#yxsU*>s-phyF`u$vFLTZ4Qhj) zb(!wC?943t+uir_4$ch3D12$P%r&xLbe?J~+jRo9b z%aEFa0%|O5?8Q*6Bv4UW!`(zz6~KIj6iA)i=NQ5nK9JU%KM0Vbe$|TT5L|O~Bs64o zF*9Df9Yhw-X$$w^*aF(3qp~quQB?QhYXh>oF#$BRApNGVHOfQ0+e}Po?mUMcd&}e4 z94(q6BBayHEVrgOS=!2x0+ycJu5?(wNIk&=f#&s$%tA8nWv6ScVcv17+TaX%rb8ovCvYO4Epan_>QSzU|Kl3Ruy(Tzj7 zit?Ef59OXk7iv_2dQ*6gcG?Ic6B6J>MMb+(`3R<`r`stO$sbPUtI|0b0;IW57tMdU7H82dD<rRZi3z#7IWL;5fnE8>NE$UjzkRxv9?y7TiRf0##cIJ3 zMEBwJzEiPPnopvu(d&{JpZE#qjlnr#iVY8@YPIh^jVk)33I zZLf9Q_>?XfxZTY*GyBo!cG|Ji)-)a(nT*iZbiI6r$bCd?W-;7S;fA%L+$d!K=y&y= z=bR#8*#5gqy-m%{Z{uZ~)~xjzvQY}YFEg7ME3zx&-v!sIf2S7{pco6tCgWm@PYYFDkyldf`$H$V%=3%!b%Ec;Vm9~4d% zUdQfIQYAraK;hj|uZiBTC(X?Uqb}uwWecWoa>YU|q1rN>-XEF>sW9b2Pj_dPK;@ScP_w~}l!^5Av z)_&y`vd0ja@OX~=x9+JayeKkR3{bd*XBX`NYVI~ zWRViHhQXoiDrCna8YPqZr>CtZjnEFEHFOOc!BNJ=U)whq#z0}slQkJ$X$rzf$+gaC zz9KzBeH-;-WgFAh2q$|cfdTt@>4r-T0^a-UM@J|6-NicJ-qSUt(w(``@LnFUv5!s|=@4M1264qz2Bp%Rx!?_3b9lGs zU`butVDTo?3%#ZIep2&ZvkfGpMO;JRL6}w?$$=`3zVN1;JX1xP(0qHgajaq}miif? z-_+NZ%b1BgwNk=xTn@qyr*m7wT`NcFoXVXUw-R7bu3D^dG;AHtMdqMYt3Y zL?)XOWWVBj7pZy1r!9g&|66?O6c2e);+42PMSN4X2x2J78&M z3~*u^r7v%jY?x1O>FxE7!#E$7fuuAU22t~A&OK)WRoP^84UcJZ#)d?#deRI#1m zT`hM~+da|D2dt{ajANWb2#j>?PdB`-rB^FupgQQmgOc)st+X%dZf^ajXl%Ktbb4til$cu)}jD7VA8WoIwKVt@u z*Ili^8i(B`EofFAhNb}n6Eo0uzBSmv7G1tmwo9Hke0W?wFOHEMeTPc5NV77Y$X1L( zM?HJwgNGZ+LR22$+Juxh&rfO@22oD+q$}l~Ih~1Fyn5S|E7{c#`&`5_P;X$=2aBoB zsfgnnIyjF7T*iy<-+23dkTeo8)Opbsf8Tt`It$piS4XtLDQkYQCd|gZq;s>kZA2C> zf425i*T5i1mQM#Zq=dvjwRJGwdB}tj>Jt9~Pnpss1WwoY{g>^YG%J@2_iugpIbZCN zd+@bs-UO7Ff;L(`j$9haoZW_`5WP;N?OifB6ch*L8otP#?XO`T>8-ry_L9j}a{%PI zn%3??f9n{zFFO7nA|kqZf2HL_K%VlY+h_M@UAZu5@GPiu4VM?SK`%B&ONmBc;X-C# z^LnVi)mE0&4I(UT2@MPD4nK>e&sWMt9j`EtD~`{oaEcZonR7Zlu+QE3|a0@U=l58Qp_~@vLO!8KuYO*0op1OlIY{D9`1-X>OC-6kvg93j&-^9D|0p~ zEw=qZf*o>pT#b>Q-WJf&Xs-}u)r;5nF+BHu#A1vLdC=Zi>>f15^K4-f6O*RvPmqq) zKHEL5F=I2glb|dpq%JjRBr_Q+C_;8D*FX3?$c}{-{fW!>{rs-%Oy}X!s$J}rJGA=! z{$UeLh#*Buonfc0wRNiHa90A8znW{!1x_$o$SXqwgEWh=cObU>>}+FN2GLr1 zahrZ4*m1u!Guc$$mOuhe^5N$G_pF>LFBHn6IlJi?Mb{Ryq!OU@_4SAHRb?&W(|F0h zNX~#mIL1pDJWlLUGBYk_+_rcSaaar3bM84H0U0&DS2My16!Pt2hyp4SFgdZ4y9Man zol>p4UFglz=l2cQ+#i$;eEDWvErbC8Q{14a2Pxyq0pq;v+lDce26iAb92Hw?3xquD zxQsMR9JmznaWAo5wBf40l|;3Rxgy>sk^}pbqcLOPD(diV3h+T3WeTXVDG`e~- z{EJM31uoQ!%$-#^^_U`E{fU@h@a`MO!u~Z5#%%ez$r>qmAz|Ss6cq3aopHS*0vO=$ zcKD$jF2}clJi%iI6C~8zRYd!rr46$D8Ye3`yChTtfp`@wf#cKYG#dZyyT|1W zX{Li&CZi?kV#W%1{{t^R>S?Ux^bTBQUR{P-=&Ip_C!jNVt z#!62gkiK7#L-7ujYy7|hb-p9=r}MYRUh)? zZKu30&oTGcMvNKAGVaC#(|XN;Sn zhk@6sYi#AAbwHg8xLgLp>h7Ic2-XO`m zu7@QP<+5F_&tutQM^IA#b~3g<#&>#=&GNNi_`nid?>LW!y;?t)5H|^YTS!RA581+A zj^(v)HK+xlbjL@5)4qrBJpHk}=-2QE?-pBu5M~jsuknC#N5oup#(6$$osP1CLBAEz z_7!vtLb~9*vNVPHVoq0kU%FsRP0oV{4?vbhdHtnYdm!;$RTj!nRD68e@S`__PfSdM zP_aWfg6sD77Lml%cmp8>)j5U;ZdSlQ|R@ck4`=flSzHtFQF;c zC2y-o0$6eE0|i$BWPyl1{~Bo)cGXL{rVQIdN@xibFt|b6$FrVu_B)Ht=-9Xc!S4R& z^_Cp%3g|8=Y1`GA{G)|z*_I*4EiQ@>RJHcS4(3Q)TkKBS<$*h0fKLV7JuWj$42)R3iVP%kMaBKNwYm0W5CKO$OR{6|61ug0 zv{KJdZfK}v`dFVNMkda#8Njb&kJf>@2Y8&sy!skdRy5k=EIW@BOh!rSUIJO>TZ>L^ zLoJWQLhIlTVLQZpP2qfp-z&e1pKw~Hz8K#|V!hZ2n-y(y-(Mfbw%%V&V@V;wtELzB z4dsLt##NH%I+=bW9BN@3w=325=Ad(Ai4+;_QAG2o0dWfn5f97lTyay76VZkcD?OvP zf6Swh1eLXDkH zx&}CAdm+_qnb*xrfeJXG9QU1Rhm9X8G|4n(E;8TW>(Rmp@P5@Y={?89{~QPd<)m1c znC@+8uzlK;=EE>reOD)f2HIQ*#^-XR)|l*9=T_#7?MSzw;`XUthJiT=_}c#(SqO&5 z$NY}yThi>Nt^xGn%Gmal7eh-c+ugA3hEP zMfss7p@V42;=H}R*X^kbedOV}PGs)dg56?1)^{S=u6235C4T#<%=MX?T2fO_F7pd% z?XyNI3&|jHAq7o@Hv%b-8ILHa3%X~OYjN|K3!su1Rs1&sif^Zdbmev&=fL0!3xh>w zOg3_dq;o;x!*dED`yDY<^b9Vg_Wry~6Uc)6l4ib&5; z`3|d2d|~Ey!i%eeQ5N7zcUVL}txsBBpOLYFX5JuWcfseUmk=6IS z(8FHdohzZ$_fMpu%23cka(Iv)<$=fN$<1|gFx%*>`8AA{#H1Doj0>NYiC8$xWvVIT zQhZSdqSp1PqVYwIp`B-44`bALM?|&bVVhnkjjG}nW#QK(ox!bhIHR7o_VBy9wo=7m zVPmB|YZ^b=*zE{G2TM;xe7w8W5cc$(b18A6r=D#4%kwYQ?skQQ1c*SAC(cK{1}&yK z1FWZoQ$aWfzEea>P2?!_2p zp0}Wr28T73q9F>J4pre9B}1lf%#SidYS?Dn(ezti+`?0hEyDx;Mp-BZ4YY?U2sr6s zi%DQCo=(1wu_?YR#CDyhMG%~w%Rpvc;f4PEM&LMf5GIFXeB#OXVLft|ZuR&YsvT^O z;F{#KS5Z-5%QtE01rn3;-G!fM`Bf8TO$3|9iyhO&0a*mDq%&?H1#3wP+pTk|&%187WCI)z*I=wHWUAe2C+ov;*&N!4y-9W~nGKcp| zcB*HH^@sj2uX&V+H@2=551BVLv->Uvhx{LzKHBEEgzA0wuFr}eZIp8i-8HA6i`w9= z@$-|%dU^&HFoHz4v62>b*b4hzo6ibx3j2iY<-urLSXj{Rh>)d{=K_&TT$Nf^OdrA1 zT8&Tr=2+D0IMF3!AL{90lnAY+W%IX>MYrbKSMITU%yCL+Xw0?s@-^pF=~!^XBaFiJ zj?>8~&SrT)Kjod68(VKs#4op&Z^V%EDDuCD2}x(A-G3Opsvx{!_9ai*<}PC$A@gHY zV<+v0C>$It67{gB{u!Fesza8F`ws^RpT9xD#|n$zb{6vI78Z~~l|vvDwy-iJC3Gj= zl;Bc(LQ9DfTZv(FP##$Ennbf6SHAKMI5=BUUNcWnB|7L)VYfms8zq5&u&Z*eBB%1x z&xOkQDsM!H*<6r;>?war%WD=rt=y%(IJH3a_4+Sj@RPSk#=-U`D&LbkIti^dhn)P= z3r}A()^xJ<*P3%#9B-Uj%-`NThp(d4(lb*2j%4eCDj%*)5j+QX$mfGV6Qc!=%$v<$ z9hX-kS$Z(`=FDd#b}2=qdG6b=q)A^ES19p(#r~!AU zGpvTF`6x$RK!X1xYRfKNP^=S*WylZ-SyqUvvn&xPa+_Hkj{i`CHfOQ~I**xLCk>BI z$L8|FL+&_&L^5{v{BW1gp{2K%PIa{$NbZk)4QrN_Pf8v<1Cr)MNl~Z;(0|03HY8`*mIv*!=zhHnB`36Ay6a8-;Pko z@HjnqDEun7OFD{F`rUC$bMrUACt_CVdG(|m{GM34r|q+J3imU(8hjqtXoC>vP+jayFp(w&TqR(+ z^Qu2L;uenc=Z@)K+Dz7>dQ0qc_viJ7-X7jH%U3D<1SCxP--I>e7P@gctSVJ{XY9Gj z>|||X2iS#o_3P~sFPcbGux+5GDe{t2YGz425=ZQ(U^ukVu#7g}MtdP;N#c`D=Zmh= z{4hXNAejI(ZFRT-#$mxNTl`= zE{w2Hns9oaITz?OXj_8Q$`{66YWqx0`Ul<3m;|!$c-~`%Xc%wJg*~B})uMCSsC`yu zq}LMi@N1ugS^3i^l#~b?;}xA4HcBQcsW^B-vM*GMwF`T($~g~##H8NW=HOTO!dXlp zS_Tt3kd=FcUD#WAQ?q^XND~`}km_VovgXq#>;0bWs_Rf_yNvWzlxI%{QKhw(0@7LR zRz5SpA+bMy=RnrfQTm~$yR-!DjbJZ0g+S6_T`7rtnR=`aTi82?oO&ZmSv2GM$K2qR z95s#04lnco0*`}9UMB*K%KSvQS{F{ z5kq45!vMy-IV*y40s@OHCb+Y_p_N9$S^hVlV#(_BnW4{z~C=ox^# zW9xCeF%F}=sHv%&hC8vu&eljszu;GwKqNei`1mE`UV&wu zWZ#5WmBQ<4y5+U`(muZ+#n4FCad8z9!spgq&y6FPTqR~(%2{flUccexh3Pg+5~*%!JxlW^61IJ`vP_a_SlEx?<&8~D z(nffxJH81Lh&&$RgZ3bELamaA@iRku#m?b&K)tL+qoJW8M>*B_Q<-x<>!n& znR;d^PQecr6h?{`lv;^-NuQ!K^yD9(oCvJ2d@YxZ7ggoFCEkpisdBr=-LE5TxA@Lm z`OqfBHZ=J?Q7& z#30&9D9_g*RD5~UA@7^zq&%#E(a}-TTBxvuT)nYYT z8OVHt2%D+e-PQFnF)>6T6H(WCBj|m_s@@41)2w!7GA+@|FOv_7c>GaP5BpblbQ7g^ zI}uoMGRUD{1=V;n5i}Ko+_Z_Z8$|_`_8Pp9A5u1Ws$zz+-{*YVq;*#d3#l!O54cgn zbT!ASSWdxsDH~6JtGw)0`2Bpv><1Qz8z`sjcVgCJNAl8Mf-dZE=XZSRv9O@JU55q} zU2qcyv0d?xSYU`zz)zQq8q17y9Q^`-i_J+m+2XohUPF{@y(8?+i)SjF__$`FlosCj?hNv`bK!v%rCC!GYENPZ5F?lEsFXapLyDC$9z0QDwC24@BiY{50sqL#w1 zfjR(mRF)?w8S#HMN+xXPwSb%&H0~ zjfq_iHI6dKfp9F{LFb%9L#-IMD~bjKs3v-NFNxc_!@N70o5nCdMBwA40blf*D;8Oo^p(oG zFe8R+!Je~ArLO`H2q_xxT5SxkO@A}s&FI>bTGzHkywCN0oSLJi<5C4VnY$xRq)bAc zL2{M3L51|QFD0b7v89IE%lBE=%1fq8zK7u*roGv+pFp-|6C}(gI+AW8+wH~3)pmOr z>U&mD*>;BI0)a$e^~N4w3`hm!10F)4HVr6r13f={!m|sXoJ2EF7))Wn+MmwAzBlr$ zeEqX|*|)Fnz8#@!^19v=G~SO66}PyH_VNxOUYF{*@5(xe*eqzCBTgNk#Qj+Wv_M6| z#r;_0RaC7=TXE*gIwMw1?=4Sl-PaJX+?f4yS3;Yb?@Po8EQF-Q^SLo{R+v(HE`mpp z2s}#R*xU&oQ&HVp=&YGbk|moB8+IXx)*9tl?Q{TAnO~=UVskh-1$DBhYhAL4GePrb z9?SG4HR~2s;ZLi!PIS-iZhal{0Tu7lK%%Mpunjbj@&j^&~Yu^v19qfeZj#0YGQ7KZCZ8NN5s zZ7&aKN0-jGe7nO#l3umgIFL^u;f6%BtWbYiA8lGx-+&kBG=%^_Hi~D-xHqNIyXSpJ z_Cu8}VZLCIN41Q_8uhsy1b z?!pi;QQeyu?g`8eqh5)0kjB$~iGB7h~MaIZC8#pY^Ey zk@h4sz-9M(T^6e&?vINsGp5~btEk`|_+XpDi92i&RzfY`H$l8U5rXn%Q~Z8fd{AJf zK~0bh%iMcw#MU^12;q?f8eNrij_1YezWHT>tPyu_Ma(Wd!w3inP}hI!=M$BpiIUAz zUHO?ND@L~#omHX+>bxUzBIrTz(+ZLCDe>f&@!qr^p6m=kysid}ZY`Y)R@a zH;D_5JUD1^>qA5vpT-|A*mHZFz+`1*9T|K_w6_?6|50WD8}NY(c|+adV|728T@8(~ z!DgzjTZzdr(pUfP{zjA;cUFRF?eQ_^S+_={7;NV>kR`9bV2GD7cfh+J>^oT_b-&oK z-mWQur|o%wb=b&OLZ=@}XB_5l9EPt}Z~uVP$%3@#$l5aag2WKAV zPQg107Fkry-hph48;rV9zWeM+Sy)6MZPe+E#?kZNF6S9#f^IhP33vD>{ zKv}JiehD-47YQ36nJ?;xO#{W*>4N#K#X&VMUPxJtxxqvk(Rt5|;gytC+&X_TJZd@S zhK^ZuoR;V0(v`x9eLlUOrYvGdz`cCN&dz#@fO}_{Otz1%X|B4%=~>B{PrICL{>WPk7L>7)|if@Ul1^%7*0+4$Gcg7 zb6)2v$MiaXk1rx3avV|F`V63Piyl+X z(mC(3`zvIA*EuDgfL|`rL-FZnFFU2gHmzBl{Ho*Gd@Q+C;<>+QQ7QtmYCGY{nO*Ux z8llr4Xq(^OitHSl#$xa!e{a7WqRz6GHq)mKO1Pb=h3OG@7)+SgK6${SF?ZRA#OJvS zcGOYEah>~kkU^+Grd(??%bCZPpHuPPj;>d+gSkQJg$wQiTAv2P;fg3xU*&|F5DzzD zotXKoW*yhkqXgjk*FQiwT{yenWafRk+EBx6K83mm;Sj~531Qg>jqtbM&`Yyk4u9@W zV%6@VYhcbd`yL_qX%5`0^Hu{~N$X3NE;~|*bsFwS6tC`}aLczX5Knmd%Ojh$>iet< zr|n}(^<^}yg!oBb;}Ncw<{!rdPZrS27cIAQZXFq~J*lp(SL>7jst-sCWU=^OH*r#-e8aatZYB+h*y7=+J0qp;~`&OGp_LB1Kf+dUPVV5no+M_ zy~w*y6_S%0lNs~&;_&zo9~BhUZ)iXjT^Z-N9!J&@$sw-Q>-+GP_jE|jm(InH6?T~G znhnT>8bf!5M;GbTqm~kD&YCrWi|KU1q*g4>5-Kz1N8VF7UP4pj$_T;Q=W)3}T}*&K z8?3ZHyvhzQ)q-hBTS`v{Z60 z4~aG}pBuM(nqCE2Wdvbj{Tuhvbcbj1f|HuwCJke!;{t$T7IACqCT$;sBHjbSvdw5`XhGDA2@ z1r+5g(bfO>wQE&VO7~qqxwGA^FKPEtG%f~YK4$?r?a2?@Q2XP`f-wOD!muQ^^hlpz zB*gfwTW~YQ*{pbiR#ItvEKSYp__9)uwk9xHiKw|bM__~MnkOgDx%4+jsG76xO7Ij- zlp}?DjRozBUiOV!NjrpcxK^qkV4n-T*wBnQ&v}TRka5qnduoaAETGoYCoP6cJ7qJT z!-d$@$yDQ$sEU_Wghw4tY5J*LQRgkJ#Id#B=7;oyC4utQj$N30Q)PKL7VCv`YL$qH zVa#QUr|bSqSloGhn#o#aEB0nHk9Li`lBgip;cl1VqutnOyXZz)M)AixxaDTkq$5@; z@2#c}Q=br1!%$%q3N#H@>~y|~F;Qv|uZ+*&1eaHCW*gpnTB|dq+4;4$7xQCAa<&SO z{rnIfyW4n%ttzjPbbk13qoFYWQp@C;$)E-`3o4b;=fyc-DZ)M|+OLb}^L()39Jl1bC3|i};&- zY3q<`#})PFSxP>dJDfvv(C}wt+Z#J-`vfNhkFHR}eJ6Q;f!KF;X3hItL-?+e>9 z^5!7*18a@YqI>V@+{G7urJ}7nR5%-(1|uWJbBklO+Xagu>NFKqD$jJrcIy^|`HNeU z>on!<%z-Rwa{8nj+=nv;+(a6`1i{-iNqK_@{@ieF{T;gBK_5^d%2~ILg&|x`IIRy-N(U2(EsIgS!4C!+t^UJw0Aaw@-Ksf(vpm zh5AuL(jT|fWStK<@9I4w?6@~AKc zB%gvVV!z2VRQxHOWY8z+GME8{!BUqw&+?VdzNZy+Z4A)Yl{ioZ9d3s#Z6NbrKUQ2Q(WGn{3t! z2+Wvs-?A0NF!vAE(x!I?sgyWXD8CxBphAvo=^_1cP`)`7(o2F*mdEOgR-K1VfVKSjt;1rUP5NgS~0J>ti5Cw`ocgb!`#20Rnb1_ z3zt0Mc3+xv8OMIhwg(X?9^qFDU?{HWO<@2UEtB0I~4b`@D(%NUSO1}zN`nT$m_y))~-fBe8> zeh;sFWd@Gbu;5*>xU{sejSankfI#zMbv1k4<;5upqmBk08VO^f^{@*hRj@sgud8SE z07rBorReb?*%R6UObP})8;Xg!iY&WT<;@i84;~j}rx}_fx9KUgYK~rSzb+=R(d{;^ zcI9jY?$@GTq4;E@lsenYKS^GFHVf3k3&_bKfBN)^A5u{P4b%jS$;!3?#i-j;PBSs> zc9xmPk_OB(1-p>!L4v6*9Q*kbO16ZwUH%G|Mz#S+(4G_hMNlJFI7@M1$ zqeN2WzRZvT3RHF@q6o>zgX4)9;Zfp{ajJ0^@(xvq$vJS&j}9D1$G-T-NcUqHfmfA# zv}sZ-FUU^PCX>kYKw9a}c-vZcP}#SaOxfeW-u3xfJ|o}nB$6T9lfl531~0R|55rmq zis6?hs_4GX&$nD^JbRW76qp_D_VURWB`<~|n0vNzL!&vzcpHFZ;NG`O!qwK`_GoYD zfwW;4RcP0vK&WX~In_hH7w;Bk{9+vX{WN>@IQG@0$lA9n78M-TW31@IH%|- zfQX4J7We7AjDx+t078oJS(G!($gg z;2Q<>K+RLBiWQK&#$q&p3n$d(n2e*J<)!|Nmk8h!#ESLTb0Q)@MK^$`C(^f}Z1 zH+R%4Ehw6`=0(DGmX^5s^Hc@Z#?{1T@$jF+`5gt$@0`;|7i(jL)qe2Y_jz{{2^hLAD)UD&YpIRHe$_Zeo6j*cK7o|qcvlzrUOOZNLXZaB_gZ0I(lk3K-d z2?g>BpA8ZNNnbxvWz{ENE$}Q6TEYkm;NjsRW$L?iDIKvnZybO+c9ecjiKYQsHIho; zJ0U^)KIjSGvhbky2#_04^CMJ7J$noS3MQ|>Eu7dOOE>@9t_;%5} zkHmgw)6k@lKI>~fFKwYUu}R>@OgiX2aF@(9;;isN3fInUA797_Q=8lV zwk*+CT?-31A~d3C+tL=Gj9hQcAZ*}Zn0#IV+pxYu(ZX|WxKLo|{B)~9U`W0>-0zi= z>BZM-vrm5TIa;-q)7_2wDAlg`WE(KI!SV$n{@FM*6=UH2_kYPq^t3Vl%sE z6{b-fCRCbM$29sa4K$)Dl_lz;LQStAnEK z-oI%`yIT=KLSktbK^l}?N|aa{NdajPmKF(PX{1AmrAt5>erI`}`Of?P zX1+7;-!C&eu=l-t&ULOh_c`bKd@kffl85ux3=IvRtIVmx6CI5R8ex>YZNp538npKvnZ1i;0*N0`fLtx-ZyW1@bBRF(yu*g3cA`U9xV0AXH6&xqwC*peHH&Y zV>!K+Y_rXG-~R7uQ;|*v%yBjZ6Wh*K@*fJ2%jS@e((2?J2z7OT45Ets%TqT4MgWRg zJA)REojBh+^jkR%Fm{&EDgXQ2p_|iV1sPzx(NuEG;JByDqw*fsGTZ3MX0{YJY=B$8 zFA4H_cEH&geGP_ltU94rL4mu3eRaJ@cYKWV+r;7FH*SQ^S z&rUX5m&C@2(WyLNV-L@e#&1L*qMu9gY{`w#=;9{_F#|~$H)@;eY-uLxP*USc0u2rK43&>vsTTNocvvO-Xvs{v1 zAL(w4Q{YA5X^P0Dw(jYXD=1c6jS6^pjAV_7d~k__i1QV0n`~^-lLgQ|duw}Fve`4ox38&Ht}t5v<%&P7 zxfNjX*ERD#e`Rkjsj^mw*pDLOwNy&y=Q*l;j)3U&pFFI0`N(>&PADIH(|@L(FINVH zC5z0hy^V#m59SEz=P<;tH~4j{_h~mw`<2R2hc#z9dIKG+1pB)?-E?2S`$Yh{%+sH5 zCwGHsVi~cEZ4RVbtNgYE?CkBMb9}ZZw8IvPgHFl4x1_kK9yPd5Vw9!yMw?`%#93IKTcR$rG1@ z0Q%#_`-bmE44R*r&}7hX+oTV%=>3Lnw{dX~Z}v68svbR2g)G()=tLs`J!9dWp6oYO za(en$B090CK6#^JU6o`W6ZvNbjyHC*W&D+O+L1_YPsmM5HxBCzBcuUOqgkb8UYA~f z)^Fp1z5E2(P5>lUNlOQe8SCGj;rKUil93KH%m+P=)oRbr8Ns7CZBP(=S+|iXD+Qp! z0zqmyS;jc&DH?oMZ5GOhAG!w7>3hzWL5J=Z-~BF{bO;I%% z&Hr>4#aUE4`qIpH`fE6OdR6AwR=TC0j)S9z)>o*W8^y}XTB8*{I3*6#M#Z))OWSC% zy-R&m9NO^O)9ymT_~TaepP%152f41eYQ%IBqGOf179Fd9=g)?4R8=<&7fC=EnjgGC z6-c@&8UavU2Y?*Mkl+5hGfx~G9PBxaS*WX#X@H4}XOOa)Zwp*liUv5(*Lj17wns$U&9=Whv@$7?HF^?lZU376*)rcbB8;|Mg zl?Q*_d<~emL`8{Ey8I+($2gbA{tXXBQj;=Y@g#poBmVtyyVIcK!j4PYq_>&sMN5-a3d%|u{a#*XANvkiQ5peyy1G<}lCX}} z83D@{u6UNS%d?&CYF}fjDB4-I`u*+scEQW}@o}@L8m&};=mFhzBg*9BuNlqFQXG2O zd|mXDic-VTff-`1%1osLx@1w%m43<r<;@x+43I)5@l%JnLi%R>;sia zgG>^_E6qi#vG=X&Q@!%6_s?I3mg%KOQ!m9}SU@rj!jebUwKe;5;dJ~5p6;mAM??2=2O9zPgej-x6Y-!Rp zL-R`Y{o-Y6HnsS!8%zPrvT|HoTCd)E*N!+bmYycw7mM!LX*=6aHj;&XmucSsbe@={ zt25FJ=39LFMJ)mAm?gfjnjL}4(T$-I>LF;C@xj*EZRb?vkL=eR-7_`wVv9#FnmvC{ z)%?wSa!dX~<2JOO&6((PK-xB%w6G%uL=q3IseBmdWaht+G zv1Dqai++o-Z{vR0_@pZ3p$S&JuF=;!z9UPglqD~nY%>9>80ofEiR)SE>1Kd$Y6(xFrjtIzcsdarq<>lUi6myC+L*?>P0z*pl0xA} z<C5Z$jRga}4Z9M?hQZ-`bzV|sX~o@1J`*q<*$^3MT2Sis+_uS^8B5EGtU ztzLVO8w%RdR;ul(-y14;-{`p^dwS~x2m92k%g0Ka3{XhmZ28oIdtP{wyA?LikVn4AqaPjRdDJ9oZd<;k<_ ztUj#%s;2kU)}6>m#1{T2J$lNG%G6${_C96s@vS%_a5#g(W}8pFk`JqNuz}uY5G<19 z6cyzr!c)b2=_O9#-Cy|I{4;5VrS9&B1y)+&VhSb7r!@@?1KV$vNupWI zGd=-ypoNl?CK4A94_5C8*78aKKw8`T4>4_09c%q)KA1YO8c+_FrZ5yprAuekOU5&c zGY8FECMG5}(W=o*<_Xojwakff++rv+&^VrL3#9YezP#$45RU;UDxUnuf zp4AW3L?GSRy$dQ`VsAmU@!1N`2WU>h`YGO z(bMBNlZ)rqK1szke}xr%aT>nLTMTaoB(||pncLAJ3f$P*Sr2d)RaY$4EhvI1yj(49 z;vt`gwuMe#D>BVU&=pF7Rjt*WXQ}xOqrt|L3(F@?6$|l|b!V%aBLJ;-S6WBW#S3d8 zpM34yuS=CZYJ}_Fh=>YBLIsO~!@(8QuzZux+S-+;U%kG%fr8WYK}s!kv6;t+bZDwx z2D8C~MD7oe-RNrNC~9zaD*Zc_d&U0Yz!Eq*zv5sV+q4*?CD@0ytl{ zo2j1OfQ3!GtdxdF;zb>S!cTQ%(DCm`8y)&U@8LbWr1Zj3ry!enORnPo2SS`DEV2kt zdx+lX;LpTA$SL%2&-HiEhG3-jG|yCDJ-}-b$4-0n$c9gg5UNcpN;2P{`Jwu2W)Ej! zK6VQqic3`S8U8A9FIYhmnv1*>`J-yX@33B%TdN%dE5A!P7$Zq#HGs1uA7YqM*A|~= zQRf!ton#0}^!AOvBf`;4Qd!iMNl(Ky1j--K{+Y^eb^T@RB#m_8adO1j{=|&sxd%#3 z+1(4+K4D`KmKa|aGfipqK6WqY{FDC2(myhu(Sf6KcRX^UW9q1yYVp?Hm0%YrvH-d)wl`NYR zPmLW9Z9F-|*9iE|Y{~6|j$&SxX%Bo2D~Yat*sR2jefo%9P|xMb=$r1$gNkoH%4ATD z_?(d2dqr{_rS@)awU^YM8*ul0$v_E; zLF(VdbKxbPcP94wO^FNzEXKW>6c0uoN=HYl9E?2JYt76M`KYyJD{S^4?5%~0&Gz`~ ziadR;Xg9KXW8(PB4655knEE^i-{J^Xu`$7+uhS7vc}9M{wefJIH!M9py|cSpWpnOs zqM9>c1btiKwi7P4w!(2MBRs;B>-aiq`i0H&sGB9XWcFisb@&eE^NO^5KRt@*{6DN- zUBo|M<;ii?L0x)c@5IIstV(0Ls-RZ8uuF$jwHO?2F$0TNU-tJnnfl5E0oLLsu_sSg zf5h%~mEJ#%g51Z0(fdAn3M#KP1|=jUq6N_eIY*Gjkl3moaJHj@k{z?Lc-+XgJfqFl z2~K``pD_=xQdm(fAaVZd?ejkS_rTTVX;Vqv_w!p00uQ+pr=>f5+^1m zCS5Kb&^@&*)@ATS@noSJal9duZ1+Czn{miPg1GKXWlPPtrdW8{d`JCXzG&4Y>zhjQ z+%^?gRcka-HG;a?tvrzNR*=jjfhO#nV;|M@FDyk7%UzHvBz*CBdPX+5Ms7_y!{vz&48t<0#?)*_VBia zBw@<;D$qn-1~|b$DFV#E6Eri8%#Ry2W>XNs80owvK^FgAsWmd%&WoJrxi`%6Jz!5TJ(=9LL=Ktbu1^8w+p zBkF?iE5a2Ble+Xh;#6wP!YD+l>i`moWJi&azY_*kLw>I>gy34~7<{Z<=0Jg3ViRi7 zMB_r}54Olk0hG+!w{N>Nhyc}N;VXY3;CGnsS}1ndD`)4x{_u}=42Jn2AfIt3m3W>Y zCnp}lUNA*RbAQ;}3eBRU%ByK87E4TVbOFZ=WI7S<_E_w9nO9N?3S%TdLSk=H1Dr>E zA2N7G$!p5@zPHXtDn^38S});9=~ut1N0|t*scv7L9WHU1mvFJUh}sGi$F%@4f<$WBl`r)`}>J(&3gbB@_FVqc%G_V5WbWwjb*vGlN}$zyA%+p&9d3+ zwcKoU`<*J@)}YSPf^%#l<5C9<}8 zRH0188OEfh*hNslj`w+{ke!}3fPihEI%YXvpii-6^a1Ie(Ns`=#WFi31O9Fw%gfg{ zzI;d=05O-AJ;ChzM=g7-Ksj5jWghRY>{Oh?ojsw3GHk6#4xxK5NSqAVjMQk-S|61C zIjQxM4o(5Ys@gY+2Q*I6nCe->8L-M4YFch?y^rc^ zdLXLO@6-{3X=7GFQ9cR|o^!N>-v}fmrjbP_Mb)auwZZB*$KRw;z>rBEH0cto{3s61 zJ8)1FjzHVBZ1H4Y8$R_j%qh)WsJfg$>qs}RqJP8O{y7b!TV;$U!{4=gJ(~#JnKN=X zlcrAO_eX*#-W83ayAfyObs4FAiwki`_n52&y6vD zPs46ddx<>_7px6zII=9>=<{yw5@0?i@o`|E*$93-@tDH@$;(~RhZD_Tda6rpR&seG zdR0zY+4;!@ejal6Rr0ni`Z`9009uW4YFt?6TX7=C9_QhsCg_UpOtTL$;G4a*^8f`E zpPCLZ51Fle7Gh)YW^DaA@?P8j8&X}dqg75Hv8J46{z1-uR;nFm&NZcTuuC(Tqfg`+ zRwWDb%2#>@RXv;de(7bv))9q_hUDZheNW(3wC6guOH!^5AkCkYf!*YA)m zoRiS`5P}4y0h9E0i8>DB*>>2IaLcOakcS0l$2I^*T&EUtJI|`x1{clhkYPIrSo)XM zu{zhZg?I=xVuzEKl++h`BX{ zawaQJ)Y6Mrc-cXkR4#SLH2yHzPIme`s1b)j=5?0~kZn2p#Q?>M3OXc&Y0kE?vy*@( zo6I)7SRE_Rh)_e$%78*$o@MS;9|%XD+Bm)*e%4%CX>{jrQd(Ns0|P(U9TwHq)Vy^uD-@{W zU8i@X_O!8KovL$s4VIYdDdv4noH2+zKONQaNcwdm!i=kWA9oh-C(r0R+7aR+@0>VN zo!*M+7}-2ls;V~r$WNbzWoosIqwwt^8_oU zVx0^*Y$qi8-|qPp|2){WaL^wjT5yi#2Qgh|ka;*XWlxF)Rn2OpKF$1DMoMYa zo|o)b_LPh>#gw1rM70rJZcI@WE!hi%bAJfM2u;EXLnIYdcbfON9kjw9oW@M}juV?T zzN&np^J|k%E}F17JDN`J;@sp)$N_?bKdRS}5PjMw9T^{vpf4I#jH8}Ev28hQ*6WHV zmZiF&JF4F$Vmb-NiaRNxkqKaK!gG&GB$mN~VPImV;!2}@XbdSxP==Y`Z#qMedcBX^ zFCJQmRPk0!@5fPA817VN$z7Jw1Rnlwyj;}l{zY^&MyGUygKxp|%fA1;x`8}g%af<< z5X3H-5!dK8(2&>c-k6tFQBmI0>5}QUH3XMF8lU)^*qa|befg7rbs7hs zgjqh<4%52AZnvg^PVUq$R`%$r%gmuXcp+9-HwBu*?jAipzXE5J{`Yj5WJ%b30_7r( zq~Ug1uqML}TY=(NV9;8)VTkn1C}<>OoRMIFh}i78yi40*+0f9C$-Dm4Pm>Sf(Y06S z2AP42(GvkHKDPU9?&HHOD@Cm#+4~2hx*;9rKz`@<>AUF;mzVmnOeanU#Pf__q;?Y8 z4#hbwTs;eQu2$-4{P$CZUtH?nn*9?#aelc&(a@NzN$DYC#?#P;Px4h>9{%I0y0gK; z1n&*o&15EJpPdMrxs%CXztf^7-^t24CV`W4?o>y+?PLQkarFGYeXs58?wLTVLxbBQ!;q9m;55ux zjN0b(oY&KHvk*=zMFBN(SM&1f>4-nGdD_cq`}9n0+B74M060L1ycCEJ?+*^2R*)xO zgkSs_5Pq?+2G605i^(5QnIH7ebHCVbL`}&IjWlrkoi?ZpG;Iw{&RVJaKu3yg-PW_< z8MJYe(YC@OdzJ83kGm*`p1h-}*`fBsFV${)JKY&yE)y01*5PAf0e|}n9Q=nT#I*t; zEPhACHd0`As!y+t!Km0O3K4BveSCwma@tD`sdp*WM>v~$A@UF~jX=o1wPc^H)m94ya!}b*UHOX9Ldl2VGE99v z+V`pL^YZhhXyekZ!ka7FRyP@A`?D`s*QaTo1ZLzx_fp)So)!LD5yUbh-^FTzDu6I7 z#Oll>R|t_e#d1T{(5BiDkZ>u;!+9|$snCI@PlO5fh{C<4FIbQ!u6d^{=*Sf%--QSF zIr6vM#I$y!eA%WM0^;eA40v^=@5*qwQ0k9@Q4RDp&_W|DL}=w9+F z2}TV%Y%3&npA6vOw`71%1duSlNe-bNto>gSP;maTuXv!vONy4nx`Gxuii>VGiTPKr zGQrnR4?l$nHMrcfLN_1Ubn_+BYW!RAY=cnh-vDDZbdLlCjcHnrG@1xLW~9We>!|~L zG8V*sY-F()T0rns(EqLL{(CJR#c5Ten`cHQhqw@8;lO~N{5(@kS>?S_+8Du)vQZgVz ztF3?=s4X2@;&0MvF{>AHi4LUPXP5~mkBk0%CIe$3t9DgEtIe0NG3|$ckV&~Eylma> z@cJ4EXhnH=SvOqtU)vg+fVb$oxp`QOP!q4JDOUNX-B_J7u(g0hj8JcUAQ;2?-@Ee6 z&oHe8me)SSVTAJH%pfHwfZ8AO0E3WT>pxco_?UUvpK3!Ofg!?G6)k}T7;4V`LFwaW zA+y=Z^=l2^qymZuin&Qjg1Tw_Z)}1Q$bcdG&um@0A!w0H8TfD55G$}F`!8X$N5g+v z|jo3XP!nsA8<-pfU-nU z59<`clNbx9h75Sw|B@hd0jP@7!HFF$2{Y2f zHoocFX~=NS;ang(e}GU*(LoWSo7Xo3Hr$XrsXL=W4QD5;qkCj#!4!uQ5Giq|;)Y2? zhN4FVF2AV`5lY?LP13y%M|={{Kez$w@O^xQI3fm74IfGlD@mbPsiWzl4K-7|T8c@|&@KD!*2hJ5ZJHKxOGqLa0gB$2Rme@OAV9 zzMiI*;~#s5mVzj~zH4j@<}TQ6)5kdYA0NuY9}8y*0)5;Df;A}3W`igLb4{T%Lp>?8 zM|envMC8A#4GGR`xB9O}xbF2oZt|}-fQRD!BMv6k9YTEQ9b&yTv@+33x9-1l{TqzR w4s`iUTDp+@-wR<94*weXzgYbL$IgxgEnhs(fr{NF#sEJWD!R%Qiceqt4@Ng8kN^Mx literal 0 HcmV?d00001 From 8daca2371887bef52714e5a17f76beddee9afd0c Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Mon, 8 Jul 2024 14:00:48 -0400 Subject: [PATCH 04/15] wip --- .../self-hosting/personalized-frontend.md | 30 +++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/docs/guides/self-hosting/personalized-frontend.md b/docs/guides/self-hosting/personalized-frontend.md index f331d0257..8e267533f 100644 --- a/docs/guides/self-hosting/personalized-frontend.md +++ b/docs/guides/self-hosting/personalized-frontend.md @@ -12,6 +12,32 @@ We're going to explore this approach using a minimal VPS through this guide. ## Overview -The approach looks like this: +This approach assumes you're using the shared zrok service instance at zrok.io, and it looks like this: -![personalized-frontend-1](../../images/personalized-frontend-1.png) \ No newline at end of file +![personalized-frontend-1](../../images/personalized-frontend-1.png) + +In our example, we'll be using `zrok share private` to share an endpoint we'll call `A` and a second `zrok share private` to share an endpoint we'll call `B`. These two shares could both be from a single environment on a single system, or they might be distributed anywhere in the world. You could use a single share, or you could use hundreds. + +Because we're using `private` zrok shares, they'll need to be accessed using a corresponding `zrok access` private command. The `zrok access private` command creates a "network listener" where the share can be accessed. You can use `zrok access private` to access a `private` zrok share from as many places as you want (up to the limit configuration of the service). + +Imagine that both of our shares are HTTP shares. We want our `A` share to be accessed at the URL `a.example.com` and we want our `B` share to be accessed at the URL `b.example.com`. This assumes that we have control over `example.com` such that we can create the necessary DNS entries. + +What we'll do is acquire a cheap VPS instance. Even a $5/month (or less!) VPS instance is very likely up to the job, depending on the amount of traffic that we want to send to our shares. + +On our VPS instance, we'll run a `zrok access private` for both share `A` and another for share `B`, binding both of those to a port on the `localhost` loopback interface. + +With those 2 `access` processes running and bound to loopback ports, we'll install a reverse proxy server like nginx or Caddy, and configure it to support both `a.example.com` and `b.example.com`, directing the traffic for each to the correct loopback port. + +Add DNS and TLS to the VPS and you've got a fully-featured public-facing frontend that you fully control, with a minimum amount of components to self host. + +zrok in this case becomes the backbone, isolating your private resources from the public internet. There is no access to your protected infrastructure that does not flow through the zrok network. + +## TCP and UDP + +This approach also works very well for TCP and UDP ports that you might want to publicly expose. Simply add additional `zrok access private` instances, binding those to the correct interface on your system. With the appropriate firewall rules, those ports will be fully exposed to the internet, while your protected resources are still fully private and unreachable from the public internet. + +## Privacy + +When you use a public frontend (with a simple `zrok share public`) at a hosted zrok instance (like zrok.io), the operators of that service have some amount of visibility into what traffic you're sending to your shares. The load balancers in front of the public frontend maintain logs describing all of the URLs that were accessed, as well as other information (headers, etc.) that contain information about the resource you're sharing. + +If you create private shares using `zrok share private` and then run your own `zrok access private` from some other location, the operators of the zrok service instance only know that some amount of data moved between the environment running the `zrok share private` and the `zrok access private`. There is no other information available. \ No newline at end of file From c769f1199bee3e021b720c364cfd9124ad1a0fc8 Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Mon, 8 Jul 2024 16:57:55 -0400 Subject: [PATCH 05/15] wip --- docs/guides/self-hosting/personalized-frontend.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/guides/self-hosting/personalized-frontend.md b/docs/guides/self-hosting/personalized-frontend.md index 8e267533f..fd6b0f183 100644 --- a/docs/guides/self-hosting/personalized-frontend.md +++ b/docs/guides/self-hosting/personalized-frontend.md @@ -8,11 +8,15 @@ This guide describes an approach for self-hosting _only_ the components required This approach gives you complete control over the way that your shares are accessed publicly, and can be self-hosted on an extremely minimal VPS instance or through a container hosting service. -We're going to explore this approach using a minimal VPS through this guide. +This approach works for both HTTPS shares, and also for TCP and UDP ports, allowing you to put all of these things onto the public internet, while maintaining strong security for your protected resources. + +This guide isn't a detailed _how to_ with specific steps to follow. This is more of a description of the overall concept. You'll want to figure out your own specific steps to implement this style of deployment in your own environment. ## Overview -This approach assumes you're using the shared zrok service instance at zrok.io, and it looks like this: +You've got a handful of private resources that you want to share using zrok. Some of them are HTTP or HTTPS resources. Maybe you also have a couple of raw TCP or UDP ports that you want to expose to the internet. + +Let's assume you're using the shared zrok service instance at zrok.io. The deployed solution is going to look like this: ![personalized-frontend-1](../../images/personalized-frontend-1.png) From 54c4a9465e71b1c943f398589f5a8af063ebad80 Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Tue, 9 Jul 2024 13:19:21 -0400 Subject: [PATCH 06/15] updated graphic --- docs/images/personalized-frontend-1.png | Bin 37093 -> 58445 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/images/personalized-frontend-1.png b/docs/images/personalized-frontend-1.png index f0fbb60e2a21fa59ee5d8b80f634edbaa4493b03..557032791e654a8e446862c44cdaa78c4d7abfbc 100644 GIT binary patch literal 58445 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

TMk{waw-_-a$u!Yh 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 literal 37093 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 From 0d8043cbfc77d0a1461df4ffe6a34ef129f76883 Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Tue, 9 Jul 2024 13:54:34 -0400 Subject: [PATCH 07/15] revision --- .../self-hosting/personalized-frontend.md | 54 +++++++++++++----- docs/images/personalized-frontend-1.png | Bin 58445 -> 60795 bytes 2 files changed, 39 insertions(+), 15 deletions(-) diff --git a/docs/guides/self-hosting/personalized-frontend.md b/docs/guides/self-hosting/personalized-frontend.md index fd6b0f183..1d9fc343b 100644 --- a/docs/guides/self-hosting/personalized-frontend.md +++ b/docs/guides/self-hosting/personalized-frontend.md @@ -4,41 +4,65 @@ sidebar_label: Personalized Frontend sidebar_position: 19 --- -This guide describes an approach for self-hosting _only_ the components required to manage a public frontend, complete with TLS and customized DNS, for one or many zrok private shares. +This guide describes an approach that enables a zrok user to use a hosted, shared instance (zrok.io) and configure their own personalized frontend, which enables custom DNS and TLS for their shares. -This approach gives you complete control over the way that your shares are accessed publicly, and can be self-hosted on an extremely minimal VPS instance or through a container hosting service. +In order to accomplish this, the user will need to provide their own minimal VPS instance, or container hosting. The size and capacity of these resources will be entirely dependent on the workload that they will be used to service. But generally, for most modest workloads, the most inexpensive VPS option will suffice. -This approach works for both HTTPS shares, and also for TCP and UDP ports, allowing you to put all of these things onto the public internet, while maintaining strong security for your protected resources. +This approach gives you complete control over the way that your shares are exposed publicly. This approach works for HTTPS shares, and also for TCP and UDP ports, allowing you to put all of these things onto the public internet, while maintaining strong security for your protected resources. This guide isn't a detailed _how to_ with specific steps to follow. This is more of a description of the overall concept. You'll want to figure out your own specific steps to implement this style of deployment in your own environment. ## Overview -You've got a handful of private resources that you want to share using zrok. Some of them are HTTP or HTTPS resources. Maybe you also have a couple of raw TCP or UDP ports that you want to expose to the internet. +Let's imagine a hypothetical scenario where you've got 3 different resources shared using zrok. We'll refer to these as `A`, `B`, and `C`. Both `A` and `B` are shares using the `proxy` backend mode, which are used to share private HTTPS resources. Share `C` uses the `tcpTunnel` backend to expose a listening port from a private server (like a game server, or a message queue). -Let's assume you're using the shared zrok service instance at zrok.io. The deployed solution is going to look like this: +We're using the shared zrok instance at zrok.io to provide our secure sharing infrastructure. + +Our deployment will end up looking like this: ![personalized-frontend-1](../../images/personalized-frontend-1.png) -In our example, we'll be using `zrok share private` to share an endpoint we'll call `A` and a second `zrok share private` to share an endpoint we'll call `B`. These two shares could both be from a single environment on a single system, or they might be distributed anywhere in the world. You could use a single share, or you could use hundreds. +We're using `zrok share private` to create the `A`, `B`, and `C` shares. These shares could be located together in a single environment on a single host, or can be located at completely different spots on the planet on completely different hosts. You could want to use significantly more shares than 3, or less. The secure sharing fabric allows seamless secure connectivity for these shared resources. + +Because we're using `private` zrok shares, they'll need to be accessed using a corresponding `zrok access` private command. The `zrok access private` command binds a "network listener" where the share can be accessed on an address and port on the host where the command is executed. You can use `zrok access private` to bind a network listener for a share in as many places as you want (up to the limit configuration of the service). + +:::note +When you use `zrok share public`, you are allowing your shared resources to be accessed using the shared, public frontend provided by the service instance (zrok.io). `zrok share private` creates the same kind of share, but does not provision the shared public frontend, and you'll need to use `zrok access private` in order to _bind_ that share to a network address where it can be accessed. +::: + +Imagine that we own the domain `example.com`. In our example, we want to expose our HTTPS shares `A` and `B` as `a.example.com` and `b.example.com`. And maybe our `C` share represents a gaming server that we want to expose as `gaming.example.com:25565`. + +We can accomplish this easily with cheap VPS instance. You could also do it with containers through a container hosting service. The VPS will need an IP address exposed to the internet. You'll also need to be able to create DNS entries for the `example.com` domain. + +To accomplish this, we're going to run 3 separate `zrok access private` commands on our VPS. One command each for shares `A`, `B`, and `C`. The `zrok access private` command works like this: -Because we're using `private` zrok shares, they'll need to be accessed using a corresponding `zrok access` private command. The `zrok access private` command creates a "network listener" where the share can be accessed. You can use `zrok access private` to access a `private` zrok share from as many places as you want (up to the limit configuration of the service). +``` +$ zrok access private +Error: accepts 1 arg(s), received 0 +Usage: + zrok access private [flags] -Imagine that both of our shares are HTTP shares. We want our `A` share to be accessed at the URL `a.example.com` and we want our `B` share to be accessed at the URL `b.example.com`. This assumes that we have control over `example.com` such that we can create the necessary DNS entries. +Flags: + -b, --bind string The address to bind the private frontend (default "127.0.0.1:9191") + --headless Disable TUI and run headless + -h, --help help for private -What we'll do is acquire a cheap VPS instance. Even a $5/month (or less!) VPS instance is very likely up to the job, depending on the amount of traffic that we want to send to our shares. +Global Flags: + -p, --panic Panic instead of showing pretty errors + -v, --verbose Enable verbose logging +``` -On our VPS instance, we'll run a `zrok access private` for both share `A` and another for share `B`, binding both of those to a port on the `localhost` loopback interface. +Notice the `--bind` flag. That flag is used to bind a network listener to a specific IP address and port on the host we're accessing the shares from. In this case, imagine our VPS node has a public IP address of `1.2.3.4` and a loopback (`127.0.0.1`). -With those 2 `access` processes running and bound to loopback ports, we'll install a reverse proxy server like nginx or Caddy, and configure it to support both `a.example.com` and `b.example.com`, directing the traffic for each to the correct loopback port. +To expose our HTTPS shares, we're going to use a reverse proxy like nginx. The reverse proxy will be exposed to the internet, terminating TLS and reverse proxying `a.example.com` and `b.example.com` to the network listeners for shares `A` and `B`. -Add DNS and TLS to the VPS and you've got a fully-featured public-facing frontend that you fully control, with a minimum amount of components to self host. +So, we'll configure our VPS to persistently launch a `zrok access private` for both of these shares. We'll use the `--bind` flag to bind `A` to `127.0.0.1:9191` and `B` to `127.0.0.1:9192`. -zrok in this case becomes the backbone, isolating your private resources from the public internet. There is no access to your protected infrastructure that does not flow through the zrok network. +We'll then configure nginx to have a virtual host for `a.example.com`, proxying that to `127.0.0.1:9191` and `b.example.com`, proxying that to `127.0.0.1:9192`. -## TCP and UDP +Exposing our TCP port for `gaming.example.com` is simply a matter of running a third `zrok access private` with a `--bind` flag configured to point to `1.2.3.4:25565`. -This approach also works very well for TCP and UDP ports that you might want to publicly expose. Simply add additional `zrok access private` instances, binding those to the correct interface on your system. With the appropriate firewall rules, those ports will be fully exposed to the internet, while your protected resources are still fully private and unreachable from the public internet. +Once you've created the appropriate DNS entries for `a.example.com`, `b.example.com`, and `gaming.example.com` and worked through the TLS configuration (letsencrypt is your friend here), you'll have a fully functional personalized frontend for your zrok shares that you control. ## Privacy diff --git a/docs/images/personalized-frontend-1.png b/docs/images/personalized-frontend-1.png index 557032791e654a8e446862c44cdaa78c4d7abfbc..781ffdf51d8fbc1b0b56d2391a3921c34a06fdec 100644 GIT binary patch literal 60795 zcmeEu1zc6zwzm?}C5Ut>AiZgj5)hE??%2SlHrtOO9)cZAT1yr z@~urAAf^zo$=N$L5E};*h?@z-tHR1n%`VKw3;YG*W(IMwYMu2r zGy~h54$_8QvF>`@>0tW>I~tmu?bS+A z(L_RCMxPg|s07h+GUS$Fl{(v_GuYk%0ubnwTo;qWK6Z4o1)sH=fSn=6z)E1P4#tL7 z=gq8VEk;m#6R`dH_rSv0sM*D+LBc>^*#GRJCJ;k2dqZpB!Nw5S&*?l00A-oZzlWS3 zhX`27!4d4jCBv#Dd(X***GW-Q;n&eF#ut$=||T+fDO<>ci)Ta=00 zSqm2jKrq<4&FnAcIiD8RpbT-p*bA`O({4@>6R^YiXlG51P^gt7#P;V#W2lV{z*#?a zG_<#ey8PVD6l!(8yYpFXfsOz45v)P^FK7yDRfm{3nxFOM0i7=o)_xBRF*84(nd{<( zwc$nI^PUdoh9*##v(HbPems;jGF}kV9ts79`{B%fe0|Z$+Eo;61*7!^8PDedIPSmx z?Qg`e|4qLBC&MXAi(A}ff|^UQT1&ceL&aRULC_2CayGPbI;S`_8f=d0>-|qoVEa80V00!9%wT)1Ox%b!WV5)U`G*qLx_z7@KP3P z14!`28=%1$Y6U%$jPH%?JRnn3*s*#uU&e~F2{GY7C8;Hd2ZMf_Jdbv4MVM&I?uiBXe^6+c78meMF(()6Ig?#z&I^tB=VMO5Oa2SZ`HRl@ zXPG@yQ!tmY@$Z>E6K-B3K$ibCX7A#x&d-jO`!5v>+eM!r6$=~Zznx||SCN0+;refw zADB-B*bGBsW3U6@Vf{^G^OL1H>-kT&dw+8Qf1tH9H8o}XE8NOu#KrlqvV*^I-G!>T zP(6P>RdXH|{-<&4PloXSbL*Ksx!~3dMf&IC)(biNiCurSj5a31Fa!b!^Ng(w9ULHM z*3Hn~@h_Wy2nWAA;V_#A#N+mE8o&?$Bt=ZT4U*Lq~}7&*0DR#jJlj20aU* zzX#F^P{=8maUMmp@tphjFhT-5<-CZZFJ?L;*ZEg42KxH}^52<~o&A?7FL?E0$}`IU zH>P9zoyiFsfM}je;dfDi z3F&XLaw@X_WKXJn^=LP;f z75vv7oZt0E06g!^Ir*+*e{@H_dqo$z_)Iwi(fZ%k&1by)Pw`_|&jsV}>eN%+`?oFN zcmLrxZ(w zcj{mN*=3HC{TBiF<7MvGiU5xP9GN?>p!)~yoDI|lR)b_>=wSX^CC3lJ7pz^u&=Ej` zVHJh|paxlhBDOoxHV?z2rFn|5OSY!xf ze10r4bTqbAaRLght^ThT8nUyWGwct@E$amm_@gNQ`$4xCNsxa~>HafP)_{L-iZPvg z;1`eI9q^y?W`GBN9xt!_QLV;f>>^}fhy_n*{ zMqDi6V#+_SjrhHs`k78O0^IN4yEyc{I^x1RhgDYpa8-^C^cPp<&IVFbQ2wiR7r*K8 zAEx~!D+ydUgI$gL0Z=luf|$XeBxAtSgOwPHz^WHU_Um{xsM=b;|u|A zTU!H%<8VgZ@2tc2=RZu&iv;TVVX|I87(W~)>qRNnzxiqYWjgcx43)w5KV0|z?UL+& z!11y3oNxL+;Q0PBGo}o-GG)34{L2TY0txsl4p19FTe_b8i{x2E)7|Wl&z4*5i&R(2<0Q=`I&cgnn)jYCGmnbet z-W67H)muqJa#ayK+=2GpyOBx#@T&V4r6*EIbX51=T~`REK<2{BxgnNw3;7-nw!&h@ zqdwthzFXrcoY)pu`xqu%>4^6uFK~g`R-a_%Bwx&Q zI&AX0?QOgx-&h%D=i%ea77fHqclvE7RM}(>;d}QU>467yJXc3J5fBl5 zAj`O>UCBA^Z(KK~@p_$CNBq?awHlh6#g4tZQ+X9DY;-+Oj(2bAR+S5CYOH8sc-t@Z zW+Sz}#S^a9Rj!!H6b+2LArX!@jBw>j)*T}bEcEk&Z&vJJqByPw*<|nxAcuR0^5P2t27W+%U z9r$>R8rTu!LgJsh(-e#K1U!$oKN8Lt9V>k9NWk*gSrLw-SJiuDjM*R~Opc4|_g?5k zhed=C#WdJGY#}r>^lc)mvF&92WfETdyLtRqadD?6Co}qA=2qTont1qg~VpzhkE-vaVG5AbcPlMc-2MfE@x;xhfJ`fVqC$ba!ZQ*o23)5+-r~F#p za?9&Af$|lv>AnSS``LS7jHDt~1MYFZO0jNbM;i1p50=)$EQp zO*I9^ZMzMy#VwX{)NG_{l`t6tsxW83vf z;l0DdZ1FIn$xHF^{+imLvLnxWhz~LbhN>Sa(}vK=Q5lg+3O6(yT6e4#7c{~81=628 zwf3nxQOLWNUWkun(BDoYx6JH4z4L6xZIA#aO}SOg_Mmp~=(poTyOVETok{FS#kB|Y zx2S}^?HM0^JN!Z~pf#uIOiP<*@@)ivJ_wigc?BYR!J!`#)(5CoXFtOUK;^hNf2v*Y zlf(4q*E^EkoztQW2H*0!ZQdMtX&ERPLqjKxFdCN$NKzs<^s$jxZfdCY(2L8!pXXk{ zR{XigT}21VjGBXos+<_Iva;$ghi`w~+IqV(T&4)@8r^MiWZd+A!A-XtDC@7yMlBl) zwJYimV`D_dS>hPfuS{4S9q&#okxA!&>A~;xWG3b?e*g#)V)2_zDf_Aw=pN&y$IkU+ z+wCRQ?as}ld&SV++Rww}>)&!)cQ!T@+j=Y(=jU_V3raxgLf&NXSJ3Oz_*_&DIuckU zg051>a&i@Ve7YB^iT_E9sng1%7Grg|%#4lr72)V3xZByz2Hu?RTjmb~1G522KPNZ! ze#dQOrGF(nCi(rd!@E0mEn5wq@H#Io24?Nc^k;|aD=446qu9xZgmI4eChZDNWR+Ww z;@=PtZFTG%tfi~E`&ozg;VQRG+HF-?1rDgNEUTJ%ODC80h`~gy7cwTM z+6*%W#M7BqZgUkR>i+(V%Y;`TyIJ?sjSWCVEU22f^lIEWTO!CK8vW52YJ|Ib^5n@m znUyCUjJj@X83VR!UM+LGT(itn3fVzTHD8U1x`o51xY*n&H@~?*PkvyRnA_$quxcd@ zD)wX?Gn&LD@MNLKHpi+kdh&(U&m-SfalYL1u%I5;@%_Hw;BAqMw1XM>22cp#GuM8Q?w-}WVf zxN8TE^7a9K%MU_CvO_g($!rdW_bk$R9Xsa>mzH+DqXh+(&k{405s6$SzRrDnshvuc z0f}4#)pXD&o@j7mZ(~O4Y2DFg$C4rVb4-%-6Y}m=Hm#6XxqK-?uyFSZ6bF4B zf1+@(-h`!G=?@8RJq+HZtTWSp%9P5!q^&gZmE=ve({e7&2D;;_0r}QPeQ!G9=KCSw zoXXF$k?)b}MqgQLSM64{h;=^XS-nj+j=SPF6xfFtAx^j&sh8fw8tH}kPMS#1^}Q{e zxMBQb13546#4N1A*ti)9Kr^VgNyX8}8KGxIQP-3N;EIMxUpZ6@zB``qOw<&L+rQkT z`5Dk(PlG7nF@)cI)>I2K;A+-rK)F2XXOuLvkOHlJ7RpaTtKqG$ug@uG+bJVYtRO9u z2okOVXBdVUbG)+;m!5rhKM>zEJn-l-G!??XJW*G-gA)1ATGSk0Z!Rr3|{ zpkB6YIyA&vW_>FJ9KzZl<<7Fuaw)bRxOzfRe`a$mIB(s|Ktd7?3VaPwFen`(`Ecve zV#w~WS^6_a9?KlgG?COaq>k>u5Vc+re^k1B?!rlv);orsNU3UYVOSuf`@x2TA!#h+ z;#a!eA#SiZ8 znR$_A#H1LA`ldgI^22Ys@deF+HDoiIa>k*Ng%Ej-?m_O#6 zm#$zVqUx*u2#Bo}TyXS5uFFJ}<`f1KUA0kO^oPoF$$gfAfL(arh9$-VPrK`R7#Zcy z>y&ODESTu#FlLh86-0qr7Q ztlK4d-%$p8SvSaB?po$)$Z6<_wn;b;d`*?OO>H{6UH(u3ukWP~Tr4T7f6{!W5t4id zrr8n%#Z-`>T!n3&b1s?FGS(?kP4z(B63(pksI$RuI(py2H0Mo#NGLwI)*@>z+7H{z zu`{7KsvMCW=_Y2th~OK%^y@5oD#c1XhaVVk&fI;V_Pi7SSaGbMz8NVJAF)ch$Nf1@ zktb)9zfHM2t3Gq&q-c9RrmxeqXbVy(zC+k30^$Rj9w(o88t41vj1D{R>xK2cCXvF? z(iNcjbMe^>rop?r`z8%yA4HdBXCOYLtl2D!p&-xAM=_BXhoH=VSZ(e0D|2)9HL3Sc zM}LDfBy3S&ow{FERB*#BD#w&HXP$jI8>e$tig^TVK-(r4?n@(}S5CCpH!dznqelKo zOFw8CJ{+Do-AOBt11)UNYJEJb(y;aEmkie&&IB*~LalOiFh0*z4k+uzmpHX%9 z!kn<$81E;`)}Xh(9{M3&c{eC`!7mBv)7sA3r~Gkui%^ykW9%=IJ2imGB8lK3Q(me2 zcCg&83o6VA@#ifRO!c~rK}n*{L-{0<+IUsWJC}gLe27xMtFqZFHpX1g5}oA6!u@6^ zRYHNf0{CKMgV!ACFA>>kZ^p$d|3LKA8s+lds(bm_Gz#_oMl!

oN+VfL;eG;dbyD9$shs77lbD~cqB@Pciz$ttsx9CN;yHI{Of$A zZ1V3LQ^!THSGxn;`Wj_=i#EcHM@u?W8Z-_i2o#NGK|ovt|1@TJw~J=t|*OCC6JA4QCyOzeL38G_}FeGH`SF8h2BS{lqj--jYmTar31hACcA$Pyh5va8_Kg zNV zsk{#H(jgp7;^p`y@R>ZbmU3Q*?Bv+pEBizdzR_yN2iN=T3qNU=+?dQK?iPpS%rofL z5>3~4bti_14;fnC7OXAJdC4fyAcKb6Q82s{oJOp_T{;fYOkCuXu_Wow`|^V3iTeFl z)YrLRq%y)IxnS<3zFwYbN_Dq2NP`?3r$oa0GkUePf`Adc?W(k2q}@_+jj;0-&F5lT zU2$zo14~CF6s=m%zoYMnsc=GLNAjxD>xpjpERL&$HotX%dBA1CaxhbKFC_JqYB(es zSJ&&-qsjn3kzh5jpqXRyG{fB1L3}v^`=R2Fwx?4ejv`TmjJ{%Svq$pr725LDdz%Ma zYffFng^YEXrNWoZH$Lyxvqs>$?L?3$@8!lo$rr{W_4r=MKUaAct<@y5OQvP(#?(J; zCiiBDyuZG|gNv!b%8I-b1^C18*y!`{1 zB=?lRL`M+`bTs(H#Ty@}_8*8z7de|XfAl25hOp*|CB|T5#%_i6uS5%@@p_d*dNai6 zZ-mfwbZsi9D&Mg!LHR_oS8s3HT{%*1vcApPT)Km=woAdq~<0!J|s@K(f6{Z z>qtX#Q~c^=jp%a1&Yf<-ASk4qR+?~|6!7njf^g*p+3`q5e7sN&$%08xO?UXVAai9c zk$`N+8_d5A_kufA*-=FwIRuqqO|pwmH45JKNI(xR{IFXUMNr0A^-^w#2PZp(xB?9< z)O{FoOg9>0EnkwL$EPr~!9@7(u9g|ZF|#)SI5(;lmPONdC4up+8B40c6REQY0J7Z6Uqca)p)MhZMH>58E}~t z^r(WAKP&;qUU40RZ;anybGEHrHW2OR{(R~T_F?4Kps2|({H`})h(Y%fe&o>wvbG>h z!B>f}sHpo|1z7_T0Jqe7(Up)dkgzJ87iwr_HaQ9T41q|(R-Z?3)<*^7P&1LG*r0Kl#rZXr4cczPv!2VZyC`A~B4 zbUg>a6a_4-uk`?gubP$u-?X|85dj7PI>X?+G|oyD^)u|xD&>L9kX7~ZldV^hz#HpV zDY05-Z&qR-R3Z#RnxtQr#XdluXKZFkLOTZrdm=7!O;P*6@WsL~aIn$JFgWA!I7fl4q*^B{(Nmp$ za}J?m0xReeR_*%<>1^c!wqll&8ygIqmH{2yrqr0y6Ke9)>6~CBAzh`&0Vq-*fZUqJ zKy1NC_Z&u`dIT5+E@j<>QNRl}v)9Xt4{E1t0TArV7t7_kdxyq~>w|{U2P@G#2oA3x zQqLZp5qJpxvK>lkpj!NGEn;B*gM(B`WEWo%Vgmz?k%`oA0<&m8em#5Zr;UgLt)mLY zl8P4`d&+2x^1!jrB}s<^+a2P$>_%-fgK?|*Ivnu00ON?q^|SV;6EIdqpMm5C`mll2 zJ*2IHfk2lpm;AOP>=%@<<9b^16rymw4cBqV?T9yUd>%zqhCHk^yBB)@;oBh) zzxU$@pEqz?rzU+#!i#LTZlUwbKaA17%u}`B*j58d6$oi;t|lQ#)$uR?fjh0D0gyVy zit8)hZJJrOEV3iNrykyv2a9xX5z5Pk)l0DrjqKD~?I)!o%Zs$u<0Q zklhketIxy4caI`4ghh0aCnIqc<-@7CR<4lfdQB?Ms`9+vZycy#9`jtjWytg!g8@?y z$^nFYSrM7kaoySBMk5p|{x(f$YH}f1=RVWqiXL*29yqE$pTvH))iC<%TQNjRE-GwA zN;4c%cQVBWv#EJyr0})->+4XAh{nRng=ui~o0~Y41~xFR8+%CYb;flt{9kv~FskqF z*r=bG`u(?M4>;G?pGD{(YS#^kX&jRO*@P zz#g(3JRS52uG!;tIEgxg1y5S!LI278nzoqSk{-#O|N55GIaE<;cFR z(|>~3%Ng%%DWp-wg|W4X%pD!ySxg+bcv?V9Y<6}%Hnv*0Ha7Z+l=o9eW8RSh&s?YF z4nI?r@K%|ntGyRtmhXEC{q3k$Wyn+N(m4K8g`y?~6i=X{+#y`E zv4oEp8;Gov@y_lq^GBGTY1~-Y)VV9jdnNsL|CDN02os)m`*)chf@M&+1`QzBxQ_PDY<8%QPadxHv zY(0=j3DDnt=ABd?5!3-WT0hUL7^LE`CEom){79$y_5u-8v(pAErK_j409Cr)!|XB! zD!*dF*zmjUsSi9J_uYFG5};ixwN5ucD92mF9ueED{>Yy8Y+(eBx^uzbL~ViN;24`?*nk zmid6*{+d=zPn(^pL*3Ynd{Er5Z`st~t2g>22P&$cVW>-p;su;(7@Jx;_9 z3sj$PXvoI)T$Yi)j_?TthlwsRoDev~!pQJ!KhFDemPz)P$=PWzHFdNR^5tbpzpOH% z0smM1(GLaRJb0Sux~IBgnTPOXLyD#)wyaF>!yrey?R1(9wj;Nyh zB*4gtRvRof8&|2y6@n)P8_IwSW^n@sIZ$Zt3N>$YQY*e1u<5^f>)B0QSKBFVeivsy z{p{wY6K0#$a8wKlWJ(4~+l_h-74xzdDXExJg3^U{`V=wLQ!xXn)?~0*mynR4lu!X}CJ-7l=ae63iCsx=K4!e@-C&XX2gG0a;0rubt|0-g`QNts`%IjOm%lDI$=~j+UQtwVs>KmNA zYF@W>5liVN&(O}p-!rh4Pvvn!DZE`9sGBmMdAFo-LCBHn2<^~t{v&z*Z9L|WSITP1 z!nsGdo8L4qzc5J!y;XmnU4>gutMFjo6QQx;C};7I#zOY_tr zRIsT(FO&X+ZYChZzPWGD>#LqjY85h)3!@@j@^*pNYYz8a^8|=4$Mr`BgM@K9=4J?Q z8?DSRm!ZcMDp%VTyV1coB*KeY#9JQiKCwPTCi7*&ccoZHkT!VkyQ@6WJaQkWX z0Tgw-Wvm0uImeQ^InI%^DKH1b-UzEBXj!sH_Zua@olfm5)U*scX0Pq zcHQAeA9_|B5)`CrRH2<0zf`6^)lzA11b>7&tDYVb3k^xD^Nv8BlbS5EE3?}<;*=rd zLjX(d-%w|cn5DA$WQQ#pAm7~QHltYLiL!SvJCL`xq=nPzej^6?Tu;%!bOFL(k4ZXh z%gm;ddMxy?I8*W-KRgNnRpMbCHx4VS-5z-3$*c}1Ghqa@wz3R`sS7?pt}$nZ_`~+c zq6y(bnwpqqPF*%Qn=8}%UqA2ZS8!>(GVqmq>2`Dz0e&LgH^z)PAHdogdux=XUp}xM zd=tmxJZ%)rW^q-(X`W4Qc?V}rZzS4OP|j^BL!sdaa0(SB0{z8|-pBhtReHujCV<)U z?uOa)P#apM+o2%QV1B@aTIYkjJU(+Daz3}quh#gVzI~kz6+EgkN-h;#Cb|n+mXazu zbw!XbJKzFJ-KNn!m%RLhbk=bvs{d$f)-0YpE@Sj)}F^03=TA| zEXN=@rR+BM3UnwI$;|UTQD9Vl!ko-5{`!tgautEkE;)UJRe^uf;QGvv);o;%!72G$_*!{u1!NpSvVz|APhO(h) z{Q8<^+($q<;OidCb)zpnxO*O7;i!GtQNI9cq_WbL@iE_(21>()k&8ZaP+5qYw0`_Kg*opk&bY-98nXme_dh%S{5w@JT+Lrl4PvTucTRwn8u9@{0pTmw?2sE-9a0)T9+VP_)i`nIgrJ>~{Sz(l5m z=k(HjI;qAQ{T2hKE;9i~waJmk3JL1|{^T-CKvw^9*9VsZ zvvlE^hBkOw)KzWn#=iZTfr+T7-i7UMjg=7x1QZk$*Jl>IFO~0=WFb1)5Ln`O8W|40 zCY%%Dqh1G!F$~uy8xnc!sH9?V`LxF|jMAZWs2+~Jc0fi(t{*BfE-`7lS`M8Uw@(@s zmIE};lc<>+ezwM<*J2?hT~bme-pxG{piy$tj*mmhh-Gt-d*LFJLU4nEhT1@yKb}cD zpgAN)PB9LM<&F<`-|>BU;|FB9n>Lfo`boq<+LBFzJRpMZ@Yj(Qu6=T7SI=Wmv)F88 z(`5@Ry0C5R7p4gmRfa0XdZe`SkITsnoVB9qRi97x3aKN7($f|8tOc9y8P7iv@hy4`ugGF z;VRTyIe^zQi3nHDET1l@>lt4-InLv;!zg%iTu6%hqUgEHmvPd=oz=1;kzsQPfIZkXi3!{eK=POn-?-9IR(UhJ2B2LP z(yheZPc{J&Lf;6YqN3XT9UL4)fvTN>ljE=Ng`R4b_62m8a=AF{LIcJC^PE8+$L1nP&n{>!nJ)0j= z7N|ZGQFvIgJBea-=p+|hwVAlw|G8+gt?QG8zPYSYhE-DSH5cOp?gg1~<4 z3Z%x(tcD^TtDZk=?8y{WEY#wBiR;gagwvU8NecXB3{j9$_udc-x+2unrm9v#gwXRa zsz4W1_8fEkrQOER?W5PLmv&Z!!i5IAWoWQTN#Q4y3Kcphu%thSNfZ)Yi>b35vB7qC zwDH$sQB^?-efX*Do4O-W!yD5sB6JcS1?%?rO<3&-ED_!(T_f2u&5c%#Nb=F`YB1+n z-67b3OVaUwskLUbuZV zwHhg>>&I1bW1DJ?x&agv7{65WMO&x>a`l_p{=-d8@PU}5jX(`VPqhm)lqk+o0j~*G zc0ula1UP3U=7R-(6?B4(yAD8UjuP^Gef^zs^Io{+kHzX} z0qkgnS}z-47&fVB@ry-xbpeV0Nuc%%fqgeM_f~F(&FCv8wPL-(os4S$s8J)ZF#=`B^bbGS#E7iG2Ym>|Q9E{K0-*o!|Q|U+>i~k^N91hpxk(8mxU=K9W#9DXNI2g4oDtovM0nP2&m_x6B# zd!G!=#QnpjIKD7lbcUcA-EqBQrAfgI`U*CMoaEZ`8?U6!Y6 z`_an@0LInSO}X7uC8O9?s&uJtXT;KC`hC6q{mnMop)xb9N{q2cO3~Q3Bp>L2d6=NX ze5l-<>@pQj=ap;^$}D74+!s%f!#!OI>?jkkiS2PpG85ty!b9F5y>Be0qTCd;=c#IJ z=*7U4v$5T)s}t}dZWKtLQ{PL;Xy;0Jn^sSu^Tru>+d@s4Sw4cJ1KQ!s%f?3Z`Z#5B zv{(K6Twmw}Y zb}J@AXbGt78(wVMZ6~Ect*{ihlXQGjRLLscCzy`fmEI?{rLAlQI2Tm12TuZ}(RB(4TFF2iUGj===I|$9d`D3~WK+?$8UlHQvdfIPGdFPD zzCiC@Srd6%Q-^)HLS%o<;@QI&ArieO_s7tPBdhMRBKh!2tId36`RvOl3%KKAej@`t zRgwZ9@>Q?RNz-cXS!;s640#c3Der7bC8I0cktgFLxFP7-LBhinom)$LeEh}xL>b=+ zv*0QKlC=`SwIG|yJz5;O!3f zxCMQVR={CiX0A3W$spH%AE;_WVp_}vsxxK9VCjq-9S;|1k!z|*6nA$i`EB{ezSg1d zzF}#&q0dz5uHM6X?KL9bgGjo6zENc*PgCa!Ue8|VW;w*K?Kj21b z>7y&31?(Gj#<1K&!D!J1)VS zvVKrXes^>cc8~u9Kw*4q)ESaiXONvV%T0pi$K#98M+7?^J?^bG$uQUfYOcZGyNZ!u z{#6_fV=1U`~5xkc;I2FpJ85 zW!({=a%1_fd{Rco0Lsd#ca8V~WaWh?{);P_2?;u%n?!HWUIkdLZRT2DmTWUZ zxD`t5ybytF#&Uy;nVDCgmR5pf;($GMhHIq2plEc(+LPxAt-GU}>cH}Rp~q9LI@-tM zBZZ9guL#g_Itys8qxOpV;nNq{a!b4bOz`~E;wN+nj?}OexX2qof#GRFPF>v4JKo?b zOWP@m=FM0-<-Rd$KdM+hz}tK&y{Z+ZIQce(nP3d*@nM~Etb-k;s5rjq+DgM07M;om zSE;3*_Dd47m4UtzJ#K%e%a$k(RPn}XFspa3D?bneExUg5KIDi;2>$lWST19{ zwTNVEHe9RGhN_dYDg>g4Wi%c(8*e}6k!-o%&Y<(tNR*XS?rWDr2*v3f4)S~XK@6d6 zQA-4&48P;ykeREe<4uv`ZwTp|O_RD$1V~6uw69s-UWtz8MSemZnew4Hh-TZuw~n}0 zhcvr3Ii&bAb6|A}LwoGjyEamWm=L25!Or=~qyY#KLn7xOkygrUm#@UoH&Fws(Ljb! z5?SNxLs^6}$>brEAi!fFl-e+)X@C0`f&caqj!5y*qa!d9B@{&y0!+)Vi5bOZYu*~5%w4~48L zZ(717eD>q~%IL?38GT}Y?<}Q(6r@zW7Gvks)Re_8(qpN26L@C)GPC0~9;hMD;n6N_*muckr<6dNG~Qe7T6i zq)p{#CUh2Z9OVNL=ew7gSS%FuG-UU$9VTD4)I1boO0FPt+(;FpwvT}`RNne4{kA57xwefaR4d$n) z_^lpRTdbEWD6^mshMBjhmxS^QMCK)KV#n*ewqHyuKsK$3${}u8LvWZZVs1_9$J&=p z8MFsi(UhdemTFPtiQQ)0A`%gK-&mK$h~4p=Z=>5ktW`M+p5Mzd=_RsbmwA6~n0>G7 z_P~?XJx7eeO(~s^o9#{_^|1)|k2WN>zD(#_YqlK+ycQUR`8EI?!eCh@=$n)`zL94! z@O&wjj|{1hwDQ}7(X!sYcE2EwDWH0_WqbMKfSP@C$n|#t7{njOo2#za@U^)DWwPqv zSA+F0Z;y3{<9phFi1dW4_qhSU>OxDn~9T!>WDCByr4{FOnYI7*pMucdeoV7p9 zIaXJ54N;0SFhpCg(k+)ic(_)(m;YtndwVMrkT0BbrtS9b)S_{%sD#qT2h2p*=v5T* z>=ua%+bX6{uClf)4X?ksKt?F)DpQSluUYLP@ zzS?TI)IAQ+40@GpZ-%CQc?D?@B8m$oX8S{I9i7EY);aqJTI7`Mcj<#4R+?A3;rm2D z1$cOANdv8{eZCovglu7w@Pf;+N^_P7$jO7=VPR6zA2E}pI#6v6TT6qjUG`mP>HHq< z5me6QBcv9X4SJ-Lhmq2C<_V8Fq(8dZv@20KVq+bg!Kxd#u(NS}d3& z9{wPAF2?91cEizp3N*{>aA(ODD~waKX|3J|es8mbMKMR}8W@9&-_@2)Egn#@42c3B zT&|NSST~<(lw`>bX?}~Lm49A2VhFrzTO&-xUa!X{d(+g-uEQvHftobyfQossG1%shu{LyYfe!bH&m}Q zosH?Uqnn}UYP~X=o0aR*jVAW|7s&IS$cx`<#1I{Z{JiZ>#;Eq<%u%mb@Rt(%tgUV} z#`R8NVdGv4Mf&KHY0x{^Iv2Mi!gZsxhtI;o=grAP3>|`fc2#^C(UPufkO3PUrOUTF zj#k)5L?eUvHn8$WG&qR}vcmAvI0}SL~K5Dd_pB-@F(bGLQ zQFc~_vuUvKJ_cfut4-L6h)Q$l3UT;|BuH3&4aB!tV{W`tfnSu#45hg6^gfe+aT^l_3HNL3k+(7OQR>bq*dv5y@k}=(*R(O`hL0s3PZb z`{V9Rw)M8E8eV!M<=6`tJ6#C|B|w;CLs}S$-x#TaV;Ye!OKT+Z8a~m;VQ4@i_sn2- z^kV8J$#ghMG-0&(Bx9!#1JhT3%9N%<6rr?DVMJHt{n{6iq5kY!V@5Sy zgK5Q@i&?@AG9j@Dlm=J`d(QqMNrzXJdEDLH7FDg4QB12?dg?UG;)oDA#BO}L5sE>$ z4}uPtA_9f{A??1)MCJm68i|k%IcboYsbOw9cQc!qP(>;1Nd$E;k8uH1p(r#JrMEep7`5}M+TTY>nNyk7Bqq#;v6cbiUV!t>aViz4p*>Mb2NQ< zd3|w}&r`%RGAs)+5mmfq5!P2jrnMa}TUCzjh5i~Yy;u>5DT<}>UW+3S-MoB&{yvda z6a^g2F6#RXfjynCip5r#8Q#l(QMwN5p36Pvc==;(tyxlAoycRi%ZQq#c3M|T@g^+MW@`e&^RQdPmKSUDa`ckgo1KLx zyGtS>^A2vg9#p*AKd^t0lTL}mTVz{;F%VF{1-s+2niR5~Lr;9BOpFrh)D@|5b(kaZfVhCTG3qL7l zP9gWlX(>s?)HlQTD`dL2q>52=bQ#mZMHDkNJE*hlefZX=q?s&`4){y?GY_g=zJvpp znUtB}rsFk$SgP>qWH@LmEk`wJ^eG`RP)``fBw@Pox?)2cT7$T@Ez`lW8=Y$~{?al* z80n!&yuSEE8RHn(?^_>$Dah8wo}9E0LodB}*J)goPgCXQmc?l73SHhNoXUL zO@7aO3z1C+6Jqq4KjbUtg>Me$8Vu@fnbFfE15jmCDY!#Pr=4lryjQNKS;uq{ z;>}WRvLMPZV<`pz>)`mjyA4MarMx>w-XBp>!FDCBn=~bda6027m*x({%=j>YTYZYm zMCIRXCrnX9>Z1`t?NF-RzUI2Gz846AsB$#}*MXcqQw_hg{HS#`a5nDpWisaM;Tq99 zgc3lxjoncJ{Z3B=vMnFM=diBVyTXy>je1oy1*o^Paufop`^3YNWS?)Y zZ+h~~GXrT}3DX#&9DNKj!AKT;!Iv)ifL6gkFfuldOJ}Pv0}e)lA%zdbqLtt#^7vr^ zwZbzcYNyHI9g)TYrYP&r%)Y~~Mp?ub#Xx4+EuA!~C^cV^sIqOc3}#|OG)pD7^`5q5 ziG_Udy;Efl++d=tR#RRA!z17`YGlYQWT&%XT`Dn|EW+(f=i|Evg!Z18vBC5oG^K@cv_>#}{c3Z34RZbOp&-;Q5UOk&H4QUkT7Yv9D^v<;X$~pYJmayjP z=h}S7-pOwGF-hPy_lujC*OX=Q?Zb#TKVTAQUb~e{H^Sq?sQNtCzCY4H4{l4d_Wp5| z)}zjTRN!uq&1+I-v5toBBP^grYTbkl4j+ox$$1suY z`tHW?^X@9fs)N0mh=F(oeqYId2DgtDp2t6;m(4t^rNdVzID{%ACt_hTAa)2WS%4?#zefvsL5pUOnF;7VV118s& z90tL$8h*raHHDLMer=!ur$!|GQB0k`y~1gEaH&%JTRd?7!Vd;@wBjUy3x9woka7b} zQW<$jz{iR%5tb$;OVc*o9nVHa!DtF?BhPRMoPSQT?LZ*7d$8ax3GN<(2X}XOcXxO9V8PufG`L&P!U^sU z|K@!E8KXyc-}hZ^QdI4#z1LcEK6AcW*_})er|oA+ax~hk5jadXj>$+Jjwmp9M7=rL zPjxt@LMt=5BJwbCLs zrcD8j-dK`!%kgI#>M=ksv_MVo?$62zhyl9!?_x6rWRf^*I3rC^hy5<%T)DhFTUMs+ zM=h>eA$4D#mor5G$3Xe`M0t|>w_)u|$DJ$(MH(CU?+s7se9;|3fcti?=lMQhZPrzH zYll=U+8PeuZO@su*(p^nVu-!G{45tmqkpzZ8nFEgd|GivJb>e)AESYo{`O-Lk%*Gn zZ0bv9i*M6QEk;F3C8!W477X6=FAX!}Z6oEq*G|~BebAHbm34P4hW+gVdqD$UMI%e#*xf`Erf;q29PxV>UOT@Xi9YmP?2$;Alfm;Hh|94}Z&Cb! z#0q_09^X%mEbXhu8vE`gY8vm|ZR-@jG>S zn{-a{;&b$L?p7EPiTN;aVyi+!Lo?f&3@5>yzD5l2_Zl|(!1+LmpF1Iy5lZ;XTD-sB zk$TRlm@#!_jIHgs@3)+B*W*9B-Y3i&-Z$YEb(WL4U4HV!F`2G@AN?_a0nE5neBw}T=3-759$Z)~E$Qcl4 zW#WteL!_fY)fMYaM2TBjW&M3Uc#Lj0n<^K$wbo9e;2%m)R@^uPgi0ytDh>|+p~cj# zR!yDzxh%8O-}D(>W%OfzgZbSri|W_`N0`w2k^H2~u*~kUA1~^~jWjDKb3tx->2g-N zZ+3<7guD6s*((##nHTt2EQ`|vK6OH8@Wv9t?eYN5kKms*NoDP7V<01?`{ka{4?Eb) zo$+V|W2wR))52y`EsQ$l+G|Us8N9Cmu8^eM3V26poL@cpI4DCY;NT$;&}*bXTAiRw zPVZaz%e@Pgh27d*ijz*OBfx5_Y}UJ_d+V%E1j`p-bc|k4_$0F^Mz4DuG4u}&83F-N zlMxc*x@Jfl{r;)1VUa&-e)xnKp~rG!UNiXxcaIHh@Z1{AhK#p3UNMsPlEtB>!cvJ- zadMvzp&=uipREg#!D;g+-Efm&|G6NLpO&ZAttD7Ln1-9F`QEsY(zTabGR$P3BJ zt)k)Rhrg_2;4+74N#Wr9tt5LGp&i++rIsnk+Sz|2Egmg^h0es|vf zcZ2t80kJ~B3!{N&HW|Z>!u<-VqoYGfqc*gs9gmwR5-w|rTxOFb4OnCfJ<=Rqx`5^wg|I7s8&N`80XYW~ zeCw8m2nOsutGTr0BHHFy6!CoQ?%v_~I!JP!P0z>cGKXoijV`{y7{ZEjQ95!Iy{#rE zUZ{bk^Ot6X+M7i}JNu*oBh1O^TKO=kD6vR(nTrRU+|Q95v-hf1TJkEp5mQem9H?#{h>|Xy zld1T&qV%pzF314;V&~>qonj2oZyd(fr7aH#h>2&?BbQdRWpwvz8#9rvg5ggyd(n>5z& z>?}r!T<&+EA!2sN`D&0si{BSZl}Wd+Fi*V2hfR>sln~bq1?~b4uqvA(7 z2win4e~EnI_svH*&o0~d9rRNs_8v_9c%~VB;uPe{9 zWRqW{CQ*wA_7oFDtA;J)f2A%6-+aA!(4SpRsWVo3JWxVp6;RF*2=VcgpUPfXSQzGf z(Y!n0uMWR8zg2%+sz3U0zcMfY9S#@%Bg(hxIfu~Ud=yOAzPI z)o8Twk@FqPLe)8-dL=LA{RCdLUZ(!fzuwvC;1WWIQNB}hg;s~%-;4@PlevjEetsVs zQ{KxpEVP690114#bbi)hIL{6nqSBKrG+0~A?3@d;>^|f)en&D9y~R<24Vyh0Y1;hb3gRrP5B}P2NhHtaY4+pP__oingL7xNy4UtV-IJx>j zkm4Gd31y8XH@xDc<#SbG;j=@XKj(nPhCD#OYq0|hN1U}ZvsaGrK0ddfb=BX}YIr}m zwM+sh$Ry2#px-1@-M+pZR}(yL+elCNWWe+%k7rl~tW$ai`;+o6+^Si&ilDL?~-H45TQD~dH?dR@+LtP#rpjO4WHi>jJstA%S7_-;lt zp{{*f0!~kZH2Hnqo{|7E;6z<>1T)*W#;SG6hbt@wJGaH0|Rp@NAnIAHbQ5x)V`yLk+015)ZGl z#Y>LlLpbmo9sOCVh2JU{-4-Z~p}sb`c$X*Iclb+!8NayBc@~*I`wqi^Y-^w(3;N_U z7Dlj2HOGK>;kvk+TZ=<7nBCVYHlL#PXTI=A`7s!*-!!va2tbL(va081^)_cU9H7t)7OS+& zsWJbo*81nVqlQDxqHo$DSuR$wSr;T^fS_6`i#tzb4FFk>7$d^(g*e|T`wr2DAUy4> z|7fU5p;NHy=7G^VpK^V@UzeN3XIfSQlIDzL)Svth)(dJ9=5<}TmOdJ>^HPf>;su5a zID->Xo5y=$+~by;k;51X%@4C*^6h+18W+z;nYv5GGSH<({1}<;PS;pu3=$%yq3$Wg zR!lbzpsc?@0DB(?SWi1l5)KYfw}Ci*kAbFGhvTd2&afh3j*j`+kj2DbBPs}Mq<~hh z@d-6%OU#T8Qcp9@dcCG=x(mgj$<5K}SybX=vxy<~nT2>kQ76t<{#F?{165U3EINLE zqOV`Sj-;k*KHBS>085{Jn%7SAXSpaV;*dSS_?=o07Poggam&Kg_6zY@y%jB$*#@~R4K;Y|PIzU@^ zVP#W1etP2y?-J?id9{uNgHI#avjqg3Wf{&vn>n2J|Ijs@y-?cO$3?;of~S2CMDKBK z`^KsTRGg``s*p^)`3P(qY$Mzw7xf4JT64PV1&`D_m*|_V=6(8(d=`1qjto8lVc0$O zny|s$A6(g@;p2p!bw41=<%X0$mqg(Qj9^J^-;H~Iwf{#-uv#mMMD*Kqex!K1UA$fT zsGzk6U}-0knL)v4x1S?=@P+JL5?&{uIAszj;!*H2h#w?3B z0ALd#b-RqnTNxvq1e0e5#S*+5L&!5%Fy6f3gAW+DL%?zx2|#=08(LOrJgzp*Ta;q| z2f8L+ESdaGY^q$Du5tIv>=unjBBe|(0I$teabS+EI%X841+-bOH2vEoJw?9+z_6{t zSbj)3o}#JK`HED@z}*5poAr*?$11=Yy9X+a?05d4(dz=B#L&BWm`v#_2h=!e+m1mn zlcup)n;f-#F?;*c;+YbXs>^aj9hcOr2f09=cY`*T0WU5-l&2HvbFlH`j7T`A{lWq5 zxVC3YwlhI=^Dq_9g3IjmZGu?6qTe!=KbK^4?Cf7V0Phqk59PylWI1)zerNXdbk9?N z0s$(7Ox=w-@gH5Un~y}i9ue*vJ~0oGi`!=}Lp3fBi?nbWA=S{UVzb{H?Jh2nSZ!EP zQ9inqpBWe!BrlyTlodZ7E4O^D%3Au+4Jm;?heNZ0&ExwT|&R`RV()>&DXXgXbk11Tx@8OvLz;$KYJDr`0>n_v1&%nl`qVfYCbqYy>4gkSF^U_W&UKvPX>so0C;1{Zpk zq*y?Jf4kG!ANLPn8qbk?{2MdwSU4eD?QEbJ_sY7Q6Uq;GNW6POLWu0oVL*^CRxs!F zAc%?;pXjem#Id`&^=AF8iqu`11|cWsYCMkje@|U}giy8ByKm1W6Yn^V%J<&5_q}E6 z_zbo6FHa?`Gj~VBXn1oA90tcSSl~5KmomoA#Z=3D6q_ATr&uC8qEXR#LJZBahIQZ) z&pl-g2KwSgNJncNb|sHjTNU9<;Y}hmBD5KAi*6P-Hgrn@0G3O#RpI9kvXr zToE*;kp4q~r9xlWye&gLM7RWp%B|7=(XMO2giu5{nBA|=(Uly*)?;7jm9}(y^=f6Ya%jt7 zwc$a17jbmfR(`dlWM56m{h~R#*=jX(?s7gBW4@X~cqC;voB9AeR%CCp$xAI$s}0q< zW5IhyT_Vg*HmDz&oa`b+lC6*I4X^3kT=K&F%Zj2@yk>lM$~}oyADh3AS&tIs=ER|* zh&L15JC|6wn{;l()#KR zTbB36)1s_4Y8Zx8ld22LNZlO=eY~%u!AqW-P_OG9UuMO~{~yF!u+iRQEx`AX2!r$C zqLB&DUa+LG48T@kk>JGkRXux0*|y;#tEB63{)twWNFPkXA-Rov+x ziDr=ode?tAMlQ!aC4^g6|J-zw?*Zv4>TTc5o|tD(NE%UCD&Gs=KHKqyuOK^J1BzcycvRBdXSH zlkG5+=Na)o50pCU^_TATpk`gEmi@8}F^V{=`V7A=$TpYE^%jR0b`AEbz?(<~7wkva zy;g)pYP3?qb&o5yUE%n6y}g_3vlq8H=|-vVFWk!WHrTIX2~BEq02T}FK9Ao~)^G8~ zPxwvL`)Yyj*|tY5i_2H}0i#=s#T*O=%@PRMxRn|6poG@#&6DhFTF*28?csJKrAnpm z>Sc!xpuA;@cbnzspGg>9->;b2I&vC3Js!7stVCJ7b_G*i&Sdo20y-~*czDq|XHf%H zeByC&aek@gDT+M7m~Q^;gc9>csMbHp|5is%%&#O~{(mJe z`2$E;5Ll|0n{9LdQUscxyV*zVI_!?%tGxDNwC&!H_LkdH)N8!vAOKW|OZOvs zxw*TynE2+_(ppYPHgT+zjVMD5qAwbk`@#T{&TR(;!c+uvdJVLh$SibVFB(r{>1JOl z+lh(>JxZL}j=R1+U&UU=7MU$T*;wzY=6#9Sr$LZwF0!tYMssK(&-*ul6N~4Q6Zg?H zhx>KgIfH>{9RyZz?fxM|HjB}5Nt_U2LB2>uzj-a5L zA_k;c^f5;0KKav<@s{oyZldZ%@2RQ=^N(2_hKZxDP0l#v-?>Tz6V%i26;Y|(B?KkIhyQ#O(IcbbM3eSOzN5L#s|p762vVSC4lVakJi0rhTg+iQFttS(4&?7y{QGNWG2pN4d!qg zQCr5h8tiNiM1|76-v_TPWrYS^dZBHMHCZf#39Y_kASJ zNg8X2fKlidZD#)AR7uKfcUF+aY64KhT-ao>eTwoDDP=KTgY}W^;qqWn*KbqNqufF;#0Q-Uyjfu{^60<@j$2FN*LLIxBwXpI-T<#y2Qq z?9-kX==pOu5y?AP_&rl`cv3U{nZp>w;;xnG5=}{J(6J8q>j?c)ID)pW_-bEKHgA?U z*-!g5N-exOczNJDBJ62y<8Lm5g{kZ9cnWMi!3#^Oh*iQK0qUujxC!P~2CR=rhk>$u zm4^AbjEq7dbF-`V!otEm#9hhL&y_EkFuqd)syud(!?ULc;$s{#=)VI2G5yF4CQuR$ z-;2n#sZp$qvimcpE~&9C|67>%2=-7yEBI zoIEXqg<}QQVXcSJndY!d4N&ziC%omn!iTNxcKK2;{d^8`=wtlxr7f?n#+5OgM~U=l zjoaFUGm!E7-q$cUzF%iB#@dpGrlbuq3^(IPkv8bFLP%eOzsZDb#T4`skW|o*t)`PO zca13&Mt_xL&V_xc*fT76uKCCg0Ob%tH!)`zg0HFCZcUHX;K4 zhy3A}8BYmnIDbKS8uFrj&xw8{i66@{O{?usF>*PAE~jJZ8>^e1lYEY{?!s#Psg}hW zIbP6EP?*ol=PVD5%K!Rjtx89zx;GL8)R1R~`)YKc>W$jtS0@tEggmwBT`7gzeG1Sb%|cXQvv_>bsAR+Ra>enHyVuo zxP=_{hxg)KaHmK|*Q1>mq?ICmw^R5M@4{Lt$ef$Ifn5euUbud3-SU~pkA+EnvCpbz z2$wNzw29=uEI{$i@W_O4l_NWm_oe=-hv}j5I>kwvQetA7mf>CFHy1q5${-+IVuKL5 z)w`~TRuc?ub0LsQ8C0z6j?#?YPK=9NYLHgk-OnVYZYn}huOs}es3i;&Ki>HVJ2Asa zH<%v{e>bl9JcR|_p=D|AJIIRmE7I*`*ji-T__loYQ_1Is7)tYWzXj;}9d#Fk2 z<%@=FW-nEesMC->NewVw{IOYWK?6YA+B6)wBR}M0zOd>&-@uQaD4@k5ob*HWkt6!v z-ZX6HbJlpzy0iDRw8uXdY)$tmM@d+*^xVPJiShlqEC2D+hDTO*^b6U4QvJnzX2`5mVG3}+X|q;)oX2m$^u#0kE&vqhbmC3&KKMO$+)csZ zI`4mQve*#D!j<6a9+sY?=a6;}mg*n1`Um26RJW{9-J)1#8jxZCy%J>{nMy{<{mDlM zVwX`d$fmxyn`Cz*qow1QQ2eW^%OdrUd6gW!6a@T^MzquX;g%L^fjie|7!j~``clq#UCt2!<s}?hzp=nk$Cj1Zi{3v0qa& zZW~eeFP!xSET7jqAgglb*=!ibXCWc@U`=8-i8$*V@l-0;BD&d6dgUUoB1^*bUJYN^ zpYLUSzNVn?Yee;llhvGWr_OH_&uskRc`OT{)o#_DX8Ou#i>lAiy7WyeLFsajz)yf*O0f`@HJq0nd2i#>{+nf;`2v!)mIt; zlzQ0PUmL$gw{mY#UwpISkL_+JM7JjwAl-Y0;XXzLg}XI|iEO(cNj5zEGZ)ChP1H^3 z@gdSm++YN{Adrz57~>)sB*m&P)q1@u9lY6oV~%6 zV3CB`F1O+HOKfS777SZe8DXh&gTberxwbKZv~>Q%1a)sJ3($K<9eOko<#76g^4pC8)qen&6vJTw3+ z-j@EW`yo92!zE0S?r>0KedKVIyU;GImW0gUBVWarbWKDW6eKdqy~M2o)qYgX0oXL! zG_fxu`Ro_yqxt$GOG5e}`io^!T%ZVDACWMFIFS*h4>-4{v6`a;jqBAjf9J~-ho}pU zWhH!R7BO+gNR@VT;zG&sngK=F0vT-#h%G3?5bc_h78R2>_uG!*!=ZIK9Ml3vAgz;V zP`%J`D`{b;kEAJfpSRRITe{UuFGGX|i?^SQN{z0Fq-d@(cHOiQ8`9TMAe*fLHQ zR}&^a?SAv2@SvY=xa=_rZ%k(YRTj|NU@yuX`6DS5=fXmYTl@kxv(J<1>k>LXJrQ^- zKz&4C3eU#;y((Vaes3bX0;)b~6??M20r+HPxJO9%?3;kFA*pq?R4d|5`NWuG2KU0u zIy}!v(X=bYJNJpHv)@X}tBD{Xn|!fbbKy2 z1#cY)5c#eod9T`~2K|;&beVq+t)vCd0+vw|;u8`ghJJMff4Z?WT#$-gPO}&&DbZuh zUSk^d8CbmPW+{`@8E_3yO%eY>$Ad9%@n|^X7%PZe9d3uFPr6kCWIcAZZ7%mU;NiY4 z-^1(Z$%3q4hvP(&65Od+S(U;MMw;q)#}oz>h1rY3o1cK_gR=chNF1WXl}bl=i8}9K z0?ChzFg>_#<}k~L^lP+f0m}t?ECKBniR0T+`9eFuRKQYX*lKYr3|+q0c7;W8)F-%r zSrL3=baK)=)ekfPG6=?+wif)0A1SUz$UqljxnJ+0| zh>AZXVS3T7zmp)n^0<9kuctg&dhB1qH}1H%ZaX2~xSL7xK%I71bF0>D1Yv&dz}h*?kqpiB=Z~bg+STK| z9T)~XYrsB~y(AR)?;^Zo4ra0j!4#I?jWx~Hzlj!g17`2L?yh`X9j3%pV;ZKwNzvVIWD(EmO1c!u5e`0GuBWOu z!fm}krb|QeLPwqux*V?d&qBOkIE^iDeC(TN5y+*^G(?+f*JIz&zXiZjq_q`&u=uQe zbBxcKG5p?_OPxq|@_4KsZ)N`s}&7)>G3%CHG>N5(! zWEL^P5Ck~5uLvOtm&}oRDYzyVuu{Br1U-p}*unKiNjv)3fugJ3mm_rlYII9vv*E3< zz^m1|0=q)kDD_50@y&P%`i1A3NW(%5`UDOwwRVO?CbP{eVCZ^?<@qJ;A8>Ej!zDgH z%?}{)WBlc!@ujIo=$xbkCj-=*r$(8zMgx`=s{1Ljle2761Nj{EO59c&4LR1cUWqQh zMbpU|#NGv`EGFe7hQxMdM2AF2>@_XajeFFNYXvON93@`|pzz=4m4Bzr(H+ia2vEOt zP%RStVSJ3GNj@6VFQr=HQpp+rtaYg)_1G7TfKxY<8y^Q8gZ(9=UorL<)&sb+P5O9B z>*H~k$BAHnGFw{WGy*1{`+=nFS>(Qy&d|Esb~NouK!5MTZ*>g(1?%3`=DjknQLDdX zn|mh#B|2F_HXKg#IriMmKY$(pW~s}sT&0VRma59FKcO7KBEAcM;n5C&2`s&;y57o0 zk~CFhL?>G`d(yR$>ffaEjYGYeY|_J`S~^Q-F9?Y~HT1nO*h-kndB=KKe@|YF&eaU> zSr!q<*STA)WX&|6RU7G}R|(_zq0>0>HdhoLDw*+&V)3Vk1a^ZM4#hOYD6PqG;V@g7 z;-jrMCj!F?uIfQAx61Mm{pGpYslxWH&>(vSE|-Im&@J+cn%;~0q5h}1bT9b$?u{@D zq*IZ`M^{Z>9L_>Y*evc>3JVTGNR-@X^meNzGP@f|L<3UxJP^`DG9qE|z|c^|>=n8q z4G|4ZfS%d<`g$6#{Ws(n#{j%ARf)}9 zn>&wdG)lcjCpdWpUkO>xt2qAMJrCeI>HVbj_ZCz5Z}&u>&t6Bp6Q_#wb?$jNc0f63 z+{vudJ3Y(k5Vp$1sL&*`_O`L+O@$1`X2+Ks2ASaJ29hq2S^5y`mfUQ!rm<<9GD`kQ zfi{5es|~FzArArv4iWwA%s5GFTHq1XR%CIm#wxv32$cHjJ-qCBKZYE2E&XoQvXzwJ zH^)CBD?rV+m1S76sjC?%%gKu*A;v3W%I4~KRQ9ZSyr7E;ZU5+M(TWj6#{N%s!i}#u z(H`DVrX0j;)tV7VxKOo1Uq*rR&Y<<*26^CJp}UZrtb3jf0K;>X=pBJU3pGG@3?%Xj z`$^9cQx}r!{_{^Hc576-JC^}6MIzy|*G_tyI5Lm4;)HBild`xW6HQ14%_b#iRd{0Z zhDx!8^fi5G$6nC#AI@%w#=n>h`sRekSz;AX3JJaOX-=rlnydNB7$@shrDWY-@<7b@ zN@qnCjgqpnTSSHrojlXXlO zR>@UoXQw)}F}%(XZ#;{kpNX5+}k%w*z?^w*i9wBf{TAW|kTJaX3Q7(JqgsV?Tw@0NZ9-+;g!reo; zP90}Zq*~a=);??3X<**rj&4xgE+tXs;L}h76H5e=G$>@@F;`tz)QpPv(!Q}iX#@x+ z^FjqH^_fNrH1!`4)B~-X**mL?iff(A%PAS#d-KpL_C9KI5zIK zKDfQnPyyk=2bt34e~%geKCh8w7=MIZUN#SFZy{8z&I(Md;F(Dvv(^hXls??mC2r+v zJx8<(->gB)fbZi3dJy7q4KHwsfdC#bq)Xm>oqWhVm*0EttzlgGzGq3h8`lx8(3Tj1 z*j2!gNnd~kWwh86x5JJvoDn;|b*L>2E44|i!><=*|FZ+UrOOo>y=9BPK8x*&pX6aP5e@1M_~ zu`wk)nH^6Rm6S(D5^e?ON)ecoE(S1i;s-cfxgLEeM~`Rze(T(F2m1Q>4{&CoJ+0nM z`5Hs2VCBxpf#`&m&4gZ>{y+r<&S1A{NekeBk(}a!l{my3EVaMAxp!=19}>eYWTNtE zGbyy;n$_uGhDeT=1CG!3AjWZjLOWD6ViFh^C4%gg@i}3;)T`A7eTo|*6m5*E8(B0^ zXLNIGulj~B-_?q*uLTYP*6|^=ZgLa30Z|u66f^ecC}zaRDb<=vUY#NyENelibK_v zlZOkx(}-(|+P+n`N_jKs1d$4(ip>MP(%ETT%wWs7rL`5b)<@`kH1A&@iO~C*L-5BM zDyx|iF(G#|-MmG3ZgLa^4Gm3sY<)e;FX{AvR2>gE(j12A26S|z@J4%S^eI}1cAT-Y z{RL8=y9(Ho%Y2nPKbLsFK8znxk4Si25~b7LF6s2}I1kMI1X6H^2@aoCD>dfzTO;gV zogXBhU#~0x&76#l0!#S|D%2rNs zx;M{VE`O_x$ieL!UEhD&=@qNIv+5PJPKSqwlJrviCyP3sNPq>Y(%bqS=}HBqIJ8w^ zWgt=_PZ;W0hgtk}0fEHYw0Bwg4H}iUp|2wh%1KaACzM!s9&el|1!qgp$Y{qIj0t2j z+9nL?gJ{2?nDK!ELJ?<{r_r*U4r7b?5PUEtiF zV)nN{!au*HZ&L4aiN?;gZW5A4{ZEhQ)jECM-pFx+5yn!TapZ_RkkZs*OCos00MpMO zigGRjLEvwS=Njl=An?&^EJ0om=UPTt8vz-WIgKO+vNDk5KR^5LB++rYu@b<Fb(RDg3O zsK*BSYPawz9<7mxO|v^MHajnw9BAa7$nGxX9fT44@^<&q6Q5`{PcI$5y)cfSFLO2c z&(rM3G;IXc!mZF!X}z7xq6<5|IFA#SD-H7YcfN?@3ShL|)zofwMsg;coGuEz_Cxe| zaJP~@W^8?sS(x4F%)liLmUF8)YX%gn==R<)=uCIXv7FihmMa*&3(s#x>D```o=Y0O+@$DL7mgF<+;Eze$*7ARjQaqmMW&Y;z(sb! zS@4D%71HUmsRKL-)BJnD+YkAev_)HLoc)GbacRFh`YSVovD~7>2%erERNMx4t}Npc zT2M&5Q+A;QK&yxjmei|MM$US$VIK zu}cX>N1FhKx>3(6iF@hI{#&1B93pvt7dDghI~2J>c8b>S7zF!GTaq`DUmklY2skr{ zb+yz8n$2c@!fku`XAwJURmVI)|8N;J&U)FG4_YIvQVl{jyu-Qb9^}Yn3W;rI%5un7 ze${7ai29Al*$U|onrD8!2%V}|b!A91PC`nURS&99vcLh;FSAKn#9*TvVe-0=LLguO zSp~1##hlXVYdAM0wocf9V0TA1^eHHRx-xT$5Jfk4k0e}K{c)`hH2hP+HBI*3@n(NY zwdt@rIC|Yn1RtFy$nXn^Kf`0e?G>RTcUI%SMpStAL4C7?H~8~IX>fOi%9=0OWy?SS z9DPEeQX%L{+jUJDii&S+p`)D>2W|(Wh6j|Dm>v*zW|2SK6TNB(+?5~1WwU5ehe9xI z?BT)}I|jDcUMC$1Hf^5_h^L=)LTnSCwhDEY4s;Nl@evj+>1GJvVGwE5y((yPrFoFmw1O=u)opHqW++>of-_Aa8Ct^!5$aT}3U>T8fkHm! zDjjh=TYY4TA?AT2wk6)#+aaam!EtYOFV|{LT1)vHaCuAmHYzc2Ue5F&M~k+%N6Ntj zGc&zBfVa+{(_%;RiNx8m(0kwIV5*p}?e+kQSoeuh+Ig!Vjv|Z0X0yS*- z54>Junkq_tPx>sgGu2w6gY%;;xV1!$!Z4szFg^Q9$=0!$oqt!Z;ip>j5)y7h}h0K*>JR5ly*aDbb|M;KnpvY+JF zW%mmC?c2Bb^!Tz7#UY)D;EGKA)z#HaFgWHPTOgViA8tOwq<@aknf}Flu55F-X>|Z4u1GsjdzmsP_VK`@?)Wf05!iy3<;Jv<9(qypNu@LaNw}o+H>wA4=&;Jrc zDo|qoD%4>C;q$qs<&v_9if|y9?5q%U-kD51CQNodl^opTpjHU0)!`-&w{P3^@EvZy zB-iI}>Cx|biA(AC_O&?pP^-uP#6@oQwqkfrr$RyOH42IW>b=ae*69(H+G%UOpYDX? zY2=R6B16Upfw``u3%@w~pK%xmv5-pcnM&-pKjn+{*Sf{vFH{&VO7Cp=ABeEXpJAWm zh~$MXSJ?`!(KFJ}NWkp_Neo&ry>62YddPH@HqY@|#Ttx`CdhA^P=JE%Dak2C%Z)a{W}&u!-eIJx))bY@ zedAHT=6$yY^s*%Cj5n9AWuT9Vt8PT^aqwDBLp$1S!x5}qB4;#j`{0HZmzeG#Yyrz% zzGy>aq@zEz&1{FgKg{yHklZD{Z)o!R)jcss!Np6hok4_%-mw$?| zt5U7b5i|c0(F0UOXgVPy+i*bwF?l z>loN??K5i8*23$c_R);JwmVoUoRK4n5 znf3C_ip-f;J~K0FZCGOhua{J(9-FPC^roHHxH=v#1Top1f%u=I`a}vt!HdfHB-MjB zOm0Zl8f+>ri?6L8<@nzC3ksMDOq-k3?x&rC<|e8g6qow40O8dn`@0@!HI>;-aMI!K zV)ma-4Bycj@(rdiF( z%7O=e{>UY9zp<>E01oJLc^9 zuu@1Z0jEaH9_8x!;i?wkD3vk4FZ@(Vj0k4xIEUQY+S=UREk+)RCg4)gCM7blwY7b3 zGzE%AX+xd|aCGT$Pv2h8-p+x4eqmw3ct0ug z2yRo^^8$kYBwQ^6feh*N^k}KFD2|6b)tVrB3Pl!{`neHO+1x&vKq652?ptV8wgwGo z_16=%l}^3j%gf1fWR39?|8tWSyMkhMfzGIA&B3gy{S^}7#msN_u!tB?>_$i7AT51b zuGcN!k5({omrwhu?+YHiw!SfymN@0Q zKI*2KD$&dyb5jnB1_ybnAg@a$qpmM0T7z%9EHP0r{^z@MFR#j?j4*=rZVWp#o^}2{IzUwoVe@41@Hr?P=a7Qz?}XMZ+ZZ zG0jN<<+%!&fSJ4jR4pNTTp#$06MJL6y*^bxGKQkQyu4fhN=qOejpct?0J`btDG?Mb zv@sx-e6Uze{N7d801%CKV=L9NHr5G*H21rW*wIu-H z(RFrzy#l{0X5$geA6TMje*tW|`?JU~I%xI1B}^SS+TaE_*Xt^7BC}1*Av2<^d;n&d`!(c{SJtQY)vd_E0}*y8=IAhw#3H0`C_qj0h^7CaSG486YZ;2R0=>~=Fg zsU+4U$L~gTh5a1X&2iRSCuUnlw1tN(;Edd9`!A?)NUm^kQ{3)wj{7FvO<3$WhG1Ry zrPJaEQ`S;F0h{Fx6?*lo73@OgJ??lWdygZNZ&+Yx-^JhSa5DlGoUX2QXzbrQ?N}Hk zUC~Se>HgT`pYuFw4wpYQFs3mLP$a35a~h1!5B%J;_C zuIEdsd71ut*va9T8U@~XBE+R}=fZBbVfg6D9(vwU;IYgf6QMfOL4(G666(LcBR_MPYZG&=ee zDg+=Nhf`yKy&f)&cgL|%%p|N2XNn~^CGLg5CNv=W0Ehc?@Q9`*tYVxy@cQHEF7h1` zOTbnXCrMo8FHqDB9-; z0&SF3K_K@j0p36D<`z;^x1|Wm(U@;+3ke0DzP%J?W)a4`9p@O#+p;-pcQGdDE8q;xDM2jppRS zpQ-}dyNzWpjzXarDEt%P)O!20yeQEO(Jkz5kJWeWu|X;=^VPb<=u!k|X!`b`tdx{r z!uX<5*mrX&K-JO>^JokDN9}lc*R64E+pC32O%j88dJw&Vx>LZ;AM9*qp!*lAOFl;r z8|4Z^jyIq8FvSLQ%!N7)g%D1BLz8N2a)V!}Fyuil_;Qr4w$m8S1T7_>!3NZvJ1JU? z&u#E%d6neq^8a=BlwnbA(F%fe4M>ABq;x2q(jZ+D5`uI~H%Nmxz$K&+R5~0|KpN>3 zknZjdiMPkA@4LU>&&PLuFlXlMvwE+!_gZUTRF8k>9Pn7uu$}&b=3km-v`Z6k@UAhm zsK}P}e4XAv`C0P|JmGidN}G?G>%I5X?nk9PXf@EMTExoNYLLS|ns(1@F3WD-DZULQ>kdXR~V~9@t>DIe(uP&$~k<%ppe4Bd*d9jK;&wz#i0omG@|6g zfZNWhntGOHu3(s1&_OSoSn}NUZwh63K^#2=fsNlRI?XovH$wWI!3sIKfnWbs*ZNT9+ir8UYGtJ- znqcz`f;m{S)}T-n<8A!>{n^TU_?pvP>xk3*zWjZa>5ry2&EPn5E-AOGfhafT4xx zqs;_!to5n-D=R8~zh3%mdL5eH+0`ZSi&shO6U-~SGWzD4S)Ma$ync$!6h8?TPN?sv z9!An*eTZ+uv`;gK6SnW{>>QO4PQ2%o6I2A1q3DWnlb&~8R_W}FlLAtn$^5Jp|=IGf>ikyo65ju&EI0F1k zFLf2dlK!EWl*%(Jd*0~R(5a?6DcS$gP7KrK_U>GhjiHoy za}Q_mo3FR4k|(wK2JPq>onmP85GW|4Ph^W#Obx0%P9Jxb3!S}18vc6Sj(Vh{=-;}; z(GUfedh+z^?m^v)S-%8_gAkpc-2i&2Y34%nu6zOCkkndxK&-7(1~~*n>gE>_vd}l| zJ=m3Gsh-`K2YtzC&lnF-j_RqHBIxkFfO!KW- zCpT_=lV;(USMc-KJ&khD6x0eSoD{{Te^$~cJQNa=CEMHBjVTLt9sDf27F32Qzp%QYduqdaU6htM z8PxQV@MwN}4n5HB?K^mNNIExIrmBJtc-qN}e^HzEIqE|dh{c+MT7=W#o|iV>w1Cd7 zc2*2)B`8SXg{unFqA}k2pk_kx^+9{wedem?>MLX^)k%!X_Sa;UH$8YeHUHE&zb4>^ zUz-Hae!Z_;Vz>&nL|_3gAZ4R>Q_a$U*14Ao8guB9Ba4a5B|+rYJC}fo&%{Wd5zK&JmB>Xtu5PmDuUYcGs`BFDwV!z- z=Jz$xe;6jHTwf}A@3_t4majO=z;)ne$#EbYY5nIn0WUmXqK)#Y-k0(8Xk4EhBXW!4 z$DM8IRMn74TE)U-cV_podN}L`WRU5yjF3Z6;ki!<0~toQq$(mUG=>Z0d%C+@Dy&8j z#6l1t5*0XzTW z_Z?!LK=V7#7x$%J_v(z1w#boEq|`^i>igQKNQ`{46~YzE@2jW`Kp$uTM=059X(X^i0+BFAj`}M z+)1CTRz;Oj?|0yKGT(CNli}2#WA3+9L5VZHkx{sE3qJ1Q(E5$00|HG%Vq#pWE=m#6 z73VSw@z5z~Z35HqRSxIYsL)FJO)l4h|{M%*U}XN$frP`El?aOV$u@4 z#m-f2O#C^P2vxtvF`JnITATJ!KDwGMg-9lrVJj(!n;ygb!k{}E%V;901vnJPFLI1| z4`NQycLQmKl1xS?i_dLF*sm)18$G(m6}4Y(99BNRFumdEnFWQN-g8{SSMxiYd+Hkw z%T(8z67i|`#Daq1{_pwWCv_T}`kA$~eaT6wZ%3xSe^>~o{iV)E@Ila*u4RAm7Sf zwqvfm6>-~6W+sKAs^wZnWOtpbJhe~4_708N(G|0!dKo}j7*Xm1vBcHTEy$0N6DaPZ&tG3 zelwbMGFU0`OH$*c_(gGU)R;}1p*ec&wkuksU^w8hKycCpQl00|#CVsI==YNN7c1Up zX6X#zS`HNj7O0*dx$pg#dZgu6bep((IDCy;OY0T=5<~EnL)|o75vvQP zN^lSmb^Z^-!hPtc_Eg|^|CL(9CG5rtQ9m~eXP}C;oeYRCMC{yR6@jH&q1f9!h=xatNo1N z%1#0UREJxsHAVR$hoVe-=dzKOc4G7d+@i3EYLP0j)i=a6 zS(-?(M%vt*0XUH#Uw*~`zH<~?Z92V~ME#IDw7wpArB@0?aI@R>sp?XNoTSv$LgBUq zf?h}~tJ45zdXy76l6Y?2mG5(VeMVwTnC%COv`vrKhc+#!si~!5+=`(a?xd*jjb4R@ zr-z)47tJ~an6p`aGv&s+ig|h`laKUxlwT!eGbI-XP3$tt*H++=;59@HPF1z`olWMu z)*0~wj^fHSJ;!^!AlwTzpl^8ZVbnJS&I0=MGFA~}XOS^3^K{{`$<{1C%=E~`vgm?6 z2|xF_xmZgO2qiTqs1tJA4)AcGr~3dXM}YFuPoRWTH*;2*c~A-Bd%W0eH7 z?YQ>J;c-pouB!Z{kkTmPeQFH)k`x_VKz#sD0|nIGG0kNs?T$)L4r`4Fyj|F>Pc9+f zPD0GDX%Y zZF{)dM*i4Ry~6g>+rGtPaynQ#by!>8{TfIkVaAiMw0R>oj&4UISszzm|P%RhaOj! z)2A6mp&TAMJJGudL2~>gyoL$R`Mgn(*fN8oWV49-J}S`}>!4IzH8D(3=vCVnck977 zq5?E;n5VLxY#HP@KQS#l9yG zDU1j^Y=oRPcZuA|7_H0yKugqx>t*UVk@7I>6(0P~C8&PT>gJI*>iC3*j3;soD`023 zNS#n%$P#ESk~;e6@3hdwm^V}g4(Tgw9{J30Hqe4XXD-0A!~GIEMw5HPwtw*Pc@?K~ zA#P@Bd_=v$MYp)2GK2GLI4u5sKw7j1h+ZEG@gQ~fNKdX@ch)N zi~HYt;f9{pEeO^K2ngg2ncrFDU~Fz}r6M^iZFUzcZ8jZf)LoQ0_wdekdh?akNzv#T znLmfHNR+mKAfYSuZS}nORqZQAW!Vhb$x#=OYx6|v+!t4vVnVvYGX~82oXgf}_|yqE+zH_h@ER+ zZ|~FM(>E|j0gUEAq?)olJbob|60XCpjlG4|kh#Ll>nclL`wf3nf@Wd2A9kdkHex59 zZf>~BX_0McnQSu0A&Q$8BN;yEr6PQ4*R>;ALqC1z^Dd8~RD^?nh2jPIYZ;}*M0c?4 z`G=mQx)%)WQizhy`8`(DFMC$Tz-IE`Wh+V6Y}pQjL3>FD{@`IYi|Mw-10a*&8bP4d zp?K0SCma)e?Lc$!gZq5E0msiZw57Gw6IF)!79u~FKy<<~92b+vKa!;kpVxw0cD8&> zA7~cf!3i`m?S7z|BSKg4RJdc9_vV<)ep9=GTjNbhwL}Y(lxpT&9XUHYJLqMe%AwqG z6dzS$B-|wu_Ey6*GRbpqvc0pf51bFmchaDnbIJd8<2zKUZOflJAO(XEsYnZ``Ejhn>F7X_r;fx{F}Qb z8q{A;Z7#Mfp5`B%y*w?vW#N3a*KE4Zx$k#!)@3UDa(8Q>K#T;pi%Fidux7dJDlE#& z)q0_~f9^--UHwz7SzDtA4%_B#w?k3EPfz>y_?WukuWF8B6%=%iiA zyW1z$cW_*+e=NC4r3vUrO-JhT%>E+c5j!`~Js;>U9sKCal7n&-YF9Vp-G(xH)={!k zzOi=2MeVuj>htZ~;>1D)oQ%XiylXPwWYWPa>^Cg42` zmLD(Y0ooyo&PgZt;FlE3PShP#IO?f};h9C-o`lSmq1i_n8d`h2FC+b}6FGvzOK!9r z9B3J%lQcXh*l9C`&9r$uY12Ln)Pv-^qmwPPWlAAMg4L_U=URJr=TaJ&T^foxm|3IG ziY|zE^w)HJY^V09DfyitN-diU=c`v`I94Gdz0S`af0Q9@t_jrE@)P^rbMUW62U!XE znZ8#YuaiOl^OH4@q(v&UqQz=-G485(TDbW}qQQH<%PD8DL8JY&d5n^lcRKK^Bwy28 z&kDPS`)QddtWN`|&7+K0vglM9z)FeGSBXPsxZ{-~$76~wl1YV_VpJg=B73S;Dw&6z z=AuV=k@|_}udEK;FFZlzM-eJseXWqTAJ3ZLz(Ka@!nxJx+`0D@JLph|u0B#ij7{r+ zEb8q}PW?^C2-W2!ZUgF>pfACouviW{1qQ;}AdKe<2I#_*k^MN<;UHJ>k3BXI(mC#=}t#EOjfe*_wR#{@QB#`a~^TRS}b( zd1bw%|3@~%r{-<1Ule)`x}qvAr*Nq>1WEV!=_Hlv9>y}8eK<)>Pl#Rz3A?j)`jz$t zFMfio8@KYe1}F%`NtFVECM-2CH%ZGMW4j7{L*v_1eL+T@3CnZlws`fb@EO@a;{gFk z#o@Z$A>lMRPM022CunAM>MQ+rOIGs9A}hC-oV$7byHQ7Vk4}CqFY7H)!&mno!mWfh zzo521toZBDEN8X7Ibpz2Ga;$Hhd`Ax0|@Owk;^C#BM%wDTu4?|6VBH!`q2%(+nPns z;RKa7_m+H~u})7L5WpR9kgp20^*Hy0Tqvo~-fDX$r>CU>I2^GzMhF9u{A$wv2}1#xjqI3k=!UB5Tu*= z%lx0w{2_nn&72kb&SkmUb>*h;{?VgSXMXBGCG|xGf*3i zh>bG;>5TWCiZN1-Bi~&tMU>bh#J3MT^VBP;g9O*BRdL)CQRK2-qO6;gkn$NyBPSs2 zIhmK>*VEzCM~?ld$P}wd$>t**fj9H11#TlnRZA*jZH z`H_vLim6Rxdo;X7Pn#3NqJC1BqgQ9cHOtE#G7|T%VgEjRA4RLY1f z8B;3Tl}jW0<8K@LHaAQ@n`=6vW^gK`Z;)y#@BU|qd8X>2c(X0mCT|9h+uG|+rHH3* zi8btOF+TGpHodnqRV(g$oi}+dipZzOg3M>LV706af~V-RB!C8yPZQZB|KsS0Tauyw zc?vQ)W}F)$@CD&TkEG`bS>gy6x(@}(S0LRH>8-~B(jeDV4rXPcF+UPrJLfj_w!Mr% zFA?IFu8Gz_dCS)uT_j_)T$k>_$G52c)Pa+a@iIIxZ!G+o7Qo0%`>m%e#hD+wb)AEit^8c{7@iPveT}# zW0dd}H8Y}v8dGzsC%GPmUiOT zciclcSD3yxC_s-G?I#S#4$gv&?`8!S1p(Z%KGLpa=w;+s-)Mqwgc^(EMkghTYg(Xn z@q0Xdom8}du#)2{(~2a7zB0=O1l2lUQ7&5N<9b+)KmK8PfsMR5vw?3@^#iJ5>OQ|X zG_hYaba&LdHw2!V`SH_Y4KbZK9vpSS*%D!J1|I?}aO@+AmAZTSTH5;vVexKAqRo6w z9A+@$z8^(O`Q^6{xxDC|ol8H+ysHJo%h%PnA_Ws|6~=y`($p`>t?hUKz3*;eyLN)p z1?l2heRLs7H4W!B&3PCu{HMVwXBp9h2(gnVX(ENRd95t_1*1LGiS1AR#alAS7Clo# zh!sE)Hgnm{Cd{&ey?9z5^kZF&0AG;uCcAZEdsCxUVrO}CI?aVn<|cYMS!_YCk_LH7 z>5Z%^nvgD4k_0lHu?_Mu=ad&3eG> zu67f>D{8t7{lI^){F@smJWwipAof}mDY3j^P=p(bxXMrgIQpv9BLeZXiSvgG@8-7` z@8V_N+bA`82`GR&ZSi;$lRWnk~O zgv?}5UwzDw)I0Xdl_{3lyg1p%+{FCM%)Y;GgM`<(y1(xb1Drp*uZw9#EOIJ>DYpqe z*q(Q|<6@dwav#)hVF$bK_&J{DnQKr8)b3z_RkU9sS*QrJW2^+IFqYd_8;Rd3#~)qj zBoyoCB!qCjMEoB3NZzC2U<3uuuJfx@DYq;4F)hySXyz}P5eL-*H?%)o)_hYJ;kNNS zfxNd`Q*EDk;Tb1VQ29pI(ZWM>5Bc3ZyW^3aaiXUHIzo+--vGuO($m!L+g{7O6J2a z8nLNKsE;Z>d^`LCwrygzqn|IEwb2TRP8jPeEaR3KSFi!{em%ml`?T`D-s)+iB7JsYe$Ub*YqlN$ldUmvR9OS80I0dh$CHK{!Kzrah|o z`CIc5<{4q37Z4VDI`MTgg4}|@leIN3{|C0~F3wciiwE<0G0hM5U{iw%lG=H>%2OrGhWDlLu zA)K)QoQS5M>AwL1Dd6$}G!j+01GQ8M;ESAH;c-w50^XaY2$XZndCIb)A9#{mK6kA| z{~BM!3toYn`iUH}jDOV+VU`4dtfxCX>;pH;L=n@U=<9yD-_su*nEn(m(^667#FJ1w z))kVbWO9Dfz6J1{B|3%#;LOjAamlprT(M&zaRV0FXzz_#-70Ky$u~eG0+D5+>`G&Z6g2z-BQNezXM1?kab#g zgp+##h8|-CEI4`pTIRRn(<98$@Y?jBcN#-M^!6S-dPcqp8;sR=Csq)$92{)aw;1VD<0hs=jG5l;e{!Zha*U&aTJ0$HOr|32wZ0^F(q1j=}S-xh-o zW)9g@X^ovwASW}n^d!Io0OSO8B84oY*Y!TJeha=Ba|=HG^N2VZaLZPABoK6Iw)I_2 zi~WNaLIcEQ!RW3Px{nk7bF=9Z+$^d@n3EMK4AW4 zFwpG3Kq52;qz>?`MgM{Dx5)li)BpGW|B0@Dm;(s>ukRc6>5pUkTNs~b0*d|>;lCjL d|0Cx9ZQZZ8)6;YJ>hFL*d1+;-lBdQ&{{v|FPRsxR delta 42769 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 Date: Tue, 9 Jul 2024 13:56:52 -0400 Subject: [PATCH 08/15] reserved --- docs/guides/self-hosting/personalized-frontend.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/self-hosting/personalized-frontend.md b/docs/guides/self-hosting/personalized-frontend.md index 1d9fc343b..8bada92cf 100644 --- a/docs/guides/self-hosting/personalized-frontend.md +++ b/docs/guides/self-hosting/personalized-frontend.md @@ -22,7 +22,7 @@ Our deployment will end up looking like this: ![personalized-frontend-1](../../images/personalized-frontend-1.png) -We're using `zrok share private` to create the `A`, `B`, and `C` shares. These shares could be located together in a single environment on a single host, or can be located at completely different spots on the planet on completely different hosts. You could want to use significantly more shares than 3, or less. The secure sharing fabric allows seamless secure connectivity for these shared resources. +We're using `zrok reserve` to create the `A`, `B`, and `C` shares as reserved shares (using the `--unique-name` option to give them specific names). These shares could be located together in a single environment on a single host, or can be located at completely different spots on the planet on completely different hosts. You could want to use significantly more shares than 3, or less. The secure sharing fabric allows seamless secure connectivity for these shared resources. Because we're using `private` zrok shares, they'll need to be accessed using a corresponding `zrok access` private command. The `zrok access private` command binds a "network listener" where the share can be accessed on an address and port on the host where the command is executed. You can use `zrok access private` to bind a network listener for a share in as many places as you want (up to the limit configuration of the service). From 3989dae50ecb329ac43e1436b08de3e12be37056 Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Tue, 9 Jul 2024 14:01:22 -0400 Subject: [PATCH 09/15] lint --- docs/guides/self-hosting/personalized-frontend.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/self-hosting/personalized-frontend.md b/docs/guides/self-hosting/personalized-frontend.md index 8bada92cf..8ce1e618d 100644 --- a/docs/guides/self-hosting/personalized-frontend.md +++ b/docs/guides/self-hosting/personalized-frontend.md @@ -22,7 +22,7 @@ Our deployment will end up looking like this: ![personalized-frontend-1](../../images/personalized-frontend-1.png) -We're using `zrok reserve` to create the `A`, `B`, and `C` shares as reserved shares (using the `--unique-name` option to give them specific names). These shares could be located together in a single environment on a single host, or can be located at completely different spots on the planet on completely different hosts. You could want to use significantly more shares than 3, or less. The secure sharing fabric allows seamless secure connectivity for these shared resources. +We're using `zrok reserve` to create the `A`, `B`, and `C` shares as reserved shares (using the `--unique-name` option to give them specific names). These shares could be located together in a single environment on a single host, or can be located at completely different spots on the planet on completely different hosts. You could want to use significantly more shares than 3, or less. The secure sharing fabric allows seamless secure connectivity for these shared resources. This implementation will scale up or down as needed. Because we're using `private` zrok shares, they'll need to be accessed using a corresponding `zrok access` private command. The `zrok access private` command binds a "network listener" where the share can be accessed on an address and port on the host where the command is executed. You can use `zrok access private` to bind a network listener for a share in as many places as you want (up to the limit configuration of the service). From 01e7c9fa56a421bc8dff3e99cc48a096344658e3 Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Tue, 9 Jul 2024 14:04:55 -0400 Subject: [PATCH 10/15] lint --- docs/guides/self-hosting/personalized-frontend.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/guides/self-hosting/personalized-frontend.md b/docs/guides/self-hosting/personalized-frontend.md index 8ce1e618d..50aa94483 100644 --- a/docs/guides/self-hosting/personalized-frontend.md +++ b/docs/guides/self-hosting/personalized-frontend.md @@ -22,12 +22,12 @@ Our deployment will end up looking like this: ![personalized-frontend-1](../../images/personalized-frontend-1.png) -We're using `zrok reserve` to create the `A`, `B`, and `C` shares as reserved shares (using the `--unique-name` option to give them specific names). These shares could be located together in a single environment on a single host, or can be located at completely different spots on the planet on completely different hosts. You could want to use significantly more shares than 3, or less. The secure sharing fabric allows seamless secure connectivity for these shared resources. This implementation will scale up or down as needed. +We're using `zrok reserve` to create the `A`, `B`, and `C` shares as reserved shares (using the `--unique-name` option to give them specific names). These shares could be located together in a single environment on a single host, or can be located at completely different spots on the planet on completely different hosts. You could want to use significantly more shares than 3, or less. The secure sharing fabric allows seamless secure connectivity for these shared resources. This implementation will scale up or down as needed (use multiple hosts behind a load balancer for really big workloads). Because we're using `private` zrok shares, they'll need to be accessed using a corresponding `zrok access` private command. The `zrok access private` command binds a "network listener" where the share can be accessed on an address and port on the host where the command is executed. You can use `zrok access private` to bind a network listener for a share in as many places as you want (up to the limit configuration of the service). :::note -When you use `zrok share public`, you are allowing your shared resources to be accessed using the shared, public frontend provided by the service instance (zrok.io). `zrok share private` creates the same kind of share, but does not provision the shared public frontend, and you'll need to use `zrok access private` in order to _bind_ that share to a network address where it can be accessed. +When you use `zrok share public`, you are allowing your shared resources to be accessed using the shared, public frontend provided by the service instance (zrok.io). `zrok share private` (or `zrok reserve`/`zrok share reserved`) creates the same kind of share, but does not provision the shared public frontend, and you'll need to use `zrok access private` in order to _bind_ that share to a network address where it can be accessed. ::: Imagine that we own the domain `example.com`. In our example, we want to expose our HTTPS shares `A` and `B` as `a.example.com` and `b.example.com`. And maybe our `C` share represents a gaming server that we want to expose as `gaming.example.com:25565`. From 41841d67c0539cb129abf9290ac39ff227a46e1d Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Tue, 9 Jul 2024 14:09:02 -0400 Subject: [PATCH 11/15] lint --- docs/guides/self-hosting/personalized-frontend.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/guides/self-hosting/personalized-frontend.md b/docs/guides/self-hosting/personalized-frontend.md index 50aa94483..ccd9f4fb2 100644 --- a/docs/guides/self-hosting/personalized-frontend.md +++ b/docs/guides/self-hosting/personalized-frontend.md @@ -34,7 +34,7 @@ Imagine that we own the domain `example.com`. In our example, we want to expose We can accomplish this easily with cheap VPS instance. You could also do it with containers through a container hosting service. The VPS will need an IP address exposed to the internet. You'll also need to be able to create DNS entries for the `example.com` domain. -To accomplish this, we're going to run 3 separate `zrok access private` commands on our VPS. One command each for shares `A`, `B`, and `C`. The `zrok access private` command works like this: +To accomplish this, we're going to run 3 separate `zrok access private` commands on our VPS (see the ![frontdoor](../../frontdoor/) guide for details on an approach for setting this up). One command each for shares `A`, `B`, and `C`. The `zrok access private` command works like this: ``` $ zrok access private @@ -64,6 +64,8 @@ Exposing our TCP port for `gaming.example.com` is simply a matter of running a t Once you've created the appropriate DNS entries for `a.example.com`, `b.example.com`, and `gaming.example.com` and worked through the TLS configuration (letsencrypt is your friend here), you'll have a fully functional personalized frontend for your zrok shares that you control. +Your protected resources remain disconnected from the internet and are only reachable through your personalized endpoint. + ## Privacy When you use a public frontend (with a simple `zrok share public`) at a hosted zrok instance (like zrok.io), the operators of that service have some amount of visibility into what traffic you're sending to your shares. The load balancers in front of the public frontend maintain logs describing all of the URLs that were accessed, as well as other information (headers, etc.) that contain information about the resource you're sharing. From a1bc235f7f34092786b2cb887415f62f6da2e84d Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Tue, 9 Jul 2024 14:12:23 -0400 Subject: [PATCH 12/15] link --- docs/guides/self-hosting/personalized-frontend.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/self-hosting/personalized-frontend.md b/docs/guides/self-hosting/personalized-frontend.md index ccd9f4fb2..b9e8355d3 100644 --- a/docs/guides/self-hosting/personalized-frontend.md +++ b/docs/guides/self-hosting/personalized-frontend.md @@ -34,7 +34,7 @@ Imagine that we own the domain `example.com`. In our example, we want to expose We can accomplish this easily with cheap VPS instance. You could also do it with containers through a container hosting service. The VPS will need an IP address exposed to the internet. You'll also need to be able to create DNS entries for the `example.com` domain. -To accomplish this, we're going to run 3 separate `zrok access private` commands on our VPS (see the ![frontdoor](../../frontdoor/) guide for details on an approach for setting this up). One command each for shares `A`, `B`, and `C`. The `zrok access private` command works like this: +To accomplish this, we're going to run 3 separate `zrok access private` commands on our VPS (see the ![frontdoor](../frontdoor/) guide for details on an approach for setting this up). One command each for shares `A`, `B`, and `C`. The `zrok access private` command works like this: ``` $ zrok access private From 15ba1c4ec5e9c23b03097a73b503a3dae994756b Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Tue, 9 Jul 2024 14:13:34 -0400 Subject: [PATCH 13/15] link --- docs/guides/self-hosting/personalized-frontend.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/self-hosting/personalized-frontend.md b/docs/guides/self-hosting/personalized-frontend.md index b9e8355d3..a92e6ae57 100644 --- a/docs/guides/self-hosting/personalized-frontend.md +++ b/docs/guides/self-hosting/personalized-frontend.md @@ -34,7 +34,7 @@ Imagine that we own the domain `example.com`. In our example, we want to expose We can accomplish this easily with cheap VPS instance. You could also do it with containers through a container hosting service. The VPS will need an IP address exposed to the internet. You'll also need to be able to create DNS entries for the `example.com` domain. -To accomplish this, we're going to run 3 separate `zrok access private` commands on our VPS (see the ![frontdoor](../frontdoor/) guide for details on an approach for setting this up). One command each for shares `A`, `B`, and `C`. The `zrok access private` command works like this: +To accomplish this, we're going to run 3 separate `zrok access private` commands on our VPS (see the [frontdoor](../frontdoor/) guide for details on an approach for setting this up). One command each for shares `A`, `B`, and `C`. The `zrok access private` command works like this: ``` $ zrok access private From 93cdbe9aa93e2dfbbd639d89385a853d07ec33f9 Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Tue, 9 Jul 2024 14:14:45 -0400 Subject: [PATCH 14/15] link, again --- docs/guides/self-hosting/personalized-frontend.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/self-hosting/personalized-frontend.md b/docs/guides/self-hosting/personalized-frontend.md index a92e6ae57..548faa128 100644 --- a/docs/guides/self-hosting/personalized-frontend.md +++ b/docs/guides/self-hosting/personalized-frontend.md @@ -34,7 +34,7 @@ Imagine that we own the domain `example.com`. In our example, we want to expose We can accomplish this easily with cheap VPS instance. You could also do it with containers through a container hosting service. The VPS will need an IP address exposed to the internet. You'll also need to be able to create DNS entries for the `example.com` domain. -To accomplish this, we're going to run 3 separate `zrok access private` commands on our VPS (see the [frontdoor](../frontdoor/) guide for details on an approach for setting this up). One command each for shares `A`, `B`, and `C`. The `zrok access private` command works like this: +To accomplish this, we're going to run 3 separate `zrok access private` commands on our VPS (see the [frontdoor](../../frontdoor/) guide for details on an approach for setting this up). One command each for shares `A`, `B`, and `C`. The `zrok access private` command works like this: ``` $ zrok access private From 27b605783f53dc5a3cbc62f59b832c0e59d77337 Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Wed, 10 Jul 2024 12:49:27 -0400 Subject: [PATCH 15/15] zrok-private-access --- docs/guides/self-hosting/personalized-frontend.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/self-hosting/personalized-frontend.md b/docs/guides/self-hosting/personalized-frontend.md index 548faa128..af836ec5d 100644 --- a/docs/guides/self-hosting/personalized-frontend.md +++ b/docs/guides/self-hosting/personalized-frontend.md @@ -34,7 +34,7 @@ Imagine that we own the domain `example.com`. In our example, we want to expose We can accomplish this easily with cheap VPS instance. You could also do it with containers through a container hosting service. The VPS will need an IP address exposed to the internet. You'll also need to be able to create DNS entries for the `example.com` domain. -To accomplish this, we're going to run 3 separate `zrok access private` commands on our VPS (see the [frontdoor](../../frontdoor/) guide for details on an approach for setting this up). One command each for shares `A`, `B`, and `C`. The `zrok access private` command works like this: +To accomplish this, we're going to run 3 separate `zrok access private` commands on our VPS (see the [frontdoor guide](../../frontdoor/), or [zrok-private-access Docker Compose guide](../../docker-share/docker_private_share_guide/#access-the-private-share) for details on an approach for setting this up). One command each for shares `A`, `B`, and `C`. The `zrok access private` command works like this: ``` $ zrok access private