From dc4d0082cb0441a234a775d1620ea5ed9a52a6b6 Mon Sep 17 00:00:00 2001 From: Aidan Oldershaw Date: Tue, 17 Nov 2020 23:10:41 -0500 Subject: [PATCH 01/10] initial commit Signed-off-by: Aidan Oldershaw --- 083-services/proposal.md | 159 +++++++++++++++++++++++++++++++ 083-services/service-diagram.png | Bin 0 -> 74937 bytes 2 files changed, 159 insertions(+) create mode 100644 083-services/proposal.md create mode 100644 083-services/service-diagram.png diff --git a/083-services/proposal.md b/083-services/proposal.md new file mode 100644 index 00000000..5aaa1de1 --- /dev/null +++ b/083-services/proposal.md @@ -0,0 +1,159 @@ +# Summary + +Provide a native way to expose local services to steps. + +# Motivation + +* Easier integration testing ([concourse/concourse#324]) + * The current recommended way is to run a privileged `task` with a Docker daemon + `docker-compose` installed, and that task runs `docker-compose up` and the test suite + +Possible anti-pattern: sharing state between steps + +# Proposal + +I propose adding a new `services` step modifier and special var source `.svc`, e.g. + +```yaml +task: integration-tests +file: ci/tasks/test.yml +params: + POSTGRES_ADDRESS: ((.svc:postgres.address)) + # or + # POSTGRES_HOST: ((.svc:postgres.host)) + # POSTGRES_PORT: ((.svc:postgres.port)) + # + # to access addresses/ports other than the one named 'default', use: + # ((.svc:postgres.addresses.some-port-name)) + # ((.svc:postgres.ports.some-port-name)) +services: +- name: postgres + file: ci/services/postgres.yml +``` + +When the step finishes (successfully or otherwise), the service will be gracefully terminated by first sending a `SIGTERM`, and eventually a `SIGKILL` if the service doesn't terminate within a timeout. + +## Service Configuration + +Services can be configured similarly to tasks, e.g. + +```yaml +name: postgres +config: # or "file:" + image_resource: # can specify a top-level "image:" instead of "image_resource:" + type: registry-image + source: {repository: postgres} + inputs: + - name: some-input + ports: + - name: default # optional if using default name + number: 5432 + startup_probe: # By default, Concourse will wait for all the listed ports to be open + run: {path: pg_isready} + failure_threshold: 10 + period_seconds: 5 +``` + +Services can also be configured as prototypes, similar to the `run` step, e.g. + +```yaml +name: concourse +run: up +type: docker-compose +params: + files: + - concourse/docker-compose.yml + - ci/overrides/docker-compose.ci-containerd.yml +inputs: [concourse, ci] +ports: +- name: web + number: 8080 +``` + +### Startup Probe + +In order to ensure a service is ready to accept traffic before running any dependent steps, the `startup_probe` must first succeed. + +If unspecified, Concourse will wait for each of the specified ports to be open (with some timeout). + +A custom `startup_probe` can be defined that periodically runs a process on the service container until it succeeds (with some timeout). + +## Sharing a service across multiple steps + +To use a service in several steps, you can modify a `do`/`in_parallel` step: + +```yaml +do: +- task: integration-suite-1 + ... +- task: integration-suite-2 + ... +services: +- name: app + file: ci/services/my-app.yml +``` + +When used with an `across` step, however, each `across` step iteration will receive its own service. e.g. + +```yaml +across: +- var: postgres_version + values: [9, 10, 11, 12, 13] +task: integration-suite +file: ci/tasks/integration.yml +params: + POSTGRES_ADDRESS: ((.svc:postgres.address)) +services: +- name: postgres + file: ci/services/postgres.yml + image: postgres-((.:postgres_version)) +``` + +...will spawn 5 postgres services. This behaviour can be avoided by wrapping the `across` step in a `do`, e.g. + +```yaml +do: +- across: ... + task: ... +services: ... +``` + +## Architecture + +Below is a high-level overview of how this could be architected. Heads up - I almost certainly don't know what I'm talking about networking-wise, so please tell me where I'm speaking nonsense. + +![High-level overview](./service-diagram.png) + +The packet-flow is as follows: + +1. The step container sends a packet to the address provided by `((.svc:name.address))`. + * Note: the host will be an IP address within a specific subnet dedicated to services + * This can be changed depending on the runtime to circumvent the described packet flow as appropriate (e.g. in Kubernetes, Concourse can provide a DNS name to a Kubernetes service directly) +1. Since the packet is destined for an IP within the services subnet, it will be routed to a VXLAN network interface that encapsulates the packets and forwards to the TSA +1. A new component on the TSA - the [Service Router] - will determine which worker to route the packets to. It then re-encapsulates the packets and sends it back out over VXLAN + * The [Service Router] can also perform access control to ensure containers can't communicate with services that they aren't exposed to +1. Firewall rules on the worker hosting the service will route the packets to the appropriate container's veth + +Note: all of the worker <-> TSA traffic will flow through an SSH tunnel. + +### Service Router + +The Service Router is a new component on the TSA. It communicates with the ATC to get the list of services, and creates routing rules for each one. + +### Service Manager + +The Service Manager is a new component on each worker. When the ATC spins/tears down services, it will register/unregister the service with the host worker's Service Manager. + +In response, the Service Manager will create/destroy internal routing rules (e.g. using `iptables`) to route traffic to the appropriate container. + +# Open Questions + +* I'm 90% sure the proposed architecture wouldn't work on Darwin/Windows workers - is VXLAN supported on these platforms? And if not, how can we share services with these workers? + +# Answered Questions + +# New Implications + + +[concourse/concourse#324](https://github.com/concourse/concourse/issues/324) +[Prototype]: https://github.com/concourse/rfcs/blob/master/037-prototypes/proposal.md +[Service Router]: #service-router diff --git a/083-services/service-diagram.png b/083-services/service-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..b66c1d86e0cb7f5d98f3f5a82570e090f3c8204b GIT binary patch literal 74937 zcmeFZbyU?~w=PZzn`YC}Y@{S5Hb@B4T~bO(xCu$6B&D}>inNq;cPlM|v@|Fvjfm0+ z+_ll~ecyY=FV4B+{&&w942QcuYpuCvJo8y|t`}MwiiCJHcxY&7gvv^CI%sIv`e{I;SqKsJe zU`zS>doBGWF~!&FCX5LK{4tXq>-I<8o0F5q`q$s&v!@ygfM<4+ZZFCL;n2bk=o#LG5Y2mU5kRE9s+ss zw&2d>*u5L2!B*6D^8Y>_Cl*Zc#cx*iTMeh2s9Ax(1zb`8jNqj2rLMuK=MjWF4^GN{ zXpsNs)4%_IhA0`18vY$09ZG#yx-%U6>ibw4(w!=wv2}j^YgN)%o2WMzcuFr`{F$S4 z4Aza(eTZ6E1b8hy170Mm8z21r@XuG?LcmgmnEvNe6i8w#bI_SlGYlY$tt4#>n2`7@ zB-Atln!%eo9{45xe`h$tf{x22i81~K^;!!KUOXZ*@csMY)k0zXfzN{}2qFJGB>)QM zVIz%_q4a0)Uo1x^Va8>f3qL(C>h&Yk z65%eB>=<=Sl?KVCpP5c|eIhTH>ehXF#F&kA2OrX>&h509XlhQ9L2VeoqlRjlytw~9 ziXIni85$HNtGD34xbxC>nUG**rYC4csOhV`eUX%}UpxQ=uENY@o=-klEcbWX#j;>& zZua>v!=FQh5`j8|(wHt#2KZpXa7IkMZP9)2M2Z<(!;t z^86hf6UJozNcy4MeUz{{!of3gls3g+BODk{(1Zu(H@Eq5Z890yd?$G@@}VQG4`}T4 zZv6e}BoJXfjk^w)yfhY#nlw=wHm#WnRlo&qKl+4}cm^kiBy>b#fsB`)8$*xv^|QL- zm-kx0S5b=dP#WwQ0i=|d3-v5{Xl&OTj`-$ih*0=*I_W5Z1~G9pjMRcKWiz)3X{HsaSBw+QJ7~+E;{Psr`4?8Z;It~}Tcjbp(`TTtEkn-r|#&q74srOKM%XhIf zo17Qh=SNEoe7+m1^=~ooT_x61tTU^`zc+R%MA1-W2qFfl(_DJ5tL~mIcq};#-#IJw z{qYV*_Oa|nhJHvCj44b#cd+bZxU@FbSG1eqdF3n^CJ>vTiLyg2+QzB`S}p8l}rquAq=$&zwrlGrW;WJE6? zqMHTwW3nOJOA8A2gUfTlaZ5&7wtf4>;=8sgtm5)9D!Q|_strI;>Y}0Un{Q@7?|i`*=a}7}PQ@?VX6p`TA6M+8E`&ZcFn#u||0rxp6L{r^ zH-Op*(?gSupS{WS8YjD&-L_{p@U~!QtICDtq}J z?y7E5_k&3TVpiQs<<5Zw%{#V&!xB$FXprjLd110Qvxcb)ZkL*dOTR;@2X!GYJH`%5 zJ*G+ir5^WzdL)MEO!rCrc#8=?nty8Tcw_F`y#M7nd`M{A>W(5#xHK8c9Ey@=F1us2 znBB-r@WuutkLJmC)Z@9O&Sr+Uku1?ll516c3=uk!O+Q=cw+__r$CR;e?=Rj4P?@jqBH9Ev!vxATcpRZQnvH^r7)2{sbCMjAuY%L#kS9 zQ=!j)t53pNH|Ad&KY8Du^%d`;gQsC$U{)mMJi@8z8|9o$Zq#-Um6<*LuM)HK0hF29 zd6Y$4PC&k!-ng+CynndhmLiT>HuKm#{haIS1<+U`CLFbA$GuNj6R|mDw{~ zTOCcD-(9Oe-7IOi@Y^bDn3cij5lZ|%rDyo;T*8?f=H){cZ@1G>$n| zETe3m(#&V?Wme@J9CPwb&Zh`zf8e3^`^reIcj~50d4yApk=r!_JGJA{HfJa^T{`{L z5IG;7cz!rHtRZ#2|0yWpDT#4>&v4QEI>u*T<0fL?u4Q_ED(VY8^99;K_J zE)z}bIT3Hd;S&cJXS;LvG$kKxUkdb)->W@zZ2A&P3#&p#%}ts4`=;5xN#QQ3lqnWG zRW<*d+Z{tAY}eX;zGZePu$iriROQ%TI_?$8X;X{;{W~Gc|Kb^oe5$|0g*z~>8Lo;} zi>$NxHTy0?k-^pts)Kt@1u*k`(gus~3IpZ|wAs8&80t5eaJ0zE%I^?|0E4&!5+E86 zm7t>WU9#8?+q`GRU!8tBD6-K|>K2^zt~1Z!aW~9ADf>8pL$U8r)Jqruq6M=wU&#PB zu{7PK+3#hlT(;~x3D$eDvP8BH*#7e_eKUwO2YAl=_mjAfE86Nao~@?9-(iu}M$3}i z{@KqG<=p8Wa{5v7$k@p51-B{TLtmF3$&nfe7kj#MC(N@_-x=uXKg9O*FA)Nk$~fvY9cWm_W3GBJ|m7 zNMk!T$aM66i8!3|Y4LM_piA-T)EV*;~N)6k-?_ zHqBF&0=23JZkEXPz1Ahme)945+O*eJ8Pz$DI)T#axSAW+~m%!CQw3S-=(ke)*{0B$vAG`jS-m*5f29>`g zehrS#KK`~G!B@ZQvnJjw0wTBtYQ+-d@wV-rp3$@-j&fEnvc?`S`5x6R05c9Qyqn6` ziJ@%yP36g>&bFgPT1gv|nP+Pmx&6cj?I%M{3UWSY~Xij4H~X^ov1!c)dihmg+7W`}J)=C?B<+0d?!?4JPdxvU;0NimBluo64PHZJNTNu#+R)}ZI!q1 zo;Gmd&^b%r5X&QoUEp?pm$OD3woJh zDLXpuIw9l}dq6OtH-RB<$d1=cPp87x+%uuQOIRf%GW%^ zpQYFsM1U1sq2H_cG}~L%lln&T&tSe#ENr=A(J#G|Ddce|z*8u7;dkr1;i(3%a`JNI zxn;EIGE)C60m>zJ$lbDC9TLrt%N4R*I@t5IvM91>LJMSH0NgO&&y_Voc0TH13aQOX zP!mv=e^8DP17Js(QtmYrKu>t*;HDKHzz3(V^i6)Nx9`j(yi(t~&%dqGaBk>zU0h5b zYf}bnt_k!_iVb|4K1To6Dv|d9 z!mWH_eq2`fGQ(@Ls3gmVZ)?1d0IG7vF$4X{E3yk_CPuFut-y9{1EP8gWra86idsT2Z zQTg8LH0bbs$HMvWhB+&Xe0;~!(_u;YZtJf%0&E#mKR@s-o$dgbTRWPoNc%C?%KX~K zPQ#L8NqMu~KAH9%x${OOT?f5fn|=KZB4kdlQ{{^im&@JT_BYMhgmtiFSU{xAqBKVj zpBt$eR;|@&`S#LC0RnWfm#sjq4Z*p6ayYki0rz6x%0Gs7rzfj5&3>qJwf6vO)FL4$JMk%}U8+ni8W*mq~|lnQA<%5kxz)O5wN0qP3@68Lp)Z zQMXsdlk>+N&H>`K{xTJ(!jU zSmLIm`I+HeMnQzy#65;cxfF?$uL<=48Y%ccZU`UEVp=f0nb!ylp=NFBQ{uBgcC|10 zoy~w0fZ_b9Rwv%n;k}n9Y{`{l&uL#{nheq6dJBLL+x`_S@l$_+Ii&d~TWdXED zpN`kfmJ4e1$Sy6CN;n(YGwlhjFgxy~(lJt=z+E25Pd1%BmHf~mFR(n_;n@KBjQ-hf zkX2Yyq<3P|rUoPe4)y1gXK<`|&M)7bPO)_RFW45ZH_Y0VaLAXL{V3Q0642iCrT}R= zil1?{);(eIe0Unih9t7b_V1xEkn>&1r4L}buSC`BcavD^xAP5nZ2i`AOd{l=$(JPv zpWsJP%Pk?e%0URepLOn;dx*pe@CmgGuH)*X%scRk-BrksYlJyATA%JeN}ZQ_1Q27L z%SvyQVZf%QEAp<~FEtPrd}oY1Rm`Scb+9p>Oj|wAlLg=<9%NiJZ(n_0KqAf9ORb>d zHlZC4gZ-BPNUI-_!FRJaAJdLIWJqX5gT6=QY+J*vmr#lol_%PRXe7cv<5LT0ZQb3P zpP{0|@am=uHZW>mf+D*MHXm<*L>_F~u8JqxuL)}N!^4{%LdnLc$EKf?CR#Qh0PNNL> z45HcCJ8pT=sLu_YV1lUKQy12&RUG2;Kl$)U{f2oyv&c9}GiTTk$?Fmo zXyG07+t0Bdc6~LqURZQ9Ci{IvL;0jpo@*g>-AQJ*K+VBp5rvk@?&SR_?_EyP)4$KE z;-J7xaecJuy^!_7Z1$2k8NkF)*uOCG88egrc;7_vvQsn2YZSSE%y_Ou?ew$6YR{SFKzP^dPBS>e+gBSg&f- zY#p=MYZj2o(lEhBAiyKjnj_q*8Bv?3R(A8^O0ci5*QvNb< zFlFYX%3US5wM42<^F)v^JMGCd0eW*WdB7$LiK4-`4GfjV=scywRw4!ML7?O=O?vOa zk3|lPX7v1wo(6oJ(E-2!ob@1$q|~qA-B-p#t42qL0ov37#e|jFPFA&|n2zWU&J$i$ zO3FjscWX)cK8H0~buZXbIX+~IDPYk6##n`A@V5)QuimU%i_s=mju0xx|8$2VeTvhU zTAS+%e}KVws_Faz&d z?sAnk=2Y2I6$zMnez^vuu&~W|d8}A6WE;l=mh38+G_Qxt#foX*2Gb%2j-2pq^f?}v zy@Dp5HWl+$YCTA(X-2zhhTv)Hw|dB%9&8s7T7K!9G%%z0Jsv|Welr&1UwmQsIVWb> zxKS~^^jWj$%jS3pmKp%2;-p2bS-kH|UzPRGfl|I$#iD@^O|9j69PUy*KG+Qvgz=`opS z3nU$gqOUjd`nVmQZwCmr4ym?pUR+#dB2PZ>h{#CTPC3$%CY!j=c+OYX=F&zucCa5+ zy;H76af;&V9R}&o>EIM1uT%Ljx|l(NhSqq*RXReR?B8lqV>t2djBJ++$v>_k?y$;m zBP0#*1;VpN!%0@In!l2YLa6t+ z9T4w_mS6OX0ye3IR4JSk!sEADT8rO$d2!}Gc&ksY>8Bnz3oC0V&#Cq<7kvPk#n*7Y&! zYE#U7yfyEP+iy-*?l2($g}egb0+U~Z!8~M@&j0sbJxC0!?XE*R0H2y$)^Txaa%5>< zGXbzYPc!dXp#(sAEFYEq}sW#-isMEHk z+?9i|&t@5gVv zH9W2clOcYt^NY9WSu-lZr&R`4z%o>>fjZbh9i*T*3n4KS8PDVlLgSw^l}^A3ji7Do z)KIz;Eb@}orOf0 zcVOsqfL)yM(45OB+&T*+l+^y^Doa@5C=vyL?VJ0?=M;ZO;{|}m26-jN&wye6=g8&? zROK_8hdf=)^7r!wq-HK<25=Acy)=)l?C5g{Xop&AO_j|br8(4BRay2aOf8EZs;5|l zb4C*GBs}WGWfwYhy>Ib?HOJL5u{P?vps*Saii~;y4yu4(1{*k7ssYY=t_F4o8(3X4 z7Kb{s;wJ}NNN}y?CPhH;Rji=gRy4dzcOR88bq=6%3>(qkatX=}RId~U=psS=NPAxkaFIV<|V?1UrD?s2kkZFi!Pv(FOcV6GnJfxhb z6&Qg7fEKp&igE*h!l64q3&iKG1a7oH(<%)x@pxag^i-k~y9 zwKXC%TOO1}Q6hBNfG^t^-N&om2K@ z0^7HU%x9~E$?9(~W%p6%H3C@`n2LZkEQ9_VJ^J@Bj|p`)I&*(R2_*+=Jahok0!@;_ zr6;dI8a~jq7KP1H;OAMIPxty5od9`ht0^oAAl~5zvx~8hQkTEW*XTVz2h_jArk!3N z%{A%+%vc!8Xllovmx1`>-h18Jb}51LpIU(FU^0#A1F!FBV*xzX{V)Y1j&oy{r;i9l zwSKu`Mwar1KTlcJi^BN3FC_o#`SJf^uKYV=c9Q_(TLQ(fuAO?1!|3x6oS+r$wJOS; z^oq1Y;PuIy0(Hg)|U~w!h}nHpq*F{m0Iv?WV{Kcbsgi~ zU`Z15n@|wTKqcB@TNsG>`jOJwOC+TFHxZt~2H-)@05-PG9GbL*ay*yjCt^Ax;M)9F zhX!w!BZLGCl?!Q3J(MoOhmB-N^Z&9tdb0^Cz5>|DARF{W@7=YQx^8IgpEH}Ys)?8A zp+N2kD5;6U4gynW#0qplqd5OLi-Vt`Ba6Wt#Wgf8O!sgz9uld^^y-;j?^Q9C29}JM zVtl?FlMsgd5+kX;Oikr13##4-7p%`l39N4aE)zA5)+k?vZ{-N5@C}l&#xV(#F7!9N zFF^enh`b~LAV&tX$$?C6(~xnTUVt*Mm3KMipcH8$2;?vamAPKb7_6x3F9Byg1Kxlf zsqmk*roUVnyu=K!ZpwnW)CqKhqb5{J0v=?`fu>soab>z%mwcBx3eRG&gF>OJvOFd= z46t|Me$NQW8XoAu17drVRyV54Do*7da$p6f7=(>^>)iy<@;U}{8;c%xD$OkQpM}u~ zx=v_=F^W-%<5iW_!@|E364Na%mZ1J4p?3uM!g5&H%3xM*u^AI}0KOG#GUa*XZI0^_ zZz{ZAKa&NufC|V{AS5kuAft(od7H72#D9eJ=V!_`TQ z(;QVG%ZXRgO1nzJy`|-PiPED-VZlk^L|DQ`Knrf8v>>`{@*b2U7HGli95YjVt2|Xb z@PieVU#=lI@u|ERGq_lS6$qzlR03xM3y58eOYJxFB})7AsLGwPPgnI{@6B`XqErDV z;31u~d`IiyJDGxs*gp><#Cg?x17n2@f-p^Txl&{@)N`yjp^&IQj~U@EJ-o`D0>S3d zkOEckC4uy!>+XMe%*gGkLWuiEDV?7ese-aNc}tWrum_tUmr57u_T?!N$dR7)b z20uMu0vji}U1*Aweh<>YL;~Zw+R84%CA{ zp)1%!dI-6%KPdWhMwJ)>LIaQ_S5=dcgun9X>MqkyQfJC@$$!>tzg2Pvz-pAJv-eGt zfW7I4qC}k(@Fo-<`e$Li1oUoTjMv3L)J0bXZ`3#cN{A?__$D#<0ZP>TT{48wfV-q% zR`gcvZVq7Z%`0;|6`BlchW=6T258O&YCofajOql7#BN|b`bS9Df9NV6W697Mq!x5B z^4VoW$fZ##{=9u1B}-v8k}+|es9PnEDOj&GJU<8X?hqx|Pa=>Lz>NHd2YXXz<`IVv z6t*;N5o9SdCD&sZSIw71YA}cFO$EJchC|hC5aX#cT!=%ztSKdN2TDQj!NFCLnil-l za$aG>zxF}T4L51K`DY#_0(KJ`(0+L^4`Bm7*J|J$c5s9DqjkNfHy?icBj=)d60IPh z?Wqc&NU?tzLadlNGv!U9|1mm-(GtOkb;t2^!>n4h@}wk%#{$tnIlXj$Xxj;Ks4m!2 z^LA@fCy13K60>kUdFq|T_+*L9pKZCBtFS{JV2m=%rw20ZfL58vL~To5SQ(Li^q*}R zAVe271lwW@wq?V}@OI}QLa1hPi2Ib9sF9qxbkGW+*{#iYL@{lE%XO`jdr#+&{qw|S z7vuf4j<=Zd>SO`S5MUjYQ>-S+;AzoU8p&dIP&E5TBXzwc3J<^r5HgLtGp}h(*|9-n zMUN}eTO$m5mDu1lZG+nif@wGIIGPKJ_YWQl)m--W`SuRFM_nG}q?p(vaMEUS_ja=c zYs!`{eHRBWY!HemGj4mkPg7eb9O#HWqZ zgtQqy#9?I${npI$M1*(R48@+Xl5Blg%BYl1{@#)tKSj#VQb)~%Kc3{%kk+QAKT4@c z^-pWEKavK7Ls8aCEpipgtWZujY2Hnb9m50{STBK^;ocqoW_J}Fr1U*ppMCB1i1jqP zl*-eEUh|svlnev{$;|$0MhtOCAt8htDshI1NbV_{lpcRoA`p@5~>3&~Y zBOoy2gj${5S2KhzcpQHI%#<1=hK(N`5cQ_q##(*!2zL$cSZ4wv&tMu4f{%W|Sy|l< z-*&C*m4AI3d(gChPx%Xaz%o_UbLXTKhwEl!<~Z43ZwLlKLuw7vUd?n^WZSw6inD%a zbja@b)!o4!m6h+0#9t6?@>OZPsIYt&tVHwCh%LJKog02yFjJiZiQG&yKXUkfLP73Dm*Gd91;u4M&=MsU;4LHHhmZ@k2>2acxI_d zzxjnm?u!J;9PX`fUF*uHD~7~l`-=L1+?J9`g3aOeTX)#T-IkMMTz@xO8E;* zglO6QlMdI`BkVXX2rXl8AG5^gw;mP*8EmlU96@>(VQ_DEQS{)Y43>qApw9uX0$H*y z-|)yGK0ox(aMyXlV~%**4aKg-ERdkh84ne{cc`iSChKPi1r`(C5d;?^=d-Rsg3p0u z7hRaS7vg2h=eztWW2K*h`ZmCY$M_qOw73fHVHBbjE0MP1?)HI#C* zaC$8$0<{`$$#s)io){tA>r$XD!9PMi3wh9ek)431Uu;yJWv4L5L*L~H-1+O}2c}_Y zD8K+%$Yt(O=vsr0{!GK?sVJmOM+y-wRS#y@df zj-^8f7p>%rln?o}>}mj^kt-uPkWTCis;Uf>P1RK`XM#J=i!9eZ%5z9C(a? z>!mM8#u(4`@8!kA!b5FvW(gv$TVy}d{XKWtJqk|`!_4X++xr>I-hT`SbzlV-qnR4% zB(07jHGOUM+I_B7uLJvQWVp3X+-KnzI5Onto1ffaFHdKz+S8(ZjppfprSem5D^1qd zr7(YuBZ`Kz)W&6g#5GUTc=Z&xX8886mtg ztH!{_fRVeBd8{lB*W(1sV=3*E8#B%!T-)zuXsWE3f1)c&bcRP5X7h-iLIECE;^Jkc zisSWjDHT76nJ~!^jjIk{XU5{}&a92E<<#c+&;ym$Fx>cb=og&C4c7=a)(|pcsz>)e zQ!_`*b!)R#-dMOEsPl4*#Thy(yN^Gru}}MDBtPJ(cfGT(0djg4cBg#7cVxc<2cZ7+ zsr_uxR~KPI<)Bo*x3{?%f~A0pvi!Vu(ICn`L`5Myf~Zs$j1a{(Rm0KOqyfw%BXS~G z>lEbzJ?1Ni=btZUs@IVC|7%BC)=T16q8QulYyn=pbqHXFWmwD_hVA<+}-Z?@}(r#S0XUw z(0q9orM}L&$YDF=?n3ytJ%ac{`IGW@l+kZ|DD<#=F=4V}pWey~w;E2Mx48IC+n%>) zaqpyS(7s;Oi|xaKExQFC?PLO86!NCOvA`nPk!vhl*Lbhe}r%e!^c5MGr%-Fg#XD>dci*g40hS&xuKAfLB<;#s%xF zNKgie-#bc`)74OY2~99%S70=yY?ouSpRd#aw#fZ=LnhU|D5; zciZ8KPiqBUQC8!}(Y;%a#7V=wMde6xX1gv;<$8nG7m_dx3k)bel3+VdhI#o*vgt%1 zcJ2K2f{Dhy5{TG%}jDawc=v8I_pAb=L`O1G;`l$Wi%JAVzL45{-7pFI?>_LVgFA&s@Gs1uIk< zIKgKS6RjjxQk#{^6gKxvmWPcpUmQ8H3C|14tf!I!OA8o**s*K_g*G4QG4*TU8s);?Z8mj8N>F?oM2cP%b&KN^|j1>Op%t)nL33 zc&r`4nk1CX{?+&08JU(B`_n@$47NqnYe5}P>EU|p)!*WesT)otFtA~9X2`)4RoaC5 zx#8YjGfEAl8AK2%SsptOIkX6URftoCtFRv<6#0G^KvT2G|8#gAb^2hV#8b0fD+Hr=U#$~k^U^OrI`-`$n!WQA%@uPuM`D=O$BQKo{(ksWx`~ff&Bf(YjmZv?dGI&`}_H5sAp6~Si z;;lT|r``*B2XzTi;(HqimLu<%TQ&D30~tE$msP6yKV4Ux-fxPuyz%&K)6@9MR^8}K zyLRt^w6k;IM_&-A|71la!#vp)WfX0XCi2BX6<-%p%yn%A*lDnUxEjxW10(xS21=S5 zGMTAB0?gJCs}|csz&R|6jKMj4>AtL>UYoylZ_XHH6&h8}3le`N5rst3w8dddgj2}$ zNO&D5HBRhmYj{+8xR6Mm3&pX72{fWO1x6x)isAxF&xY#+ito|OqFUaRKI0fWfOHM> zdoeE`hU6b|XRHR-H4yTZU28uoy+giPrXLH#W4cjN$hf#HR{L)B507L+kZmAqZs*re9up$Mo%ks2=pIPux^hom&A4_Ne zgMv!K{gnxu7=qe22os5`g(3)BtG#H)8u5HGc|Y7JRsW~}d) zgUd|A;-TK|&p)z_A7%g@fu}IA!g&K0SDi=Tc<|o!dqvqW5>gbDO#LN8LwR7UdPNub z_9l7309k=rgn52!X4Rwp23xoO_JjJyZ6l|%VvmzQ`Sp8i;tU=PUzDT$UIG;>57)ukAG12{&b5V*ypvZ?{Ewq|WRi4uu7cdI#@N zGZoehZEqpqZ`370%6X1(PfVc~cyfa^caSc$SMf2BOAF_87jJTsu_9!uB;V~kt*Fy7={i<*xGX1Dz+F7s! z^D;b#FK^~bPbn-kO>Ur2u3o1E&lw;t2(qpQ=aBg?3=V+q=hCIQ!E(Wx%Ud;qZ9=Ak zX)}C7_NUX?{^coA;N4$ht-&cfza81;p zJ-VRx&>*Eq4gJveIO6b43W~MxI`A17gh$?skhDZpyqal8xF@9S*de5ZYm`?G>1`02 zUTYeU5gk!mEK#3W_nIz+YeJSGFMF1~Jm58CWWH*%9#M_M_^Eh#f*twDDz5pzAh zJ~M-kw`wd0xATu*$q#LdBNP&cz9SAZQ`#I64QVs)7v0{#YkUW{PaCt0$)aQW`rc-) zY~c9LGqs?k(7nefTOb|qPLPt^KzJJD0*qoQ3L!Tpr7MInxmnhhYsLGs(A?$UVap& zkt3!%t?^cW}uwRg}l@>!+@Vz;|b zt4{)P$R}v@Ven$zMU;ItqVn5p|8Pm_Ovv74O-FbZUgTkh6T&!oAA!`UU9m=&aP1*dN0?1WeshwxtKt1cSM8;_LA(pH7y^Hd4Bv)EkG1P(#mBJ@E{brk>Mv)F) z>h6TJ+)sQA;y59>@Ihz;rk`9QlMmB(rVA#F(Zk2f2^(C-FN*JSJQuXUyPO*vG>z(E z!ou`qA=0MmB=8>Bnxe9BcRn|ochB)Y7O{wW+^36x8*m4@Rx^&uzh6G=+uIQ=NRfPq za1JFr`>IAchjBMjtn%E1voqZ34415En&f+P)UDZmVG;z%(}!z0E;K$=#Q9rSvL)=f zsH+gV%9szk)al95|3r)E|4Ou&g>Z@XC>zKNpK7UpV-U zTJ+sX7B{azpS)h?yL6=>bl_29KuI-8|S&tg06=2rSY= zs=IQY9FB}t&eh@A@ad2VBVUcAoJERR)@z7rx}SjD*8VfnojlT_7Ox;GBjg z5>x4^={dFmL=w-|SlJNQT&|E1#_x=ZN0_^ud|fKn^s!g7K@1=w^yQ@Z(4PNLpY`7< z^>R2$G3~~+wpyU;Or^(Z&Eh!TEg!0=@J6v99K4;K^jmbR8Nn1fQ43UApL0ZJCwmT{ z^v=~Rp_PoP5B73d?x@{H0to+@;a(M#>HjhJ$jHSM611*dHQpIHzTmqelt+u|#8Mma%cIqFan zd*{ERF=7y|iwkPr)SxyorHGJw^GTe`6Zhm4VqrH^1R@G?gP&`3hVwxhk&uhaX3^%L zX0~woX#Z{)W)5Z?SKj=SkY=Rg7pDcfA3MPmhxeOiTi%d`#*Z>7(~kS+a7=FnOG+zc z)k*vCY%VwZsR&#s7-fau3&_WnF9E0nu$||WRj&e`%hqb8R>ntCTCjM+TMHOq=3+C$ z`FDPueVh8C6T)0da)RNl6Wz27ivsx{)td3F(4k>~wvOR@fnFO+krw^c#S%~1AQv>- zk0r-Sc(o^2IadG?sjw4ki4C>iuvX(t+XcsV=xFXX7q8cAxgJ zLRBm}em4f(**f>6XXRqv9FeESqJw!iq@HY4#%K$Nx&r56bo36F6ilF!STa9bvi zz@dZRkvOfjMJdhkP*t_)C0nVeW3;4O1;tznT&qAe3mbovJrKf{9>n8AD|X=z7sR?1 z{K_4;nC7;pB-Ud(t$P3G6^qt91SIf?-rntUCQp(Vfh&s?a!KD-+T@PstOq08ls-if zdkVJq4!5=4MT#B=rkpcHcfZ}xkn00ICod*M;qKEdQVFLKggY~u!JUh2dGCK7@!ek< zB#}85bxSLHY7e@7J%$!6v_steW(F6dSYXqUi%CY7Uof+8l##p$hz+p${PaHaqE=={ zRoK9@7YQ9?4Ovnwq$5kUl9tn!*WgIPInOxhiLIJ6(faF=#&;)VUNKV`Ql7D%C6{)c zYlPnlCg~WCq=F?pRAT0tOF}4Y^5Jz-*{;~I*DI1M|Lh}L=%tRkH9cUG8+Ctw4V~8V4NnW4&ee)pEqNIkAC@)vPPX{`$yvVEgngt8 zXorxyut&gEa41E?xPDl?y|^EIic{eJtoj5C+Nhc8|2 zw_0}FAA=gtOi56huW$zLB5*Ns>7j54#O>D?s&*|FFN+6Nl*5jVU$DK;52kjw%ud2l zg^}I(h%L}rcIY}?mAL4zv#L;fN&MsWjAORhyV2?PjuE!6+Y@hhH+pzqxfF9|vUzc${c1$(XTk1RN z(gsDHpFtU|3q5c9o71Qw`Ce!JYf|h@e`>o zNZ9^4<^#A;!_u<1vaN^xo2uDq{DMm#eH>b>{-Wm!p%JLo-o7}S313e5xv=XeLTbd8 ziVWG$N_2NCFgXM5=(Xx12SNDUr23%jSY**HVeJwKwvIK~Sb#Jd6ey=cEe1hrCcDvN zo@&}CZgBsF_e6})m(>dY^O8O9>fhfzI%={m)1MOxV$sU629tHngQgOmcdMXX>cwd+ zH|nB@?kY3!JQ^JNWwN^)WRHp#-kr9fD#U%%P{l3Kr;D$nPT%1$PJ=rkNO=@q^Y5w& zPwEDh>rV}%a=`p&Vqwf~#Sq=Fs~oWZKam42(OyUYx>-^Yox`bd`y2V$?=>kY8N+9n z=SL3UMh=l230}}{%|X-k0u4zE+KA_og~U^y>^gK$`k4>Mvo3_f$ELxp5Zj=!KOE~i zOssh_1AE!*@-#V$K~l_aElOn32AE3CPW_ytJE-EGD=NseqqTqgiFSnw=D6O4YLUjJ zLsDCV0%hcS3edwYa1#WvII0B;^w7djHBJVt?^xCh%DCt4;rr5vyO*AW%VX+6Z(9$^ z1Cp3U(B((jhe;&*)_uXv05k=hZ&P&~he)DI;6V>G?J~K;bz!^2AyAck2>ON<9nwKZ z!Vb9ar8-If0cSI1{RwDIJFAv$d3PgB-K-%+gEZg`%41CIrW=H!r--9216hA|xg24i zu&?}OCT6|;quADTUIOVng}!-t-oib#TOqgne_g8IyeeB#r+K#dIOtDU3;O>LYwJe} z8VbhXOex2peJ{#sy29^(YtDN&=7`1mV23Tu-U4+;jpXs?pu?tNU&mHBizt(p1dtE> zTjD*14i=6<(C-@ex(c+PD!_sncj8LL34_V(dBIf*N}jKoMz}#W_2FcN-z2Iid!j!c z+*)&6#cWk2wNeJJ);h}2Z1xfDoHGAMIf~d| z!eaUACUjQhIoP%ywOjIjX=2bZ|A@FVAix+l@jYjj^r})TQO}JY3Q4_E+{FKs;-=`b z${BqAars`;&mtMLfFO|+>{jzYBjS*s!_QhG?kK}&U*O9<@d3B|M0ZoeM3B5LYpx|% zLW+bC(quTl7Esp zznh+1GaFsdB9AjjM&A9xGDZ?Us~K?!%d6pdM{$TFD{8%no8Q<&PO2YzSvVqLGHsIm zteHQth>GT7NMQOR>B#{J;77%1mgh|rI?{9$*AFLK9}Ftl5Bw^oe$cFP4?=$aJE3wc zF)r5+TmChY_O^PuGX~zrEO4Dm!Q`4_C*E0jo`a*NT}f?WykjS_M<^LSW}ZcPnp}TL(8v6W1bs#Sk^yvw zu^fiD_~x$#?kzg2P)JmRE^$1Fq}WcJabxV1*{+@hN` z6I|iNA;}t2s5EvjUVn^lFiPt87viWw)qx}fQ(M$^J>iZjOH)tr85*U@j)HJeWo+NQ zso6CrBuuCWCh%=dd7e8#e%YZftb4rxhG;@tg6YLZ((Ef-acDobALiHU@$i4Po^^YmNVL20pesMn0bEcp8g8lM0nPpeZi8S6A7iFKg?=h9s?V<>?cfM5M?L;d zytT`1YpICClIx(o{>Chw`?UFJ_Vx#$m@U(&dlqno+h(&D_<1c_b+;)wYnxO?bvQl> z@O>&wq?HdM+-QR87|~hFksjX2jqQzF@2~v{uIrLJv)A?mSLw)mm*2pLzVrtsvJKq1 zYi%DTC(HOM(?=H41Ob416m8iVK_|<)lUz5dbwazApd+6mn0)hRjLTU>({1=O2JfJ% zrR!%EtpL(!hYy2mj^6Az%c@yuV~oC{8~z`Ry=7cgTiEuy#h@f5rDV~KbO=aENh2N7 zAkrl*(%s$Nu;>m+=?2L~cX#s+_I}>yoDb*2`R-4hYmPbYx~~8Ipm*o!4_d|83K~LH zUurqPTl$m_g|U}ye4MGeZ8E(de9uPf^lj?`rP(cmKMVDb5;P#P!pnOznu zUb@o*wNDBNSBxtsPb9S`NC!1LUM4Ck$If;aYKny~q+3eglB06Uo#)OtidzYKX!FlH zv%2_jNcikZc*9HhyW1z6*hXVj`zg`;6t?6igA5&Hj7aL{$=vGJqzIrlT_#M77jLA7 zDEzVaT)NNWsi+6=foEFg4Ca3VzLK6F(;{^OAbHH{dN#mn*>Y_($EU110R?V+HFX23 zpnm|FEpO@in5-a-r&Qjk>*I?o{uJ6wD{A9cu{Ero`lPJaD*Py-6EbH?6 zo<)0k{LlNkiJ%tY!4#Fi(rf$^#-{jAZVwoo%uBrg5faItJ6jwSHl-p25W1QtN{v8{ zXgBj=c`L4bETc5lV@i!vb5O+|o9hJt<%rW~yd#bfigK#g(v^RP3@>E!)rYNA=$lk% zPxpw-xJQm6HvcK5?ET~O6d0p!1i!56}p-)z?rL3NTBK)^`r<$7G)ElMt!{PoN5 zZdofaB7W81{GDqswcPrQ)l*1Ql8u- zq6*YC@DWWl?EFXu&e7^Z!jIgaamQ@QvTL}qvzyevdcK5Yv}1dtccN@OBjg0+Kw>5q z7H-EQOI*)(ZV^S6v_0UH9nC->8ITwVkkEZ8=qKKvV3bI6Lvp^Nx z*Mr`3`x@!yfoU&zfx17Xn!-1>$G)0r4|+D3UOK7WpI;7M49FWP`gZ&HHm^>iah}&2kR{6KBaHm{40*L zjOKGYxZJJY9`i=L7bCP5!Aj_m;trP3t$DcF6=Nz`ixK;}(u!fPtYtrG@`$Vb$2xcU zYa$?GW+~AlKtyuFr5-^7T?_DEytBBk;PE!0HgRyq%AXgkI#6l=<*FuGmusZrFX`@I z5Qhv(ib8vObrsc$z{l2MN6N=3^ereXI;K>F7(~e+a|u>U7UM|TfkXJyU2rM#38fz~ zt%y~I*95(M36wt{Y(ViE`uEV=L~_F-Fo|q|J*Dk1h}yKh4_F$BxpSy{eO}xR;+n)4 z83XU_ANiNhageWEGOa&^78}N@Q3e`i3@$*VZC}r%%A%NR`b@;83cj-X1zuusx)VG6 zPVT~{;rTSK@&R}l6I~sFm+!kpQ!2zmeO`^r3f%ik9XoozzUd}TS**-Uqg5Q%m4^#@ zMdPY}a=(iUtdVkY><<;yxz1t%I_KYWapJ`OliEAgD1tF0M6NUB4j>X~XX!e_iqqkg z`&VA*wW6u0h6H+biKe{Ee#cX1%k76Y-1UOd*pzA`X2`G6}3xQrjRs;E+b zKrnyYefjxd*r<_2^3gk5}oqdec#!|p#pe$&O2eSgzI@_^2e z{udmQtjm8OQZyFwBA9UBr$FrfBWO3R$ zq#AD|)rQ%1RC^(z=ymt-C11gBm}hd%M0H`eJnQ`h z1wbG%NN~^vAj8pRJ?37Gmbllz)r!#|vx!GZIDgxD=i)iXG&tG82}wYSG!;}ENcWGq za8yuREi1jOxSE`-*im_!RRePXmM*rI@C#?)TnR~5=0nBPzLPMH(WDtKt$zerepa+@ z_L&|w8dISt7NH6_Id)ZnTgWv&>+h^D7B9fi`R@)OO5Xb$7teDy3SbC2M;a%giUqKr0HY<3ZC@G_aha1kN zt74uv$OQ8%h`7Dn$DMD)5-{eq4Gm0|8WTkWu>@8WG3aJ2+AF$sYNnJ9sgH|N2Pale z{u3S03_BD`yik9V2>8@2zF^ZnnE~87*E`=IH6S`H`Tct`QE3V&X%KL^M8=TdKFHIG zILIZddZwoZzt}b?WYf(_`M7+6zUs`l(rNxJY2JkbJaf+tO$Sdk!yx|T_76n5Z95^t zRc>OEoU}sljBAN1w&@nLZraKofJ;}EG+<9}cZ9scuZHMIa}N^ysH&5ZsKlriA330%C#|MSQ7jNYS$VuONUUVPa%>Nt1FFZfIi^^OB^Vb`n@qLNv87zd7N+y=79Pt`_+8bZTz6 zT)wg1I+AQs$VNP;hVO)=5@eURsioCojm9>a9}PR+Ixerh`+|@(l9%Icw;4{5(zGp8 zeB=|8{dakYG$vaLvEAq-d#w*reAKe3JRPa`9Uu)tE{u4XpV#V6e%gR(vYT}2n~Cuuc+A@Ao2+?(zybw-2hm+$5h^e1o! zy9O%HLLR9M_y`V$(K;fP@3yn+7E1Epl8mgB;tzml41PRw`DmpIG{5$}g1 z`R8I<0lG5cs{N7GvO-6SCB|sM2YaxnYr)H@H2VC(upHwSTb|3$MWm(s!5urQxmG!_09y^i}hbxUSOM@Lrt#CnleHDq$(XZ|@OK4%`8f-T9^^8^V6HL0H{ z-P`zLL{5gxBNoAyVUqhTv4S|VrWiXk*R|=K@aHjB8rt6+07mvJ|2+KfS|Bh)H=kfX zee>?|02CwN*Y>3QHTV+)+yAc?Ag%gUNL+FDSXfjCB}ps)P-^dh%)j=RS^go%JU~Tw zR_4F?DJ4x8P!&R!e`X{DisBP=AbZScRXr8<{p3Kw)9q$FEtF8;F2n@0)~VFP6Est% zYCzL;7SLX@2N* zUy!$d$1=jDm>ick8KhJfASy!X9B@%Ox=#mc5kBmhf3l-HT>;&CyusD0uN<=`S>jg9 zT&1#SREJ0tw%a*zH6=wf7e0ylb6h*T@>KH2ws7CDE9_J zzE~Pt4wAbtjydT(1WJiKjG9W3akAgDML!Q=hh$=m-em-dEgXbt<12kqodGzC%!yac zIFwx=3T-y0#$Ny6R5KnlOj&P#-G{BB`Tm^pbE*fpY37jVio@3{d`LQwJ3+C4ZN4ZS z|I}&i(zLI$!-Cx(IPTw_4u@$g?5Kk)e7COv^ryY(MBKiZ@K=-xK;8Wc}v?L>UE2)3zP_e zF>1iaBdW!>lb@A&$d_q$MRNGOiIq)M)zfoh(jv?KsMXO~JH`EG+Z-3`nt^PcD9G+k zl+Vl3>GG}61;Gi?&-7pK=1SguJPJO>WwYna%ZI6P*@NbQD2$gL=N1I2gxxVy7hRMi3~<&C0P-H{uSyz?)YC%uq3ynDxUBV|0T9!ik1;)|pDi)n+8Ig6KrlqAdDFy}{e&N)vyhjHzIS zV6AmwdMwo#7N2brJtY8h>iR{TEXt^b*b|1&+I;|u`Kbb~=pQh8S{7d9Q;QyxU`H~g z6d1d#aYf9={||8Zkfwox!=FV zX=d|s&{F&93^vY3jQ83O$CpX;5WL^lzCkBJXo+H@ry7RdF>KJ!uEkrc`cYq8ztbz% z%&KHV+rJ4}h)^X$;Ud3;Jy4oGp!|6uV_k&GyADs%*=CpY+j^hANUEXQb5LQ1K6ElF z!!Oi+SE?2k)DqD+nFsTeYAcyN))?&nAapubZ!yoO4`#YfQ|$PhItA4L zzitCRN!=r!W9x88)oAo<3cYNw<5`c8nqLT+AZnnC3D}UYl%!hO+v^R zyIbBDLr-z(>!1HXjXH1u3_qq0@`T;|4!r5pZ)>N4Vk#TYMh2dGMj zJBfeNNXAdq;-RJr2fvtwN3~x=WaYB4R3`j$Nvm+7{JT!u-=&m@OUhCyHam6QG-8}3 zW@WBaOPv}#>ddOjvNR;z$2OLJdRA?FgD`8jWvFXN3ZC~4r=1JSm_sVvUO5{eWQR;+ zUwqXB8D~~2Yv>gv*u{V!$n3IVb~UWknOclIIQyk-amk`AwIDZ<)|S`T{_E&)t0Xer zgUAen8&=Y*jAXLzBNn#%v+=n&@a5GAy?*ZX1%avQNT`2m9?PQL-eZrlc;u5xgIoC1 z$V46wCnt$4nt$ofnpbe-g{O=vF3CpIhoj>#NlB8seBx;i4mBSX^UmJhdJta(vXb;c zrzA+(>PioOS|2k#B^oe$X^|>Zz+KbR$XPe^)cdaXMD+6e)QIS%j~9L51J7$Uu1F|Q z+C%>0`B>O{3u*yL%#nN6~WT~S+n$0e0A#3>q%1!bJ%LK zK_FMzzp6I6{3M%ZyY#WD}|0Z`{V8vaACMpD zooj8RV@|MljDUw>OLn(puq)~a$Z*c*TpyS zhfbHvZW-f^nT^3N!%MuU(qyQ)gDIaGI1#UQn-tG=zWRy@L(uXImERZJev8swT@c( zp_?=Au+;`8qILs2r-?ZJ3E3Q>ZRV{B+Ueroi|~@|$97eu=OGOwQ~Lv5In?ijdm@MC z!~{+X5Mx*Z(E+|SB92_1n{8Bq-}}Vc?3uWS5uiw*8y(dJ5rii)xzfIlS#G8ExNx^fF6zu!20Fr?=14@i z%d3|iR68%q=?@=!c?!JpvAQwk53c0qum#-SAxnE4d65KjMOz}h(7mf*?xLjUkanTk zR80*U3hQm{^%j9$=Vma8EY$zvJF<G>|50GpO`jXatM6U&Rq?@BEAmzt=l-s!3c6DCy=CQ);JNWX_0MMf>DA&@dzrQ< z)h~Iut0hP`HftPOF$%kcM?H7Riirp#rk>z8O``s!@9*@S1 zu&-Y)NX4caywm7LOBSt24Y@e;(+Is8E$etOto-_ZxAI>ecC4iLXybeR*$R`NM7fomxp7lCigxj`-Sj8!{eK>|I!I zd^=ya$YA+F!bb~z1>A-Jc8OTr=W#+Ke5b1WgUHz)sBft4j|n%3*RHR@$hnkBSVDCh zSwo&Gr=;|}YytfB|6S#l;3{|UCFy1@&KJzz1#)+y?z&VJvNRyCVOc0jR2hVbjYAiy ziXg?ziIMVjYOQ>)j)_Mt>?+fr!IQwQ)D)6=bzUHUjeJ=P}=Z!Z|zw4Fm68NZ*jAg;Ab@R>dk@7tnA!P!VWW3hbr}Wus7ZYgRafojo_`0$6ATL|-V82BI>agUmYLwMYbNCtN z9(dbGIu;=EjDYQ*&&O3EfxUkFo>!Ec45I7kp%d%i&e5{3)rt4OuS!AYd3Q-ZZFJzM za7y9U_V<}b$=v1${Gan}MV4PLen%S%+jvs%->i~6nmpBtl)QDu=1bJp$2WEhwETwrFJM>US}9lRfFXCGY|A@}nA zifpj^gIVZu_a}Vv>|tz=bs=6|A3wAL3Tl7adBPUSctW-o)d*4VZ97L>vd5e0Rtuu` zHvLxoRhZ}EmRL_DJRIGGlPdZCXelhY z<9Qd&!RK(gVraYnoo}yg)b*IweeWuHu|cAgog6M)in8l%UM?cN6Y*USu}iUe{d%l< zmzMTPENF#qsrmi*jZ|b{J?!V8oB41`*AE}j=w7=EIT`>B^3kAY!%VoN)4N~6RGY3` zDD1GRVXBN;`suJPXTH7cLZ<6*_QmFTYhSL8@rRW&*As6FBm_HAo50Qaxi)`e@53{DZ-wyD)Lr>KIk5HKkfY}8An$SAilh`>-6=w>L5{X8Fp}u zvgg&2;nbxFBjMZT-R~L>4x7R5rc6-cnTh;~P}`On1ygO8jFbP%px4F6RsY(TvmIR&F;dok&=U#LyO` zgmd2}@KI_k2USH);y;nw?RXydGrva4D0#G<65Q)eaxW`?uMpFBR=Alhuot4!{V`}Lj+>YATtG5V^j4`$&**Q6}l%v!K5kZPSiBL1o2iJp;_ti zm2uB|m<1~!ZR_ZcZwPxRNW>8oG`&s{Na!k}k0FW%F7_pQ2zF0b=L#~tQ+Lp#P!gp~ zoeK$wo`G2Y!F!?)^ChuOXmIPbn-K?{37)BAg7 zo9Cg0ZlAcD8penc53}@W%UZnsMjA*VNyC{!GPPmZE-8?LAWDFdfsi8nOicPbhzW8% zG-lB*sgSUqXn`FH)9HK@2MhOuC#`FlmE|IR9glt&Fy`@&bO}mou0GUjQ8RGTxVbfG zQx|H={OkqJfrg|2iOqv8DSqruS?ANHsLWoD61&^4L`t23BoGa-bZ{v`slJqTD{iW; zHLLn(x(c!{%kY|;@A<4H5sVPd9)C44PYi)>5Wj8xQt5Ojh$&Qjf1(J{_kLgofArWxK(WMAVOSrHZ z)^t0cG#~$cJ4)}bJ>LVCWdw^$RVI03he_7@V`q}dt<=@KPGaW-!OsF=##Z>G0BIN$!dap38+2gB@Dd_UTh~&{M z^c`U{QbcgwdZVD%p=hkZK6_j}5#^3VD zoe+}^4h4u_MQPVy|4vwD4YlbCk;f%iS5U|S<4iFOgCNo^Zh`XEiW*JH0!vApFmO#* zYUBACd}JD9e=CN6)5q7UcB7(VYwte$YQ0yjcQ13oaFZuzV0+&$Euj=DbvtQsUe6SH zg=XvMMGWMxCH_fO@Y%2$86ePtl&1TiSQ%h{w6P=z1uMU*=9+j)P+Fw9!m!bL+vBZP z+p2$u@%OEE4(b&Fw-3GjPWh}vn5*p>B`-G2qOf?0#}un=FWrZVUk9&yb(kiifI1MTzPhp-k>C-s{bTv!1}oz^Ns_*`uW9<*db-H!8z;d_{I3@a-|H;-u?xe<7M6< zu8fhQR!fv3X(R}` zqWt{ot^tuw&Ei)!bnLK$SxW059=u@fovHE;(s27zejPa)o2I(n#dXH>@t@T}dp75e zF8t(FM&5?XFDQ^#Qwa+h0|y_`FBB0QPQ{zW$@_s8JfYtNQ`u&@-^FH1+QCh*Ycc_3 zvJjBTBGPrZ`>qrD^R&7H*<#$=3y{aszRki^Zh#dgs`%aUtJOfq+{EqpA-lwMy_Vsb zY2{A08K*%Mav(|NE29jk=TpAom8WnGid5eL%4bgZthy@MlopSBf9x>=uoX|EL`m-| zQif+c+e8)>hxg60ptYK*s%{ur>w?}lm9kbb34vHkW1X?6(M@1BXxcYCPFq3i$`jkJ z*>;-s0izR80|{uw1Wmnjn+D^I__yyPv6NknU2#Z?4;%lqcZ=SBaRCj5e-nG}>OomlXtHaJ8 zN}H!oHPY_y8TUu2E5k3+;RA%5MKCWb-R0$+d}1KCTOHmp?(W-*#s@gczSntiP!`Fm zxWi2yeV>>EuNXV@dQ^tE$O32+@LX`o7sfCarA0ldB1P1ugr$)*YU++Mi=mk#f(z(i zU|}sbV9gElmG<9z75=~{j%RJoU9IpK$9FT9EnKPOypA|Ad_JP!TnV%$&BnA)d8($) zc=vY6OF=nx5rF=$Bp1l48wShnB-X+vcC3-7(g|$Iz?VS;6htx?v_u2YL6MgC%@V*3sV{Vxn2hnj!P zG|MkC6q^iB?t7tPQegRzHdeF;Zg^)FN8ix#;%IH6eo#?o!j&HnQ*qGw5uKl~7x5}^ zY&7UrMtlc%A)`f>|JpzisZqQAi$FPJ7*xTI#Eq~$kjr(AjHDdcd#vFcuDf26ns}&f zulN}%?p!4OdnmAp_Ev2wX$C`3A;TMk{i*CL#8?fZ(G8NEiHmiy|EvZM!H*gfm{-Z4 zkf|7l>*en{6QwR58V&Gok&kWp?hT!9?iiufDEvqz=8vM1!vUzX-&T@LkdK#TZG2TTic0T{#@m8Pd`2eTK``n3O{c?X#8DokmvIGmijCq!%N^(9R?G z9!c@Dt0j1Wc#+{Vo{nxmsDc5BmOh>zxXW`qQl702y>td5>68Is?-)$v$#hob3Z(Q* z1#*Z%5XXEDLLrx^Jm)DGn5QH+XCRjR3H=_SaM3W`%y>QePM3mr+1{MVI%68zXnRit zYW7}VQn@( z36;nrUa1pI>QLJ@?GMv|jlGp=_SNv2g{`tTsw#fYvmGz*GrxSgC+gf}o$9bMX=nAc zzU7RzpVaMtXqnypptmn&YP*<{m$8RBtFc=xad5!U{IR$L7So{a655Q)?RbiCYW{z< z0KYsr9;?L)_;_>br&9H6f7pP1Llm(0lX)EX=WzC;WBsi&ZY<^lI$-mH#HR#p(bb!Y zJpLHhwF@b&vk>J5yO~pEAUY(E+*_ma*Sv?njD0u5^-o z*^2QLcPU~Fq@ue*;jJ}R?Udwb&;7&Suy;;TOsycH7f?ZP9{7(UXg~hYgE$w~xghA~ zY(=$y7eY{}<+%j5GCN{b$w3MXp$rRWD2>Vz7;BGitF?PW)XDw1bcN8~6Itak5!2rI zXrP5X6~@<(PmAu-t~#l13d?2?6Znoy|5{a!5;rJI77~wPx}I4n#U~NJN;IK$wlZO% z8H|Ux$Jkbu936ZX8>07uMpo_xcI4CQhwGT86h8 z^IIBe7j}|hcSaih{s)z$6sK7oOQzIu!QkYYtUrcF`qzjhfivVX3tm8ED?4K55~a- z#u$J;W15!|dC%57UnIQ`;_|rNpN0br?0uqdWSU9a7OPtD4UN7vFDHTgESl4IX&$1Jhf;<2o+3W47?cZESb`gb`!=Czt#a(aS5p>vWgJBCY1X zj2RzYB6wH?Z^JE^6!r~=$9e;wFW5?4?A%%H7ZlEerb5bTbw3ha;L50b-G$A%KGj`F zLs%)Riz^~sLr(?M%dHkH;qtx3sNq!UP$V9QROD`QY z$`v77cOq1BKQGd;C%$U1`1>jk`L^E%$KzOj=eyhxvnQxnnC3wNc@laMY4}M? zrAVx54^36idT4^R%~VR`r(CxSs_i4XeneAF$0ieQH3!1$enj1=ZuQ#3hA9R66*p&Z z<7O2dh-#_mewz*RUG8ZXHcL~zt|xH_^T1=;rwY4C(QH-RTF?J3FUig4_bTRqF9Fgn zS^FpVVWJd|_UNNSu);ilg9zDvnZsca?u>ElPZq|HTOuB~gU2G*x%dG@riSdmz1W~q3{I%e-1c%gNSwR;49++bBw+Ru%= z7FAkF(0dBRNjs%*SyJPeH4isGcsQi$G&vr3E57wm?d7Ml?+*HV=5p}b%xq#9L-`ZM z`aVzdLk>#%{rP>PNRhTT_Bm|BNyq3pb*Hgvz%?86+eKWxpr1_OCL&ex$aRjfoW+Lq zOrb+%Yjmyd^L$(>5;J{&+or*%=-eWUGBwG_X78RxUs)PztM#X*g!A}3Z{YA9e`+~@ z&o0N-nUEJpIfY1LCcEY>WgxBGsBZy_@)|>F7)No@>WL-w?zfA}@u%Y1XEl=pi$mkX&pmLHk2hC#U|CkMZv!vH($YMQHb6gWy zyiRI%5BI2+Eetu;zV#_ZF)!U6ZoQvt9n||I;M*X#Pb);;$dqK9#*nnpD;j4yu!k*`$PRjwBzF3D__FZxe<9vt5!2&*CRn7*6G1avh$*5 zkFAuA(uVUNl9AtvqC>hL&ro`jf>)SGO-_gu@TAockEka{o5?s(=fqkd5Ge^1=a=HV zo+&-m#ZfbeATREB>_aNI32v}ODD-eE?Z}PJ72>Faq*43$ya?8=hxZGyoEXM#&g4#q zFS+XV%Q_;czK2Zv*m+=;r}1QAjGT7#XzI5FcQ?YmAkeK}Vds~;+}VaZZz%e4uf6g+ zH9zs_c-~~3m7cEnENIB~%{v!!$FriwPnJwOaYkyhC`urFYeCM*i4(t2jtv4_983CM3ysSH*K`-TmdPKQ zv5D^PBN51f+GF<%&BmG&4)=^l0QJCaI?bn89hbE5W`DZoG^B{`Rz=M)#&eZgFE3SP zM_4HS!mx6<5Hu7-zvC(O+!K@WcBQ+>)|+@_&67CITKGUC;Sr{V(vjd=EZ1ni=Z4)N zFzfV{8+YUqw!SqZD~|q20(?;98aJeaWX1U?wbx^G*u{%_dof1k({q+PDwgtqVWj;_ z=5jNT(7}(#A&lbIcR!u8xndJm&!PF&^U1f!Ejtnbz|6cVc8Pv$WkMA>)L?mexs1vu zke$ESsae>}2yu)y!Mrqb;Bc##I?M^iV$=x8_3U?zz}CGvA2rjO);JDC=xa$XnqYs@ z@KO!1#4(5#j0w|bT-PQ^Z(aDT^=sF(G1;N%>ZH7Ig^?i8**izIXh^kPhRmynGvITb z<|Jp$Kxul)x@W)t6Z1chz2k7`9*a{xsgi+vSrPZ4&KuEb|=fMbQ zGVkxbv76T~z_RAQSSzqHyF5OCsl7Z$pvzkDem`(L`blBFtt72!dmLZL7p=nM@844PbpP^HI)WXv;$uSf zl~gC$K1}bW#Y*2MdVqV@VL=?%_W&00>bEF5-kWEzOZfJ_ctX)ibUYF8P_Orm-h6F| zK4l`{SihQ7O+rb>JQ8-c@HUWA(-oy5ZUO4*x%WMUQEV}TtL{K3PC-+z6iq3#*+Wz9 z9r#ev@%c-%r3L}Lq;$B7>S$7}B^_9A$EZ0+dM&hZ#eufzIPED5lyz2K`t5VP%F>+sEbm-xB`! z#d5lI2Z|tz8a14(Mad=(iSe#u5gi-nVkKA%GLRJ;4F4Xfhi7~%3h8@A@IBn0QsCh@ zEUH>rD0JxWNIf=>j-V(9ZG|ZOH(b8UoX%(>Rd%*V2Lgfyx7CxNGKb~OAo6{-h@XeI z&vkPGD!t#olm$Ny;oZ;oP^@PgQZ%kJn$OScQrt> zwX=`*x&aCI4qL_<>C^u4NHGn|J`12)cUbnprECvS2&D&%fHw_|JB39&eqS4^bVR+e z*%SG)$)1CmgiIPie_DzS)Wg zgkmU5w)LyT*t3(AA*$5w^P`zJ$*jqd2cljpCrYc>{i%?uFR=d%Kfk;FEGDx(aLmH} zz&1^4%&DLREViZ!!22@l`4^xS>QjKqqu1H}_e ztDtw|R0h7LMtHmiw?(3rdciBFSCY0Nkfqy)kE*5=s*3uRtQci z>hhK5c4wb5dY=E{E*~u8x_(MR{08nC?%mI?T$l z#6r@+qVVqpzAZ3q)x7%?!jZST-w-Fv8;6An4xy~dRSqQ;eY637c`_;Ak}O-CP7X8M z`v9E9n8)e?_`nId%%WozxB0206Qf1SX&F=qf44Rpg4t~{nl|ZM_2$usg85>qyL^{Wt_L_r6&gBRZE1} zUTi;vqRo|NlZ)ef-*Hhn2f;^*e;r!AvF_r2DfW>id9K@mdvey00U)0?cW(T$4)`($ zg!E}8z``%!`_TDK$30JW(c4Bu6npKa`uNpbcF)aKR2- z`g&wVxj4Ia?8$?{|9j6lV(G3wIqfj9XQfoP-M5!P52fnqjQ(00UGOtIeA=T6RC$K& zd!xTEbnbUl%(Fr`B>Bhj>CpJj!fD=q+5V$>y>ID}B$DfkgYk51EeA*T>5i!jvT5&V ze}ATmz&vvEcvmdKgTc&e@f57{k4bCHnJU(glNtLFj{=Xn7 zs>%%<1m7{Ts0=y zOFqWa0CtO0niXWKQWR33ZvbgoQugyXfb-#rl0N4@%Rr-G(gbz}Yzc2E1PZoCup&DJ zJL7ix(8Lr4?i%5$MF3s-GnY{il6s4C z-Z3=;gx&a9&tRN3a$X&HhcB-5wozyZI2PrU$IuBr5;OZ9A%A&ormd}Ocs{8jyQnlt z893%{ki|c56twtR3-GBhnPieUN^HYRIrPYznl7r#r1@BBXF@%R2V-3wK6aq)|eEZ?~jWQF&qZS@?v_kh-#_}3g+hUJuS;3mX?@LEH1+_1hEl4>*(;8_3FZJ* zLtg`U0i#IHcY3s3{*e0p)ppsB@#p;i|GSAtEECb72&JRE_$85p(~(G}+Z8~e_AF~! zq&JW`@MeTEjKdWC)7W!hYklNal%S|3l(wM@JC4%eZ}!0K`4g>X=Ip7hG*3_?DW6$R zy&g|D>-_}z;d#^nJJTbjsi+R#6~E3BxU!wvwzfokIRF+WY)mv~ znr*N(radT~^^U+Zin*KvuH_KTJ7!i>qQ{&Pd`T9p{T#t5C`lYY65b27@p^vc_^GFQ zTA>%f8}1%1Hm_0A@PF8Q^Khu&_i+?WH6$^XEGhe%eGA2ekv(L~mQltMNkqt25`#*1 zvKvvhLJN`XY3#&MDUyUFQWVbpBA?~=`<~zVp5JxOb)9ovpMT!(Y0UFH_j5n@_T10C z2#H_Pu{F8jSDQL)Cs1b_FhzQ)EdCbf*?A87Kr;s)?9mpjLHZ@1IP(%o`24^*5o1{y zEl!a$uUyV^N%rnkc225Wd|meLT@cjK7+ppR#p#$Pi==6Le(8je%6G!~b2~KCEQ|Z< zYV`vd(YLYE({8LjP?gC-=G~(oVIk?WUVld1*JZ0OY~BDS{v7o{vw*VKmOO(>%;l|* zFqAKCFh+-K@ucj|RxI@oIBj0kkg%lb*(M29sUD3H#ThPZT1;s#Y8PLqo{qJqm1$&n zIxtdRZNEx}(sUJMbzIqDsC=bM#AJ{jLd^i-r|;8^H4u;tQ%qv0X*6l!Fc_-(8@EFt zxFht}g{sl-M+wJi|NCI^ync480O##a>uUeNNXgk=27{)D>ZR4z*OLD?H~L@9$Wu&) z;;3>-C#SNg)_!!!=d;aw>b$E@>fRKe8Vk}(l~+RNxSq0hTOZa@bhn=Rk&Y-ztBP_2qVA+i!|Cmt##Em)}?LwRO_Dv*#>|7Qj!e8dmx4eT*d}g zZocEWh1gnGt0<_Ua@R*89NefDiBHb|QKFx0eX9rv&~ z@ar*Uf9vy(C8<2|W1A*S=YjqREH9!0HMEUIIceO7w8q8guVJA93WdtCW0$M7d~4FJ zPps2E-k(_c!|JJMUVyN@gjC7@e`ZFihIRuQIOEjBHQM*5)(te>nARgc?slh*-MESf z%I`USTpX|&XG2}meDzFYL35|`XGRetDm>|ss+%^JCx6bgxR1$z-5?z6j{rAuUG~{E zs0r0rGC_QX`sQix=w){^Wc>Ty*A{Sx1ykO%Wc~AQ8d{LivR3Jap}W%wzmt28Iv8y3 zm@EFe%{zCU1>(i(iTJn=kFRa;Mm^Me|KH(_|AJ)xLxle!!v7HAe@_y&9UhE0MP}{6 zq{#56zD|f>LQkohHg?P2*#QC&40w45Q|a(uh;$g|4{i2Gm*eBFvkhuc(TE~i)oLLn zew>G~_nBkH{_EFWnK%05*p*zNZ_r~+n4SYaNAQ7|#w)k#_+w9BuA~i<-ITCS&yL!m zSp*Pe=dxpf4^egkHyRAk;n24dk+J1M+9!%PwThF43cJ1LymBM6Lki88Y5 zgzn}NLZf($p~Ep3w(j{eHix5$JD`07Vj`TsA|rq%>+z&qWS#uQ+bwS0TxHNtJkU~U zx+e_qF`yZ0&)W@W2M)4plpSH5v^>TAX!YDuN_kY<$rQS<^RR8|kH24?JrwyMAAso) ze?6t*OcSJ;EsJ0}G4{y^?jJ-8FHIpg(uYpZU*9xVZuFn;rL7iMs?DyxDYq8k`WJ(2Z7pc9`K4jL>9E4Y3&llt|JAur zqp>{afkIJVdB|6>DF}&vU!71ecw=R*5Vm2+47|Imj_%ih`Kpq7l=Axy_lTWq(<+f~ zT9)9{1{$>v&&bi%*f13^QR6bqG>k4%z^KF1f!YjVn7r}NG+3FiKPgk*U(Ql_&MeOUbd`DDu zp1DBo%=7iNM;~wNTl*S9?W5oES*j0kwMt#Nj5eDR<)z?U&=F3R^-1S8bj1M@EsOh`=2^Wv?%t<92nE`nlvE zu+srOq6v1*y34d8V_I>dk{YC%Ye&x#nXMKdqd4ght^qphK8Zi|d(#XbR=UnEgW_T2 zfMewIX8)wYLyySY<+bmeJM4=K(>IUtD+RmGSQw7jdxCi$#=`Kb!9G?vq6w~bahi|eyl#K%o*w>kZ+3mOQd{t~D%x&5V;bYT&& z)opD*lLsSy$9{;_;X#zck=(u~^fX=w5@NYdr@X#iSrD#^zVFCafBD8sn;~n34O-J1 z*q^VC$P;Cthj?c8WKAk)3%5xR&|hzpy9h=a*{rB5CoOG`){GsEs4Or$>{ES~hx(KE zwv6^$&zLs&{*w3Z-AAct7}>%3@7~gwXu;bJ4KOwkIDG!O%rhqF#SN0_m=9<2QJ!;% zWb!&q-?wt>b%Hc4-rN9{(k0`+%jP~@e!*E>G<%WTmIXa+p>5xbdbXc$GHllN|( z;HQY@jWMVnl)~}*4UKEOo|0WG+!f}6$X;#DgM6Ay7JL`j3K#_I{pNBapHR_!n)XA7 zvkEbzKzY{#Q7}KbD!qpWk8#*0V(^^4@(bcNQyYcSwEUHIwL%p}j|YFoJTpgGS#r&s z3s2mknw+yi1^m?Ei82i&R|NNJK&aza`8=@M7g0l0#O?{SIFpKm_q*sdj!ASmC(uk7 z)$|wiEyr3EUeKZouY{}}fT+$_S?_pZQ}lwN<+3bHdtt5$1dxW4Vda>dK1Pc%A5IHR z9(C&11AoZ5Met?peQ6d%cpAg)`O1ZzEii&HC6TIuu3`fvp}Vtby1$fODK~w*llY@c z#V&@c3Ss%z18w_~T5ZD<4_7{6gYi_TebnKspJ@J1kU)nQ)VRy^0CTqwpkJmfFa6}q zX1F^%(Z%*!4l?)(UuZcdK~;JO!luOlN(w8$L`~yP#Tshi#~PkkeZ;spLos}yV|0K5%azsl0j;xPj;j?$d&jjU&|2Cs zUiSKg%wD|U9*I(9JQejZD*UylfcJmbl0#HG_0b!UA2mvrsRtwu)#FN_m@*~ zC$`}QIW6%b2)?obcGLtzOc+chEe>cTY)6bK0DgP+fZcXH>D(Tc>8y*@>`HD&d1Pry ztS#lbs@mR!KlMkGQ{oKH(jgFlZ5>)}%D8U;`D}&*-G5J~Zx4zSmu=34HJsnqpm!(p zOva5qPpjQwcTm<YDCW-M6!#K>Jd-6#YO-PnO}(UA~(@PHtOWhnL{9NoRshQ|>^(lLR`VN?`5 znmr5aQTMYr^8*faUr!xcMUFu?+k9G#Yfjnu*qP+<(YAdNPhosHLWLK1M<5)Lq6>B< z0Vv8i6nkGWl~4hcBT9^l z<^=|8Mf+NTeFq|Lgg~68&;n%CG$q4SV)eppVrcQB)lP*b5URoCMU6_sZtlY{<>6{; zDERnJX@eX#1A-u_yk0~^RyHHdL5I)7poWb$4#P|Fe>#kZ^O@ehTE5C_v1EM8F0cmm zsqlhUgAVKneWZfO!wbQwY)4nR0ZC@@07;^zl5(^k812C|ZD(|$+1!T`zJ2Mywl$9p z=M|4JH&FE#tG*4vqyck?hR5nLx~PU(cu*-cQ_$jG0k z5Vs*d>*wh6*?qa3>w4lP2}6MpoQ!kw8;R|B<6P#dx~pYR*bZiR1TFU-QIv-l0RKDl za5m#0CuAibRsxE!^~}I3$9Y_L(9H7Pa;GvGykmdUg<=FfdUjjC2yA^g3X^Uwpc%j4rHUo;Um}8x?PjNY3~ya74BC z7oCV_%!BFnNfXw4{#-&c@+odu4~#G-{QY+KZyHqi=3UyH2;+9^zAZboX8i+4Jqi{9 zW8^hh_F!g%5wgYv+8{$kVOdQL!uIeD=1*@FB9;vmjX!Or+w<_)pU?XEOQ+{OZPyyC zL4w%QXcdP~a~-@2v)*FFTH*QNr;IK;0chV}sV0C06QIzjUJv%S(IBT6Ku(8-9)R5j zAL>O!LD&Oe01hr|&Ip*`-$dI(M6m9OjKWlKayp0-$Td&Rp|tMwCTh zvnv@U0LvPvwO`J9(a5l8@aK7Ae9MNM{}&cPR1fwvoQix)B0Y+Ru`m^;>|n?aMBr$I z@9FuQCXor!jsjnD1fO96j^>An<$FtJ_pvnSsjhYw0xau*pg(dX95T!v{(Pxf_cSu> z3hWV6d{&wsPz@;e&X$26a*pfmprJzTZg%)#te4<6pfWch zknt7UKJN!O>ZRfPM)bTgvMvF^bHo7-P#oPl@IC8O$nDCix|qMFsN&u}?F1BSHT3mCwyk>`CF{A6dOJT)Ty4g*{*ja7a3ni8Nk z?!o0gyTuB4F{XTi|H#<%)GR042fTcJ(wQ473R7mFwtfZD4}nef@PAN|HUz#zoEG4g;xtiwKJoudjKCvw|4&lcn1wL43twivQ_eESTQ zF0QR7J$}}F4l26axa3@GanYSCKuXDuKs63`2yA)w7Q!5mS0c-ESGyRPEH3xvO909{ zV9w#0pcXJWwcykR>6GvS2&#JFdp-XA4F>!xP6$gSoB0qc%#^9VyCaYv zac-~ur5rn`9QO!nyLa^VL5QjYq+Ub^&73}&uvKZLMHTtXNV)XDeUsFSYUC6mV@8I-WV>WJauvGyHP;K{Hzgl%%h5t|5}+tOQhHg}S;ye;GF{ zKU#cT$lx~sV*`g@+1wWcH}Xh?eJe{F&m(mB6u$r1(Adp6+cS-YF~YQ zwqR5P3(l@Wk+y?JR_AYq81Ug<+xgk4!s8P&6K(>+)*o$z)%|Q@#ns-q&@TE2UNHTF zH`+Teosq2m%r^oF0yB`MkO9@HgLQ4h{N8w7mw5i?JM+rhkoDEs&}|ImR~b~=kj6HF zNH$SE&2L!F)ALdz*X^@&&)0*IaGF`D$zDlGL~a@j zB08ccQ|7cb-whr5IFSp`Sx0EB9f>zDKNcmSFIDR^nFg@GD}|EDoyrnW#_W+t)qusz zNsPq}D7jBNi?r_8=zs+w0%wtGj~+;Vd#Gf-! zk+oX93aNh6i*vc20{4(^DN!kT5bVto2<0qi#-gQ+)}-(g5VH9-5_h`caL&o_L@|-R zoj__k5K{Xldm30P7lZ_+>bLZUkZ6PbX=^uM+c-t|gRJ(L`ucL02b8Ev?Y_zoZAmPz zdTlMPd?*;6@@Fqg$`D>jJgzJ{aaSlr+&m?moit{e@bdBVRgXUWPvVuh&vC34b?d8h zBf@I)Q3AV%Af+Z=tKlG&Bhl?An)(#kLN3vxrQx$9Bkz_JYalQozAgUTM%c*}ZYYDQ ztBx^5B6w+6p+m$0r6^UTU6=c0hM$pE9#l1JN9xw(-(2WYS7$nDb`Gl9oQW|9~f;JsSR$9tXvk3sMDByNhFkh2nrxW5T1N5v|YaKfB_#TWwV-daJPsC35IClOA<4{Jm5;_%>@E41eB%6jl&8@Hyh$%#pI-=@x z`BWJo#>hw@n$G}IBvE&uyl2lE6!aP1t@OqLit`5CH6#fmwTj~lxoEX9E(u~Y(4OGI z&)T^l=7>+dvAUNjkQmTn@aq)BrkX{h-2je{K+KvaS2^~Bc2)-}`xVrNMnI1NvUFn6 zv)u-wDVvSP1TEfmcp;`1>V~|e{_3Qc!8NDy9%30fW#gnjm=atMW5i3JjM3FVdk{lJns^9y5%6g|ID{(bt?x(bty?aKn*69Un>#?S}tq|L0d|E(l*+kGVw9Qlp!6c&*V*ZK79e-95buvk1~64R3@sI=AFwiKWBC*OOA zo;pN9-OzviY3G5<(j2Xj$xhMbD9}lNT=%0ySIh8m#sXRH_yuhPbCTY=g@VuuVr&{C z#-K`JpD?095aoHHe#{gBl8Ko;ulzf;oazYqUBZinJE=iX|5v7BYN~5evEqJ*dj~bU zx-;Q;I>lepc>N{$oh#wXT}zX93F#d(as=PlosVl9$zK)Z1goEm_Px6o5H>=#kgpKF zuvihB`u46|Oklsip~~8+bc)}F%Bh9k#twHcxjylc&JeYcyP$I&_`+PmSyM|26A?8g zcjXz4ej?YL9*OjMPZSSP`{jPqxg9)s-1Qo9kECAzDFar^yQ-|o;nC2->;B7}1&9u* zlz@2FZP!?TJbTGG^LLOMn8ENSPIxv6j8Z?U~d~>k2AYZ5WyZ| z;(YHO1H+q&W*);HU;f=+PF0O`AvE=^8{vKmMX5I{Xn@RMv@U_il_{US{@IW4dUd$m z=$CmZ23NDsjc_ynhoaH?T1cv4Fs|`(FFA8=Jnmx0%w58xE2&35zBv0Tjbc|M;-gtm z8+2k`do_kLry@Ufl|uGas2C3zdK8&@gh1d*p-3Gbvd@n?kd|t6(tea|FVRbN5ume0 zBl6~1_K^df z6@H?xE_AeE_F7JjVhEbhxqAIH(8+gPYZd!bj5lb6K&4hyT?;fR|0*tLUdE&LMu{_;T@JF=bK_D^VMi{ z9~TXq2R=`oP1gRo$ZWCpmK^Lrz<6hJdOfp+t2?+R#qhYonmmh#zpm3BH1~W~<85>& z_C$e!Zg0>O<1c;5r}?J?mTvuY=Z+Eq6HEU#o57W9?eH4lHgc}UEigyrM(h9KD)$0JB46+9`@>q3l832KOX!&UUxC7H?as>ZH1JRlI@502miv` zT=v?|Zq0{A;uMkWPeH!uc8J>Z6wdIu4fbNuL)CmYphxLVdXxcrB!=~IBlP$Tp-0Sk z078#m7z9(#Q-i#*XPVhu^~7;EMYg9f^L#3`0VO;kG#GVu#>3=suo*79kU3 zd!MuE4-6bQb6w4nv#KneQc#q!@|e$8J9aT@p{3Cc9iz>of+wBo*Yka{ib_&Ze8(E} z{nYx8Q!lB%zjZ?D8eiR`Hl#R&4ZE@~rV{T2^*p~sa(rcuVxu(9f*SNx1vP)$WiM&! zi@A~7@<*+Y#&l97fj-K?(nAo}+pq|cm8`gGcd&|eD`UkUnrpmN9W8QCk$VNM2v4Nt z6b2tJL9C=ep#=BRr;mS4VkUd+oAMh@fO-AZ6VBCah^3z0WMogs`)V8w<>bbTMS zj-sRBae=64D-Lt39uCRphRxeZZ%h~4ElrQ&imH5#)Z;_Huga5#Qj1nG$9(Fd!|5_O z@;)<>Sf&%{3|zYf9u?yW&-JeD!o7Ureah@-g8^5WoLsGJaV1_wodh*Do~PS2K_gU`X!!FsI_}6o*R)d*Eks<`q&8U7!Ky z7}*=uapdv-)PV#<(eH=i*;@Nd!aE$Jbv@_o1nNIOOHuxm!p{+JN*plxvgpY@PCAZY z_`i1UfFOB~I=oB#T;tkO>1Sq~*XNtWXdmM*QW+&Od23wRH~Umdeex4t{J7NAr#h|uQKEa(Q*+(zW#uwB4^nG}2+)20vzK%v-X%}Y zf`vABFf$}GlefZ7%w0#?c!c=vkiwBXEe$=zYZO)T%saJ)_MIK>)?#ih#|$Q`4|yFk zV4d|k>K3m>x4N7q&j-nkRcCM=E;E>`_6FDX#2!2Sd(N zHb|3qZGq_Di=KYO;7@CPtEs_iUnaq#IoA-hzB=AerujNUN2WdBizeFCMliaGUVgyj zNwe?n20i!vjrQP9G6SnQCxHKY6xUWPz>XTk+{_0-lR}5w3xIk&83CO=6z`T43k`M^8|~tj=g~u5M68x3|4Bz1PQKGJjCCS9>hdG{or|>wKJXpA>7ls=o6rZpZVH zsX;Q{ai~1*J|9<;cP9+xhmQys9M8(k51hWy+qM?c?d(6aNJM%4uxmP2=5ot^$>}%u z>#rgn4Abgehj!WpzVn|Hq;c=#w_vk&;e{*L#O=l*^GK_Cg{uv2JMn@CLmYO)-9!qs z(xss56TpD_h>xJDhaP#gKSJHrKxD=&4$nU)_3V2ab5Z1(V!z!PZ40aAGh%fyW66gb z+C!Z9WPH9xt3rFa);L1J=NREWZ(X0EKt)HAjaAQ6-g|u##UeCX*BhrjqxO|v7BCcE zdS@nmEA*lL&B7QY1l#T`K|kNO+E>s*G%-0GgG)lf@CBsi^`@$tOt1HK#aS4q$v&{) zl#8-_xbVwtpO?oM>mP!6gUJ#dGZW5-;=Q}7ud&h|B4(S=$yt6pg=-VJ?Ucg3uCtvB zw@1|c&C1lW{IK2ZC$;uF@6%+MzWuqw9-kQN{;0>f_z;Ncdb6QRo*(yprKek09C;qY z01m|);2F7CJVlGxHM~GW*UC*cKKr0r%JE;qQ5lB06|$Kxu_lYx_;`IDX-naq_A!ZL zSbWN>`AmGU)kLkG9xKyiR&Lv}TzNa<$6JxvU4jg{hm75dnS0L)7}$Ccb}bz`Jt33s zzn`o^@HHfmRW8|2mg)R5j{Eh2;d)nRGT?>566kFuPu}(6?DGx-*VY6@eVp*Y`|EFe zHK#6~f2O*(`A1IUlwiGx^`|Md24boCJ-MnfJ|^wS;={>n>f*)j33S?H`3a{_s`}Km zAMdSnyE^mBSB$J<9LJN-mt{*JoF)CJi23Dbh-&$Er_fcP=OR}|Inw!ZC{{`D@$9MU z?W}%+Tys4gUA8;MM{S=x0dIOJ_7vd5fC1s6Fu2-oL}0)bww^gm#y#Z=<0X&EY3xPP z#o@PPALCkvY|HR)amWFzIj>S|yE9*W!t9Yq?U2M2{xd}$uct}!Ik9SL@>KDT18*31 zwh%ZnN&-Xe!$#~46g3_5a}|>&HD3^|5@2{kAe>UHkT^lDIr-wrBi4)@&9}cvExi=M zQ@Z{-L%;O*{QQBjuyw0)ZPYQdUdgHGt}tY%HV0clmUxl@XN6Sxf z;sujMeG8wSi08otv48IF=uiB0!Rpf+W;?OpJ{C>EsR4m$l*3b97c*ZT3F;KrD#boj#adx-BK3BPy$_b{Q+AGMNpVC%kPa`+1vpIG=@CGQPD^ME_(T#<;*}r51?9};qQ54S+4Q$j{D069+n<@Xs9TrkfeW7 zNCvyJ>#X-F$8bJjme?E@Hd0gX$%DKsl%jq&NAdK4D1ALoA!@D3_L#nN58`(^kOzx;M!TnL*)i}yUC(*%$GBji2i{v-zk7<4PrxTh@rc+$CUMJ9jM zKjB*C;U;a5_CbTB@Q~HwErtvlIiz3sUN*CRZ@t`~jRwxuJ|fGi6u1#6P#q^;CxJYt z^0Mnxz?7hkbH+t*{`Q$T5WwBkIy+O*rEN8T=tt{^Q#U{Lupn4>0ap3@K0mAn)^M*(u5e zu*HX=W6Q|0iJw^cD70Ban&VKwd{oYP2Z=2N=&0gw?ENpK-8T@2Q*Z0VK|5!+!NkY4 zvmU+xKcxDIvR@$da7ZJqR5JWBZ!E4@QlRzVY~bkccj58`%#kzWkg47G^n6+E(nG;y z+upiw*QAEvanxg>Luu}^P`di^%j3gYYm0X~yQ)Xb^E+!sSI^m;j#aol4{p#o{nA=! zmgxb7D#dg|9505mmK}11cQhB|(#xirl>_YW1+Q08jmNFPXNb){7*?-nP-U}dAvZ!M z|EYaw%hvmT<)J@b?)P!IbhUS-ZfEVvB-UHVHxw!kFg$Q%kgIt?u5%{b?I*}^2MRI{ zc{fZC(RkA1N%>drlz)epBSB?#oJO04jfWF*0kEYu$u;vNNo2WEDtSVnw%n)udJ zhc2CbY*mc}Nh^M6tO6c6^L1^2!qdSjt)%>p;fAZ_6(AL8AfkilRuV0$5?_5U_3atN zE!Ffkw>NL!*=-n$B>9SUmnY>H@>01y39YeM?`?9bqhz1*7pJtJWa`rhGj@CPoi~N9 zyjG%7{j}mxZBWr28j37ISkee|d3Hov2K25#B~o{|Pg`S}bJ6jTb%}5I@Wbe!$y;!P z586Wsd*L4fkvj4(iGrZIHCmyl!?ITWQ+V;4LAr8@vQm(wRq%{FR~}icI0e6d)NiUU zII9NFH@Y=Md3b{gye;QwTZ3^ct^RVa$)2=Nb>(y3?5k627fico#r0T)OtgONQU1ty z!YsP?^3){JD$a#3X99e9vb2guRwg4VmfAsk^kpoXB+%lxLX(|fcl;wxhzdo6JO^xq zUBSbuFin_yN?i*%VW(54ytNad;pZVDvxQ=;NV|~KNnG(qCW|*e0x|;Uo@ICiT|&|L z8-?#A{9)rQPB?QX*2*NI1(Nd=Q~_}29LM$qQQc|D-9zwJMS%0nto>2qnZZ-6bE(H! z?|v2d#(fW(a+V>@SeKtO>))Zut+XaG#uet~%2^2bipYM1w*`anIHZ-F@2?NnMQ|FgXiE|wt6WAe~PI=|3>R8BPr#CTST3kCwu2jA2rJgmM z8&E^K=u_ez*g%H&n3g34In@DjDOuXIspl)fH!}6D6Jdn3ZZG4J*S45%#DknJN+Zuy z4xW6+I<>EfT+xiG`)pZA##8#w z!xKq1o$uh4R50r)i#^5HE(?fPpdERp%$JBipV!95x*B}9Fma=cOL_*VBxkq4oNJX$ zv3J3rcU`;$e5JDxhtaE+CFcmLSQb=qoHD&P5+}hTz}Oa1q`3A|slusarpQM`uk6R< z;^>OIz1#>tE4KysO!b?$MPWvjDq2tQV$BzqxjJUP;-VuGotouprBNlW+5tVRknh$!?Aad2fZo#>ds$^A}9E!zDfXD~73Ea8>2 ztpI*vj^OJ_xZEzmAE#O4`o%`HGQsz3N)YC%q|P+AJ7K!OL>&`(rpC8lKA85nN=*xH zn@8%f)Tb3n$JCRD#oRlqKJZz{x3rQCREZRCr+qu448D)3_Rg=?q^?%JU(C1uA5M!- zeB~#+u(`dGyx*EBIGHap`&xB$+318%D?Gx*MGC>>(}8`O>Qay<4}w>CU+#$WjB ziWIaH)vb(Swh*|WL*+GDw#a#})DF_InV~zGaF#*SP5;S(3%|;86$c)zynzRr8Skv$ zcc5a6I;W0N?klLX(j8?LS3Z_|PLFTSh8yo>d&YGyXe%yYr@t{sJ-}sAolflZh_+%3 zqf#_T++oneiqW{knEk-rgW#Oc7nOU`tWq~52Ra@_=kf_yo#`{IeM??TAs$c}*UZu{ zJSoM>F5serHBN|b+97P~o=Ft`qS+&;de=k{qwZ5{nox8+iW}ops#vjXI>LhI!{hFv zx(>g*MEKaER)qcT6Y#C(_N2JRr;s0G=T!(3IdL8;Hrf-KQC z?&Jl(YqTQi(^{dQ4`WD+UyQbc)snklvXL{+Zzd4kd#lK9mEzUPJ)3aCD3$R+ zZg2oD@y_`M+NkWYmBW8i@{i|UNcd#ncw79T{}P2&$Mq3pv!+K69kmiw?kR+j4s5mt zum)>GfjFWYabQQWT(pJ^rLrvAxgmw^RY&^-@cg z<}pG6i>+lo6GpFV!Z%LfoQOgqgNdb2f2 z_37Tml$p*v8he-!z3q}wjDPqGMX0dbt3Zil6%PIbW{ZIqy(LR+j+w0<^`}z5hIYul zAJT2Sh`cfE9H_}%N+`Im(?skv^okQaao4D-Ln*mVz2X^koPX3nCoXWkOWe^3YU1hf zxh;C)9=lieXfv1Efi-@+tGdgohuud~|I<&EK!_NMXK~sk`6L_OmE;sWag99133pt~ zAb5hum={=q4&TR$Sm}IlHzFG6F(99Rp;6!pQG7r572IG9BAi;H_p76GkDb%$Vlg>G z?6rOR{pun;V-$+`sC!wIXl!B@gStAS9isl?Xl~@nt@7{J7e~L8S#rFNU=FRknrNsi z^g!^p+@SBHBP6jCdh)pMB6M2KQHm#jze$xS-QBvFZ^ps0HuiE){9}hHFGrBob>7 z^^skm7-@(QRiBf~;)py1@VV$%nH(W~{-QP~a5mUaOqzC|9_1qFU?CGZF}Sg)&)AHv zBynFZzrxTFy#9N1MC^X??K_Fz6U#0OPU&ACem>4Ur&DU)^a|>zg$NI-K$#}BmDCo} z)j7Kn$Tm-(`m;CIf4I^Wxoj}wNgwy+sURr42ezM?;hn!B^P%OpH}eY^BNMPxTm`j! z771ed>3>wH?77zTYDwNleA;Sz^_B6sepbrE@YIsbb6>@4U!R;(7G5!kV?CZmIZ9YM zE7v!PIc*jZ#fSJQVNXBOijPRi#TQEJ{5cQqNEgu`Nkp!NRM&P%r9hSke7p@&>KFwm z9ITe2J@dr(&9eMeJ_{DnyrqiC;b)TEBZ0j>jsXfbJ<^yo(7-D_Cl9J{IfKdBN)E;o zh(Z^xMJDQG(bkd~-YfU;q&{PXlvkcY+p`sGy#ekrFm3zD877N zbB%S?NC2-9cR&mylo`C@s=B)9ek+>-J^SJ#d7w1I1Ei}FcO3s&lgH&_rkAGDARu!H zu>abKCF=fNmo%sz-UBgDck+3>C!c+uRJo)U_*GwVH6=V1c~;hya|@hEw0s0rNlU$J z`Fs}TaIGQ%Lg}5w0^jQflu!S+Bu?XuB!i{0ab!U#;=P!=AD&~Q_97E_?uXdRn0jwc05cwugcb(p_ zhJ+An$kb@om7t$asj$0VGv`R~OQBdyg?;6`AMEQ}O;JA{ute-M==m@woI*)H@j`R3 zdO;hWo2n&q>J#w|*P2iRCLuf1QteN!`3$#|FX-ES!Ai`MiW2fF1$*M5Qj`|aM7wu6~rlX{(M024NILGa3Am=B3l@7xV9QU`usjH z%BEV|@ivMX_X%E%zaD1C?Q!~j!TsWnjy%_Gm6@PS|4;BhX;bX&887wb%dRF>{?K#vfn4PAyEinL=qU!ty@Amzv#bt6K^TP369q9CV_`(U?mmZ$inH z>uU_Fb25sHR;l!Gvi8l-RDp>mGbdIg?e12(mWo`^a(;05_8PV(XiT6}jL6rs?q_f! z?1%?J@7sEYWD>@LC61qoG|29&$8Trm_er!39)kB0tU0&KE%0p9t3>R5tyg8?AJF20 z?-h!^Km^!ns0N-gTRmOsJM*Bo%{d9e7hWZS?Js~i7ALJI%;pAp4FhsR;P`6N2B)9m zO}rHNx{%=U5^v>g5DI9m$8&4<3DTe5lOlUaar-1a`tJ}563mF%-4Gk_G#urzIQ@s2 zb@fz31hLfH@ybGBcp?}H^tkhXDzfkIm97{}qb#J>?NU_8Nz>XxI@&jMrlu*4568r( zH&2>BlJaQqZD+&Oq)Ks}rJE#0)-%AWwv*Iz@oGCla6#W3=!h81m( z_z;BqHtE3Tw9D{vusMW{N-ii}h13;m1D@>NeLvGu`4nt94<4`w2XiM)Y8suQ-T`gV zIrUQMKdCOq=)Q7AR7IV z2poEvtHffL+dEBvD=FaFVmT{yeub5yfz67N+=*&AOQBTC0Ku1(8dU4!DbI)stIuRU zDqYluhS&*gYi|d%#Be}@04{uf)@gMTYW}#t*v`7h9t`I@ddvz9C_tRL3=nMvC~yQ6 zNcgI0fV`|4wl3(CFvMz9=S7gU~yk6o|touVjViW726YMxQZnIdt% z9XAsz$6~P#U9_I##BAR1MD(5Ts5~TyH@FagE-S#%-QJ>BbkL-(Ln!0o-E4x z=!U0Q+p1{y5$@j*2s)N7G7I2(KxBKbMVH*UfAjlNqZ1HdMK7C0V8sy!Z$}4OyejAJ z=}|by%gm%BFm(xh9RA|p0;vpInt<7@Y$j9GkhH|Lo9&D)+o>~|tDbV;Ns5a;GZ1c0 z^vtb<+?YzpF4MC)()9#97XRYq6GV1?CfVx24eGfe0kn5s)A z|Hyh11)p|O!!akwiv;yK{3fQ{lq*1G$q>BpN+!b)X!@_dXL;Cht`}xW=>w1$1&qUjI;MbpRsi}hqE@j(PN@(fDf7631L!7w zg#PO^H|YN+Od;P)>FvZi1H&?+w86oIcUg#WNi6R@{8NT+WB9)(cWizIiG{pKe$svN zOjo>+p-Oggy{t>4*_C#P?RXA0jA5#*(-BB0qL~GQ$25I(lb$w#f_!#JIGWm9j6^T~ z1<{2)Y@t)tvlgs3yHtkhgmYn}!3bAvtyhFNMstKix-rP;k5WCLC+uU&|#QEf#h))wDUNc!eN7y4HK(y-YYLc~aaUMrVPY}mZpukaq9cJ4;#bOREyyNyS{T&=DREAh z-LF?}^4R|Z5>490NNWzKe69O28c}C?AS)V#k23p)96_8ea6ssIkRd6-FT}Qx3(_G1 z!_HXM>(``pU*1Pn`XJ;SBNwQY=dYkS^n-lC&0j*|1H^KQ-86^BSfQ|XAx-; z_44TuU6>3!d2#T+d11IIeh^y|R>Z@%w0%-m$O9Ryj|}a0pz+UzVXoh_99$ru5l|#7 z9g@sn{Oh!?{$CVn12MXWb8#RKiCc(vM`_1c16CAU9i>n$pqHIu&hJ!;{l7Y&M%oxm zl}4prqcC;jRjd)kDwLyuw1C?+mqhjqVh1Dp zW|A@Y8~F_lg1p`%hb9CRBE5RW{2v&B7g-)@5o8#f0aXMV5=J4!m}bFGc`JJe!GQ}3 zhG{>EJGzAs*kO}i_VIqY9FCb_j~h9(I5yLd^U^cc^J zQjudui}cRte{q4q+T%_CJn?KXnm-t0R@aU2^3Ad1@Teji+_Fd&77jUY%sF~+ZsxrO zQd|4tk-h^MKd)_zq>60Xkd!D!eH>sr4*69MMf z#t`gTV8_aq0s6{wFydlhw%sa!apkMgn9ZDW;OcLP=$qp|h&+*Q!j*?GXd=tt(QE-A zz}r+snIO*fByDZ~9yuVe1qzut%|uT9S9 zZvN_DQxZ2}LqfyH=2?@pVK%`FJGBXF4SHu78f~{ma2|&_=OqcDTYOU)34lc3=`fxK ztIAYr{n3vb<-Hq^)qmH}K;EgUua|?#hAhy6<5X z8b9MkvZj@5iY5o*xZ7Bz2L?pFyGH*{jQPOHNOSNQGr{UaY@Z=yr(BEr3lc)3K<1bv z^>QR*e{(AdaQLPX`!Dj|LJ~R|tZc2*;Qy}S^8Xz4ulbvsI7X~Ux8~!Mf4OE*-6A}3 zB`9?J)}&Y-Nb|h5{Ld-Uz}6%w*PRjg8*8*%ZV#S>XK*^SH9`wcMKEBmEF`1+-Ap$C z)^H{ii-WbqXbhET!EP2pDiv(v7mbjQ)mlC0KL!{h#y3Ym|1~TFP>ZsIm+QY|>}?ME z1~CcE;zpcElJ4d_RX~!xJNv6FzK>U_1gp_-xlkwFPM?_BwE4JT(m~+&7BQ@^1xTM=9v7 zonv_p0=W3)ZD;>EfCIj9`fRe7Mj4LtV`wvp1SFH7t+VYPgX)or1DkL1e-E-BiMO!$ zctEX{RMWZ{d{&@(SiNybyB3l{YNE_GJ#%xBc^h?9thVzqg1d_^x90GO` zevs?OyY24^@Fh3QZLkAvrUh&9b^F8vfo>)`Z~P>z9Ka2q*i(#TyKJuO1m7g&9J51z zgjCAg+t`wmKz5pP^6uV3*T1LHZUASD+>5N|`~1^kaOKO9A2(T%@?;LwTa*4v?$74B z|6!E>Fv@=zt4g6q=C-8%h=C zME!!89ER1WxssTaeX&A-$7-H$<1f@SsA@qTt0{{kF%TKM@q6jmPzNW@BVCxGQ24OT z>Rg63wp>;rXUFDT)HHIejK$=H6Q{Q(zeb0)U~4a1;H5=dM3~JscbS(z{Kd&my*VA$ z!4_LS7KDI-e6e^8Ti%;xou=Em9VN~!W!x1ZY&CWAsNwa^)rYE2?)Cs7NB_egMV}Rurlvo4ag`#Ri6jf7cGJHvn|WP4u&GAvFhp zx%PefvJU*8*F13Eo3;30-45-oow5Tkmkw<0W0i@qc=2u$q1Ou#*1D^|;sdQkfQ512 z-_;*I1GKzK?*0oLHO(v7x74<AU^tVfF%L!ySE_Wq<+yZACM_n zP7NP+l)q7_g4x_Oc5l%aK@7Ggdbec@m|Z|V2NOe-FI-BSCFRpORV)z zLLHiaZ|&prO~9Udm3;gSpaT{A?9AQA%X=%Xq%mx+UOoY6v8f9e+WNf}pzRU|x)Lbd zmDXAb2%c4n<}ak#Hh`;h1C1_Qko2L^76m;E2g7#52gT5d*F`Yf31+uVN@e7cJ^?#2 zP*%|X`-N2@>@4Sx$^kf1C!GQNKepS&qszjWwszVA!{6=vyANy#U~jdEl33J31ngX5+Jf{g{LAP5er?Ua zkfdk>!Nz7f)4F4Uf~gNaHj)4&rx|bCqOVloNkV&(%ob8L0JL2bgUh!7D9w9IW0PW5 zCok`g`NvLyr03PP_OSxQICWg2BOmBL@y6al=SJq@#p3LOzpK0Z16q=#a%i`Hp9GWJ z@1T(Ynzp|3x&yG&9KCfQpOfGKZGK2|Zb2dsbGj}b)_2$jA9g!Dz32wB^@nqA(H9wb zQuc&VEYsgF*noUaiahVU4oAviTD4c*@7mMJ0rdrlNW0AA)(SY`p*y{`Ti$AECgztP^cuDSYatMz)Hk znGITGk~wILB3XIBMl=nK*if z>)KyLGrc1;ZCgb1SOOWGvocow1oEHNCpP^4>pG-1GUwCE=#DP1(f!63R$lJ^i%G9; zZx*(V@rK6Yf_mF35@h^qY{9?QFBGx`1zBj1I_JOb`#b0o_6AvE$IG~t4LJ$Z`oTFg zUg4VvT$2aMv^qHk#R|~X=0Mp<-qZWnp3ILv^@rScj|Ar+yk0DHH}Dq{t$c>jtfI5$ z+F_(3pa{t8Fbi2;D>thr%(?6b?gSRZy(g~EyG)Q0c!_Q?tkvsfl{t1=3wj^~rH@Qu z^OHN~_OHku4K&QY_w{bk3e)!s-y{pDP0as*Mx7O|BfiA>PJY**&dh3U=(JOY@8PFu z#NVx$<1m^VT&4@x7f;n}2~~#fPDTE}RAkCF?+%7GJ)WiALCHg*8uXRt7i|MPY_>EO zjbjfx>G3ex-P%! zX3!xkYp3fwE`l%`=<0ZsNJNF2 z`#@i545$)hAvwdiGnif>>>#Q&d^Wbc_m$k-o5+bejjG>-Y3y>Bh>I#qOh(9;i9yMr zg%{=vr=j!f)Ae1Bi|DKT$;Y}Of?#3$ti`H4UuzlPP=0bk-4ob7VN)X3W8KA1!X6vO zo!6sXp|rp-uX4I0Yu@P{*nn(4f3gndEW`KH5P?Jws0MzMSGowf)4+mCv`Oa3LT~%r z5&|@%?uWeFUJFLxC`#Lw3*0_rhmR`L#&c?&|883?ZcxVwG(WZ!Tg^AH=0U4a<2wYebs5mHzy9^4H zAS4VDa^d(v(a4~ZFWxu}s6EUUDrDpif_$Qje+4|Ya`$P}#0h)h|yXoqY-TvTan zVERh!7BMhT5SkFS}DWsH+S8-@knQoX?Gc0Vy^v9eSeGP0gPl^={@>Ocrn7_Y=aW~S7 z_5B^}{Jz5)A_sT?kom!h0twNy=%8R8r$c~LX#jc`)dTs|Q}*BW{?_Qc{S>~fuq)|j zs23WE!DQCd*B7LO&V8cLYn*NieXcg*h00CnTjsKr#Gs zaXpazWqX+Zvy?N_p&zKap7g2$6WqnLiF=O^5vOCWRQ%F{Z}xB79fomtex!6c9OG_$ zkD?L2oi>>bO&-5t>*Q&WyZBQ{Kdh|T-aj$!28^0N719!ID~D~2>0h8Vk}z|v5N=F* z7*n8I+Vdb^6G0eA>9K2uj)p?q>6DFt-#g=QN%aO{+rE?74df{^UPEqj^X+f(hdRsErD-%Rx2!cO zU~e(+BDuX#2{Up_R~7R)WSb-{1VhiboVLN(? zzqvnQE<#VsqD@>W=Gfo=GG!iR2^3_0L=S5vK+86HC@-6Sn<(!rrK%G~#<8PPtjvzP zTlr7ESr+=|+ji^>}R-Bl4uSY=>`=qOBHs?I!jO;(HaX%b+)!2Is9q=dEasl2%Ms znl@D9`9qV$!y5jJQ(RBT4^F*$2XM(zXr%fj)fxCEuZbevGd1G~Q7*uI(Kg+&I-AhA zIr9cxBf*3EO)Fakb`gVF6S`rSU5#nNx0M_c`tbD=ZDhp)K7 z?3vPiAHH5=h-@F6i$B8V-Es_8UGY`s6hPS?Wy9`!N@xyc^y?4DY7Xb5fNLts=l{Wd8g3|h99Qz0j-{8*93HD?lg3+Z<3KLS(t%jN=5h>ynr6z&F#ZxBTyS2+;bPW3v|+ zfxf)xbf;@2XPvrV)U1hgt0uVac@LvwKLEo}bKjnsC;j?EuO83W>Mqn8JBEi$7o|6e z?R1KRBsXwIGVeX3&I4|0;U%}bK2R$Ma}7X#y7zwJA`GVU0Rn|$aK@cbnK zT?_Ge{;`iYxA{Rkdb2JE-1=#rg6?r>x+!?8+NqhIB~h*m98mX1fxNBu{;4>yus(lR z3Hy9$fn#7!&v`I;?fJH}e0EFip6Ps)+~r& z;YIwqo){;$*ed57>Oof*%5lZtk_@|Y-?#owXqnegDM{K{Ido==-2;_SUokCV$q%3A zsqLlzvFVn)&YNU0K|Kn%2!m6l;Y|#M*LNDz8_0A z!ai=>TNbe*h=L(&#` z{Hdb9-R}Qfoy?=4rhRWD+m}>2ICd(Oc|JD_GVu!}aeXim4L41XOqN9NIuwwhxuW(P zwkD>+5(M3M5FH&3LCC9cNPLK>ye4@wdU%jgMAEu^Xd#Czzg#33laqP2o0O8m3qdU* zP~ChP6qflap0q$9rIHp*NJa677Q4+=#Bma+30suGmxVK=WfG65AecsQ5${!541}O= z!0A4pl#gABX_QE_f4hpFbyIA1`>xaVsQ>7#V@tsf8{3Ig%VpU$zC6|uL z%Z{Y#i(0$19+x z{))Wd=|EA(`Qf#uah5Y*;(24Qve6&)BX&MLAh;{9O!4I&nP*_1CvJ7UUre5fo1( z;+i>0+EDCpf=1s`4Px+U3p=C*RcK4)@vI|f>ox5x>*0#|_ z&mWTOG!!WLl;^qQMVE$UlVcU|HmZzqO>GsHVR8_1L+)kr$q1+3gg+7x#O`AYp`;`7 z__M0ZYe@@^#teqfcfiU9tTx#=bXjD)BSAcOE8coI>4=H1sXw@C7yaO`e{pV*&+1v8 z(-T8x1}m=0A#Y_m{4u#{$<+t#VC^`?cc#b8mJI9^Fc;Cgm0fcWhUVB`wtQIcj#6Bg zWASj!&2pEvb^9g1b|v!kQCLY-h;#KXMdjE74P$CZ;?lXs4B4IzLN)rMHSw2l*9%T*$-H|A zwQ618DxiKc$~c?I9;-g)VYm`c8Tu1q7YY$aMMvLf7fxi%kIH-ze{pkF7=EL-iXG)r zrbM2cYii+LjQav+PTW=TsNk{uu3f2tmX7wE`dEjsvo)t9z{;jN|ENQDh~{gSB0AYc`3ahh^_-&Q|4} z&9`*CZIf?N{hEQom_9$(vMc(U2yOb%cFF!t1~R{WvN;8*$?{g zwSNQ<>Awr)Om`LeNj4w+!@*0InUsxwVtuKgCv0Y9%K2o|ZSGJ`-LXA1S_%`=0o z?do&mfhKYQ=jO=ZV96cz-UP9h`cZ?aYmL%0(UCzEQff6REXZ_wuJ4TXOu1Ap? z)K~{G%YCQ2U6-?QNZPLGV8;;dw3j56O;k%4w=~dQ&&A&Tl3do-b|JS3U;O+rx~+@M zEA|L9$Hl7e*%1xTAC6DB^B@%GPi%TTVBf;7&m7N+n6js5P&kH%zoUtgFwVZ_jLPYi zZ=T(R2*t*ST?QD3Fw-B9fo-ptDD(+8cS16wwPrliUjt4ITA9b!{&nLzx#lzuZ_{bE zXz#zof~6SqDXFAhCKPUzQY28~GL~?ZXPM1A@IBIwVU=YYw+_cmw^DB}x5@5sb#&!~ z@%wVkCA>>ia+T@#AmC~$5QME;H zLL1~>kMaJ&&W#?IWdhl9iNnwjW()GbwM|RkT#ClgNB3GtdCiKtQn$aeC$Vs zx_vGZw@G_@Q)TLMH{Ty+c5##v&aEyu&Z|6iT{E$&WWNlv(w`&_lWdrsYAmpLG+^`4 zNKCeu-4!rkhq035Nc|=mLD>qrG(V(s`*TJB4 zG>JEsbOh^F(2BjsAs{!O@S?@?h0ce$TDr{!G}66IWgXQR=Ctc~8oduKHt_fM-y6R-OFptP-!`oo{&#&ac-7+Wta z@ULa-{%?9wR{iUNk zL^jWuhNi;*yzn0co@iWixa)oUE#wy%(! z>-kwET=T-{{!egmnFy$NwynfQ(z+3Qf~t9_3VoMd!v~D*q>Wu@)+|$EaklyVrk=aR z6y5IZ)ys$nYh-r+WrheklHmf#JE}>4o%&&+d*7FO?Z(Pp!hs;n4E9&^><{6hV_hQz zUsSdkL~pfo&CstgN~IUJotzjkf3aIevR#LzPa*_mZYdYVVxbEg3?{tT6b%NKp1?M- zPV;Bl0*0g-ujMD>7_jI=>X83DgqZOmJ?>b(K+=4+6rSwuMtT*BWL2TCF3G#Sru?xa z!=wI7)Rl9Bi`!P$R2~(9WWvef1ApQlXss^B1e zSKouGI>L%Ez2Ij+!V;NY+iBh-Y2$+~cX?%~X=A?`#5VseqT`=lHGtV7_3`_a(^xIs z8E$^MlHwIVmbTOUr`Q*aOb>_#}5ftm#8f}_(FgNkDCZ(JE8S=Yo<118HzUoL!)d`kr{6adSy36~wAWKpL z0&hi%Js@BqB#Q~hQ1nE~UYnL$J=FdJ=iPw!hklA%hR# zO}9z!PT|Fpte533jxP6X9Qay+aJTLYd83F#PkVRm>7xBj8Mn?+0k4F=Q(lmTczU4h z80$||o>!fPu3@zr*t_G!5zi=Dr4Ab350dc^J&`B-$%zgG^Dy&K?&}S~`}03w`kxJS z#f{U;6gNN7LWN9wn(nm>Gjt}ldpl3jJWkL$I=litEY{yb7Lh zNESsVuYZUB6)(1Zjc^Ao5c;1ZgY_>Z4&HP%tfvMwe&>5 z$AUNHn0xkjRq@S=M~|tqJV~?)&+RnpU{0vBg2oInxJY_HA2s}87CX~R`kcfA=bfvW z>%N`F#@=l`$?uKlF_Pjk(M_^tM#qZ%2z{ODoL$41xz?zAMWl+oD0+`z1Tm$08Aq8$ zn&w+Za=F+HhcK&L>tQPS*X2Z>0M&d^M@G!Dm&{vSyqeqe-6~)#!GZhBa#VCr6yOS{ zw?%2GbLQ)I$kMFy&#rzwOO2lUd=a%Lm52P1AA~yWg^spsVc?7J+w-QBPm;@v74=aUt`3DKKi zh-!=(d*5*W$?j6VB~m3#bq9?N-oXLxv}yb0vBY)pALpq=cKFcHy)@=|_kP(n zaWqzjQEl)3vi>j%J5tEKL)W3i4JVVd@-`M=Hx)twHm-fR*8z!Muo8uPcI5+NKYOVW z_|0-=Tmcd7A+v9mD}t(JNuYJzUrHgF;+Ycn7<)5H@~B<`7W1=G$Ux=!o~AN|K=a*= zF38{NTI?R!fDl!4%MMQYTG6S3O8G>)u{&h_B!3$$foW<>R}m}@G{%dEwk6j()EMFT zHb|>Ih3B6ZwAvqK(rt06(=({LR~8S=QZp?*Us^x$Z)q<>wwO-D?k2qaPs4Mve+l(z%+ya{x64v3hpZ^)174$zWMH$A*w)|!f?AJYx@PrX z%_k}PJV1_dl*{|=`AbfNv5n_n8ZoUxY*z(1kTxZSe@XA2v>D8|epWC+)qDK>VT%Ig z*`tB4bsiF#s;&mPE+uM_%o}8EwKulkNZU2clCDJ|9}I+<_vUhtl2x*)ygpPKiT5Ka zREOoOF{5*wm4&Knc_hW_6^j>Tl59Q;a`}RqthyqXwjh_TNH3SvZNi=RBE=#E{RrPZ zwSqBIjPhI#8qXe%bHI&1_vnAk&fUkQA2uBqcztK0HTC!8zT6TAGNiIQa2K@6`3P%5X2tB zS>4(^jY#R<+N4VZxk+0euSqMU4thCB9*WMhO6Dl*-sj;^Xw9||BKxL(`o%qpMdDG4 zZ{{oqT`bm$qFP%Mb73R$Dx^hmuVTopxJY*N)ZZagwn+uGbF8W+@z}G+gUl>FZ*`^e zdbv4gch|f0E}tiz7_@jLZZrI0&isIYi;(nzV-^QpOXGy>KEM0{k#05-VdIk&B*6)d z&OLSater}a>6G&f+Xk(c&^iSnC=yT5B%W}5E0!ekTQVTahm!JsCq+CGN;<~{x@`P zBiDXJ8l&iu zYV}S_PLPfB(;)MS-KZ)}77mr?Qh>AP)}3Ho#m?tzR=YD*&&%U`w7=u0He6UvX8bE# zq~sUCFL4orJeq)mb{8+!m5Y+Ygcmfzl)c0MC44MO(0Tn;w1n$6Gz#U`(8*ME=y3q& zrg(GS)BkeQ0lxqbl=$a?|E%G^_3}C||2oIXP8{vDZbPx+2Tv-xEKroD4&LH8r1RMQXMQ&lPGmF$ sQy=5ETGz_dr{7Ezfm^+%a_cPd)QjNKfuA;Yu7W?PGiImrPGN5RKRKK1@Bjb+ literal 0 HcmV?d00001 From 5fcb74438a6e60dffb44ef4917e5ada12b42ffe1 Mon Sep 17 00:00:00 2001 From: Aidan Oldershaw Date: Wed, 18 Nov 2020 10:21:40 -0500 Subject: [PATCH 02/10] services bind to single task This greatly simplifies the architecture Signed-off-by: Aidan Oldershaw --- 083-services/proposal.md | 113 ++++++++++++++----------------- 083-services/service-diagram.png | Bin 74937 -> 0 bytes 083-services/service-manager.png | Bin 0 -> 37454 bytes 3 files changed, 50 insertions(+), 63 deletions(-) delete mode 100644 083-services/service-diagram.png create mode 100644 083-services/service-manager.png diff --git a/083-services/proposal.md b/083-services/proposal.md index 5aaa1de1..4d5bf547 100644 --- a/083-services/proposal.md +++ b/083-services/proposal.md @@ -7,11 +7,9 @@ Provide a native way to expose local services to steps. * Easier integration testing ([concourse/concourse#324]) * The current recommended way is to run a privileged `task` with a Docker daemon + `docker-compose` installed, and that task runs `docker-compose up` and the test suite -Possible anti-pattern: sharing state between steps - # Proposal -I propose adding a new `services` step modifier and special var source `.svc`, e.g. +I propose adding a new `services` field to the `task` step (and eventually `run` step) and special var source `.svc`, e.g. ```yaml task: integration-tests @@ -22,7 +20,8 @@ params: # POSTGRES_HOST: ((.svc:postgres.host)) # POSTGRES_PORT: ((.svc:postgres.port)) # - # to access addresses/ports other than the one named 'default', use: + # Services can expose many ports, and each port is named. + # To access addresses/ports other than the one named 'default', use: # ((.svc:postgres.addresses.some-port-name)) # ((.svc:postgres.ports.some-port-name)) services: @@ -30,7 +29,26 @@ services: file: ci/services/postgres.yml ``` -When the step finishes (successfully or otherwise), the service will be gracefully terminated by first sending a `SIGTERM`, and eventually a `SIGKILL` if the service doesn't terminate within a timeout. +When the `task` finishes (successfully or otherwise), the service will be gracefully terminated by first sending a `SIGTERM`, and eventually a `SIGKILL` if the service doesn't terminate within a timeout. + +### With `across` step + +Since `services` just binds to `task`, you can make use of the `across` step to run tests against a matrix of dependencies. + +```yaml +across: +- var: postgres_version + values: [9, 10, 11, 12, 13] + max_in_flight: 3 +task: integration-suite +file: ci/tasks/integration.yml +params: + POSTGRES_ADDRESS: ((.svc:postgres.address)) +services: +- name: postgres + file: ci/services/postgres.yml + image: postgres-((.:postgres_version)) +``` ## Service Configuration @@ -53,12 +71,12 @@ config: # or "file:" period_seconds: 5 ``` -Services can also be configured as prototypes, similar to the `run` step, e.g. +Services can also run by sending a message to a [Prototype], similar to the `run` step, e.g. ```yaml name: concourse -run: up type: docker-compose +run: up params: files: - concourse/docker-compose.yml @@ -77,83 +95,52 @@ If unspecified, Concourse will wait for each of the specified ports to be open ( A custom `startup_probe` can be defined that periodically runs a process on the service container until it succeeds (with some timeout). -## Sharing a service across multiple steps +## Worker Placement -To use a service in several steps, you can modify a `do`/`in_parallel` step: +Since `services` are just bound to `task`s, the easiest approach would be to assign the service container and the task container to the same worker. This allows us to avoid a more complex architecture having to route traffic through the TSA (since workers may not be directly reachable from one another). -```yaml -do: -- task: integration-suite-1 - ... -- task: integration-suite-2 - ... -services: -- name: app - file: ci/services/my-app.yml -``` +This isn't *too* restrictive, as anyone running e.g. `docker-compose` on a container currently for integration testing is effectively doing the same thing. It's also worth noting that with a native [Kubernetes Runtime], a single "worker" will likely correspond with an entire cluster, rather than a single node in the cluster. -When used with an `across` step, however, each `across` step iteration will receive its own service. e.g. +However, it does mean that we can't provide services to tasks running on Windows/Darwin workers - not sure if there's much need for this, though. -```yaml -across: -- var: postgres_version - values: [9, 10, 11, 12, 13] -task: integration-suite -file: ci/tasks/integration.yml -params: - POSTGRES_ADDRESS: ((.svc:postgres.address)) -services: -- name: postgres - file: ci/services/postgres.yml - image: postgres-((.:postgres_version)) -``` - -...will spawn 5 postgres services. This behaviour can be avoided by wrapping the `across` step in a `do`, e.g. - -```yaml -do: -- across: ... - task: ... -services: ... -``` - -## Architecture +(psst - if you're curious about an alternative approach that allows providing services to multiple steps, and hence requires inter-worker communication, check out this [early draft] of the RFC - with a hand-wavy architecture diagram and all!) -Below is a high-level overview of how this could be architected. Heads up - I almost certainly don't know what I'm talking about networking-wise, so please tell me where I'm speaking nonsense. +## Networking -![High-level overview](./service-diagram.png) +The way we accomplish intra-worker container-to-container networking depends on the runtime. -The packet-flow is as follows: +### Guardian and containerd -1. The step container sends a packet to the address provided by `((.svc:name.address))`. - * Note: the host will be an IP address within a specific subnet dedicated to services - * This can be changed depending on the runtime to circumvent the described packet flow as appropriate (e.g. in Kubernetes, Concourse can provide a DNS name to a Kubernetes service directly) -1. Since the packet is destined for an IP within the services subnet, it will be routed to a VXLAN network interface that encapsulates the packets and forwards to the TSA -1. A new component on the TSA - the [Service Router] - will determine which worker to route the packets to. It then re-encapsulates the packets and sends it back out over VXLAN - * The [Service Router] can also perform access control to ensure containers can't communicate with services that they aren't exposed to -1. Firewall rules on the worker hosting the service will route the packets to the appropriate container's veth +Here, we have a couple options. -Note: all of the worker <-> TSA traffic will flow through an SSH tunnel. +1. Make use of the [Garden `NetIn` spec] to map a container port to a host port +2. Set up custom firewall rules to route traffic to containers -### Service Router +I'm in favour of option 2., since it doesn't require exposing ports on the worker itself. It also lets us to restrict network access to the service, meaning that only the `task` container can communicate with the `service` container. -The Service Router is a new component on the TSA. It communicates with the ATC to get the list of services, and creates routing rules for each one. +We could add a Service Manager component to workers that the ATC will communicate with to register/unregister services indicating the `service` container, the exposed ports, and the `task` container that can access the `service`. In response, the Service Manager would create/destroy firewall rules. -### Service Manager +![Service Manager overview](./service-manager.png) -The Service Manager is a new component on each worker. When the ATC spins/tears down services, it will register/unregister the service with the host worker's Service Manager. +### Kubernetes -In response, the Service Manager will create/destroy internal routing rules (e.g. using `iptables`) to route traffic to the appropriate container. +When we build a [Kubernetes Runtime], exposing services will be much easier - we just need to make a Kubernetes `Service` exposing the service pod (of type `ClusterIP`), and `((.svc:my-service.address))` would resolve to the CoreDNS service address. # Open Questions -* I'm 90% sure the proposed architecture wouldn't work on Darwin/Windows workers - is VXLAN supported on these platforms? And if not, how can we share services with these workers? +* Are there (sufficiently many) practical use-cases for exposing a service to multiple steps? Or is a single `task` always sufficient? +* Are there (sufficiently many) practical use-cases for exposing a service to `tasks` on Windows/Darwin workers? # Answered Questions # New Implications -[concourse/concourse#324](https://github.com/concourse/concourse/issues/324) + + + +[concourse/concourse#324]: (https://github.com/concourse/concourse/issues/324) [Prototype]: https://github.com/concourse/rfcs/blob/master/037-prototypes/proposal.md -[Service Router]: #service-router +[Kubernetes Runtime]: https://github.com/concourse/rfcs/blob/075-k8s-runtime/075-k8s-runtime/proposal.md +[Garden `NetIn` spec]: https://github.com/cloudfoundry/garden/blob/b404ff2d61e689c6510593cf75d39dc5311be663/container.go#L56-L71 +[early draft]: https://github.com/aoldershaw/rfcs/blob/dc4d0082cb0441a234a775d1620ea5ed9a52a6b6/083-services/proposal.md diff --git a/083-services/service-diagram.png b/083-services/service-diagram.png deleted file mode 100644 index b66c1d86e0cb7f5d98f3f5a82570e090f3c8204b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74937 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 diff --git a/083-services/service-manager.png b/083-services/service-manager.png new file mode 100644 index 0000000000000000000000000000000000000000..2a10a27fb51ee10e6d10503c03ff05bece8f53a9 GIT binary patch literal 37454 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≺y=x!m}+JbX1_F+-(1086tx`!Oo zSb9t{)basi2+}NR$fKxE6MFSNW_P@c6Zn$yOO9k4i-mCDTP8gTEa#F??J4H*kVUrZ zr<(P$v)9yx@~ILYMZxyS`u4?>g&;8M$W`>!dZ2``0_~6Q7GU}u!_On!nxoG)l^1QK zUPZ&Ou^9X){?;sLpBnyW@B;z16a>%iAeam!tdF3kAIfeQrI1kDDxFk)?$eB=~ zd3|uY85AlrVAh?@bQ6z<8XYVk__2MG6vOme_clgA{9ejdX=4ubLIBYk=oelqpt zmCZB=b=41Ph>+=8AjoHu@beTo!3PqM<$1NK8eK0Y{6pk7?5vz%(poiY*dIyV8(&N) zWJ963pKy!pXxLlUim8G1=kWr`jl$3{dUAWu{0O8~)jJ@{*G5EDw0Pq9Vznm%$;Itk zG)Q4i86>`m!|%rlkQVU>WJqDm^ci;z0v~xC4JLHc;zt1C9!LFC^6{YmNt@?kf*KTK za$!cXXYQ1fA+0VD!SoDpUD9FsCJRzmJ&yrPtm)1fFJgQml3No)K|vRCy}dzD^W}nk zGRWLpNgy2#Fm)y&(4&E|QJ!Qg8hmyNCIvL4VK+J!npY@NHau#cmI69$SNM9AFo605 z%++@KeUI=BTv3})(2RdNh1f5#MsG|NyAmzB|3U*5`led*6PN+o!0-G=vuBO;E}Kok z{x%hS>HFhY)gqJtGO-fpp-U!Z6tDgoa4!+fZOT`2B1KUiiF@_eC1lRF;4E9q>nJ@E zAeIdJ^6X@I7@GTN(S+_$VV#k-X5o`UgRGQ<$VrE2N=hRsJ&NV;Y>eML5`P+ePpsSv z-2CtYFEYEhdulPc$e4hotxihwEWA9I3}c^748lM9cn}ll^ZCHz=IA4JZg}_vneT5J zkJ3No@OMcats@y^9noIlBrpHFjuv#DwjwX5P%xq94dPUpj<{iansc3!l; zkG_eB!V~`)il_wWDUsIS!tk4mWQUHX9bs*}B7&1h_l4#DC&CLKnUMNJSW%vI|JAS% zH*8k(GZ_z%F1o_IIKInNM-oSLehS%B3PkhHz`NaU&`xnB>5n5b6nRQc!-SIGJCVKv z?>@4G1=#gX1esjq8GJVp#>mIhd9)OAIlyY~iYoYbym$n9)J!Pr3ol2G4&L9$#vt`~ z^FXxG74E-Ty&bnFp{;;95DnH=o%3j3kf)#6V9V2as7{A`WfA&p=y<91Xk$j6vR;Ml zWs5{&1Nl}LJWc)RMURXfp1~OTU=%h+$^Yyq@R`($I!Apt`a#(h5XX&cl}CH`9H`c0 z@ZZrOLz*jt5#=O>G$4A1gD#^7vow#E0`l~!BFuR4pDbiON(_RStH-4<=l&IkoB=#t zqj|J|d@B{6iacJw^{=Ro1=v78`#;>GI}%(fd`48f_(*U^U$@eQewyENh(dK8=0{Pp5c} z^&{gIA$ge|bY#OK!-1b4BVbn|Opm4{L;hs4gU`GkiR$@}ur3oRZCzZIibeZWrI;Lp OfAZ2Q=whjRf&UlsoR3)m literal 0 HcmV?d00001 From 13d387414d2edb48ddba8845de5b50c2e40fc41e Mon Sep 17 00:00:00 2001 From: Aidan Oldershaw Date: Wed, 18 Nov 2020 10:27:39 -0500 Subject: [PATCH 03/10] move 083 -> 084 Signed-off-by: Aidan Oldershaw --- {083-services => 084-services}/proposal.md | 0 {083-services => 084-services}/service-manager.png | Bin 2 files changed, 0 insertions(+), 0 deletions(-) rename {083-services => 084-services}/proposal.md (100%) rename {083-services => 084-services}/service-manager.png (100%) diff --git a/083-services/proposal.md b/084-services/proposal.md similarity index 100% rename from 083-services/proposal.md rename to 084-services/proposal.md diff --git a/083-services/service-manager.png b/084-services/service-manager.png similarity index 100% rename from 083-services/service-manager.png rename to 084-services/service-manager.png From b02d4ba9d98ad083cb363341f0597225c5de08c1 Mon Sep 17 00:00:00 2001 From: Aidan Oldershaw Date: Wed, 18 Nov 2020 10:30:58 -0500 Subject: [PATCH 04/10] fix link to issue Signed-off-by: Aidan Oldershaw --- 084-services/proposal.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/084-services/proposal.md b/084-services/proposal.md index 4d5bf547..7c409870 100644 --- a/084-services/proposal.md +++ b/084-services/proposal.md @@ -4,7 +4,7 @@ Provide a native way to expose local services to steps. # Motivation -* Easier integration testing ([concourse/concourse#324]) +* Easier integration testing ([concourse/concourse#324](https://github.com/concourse/concourse/issues/324)) * The current recommended way is to run a privileged `task` with a Docker daemon + `docker-compose` installed, and that task runs `docker-compose up` and the test suite # Proposal @@ -139,7 +139,6 @@ When we build a [Kubernetes Runtime], exposing services will be much easier - we -[concourse/concourse#324]: (https://github.com/concourse/concourse/issues/324) [Prototype]: https://github.com/concourse/rfcs/blob/master/037-prototypes/proposal.md [Kubernetes Runtime]: https://github.com/concourse/rfcs/blob/075-k8s-runtime/075-k8s-runtime/proposal.md [Garden `NetIn` spec]: https://github.com/cloudfoundry/garden/blob/b404ff2d61e689c6510593cf75d39dc5311be663/container.go#L56-L71 From df3ef6e25c69da06532652c094a73d624b66b906 Mon Sep 17 00:00:00 2001 From: Aidan Oldershaw Date: Thu, 19 Nov 2020 09:06:00 -0500 Subject: [PATCH 05/10] reword Signed-off-by: Aidan Oldershaw --- 084-services/proposal.md | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/084-services/proposal.md b/084-services/proposal.md index 7c409870..4ec0f89f 100644 --- a/084-services/proposal.md +++ b/084-services/proposal.md @@ -89,22 +89,20 @@ ports: ### Startup Probe -In order to ensure a service is ready to accept traffic before running any dependent steps, the `startup_probe` must first succeed. +To ensure a service is ready to accept traffic before running the dependent step, the `startup_probe` must first succeed. -If unspecified, Concourse will wait for each of the specified ports to be open (with some timeout). +`startup_probe.run` defines a process to run on the service container until it succeeds. The process will run every `startup_probe.period_seconds`, and if it fails `startup_probe.failure_threshold` times, the service will error and the dependent step will not run. -A custom `startup_probe` can be defined that periodically runs a process on the service container until it succeeds (with some timeout). +If `startup_probe.run` is left unspecified, Concourse will wait for each of the specified ports to be open. ## Worker Placement Since `services` are just bound to `task`s, the easiest approach would be to assign the service container and the task container to the same worker. This allows us to avoid a more complex architecture having to route traffic through the TSA (since workers may not be directly reachable from one another). -This isn't *too* restrictive, as anyone running e.g. `docker-compose` on a container currently for integration testing is effectively doing the same thing. It's also worth noting that with a native [Kubernetes Runtime], a single "worker" will likely correspond with an entire cluster, rather than a single node in the cluster. +This hopefully isn't *too* restrictive, as anyone running e.g. `docker-compose` in a `task` for integration testing is effectively doing the same thing (just in one mega-container instead of 2+). It's also worth noting that with a native [Kubernetes Runtime], a single "worker" will likely correspond with an entire cluster, rather than a single node in the cluster. However, it does mean that we can't provide services to tasks running on Windows/Darwin workers - not sure if there's much need for this, though. -(psst - if you're curious about an alternative approach that allows providing services to multiple steps, and hence requires inter-worker communication, check out this [early draft] of the RFC - with a hand-wavy architecture diagram and all!) - ## Networking The way we accomplish intra-worker container-to-container networking depends on the runtime. @@ -116,19 +114,20 @@ Here, we have a couple options. 1. Make use of the [Garden `NetIn` spec] to map a container port to a host port 2. Set up custom firewall rules to route traffic to containers -I'm in favour of option 2., since it doesn't require exposing ports on the worker itself. It also lets us to restrict network access to the service, meaning that only the `task` container can communicate with the `service` container. +I'm in favour of option 2., since it doesn't require exposing ports on the worker itself. It also lets us restrict network access to the service, meaning that only the `task` container can communicate with the `service` container. -We could add a Service Manager component to workers that the ATC will communicate with to register/unregister services indicating the `service` container, the exposed ports, and the `task` container that can access the `service`. In response, the Service Manager would create/destroy firewall rules. +We could add a Service Manager component to each worker that the ATC will communicate with to register/unregister services. Register requests will indicate the `service` container, the exposed ports, and the `task` container that can access the `service`, while unregister requests just need to indicate the `service` container. In response, the Service Manager would create/destroy firewall rules. ![Service Manager overview](./service-manager.png) ### Kubernetes -When we build a [Kubernetes Runtime], exposing services will be much easier - we just need to make a Kubernetes `Service` exposing the service pod (of type `ClusterIP`), and `((.svc:my-service.address))` would resolve to the CoreDNS service address. +When we build a [Kubernetes Runtime], exposing services will be much easier - we just need to create a Kubernetes `Service` (of type `ClusterIP`) exposing the service pod and appropriate ports, and `((.svc:my-service.address))` would resolve to the CoreDNS service address. # Open Questions * Are there (sufficiently many) practical use-cases for exposing a service to multiple steps? Or is a single `task` always sufficient? + * psst - if you're curious about an alternative approach that allows providing services to multiple steps, and hence requires inter-worker communication, check out this [early draft] of the RFC - with a hand-wavy architecture diagram and all! * Are there (sufficiently many) practical use-cases for exposing a service to `tasks` on Windows/Darwin workers? # Answered Questions From 47cb435440d05d429f6b08faef6c5a68e5225226 Mon Sep 17 00:00:00 2001 From: Aidan Oldershaw Date: Tue, 24 Nov 2020 22:14:55 -0500 Subject: [PATCH 06/10] provide "sidecar" alternative for networking And remove the "expose host port" alternative, since that's totally unnecessary Signed-off-by: Aidan Oldershaw --- 084-services/proposal.md | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/084-services/proposal.md b/084-services/proposal.md index 4ec0f89f..e638419f 100644 --- a/084-services/proposal.md +++ b/084-services/proposal.md @@ -109,26 +109,36 @@ The way we accomplish intra-worker container-to-container networking depends on ### Guardian and containerd -Here, we have a couple options. +There are a couple of options here: -1. Make use of the [Garden `NetIn` spec] to map a container port to a host port -2. Set up custom firewall rules to route traffic to containers +1. Containers on the same host can communicate via the bridge network (created by a CNI plugin in our [containerd backend], not sure about Guardian...) + * Could work with minimal changes to the runtime layer + * Need extra architecture to prevent a malicious `task` from scanning the container subnet to interfere with running services (note: it's currently possible for this to happen with any `task` that runs a server, e.g. running `docker-compose` in a `task`, but is easy to prevent with some changes to firewall rules) +2. With our containerd runtime, we have more flexibility, and have the option of running both processes in the same network namespace + * This would allow communication over `localhost` + * We'll need to wait until our containerd runtime is stable so we can replace it with Guardian + * If a `task` has multiple services, two services cannot use the same ports (even if they are not exposed) -I'm in favour of option 2., since it doesn't require exposing ports on the worker itself. It also lets us restrict network access to the service, meaning that only the `task` container can communicate with the `service` container. - -We could add a Service Manager component to each worker that the ATC will communicate with to register/unregister services. Register requests will indicate the `service` container, the exposed ports, and the `task` container that can access the `service`, while unregister requests just need to indicate the `service` container. In response, the Service Manager would create/destroy firewall rules. +With respect to the second point under option 1, we *can* prevent such `tasks` if this is a concern by adding a Service Manager component to each worker to register/unregister services. This component could create/destroy firewall rules granting specific containers access to others. ![Service Manager overview](./service-manager.png) ### Kubernetes -When we build a [Kubernetes Runtime], exposing services will be much easier - we just need to create a Kubernetes `Service` (of type `ClusterIP`) exposing the service pod and appropriate ports, and `((.svc:my-service.address))` would resolve to the CoreDNS service address. +When we build a [Kubernetes Runtime], we have a couple alternatives here as well that roughly mirror the choices for containerd: + +1. Run the service as its own pod + * Possible for service and `task` to run on different k8s nodes + * I don't know enough about k8s to know whether it's possible to add firewall rules so that only the `task` pod can access the service pod +2. Run services as sidecar containers in the same pod as the `task` + * Service and `task` must run on the same k8s node + * If a `task` has multiple services, two services cannot use the same ports (even if they are not exposed) # Open Questions * Are there (sufficiently many) practical use-cases for exposing a service to multiple steps? Or is a single `task` always sufficient? - * psst - if you're curious about an alternative approach that allows providing services to multiple steps, and hence requires inter-worker communication, check out this [early draft] of the RFC - with a hand-wavy architecture diagram and all! -* Are there (sufficiently many) practical use-cases for exposing a service to `tasks` on Windows/Darwin workers? +* Are there (sufficiently many) practical use-cases for exposing a service to a `task` on a Windows/Darwin worker? +* Would you ever need to run multiple services that both use the same port? # Answered Questions @@ -140,5 +150,4 @@ When we build a [Kubernetes Runtime], exposing services will be much easier - we [Prototype]: https://github.com/concourse/rfcs/blob/master/037-prototypes/proposal.md [Kubernetes Runtime]: https://github.com/concourse/rfcs/blob/075-k8s-runtime/075-k8s-runtime/proposal.md -[Garden `NetIn` spec]: https://github.com/cloudfoundry/garden/blob/b404ff2d61e689c6510593cf75d39dc5311be663/container.go#L56-L71 -[early draft]: https://github.com/aoldershaw/rfcs/blob/dc4d0082cb0441a234a775d1620ea5ed9a52a6b6/083-services/proposal.md +[containerd backend]: https://github.com/concourse/concourse/blob/27e1d83fd3d24d22a1a8d9c83823d608fae63f4a/worker/runtime/cni_network.go#L66-L80 From 75143047fb7e9d19a7718aa361a20230e2f34816 Mon Sep 17 00:00:00 2001 From: Aidan Oldershaw Date: Tue, 24 Nov 2020 22:17:18 -0500 Subject: [PATCH 07/10] fix typo Signed-off-by: Aidan Oldershaw --- 084-services/proposal.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/084-services/proposal.md b/084-services/proposal.md index e638419f..5f609b8c 100644 --- a/084-services/proposal.md +++ b/084-services/proposal.md @@ -116,7 +116,7 @@ There are a couple of options here: * Need extra architecture to prevent a malicious `task` from scanning the container subnet to interfere with running services (note: it's currently possible for this to happen with any `task` that runs a server, e.g. running `docker-compose` in a `task`, but is easy to prevent with some changes to firewall rules) 2. With our containerd runtime, we have more flexibility, and have the option of running both processes in the same network namespace * This would allow communication over `localhost` - * We'll need to wait until our containerd runtime is stable so we can replace it with Guardian + * We'll need to wait until our containerd runtime is stable so we can replace Guardian with it * If a `task` has multiple services, two services cannot use the same ports (even if they are not exposed) With respect to the second point under option 1, we *can* prevent such `tasks` if this is a concern by adding a Service Manager component to each worker to register/unregister services. This component could create/destroy firewall rules granting specific containers access to others. From c5cc6cacb38af5255697fef6695b478012daed93 Mon Sep 17 00:00:00 2001 From: Aidan Oldershaw Date: Tue, 24 Nov 2020 22:57:10 -0500 Subject: [PATCH 08/10] default message for prototype-based services Signed-off-by: Aidan Oldershaw --- 084-services/proposal.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/084-services/proposal.md b/084-services/proposal.md index 5f609b8c..bcde11da 100644 --- a/084-services/proposal.md +++ b/084-services/proposal.md @@ -76,7 +76,7 @@ Services can also run by sending a message to a [Prototype], similar to the `run ```yaml name: concourse type: docker-compose -run: up +run: up # up is the default message for prototype-based services params: files: - concourse/docker-compose.yml From b61ce4aa155d3d1f5b91d3b05c09e4f530224fdb Mon Sep 17 00:00:00 2001 From: Aidan Oldershaw Date: Wed, 25 Nov 2020 20:20:38 -0500 Subject: [PATCH 09/10] mention network policies Signed-off-by: Aidan Oldershaw --- 084-services/proposal.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/084-services/proposal.md b/084-services/proposal.md index bcde11da..6fb13bc0 100644 --- a/084-services/proposal.md +++ b/084-services/proposal.md @@ -129,7 +129,7 @@ When we build a [Kubernetes Runtime], we have a couple alternatives here as well 1. Run the service as its own pod * Possible for service and `task` to run on different k8s nodes - * I don't know enough about k8s to know whether it's possible to add firewall rules so that only the `task` pod can access the service pod + * Can configure [network policies] to restrict access to the `service` pod 2. Run services as sidecar containers in the same pod as the `task` * Service and `task` must run on the same k8s node * If a `task` has multiple services, two services cannot use the same ports (even if they are not exposed) @@ -139,6 +139,7 @@ When we build a [Kubernetes Runtime], we have a couple alternatives here as well * Are there (sufficiently many) practical use-cases for exposing a service to multiple steps? Or is a single `task` always sufficient? * Are there (sufficiently many) practical use-cases for exposing a service to a `task` on a Windows/Darwin worker? * Would you ever need to run multiple services that both use the same port? +* How important is it to access the service over `localhost` vs some arbitrary hostname or IP address? # Answered Questions @@ -151,3 +152,4 @@ When we build a [Kubernetes Runtime], we have a couple alternatives here as well [Prototype]: https://github.com/concourse/rfcs/blob/master/037-prototypes/proposal.md [Kubernetes Runtime]: https://github.com/concourse/rfcs/blob/075-k8s-runtime/075-k8s-runtime/proposal.md [containerd backend]: https://github.com/concourse/concourse/blob/27e1d83fd3d24d22a1a8d9c83823d608fae63f4a/worker/runtime/cni_network.go#L66-L80 +[network policies]: https://kubernetes.io/docs/concepts/services-networking/network-policies/ From 37e80ffd776782ec4a287fdc340fd38fc2ed4608 Mon Sep 17 00:00:00 2001 From: Aidan Oldershaw Date: Thu, 26 Nov 2020 08:56:15 -0500 Subject: [PATCH 10/10] remove specific port from image it was just confusing Signed-off-by: Aidan Oldershaw --- 084-services/service-manager.png | Bin 37454 -> 38341 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/084-services/service-manager.png b/084-services/service-manager.png index 2a10a27fb51ee10e6d10503c03ff05bece8f53a9..22a93e489f564c7098b5f1f28b202d6a1180b14a 100644 GIT binary patch literal 38341 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≺y=x!m}+JbX1_F+-(1086tx`!Oo zSb9t{)basi2+}NR$fKxE6MFSNW_P@c6Zn$yOO9k4i-mCDTP8gTEa#F??J4H*kVUrZ zr<(P$v)9yx@~ILYMZxyS`u4?>g&;8M$W`>!dZ2``0_~6Q7GU}u!_On!nxoG)l^1QK zUPZ&Ou^9X){?;sLpBnyW@B;z16a>%iAeam!tdF3kAIfeQrI1kDDxFk)?$eB=~ zd3|uY85AlrVAh?@bQ6z<8XYVk__2MG6vOme_clgA{9ejdX=4ubLIBYk=oelqpt zmCZB=b=41Ph>+=8AjoHu@beTo!3PqM<$1NK8eK0Y{6pk7?5vz%(poiY*dIyV8(&N) zWJ963pKy!pXxLlUim8G1=kWr`jl$3{dUAWu{0O8~)jJ@{*G5EDw0Pq9Vznm%$;Itk zG)Q4i86>`m!|%rlkQVU>WJqDm^ci;z0v~xC4JLHc;zt1C9!LFC^6{YmNt@?kf*KTK za$!cXXYQ1fA+0VD!SoDpUD9FsCJRzmJ&yrPtm)1fFJgQml3No)K|vRCy}dzD^W}nk zGRWLpNgy2#Fm)y&(4&E|QJ!Qg8hmyNCIvL4VK+J!npY@NHau#cmI69$SNM9AFo605 z%++@KeUI=BTv3})(2RdNh1f5#MsG|NyAmzB|3U*5`led*6PN+o!0-G=vuBO;E}Kok z{x%hS>HFhY)gqJtGO-fpp-U!Z6tDgoa4!+fZOT`2B1KUiiF@_eC1lRF;4E9q>nJ@E zAeIdJ^6X@I7@GTN(S+_$VV#k-X5o`UgRGQ<$VrE2N=hRsJ&NV;Y>eML5`P+ePpsSv z-2CtYFEYEhdulPc$e4hotxihwEWA9I3}c^748lM9cn}ll^ZCHz=IA4JZg}_vneT5J zkJ3No@OMcats@y^9noIlBrpHFjuv#DwjwX5P%xq94dPUpj<{iansc3!l; zkG_eB!V~`)il_wWDUsIS!tk4mWQUHX9bs*}B7&1h_l4#DC&CLKnUMNJSW%vI|JAS% zH*8k(GZ_z%F1o_IIKInNM-oSLehS%B3PkhHz`NaU&`xnB>5n5b6nRQc!-SIGJCVKv z?>@4G1=#gX1esjq8GJVp#>mIhd9)OAIlyY~iYoYbym$n9)J!Pr3ol2G4&L9$#vt`~ z^FXxG74E-Ty&bnFp{;;95DnH=o%3j3kf)#6V9V2as7{A`WfA&p=y<91Xk$j6vR;Ml zWs5{&1Nl}LJWc)RMURXfp1~OTU=%h+$^Yyq@R`($I!Apt`a#(h5XX&cl}CH`9H`c0 z@ZZrOLz*jt5#=O>G$4A1gD#^7vow#E0`l~!BFuR4pDbiON(_RStH-4<=l&IkoB=#t zqj|J|d@B{6iacJw^{=Ro1=v78`#;>GI}%(fd`48f_(*U^U$@eQewyENh(dK8=0{Pp5c} z^&{gIA$ge|bY#OK!-1b4BVbn|Opm4{L;hs4gU`GkiR$@}ur3oRZCzZIibeZWrI;Lp OfAZ2Q=whjRf&UlsoR3)m