From 281cb8c7eeaeccb4cf6426071908c01832c37431 Mon Sep 17 00:00:00 2001 From: sonicaj Date: Wed, 18 Oct 2023 09:28:36 +0000 Subject: [PATCH] Publish new changes in catalog --- community/distribution/1.0.0/Chart.lock | 6 + community/distribution/1.0.0/Chart.yaml | 27 ++ community/distribution/1.0.0/README.md | 8 + community/distribution/1.0.0/app-readme.md | 8 + .../1.0.0/charts/common-1.1.1.tgz | Bin 0 -> 61740 bytes .../distribution/1.0.0/ci/basic-values.yaml | 10 + .../distribution/1.0.0/ci/extra-values.yaml | 18 ++ .../distribution/1.0.0/ci/hostNet-values.yaml | 7 + .../distribution/1.0.0/ci/https-values.yaml | 93 ++++++ community/distribution/1.0.0/ix_values.yaml | 29 ++ community/distribution/1.0.0/metadata.yaml | 8 + community/distribution/1.0.0/questions.yaml | 267 ++++++++++++++++++ .../distribution/1.0.0/templates/NOTES.txt | 1 + .../1.0.0/templates/_configuration.tpl | 41 +++ .../1.0.0/templates/_distribution.tpl | 55 ++++ .../1.0.0/templates/_persistence.tpl | 77 +++++ .../distribution/1.0.0/templates/_service.tpl | 15 + .../distribution/1.0.0/templates/common.yaml | 9 + community/distribution/item.yaml | 7 + 19 files changed, 686 insertions(+) create mode 100644 community/distribution/1.0.0/Chart.lock create mode 100644 community/distribution/1.0.0/Chart.yaml create mode 100644 community/distribution/1.0.0/README.md create mode 100644 community/distribution/1.0.0/app-readme.md create mode 100644 community/distribution/1.0.0/charts/common-1.1.1.tgz create mode 100644 community/distribution/1.0.0/ci/basic-values.yaml create mode 100644 community/distribution/1.0.0/ci/extra-values.yaml create mode 100644 community/distribution/1.0.0/ci/hostNet-values.yaml create mode 100644 community/distribution/1.0.0/ci/https-values.yaml create mode 100644 community/distribution/1.0.0/ix_values.yaml create mode 100644 community/distribution/1.0.0/metadata.yaml create mode 100644 community/distribution/1.0.0/questions.yaml create mode 100644 community/distribution/1.0.0/templates/NOTES.txt create mode 100644 community/distribution/1.0.0/templates/_configuration.tpl create mode 100644 community/distribution/1.0.0/templates/_distribution.tpl create mode 100644 community/distribution/1.0.0/templates/_persistence.tpl create mode 100644 community/distribution/1.0.0/templates/_service.tpl create mode 100644 community/distribution/1.0.0/templates/common.yaml create mode 100644 community/distribution/item.yaml diff --git a/community/distribution/1.0.0/Chart.lock b/community/distribution/1.0.0/Chart.lock new file mode 100644 index 0000000000..cba621714b --- /dev/null +++ b/community/distribution/1.0.0/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: file://../../../common + version: 1.1.1 +digest: sha256:a7dbe3e4d42dbcd4325776e5e01a1d630c7f185f79e7ebf22b1b9cc80f56eed7 +generated: "2023-10-13T16:50:15.984718282+03:00" diff --git a/community/distribution/1.0.0/Chart.yaml b/community/distribution/1.0.0/Chart.yaml new file mode 100644 index 0000000000..a1fa3ff9f0 --- /dev/null +++ b/community/distribution/1.0.0/Chart.yaml @@ -0,0 +1,27 @@ +name: distribution +description: Distribution is a toolkit to pack, ship, store, and deliver container content +annotations: + title: Distribution +type: application +version: 1.0.0 +apiVersion: v2 +appVersion: 2.8.3 +kubeVersion: '>=1.16.0-0' +maintainers: + - name: truenas + url: https://www.truenas.com/ + email: dev@ixsystems.com +dependencies: + - name: common + repository: file://../../../common + version: 1.1.1 +home: https://github.com/distribution/distribution +icon: https://media.sys.truenas.net/apps/distribution/icons/icon.svg +sources: + - https://hub.docker.com/_/registry + - https://distribution.github.io/distribution/ + - https://github.com/truenas/charts/tree/master/library/ix-dev/community/distribution + - https://github.com/distribution/distribution +keywords: + - container + - registry diff --git a/community/distribution/1.0.0/README.md b/community/distribution/1.0.0/README.md new file mode 100644 index 0000000000..036e752d9d --- /dev/null +++ b/community/distribution/1.0.0/README.md @@ -0,0 +1,8 @@ +# Distribution + +[Distribution](https://github.com/distribution/distribution) is a toolkit to pack, ship, store, and deliver container content + +> When application is installed, a container will be launched with **root** privileges. +> This is required in order to apply the correct permissions to the `Distribution` directories. +> Afterward, the `Distribution` container will run as a **non**-root user (Default: `568`). +> All mounted storage(s) will be `chown`ed only if the parent directory does not match the configured user. diff --git a/community/distribution/1.0.0/app-readme.md b/community/distribution/1.0.0/app-readme.md new file mode 100644 index 0000000000..036e752d9d --- /dev/null +++ b/community/distribution/1.0.0/app-readme.md @@ -0,0 +1,8 @@ +# Distribution + +[Distribution](https://github.com/distribution/distribution) is a toolkit to pack, ship, store, and deliver container content + +> When application is installed, a container will be launched with **root** privileges. +> This is required in order to apply the correct permissions to the `Distribution` directories. +> Afterward, the `Distribution` container will run as a **non**-root user (Default: `568`). +> All mounted storage(s) will be `chown`ed only if the parent directory does not match the configured user. diff --git a/community/distribution/1.0.0/charts/common-1.1.1.tgz b/community/distribution/1.0.0/charts/common-1.1.1.tgz new file mode 100644 index 0000000000000000000000000000000000000000..6816ec11f4df266b12c1023dce0f095c6174c513 GIT binary patch literal 61740 zcmV*4Ky|+#iwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0POvFciT9!Fb>b({uFpP&K;{COP2Q;Kb_py?W8lglf}n&y5D;< zxj8TiNf=WELqKvoiNE{rU?Tw#T(nqOT0Eya76}vzg{2l0szNdzlVs;?1T)sVgX8#5 z%YXX)e*fs;K>XY9_uYT{2mSt^b`K7B_xJYqj*oW#)Zg7ZI6VFn=sy51rDsAJ%>LA0 zxGlGH-^l}$gfPf3N$AN201UGjoq#hjE5J*9ox$u5h}p3LQ~VpsC??4XnC@-BG%bGa zZbXQN8BUq_eF|b#HRM&nfMfvw|G}HV0EZaH;0!Vtli|h~;)Fq*pp2eubO9Pe9G`#) zP5*!R6TPDhjcG3=;|%~3I7TOcWfPP@x&go>i%-Cav6PQR{yS;|ZbJ$L;d?;oz$|0& z2u8nWn4vdG$ZJqWGB`wMF{Jba1VN599wRbgs$PtzC_z;H0stqNVHiI}F}%A(AxR>7 z0(SfAYl<>VqVjttVdftW)%yX&@gzf6qYTjziKF5RoroS7Uv|Zp48aJ08wl-*FMN%$ zNjeughZWfDRbq40uc1%H{KR88L>#{irG#QevO6{23=Z|kPvZET#5lY=0WSux2|Lda zMG4#3xQ2A}!UutW$YC7x4tjh0^^j6R*)T)Y3r&B_A?_ab_Uhq{VTNIJ?FFa470~*< zqu%a8J-`e_*pJ;cW(geQ9Z@0&dfe;xc6aMx`iF#~aFStmcSaJ1J~7^0NR+rBXVUrG z7f(;X;n82kueYyGFaL1@f_`7n1b}RkoYL1Mxgdl|*`av-mZGevDqcO$$Rsu1AsD?$ z;yYgZR~#cLj~H-Z9FyDg3{P>4hUgg$VGO1CqxT!WS*XvE`Ie$EB;)ivBLf^Gy(*-f zaxqExOjrA)_!PnvUgH=ujPex?qv!;@d#`>)8OawH-^NZ~zT^Zak$gFD`=(x;jbJiF zdQ9F3LcPLt3|Tmmh)&WpMq`vP7>gP-ZkBdcO?Q$q6{< z_xoel8ffzv3ld|MuePi_;Hhr{|Y?|Aui~g-uGLH)$^D zq6A*Y=u$G4mpHkh#Q=>6Wv>ytCD~2!GDBh$)5JQBZ{Z!Ewre9r!c& z9mOFTBfto_$|mUb=_R;4JAL^~e7+jNWr=4=0q7@d*e%e+G>FHyp=cv-g{jT*3W4?{;2-{}>R$Oyr)Da3ZEMhcDh) zZv<9sgeib&3PPBGYXk;ll0*QqN>zhXrl%VCWik{SVx|W4#X$BJa}eNqG6XouTi6C^ zj37mTZvg-%08=_aW>bX<1Q{P*43l1h^mfT5kbjc|feA$sKvR_6-HuR(IP4gQe0FbK z{m%(_dv#`wBA?YUfswg1^gAKcnT3_$W$()3RjH^Uidn0!c&$XnKLa{~84_F5pMhS9 zdVd6e23K#MzBvKU#A|SU2O_x@{--L>TtSb&6m$I?ve60Hk>GV{m<L4UFf79hVT?+nB;k5LmHH-%8RReO8ZZ6r zK0kk3lzx8xR>Ky{XM-~Z7>k-;TjRGMW&dGloW^{HLPF zdi&4r!QTF%WB)lmI^J8`e^&8){=D-OxIk=@B@{rd5^~i6++sEos(PVziS1>8KXIuo z<-#MSe41=PA>pJM>Q2&O1|tOiMXtFNcn!mwNeb8qfe12q%>|yHcJA*tM7w7&j-^1P z=ikZ3=g$BqVLXWt2=J%gbhjs`Xb+}oPoWoptq6w<1YCp;K#;!<uw*h8LXJLGizm=l1fuV-2@H-ok+vF9AZ0h|!LTrRGj%UaV7(&DDqV)62`>-&{Nm?7q5I|GJq03Qg$~3T^6=@faqN+tn_hqtdHxSb7yq z5{6?vtGX~6<3vzMbo%}tq?~>H$A8q6pbWAJ{eK`LfW`==V2}Tupum|@_z%-t=e*(v z?JJk<&Yb;@ua|21%iy!Q4EFZL(}3?kAb76+>VPjG!3md9z>yG~gtYgID3nAw z8c5^BKkfXa?R#8exj}cFCntn)37GO;;{@0^Y%BXUOenZTf`gF>qc}oJlixbe$Thr< z@4(rMjw~G`2261}nSl=yF2;7rAy0eFa{@2*u+b z9qo(=xd~28vA_JidyDXJ#DWtL>;|6C5sDE*-Bg&+gA*WLigPTZ}eEoK~h*Ytc9|Gw|%MW|vFi1DGOd-LuEjwGXvmJNU z5rTev`?5!}2sS@!G2-uUF0bwbQ^GJlS~7+x6_O-DA?vCm@5hH?t9QB?5$6Q}C>#+G z{0=eWoPjH4S|Q`AI1=N2*8`WF74Q;!oQNceXix&B*ah9Nn@rHxri5f^i_-$~HM1x! zHp(rYWeAEUl_E<9py=S!)2q{8PA{L`=hl$GhM`FrO~$FWUL{5USwcI1>=9{0_!?kO z#L6=C$@}{q527D7w<5?8_`i?-yZdO|eH49o^!M(gSKUXKogV!d*R}BFiz4N(5XUGI z<^fJrZ5s%DWLLt)04JD^Q1q|@4hT4d3_!pe2tY6$`nc_Dp}sTx3FYz zyRBc)OE9SMWl~{O6A0B?*4i7#+}@R}W1_&4O=PVtIFbr8SaB3>TAOmB>n?AjwLPb; zIfGBbjV5`;VxnI5S9vGxfF=d-e6!+$6vD;m9B0X*&Ni7~mdAOi#Z2~q2eWdVt!Qo=es`m2(##9yX_B?S!r#u6|Du7xX^ zAx)?^oekk2`u4?BdBy~jA+q|x$i{PC;(1+(X8FPDlOYWVjJf*wnAbM@LpK_247m>Mms z1EP*?sY?h0TjL33e}`0|FCla+Q{4dK7;L2(PS^kh=f?2l(mm*ccf96%z`=12L=qt@ zzI#O92Vm=81ScTa27zv%<1zFVh;7~ABzi&lNKIjkqd*R(2d!#!c!l>M6!tTYknoWT zJk8d%YR!R}nzw2$jK}jAPiJcV`HQCuxA}I)Hs7{rQ(B|l)mA55^U`Ad3OJ68ojd-w z5|VfOWhwb^cTY&kUPGc`LhKhWly>v9tUDB8|1RB)*je6$)W!$yqKzC^F1K& z&H;BBNcsxzOFRJbt?(t`Ee`P%B{pTtw1p*t<*>^n(;YLX8_ZB6-DK~$=s-)9E77j1 zktPCKjo2giON+=OTMTzt2FBW>dN6F4!{lmzkB`TU046#UElv+&EuRx=;8iW9e_1{ z?qNmo-ae?%?<;(O_2;EI0h{#mdI9SK3!HJ}Z9KdmutT5rj=%+ue9F=DdLo8vH2Uz}9{LywKVmxPY)!ci?ZzXEz;wz*HXLci)1|&*yJ0 zuby8#yZrF>^4Y~b=#D_{ocujG=Ps>V-;x*Z5<0aqciXjN?P?rr_1^sl^QiZrXZhhW)A1+FQ!|jSvwtm5DuB$ZgkBl@YuxY;^jT) zc108qpJ${AzR4-F+4Hg7r|-`3vBKieVa(Z}!_>kmiU1OxqZd*UxwR zG}-?}Fu#SOe>D349UdRu9~F8cGZX5yV|ob0r-KdP-P#-Iy9uzB(9 z>5EGvB1Ja^o1fLoHy2kQUcY_y%d?AKJufR$Q${7oV5PkXtCwM%P<&*BMl2!4X%f zH(Q+OdsUiCliSvqjnz2HS0mS!gC#9bOPy|kp6|Mx%#Xd4QNYy?o~6Tp%Na zov}{=*aQK&{uc__Q^;TdHj5u}?^gv+z!l$z36Xm<`o#2(EwTyqHi~*Dd1@eDB{4Sl zVgegkOn4#rx3`#;--MSnUU(~TtyY%ge|d^Du#OVN%&Sz28iIl7zYS(l5J8kMe%{}2 zbh}+UU(@c!4dy$k9O_pv-54VVBa4K5|1QAvl6(^v?J2r(#x$N#_6lV~1h&iyszkx( z`0#hYmVdUy_`0WY=)pLCDQX8rzrTn`$Nvq-v2|HX7$(}l%uo`c%rgsh13|2tlz()< z7r-(+?#N!NNs}L*^o(PT15k03Y15oCHMBB|%}FpLSpG_>2Ca6DUk?3B$J-4=yuaVj z^O3(|X$-b>n16$Ek=QPb{%UZ0Aon5wS0iB>8IOh202P6-IjetWI$0%6!EMW;P zv89wmD{6@<6O?YQX^gL=KT=AfK);fvMRP>xh-Atv=2wjbX%yV%kjMQ-Aka}rrt%(as|9KNZ8Ufot-JYQ+k*H3Bl zH}PsWnT^*pKc6j%wBQe7ADC-2d5=sa`>x~S*Ot^D=Bd*EqWrvkaTTyh|2sO|clE#H z-L?PEN*v3D5F5?I-N9vB5rO%di*;VPWtI=UsqrZOBy6ejIR##_r zm-SzPgPp6Yel0b1|4;c6rVJ(QHxf_A=;7l3_YaSD%klqr*ZKce@(7N8?hN)aSbjSF zx}5#|w|e$1zqjGhvSgZ(Ddt=aWwNC40x$w56y=e5TzZPDq8Xm*s`78QR!Fh9FwY=P ztdRKfmBK|O2@%mi9u@&RetPf^xkxRxob`0h0DSlpiM6{Ay1f>(J# z*qtTo(}X|NX#yTtGdG`EA2^Z}F&pvVpLxt_9q2;^oc?DJfZzt9v^wcy70h(nyO~_0 zEI|xWt~C@pZPdNKvlq9y3xBt=DNJFA*`10<#z+Q-YMJQ;EvmXQ*@d|q>DXE31|_}O zBs{^=U)Qf+7>0<_S0qA>F@rf3(`nc^ngAF7Vg@51g55^kPgV z344>uIV1|1Z;I|@BE|0}NktNpN(hC;Hg79sJ(-?Ned=;T>ZG)f=;KG60({>UMQ_ku z-v5q#Uojy^C{9t<8^as)B4KZ`*My{j(O$=ZV__vi=bOlQ8+Ym$2M^^XS<1?aK7xRb zue<5An@&S}>4~JMCamh2qUK>nOF`rmHaC7eWn5wm^}bXw?wXRVY$ga0eM6J*snJX|Hv%K4D>zh(}fLNV=#Yc3&iKdyM zj}t_Tc$(F!qj$q8xRWeoax0}x^c*$9qa-v7{f+{>7s4x&Y7^ z|EquK`u`v7ug`y0^2ngkznq>eL)_<+=IhG)V%pXU{JKONiC>ou;|XOb`yEHf5XMyj zfT=D3ZgGSF$v{FFua`|?q@asGUAS~2x}?Q&^~)~RN*b4he<&{wfe4(i5y|ks1%-My zf2Ec`2WJ=hDCA5M3=eh z$8t2lrt_bEDgWP5e|LTUvyw-sdMcyL5;Q3T*SS0rN2k zY_A;_TloWxBl>a+BKy$!B#tkQ&bMkMBH<0nq#O6YsJ_c!H(BciU_-Ac+UBH1qP`(# zNRbLj0G?g$T??gaq4Z&eQv1x5)9vq&mKVTQj45;WfYN&Hbj<7>Gwdevett}QVa7@; zLJ-I(UPyA+M+Ybgi`qBn&R;vt@Dwt1gYNv5=h>S?#h$zIc-yaS)b_kmzFd@LI2k^* zC^>H?6fk=(lyA;IY5hFxQ!W1seQy={UyeNa-*%7J_kUONDEVIu_Hq;e0cv$|pj3lG z-rfdm1R1!+aa<7)O7~PkX)TefJ}uqfiB3Z;ke3)wA*M7s7byg!Uv1BFCAqipM5B9MLWzYXrotmg z4OdE{Z7?92*dBy|@x}QzphPb`3T{cl0L$(QS4KX{T$@Qr#;69wo3Q(g2Y^olm_#L? zJp-SP^UE$T4|J!11|zjzgN~}KUz8&WnXCJ;$oK2C(C!+*hC4+BKupzU zS)LdG(pwbA<{IW*HPNwk?;7&gUKldhC=+3$a#$Si8YNv!+V4smuZ>sqfN{8Twl`-i zuC?{x2eux#A^j?p=Za0W#%WOL9UQnm(c-lq@WxOX>(?YgVyB%4=_IfGP}hdqO%jci z;64i=qb7&|({^gOG4$)n_W%I{b7`kGUjD(_%F&?ztMlH)%m9t?zYbjg&*Q`XI{)iR z9!vjMqrF5sK()WXN)H6Bx!iCt=$37FKxo&R#jKE%=%L&GDTU2BLuK8PoyXVDT%-}q?m4l7_q-lFoIc>lamo;xf;gg z8piRR+|=NN5pmn!UJ+O11|{m|mWP;=FZk5kN(>;2ay`1Z6#QF3lnffI!}N3&5uQ0|Ynd zE&!W1=&mE(D(5>jkiQ$UM-=#PC_+^5^M?K!%wajF29gxKg!%PKCCf@UZ zO=!_1MSSQvuNvC6HQf(IZ^!VhE1Ej;0OA;I>7XcQnjoOdXBW;$A`YQ{Q%4fu-6Q%Q z;6(n*GAxH6-{$!scivI+gu(U#Cc_1ffgAS!{iFSo{&%pB|FN1!-v2{vk|h+pB)5n%arW?cJRI@A<=F+K z6b}=*I>nJ)a#!q*0Ouz~^D+$c?2e*vl3{jtCO7h)IS*&nBOjDMoRg@DGqms6QkjH2 zAQF(pzAlM2!oyJj`XGqOZ2mIf?iB+J76njs>`|+0lTAK z<|Wl@x348Rsn}@bwo=pUnGxn2RtIbiTVTwK&VjPr5@*HPo#%}+-zRDoSbPDD2+x+U za2io7{~10s4;cS@fB(27{~aH#{r^_-SoZ&}@LJNNF5H)vAkZzz8A~qfIzi1g#S`o$2-HuYaM5or5}U&6ux!i31v?aO3z4or>p>u+^6$7 zfnKM?&eg8%y21G@0*@%@788sMD$)c%1rQ~~1UU_Qokm&0ZoI;wY8E6EgtkZs_b41A zaEriALT=?0%%#9VM#jJ%25qV4ya+RZKBX}ZF^lg6#LL{X4umiP85*EWxJQbm7vT(r zEWX?3s))!;FWS3CBRIumlJThx^A*71@i{>z%)ud-7q=j#lQE(om{6oe#-QUkCz`xd z4|9-rG5|f-v%)5j6jvP#OgFMy1SB5j0_G(q6emNeT`DOx*D`bHr!gfQeuAWi778{# zAQ>1>VusULSH?(Qe%J<>(?2&JkpyWc#eAAi^Q^2kDRPg$D0ldae0ow2sN~tlYj~!q z{k=veuUxkR6}N)e-I+5fsXfQ|$cx!U60c6xdKzf5RO$)y2}`+!0!(F_I00N<5{n?s z5buk;kZJfhn>gkI)*s#5qx@9Me^xx|g$#gA=RbS>16Te#>hG=Pzg0X{Cs4X z6l(sBGQu~oNgN3#eJxIBrYK`5QZ*S7Ix-wWoB&AWjwY^xaD_YtF@h0iCL9#a+j~73 zU!#l`&^VlDKp$L#>pR&84oGLwjBnu`)%H)ZwFW2<(j*KS%6goK-*T3sSUS+q0UHr2 zvccF6(lF7T$nRka2lqDvMdpsahKUmvi2olQ1Rzkv3p(0ISSZk2BS_CPG{B!g&=0_t z8Y#XBUJBDhrzo#FK}8SBCBYXElUtOD3YPS!OBQB{lC{bxS3YoAZ^PflQ`-Mye7$4b zxfON*sY}ew0h;{(jt<=XpZ)&c@p}JX#gpGvIy3HB3ypLE&EJ?mJvDviR`{23f}=|o zXtg-D@pfWXUB1d5kn8#=V=tZxGjzV^nhHFQI+hf>?1D@%PDd-E0uU zp_npKCdkl~+@L4`0s55U3`If59aL%35v_~ba}kP<G^T}*#_}Mxxqm2ZVc1++rrUcNSN}s%hlCp9IWoH)xfX( z`1gM>whbGWohv&_cTsTAQ3_*j92`CD3Jv^Ls&NxqdmG zQ+Z_&Kq}o`ukQ*Ai@XgtrQJo5pkpYa5e=7H>=wrnWIzsJ^kUJweyc zgFgQKU&N^!!*m(ezZUktgFV;&w|BI@|Fx1w>wj{*mu3Ca@D{QC)rRRPT4))e!>Ztq z(r*-LV^Z|?aR~;+s5nBjOp2ntS1_$GDDr9zCdGP_VU!O-g`LocfNVCm4e}AjB!StT zX&{_d7zjm+YqQ{2eX90=|9;<%|9rgLU*G>&$zvJH_+SHZ_`2BU zuc9DuaNpLA-PREud>vWVHIKS8Z`o3SKCuj*^1tmJSqAZOqBMBVyFK?2dm=cLC$sYx z@Nq&I0=9#;3XqsXiA5~XUdgvx^#f)@=?rQ%BHmWFGplp>+J$iGPt*R-zr$pq>whi$ zzg_#!@!{b*|MN;7YyVe+y+jtEApQ_sAn(hP8G-NWxS7^b4T`m|dcOO&*_y4~2c%oR z>ePTrH6K~;+~2{|wEv@Iy6_1=!~TDCyx({2|HlUh>-~QfkG20lOQy@&_E9qZA+~(c zj|YL4hnZ zaUvRXQMHhL%!kNxMYqJRr@o828irul(_$FfU5*tm1PDR<+L_>7(#tPrmD#Z)38=9$ z8v8XP;}dh(GBlv3Q?|AO{sY}zpn*se5oU1h!(7fUV6b_yTUw z9qn|$ZbvyZ=GWiyuiy(9;Eb}4M5R+6teTjExtS6r(-sJfZyxlgZ z;p0~I>gjC4^R|Z>8q0WFMK(_Dz@sOwzHaKa;as2bMJSOCRK$J~6(3u7L<(oAQgJuYfi56GJy>*}Ta7fro9}nIiech*GZ1R3DX^_-1-*TMcYNE6I z-B648a9%V@TTvm&DUZ$>?XfmDFIY&y^ffH~;>6`UVkDRKM{syWh|FmjiW_oKZ`tm8Ysns`mvX!ee%!Q)D( z2ph)7-$vFr7t**Mv@+#=xVy*i~xP;0pDo zjf!F`HuW_sJ5;OC7(I4^Fj^&wGz~%E*WI{O%_oAh?7b?CYR|9y6y9j&P*f;G3a`h8 zOP3EnGee?4ve=B~!BEzo3B5~E#fw{$uAp$4TUpSGfRR|D*dTORh$1UVW3S3ePmL+q zuZw*Rd$1iclj|tn9v24V))oVE$5^f=R5cWa3Lp+I#iZ7TE;s+#Yp;Iv1Nx@4kpEv| zx>y3pCjXD}`QP#3@!J1yB~MBIf4MZ@4>fgu6!~BFhqnI=@Fx^KTg(ZhVgEng+b#M39q+E=Kdj`j_Wxh`U@y-L zM9-Zcf&&ztSt<+I`3am(364O5V~`S@FqFBG{H#ED=Ej)gLN#_2>v z#+xu4V|EvSV3@&lghLvDV2UF|d{)B{reahL(s)FS+z~^R7Z}WA3G@>yH?Uo|cEFGb z@PB3rw@6W_lC6mo(Tt2mbiF$5GGFg*wzd$);UpHZ2xpIEYUR${6jb3D#f5+;K3x5e zD+T5Ry!szAA(gWvul~n`^7hr~t0@Hf&eka!uj^68Y}@$>@YJ{|({3@q6sNpLa*kV=t? zFDfyku}np?)dwU4LlGD#>uig684}YFpk(R_C1OpI%vfZ_ZrjTy$titHQ6?5xbrCVU zd6^E_8X{H5zc5?Th*woJPC}U-#M{ef7atafvM>a`F=!Ca=L7Nl;?3Lh4~v8GLa3Nz zgs@*P`IO2KjD%nBn+p&TB*SB=xhFCp0eV!(;*^U6Dt!`UU_dnpAyC;fk7V{lQVm`3 zrg4nu9c5@-o@=j3!i&s7fXkx~7tc_7W^d!_g<$NOvl zpOrkNK$&8|jX)mDF$G!E=!dWeIXzmoUyuO*M*7_6=9)sURZ*Z%9)m!XG!ZCefwWMy z`Cks{v3r@b&dgGgTB3kvwUKw_u`lgGsg_qnZewiFn&l&EAJOXo)Qy&-9MfKgQbI8! zMh3pwJ!%Sk40uoG#E8M+a!_G#I2#UIrLz(fso4!^4lZh8O5m;usF)jh{2;6GStyuJ z;`p4zIJ~PemgW;RD9Q#PcrkcQ*m;I1N?1*RrOlLAz{oV!*;Rv6kvWX(a%hUOz|n_o zyPFU1yorUVUI2X3Y=kpLz%a)Zc=+(Fvt{Nq{+daz*H8X5$$v2(pztn?(Zl8c+V3A9 zyYk=e?)v`sN*+u8%LjWoLSGKDEGNpR}f?_py)Lm2~2=boWP2~z* zIZ|pFde`54J>)Q+BcJo!gLTrqsZf=%Y%Q$)Ku?qWmy(Pv8UVB@{?EZ~DgXEW-a7yH zN*+u86NA0P=x+kv41J6lh*R`)+?ffKi-J~Rv z=hCW622@M7s0D2byqrEGl2u+BGwD}x8_graAveZ?rc6Q#ieQ>wBjN&=>ROuNac*9B zdgdU0u8J-X?dtpF1r8=?TT)QdHdW-@mVX)()*cnPtGH-w=8MZeZ%ZU?n7lUX8Xar) znzU;*fh%Cv&0uR5=UuFx%g%hRZpEAvv|=XL(6%BZhi8IR&h3`-+v>D;mRHSm?=)X- zpPXxW-lE3js2D-TPxxT@Ctw*@&)UrkopU&R-IPXOd@+3Ji~^$ZGF0E)2D>32xtt=8 z!Irr0V81Qy*p-{Dy5+~h^gJVsgd{fY6)a4v%oSGkRMpj&inlBZ=#SM-h65PK*D$0X_=O=JA$%G#p$Kf?%w$XiTPvFZ^*2Tq4GFI|3N` zl*Ty3EEc}YyyM^&$FWsQ^yVs$TSyr%U_>v>fnl@7Xj|mlM4#X|jnOurd3R(YJ<1`t zIy)DrzkPZxw;VBye0QRJzKB=JWPFXXo{FS6%I!S-Pu(UJ=n4$4k#4yMuDEE=_wWf4 zZtUb%1XL76qF@Bm6eZ$lZtD^ua5K3^S%SExSp50t-TvXxZokt5r!ghGV@P(Fx-`^; zgW@Di44Ro->b4hAS>0zYGHw*jPiF-1?AywK{KNSi2}#YQMjsg(NjaRIj@lvp!{ zt22{~^DHtLC|%%d>tbKyY1IEEQ~qs{G*Aut|K9%ok#qjDdvv(=|5?dn=Kn<*1;0Rw z!{w!c((1E2i{`mRAy~jnN_)B0)*5<)mY=)4CYWIua01JID&Jc|50L)u2zy|?17)bbt+d5F3o?sW~;{<0Sqi~EM zWdh?8LAK>k+_|&D7$kGpWh|)zRgbTVMXFP?aot2gHl6jjj&79#JVgnj zGynl-QCR&glF3g}+YLkjxN>|!EUSt(wG6W~4AjYc$LA(#+2O=2sNc1HP7tzUT@p$= ze7Q-0t}SQ?#|S6SnMTZ)?yQYVgxboKd$1MX*MeAMjIizB8vAYacS-Cj2w8oT}KKk)`jo*tYi}` zN;`0rxlCZ?^$ju_s_>t$v48nzf&gYL?76&u)Lh`8W}gtM+2Tiy(@!yZ@9zckaNK`< zo%8z2tkzjZ(x>o~Q5*aWoiQ0?G zPr%QGung51Q|W>bM>9vEwG8bXuBtg&)`48Tryzw67oiE(bH}Lzb{FZo3r-Va7m!2- z2Np$xM$y@lnmn^kp5Er&@RZ;c-HGYcazFDbZV#L)?q^=bp4d(W`y(%IO?#)b^$n~q zd3~Etll`v(7X_5 zi%$_s&q!LjVqYLpBX-$kayg@T?H8$v?{&a@tbC>zUQ^E*a6#Du3nf@)=;H)YMo%^X z2-C@lirlWD>Ce3|ok-WDF&dNXuCko`49o*8qgaf`mNYQbfWo=6%*6epPrw;t+^2q!Wi*k z_oz!nP2NYJLeO}wp}}(i{)p*@d7M^zv#TYVQDitz4{}Yo*LI=uG==)_dRWWTj+1A8 zsaR!g%m8A_IeUXMwK+&Wlg$>rYoN%aW3TnRF&#;!lmT4CsAS|)_{@tpf!8H{wjJXM z_*uAxRnKxcTb`1H0TmRPh9eYBVg&k}lToib(vT_R$Fu|b`Y=XZzn1AH7f&r|%tdEY ztr-PRP}LS*-I6^kFFiy-A#yST#*l?006_{FL)ntt5$BOcXW-y@Embn_k6gBMa_Fhw zjnUE_JmNa1)cM;JAP(A2c6Kr}M4xv1qPd-H=jp-U$>hb(ZsF9m^AmXW>{Vrj*RRii z+k0wO5J(J>5Ca4ao!dJA1R<9$g8$v>|MQ={ce~xcz5gQq|E}Nt+xwq7Tl_8m^UL@@ zJDWkdx)e`21f$y4yJzQD&tLuHJ^s%xNWA*Lo&Vgl9VAeek?a*6R-lMt)0XyGD@|=AZ4H?_BLX z-+8t358c*t4%sP%ch2$772bJ{cV6M0f8e|<=7nvPaRRRI_!3fO`g;ew(6dh|Nw^%X zUhf~EqmJzcl20Son?#aE^`YYt%tFY}kYr{)daZ29@^VW3j)Vgwj41&yia;P0m;gwR z%mKJX;1(uK%C*uhQF!jVQc>X#;- z^A6PXV$%(_v1oUk9+ewt!3*kKdEAlD$G77*LY$ei#-&5a8^=`A^P0{PYTHq85cy5# z3bL^{t0Ytzqu+GeAa%|quHZ;sF1eQ$@NExq2V8!%bHVr0SE8cEiEpk75kp3?+VA-D z4z@Y*aOa7eu$6PR0f}RB%bOjLYz!Io2a6MDK{6tW%wMYaUxmGcvq!$FyF6BYGs8jk z*EY0%qfe9l-%Zmn&nZBI{eSnM6#sX3e{KI?&0|^4iv8hI4Li{JQn1n%!QAZL5$8J^-84bd~M*9#S_1fr^-I3?Gwqf)ivlQ^(PVMxa5 zc}4~}7QU36ZI&w8#iVPhd7vQ!qtq4;UXl>TBSKjqtH%1bZoHwh|`Y?%nlQi0mp9UEa*U(Q&Z)6^bZ z*Y{Fm@Mem#3`fdEFfa2L>TA9f)YNIi);tYd{pa6CfnE)fird6ggeJH}V2p<&#tTkT ziIfO&ptLw26_DrVuB|>7+#nEX{=6I|0D;Li)jgpy`*Kz9sjcZ6-SsNmR_J$i zm1F8^ZEaOdck~Ol!gn0BqezO~fO9ERtCZ;HK95sJ>7CPFp`{8C9wX(+99W`H@HPoaBB9ns z<8KhB@^)tr%-^o-?Jw{sG#W6jPnn*Z-~9=iVD2ggTi`|m0qJO5iT*vl~;7yy3=V}aG5C7TB}P3miZ1rUr8rErMOAsYoC z2#OavJ(YbbUs8%qs9o2gxMx6j9lwgaSSAP?pDp{+djo&An=DdsSy%Vv>j3jW48N1d ze%Pg=cD^mH{RSZTRoz~^A}`61zDb^C8OZ{dy_PTFS7zCoMd&eiOslW6%JM~yt<*}Z z<)v@CK~r-^_q1ZPe4Nt+w`QF`&eO#IrzD{xX?e*YQIRZc{M*!&na|Cu^)-dZ{2wLhlu6Ue zKN}IqgOZrxg-j>c)o|6v*`ex#06*9~BYy!`DBP_;%f4nLg+ndQS5l-X<>`VoTL!>@ zQJvXAn<2^#`qDe(@%xR7CZ};MBlxRZa1`+UEF}@$F>br?CS`TEZXP0h3~vyiD4|G% z?4E}H3;^QtMj2ffY}xo5npnK5}x{|NduzJO(A3K>XNkN zr0`wEv9huFCX&#!+>-*E4i%Cj33|jT>{Z z)ZZW5aw$KgVPfJOdZ#iERP%nlUcf(yO5MHDfh_9dz4p6 z^5jSPTy{zni&qrWZ8)WJHOC@>w2PNEB~eEGaMK?7cW(z!X&M?mDBjkC{`?ig*EiVz zL};^ao=3Q=LS^oJK%Y?9)*je!{kyR^g ze??r?P5H++YYen|xGZa+DkS?Z3aCFl9!iD?%Q1wGbUE9dQLcRctiU`Gfev}c-V0AE zV=%g|+dnTQLNv*$g_nGrS)wW}CsxqG`b=t;XWspPn5E0x{}1=w{r{-H&i}EJ$J+n- zpgzd{Ul-o|2Vw$d2=#|&0##hV$_zUv3*a#1{?Gf=u>V^Q*gBW3521o{m2%XUkd|*` zS_S#{W|@MD`*0jN%SrQOsi{h8y5QVl9*k?$xlE>} zeYilkBE^s27vE>%O)aBtTYo}180{>(e7Jt*lzY;8xXKQrW~L)^R2uq!f4`xo|49|- z5urw^alxq_kS;_YPX{2)ZG&lH#1lxWYwHqWD-XIKA;!|bBN(BKD!hsprJLR=%W8fb z(6Q&`XAL?WP}y^|apB2ef%zyZOswdE7I6SDO{s+il|KSjPGd8+p}dKh)7%Xf`0W@c z*Uy7L^U8m@M%O|DY}EgcUHk9B(e7IQTghYJ|ImZFHUi8q0~+1@u`B^BT$&X4P=O(b8y<;t@izDyf-a0L!YhdQ+xQ?ZTfwgJvNC1O1cCmC;_Bx-xF-{0$d zFspmN#~aP@N!{{Zz^^RdsnaJt!&>ckYB-&GujA)F9?iH^Ys9WHXdveHq5*q@O<92I zvQK-Ez$qLr(l)O@N0VhGdyaMmkh;c2&{fk#D;kMp;FLjz!}@?HUW6sU1*Tkq_H1_{ zRl8oS>Svuu8sYeQi>i_cFV4@5Jt6UQT$Z~a6UH&vN>BxDT&lJoR&z-GSUnNl__>77 z6L331iA7c{uPMBf#opIXP4uy$Gp?_mcP>{@(&K_Q!Smdgd{@pRt)28k$3TSL}CP}1Ynmlqj$oIJcBFz!cQJiebvHXk(_$H z3FUlZjEs@-7fd0gwfC*@ zp8$;^j&)`6!-UT18A!6$8ODkWFV0X407kA<^))C8cFbw80l*bslXOHTaRf3%Co$vf znUXPLBb*FDjBk)wxaurR^-eW(lD_~T$lI`91B0$7AlS@*Y@0=LvhpJN537iz9RDu= zvOWsJoq%8~hkufT>40lU(a}MXTt|x(_Z# z&b0kZD~yeiOes-`x;I8@Ar%eT$R!%KCb-aHJ+#h7uOvDWfXiRYcmsC;}YCY+EdDgmPV|{*F@K zrp$t1H7ne|zI#!zdHuf>EO+kUuPx-iy(4G+?;al=tk?fa9{wCknqdkTR9HOXu zeP=gziLxmUb)`9pnn_^(Zp^gX>f!FKU3VVtY1scu?ho@wgN^<_{eJ2G=ib`?b0v>T zC+0Z^tQQJX5?!V!TnbkxO|o+mS)!K5UDS*QCcFmC;9$j(0l?B3sPfRjur=_q%DqTA z65(VhBUljL|a}dqY#L z3$h5HjF2UaD7>Xo8tmv0K-As%;&G4E`Q4uW72#?mTi}eA~7DKryIftmtsbqg-DXd%Fz(k{j!6~2VIJ^<<#gH|PIW{@33> zD4+lB9jxX5RXq0nuMq-r#H~$Z265M8CpAx(nsotr56dg^L(BTAIJj)EXMF3d-3VuR zTCM*DO~8%of6w**>+kQa&;M8QRIPt?&_46hH*K^_S@p5D0@@2+zFx2OMW2TCpIX+6 z2Ri@Vch7(J`o{-r|KF87EzW({KOKyH2M9URB%943QFbQ-54_~y^;{H!5{@?EL z-dg`(&7Bj^-_+8)Xl^g`Fn;FJc>~AGH=H@2N7RS?S|YVK6%t(;b*(ZZiCIKdum~ZC%EC?D{j0N z2VOTOs(S1;Z@~S19(8PUT6EWmGG>_WjSkzUd*j3A&GK%Tnp7%}(F2m|)R~M6(94_x zWulp1mr1!b=l#*12L7+}Z!M$*H1Pl3y*)Snd;fSH|9v%&SN<14(MXbKUt5kKV9%wx zY!4}k3csG*rAPg(U3vmq`2Q5XIXxLAC_&(kOf-*IC)3)5cuTUIn82C*cwFRL@N>(n z=jtv+hF8y35&y*~lzS5xKlQd-IA@5ul6w?aca?LgT|`Ddvw?jsqNOd#q16oD+Thok z`(OARL)VPuD?APR|6&(E)zh^9A0E2#-}}4$wg2Zz9+jU|j`xzTf99KJ`+J|BFrTwr z1P%2C*0xtbtqT6jpGJ{cl*YO4dxC}lpP&7);}j9L>aT1n<+|?Hrjrs-)@XB4Q={y= zu<5kxzisMv$sDVOewnKM44pHoE!smL2H%;!s;T5$Dz^K}!+I^NMKiQc60;J>b; zPD1Ab%krgymJn+kUf)bnmf=WcQ%_0s7uv3GPA2&jg>!dmMo={_?*-Veb*@#t{}++X z7d!oF-2adIyYBh#(ed8e{ne#;u#r> zuv1%YGAW3f`YzEt=~7K0b(5iNtV5U1jEYftK17@};KrU>q_GkG72lm0bvX@t8A=Jo zjAVDlO9qDqfb&TlpOYAeDpPn~EX_a2(v01ekYVf&eBo0CPGY8*t|&}dgp*Qn@z!4< zKXYnD-^Fv{c4V`qjJ!QFS#J4q#;l0KY*=f{ZHFa?G7pO8B<_t7rF^{eoKVKcSH(9o z8T%|?&6!dLTuiWf(5;A?C)`<_vN@;+n*k}w*b=6I0P|o-PDwl&BcabOj;aA{R*YK_ zG$Yq&5sDg!?9D~33{f)4!iA7fw8}xXB9z=(Q8>vkyE~Jd|6~TzIaQaGQoO*C3q&IL ztM-){kPJ{pL}oRVO#eawB>>B)L)TndLE#OGM6qa+A_{)mF?nzi4AiuRqGbAXlA^#H z7`4>^qGbAOM#hT|p90i=@K7?HE&KZbe?rl-WV)=evLd;)Bh^=I`X#1Io2Bl&nk3aT zYwbt5e*V->|G!M(?LuaNCjZal!_xh)z2mk1zmiACf0aYMkfVpCHmgbV{p0Jp#DO5_LoMYO#rVJ)=?6{|t95_X6-4eA+-jcFqGfsY2*dSzdd5e~y z!mZNmMoO4OEpiShMDi~KXr=)3hG1Fry z%fFPnqvC9XFH=X}-$mXNZ6V-Q^Z#h>`=0L8!2b^q`fmKs!^8bG|6j>t+5exuz68q51(QgHgN!aYpTQ!P5E2oBd_RV_t9EE8`qCN~jug z>%dbXSzLUmyg^Y5T1_DfwCY<8=+@`FrA#q;r(U>MewcH2=h>%J#+?)Gn|Vlbl(tlY zWAW3@e`G{^8WGA~%a}_5Q=sH574d085iqCJ@0gALE-P4VDj@aJ6rcY_Yjca9xwu6# zuqDzlmU2F;W;$RCeJrpGST;dHr{mO8=lOY^;xGSD2Ne{lOPnbxV=H&2y;Q4#22bVD zPXL0~Bti9AHuY%h_Ucn>=2;Z<gjxY9Lm=O^$xpHK=v6*-X+z`G=(Lf@b} zD((to=;H)uc4{e=T2j@PbSUKD&sE79gyfF0DavR70*YW3ju8J-E_@oeI)Rm_L9IhK zKSM1k&CD2jb@v|8Cvp=o39b77j`!t#&&}IVe~HRAk>)^kZt~(-saPngH$8(S`8!38 z{I@2Q0xo-T;sieQz$?*m$iP;N642{_{q__DW0Hyd%L#b5|K22|(b$txh7Z}0kA&id zQTN1?j#HHB>T7d7>kdMz0rAi#r(+#qj^-oGkwqBY(#%xR6<0+PJ=H`7^`o+F-gzyD;oA0HJk|Q26fKlL+e@6>%&iVK-v2mq z^Z)k`_tyFUSMpf;UwOzERsPBlzgu0<*Og_fhMoafxvOs(2S>8@AX)3_>nXn)|K2%! z(h5?I@=#Iu+vGUa`#)E!PGbxyTGS5MbpF>r+Aqg{S?~WVd93}PE3rV0`Jy|&F@3(< zE#K0QOjZ-IgEmd0tJ8R67Xta5Zt93zW?Xp@S#&`Hwz z`5vEo{;zDm56k~|5BAIP-`4&=t9i=&U!N{4f&W(@9eh9hKkvh``M+@pvswku=#`@n zX_RW!Ir9W+HF{htgzM|osB0R=ACt}1@BdtE;G6$q44`TM-|Lt3zx~6t{uiWeKz^K;pvV!4L=?Ukf{1!FP znpiJ(!+*Su_8Wbw_y7Fv>?H~_#2zmG*PbW-SATz<|6wJMwg121Lk{?u13Bp6Wu7E( zerDiIr0^sETm)*9ex>Ew5d- zHdwgM`D(+qV_10Z{eSynP7VK0Fgshy9l!?ue{^(M%Kx~#zmEU5k|(z|E%6edZ{~cz zT;JQ7rL%ss73p>?$OQuaB@n#E*xdb3AYv`YaoggPbeO>i$>P>M!A*9TTHenRi=u(N zuBq`YcDv9afwebpYT1F;ZMtiy*l5Yiyy8xxel6AL{O6{Vnj`0Yrvt`kQ5plxz%>fV z7;$MpHnT0bA_Uij#4d}|Zqd30>EB-FZU#bJ2vkqREL+Rwg)`y_H{*$1NDTDleg#@HSsEc9pq0?~HvyiK7kaDs&`HWZgN%mwm zPkhy)jYyR{`LZw2S`z=lLcc@H@@3TZ-PbwqzM7lP1sannlD95InudtTohD7=J3tb^ zcTW&HEWD|GBg~W$X{G^Z6`ZJ4Vdp1srL)K*u{bD@g=JaEWg~#5C=pws+HhK6sv;tB zgr_J$wD2fWKmxh%m8N_htPH^jFAEqKBH1LZ1@&EAX0|w;)TkIyekucVf?Y$EBt*Sm|aVh`P z(fa=XY97n}e@-Hx#~i3ZU(^`T9Fgz)umhC(v1Ai~jz{Ad@||WmD%NHs6)rw-el@EG z&XdX;(6c)rZBi8K33DRtv4vvNvP+e&Lo<0BJJ9Wu4+BeyO7*a z-aLJC0#2g{&`FxcXp9mDV=&}m6cx=yXo^Eb!Pen6*zIqFJ^tT82W-7b;yZ9VLP=f( zQvfN&!$iqbQW~U&u+R;DtU2?Xa{S5>!W?C4}GTlue9vljM$uOyp&>v&j~-Ll&@Ie}V+D9!{qR zJ)C~1=y?DFan~X+PMfEJOa0Dl`U=U4Lspy!*QCHgcRCI z;i{@)EeCz8ly^QQas^%sP8RR<1p(Il%&*Ru``{BL%B9Z4EcHajY1v`3es$;l0aQ-o zTX;tU5WGn)2w|@<9YYq5>I0-SbfHz?6sK3-zRVp+r5-_d!@R%WP^D_JY|4$XH-uL-Fb^8%dNsEjMpKsiT{s%HZC_Z#K6rF%xk^`coi)~mUFq>?9i8VB#*Z}_T| zyQ6k34o3c2fw(mTdmd|a(;DGbo&cPHpH)M~@rLghMmHtzq0QEosMFM#8jre|98Opb zC;W!Qtg3L$cqu}c2kF~)i1>p&)%KqZ3Fa;Li-j%#H2HrX_uc$Y$49&C{I4r{Ec?%e z9C954azV?FHG#fcyN}b0WjlTt!63DO)M$oL$%SYz%N=m5AC5n$4wcvL9)W41G0(3g z_n_OHvFXFUHWr)ZVdfV+U!y6?0!sk>72!%a>#)g z^QBw_bSKgGD+ZK0vTR8}wcy?hT&@t{^up%08iTJU2rLyl!3Rc={sWbdpyWXoAL=tc zeVjABvQLCnt!LNj!6ul6I%6>!?+w#QVT*nRZxEo93<1n|uK<)( z?)7@6^Nn@3pbwSY2m@w89f)@uY)-}ORIOUx!~M(u@wZ zK!g0hzrTA>j{m!s|5x%@^1q5%3e=b{MFS{LqwiJ+@O5R`S^$OmX112_tv2N6Gch_R zk5v*V@8xhCS+9eSUBVK!`2fFOM#44sw9CP($~7i$zkEZz__k?=9Px-1S`>7eT*^Ik z2WI1SbTzJz4fHF@$iaOKU=;1z@463lIlZPcbKX&(0b)A>%|N0WG4tzRU0>EbsOVxF z&zT{!!R@xOctQrog!00d_O>B6R?~qI3L?FGMBn$oFB6&C0^FjkC{=au%0#Qq7OIH2 z7GxKHs^ve1vN29XxTohC4AD8tu(%RHl4!Pw;0^NM?$M!Z|J^%Y-~V6DW66J4#gGFr z=0FZQP@}%6ELc0GzFV=dp;yb65Qjw@ZEeN#M-H#;n=LY$cs*!5@dv?4CFo;mTos=* zk0W3J?bJ0V?x~xvS{z@S#aF`KYW9B;qYSEP@R0GJ4~~!A{IAFRdk5?Ne-)3t{})5P z@K#@d`hGWdvk%MO#tq=BNC9CsXKVV#hnCxRflo@JYGiy{_kvjDMh-uqVjq_$koJ{} zO_K6DMBeu0yYp5rfAs|@bBnkOV5eWr0qAsl+geL&pu9I>|TU+J*IMM7O>pg-&GDZCb!X*Jzn`W z?o&pS`QOdPA?+ws;GTDNi)3I+*sMgZPx+@9yHbKi>8|Y!b7S=D2Hiao4O(xNE4R!z z>L-IvJ}NMK@AoQi>XaPFj-HLJM#a;IS+EsNmM&5#64rM@O?=CZk39Q?!U;nnv+iX$ zLeV7VKh85WK$-EXG)u)DFtu{F>?y0>>h}C2+b~~c-5KwY=mzy)EvKr$zI^YgSn8dQ z(?wDG&A=*Cg!N(p2nI2M?C2oq%+>qSwxS6EK{6R%qpUOmOhnvHi;#+XF3FoL`6M=q zN)E$!VDa(>sar4k8~*{Rtft0XyqAB=%I5pJ`bN&u;=)A5HI}l)be8duFiRAc=o;I* zf98B{aq*&B{-2U~GF~|M+n<`{|HGsHt|R{+9USbf<^NSYmi+&l9P&kFe>HQyTe&~S zf5|exeL$C@jAF`A5~Au$_(q|Ub6N>NuOfz@S<(|Xt^}u30#MvgH9=XC*y_W#S=E?` zdA4P~ly1<4RO`}V0OR-?hBqp?zD1ZKbd=e4?*8QSe$(ebN>pLl1a0d%AxGbL=4avC zc;KhoH=NpPjvM8<9Yt&#gd-H*@CIufxvX=iD!d%WvUW#zTO!6>4a|=J_|DVaRtIr@ zD!8X{r*T{+jK^*3b5)4U7Uy#__N1|I9LuV)lSjzvo87|BPvEJXiG15qv#~PTnpX8x zY|MvSRKRdZ4Dct(DpV*-4;kBVh+YAvWpD!n!4CKWScb>o3rKJhp@b=K2y3j=65%+H z2xaGxjTXeY0J8#|sme645XQ7B?ZWc$4M{SE63+; z>5K6VIW1J`e@Y16`H-*0xi!J2^Pl~FH~xSBV0V4~zmmt&|IWlvzk;dK1ec=-*6!wC zQ6p5?&7>5XeOa=0s2wB?DOLVix(cO&gP5wJH%LfP{fS62o#XxlNENL59NK7EM_l*g z#{Wr=Ce2?}3Ph zRA)=A7`>tqaoVA8&*8)#O-2CvgeeQEadAzM=8!Ho?Nb>8-;9dT;1!8HX%D%8APn@z zfGUkeRIp9nxfh1Nv>QdN714h-0BGa&JK0d#gs-i)Rqa=kpmZu~_R<G-)bQ$gqnTH2v2U6qM$h*nl|c#(T8TUerZH8L*v{UFMgaD zJAe*1<*`kOKu|ZxXOL*S+l%JJ8Dlx8i0?X?ZZ(B$v~aT=NJYEqRX0DR5!ZKbj9a-N zuf@R>WdvsBLjJM%24(B-;c1rtrINVFF;Ij2zjt_W~>I=7#T03D6x`wojO*yUuhJ1h(L8vKp(bB|TVQ$|8jIxs?pzswEo2TuO5@+w$-lYx&P*4j5v1oC8sJYL*a-@F-l(q?(oKOlBS6MU6Z{`?;pP@*5uh=o zBk*qLeXFijMsmWLI0?CXlgTVGf$=T?!LK+*#wY$W0Kp{*Zx9PWa5jS3Q#C(>Ut$v8 zs9(Og$ktqNJY(#6B4Z=XBNdu(=1h}ig82W~``7ihail>U-_N=Vtde=!&f1cEp4I=I zyz6$--F`aE+XHU1|Wf=QA@blC65XpBA|3^>92asSPmtM`X5`Uk~e`EJX_!Tx{$ zz|9xWc7A<%b@SuvpFiM#|AP3V|F-+@PrF9scl^(y>+Vxwn&1++yK|k6c&v6ojhFqa z{!RbK{_FnFU>~4y4;=isy9exAxPOKFH@N>J?!U(UpK(?fv&vTi#38s06EsFKz#+Js zCy1&#gTrH1>E-8$geXkZ4yaCvi7i}6WotvjJ4@D+Jr=)2Gv*tYEhAev@)`U46`o@0r>ehl42%rItsw^f z^?*+xx8-Y=di_u7xogw^4o{8?=f8)?+w9mo)8rp#><4)@lKI%ML|Ae_f#q*iK!ldAd+D-x zM$xDq`T8D#F#%*Imv`P{rs>=x;FB-`Bayk2Cm!4r!)%6#khCyEa+v-*^|ZBNiB!WX zqh|J4(Aq&*mr1Ch2bR9PxH(LD3L4XrKIfeix)<-J3Qz9mMl^d4oAX3d(^QA5eBV~5 zis#daD{&$iiQcnj3VQPux>eA(3i`KO>h=F<=B+pW*WuBi5dZ7&@NBF9Z=x9b|JD18 z)vEsP>sOCW>*u{#wZb3GJf+L7-WlKIue(*Jyj(lL;rJqe*g8R0D7HHBElsZ`#iw!8 zPrC!S>o{s2{-t;z-R3&;%)2g}VNW2PbA=JYeWN5JNLq9c$2|U?QNy^%1XWb7uUzv=>L6uT#WyDcC^j^ zv5{is|6oJCS{0x)`oLq;0#rvI)_G5debbF_Cd#ALOaw=Ai&_>1IZ?@M;U5MMQ zZm*R-isID&<2&f}Kl0#fdaj>EV}aJ)|2R81v(Nv}21i@{e-ouL|KBT26Q0AKO^9Xo z1MGV%-`vC65xo2U{36>A^q+w%7*j-nL>WN20QR`-<8cTn<8aI z2Q`Jj@nNxZRt57E+J39&RMW9kIR@?e?UM{z22~AMO@={kzij;Z(!F0 z5UI{B*xfwQw3bHDVl12+WjwY>%%(HCO_bAB(x-%Cjomry_KIc?&S^DO5hfr&koz?t zYjRpC341`~f#)?-io-GZ)v+kY#j`(tce{h zI*r^4aE=l|Pwp)gzkP>TH&O46dJPIVETx)O=znn9KwTGH<8>6V>+HIfBpY`CMgF$^ZZ({9{bg$o7kCfl3bJxjX5N z-DZp^Nn@|zi`S;j3`WB?XDGf~rak_BNn4Wa{bwMjCZBBk`GcY5pQsU@L)^~{ANhRy z0)9(LQgMm2{|w}`luAkVpwMC&*%gTjdP5z3P?*GXZlSIj7|R~ipsyvp6{9G7%6}Ak z=^E(O_RyXR?R!_DakkO#6=<@fF&9B*d*2 z;2_D06@j8~R!!*}5y?V!V)R>zW8~M1sf-UW0MEOC|G!(pg0gMRqKz;BtPx>GaW|qQ z+)@oGAgnRawLeffM<-tVXMxv5KvWHnYUOY&^c$qwv_yeQo{fFM!5emBJuj|KgUOhgM$6% zY@7dgBSrFmVffewS8TwS#^E_a%{aV)`>Ne=5-+-nNkTjl z==aGJFY1EsBuUhN)L=$`F9DDTDO~^npbxqtih7r;@T6- zL%afY0}StgH8zfJWMk2!6RNVK3mF{Qf$Vp4^feG1dG|C?-rD+n)mDc!6Vw~$jaqv* zojE{dpP4Mg;nkxxAoxl%haJlsKFqIXl32!^<#SIwlWoZ7s>LrLjUp6_I{840TH3&C z_je`CVlrq}aWAWvkkTcHekgmf8=9Fec=*I8TbDdLWKRT1(kYpT>5B{!H5Eg*cFSP>{2E25Op=U~AYbD=w=HF;{RSb+4Qxpx@?bedjx{0P+ zb*vzA&G}wF_SUj+8Q%-tR4Xjg@#Rfq^Qe&VvpNN}V@TZ99=c}+tR>FfD`0$`qjyDe z?etweDjdM87gcBQs)I`%!)pySJc(Cd7>Dr|vF$nE>^NRQUi3shpYGYAyaKs~b9sqc z-5kCWyr3`#U5cb(x7}T*6M$@K4SoRmAUItC)PS`02C%pd<98clIn_G9L*-}6yU=n> z+kG1qzHHvKQ`a}j;2g@{Vw|m+F1T8@#*sI8TBMD@f(}Nuxo=r^#^FUMUMFAsW>^g; z77iC?IbYkNu`O*%rTtI-&-C*P5{~e=|IrhB_>VYhZV{|G{~w$U?D!u?$J_j`n<>`$ zzo$$ztI!F&+}^WcKLFDN$o&D@?0q!ES78OL2-lU<`}f~F*^i;)qSu<3Zrk;bJ|`#+ zVQ_iX+%Kqh{hu7#>;L3n>;J!zVy%B|cvryzG;oiN2N;L5BWb6OEky5h$jp1D-Colj%R-RyW zV$C{&drY*o|1=Vhh9!ae^;+0; zpX8tB7pwBLe2f&Z!WGBSu%mZnQ;zj5CmD9c^f5g#pYobjQ?YC^US7?PyZpaXmp_9! z(?lzdS++P$+s-i#!R5`tAMjn6L~{kZudiR)%Ks?63oxC$A;~)g{rS1?$B5GEIDvKh zzk`DP=k#zJ|7SDBlK*AHyOJZ~64;MTKPd0VYBz#UWkak1=P|N=DW;fLr3_6ggNfeA zUm5|Z@N?9GJr)l5$1ZL8KSh*c5}uDnIK)Y_ZD0-mKN=MH|MB+xZ$ri6|JP!8fg0ac z@O^8_JT`V;K!4r4LaRZOT|@P>#@Hw8+2%fs!bJMthp2Afm$juqYrplgy3w?)&^qcldBa7L$x{(n)v9L?wpY=Qm)bt~gqm$q%A}RO!>dC*akw-$` zb*od$o|fO=l>p4z7IbxaSN?QdeJ%BODnJtVcb%>3yJ%G-cR*KLSNUdF&BakbU~RySDRr2A0I)Zli)c*abUd?f0Kgj|YR|*9*>0F{IhxS%ahI?j1_*5emVt1F$a; zDBg$6`s?bKd&-K&*-l)wFLvc767oi^?0)G`mOrzfR5+?_^|x=mG}ZsEBjnM{{fn)P z)!F|K3i+Ro21ncc?;9zW{+C_R18l%oqWwk4d%T`tHukI9;V1J54RdOD%J$lv*>Bji z@&zO@p5_K~uFq6tL|T=zk7##SKfArW(hSo*@CAf8^ii0A!=gRE;l+}bY)2%Ca(o7$ z1qRElhUMB`>QK(z^j1lD#HFSDS8+O8g@dS*|3`;b{LjO~v#tN{ae}pXk~xXrdQ|wxz#~dTB_u~Ojfvb7^vF)|CxRMb8vXJJ^$ZG zG338Wpt+VS;#Tg`Wr9;wfcmO2Dzt>j6^W9a_qtUg*and+TuG2Mn|-^R-delu0$HdY zx#C$^ge-ns_|-!WGJEydR#^t1={oqTTkM_+u|J0r5w3hAIfBGxa0kGg1U{}qgl>S0_gy;{e6LfI7(GYfR z82KU`mop*Xb)1_-kvnqj&JO%Vx>ozsU#xVLlUAEh_@wzMtP z@;@BWi|fl}6TsB@{~w*$`M*xjPPXU&8!24Gzxm-BTwGr+waFJ#rYB}h>vX@12>T8I zevD@*79a7f1+ubu-s=FqOHnn%-v9~=Ie$BWF_JIYpNzw@?-@b(gDgvMl~Ka#`ihPT zJc{)$GRCau)Z&kGF3rX)MleADf;7axr3g%5=m%&|cDv8}^CU)WCx`Z76z$JQkWSGX zMmLrCoIm-Af5@B6Wz(PNlRwd}b8r?^nhD#f*9E{GSn|HUC## z|2Fx5e{BMQq_JnV*6;sm*8kJ2E5nzUi-cWA4MPU(=E-KR6F5d9E#x~i5^d)>kDLgL z3N(TezieasPEfJ;M!kNtvZjXri$5*`NGa>kg$Y z=^aYaIOJX92c3YT1X%gQ@aGFgp9?{=LZ?(S`g1)|BN5#=6cAwn9z@{_`FO0na=MaL8piroe*~ z?RHdq=3%1=Sha>jP@eiy`(OxmRKiQvPDXy zd6AJfp!1RszgXHN)YlAe^AnnbDS{ydAu$$I=dTkSAOP z9qB-YR&NM)B?0{EHi0Qg!{lwmkfNdF@9B^7BfnAt94qn za!8c)n9@_dBr=3pRU8_4QO9(0wXE+MIn@~~>AH}i(aeK^*UScODXJD@@fGt&7d#e3 ztLBKBMAl~4!_cK3V`-!RUBCW*E&AWdseS+d;9z_Ie>26@|5knw^vBZwmN+*0cJ#mN z*WZ`ve`-yflJ>Y6iORXKGa^!Sw18mj)mmD5K0-=Y^kWvTQ3 zIXykL{D02Qw&%Z_DdNxp#T3&7g&tbbozEzT=u!bI4|+{?uBj3TfPL_*;UM2NN+eu{ z`ihmZr^!4r?lk0wn_bY&k2bsJ(O_5n%h~J;%ru?}p~)3YCcNT%?qb9AAnxeW1znE^ z7331A>!TU=OzT*Iwc1CI0?(@42KwyLnJoLTWwcM(mW@R9)f78@LjvP5O0H3WyoAJ7 z3I{2Q%W799aVYJm0YY{8S2op)y>+B=C_!N(Hz%F^|DMF30s{U1M=vJfKgiv6guKNi zKn?#tJS)Wi862K&`Ts_WVDB*r|AX8u9rQ=do1QjpHtFxfw&vah`Dvhb=kganMvqAd zMkJoXWDih;z$8f`I_&pR*t^G{aD;pedn6wB*{?pU&ZLS*LNASD6na@=8NTP(13!@X z4*Pq6#NZu@0_dS0PzUXd2k>eP1mhye{||CUf5J?)n!mzRoJb2rI=w?N>yoGiMmWTD zf_(4~a!19u|f%Iq;UeKm}d`AW8(9;w)_Ja&OwYIB^Dkb4j3k^-aknw$5j2| z#vQZ1vQ6Cly#v61lM_&j`cx_R-II4!u3il5zwtDjHWXBKzs#9MwX9(Nia`X3H z&EwyaH`(#?=yVe(RXsmN#snhK6ESEP*bAR5r;iaPDdv%mdz~im7b@ zEU&5oJrbT8B@^0)=&q-M3vs{z{)61zWQ-ATQ$rrHssWc=hC}A@kB*n}J+6`eK8gY| zM^h9gi|YV&^8fhgq+tI)+4_HMq;Nt1f{!vAhU0VbzF_Ch(W35PYNG63`$Q!Xqc z;!|Px4ADK?FwrKb2&MF1v5#`r1Iq@QJ=dhdJGS?P3F2}g9}0`jsuwozcaKZq<6@;E zzn7!IR0tk&kpamNw!`G?px@j*>%JpFfWz@GkVxO@_*^Q|9@$4{(p8nu{I3Hz&A-ZYy+Q6V3MITg>!y7$(vCG=k@25A71i- zU@%ZT#UbPJIQjp{D+XBvIYKf29)}4UqqrvmB_`4&u$S8vC@*K4(g42tW6#}Gp4)Z zdet2Q6B3e`fi83=4MlfkYxgAlE~!AxMGV%Nf1;S=Q0|aNrl`fqIut|i6DLU)e)9GW2`@t*eN25*bR=CHZtMvswly&( zwv&l%+qP}nwrx%{v2EM#KKagnF3x4I?$uRYtE=|AABq9!Ruj0c=(A+n&K;_11}0)O zD4JT7nZ8O&6Z2r4k|b*aYsQIkTT8~M=h^mtzMyjjz*FD`O=%KZ-dyrZQo}b0B-fb! z*xc)nthN2?;Z$#?+81mGywIajcqyc@jsakz_^q81wtTNgbGwVNKnF+H?j<0*!tfja zomv@CblC3dyd$z}ONhN#S^Gz{!l^WeZsKoqIY>g~45lcxtZ=D(#tV7XTs^-=vqj9AYH_nZ-99y5Q57ppZ3*s( zBQ@PGdrjS_%3+K?;C2RbX15@0R_2e>;w9Z=5uuBOp)a_wyz|ERde5V> z-wjX!Si(p;1z2c$mJ;wUeW;df3OK}nz{s9grRB(eC>KQxha{%`CE59v)G#DgWZ~1C zxk(omioPxXH)7^ToD7mbhw%opgEpNX8>hL6xtX4}_${BvUF9u3PAqL#fbhQ?i9;Qx zJl3n&yQR?1MPs3;SzT#4Q&_R7u|ZYu)Yvi-fKMBXoabX|!x~Wvxj@ zYwF%sxvnvT?Cvr zRgZb;@M)p6>j+Q#$dz;Hgh<2Gy;IFDqSQR4d)j-btg?p-R(7TG-*+b~UKRK9N41|J zZH|!cy-fKRmV#_ZhG6O3x#G%e2l)g}KXv4Ht-q)W`MtXhGU5iD+|A9g10KX8uYhfa z=>2RK%N3C61nwE|YJ#a**NTllwqDE~Jg%?r6G?b4B8bPWa_(h1=m?EyQ(_&LXJTdXX z)uHlVqHl8far*#qEQm=j-zY^=AhdW8_$2V-@b%W27WiA?)zJ5c1C`=;5O)}C+&GCX z|JDe0(J#zJ@4t`w$j&i8Dz#XUQyjvR=ug>dk&39&%?Pd2?k1$(-pzjM{eUiS0perc z_aP#-UiguQ)B)8X-enSCLD1<#n)ebhs}xt@b%*3&W|cSJjo$^M+Y`r~1Nw6Md?DrW zlG2yG@L_m$MfF8=O60XPVfv0728{4}L+22;YQlbftS*p{p2voQo554b-okh>3SO;` z^;ykEwiC=&f})=^U_2lFj74de3KC!!)@o5|N14lK`Q!tMPZL{bGt&*Qm|gF>nPJdu zLEaIp1Kmu^L;D%V2$E(HxR3I<9>brQXQubt{QlghEB7`$zePUfeG{%(u{I0oMQG>} zqA%q>i>l;4&%&H`9c1ww2;KV0&&i8peFUV4G~f&B_>$pw1b0zLa>?12hmz+}WhB#X zeUKZD*hmh(rnm zIT+Q% z1K%T?Tw*oDiUfqiJ|#bFMfRobDao4KN{c6a&8bJndYf{(?Np~6C0Xj+&sS9HTF<{H z?#HIGpabBJH@T*hA%1x_lN-YWj2ug)-efd~eavycdf>mGa?oXAt)GN=b~C`=io?U- zVh*meyp84calmJn<9MDy)%e$^fx@mCT1QU%3{flE^LbNEc^k3W!7T`6Pa_fcaJQ0q zifpVnZDVuE%WlbXYjtJvBrx#I(||Ys`SWJ>8Hk&WXEOt2SLDE?CUC5lL9xg4Z&rlC z+rdN!|EJJe1Hy16HwAA~l32`fcOe32*T*WU0mOC}z8>HOL*tmdG5Fx=rnB?EKD#@I zFsE*;i4Em@?;ZuH>CAJ*@MC()glH?>c~4#Vm*Na{rJ$9|&`xND79bU}?tOQ@>xUv? z?KPZDsFUo7EY;Qso5WmlDbSnCzdrCO6`JbYHoqW3!YD2tq(BU~PWh@-ieJdba-~!T zCojUzS&Y%L7UXL+oHnZ=pDzZy^dEC0&8W+((}!fCXFTpoq0u@{< ztW{2Y6(=&ZnP<1*1M8Yx;iaKU1I}5GH}h*$qynL##mmGYfq6E7m#Lq`u-kgo)a=*%sf3Y75{3)A}n#zY+V1& z>%{|eltA7FclYc%I8ufjbG|WGQ4Y`g2Y6AQI_8Lh5pp6XiTJS-2_a-;Bxa_Bd5DoN z4O|aCzbfjCw7=pgsI~QE5U+kTE1Yh{4V+dYo3n=z4zDgijvvCy*m!{#Q4eYi52-@iK~HVQ|CRwP4#bH~h}#HqbU8bD zCN)F$^v>waU^>&(aA2rIotbv&hKJ!OG3S3A|aOfYpWmbdYDAEdYy)96`W0xDga}A>Bml zqFiDK`f~dCjTJdkLs_-FCGY!T40hj|#TZZi>oRqTN=wRq^vPtGfzEP zWG4KhZ#{*w3ukeVL_J)fQWq}iaCT}J1)@WTc`dUcC4{rTqsZxl_A1F(84N;2Up}^I zkX>_oeT7X0PA?*nX>VhREYGv+%@1WCu0<=+TJa%XiwexZSnA}diysfD_DeiYp~4T7a|o+N@Ay}GCBFqr+rU* zGJ?1>EqR-e1-TG4-W++z{2($0rc{>J8-1vmn&(F7^5>3yct~Ui#-MjEZx!E5=+j17L%(eUV?p6GPZG!8F zC&yN+)>joOZmOFeEDU#|^p-d!?(Vm<@)(LKN1aC0?i zz8HWo=ZEa&7jSLwKQ<@*ZAX>t^`ZW*M#LAO0dJ7^XTemcmydQ!F=H!}%!U^2xVG8g zsZrZU#rTT&(?0%Ta`5K%&Ds@cLKe5JZN8 zG2vndn(W`usQU$}W_DG=HAQK45IlKY7S8kWox3@wYpw+3JywORRX0$!@?i}vIV6iBof59MbvJ1aE7iAz z2jdhQ`*-LM{Xb*n*%>v+_lBtSQOP-Fo>P^kfZ6H7A+PPmAmGt4+ zZr-*G^67-itjeWs8oeswKr2m2!tDWdxf(^xH%4dAGcN@BKz}BCAUD$Vxg1(xq~bdU zqjbN8n6XbbskNLU!t9jAm&3gNLGfMIVD~NVigO73bs0_Zl7q7EnNPcoNpf*k(*cIT z*ZbqL^_Pm&TOXWK2jBr1l!V3&oID#Jm`nXn0;%>$6_-PVE>&A6ZIeMeKmdytF3c!6 zuqbgr1qoV8R6>mq$T_3H8=w#@1R^d|W9khZW<;(d#*_huWy+&>`J;YjBcVW^7j<+D z-g(?1*T^j{$luH>G}(p#6|58X4L2KVi<~?r)gE>6xSYW|$!W2S5vEzoAB=OBWnXVU zfrRE8cvpD#3N<7U2riqHfq9L)XtV3&>h>Ycq~7>N+era23)`W_-!w}O)_Un?OQXQI z#kXJNI`bU(4J>(KQ5ZTU4$n%nB9kE;lQ@pz-|J8OJS8K1s%99n^RdubSA96+NIiNTyGoLYe_1=Ol z#ED&jC>-TaQ1BVKBl~kT682nEE#iP*C=ff4e`*-GB9Q>HosiLqxwbGmf(`Oo0Ixg_ zM2dqN?Ge1m-!ZDfjT1&KN@-CT0zy-Yw|>2x{wH3@xQEalAQN;L%Lv1AM~Oe79|@RA z6@loHvyV2fdl0er$P`0~K!ZDlfCR;YK9v2Xix>MM5Dk{Ti)}PDF5-nK-1h(xZ2rr- zom(OLn}N88Ona~E;zd~x3;vW2MGcon0K+TPEqmF2KX4H;T=W2=55@ri_HkZ0N^`cc zD188R0(}czA7+~;z)I*OhrF*M-+7JI8PF}k8zr0o6h!1Jo{PDU@`q|SXnvR6r$p+H ztYP;}k7wWw59p0Sw4~I)QB+#&m6Pl?CSF3>F8HJ4G=EzFX3tDW~Cn^nco zJ%|PNRdETW80p`4UIMVcWOB@Lv+_Uu#3ey3E)rBp1&?#x$^8NtbG8f8D~e^Rx(^P+ z=YEF3-h&2iLy);g_GcIC!|@ZN1PaB-BWjmNcA(0=km;lhLKRUB`8!zLm8G*vWNf2> ziT$TfZx>U-qF7Zz$4<}rpTJ&;HK(9meBZ&ZjYUaX_)fg*MOCh3N}6zmd$`|hxSB%# zL{b=)8q9+3>7Q>DZidDVw;YWp!*P`msaO$+WQ`uN32?qNiMcy+)Rl($yAJStsZsWg z*+TRIf&(koKEtAaG})NP$-eX5nSWo4XLCKN{5YZVr@VTuE?)Z#Z*jrozbHv*>M%zR zGV|d~x)x1HV_06hh~zIYu(r=)<)lY>2$2CJ@0|u*H|j)=Aud2P}Fy z_gu+K(6)ppe#>lHqmuGJA*T!BQBVaVl#81ivepgrDrpyEhrsWKXsG;REoKNI(a~Us?~Oya|YxxAp>@jzw&H&Wrg; zK%|8u^s8^D@Jj3L0vk;jt0%_iQ1Ao|@vERyjp)mUd!ou>6;!~Q)y1eAf_}3?MowpM ze*s*t-;P=mdDm1`mnkq8#OUyAKW=KBMD=*qc~71|?Ndk2gRm#DfnCFk7$cxPu5W2! z?*3^;N0XJWo&)^9Qy^SF@iQ9@x_aM{*t-CV@spq#kW%~0hu%>ItA8RIoRO6>^d{ zT~N5i*smCWw2`jkrX1e`NeNp;oBg>yW_Di}dx2h_%`w1^gux>q_nrf3w+S+GSQk%9 zy3(5g?}*o{deHg&9Lfp>2e1S-gRg0=kJleRrBLKm0mJz+E{ph1cgh;*xy7xnfH z=WJ+#0}1i6@zL*rb_e`+rKit%mn7-z+a>?DBuEBVMP&j79NV!%0UpSIcC(z}WSxco z{Wcf$*escQf6<4yDJC2QL&%o}a`XJE1}a{6|mSD$4X>f5o9o$tYOF zYAz>E)3*shjybBh9Z)@Zi%79u%+K8}4C}o6){-_%SjoB%oDXe01r@*t^3!YrIl1{b zHtvCce(C^|mbG$eC!lAeU`w8=^fcnu=2diYy|{`m z`eTk1Zj?O3_L0fMpBc~05WTH&wO@w|(zyy?#G(Cwwzj!!G{WI;J-baSsBb0ZnnVM= zXnmPO$}abNpBQ1R0R?JLKEFCYD4>TbO-Cu$Ak}xS9PxAH?8(Rm1ivO}n3s%Yltp#a9Yq>E!R)BxUR>L5rQV-k$QaK-k;Cwj#7 z-8<|B87^q1PD`BfSM^PtqZ2^}dx8k9yDZotRD`1skkz+YtUi@zBKiUrHa z9W&pt$c~-ObKULc$PC9$cu$7+XakU)q+y-siN-o5q+6Ib$K!@N$usC|u45P2E!U{) zUlG~SVP!A422qyA?&H#xdo>JEXzUVG_Sx zFefjj;Se-|!U)=U4?8uT(k}=DNhZe1ORP zZC70M0ht~j?C11mnyTeVo{-E-M$LDE0$oJwkyY~XJ7MnNone~)`DdSO+_W_?uIStF zupyzq2g=mv_-|C*G)3}&XVsS-Df3nr@i1^`^;chvf(VtY1kX*NE!e2eY|K1SI|=AB zb5E4fZwQ^MV^IM9>(@&nud9f8A^YmbdfR=+r~LhVfhuu;(e1~L&fK+1Xsp8%>8RrY zpX1bupU6HW1L#T)@LPbm6BaZyuncq}9nl63%K45z)$yIspDeNp9$&xDYv?V=W~APG z$Z=da@g=C~rfb-%BdQi;KXoBw4{NtCJHfy8o^8ww93letQPTh!s*~=u+Ltb|B=VWa zndMzt=XO6LJ%`^SudDTf$z(NrfxJ5`4lo5AK~x06b}s!k|9b}8`3u~TVS4LxeJsAlNOSa_GE-eb@80&H*FJ)BKr$sl=f`x}n)3q~B%In;?wn`YZ$`RA?`vzJBlt%ejC=Z)asv)=@sGPu6g z1$>>Hw%Y^E>ZgG186-T!+uA`_ee=af~nGBR~7Ghe7$5hlu<081CDS%8J(@&YAQHk6^cP{tfb`rHFgaAp79L z#>jH}u+Vi&ov?pEx;CEjuv2XpT+TB$vct>`c) ze^*Ho?7FR$qX2ICIk90ZlV#m3CQf1gS&NrT3H0Dwm0h2vhMD*Bm_W-VHYTMIZN?~= zCqIx1B#N<(dEHFMd#GCc4`y zXB1kfmgL8$=4(a=sA)Fo3yod9F}>4?vL-NHa-2g4RRo-j@3Oh-T5Cqa%;^U$30}1S|{?lsZLMDA|j=+J@zl_6p3pqJdNt|2DoCR%S;wK^heYijEr`IXc z)WW{=!smX@=vtI;41|Jh2Ob3Sr&DQNs;~9tzXTDL>YkXZt^U}ge!2$d~O>uOg)!oba!S}Gc_8pq> zO{i!AzDX!Mp@?pIg~wcov!6W_7F0#N%U-@?oQYjN*;)GZL-3GAUGG0CLz)_RTRw(@ zW4~m~hOgbETq2;AY!l&-mL)TZ~0#XTjnNdN)L>R*>aWOg>}Q#qoMZMTgZsV(Rw zeC1wKVH%ew)I-;B6liyW0}}*ieB_@${@mQ3+=~Np?pjY%1}}zT-g)ZlmF-6A@Iv2u z|8bT~n~-<)k5ZDnq!@(XofccFPuM6Pp{3fo2c}X9Yb;(Qc38?uY^C)XBX*UV@X<<} z#l0pD7rwJf9W&S?XGZ2e zppO6~VW!4S;r!DK&DFU^HcnvT&*F&rPJ}7_YbuRj(h-Q9L=DITlleV5j;-IyLnR%g z)yZEN3{8IyId%d~yN6 zgXGvZ$_aKSY{xgmML1BuLf(FKR1<~(fyG@rB@_$7=sScEA`&u?^50NxUl!?)Xjs1I zO3b3w=XCwbz8?I7Oo7UaohI+6CP;f|>U&Vw zfMz;nZd$e`9QEgFO{fQD7VYwwN;#Ed{!jx_sKmS%UbbK4aH_4awlI?k3@3M&Vn^?K z;_ENfi@CtO+_krzHoy)pjhsIMfbOCG0ph?;q<+@QF0izGVXY1I4bcOqrV2~WfQK+} zql~{;us?O0&hL&rBR~Co<|R)TlLU6#^?BewA{_(dFP{<-+3tvfqJM3;9Hzgcs5c~W zlgb?p=6ghpH}BxV3L`V9aohue2a}Ywwh9@g?obdYSf*bQB+7{D(*MuD&t!N<@!#9!@TAm1+a|p%O`y9P!i~5A(tNm#mmYxGvpM?w>vv( z+!_g7>-S%YF${x}T!mv*h`39G|EJJ%iV_PKc|GGMi2aR6N+?358ZgYQ*Z<9MXeq6y zGJt^OA|-si$>tz7mhl(p!`UuEN@}Q(O!@T)EJiVjdj+_Df7sq{4UCyc_$1GRiIA(R z*|P0{+)d%gsIrl*tprdL*K?>UkNMdL{OB7w0KWJEFjqZrBjdgOg9p6T7Tdp8Zrbh_ z9)9Ie#YYf`Jl|5m9b2#W6OG+Ra-Z3`2*|JWC+ zS$5e?y{9E=`@_vBnJD2ZKxej%*C&Q_O-XgQDQ+#~k!hLWql=#kWgZ&Xi8$82s75m} z3C9g$i#BuZ4+qQXQv{x3luxR+5dial<;yKO<{O|# znT}R61>GIzvZv^{)u240WG)VjMc^2il^H@SFag{@HAxH)bqhnBAM<~;NM_=ZGocMH-V}bgF8mY z5L6d~W9+v4DL@$(#3{;>j6My908DVngKQSV!#n$z=7v$}_&~$?XSw7z_4VzXwQ~;C zFLdjbIwB~vH> zaq!PEHlBKdxznY_pBMhS<>-o7|J}Z9=-u)c9u)6_VVFO4PV~Q0O%8~NGF}W7malSf z|B_(@mbO)dPWFteGi}~@lcox5zLc5r#t5DCbv-mTlid=D;!#>qYyP7u&hVGPjkf@O zFVyf$Wd)eqFz7?gTmME^%`50yPaK&=w*_pc53WH?mf#$E4q*PFeg(s_`=Eq9@&HMN z?VLpzak?I&py(Pc(pjA4Kq{cD3tB14zLHqa|E#6{%v{!?in_QviYKI>;AN1Kme(~m zv<5SAFakK_SJMO1d>%n4LxnnwEqRP-(qv-7!tb+Q(irGx_;s`Obh!D!cG>%zuZCv} zu5Ulwq%L;Z8R*aby5B<_E@2cSKesfKN%tr1IbFWAt?6lZMK`z>;xP&xV;j5QDRe+| z_ioYH6nc9|$pjdk*D)vMYoR)SO`r)S{U-U$y(k*_-)pA*^)7^$69JEeBefsS8p#i* z!P9Zyl>|7aaPp~h$Xiql!%UR{^ij-Nt|y?Oi{m1gBH!;dQc;o#IGkx51X8Ji>tGyl z{8*cQA@NssXV;`+X#KR#=N_CUF$9y<&(@Cr9+pj>&9OFzI3Zy_he^lX$HWW5Tqos2 zEriv>&Q-g!`j7?~eq&yzYYT)_a}gj^=d1VuP};(6A)UWO zl()?idy|whczkUzs@4hfshgTMN|T(#H7kfFj1n|v*{D!cRBdBo1GyV1&9s7bY8(gJgq~u` z`0J=W+e-{-3=^|jBD41Hv2+I6p~Q%zAd1LniI?mmH)$&;EBsw^S`r&nA#Jm}%rU3g zy~KOmLa4Ys-+0R35=hU!+5KPI_Vz0Q+i^^iMPU)S(R9O5FVJ{ITxGDCeCY#6ZJu?8 zJVT&3MQJkW6|eb7pgj@>rd?os2#-|vJj^k*hRlP1_XYy3J!(#$694(w2==z=J{Cqt zB7yVrhQ++S1z~BEjvzkzfcHSUeqD&n#7RCP&qhhqNZ-+*)1>`rhw9lLqn>nr?9G&4 znC;qqp^7{ns_SsX_GFDI1i9-X2?&bS^SFLG&GwXhI|_X&TKRXoU*DnLgY6394))w~ z5hAd(y8+Vz7JaLq?B`r?HMbzJH8Kw7X~`)Q5)yO;8M=G;IP;0A))SV`jb%Rx)uv@U z@enVL@{f?Egbm25_Or!I_DUv5sg&@j6$!+VT-47}>bFS^3ib0gtWi{P6QhX5r=m(| zFGCGWH6sPrKLnnS-S5ImHaN9mhBE#Gp`+xu@Ey=gJy1_$rLl(Huw6RJ7b_W$M*g!X zvl^bv0(vuEpv`Ikec3npS7LD>J>FC4>Ka7@E?U$j*Rl+4bQTqSv^+@vBF&(+lE$8H zNa~q-dwv1E6w^I9z=0#V%W*TlAG3L=j~8Qp_BYMqkmd(i{_Zaea}15Ojw#gy@k~)P zj#NKU&HKm6Iow3;h_Oe*QsAFV^pY>+kmT6r)Gq zmKJ&M4py<>n+LE9w_OnZ_PH|ZQ9Q{w!ZgXM(qfb-sy{9_L+vBohuXTlKqz+JLEB;Y z&vwr_&P%WLMF8e)b3st!A6F3yN+S?sLSSR>At&cm@nqq?t9!sZGegFm`W;~pa`kj% zYJXiBsw3uvDaSs>iBNeI158`s4)ANIO+PZ<@qH{71f=v+EFkjF;p98;#4lxK=KLCV zEmO|HUpSNK6r33hSw{cTYgoMZm6bm?p9(ZRPhvBbGj-=Vcpvq>nu7nj8;v@&Ak5qT z_lmqCOUh1IJ6&KGWFs^JHx|rNS)SMd*89Gph#j3E+T#cColMUJ*X52M+U(o&8&uS^ zU<2rjNv8DBPQ-xLD+$w{mVT8ouy&tb`i!nx^GJQFKTE(ECDlT0d90VgK3DCaS^h)g zQI@?RhVSNSNkrwJ9QIs_BYHoQFsD84@&K)-bQJB9!^@*QZ2GW*Py_B&XBg6iQ7upg_ z%qv4lf^j#5OALRs%oIh9@jrQX9kneqdJe@h2AMmfb~$k-v3&&l#?{!v*6gvdj@q=2 z2v+dCV?-l@kY(h%_i41j$@dzE##!KyVL@<+tdZJYBVX0?POqfuZZujqJo0<}Zb@Xf zeC%5&5(4xcG<^r4{dWO7bUGF|%UE+r9Q2}?z%6bw1mK9m4Os{Cu)F$Ha36GAHPTQi zNC4kPu#Hq%7j{7aSs8arO|9ebO|gj zt*Qlp7+ltHIU=krMTZ#ZJu2!-u8m3NIHvt%U-uLhF%AY4y=+jhJ-9lWlnBY~0dsP@ zSj3i#L;zwtB5dX>$Kr8tOmIVkJ*fk~pbV(K4rUNMggmMfixfCnqOq;azZ9YY|6{7f zi*Oh1Qnk4t$Ci2YttRDy&8y3ASLCLfce9=7Yqhcz+hVfnd*-kN*{U(ur;X~FYR7V{ z1kQUPIQ$S5+7ja<|K%8evH{{>qj!U_uc};g*+D|rX2NqHfAO&_FVOe;q_2!MF(b#Y z(=hxyKhtn!#9czy`!354YGwZVLw1D&9@S;xz00t4ng70M@c{)8{h79RITZUY{Smmb z?AtfUx;L{*n29}Ka9E`=)U0I$l~OU7fOGU2k!~TyKTWCa%Vi#WEicU}Z!M5)$Wn;K zV^8I4S@(uR@10Brhs^Kf{;jYG<(M<}bmHvBpuV)N=rGrf(x*>bR;Sbr8P-)*#l1?u zUze=G>1HO@rEGQ{*P!kFLxwp>JASNW6meaQ8D_NKG~|0t?e#_w-+He@p_UtT!5S%% z9nJzXU~0tdLP+4ievj8pB$3U+=(DFiYc?+<}-Rz#;IH;3M#*Xha+j7Bw=S^!`EjM0MUkLE!#jo8qmKGb(kjMoyq^ zWh0X!6Y~Y2M}tOdS!4?IbGK)vx&$J%z3s3o=K4Rl%c!+I)hSQVHTmlUerMJ_a;3zU zj>yYSS+MYFc?-olF(vF?6UeS1J} zV1&b}!1)1=9n0UeywUxYwSu}^=%pThD9&C%f~^g|R|EPeQhWQ6pRIwqD6Y$!pKM&* zuQxwO@A{N)k2?tv9O0|30L&W_QXuJCPq0;bh?eqo9!z1-g0gdk=88;gC%)ecYhU4OAqIY48oJ+_D5Yqt_JLxoy4`iQBPAJG)ef*>pD#zN6riM z%nGeZXVP{Fy^aifCpodz%^*!WtXO-qWgwy7e{0V6CCtSdj+d50P+_(Ve=V<;t$S`` zScNKyzeB}5yvH)8CogYXEz?d8xQo(?>6A#p4Xr^)Up&kBeIi_gV`j#?>Rjs>8k}zp z^hJdtq6F^;D1E1{NTRd6alzWau*6_a$N)^zSPDtBNFTDzFD7(O-W3ZO{iNLuCbE2c z)6DMzE)U?{)Z0ZGv@qc0<3X*j+gX*vSsP-vT4)Qro}Ysm7pzs*q7P~pcDL>KQY2cE zq_N|dY=i3s*MJ)&5ea*#MwNWT4&&IxH>_=j8Eb?0q@q5o$4Ymu+)PWm8UyAVZct0e z+Z`OU84=@e*daR1?7#$}lq^6IsHrWW zX1lE;!Z7Jk+_kM_oHN;n({RVl_?G#v{bI*khTba zH?^<#$4dFT5Z1ysYXPh<9n@yUbUxz-0(^ichlj8F|G9p0{Rvmq`C%C9|DuHBlfz40 zQdRXbE1MEpGR!>)ak$cfEa7cIH!ZS#Cp;vReF6q*x}cf#>nfx(qFszZ{?L zh(5_g)(ETM{H%*xVX$+ZqCc&uP~Cz=%!-qg#B>iiC#a|4y`6lTbR%TYyA05y*SlOV z%0H2`EtuSR7|ogH%u*!RnZ3a9Y=lOBqyPz#+9n<9KO@uh;7%wZ+e#HpkNAJ5kfEGgM2!(7uW?aQ0sh0<)Hp z*Iyi~^%m<8hB=nfgbN?}3~JV9k3ool$K6!oPtu`>Q8zokj(sfP7-KK-U@NcU5;lgV zq}VVtH$wwsvDKtn?=rI?+{>Y8ePZ?QNY~^G!wyrdJ>cu8YBFmwZDlAl+SEl^+2Jpz zXS^a0V#wX1f9tf5P3T5jQ-g{Qvs-I)oy$xa)n9_kKEW44pxD0LacWaM^>2pHQiWuS zQU^}C14m;a)HU7CAn0z+t<;wPR@gYWR&QLk4`9+kQQ#Nw()|M1lyDExt!VVM^aAXk zEq}5as5XWQxLmt0IL4%LxfcAv{z(g`&?mq5Y6jn(49G|eZB=O%8tuwk*TwZvin2?= zCyj3^rxII%jaXg*UlJgnOFaiI79m<6ZGi! zu7ZZwSy^c{*2p@awO-i@3O{_1AS!EA2djaO=CJW1a^-huEGsHe;vBWE&|oEI)o{kh z;2i_Zd-mtw1jzZ7TAolu3)|`WPgX&49TR|G(aa?BwqIe6`U~ofe*8Cd??%Qw1+9Iqjr3su9N9!YzQM;Gq9{2> z=m=k4+0e&ubFPt1w_?w$qPf@^hNE9fF3%TdzCDOX92Ou8j8T%(9_Gc)Nj z=1d}EK)OW;315!C*i(u~ptyj)(GrG1uXmyufq8FFm5B?I^3YQiqKJ{=v2D+}+X?t* zl%IG$X<3>mOP=tp=rb7=fHGI}Se7AoK`&R3Gu8zWFx-u51~Gi;024}4kZdE=7)!P; z6rH0^@FUvc`~#+PlzN4Vqa=B{GB*0on*%4IZF6qHSGcd_}4QB27yAcxJMwi8i;B*3~9W5voZSe=Z9a6oWj- z$;udMfgC<nYg_@mmiLOwdoWZw_ zq_EG%7yNEIM*b$|Wk}~tp`M*MjrF$Mp!BMcP24#He8j7pY*RP^a&mCCOao>AbBcXW zuyXy}Y|BUoF!mYJ`Q3|o`z<_ORXnj;3pq37e8;b*@T;PF50Pdbw=f#nn6lCEi5Z=l zeYIR8%*dA`r)@vyg6V_vKbU2p6p1ZzqQ=@vI66@-JrrpC*^v4aA_$;Q~#+63#sq$1hF1}1LTAXg8|;Tli|mVj5=<_Ou5&}EE6P=G`sOlUr$`zFv^y{K;g zcG?t~EEbY+K6ZjVb~0c(z8`Bt|Oz=@3r# z2SoO{zw8llgjfo>%_*{ZrLFL$4MZ`dCwT2U-ay}OP>u!+!lxDeXuHTw#@vv>;B{im z-KiD!j^mtT+8{9<4Q5JyOwR93teE3}*9zH8TZI+ub2 zFDmJ$ED4;eZ4XsS!^8;4_VvBF890UaP65+9g6`08)@=;14pXfUN_A04`1T}FdLu1`iuYf_a4lO zb6EiKdFcNHmo8}0*alkVixCQ3D{dFi#+yaZ*zI$T4xerOJ>4P4o9!G|;*q&dw@yw8 zi}zHGh!sj&E2VBzWdVR11*s@T1=2HP8CWmx#p$3$FN+=Fphb3$wG1tq#p=k>a9RQQ z7BQ=`3V+s8TJXRbU!N8N4UHH@T8JtuAcm6`&S))SpJ;{&Z%vDaRB$6u+*g)VTq38W zjT8(5a(@-$84l1Gy`&xtAm`aj)1nzEO4~1(QA%qrL=6`$A_d%b7F>Q_h|-KC8X9G5 zM60r{HKIi=S_ds!unUDnPK+YIP<583hKm*+jNly(aDpuh@rq<>Gg=r}l+ePcvvyka zpzj;BFjA*1LW}m4;5ax9*M(Y3(W90Yew+tYSOqN>AO%OEo))~?GQ@Dvf+Ei&)95ND zBWwgrSj`$~Mhy!Ix3$}zI{Xyias*(`A$Yt@4MQYi_uWF@7a{l<`?v)pEXVEHvo~*Vo;~9@ zPEkBYe&@M`BM;smlc^v;OFs82^!+|VpuPT4kg2u@D_TztiMb&hw=U5*2O*%rW+e==8*U2o0B?vAkVsw`fD{D`|8_7l>V z4|@NgBsA*kv(|0{`u-67`oVh2X0^*1?EKX$exzUqhUIys)R|U6_si$W9*EHtP47f9 zE44gv=mn{d!0pBP)yG?Ds_b=sATdB<9`A{FZ(iPfJb&@}@=ccF=?;P0{AuqGbJF3q z|0gJ(;*ih86?lNv<^MT6KCu12jt;l}UmGb;z)e2Z55x4|)B|j}SbwYZ>RQky&T-I| zT9FP-y<`e8mNcNX+W`xU-V{*^$4F+mUnUEXhJ^$wF6_D8N!(bF0DBIXrX{fuP+fjY zYgDl`OuixYO6!#==e2n>1brXPbg{A@kg>BiADJOwTGQ6$VEsjx|9Hvr|C}5j+VP(b2B%y3zlrh$T(VIIY}kPq_tqhrGS=(P*1h6Dy=|i-*%G}O;Kp8_awtqm-x9;4MQ67*uM}&tB=jvTyVps2>_2Xm}M@Aovpr ze46J-6{Z+mox8Cf!9qlpVn*a@1XUJa73YKk5`z~a&8%?(_G5XYm6WaLy~Z5Ojn1X4zv`@h6wsFfi35t6~WfANH|cLdAgK@EfDO*XpCuM zyJa^-&=F!cgI9%Q8w68|Vwv!BB?xBlR)t^$DZMALzbXVXc&kDXO(704#<4tt0$$A| zY=~e2<1tFEQGmSUJP7JC!@9KxWW| zQ`R35;7WY)^oKME-oPo^e|l+tB$Dm##3(?JiqHuAJT<=f6BldmmhYdf+QUu<0DDrF zZKZ{DRohrC9&q*`i2_GaE(;29ah30@m24P--%>d5VUoR3OnC^V^N;LD z_C|3-{)YX?-f%X=AG1IHhqRIRJfbcFSgS@-ssluFxc#PNE$@Zi{ptK;Ci?VDyLr#7 z+NtnB>^gdC)nqS>nzH9sHO`guYUT>c(cd@iG6!WZ4j+L5L*M_0Bw1b1XRXxR|BtQx z|Ixwm*8abd@&xdsx5A#k@ipwsdwvNAd3#IW`cm~WPU*aLKJ~S}H#EFoBP35qGUY_x z!DCyWH*arVUiXqJA9mGyvGgW9pi2v5x1)Utqb2o4`(8>DGF`5H2}7E5_k>zBCRtih zi60DoFd`(8cZEg!>cKMYOBk*CU#;PA+>~A;r@N+agyQHL$esSXGlAhJFel>PFAiw}gMevD|Heeo1yg!@Ou+%a|Ngw!0g{|Nhdhvd%UgIs zymX2}p=ku>xHOhB*KlYqWY#~?-#i4&n5T#f{am{kOK={Q$# z8KgZBaZL?yeGUk(Pm4i@yXi}c+UzLi0x^~dh41LFu$_k4`tlqCP5~Nd9awyXZ za<%b%Nn(jZ9-U5g$2==2mBcC!x!(kG^isNGnL?6^aoHDPAaMyg@ z0-OL6+QeNUu}ItdbDK~~A=g30abZM!P7Zx;5lNiYl>d*tZ{Lj^xBA?_{S<^9AZ4Sh zcKI3{W>pF2(j|fA zP8(T|6tkQMXoh@q6ZJ=x+Ba-xh@~n28;r0DPf7!<_u%Us6UYP^K0g)<90B(pJ`-1o zJv%!ZWji|*Da~Yg_Yl$I!n*|(vAIo$x_ zsVbu`kpVyjWr?@#RP*;nwrkCG8G_nO9O+4Rm%@`(CEvi(uE; z=t%BrmwUq8!{>?SwLuvz`tPLl)V|@VAHl8ShbdM3pAu?&XrqDun;f5<6zxBchx`xg zDO=zJ8|fCzUw`qL>{+?~0x~u1B~r;#+()`>Bl)_lnq|1I66{E8me;kh@gBJRYj#z1 z&p3f;`V1CJo}da4!F{>%UDp9$=iJjD1ZXyc3EP^GFk3(~;FW6?I%cNlh0NO^_3k0? zwBP_f^NJjU5Zyx+=Z`GoID~A=3t2!#Qqndn&(|>^7$EM;uuM^i{#$ZuY`uCL+iw6L znm1lfF}om97dnr3DSoG-H0q-{1wVz@zZYL@FS}sX`mZTSS8k(e{XaN9D$4(p!(shj zOWDfQZ#Fx?i^k@&*$!SbGGCK%9$jn(B2s7HUyp|)cUK%ztJ@h3Tdu6v?JmRW|ELl}*EZA9f=17?@>Q`AHp%xcC zIOc2NQVh_!9&nmGxl#{Bl31V}F&mFW4KWOL$I`nH-+H0Jzx2WX!W$}Pj*`Adb8g=m z1Yk~=una1CSr93+vjZG~Wh5fFfYB!u1R;E64qe>p(+i1u38mb=G=L#Y<+=C8Rg`8PMYMTBeJ zDe6o~f6KzM^2Avv0$-CQyg0oQfrs9Mb757zB!c)9C*BtE8!lT)DFa=+r7yOo>6n>6`4xfMM z`hj?+a{?^LlG)@HR2nl%Hw&Aj4Mnp_DkrgPO+rvL|F6uTSLQJr^*{T^CH>FQp#NV> zq5MA|=|TUK1$-t@*ygRM|H;?&ht~g~C!5t zXjuPGPL4|Y|AWIp|Ff2|rG>re5dLjY1ljFbO&eF!o>gCdFpZElsDoyWP3_&BY?v-{&~Ljqwjgx;R;XV&)<|psJ{o z0P)}rIL`Jk`k|d&ov+q=i((JZ^^NeZ>URd&0VJHUbez@%Q!9WtZ_{y+HWy2P1XuM6 z5OvkqyoSPElODkfD%_Q0SbN1g-_)jH@x04_I*aE3FFX`EA@;qHKSbBkDR@U8qCc}( z1Y#-{9N3~6d4NflNr{m?1)GP?WV7%j4zYj#W{&`>^gq2Qene@~|4a^w`k$l8{>h;K zSx4Cd?G-Vigif?G+4gII<3&KyAwWnmGfH~#(xBMk_E2Y` zM~Db>(-$~dXv`|g-aI%(z3CrKXS(qo?1J+d&}WI}@GgT><|Ojz#(O3NZtiZfUtD-i zmq|pJl5Y$i=g6Of1@s~U68O(08<)+|oY9ip4LB*)e1 zbQ$sVUAi>WO%2M7(^_Zbt0<~Z(UN=V`*(Ltw=+%%B0rGY;uQ=8vpr!7w9ji->3>xC+8)|y(El9l9~R?39v$x=4EmpS zlr51XYY6`M0|$TPL--#Q`B8Le2>U1>veEky{kMs_96%;wUcA%;v?MSo>7QN;pl>E(UcA%; z6nlg`;v^_g{W<_$nuvMvGI$U)l);0bp$r}b4dqAjAkg#=;K%nM$T<+m-H=_Df3Q1p z8(??jA5BgNMvsF7XRqLK5TNAu1rA{8(M(sXc_+j$Sq#GZ6X=C|_f->C2H*#Ll3&_WYyX9G~U*sDU7kxRcVTXdDe z&q|vm)Oz`3__Q^T09sK|>1v5DTMVx0znraVL2!xftRVQWI1C7L*bxke zf#9MYLp{MR;|u7sKeHMMzzO((2>-3%UY%f>w!WF*`YDkSd<9dIn-En^bR*agmn4PB zZzw1V{Jjw@ngEZqjnNtZ>kAIy7-)a|grWdNciT+_8&4r>Ke`GXyPCu1Q-$^uqJm)K zsX$)@7q$E?sWuZFhF36oKt4S6eahcuZYr&&MD|OwAmT~DfER|0Cr3WhGxJt(0wSEs z#9?x#Y-_W_OfWG~3mVOH49i-a=Z0Qu&USPM+A~`yPnt(>|DbrO`dO>tc)u42Xx~|6J-ablia%0 z5G>D{`bJpQ+c(0h;@%O~NbVEi2bkQJ*WuL>X7zSL*M?w)E+?TMgayf+ig_JgGHbKa z%C_=4?8=%smh~%c2ZEh@6a_hgTOw>SNOWnXTuGOa&xUbzgq^~fNIwMAN?(d#xnTB6 zu&lHj(ab6Aw>gY}TV{D&fQYbx9<$SY6o&e)PZ=1EJvhyA2bFBW$R&nm&|QQR?zxrD z5dpqO;I^X8^aejm9|P$5bJ1IroxAfOQf2D6F*eKo%DQt4RZiAAsvU6VMPTkd!0bGq zwuvBd8mMGB{fziYDW*W7AVc1zGfAkbPvaPR2>~dYZfxuVSDxI{M_j2Z_ZBP}tv`ng z$R4}o6-|Nrr(c#~c)@1)D1jmLh;ZKW=U&3?X16zX!3BB~>2XZ5e|%15@V zwd<7H=>`Dm6RA?H$C3thMU&LDt9e~J*D+IIvI}V(PQj*T>p<`ViX)Zp-#4oi@|~+H zeM%a&Y)i{j;);vX)y%tKb5s4PxPZbF^)%4JcDMXncfxGCMJ@EPM=$kxCNsIhXi9w) z@dE(*L%qch3@oab0I({&813HCzcw}iz*Jz`ZJZ{B&n_cO+}IUji{^0H(-6csAZ@^= z3sx_%E}pZ_)L{6>Ig`-!|HSt~cm|Uc&5-YCubG>dpFqYFY&R2C z$QIYDCbr7ytdXcfs^(i9&%sry8Z8!km&)(D?@`#_NNJB7mN>hKV9-<2^W) zgsx^2(55Dq_u!8 zAo0Qrlrlkg%l6~UN2J#8OBI0-iJi;&> zgBT_m5!~YW(n}lvJP|hYKDIs)= zwesQ1ja9{xRIpSwbgLlRw(eFY?CSO>LBP*%GFMN2Jd22-%j}IXRC_#W)h%pred}|y zeq+%GGun*ZYhgQB)2%rsY2B18NwRvkw3EELZdGK#RLzdTNV@W%2z>l@4q_ZHLngz{ z61)JKOKt*ZFrfkw*{O0U{PP?Jbc;F(%Wj^ zzgFG4^HTWeJu9+avRksPZbPOSaum1K$!|=5p7&~~2Bd~E=UVy`8+^^WVD@zm)#^zJ zB&?x&0IbM!uJii&9G7i4iZwGbUvp~sCi-%e-Nnn=ZWMsa4QUN!a!9|5A-spr;$S=W z5F=3>ooIorNEHL6SP0sBnUmrCjp)BTaYpAZUP{hl3!F#);Jsw}kE^rOUw;PQ z&fjT@5Ptmprv%Q#OVI-gkmvY#@s3snHbu6>R)<@=h2yQ^oaq%yj{oa1=D%JV`M*;9 z*Moz-;rwSUWeZ%{$N%qU>}SRB*)VyXEc@&jJHEd*1t@QA#%EOEie`!?d>IAKwHA;2 zrh$S6qpza3y=dI%Z(l`0FIIy!?(-S$l@zRGBG|@8u#$q6>;c;t1Xfa@>*O1<9F#+P zevZ9=F4=k3*^;DqAzL#k`YS15mVNd!vEWE(`W9G?<@^BuZeo1cqjolde0^)M3d|m= zQz5a3rW;wj{W|Xot}^0i^Xlo+`8NG-=r9=SP_85v-7Qt|Z^iI2og)ZQl=)qx@F^9I z4BX#qmOTH*+;*q|Bs_dG5*uh!I1xZJ!K21(O$ver?7v#QgSHKdS?@# zF5KozS@wucn0=6R7v>Imxv)FumzJYppAbp?5=?@a8^E%u%JHb^2#SC47ASna#3Aw< zCtjzHJ{-3(_^9a!frKC&oz9q?(=@kMom!$b;K}Aj zXCZ=7dVVz-2pzf+beggrX%v);{4KP+EyBP6s$6-iCo=^zt9~P@KPhhx#9|#5o6H#eihVDv{8VZ>!XyRfTFD4EP9%65b4QBbNV`>w*3Be^ zd@w}#6k`Gd8NDIGL4^a=8xU+MaZJ{+mTUQ8reYOA4|43=5=D(4!&GuW|5?(iydl4m zDLB~sv8C9dbS)zP;L9#?W0(|)BskMCMkQjwE?WD)XuOfQ{C5s zs}``vh$-s@tZZ5QDyY=}Ruf-DyxY>ixm;Xj*k;7cxajlvBkIMml6c#NAt|+0qr0dO zlyx9FCCSj)pJFCUavDy8qv#950PK=pvX^5hGeI|{; z?XwJ&$yG#40*gL}D?wDCsX;qd`)=DDM#f^xUvYAj$^RSN{YvV@a(`Z&zbXL6SkYCx zyjp3ce~t6H*9MiVjagCyaV5Zvy4l<3HO{(LfMq&5(VyCLoF>5B;#ia>TK?3BHO_Gx zU0~*h9q>k9=F;5Lah_p@30YJtG#)dZD;a~-kH=sc#M=%SorVN+z{JeU{Qdbd=tTjo z=N1zFKD)pw0$#!%e}G9UGA#Kq-J%l+A_xN*)SgH;9*L~ZUp0-U`OM^1ODn+Un569h zvsm=&h%3e}q>YaOnd4;`&@XRi$9upifWgkr7%U?eJYZ+%^rx%Ozkd7r^RNH4vjZaN zLqa+w_%+kiehpKc*?IxXMbZ%57$Ra#`?Mq}MG!||83iy=oEv=*2Ee<;4~>WPmVi}- zr5KTIfJiYeg$StOEmOQJ;(t^JrfBksM7||`5t_oV*=UY#z##* z_N1b!7lvSGNAzW9$JuzV3%2yRF+kA_Ckr0OjxLx`9D0rcfv^-lpQUHSGc}JX6xT|` zyBX=;ZnW3eQs%oEX@-#7|Dh*ihVvhh4{TlMKYK?9d&T(QhbJdP{D-v^b^Zgyu)o3V zPx|uu*787^&p2d8%39=B&j?j$t^UZOOrCR1yoxi0)*@~x%tS8nxy1=V9eE`U{_3f# zs`T()#mLo?C%5Zr^6CdSBku~PW_mmVimh0aS5)WspJS^Yy9V-#%JUb>wpBx8EqTRQ z^Ia9P`AG7a^juD2tAfc2ZL2kTIBB$;G<>;+7=tkm$}!if*0#10bgjDn`f+r%1jqfw z&#miw%P6|J_t(hvix%yef9>Jzg5Bd!nSz|><6fqiB_PVb`W4^9h@nX!gGnxyQd%f{ z*~DSF)!1OA7{I4EL_SKxXZAkgRj?^ZC54!&VuFzjRksapJ;JnI=^VK7s&kzSWk-eI z;3|f`Q%iHBNv3$3S!Q}I6FR@S5Hh9E#*EY~f=qn}tD+z0Y%J*oUYoi+m@KYXboozC z^1clK>*c?Lqsio?DE}P~@&DFSwp5hPm-qj(wg!}?)+$i7)|+wQdR+&rFSaUu+WRpC zRLJC&pzOtFPn4RI(yRuJdsRK?WW%RpP~7<2Rn*Hdu_#s;aM@dRzq?sp9R|(jbUB(< zx2%(;)`~^dP$l5Ep4PP()XCyyn%0eh(jw?zLK~7*RdpCNS_$T8>cjp`6svE+tg7g+ zxYc6NCRN(2Vo=nFv;(3RgGO7v98E2gme-XU8?CGcZC{WlLAftu^Z~{peqO*R9fPw3 zM}Nb&WAHb8TRab}Uk|uIXo4F*>0!mEA@mpA~wwphFhRoP%*vo5S3 z1KRP^F3BBBRas$Bqa4X-YN;vLln^lvKJ%20=BCn!H}(Cy3r1|;+~yeknE)Hw`oLh0 zNqPZOdbhfwjtb=pEc7Pzu4^@L3~XrY0|U-43ZQ>Q(Y;~fb;6(m07H8v93%!dwDo~O z0!iv6X|0caN0Y1y6!I-H08Yb4?>RHclNjWlbmU`WZ~-4+G6tWcUpy2pllmljmfr%? zvDbmwr&*d6e~^6(O|&&tWrINqlZ8mZ_%ZQ(cnK4P0~x*}>s1@$&x#39-xQk=ll{Hz z38`$YkUW7-gz`&yGT`?fgOZ>TMX?YX#;7XFmCV_3}x{eq)*ZkLwM$;RZ z2OI;to_EFo$5r}@^`A2tF!)?aUTsyKFmTFJ%A1%690Sl&hU$m`*NfF-upYV5gh83Q z)iFqM2ono^VmDs7N`llHWt`IW&9(u9uNJiRjDdq=`m^l+-RrktL%7!aKNH|ex?C{& z`JYQK9D|>q5J_$PAX{T_Utz3Kz~KM?zyJG=cY0kQ+{0(r$qYYm6h4DTW+R!w^S^=1 z0CHCZq3UCMbr2X~-C$@90-Vi^nWNV)Ip#6obh*yx0{{F3{bdTNRCMLfVXzFLjJlj% z*>x z`oMrdf0^*`pDeMU8G}_gMIDMlYm|x_>Dh+17r?-o5te(rh(Ukff_rrQmj*UTVql`B zWmyG-v$+@DL7~R!$t~Ia9DTt!{e;NEOZ|B@5Csf!w5X$&d}US4LMIH$+30)Ls2MT*g@vcUjFC_QVy;ngt65!VTaTtxYejrYJ+CmhOg ziW$6kDe}EAd}cmS6$coukWn=25Y3Gbya#TPt8=+;8+XnFUi2(9AgtLaP?67+>)Kt2 zZ@th#PiJ#4N#(~GJ)i)2Uy7BFH{Js@10MKz`HlJ137LCf{RkqZssQDY`g~)S?(GrJ^7e4$2`(#&&rU9C=@I_9DR@bD=KPlVThwU z0#Zz?-`U}dz|IbEBbYiUemHbc{QEMB6ZC*Wcn5>uW1OVFGfNFOb5P8Us&J5_?S}Xf zl2ke+Ua}BSBb)%2M}tB$Eh;=kHNwJ28wT4TS}txWq8ieoFO|f`D7yRoj&A9{CzQdl zCy_-wLU;3*A-CR#QZ5(k@SgllwAJ7@nOniyhE0(#lU@U-WDY{R;5xIGy%`1Sw+x*k z>}PLAeuATa;9Gf}U6X&ep^P6vx7g%d5#L2#xEVQ47D6ZUY-41d>q~FdlUsCwR@b+y zy*edr(+vP}boS)c+3c(-;E;FowHaJH4Kz3<`(9YMNm876 zcd&4;)X>DPA?DFq)7q`)-!Eg5yQlW|Y0eHIyPHph0)Td!tW&THCJy_raBa`o)2_)Q z$o!iTnK}fai~+MoXv(Pz$wYW!RF-@ zZ0>Iw9*03hKQsPa)!Lgc2#ob>_V{v)cr`Ih%ga$OyT{ey|zG`3|%ThiyLtNZuAGjH$OWUsQ6e7d_j zaCh|9HacWir*$or&i>Z*stO{Gz>Ekh4V6JbWy)7qQbgsWhE+FZ!noS+4=vz-u5l*!WfAtAG6 zSgNZN$p_UW*EH3R*=Be}Y%RwVnFa@cga{8Y>`*)W$& zB)bS98ut3-v>>?`ifEh z&nfm-Z=*r}KR7u)D#-uGd;2GY{J)N}1+o*J?h)YHDgpFT7v!y{;BK7*yRE7$s3?8K zY-^Hi5-){!jYi_FITiN{^b_c%<~URZkw?%_3cDlg7=tf33{iCVEe^aiGXbvcTB5&F zCO}zobYa3Q@}AP3^5f@9A6QJ$NXj+ieT}vNpj{q1KYp zC4b+pQ*B3$5^=Rm?w~em)~s_=?|8++D7V-(cC$^VWY>CRu(NY$XJg~NaJ<)Fw~Hj= z0^f_cEy^tfE;lEYe%gree3tnm{Fi3swe18j<}wbE?@{hk{QZCk!cm@`J`n6QABQQB zivxc}9}>y5=BKEv9jNh@S9G?rCw{ijLvhMZ8vunfb$RVAfl%PBjr?DaXFvbTg8w@x z$NxQ?4Cg;I9HGL)foEdLV#0RR8lCIub<0tf&iYhKs@ literal 0 HcmV?d00001 diff --git a/community/distribution/1.0.0/ci/basic-values.yaml b/community/distribution/1.0.0/ci/basic-values.yaml new file mode 100644 index 0000000000..0f70830153 --- /dev/null +++ b/community/distribution/1.0.0/ci/basic-values.yaml @@ -0,0 +1,10 @@ +distributionNetwork: + apiPort: 31000 + +distributionRunAs: + user: 1000 + group: 1000 + +distributionStorage: + data: + type: pvc diff --git a/community/distribution/1.0.0/ci/extra-values.yaml b/community/distribution/1.0.0/ci/extra-values.yaml new file mode 100644 index 0000000000..7b00441f49 --- /dev/null +++ b/community/distribution/1.0.0/ci/extra-values.yaml @@ -0,0 +1,18 @@ +distributionNetwork: + apiPort: 31000 + +distributionConfig: + basicAuthUsers: + - user: admin + pass: admin + - user: user + pass: user + +distributionStorage: + data: + type: pvc + additionalStorages: + - type: pvc + mountPath: /data1 + - type: pvc + mountPath: /data2 diff --git a/community/distribution/1.0.0/ci/hostNet-values.yaml b/community/distribution/1.0.0/ci/hostNet-values.yaml new file mode 100644 index 0000000000..257680868b --- /dev/null +++ b/community/distribution/1.0.0/ci/hostNet-values.yaml @@ -0,0 +1,7 @@ +distributionNetwork: + apiPort: 30000 + hostNetwork: true + +distributionStorage: + data: + type: pvc diff --git a/community/distribution/1.0.0/ci/https-values.yaml b/community/distribution/1.0.0/ci/https-values.yaml new file mode 100644 index 0000000000..11e128b28d --- /dev/null +++ b/community/distribution/1.0.0/ci/https-values.yaml @@ -0,0 +1,93 @@ +distributionNetwork: + apiPort: 31000 + certificateID: 1 + +distributionStorage: + data: + type: pvc + +ixCertificates: + "1": + certificate: | + -----BEGIN CERTIFICATE----- + MIIEdjCCA16gAwIBAgIDYFMYMA0GCSqGSIb3DQEBCwUAMGwxDDAKBgNVBAMMA2Fz + ZDELMAkGA1UEBhMCVVMxDTALBgNVBAgMBGFzZGYxCzAJBgNVBAcMAmFmMQ0wCwYD + VQQKDARhc2RmMQwwCgYDVQQLDANhc2QxFjAUBgkqhkiG9w0BCQEWB2FAYS5jb20w + HhcNMjEwODMwMjMyMzU0WhcNMjMxMjAzMjMyMzU0WjBuMQswCQYDVQQDDAJhZDEL + MAkGA1UEBhMCVVMxDTALBgNVBAgMBGFzZGYxDTALBgNVBAcMBGFzZGYxDTALBgNV + BAoMBGFkc2YxDTALBgNVBAsMBGFzZGYxFjAUBgkqhkiG9w0BCQEWB2FAYS5jb20w + ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC7+1xOHRQyOnQTHFcrdasX + Zl0gzutVlA890a1wiQpdD5dOtCLo7+eqVYjqVKo9W8RUIArXWmBu/AbkH7oVFWC1 + P973W1+ArF5sA70f7BZgqRKJTIisuIFIlRETgfnP2pfQmHRZtGaIJRZI4vQCdYgW + 2g0KOvvNcZJCVq1OrhKiNiY1bWCp66DGg0ic6OEkZFHTm745zUNQaf2dNgsxKU0H + PGjVLJI//yrRFAOSBUqgD4c50krnMF7fU/Fqh+UyOu8t6Y/HsySh3urB+Zie331t + AzV6QV39KKxRflNx/yuWrtIEslGTm+xHKoCYJEk/nZ3mX8Y5hG6wWAb7A/FuDVg3 + AgMBAAGjggEdMIIBGTAnBgNVHREEIDAehwTAqAADhwTAqAAFhwTAqAC2hwTAqACB + hwTAqACSMB0GA1UdDgQWBBQ4G2ff4tgZl4vmo4xCfqmJhdqShzAMBgNVHRMBAf8E + AjAAMIGYBgNVHSMEgZAwgY2AFLlYf9L99nxJDcpCM/LT3V5hQ/a3oXCkbjBsMQww + CgYDVQQDDANhc2QxCzAJBgNVBAYTAlVTMQ0wCwYDVQQIDARhc2RmMQswCQYDVQQH + DAJhZjENMAsGA1UECgwEYXNkZjEMMAoGA1UECwwDYXNkMRYwFAYJKoZIhvcNAQkB + FgdhQGEuY29tggNgUxcwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwEwDgYDVR0PAQH/ + BAQDAgWgMA0GCSqGSIb3DQEBCwUAA4IBAQA6FpOInEHB5iVk3FP67GybJ29vHZTD + KQHbQgmg8s4L7qIsA1HQ+DMCbdylpA11x+t/eL/n48BvGw2FNXpN6uykhLHJjbKR + h8yITa2KeD3LjLYhScwIigXmTVYSP3km6s8jRL6UKT9zttnIHyXVpBDya6Q4WTMx + fmfC6O7t1PjQ5ZyVtzizIUP8ah9n4TKdXU4A3QIM6WsJXpHb+vqp1WDWJ7mKFtgj + x5TKv3wcPnktx0zMPfLb5BTSE9rc9djcBG0eIAsPT4FgiatCUChe7VhuMnqskxEz + MymJLoq8+mzucRwFkOkR2EIt1x+Irl2mJVMeBow63rVZfUQBD8h++LqB + -----END CERTIFICATE----- + -----BEGIN CERTIFICATE----- + MIIEhDCCA2ygAwIBAgIDYFMXMA0GCSqGSIb3DQEBCwUAMGwxDDAKBgNVBAMMA2Fz + ZDELMAkGA1UEBhMCVVMxDTALBgNVBAgMBGFzZGYxCzAJBgNVBAcMAmFmMQ0wCwYD + VQQKDARhc2RmMQwwCgYDVQQLDANhc2QxFjAUBgkqhkiG9w0BCQEWB2FAYS5jb20w + HhcNMjEwODMwMjMyMDQ1WhcNMzEwODI4MjMyMDQ1WjBsMQwwCgYDVQQDDANhc2Qx + CzAJBgNVBAYTAlVTMQ0wCwYDVQQIDARhc2RmMQswCQYDVQQHDAJhZjENMAsGA1UE + CgwEYXNkZjEMMAoGA1UECwwDYXNkMRYwFAYJKoZIhvcNAQkBFgdhQGEuY29tMIIB + IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAq//c0hEEr83CS1pMgsHX50jt + 2MqIbcf63UUNJTiYpUUvUQSFJFc7m/dr+RTZvu97eDCnD5K2qkHHvTPaPZwY+Djf + iy7N641Sz6u/y3Yo3xxs1Aermsfedh48vusJpjbkT2XS44VjbkrpKcWDNVpp3Evd + M7oJotXeUsZ+imiyVCfr4YhoY5gbGh/r+KN9Wf9YKoUyfLLZGwdZkhtX2zIbidsL + Thqi9YTaUHttGinjiBBum234u/CfvKXsfG3yP2gvBGnlvZnM9ktv+lVffYNqlf7H + VmB1bKKk84HtzuW5X76SGAgOG8eHX4x5ZLI1WQUuoQOVRl1I0UCjBtbz8XhwvQID + AQABo4IBLTCCASkwLQYDVR0RBCYwJIcEwKgABYcEwKgAA4cEwKgAkocEwKgAtYcE + wKgAgYcEwKgAtjAdBgNVHQ4EFgQUuVh/0v32fEkNykIz8tPdXmFD9rcwDwYDVR0T + AQH/BAUwAwEB/zCBmAYDVR0jBIGQMIGNgBS5WH/S/fZ8SQ3KQjPy091eYUP2t6Fw + pG4wbDEMMAoGA1UEAwwDYXNkMQswCQYDVQQGEwJVUzENMAsGA1UECAwEYXNkZjEL + MAkGA1UEBwwCYWYxDTALBgNVBAoMBGFzZGYxDDAKBgNVBAsMA2FzZDEWMBQGCSqG + SIb3DQEJARYHYUBhLmNvbYIDYFMXMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEF + BQcDAjAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggEBAKEocOmVuWlr + zegtKYMe8NhHIkFY9oVn5ym6RHNOJpPH4QF8XYC3Z5+iC5yGh4P/jVe/4I4SF6Ql + PtofU0jNq5vzapt/y+m008eXqPQFmoUOvu+JavoRVcRx2LIP5AgBA1mF56CSREsX + TkuJAA9IUQ8EjnmAoAeKINuPaKxGDuU8BGCMqr/qd564MKNf9XYL+Fb2rlkA0O2d + 2No34DQLgqSmST/LAvPM7Cbp6knYgnKmGr1nETCXasg1cueHLnWWTvps2HiPp2D/ + +Fq0uqcZLu4Mdo0CPs4e5sHRyldEnRSKh0DVLprq9zr/GMipmPLJUsT5Jed3sj0w + M7Y3vwxshpo= + -----END CERTIFICATE----- + privatekey: | + -----BEGIN PRIVATE KEY----- + MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC7+1xOHRQyOnQT + HFcrdasXZl0gzutVlA890a1wiQpdD5dOtCLo7+eqVYjqVKo9W8RUIArXWmBu/Abk + H7oVFWC1P973W1+ArF5sA70f7BZgqRKJTIisuIFIlRETgfnP2pfQmHRZtGaIJRZI + 4vQCdYgW2g0KOvvNcZJCVq1OrhKiNiY1bWCp66DGg0ic6OEkZFHTm745zUNQaf2d + NgsxKU0HPGjVLJI//yrRFAOSBUqgD4c50krnMF7fU/Fqh+UyOu8t6Y/HsySh3urB + +Zie331tAzV6QV39KKxRflNx/yuWrtIEslGTm+xHKoCYJEk/nZ3mX8Y5hG6wWAb7 + A/FuDVg3AgMBAAECggEAapt30rj9DitGTtxAt13pJMEhyYxvvD3WkvmJwguF/Bbu + eW0Ba1c668fMeRCA54FWi1sMqusPS4HUqqUvk+tmyAOsAF4qgD/A4MMSC7uJSVI5 + N/JWhJWyhCY94/FPakiO1nbPbVw41bcqtzU2qvparpME2CtxSCbDiqm7aaag3Kqe + EF0fGSUdZ+TYl9JM05+eIyiX+UY19Fg0OjTHMn8nGpxcNTfDBdQ68TKvdo/dtIKL + PLKzJUNNdM8odC4CvQtfGMqaslwZwXkiOl5VJcW21ncj/Y0ngEMKeD/i65ZoqGdR + 0FKCQYEAGtM2FvJcZQ92Wsw7yj2bK2MSegVUyLK32QKBgQDe8syVCepPzRsfjfxA + 6TZlWcGuTZLhwIx97Ktw3VcQ1f4rLoEYlv0xC2VWBORpzIsJo4I/OLmgp8a+Ga8z + FkVRnq90dV3t4NP9uJlHgcODHnOardC2UUka4olBSCG6zmK4Jxi34lOxhGRkshOo + L4IBeOIB5g+ZrEEXkzfYJHESRQKBgQDX2YhFhGIrT8BAnC5BbXbhm8h6Bhjz8DYL + d+qhVJjef7L/aJxViU0hX9Ba2O8CLK3FZeREFE3hJPiJ4TZSlN4evxs5p+bbNDcA + 0mhRI/o3X4ac6IxdRebyYnCOB/Cu94/MzppcZcotlCekKNike7eorCcX4Qavm7Pu + MUuQ+ifmSwKBgEnchoqZzlbBzMqXb4rRuIO7SL9GU/MWp3TQg7vQmJerTZlgvsQ2 + wYsOC3SECmhCq4117iCj2luvOdihCboTFsQDnn0mpQe6BIF6Ns3J38wAuqv0CcFd + DKsrge1uyD3rQilgSoAhKzkUc24o0PpXQurZ8YZPgbuXpbj5vPaOnCdBAoGACYc7 + wb3XS4wos3FxhUfcwJbM4b4VKeeHqzfu7pI6cU/3ydiHVitKcVe2bdw3qMPqI9Wc + nvi6e17Tbdq4OCsEJx1OiVwFD9YdO3cOTc6lw/3+hjypvZBRYo+/4jUthbu96E+S + dtOzehGZMmDvN0uSzupSi3ZOgkAAUFpyuIKickMCgYAId0PCRjonO2thn/R0rZ7P + //L852uyzYhXKw5/fjFGhQ6LbaLgIRFaCZ0L2809u0HFnNvJjHv4AKP6j+vFQYYY + qQ+66XnfsA9G/bu4MDS9AX83iahD9IdLXQAy8I19prAbpVumKegPbMnNYNB/TYEc + 3G15AKCXo7jjOUtHY01DCQ== + -----END PRIVATE KEY----- diff --git a/community/distribution/1.0.0/ix_values.yaml b/community/distribution/1.0.0/ix_values.yaml new file mode 100644 index 0000000000..02e16daf10 --- /dev/null +++ b/community/distribution/1.0.0/ix_values.yaml @@ -0,0 +1,29 @@ +image: + repository: registry + pullPolicy: IfNotPresent + tag: 2.8.3 + +resources: + limits: + cpu: 4000m + memory: 8Gi + +distributionConfig: + basicAuthUsers: [] + additionalEnvs: [] + +distributionNetwork: + apiPort: 30095 + certificateID: + hostNetwork: false + +distributionRunAs: + user: 568 + group: 568 + +distributionStorage: + useFilesystemBackend: true + data: + type: ixVolume + datasetName: data + additionalStorages: [] diff --git a/community/distribution/1.0.0/metadata.yaml b/community/distribution/1.0.0/metadata.yaml new file mode 100644 index 0000000000..d66c056b4b --- /dev/null +++ b/community/distribution/1.0.0/metadata.yaml @@ -0,0 +1,8 @@ +runAsContext: + - userName: distribution + groupName: distribution + gid: 568 + uid: 568 + description: Distribution can run as any non-root user. +capabilities: [] +hostMounts: [] diff --git a/community/distribution/1.0.0/questions.yaml b/community/distribution/1.0.0/questions.yaml new file mode 100644 index 0000000000..5a68db9521 --- /dev/null +++ b/community/distribution/1.0.0/questions.yaml @@ -0,0 +1,267 @@ +groups: + - name: Distribution Configuration + description: Configure Distribution + - name: User and Group Configuration + description: Configure User and Group for Distribution + - name: Network Configuration + description: Configure Network for Distribution + - name: Storage Configuration + description: Configure Storage for Distribution + - name: Resources Configuration + description: Configure Resources for Distribution + +questions: + - variable: distributionConfig + label: "" + group: Distribution Configuration + schema: + type: dict + attrs: + - variable: basicAuthUsers + label: Basic Auth Users + description: | + Configure basic auth users for Distribution.
+ Leave empty to disable basic auth. + schema: + type: list + default: [] + items: + - variable: userEntry + label: User Entry + schema: + type: dict + attrs: + - variable: user + label: Username + schema: + type: string + required: true + - variable: pass + label: Password + schema: + type: string + required: true + private: true + + - variable: additionalEnvs + label: Additional Environment Variables + description: Configure additional environment variables for Distribution. + schema: + type: list + default: [] + items: + - variable: env + label: Environment Variable + schema: + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + + - variable: distributionRunAs + label: "" + group: User and Group Configuration + schema: + type: dict + attrs: + - variable: user + label: User ID + description: The user id that Distribution will run as. + schema: + type: int + min: 2 + default: 568 + required: true + - variable: group + label: Group ID + description: The group id that Distribution will run as. + schema: + type: int + min: 2 + default: 568 + required: true + + - variable: distributionNetwork + label: "" + group: Network Configuration + schema: + type: dict + attrs: + - variable: apiPort + label: API Port + description: The port for the Distribution API. + schema: + type: int + default: 30095 + min: 9000 + max: 65535 + required: true + - variable: certificateID + label: Certificate + description: The certificate to use for Distribution. + schema: + type: int + "null": true + $ref: + - "definitions/certificate" + - variable: hostNetwork + label: Host Network + description: | + Bind to the host network. It's recommended to keep this disabled.
+ schema: + type: boolean + default: false + + - variable: distributionStorage + label: "" + group: Storage Configuration + schema: + type: dict + attrs: + - variable: useFilesystemBackend + label: Use Filesystem Backend + description: | + Use filesystem backend for Distribution.
+ If disabled, you will need to configure a backend for Distribution.
+ Either with environment variables or with a configuration file. + schema: + type: boolean + default: true + - variable: data + label: Distribution Data Storage + description: The path to store Distribution data. + schema: + type: dict + show_if: [["useFilesystemBackend", "=", true]] + attrs: + - variable: type + label: Type + description: | + ixVolume: Is dataset created automatically by the system.
+ Host Path: Is a path that already exists on the system. + schema: + type: string + required: true + default: ixVolume + enum: + - value: hostPath + description: Host Path (Path that already exists on the system) + - value: ixVolume + description: ixVolume (Dataset created automatically by the system) + - variable: datasetName + label: Dataset Name + schema: + type: string + show_if: [["type", "=", "ixVolume"]] + required: true + hidden: true + immutable: true + default: data + $ref: + - "normalize/ixVolume" + - variable: hostPath + label: Host Path + schema: + type: hostpath + show_if: [["type", "=", "hostPath"]] + immutable: true + required: true + - variable: additionalStorages + label: Additional Storage + description: Additional storage for Distribution. + schema: + type: list + default: [] + items: + - variable: storageEntry + label: Storage Entry + schema: + type: dict + attrs: + - variable: type + label: Type + description: | + ixVolume: Is dataset created automatically by the system.
+ Host Path: Is a path that already exists on the system. + schema: + type: string + required: true + default: "ixVolume" + enum: + - value: "hostPath" + description: Host Path (Path that already exists on the system) + - value: "ixVolume" + description: ixVolume (Dataset created automatically by the system) + - variable: mountPath + label: Mount Path + description: The path inside the container to mount the storage. + schema: + type: path + required: true + - variable: hostPath + label: Host Path + description: The host path to use for storage. + schema: + type: hostpath + show_if: [["type", "=", "hostPath"]] + required: true + - variable: datasetName + label: Dataset Name + description: The name of the dataset to use for storage. + schema: + type: string + show_if: [["type", "=", "ixVolume"]] + required: true + immutable: true + default: "storage_entry" + $ref: + - "normalize/ixVolume" + + - variable: resources + group: Resources Configuration + label: "" + schema: + type: dict + attrs: + - variable: limits + label: Limits + schema: + type: dict + attrs: + - variable: cpu + label: CPU + description: CPU limit for Distribution. + schema: + type: string + max_length: 6 + valid_chars: '^(0\.[1-9]|[1-9][0-9]*)(\.[0-9]|m?)$' + valid_chars_error: | + Valid CPU limit formats are
+ - Plain Integer - eg. 1
+ - Float - eg. 0.5
+ - Milicpu - eg. 500m + default: "4000m" + required: true + - variable: memory + label: Memory + description: Memory limit for Distribution. + schema: + type: string + max_length: 12 + valid_chars: '^[1-9][0-9]*([EPTGMK]i?|e[0-9]+)?$' + valid_chars_error: | + Valid Memory limit formats are
+ - Suffixed with E/P/T/G/M/K - eg. 1G
+ - Suffixed with Ei/Pi/Ti/Gi/Mi/Ki - eg. 1Gi
+ - Plain Integer in bytes - eg. 1024
+ - Exponent - eg. 134e6 + default: "8Gi" + required: true diff --git a/community/distribution/1.0.0/templates/NOTES.txt b/community/distribution/1.0.0/templates/NOTES.txt new file mode 100644 index 0000000000..ba4e01146c --- /dev/null +++ b/community/distribution/1.0.0/templates/NOTES.txt @@ -0,0 +1 @@ +{{ include "ix.v1.common.lib.chart.notes" $ }} diff --git a/community/distribution/1.0.0/templates/_configuration.tpl b/community/distribution/1.0.0/templates/_configuration.tpl new file mode 100644 index 0000000000..c732c5c5a4 --- /dev/null +++ b/community/distribution/1.0.0/templates/_configuration.tpl @@ -0,0 +1,41 @@ +{{- define "distribution.configuration" -}} +{{- $fullname := (include "ix.v1.common.lib.chart.names.fullname" $) -}} + +{{- $secretKey := randAlphaNum 32 -}} +{{- with (lookup "v1" "Secret" .Release.Namespace (printf "%s-distribution" $fullname)) -}} + {{- $secretKey = ((index .data "REGISTRY_HTTP_SECRET") | b64dec) -}} +{{- end }} + +configmap: + distribution-config: + enabled: true + data: + REGISTRY_HTTP_ADDR: {{ printf "0.0.0.0:%v" .Values.distributionNetwork.apiPort }} + {{- if .Values.distributionStorage.useFilesystemBackend }} + REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /var/lib/registry + {{- end -}} + {{- if .Values.distributionNetwork.certificateID }} + REGISTRY_HTTP_TLS_CERTIFICATE: /certs/tls.crt + REGISTRY_HTTP_TLS_KEY: /certs/tls.key + {{- end -}} + {{- if .Values.distributionConfig.basicAuthUsers }} + REGISTRY_AUTH_HTPASSWD_REALM: basic-realm + REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd + {{- end }} + +secret: + distribution-creds: + enabled: true + data: + REGISTRY_HTTP_SECRET: {{ $secretKey }} + + {{- if .Values.distributionConfig.basicAuthUsers }} + distribution-htpasswd: + enabled: true + data: + htpasswd: | + {{- range $idx, $v := .Values.distributionConfig.basicAuthUsers }} + {{- htpasswd $v.user $v.pass | nindent 8 }} + {{- end -}} + {{- end -}} +{{- end -}} diff --git a/community/distribution/1.0.0/templates/_distribution.tpl b/community/distribution/1.0.0/templates/_distribution.tpl new file mode 100644 index 0000000000..38d5d49131 --- /dev/null +++ b/community/distribution/1.0.0/templates/_distribution.tpl @@ -0,0 +1,55 @@ +{{- define "distribution.workload" -}} +workload: + distribution: + enabled: true + primary: true + type: Deployment + podSpec: + hostNetwork: {{ .Values.distributionNetwork.hostNetwork }} + containers: + distribution: + enabled: true + primary: true + imageSelector: image + securityContext: + runAsUser: {{ .Values.distributionRunAs.user }} + runAsGroup: {{ .Values.distributionRunAs.group }} + envFrom: + - secretRef: + name: distribution-creds + - configMapRef: + name: distribution-config + {{ with .Values.distributionConfig.additionalEnvs }} + envList: + {{ range $env := . }} + - name: {{ $env.name }} + value: {{ $env.value }} + {{ end }} + {{ end }} + probes: + {{- $protocol := "http" -}} + {{- if .Values.distributionNetwork.certificateID -}} + {{- $protocol = "https" -}} + {{- end }} + liveness: + enabled: true + type: {{ $protocol }} + port: {{ .Values.distributionNetwork.apiPort }} + path: / + readiness: + enabled: true + type: {{ $protocol }} + port: {{ .Values.distributionNetwork.apiPort }} + path: / + startup: + enabled: true + type: {{ $protocol }} + port: {{ .Values.distributionNetwork.apiPort }} + path: / + initContainers: + {{- include "ix.v1.common.app.permissions" (dict "containerName" "01-permissions" + "UID" .Values.distributionRunAs.user + "GID" .Values.distributionRunAs.group + "mode" "check" + "type" "init") | nindent 8 }} +{{- end -}} diff --git a/community/distribution/1.0.0/templates/_persistence.tpl b/community/distribution/1.0.0/templates/_persistence.tpl new file mode 100644 index 0000000000..19554c959f --- /dev/null +++ b/community/distribution/1.0.0/templates/_persistence.tpl @@ -0,0 +1,77 @@ +{{- define "distribution.persistence" -}} +persistence: + {{- if .Values.distributionStorage.useFilesystemBackend }} + data: + enabled: true + type: {{ .Values.distributionStorage.data.type }} + datasetName: {{ .Values.distributionStorage.data.datasetName | default "" }} + hostPath: {{ .Values.distributionStorage.data.hostPath | default "" }} + targetSelector: + distribution: + distribution: + mountPath: /var/lib/registry + 01-permissions: + mountPath: /mnt/directories/registry + {{- end }} + + tmp: + enabled: true + type: emptyDir + targetSelector: + distribution: + distribution: + mountPath: /tmp + {{- range $idx, $storage := .Values.distributionStorage.additionalStorages }} + {{ printf "distribution-%v" (int $idx) }}: + enabled: true + type: {{ $storage.type }} + datasetName: {{ $storage.datasetName | default "" }} + hostPath: {{ $storage.hostPath | default "" }} + targetSelector: + distribution: + distribution: + mountPath: {{ $storage.mountPath }} + 01-permissions: + mountPath: /mnt/directories{{ $storage.mountPath }} + {{- end -}} + + {{- if .Values.distributionConfig.basicAuthUsers }} + htpasswd: + enabled: true + type: secret + objectName: distribution-htpasswd + defaultMode: "0600" + items: + - key: htpasswd + path: htpasswd + targetSelector: + distribution: + distribution: + mountPath: /auth + readOnly: true + {{- end -}} + + {{- if .Values.distributionNetwork.certificateID }} + cert: + enabled: true + type: secret + objectName: distribution-cert + defaultMode: "0600" + items: + - key: tls.key + path: tls.key + - key: tls.crt + path: tls.crt + targetSelector: + distribution: + distribution: + mountPath: /certs + readOnly: true + +scaleCertificate: + distribution-cert: + enabled: true + id: {{ .Values.distributionNetwork.certificateID }} + {{- end -}} + +{{- end -}} diff --git a/community/distribution/1.0.0/templates/_service.tpl b/community/distribution/1.0.0/templates/_service.tpl new file mode 100644 index 0000000000..ab2998f1b8 --- /dev/null +++ b/community/distribution/1.0.0/templates/_service.tpl @@ -0,0 +1,15 @@ +{{- define "distribution.service" -}} +service: + distribution: + enabled: true + primary: true + type: NodePort + targetSelector: distribution + ports: + api: + enabled: true + primary: true + port: {{ .Values.distributionNetwork.apiPort }} + nodePort: {{ .Values.distributionNetwork.apiPort }} + targetSelector: distribution +{{- end -}} diff --git a/community/distribution/1.0.0/templates/common.yaml b/community/distribution/1.0.0/templates/common.yaml new file mode 100644 index 0000000000..a57a53ab9c --- /dev/null +++ b/community/distribution/1.0.0/templates/common.yaml @@ -0,0 +1,9 @@ +{{- include "ix.v1.common.loader.init" . -}} + +{{/* Merge the templates with Values */}} +{{- $_ := mustMergeOverwrite .Values (include "distribution.configuration" $ | fromYaml) -}} +{{- $_ := mustMergeOverwrite .Values (include "distribution.persistence" $ | fromYaml) -}} +{{- $_ := mustMergeOverwrite .Values (include "distribution.service" $ | fromYaml) -}} +{{- $_ := mustMergeOverwrite .Values (include "distribution.workload" $ | fromYaml) -}} + +{{- include "ix.v1.common.loader.apply" . -}} diff --git a/community/distribution/item.yaml b/community/distribution/item.yaml new file mode 100644 index 0000000000..d218110e0d --- /dev/null +++ b/community/distribution/item.yaml @@ -0,0 +1,7 @@ +icon_url: https://media.sys.truenas.net/apps/distribution/icons/icon.svg +categories: + - productivity +screenshots: [] +tags: + - registry + - container