From daf622d47068f70539eb5819bc81dfe72e1b105c Mon Sep 17 00:00:00 2001 From: Thomas Schuetz <38893055+thschue@users.noreply.github.com> Date: Tue, 18 Oct 2022 11:30:27 +0200 Subject: [PATCH] docs: Add example for ArgoCD (#179) Co-authored-by: Giovanni Liva --- examples/argo/Makefile | 64 ++++ examples/argo/README.md | 60 ++++ examples/argo/assets/argo-screen.png | Bin 0 -> 100265 bytes examples/argo/config/app.yaml | 18 ++ examples/argo/podtatohead/.gitignore | 1 - examples/argo/podtatohead/README.md | 5 - examples/argo/podtatohead/app.yaml | 22 -- examples/argo/podtatohead/check_entry.yaml | 12 - examples/argo/podtatohead/manifest.yaml | 301 ------------------ .../podtatohead/post-deployment-tasks.yaml | 25 -- examples/podtatohead-deployment/app.yaml | 10 +- examples/podtatohead-deployment/manifest.yaml | 44 ++- .../post-deployment-tasks.yaml | 37 +-- functions-runtime/samples/ts/slack.ts | 20 +- 14 files changed, 187 insertions(+), 432 deletions(-) create mode 100644 examples/argo/Makefile create mode 100644 examples/argo/README.md create mode 100644 examples/argo/assets/argo-screen.png create mode 100644 examples/argo/config/app.yaml delete mode 100644 examples/argo/podtatohead/.gitignore delete mode 100644 examples/argo/podtatohead/README.md delete mode 100644 examples/argo/podtatohead/app.yaml delete mode 100644 examples/argo/podtatohead/check_entry.yaml delete mode 100644 examples/argo/podtatohead/manifest.yaml delete mode 100644 examples/argo/podtatohead/post-deployment-tasks.yaml diff --git a/examples/argo/Makefile b/examples/argo/Makefile new file mode 100644 index 0000000000..5077f72b11 --- /dev/null +++ b/examples/argo/Makefile @@ -0,0 +1,64 @@ +LFC_NAMESPACE ?= keptn-lifecycle-controller-system +PODTATO_NAMESPACE ?= podtato-kubectl +ARGO_NAMESPACE ?= argocd +ARGO_VERSION ?= 2.4.14 +ARGO_SECRET = $(shell kubectl -n ${ARGO_NAMESPACE} get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo) + +.PHONY: install +install: + @echo "-----------------------------------" + @echo "Create Namespace and install ArgoCD" + @echo "-----------------------------------" + kubectl create namespace $(ARGO_NAMESPACE) + kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v$(ARGO_VERSION)/manifests/install.yaml + + @echo "" + @echo "-------------------------------" + @echo "Wait for Resources to get ready" + @echo "-------------------------------" + kubectl wait --for=condition=available deployment/argocd-dex-server -n "$(ARGO_NAMESPACE)" --timeout=120s + kubectl wait --for=condition=available deployment/argocd-redis -n "$(ARGO_NAMESPACE)" --timeout=120s + kubectl wait --for=condition=available deployment/argocd-repo-server -n "$(ARGO_NAMESPACE)" --timeout=120s + kubectl wait --for=condition=available deployment/argocd-server -n "$(ARGO_NAMESPACE)" --timeout=120s + + + @echo "" + @echo "#######################################################" + @echo "ArgoCD Demo installed" + @echo "- Get Admin Password: make argo-get-password" + @echo "- Port-Forward ArgoCD: make port-forward-argocd" + @echo "- Get Argo CLI: https://argo-cd.readthedocs.io/en/stable/cli_installation/" + @echo "- Configure ArgoCD CLI (needs port-forward): make argo-configure-cli" + @echo "- Install PodTatoHead via ArgoCD: make argo-install-podtatohead" + @echo "#######################################################" + +.PHONY: argo-configure-cli +argo-configure-cli: + @argocd login localhost:8080 --username admin --password $(ARGO_SECRET) --insecure + +.PHONY: argo-get-password +argo-get-password: + @echo $(ARGO_SECRET) + +.PHONY: port-forward-argocd +port-forward-argocd: + @echo "" + @echo "Open ArgoCD in your Browser: http://localhost:8080" + @echo "CTRL-c to stop port-forward" + + @echo "" + kubectl port-forward svc/argocd-server -n "$(ARGO_NAMESPACE)" 8080:443 + +.PHONY: argo-install-podtatohead +argo-install-podtatohead: + @echo "" + kubectl apply -f config/app.yaml -n "$(ARGO_NAMESPACE)" + +.PHONY: uninstall +uninstall: + kubectl delete -n $(ARGO_VERSION) -f https://raw.githubusercontent.com/argoproj/argo-cd/v$(ARGO_VERSION)/manifests/install.yaml --ignore-not-found=true + kubectl delete namespace $(ARGO_NAMESPACE) --ignore-not-found=true + @echo "" + @echo "##########################" + @echo "Argo Demo deleted" + @echo "##########################" diff --git a/examples/argo/README.md b/examples/argo/README.md new file mode 100644 index 0000000000..26a943bddc --- /dev/null +++ b/examples/argo/README.md @@ -0,0 +1,60 @@ +# Deploying an application using the Keptn Lifecycle Controller and ArgoCD + +In this example, we will show you how to install our sample application *podtatohead* using the Keptn Lifecycle Controller and [ArgoCD](https://argo-cd.readthedocs.io/en/stable/). + +# TL;DR +* You can install ArgoCD using: `make install` +* Afterward, you can fetch the secret for the ArgoCD CLI using: `make argo-get-password` +* Then you can port-forward the ArgoUI using: `make argo-port-forward` + * Alternatively, you can access Argo using the CLI, configure it using `make argo-configure-cli` +* Deploy the PodTatoHead Demo Application: `make argo-install-podtatohead` +* Watch the progress on your ArgoUI: `http://localhost:8080` + +## Prerequisites: +This tutorial assumes, that you already installed the Keptn Lifecycle Controller (see https://github.com/keptn-sandbox/lifecycle-service). Furthermore, you have to install ArgoCD, as in the following their [installation instructions](https://argoproj.github.io/argo-cd/getting_started/). + +### Install ArgoCD +If you don't have an already existing installation of ArgoCD, you can install it using the following commands: +```shell +kubectl create namespace argocd +kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/latest/manifests/install.yaml +``` + +With these commands, ArgoCD will be installed in the `argocd` namespace. + +After that, you can find the password for ArgoCD using the following command: +```shell +kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d +``` + +### Port-Forward ArgoCD and access the UI +To access the ArgoCD UI, you can port-forward the ArgoCD service using the following command: +```shell +kubectl port-forward svc/argocd-server -n argocd 8080:443 +``` +Then you can access the UI using http://localhost:8080. + +## Installing the Demo Application +To install the demo application, you can use the following command: +```shell +kubectl apply -f https://raw.githubusercontent.com/keptn-sandbox/lifecycle-service/main/examples/argo/config/app.yaml +``` + +You will see that the application will be deployed using ArgoCD. You can watch the progress on the ArgoCD UI and should see the following: +![img.png](assets/argo-screen.png) + +In the meanwhile you can watch the progress of the deployment using: +> `kubectl get pods -n podtato-kubectl` + * See that the pods are pending until the pre-deployment tasks have passed + * Pre-Deployment Tasks are started + * Pods get scheduled + +> `kubectl get keptnworkloadinstances -n podtato-kubectl` + * Get the current status of the workloads + * See in which phase your workload deployments are at the moment + +> `kubectl get keptnapplicationversions -n podtato-kubectl` + * Get the current status of the application + * See in which phase your application deployment is at the moment + +After some time all resources should be in a succeeded state. In the Argo-UI you will see that the application is in sync. diff --git a/examples/argo/assets/argo-screen.png b/examples/argo/assets/argo-screen.png new file mode 100644 index 0000000000000000000000000000000000000000..2b8dfbe712a18cbbcdfa8dc6797584682ee693f5 GIT binary patch literal 100265 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 !*H(!Tx6LPxhev?@yp{BZE~ zJlx%(4)IQbuf4ONHhvYa4!qwxbLU9u{pxwi_wyF+@x67WeWM(;tc_2!N7Gfc>!sV) z#2Hy!)VgzPO@WLtuvXBFR39?lzL*eG!%9+J$!=|mV9tkP@Nzw8oGgZ|KOe^5{F(n9WG8o%TS0J7%1P!2J!Ja*d_Cl4 z73pd%FTE|1EYUBTZF7<6`-b@>#sBC#mjAovpK}MqDOZew16bGi&PTZdonZF!ME<@ zF-t3WY9GS1I;?49-=f?2>wRtyh^LN+}4g}Ih^NYD=S7Z`G9$* z;iLcfbMeF;l7lu){LhOjr!@w!h11!%NCgT|&x2ujPQhE$F@|>6IjxZNw%$zW?3d42 zQN-iIr!su^ON=F%prW~J$>6x;O|$CTew@65o{eDcJwFK|7>HA@eQy48V?MWzM{Rzd z*848uyio8&_FQ<#{FVYmt~pPG`eX#Ds^SPm7-qtrs%h$Rinl_est zU!vJ`CEqVFh;UH5R5`||>glZFBr&r%pEw}=19H{BgBqavxG*|_kS)PKzN5(8R7{ae zzp1;dDZ0P)wE=XejsB+;{mQ%jp;?fTDjeZAyFyg0tcBcb1N#j(P zYCdw|-T&``s+ilZ&>EX^L@)5WfeyVXR?zZ#Ptnu3EMNtHSQ1l3)0G)f!eUa9GQ(Y8 z)aLoqO*}c!9uE{{^q3W#cSE-aEw0r`W=~^;c-#zXYL2>_ZT5vYBAw{~+YttHkfZe0Fy?_0262WVkMP5d)JV&HGaL?}Pt>xJ6y5((a z(b?HiA`issnrU!_-Dvj{BhUuG7-Ph^Ye5+4_Sn-^mUrFnopkw`_jsR&(Kpb8D zXW)>#g%-Pk5czk9@F>l)!oj*iI+;mqeXhQ`ZnLh;wcxoX`N>HNPg)Qt9lh}CoynN5 zwZ8*(b;0T1z5#SdONo|&cd|uVU%gFReST5bYcG%{ho z#{RDWOm(6GiQ$@!WxhKd%Xe%96&9bis(<29@42R!BH~@VLuf7RDjdDq7yx}UY_s|; zqg{|g>#7-0o9X7vd*uF@kNcOU{y&%6;soOS2gljTDCL=%WQ+#$_uIzkrDm@DOh{rl zD=&_z7_>`?_dE1QL|O*$7FmO->gGK!Dr)Y9^MkQ`Ss_K1*EL7&!Se!TZB8BNHdzXs z6F$;wKiWFUo?%w)SLZn*+s}{6Exf0j2l4rpSSSXxYk@%}OXU;EJfOm+UVe=!+6>~d z$#uJ3zb;kI!V%57-701~(kJV)ddsRVxf7LAF+$|zNHBLu)!mOMA#x2lk8zrdiTvYb zQ2V4uA*eeaoM-p*M@GVIvpdEVVsTLx*TkF$S68l&GKq3W(q(041>FLmxVjM$d;=1u zI@rXJTJ-0ilZiO zRqytr6cK{Jw0;#Bh@u}uM-73@{hHn~glFOB>OQ3tuLL(}f_s_i~1B9`#v5$9Wk!KpSHD>nL9?d+y zD~SjU0!P?VqD_yCz>sqpo;?j9JhIGin*aL6Npe<{H6|!@>+6&uD>9w#PE*m+Ww_Q5 zRs7Oani=t509)g$XGNSRp@IYn=QJXLtf z-mFRV+tnkzZ*TltN-U@4^EEobK$|K~1lH}7X~)VxYM%}iTa-9BlV*BR>`ZnV7Ctk& zay><3)a%uC1F1u=qKa1xq2PFk+F8pDoBaO%ijlLkUJ3uKO@c`NX|3iY{XqMy9s4w)o z_2RzubY&bt2R}ubdui;s4%@c=4}PoB#&bx06baL)dnMQfuua^9so%pj2k)F-dmrPb zgr1WMgjXIOum*6f%Z!0`2HI^g+Wx4+M(3=sg;Nm5XD8yE0@Ta)O{aRAR1c7iUzC;l z(3SQ$Lf~gtI;@|~j#IYCmpKgU{pwiSKO2@i$5M{J{ka>Jk^{;C zsya8PXXx_M4)F$MTrGqSv=iEWYq66?c6u99+CDi`2*E$S*?hiQ$Cf@cgS@*20B zE6h4InS-|CBdoiBT3tg8WlV_Da&GHc1?Q|fHpeedevfMfnIYPnziW8I;=gsKu$Wkx z3F`GdxpMT8QZcx=O9^ykX@|m7@=G}Y`23SjOpdEiX0zmCV&eZJ?Y+a{THCg9kw_U^ zBtaxfr0FfuJ0VE)F3J!@H$?9(A(9AE)X|CFqK(cDLK0>4!6+MHFvdikFoy4*?7g4t z_j#W8IDWtH^UpqxeZ;cXy6<&g*L7a!d0rAW<$F0t0|R;+fM_B6D{k|bC(R$Dhvms0 z>%{n_eYCN=y2PT{oTs=h-DR0kQdWBf0UqqsWVM~i3w=r^Fe9_t&r;dM=5}jO4j5x{ z>)P)!!RxIuqiZ&Y?m4a;2%?6BJ2$ z#WJ;-APV0is{(fSo3_4eAHG1dvoG}kfc;P^AwwTuq4MarPhZW%h7UOpB+#$YWjegD z;+^GaG6<}v4LCgNdEJv0UTjih+VXgNK&N&o;FTEKBTloe&cJ3`c?Y*Rgk81QB2-o$AV+^L$E>3Pn(gv? zkqR*qc!gDb%gQIo_HnBmAS(Q`b1xR3$vQ{RCBn zqE%XkBTN-_H#|d8Eb<~m)vFu=^KxAs((VST&^r+sX2E0b%lj)^fR~*L^!bSbq3CT^ znIR{o&qKBr{IbR{C2SYYnCtssQ!a%T&$qorRE*EeK0g{~k5fJNraVE#Cl>qOo3n}BS*G}E18F14n{3W$L zxBQwO)mxsj2*67It~dTIR{!Ju59V>lmQruiJ;g28?@UQCjv6 z(>uz$zAyvZZ~dIZ!~(|gnw5e0JaUrILZf0vVV7IqtVIZtln?Q0S~nOp~^n9?R(XiPVcVhC&A5wMWg{ z54zErY-9D- zAmYGDh03$ofli9nuyZd6^nJ=6>VM8zKM1PfH{^ZsI4nO)iQxfg&wYSi;&CvlP3@o^ znBV24r)&_QiB!BSj*JvOtR0k7&L<$Dfsr@PLfsg}Knt}TUa+LWTwbvRVM@drsjV9rb+*)( zPYPxKp*FqD&E*O8fJ9ytxJ3sEn6fu~wm04KiHb@07`)g|#4hnM_;1)qZEi8Fohw-< z>Dgok&%%giMxvo@+Q0@M)MRWYv*X!sGnbqoMy9?3)Nb_8_QGH3FusAX@3L~$AgkjL zd1}`{^Y$Vi)R8yMJgXFAfo%Kp<&JoNYaH_Q1l+vDt?pQI&?*`NBb%}N+FZ+<9RjNU zJzY3Ug2lC0O33)~Hy|5)11vlC1>8huLP{ODzRyLZ{B(kwNwhSkt0MM7RUNqoQ-lLLj<9W?wDtPmF zjY}MF(yuOgIbeUBTQv5zCGIW6$%{oZ3W{~dv1xArwu?!q1yJZYqROG)cB}VF|MGv4 zVFiPJKu6}FnCEj$T;54f(eK6BTiFjgypMB&e8_t*zkE1rRma#9B5uHt8^`WVydXGQG4SYpB4@UW`FSf zL3sBR!Uy($u%Y)%^TFb7J;TdlYd2h1nNRCLbrx)I4)zwqzwR$6s4%=$=6el-ip=Gb z@#t-y$x^-*oB4!0=GqdaJXK!#OWlv~)>-qUIH^Q(wKf}kKvC8lSX?e9DwnofP<$JT z-OQi^_4~vXV}XBA*&xPQEu>xa5}1Zy_cfk7U%x<$!Dp)8eF<>d@&Ucbk@#5!G_f-T zz-U}hi4hziCr3V%Z1{`}$ZTv}l7(0rXlB1wq8SBkz()Sz){(H^3<1608{|1UZT^Ai zn5^=RdE1gTdqz3ODQ?3mt`B;z$3T>$ff$g6YVi-5FFd~){tSRaH0hMrsZ?Ce1<9Sp z<0H>2Fv{I|0ym*aPgbAk+IZaW^R-F_BSu`@9W0BBb*U2C5kRJ;d0AM~DlJhrEZ5dN zi_?dZ<-kZ^)JR)@oGbTvQV>Rf&L^l6*ENI+}m<0 zWPwuTw(D0uGw5RDqNkPp6tUosd(&pCOhF@vXc}(POTo;|#J-x)mf^{YcJ7w8{gvY5 zBnr*Kb{&-dwY>F>-o3q#GTH77JI!3?UN`+`rZ9z=mS!;gcZ_v+ronwYh(1d+lqKth ze;%^5{As&+q)sC~K!9PUh^U10`&rb($_OqB?tY&)=49t>lxy2 zR{k@zi|0}De?h*vp$e~cM&)Z(d`1G(_hcYH&(lOM6;$;xfPG zDyYybO#IPx{zHo>mXtl!!<`W7qhc^Xq$qzU+p131G`F>1k+25Dl0)9 zqmFX!3v#xm+GvBwxKMt>H~FsTat9iskese%$Fq&)2z(9FlZoWCZCZ zRY$4|)$T>UODVU#z_Zz0^0MEMkwY19-1{xJ-n!N`2Ld{m>U04YkB51~uZboeyyoHL zxoX0I>|C?L;NJQCyd9Wg;y7IWv$g>Pa}_?lU^FH57lhgWN|7n%` zLKnihYkqz{>*v6^d_Y)p^jV*hv^4`*PQ#xLm9D?YB~v`q1N+-6HUbvS4sa323mU{- zv|Aq-DK!ji&Xv9*G5`T}S-1YhF$$rL!tF@+IU{ee-_K_O!&n2>UsXfxvB{E(R;P}_ zn*a{h%$)Vdq-QaA7cMS@IB5W*uDO*(Qaoh9B4CA`Ig7L?(~l}E~%m92d4KUU}zF-Vlya_!NFd@;!GVFNPRLk zO#N zz+3_+F1`3V7>P+iQGE8-LMM99{rLJ$f#+-C9ye4XvEOa{L-yW$w4h$1KhT@vk{vWt zMQY{K!5Bd;6W4Fgt0?%JY3)Z2(-G9&j6IY!?-?96KNoEw;7gqi)}9MvFzGHjiui28 zooTV+O^vyUjP{(W)oPy8hQOInN#V%?dZgkl&9AW+GWzEWB5k((x z*#OFF-%SV@WdFt@JB-J9L^i$4Pw#lEH=8y8&W3ar;SN4>hPH*%@Vrw3=T9S!(SL4` z5(R2xQcJ*&5HQ;pie}_T$b&tVj(A00gt6gIh#ZyaA?~XZkJsX1&8nUHyTJp2*@O3lmx}_DmxG&`48SFyfA~Nn6YMkqpc~_1ZzRccpJZ9Ry z6ATMOG^bJUTa)4`aBW~+GZ~!&fCm_v9JosWSTTIXlQBi5Oge?vxFRZ1qbu!Gj|PDF z0Z_Em_pGcpw78 zTYFq}8R^+8A-B+xF{2g+%li1Lwu`JyXdCPh##ujT=KX3caWdcBlNeXUgl_id%x zrv+PEp&N{PsWoB(Az%U z&ue@-GZf(AwjXU*v<>ObUfNAB(~F+pp710CZ@pxQX)HaE3I$SnFYTJ(X?xXFftJ1u zQq&sWzMmnrzoo5;=wuSmHU>N7-;_H;RplBgC07^IV_bd`*$s6<`LHE|D;vT& zgo?XOi-C4X4G-TCf=oyy+cP|a!t-(TvRBMt-+mN{r49Ny+anoM{ z&Te&$D*yer*a?JZ1sQ;$sRjrVN(YS+IvZ(jY7sPM6P5z-nHIs4F_@6I8X}G>MHqmg@3epwP)!>A#jU(emq@ayW2IiN~fxa;$Z0sl%@8U53pvJ}UgC>;# zVLc(zl_?qqs(M6D@0>5q@~M0K(5pfSMw_}aI2}ms(*Q5C`Cwi3W2?s-P=n4I zT49#Oy=qc!;W#}vhHL|47FTyt`&y4jE=}jdp03JdZ>$=8NxZ3m1)d^%cD;9*6(EN1 zxzp$lgNHU&OfB2oh5cg9sj{dCw&^IYGXFY{%~l{aAeBI`RstIsIMC5jZOw)r1rz1h z=5}&qfJ@FqYjEJ?_9h^(Z|sRM9Q1_7K7+hP5fM|10E!G*9YusVBZi@1{mi(DMi`!)wU+mzSCTl6CdF(Z1 z4X|RMUE*G=+-hDw;~4`UcU73`QS6=BSkYPS496zt5$z%Y2JeXI1+q#Wi<2~W!j=>zD8e>>t+#6=?*MuJ*+sqwuYno2j?TGW z-(#lrlYDBGc75>Aq)t*iI8x<8mrTR*749=wuD;bSOl<`)?uA}LgV$oQJ9M2aw`D?n z6(%<(GeI^@^++I#E+h;A7`bNY@7;$x0e++LG*0?tj~yV}!M-`OiHHLn@@(RCEk2Cq zj|fVUn1v<3E5~d82Jx4gDEMC~3Q;|fgD{WU<^#(>4=@|aFjA2mJ@j;@?>3f;hVoD2 zd3RE&7Ap4$_d#@3S0VHD@Bb=B$qxoxVH{sZM{6#0#o#VEbUdSpE>)n8^Sy|GHu)^I zM^bYL3JSv57J;qV{FY<+2?t0PPr%@P%sZLZ)WPD0>Zysp8) zplM9#AyAQTNLGUQ2@(7Th=eJCpgnoJdP>45)?MFj0&*P{yzrAf)TlWk1uw6x4ET-3 zuDi}-Yv!=9jMZ8FnjuhDJ`wglRk+|^qRT7%aNHMB^~JD}`SK9?8APp)1h9YPGBd4<3@uHR8xK=imM#NQ3HDauy7dGE)|_ z>%HU&#>z71$ohT%ozJp$>Tsl4;^=#n{Ck+NS&@QLkX+dcKvKEZ>b;3yept&f-QZ{hV5s0JA?{6b@+!SZEqQqKCjjBImi zo?}^d{|HEGU|wG9Mi;Xk*oO!n&1oqCld8_3BND-}$1qReZZ7%!*!2IIi8@jKTEJQc z2Z2{#Ycuu8GcAkXQ{ucTVFn7FUOOT0TZBh%{~pvk((iFv`D}Eq{Gps;F0z58hO&Nyr%RZ*J#-9$@UZzTcC`Y@cw?! zguztwzmzg%qYMsC3KU_F*2XOz&ay}w{4-ENouE)9Yj1SCf8~)s+kBn7 z!GG2;z*PM&Q*S_I5C!y2MG?>fcRO5i1CxOYRsN$-`~OFs1K=`GD}!=UJlW7k#4rmi zhyfdDlhT7E7azbYN!42j=l#*>#LVvNCPm{*(>d)0Qs4opHZ#Q-@+S@2H>~d zC6_z;1;ER_?=O3HygT;CH}9IPatvc2UkA z)Wh&Izut6_LeJZ%xGO387(sZ6xNDw9TQH_PJp{8ZOWZriDcV|+Xcu3tT@iAO|1)a`1I7$ zT4c}C_b=5;;E?&a&0Obt3OyV6qkf_WlO?(LqdL)ds>OG9P0HYrYl6&5Re7_wH|sXB z4^T&><~3Gi(hHQjgEm&ZJ%4mwCJGNr{yrQ>xU0eQca@qlT)>Bx&>4#3xWmo!OuBnXDx-*ofET2k?_PNcL z(D)r=sh4O1c=(Rf4M|0_%`JOQof4i4OYiU`vMB_XjM{tE`fI+wak!^;hx_``=L(>JD>v$w8*Cch)9 z%xz-hRr;eVGWUWxa@Na!IL;ySZCCuU{-eQ0ewV!a!AB_iYlhUf3t6`Jzf3pTEss#y z?I2{ihiO@)Z3`IF<=o`8Eo#1ooDBqC#1B~`AHl_}yXGIlm9W|-%{;b~QA;Y^1EYkKS zA7~=|;rS$quV$!pBG^<0fGqmV7@N zR46p7Q-@@aGX_qr^xJNtPPSyIOzA@8W5}xrML4ag*9R;JX477L)0t?y!58{=z8{Yf z12va`8gN&Rd%O{Y1KsFO@r*b$3;M(;R!S+LxD0g&t52EegHX6-(-v#aK0A< z@&m%!EB`&Q--pH>+Jjp`s^6jt`EXHy^y#F2<0(_)o>kft^SjJlR1Qp0_ztmjvZvP* ze;QLCkaK{KVY*W=sXOPIcf#=0eFo{wYSs|ob^#)EEwB75+W z8b4W&X!m*fjE@CiDb|z75`h_ce_$U-GXRVYgLSx<=zyH=0mEa-#4=NRaMIX>#x>PJ zTo?`{y#!pRs=rIpfr+gezX~MvutfIzlr@hjmbU(wQxXms(__wwNv|F$9p8Q*pdMd$ z7_r9-^G?)O2KQ(*oLElNsABLOQI<8pBA*(dndruYe#S-tVT>q>Rw2pgc=6b_J~tIl zrGRZzn86lPX4&%^n+@tuF{nw0J)jj3J3i`A+uZ=s%-Wg`crQErQ6HsO78CYT-dWXW%Orupjsp| zBCf#)ydM+B2LD)yMO@cL_0pDp1=XVl*Cl<0NzluOJLyg5B8*1-KwX!?MZ7?pJ9kYzA%(JG@{9l}W>G+cv2&4L~A=o?2^mR3C!} zt7^Sxd8%!2nuDHVb-WhFT20*+lrsjHdHT-@eR0%%^$k6J58jy{0v;*F{kwMz5?i8{ z8!I7?=TfSL!1!`gC&1djRM?{eHDk;wLMt;SpNYJ-UftN?X=C&PWbZ(~7#6JvB^8<8 zbKollG=8T#c9#d6^=kLPdyJ`IuL+JhTAT@FO^Vg#qR@T5lv~cZQ|`Qm`0i)bpaO;g zzxDu%m0iN)+Jy2!a?kggiGjC;dDvKimkIb&G0utH3ejk{ON?2pQhJY?j(gh_p7CB; zmNzqXof@gKS8r<)VEzOIjZa?lt( z{chyL@|Wuv8rzr}NCUkel-8T(Qmv~P5X~gJGZ8h>hN6>IG16-x*Cgk@msXMATR@l( znTM5-0~|~yijV^5$a>@S0@sbZZz(jVU7h%Z#Z{6hvw*T09ZaUZ1`RdTHEh+J>L;lD zbmepoEoK?=V5(3z)G^iO+SUon7hq#}R#>9IF9;;gl{Q(9d?J-T9T&|;-{Z!2CcO|C z-VyKjB@RRNrmGfJ`JfK>j^YwoN-D=A(rrgSMXMKJSt=}=T#+W>I$LKg$7gBjuhfPc z&b_hmF^NS{iAZ2dn-rr7F7s5KTI8y<(z|D?H}ZH zng&Us9YdC+>x{r{tnbC~tFXl-&gr*zd>%oNJajqdv+{uCWZ`}T@V;uU7H0}^QKF7v zA1&QB)ee$5Gyp4AsCN%L;x;oAYq->YOA^n>HXGJQ;-0V84j&-yOSHvHd<6e;I7Xnlay&|LY1HjLd z&;wR(DP6JPRX*uhBh79qhvL;?(E#9)`S3tEO0L9A9f~5Sj3q=CvJokvGGB0vnUBtD%EA`vI6;BRP`TWOnf%#Z`MK38}=vKw1Qm;|R z^{t&$Tf@`t*y!TZ0|J&!R)k#lPb`G>*}9%*O2viedcDnxZciO-4OH&kEeixGJM*)$ zy|U7e52l)qe%CUqt#x_D3X=~?FIcL$e}*YL=qoky;GCwR-~{k2l7(EMH!@@>Z|b_W zx{fpylB7>`2of_6zZf}oCRF}MMBU1O7*tfxFF>;!->#cr1#D?)1+51g;^Xi7vXwY5 zozj+TWSrBP#0w0m5_LW$g-*}!rbcKG%sXZ2z;pWj_-^&BQaN3iVubHk5Fx_;qzU39`iM!O9_lXlwjTu#mF=G~Lv>v_);TLrqf;*XCp zy}uxOl8NH?t+T&sBp4N(x-d;34I+mc*ej<5I|5A9MILTXoN}=8WxNu|63=?i#FFa) zvwQ{LgJ@IB@Pu4&!|u2xe&Ns^yCxWa?(M!Y{8XmVoeO6_nlq%c#h+m;bu1N9^@Bzg z57gkvInN#wT|e6?t?m-1n)AY6mz*1vo$JN}DJIBy=tM1Ep~1RIE%{ z>eSY6LVUCK|HIGYfAO{;&vyEAH1I$54*=ohY4KPAzD0jdWB&hqIe=dLF9sU_-B#m2 z{x3kzXZ#junC~r4Y6D}71Y?WJW0P&bBcEK?gE{yAri=KiLeKlo=12lJo-2YZhmxO~`zq@|ACvOtfB4%8N&t?wG;C6q6jq!UhL zg#P-xosZXm5dp&|^%{1`jf$O7V|~gRvJOQXU`n8_c&ikam{R?T@yyBVBcg+~MUeU~ zZR2%lUo{W@%*d5r*ZFG`@-ul?s}MX>Mr#K}i+?j;u)jh6n+${#PQRvdfBBn*+n8?3ZEHmaoZZCB= zIL3@8Yd||B>bpdLzLVxa%39`M-!zbDFshJuJDJWELNz)3+kna|;?YDC?Gjgi5Q*6Q zykK?Yi2VRt6wsehZ%=qXUCk-Uf70gG)dv${$E;jleG%heqSLrF`0#g*8y@{%zNMW% zeeEs9`4bQ>>iWzE*TFuGxc2Se-inst4R^R58v{*+W&I5EoI`yD#me-Ddzo>Koyy2j z$_huOeGqhH<4%^di9XXR6LvC0b|s3b zV&i~;IVV;X$3(2gN(WS3mU1^5@oCmW+bf<1*dY1m@OF5jfM`eUgafdn1}K;;E~4s0m-!zJF?r=VQ@d_S?s8e;|;4&K)^w?8sR-Ub6d zo#Wj}vE0o`M6L)R`)zK`9IP6DgndxBOIJ66ZAa*wZ*l(r^G_Py3|XtqpJLd_}Yh=jY%+nmMUxr88EB4*Xd0A%?jX zsJNgOQlgDg-0TloL|YQLpu^7^y8<##X=RkPb|oZmU=Ec$ch%NV4^V0-B`-~4+>2&` zj)DV+rThwU{SedjE1dB7q1v?lEf3+qmC5J90kNJW*2eP8xHOiH#@gV+uQBJlHGc~Z z>A$_tqN1JYhODTV%Z#=ljGItjuTWk-km~;MMP8)^=_mTlz91B7Qny~8`Of&he}hS- zzwyY{U6gia4=C;XI@uUgLo$$>tHiZ!((jeSIT;1P@CVx=<@>*Fn`1U|YR!80)7z52 zY$Z)}?-Oz{*y@dt@*%h0_`*yETD-mDb46gb1b)IoHL}>x*$40q{*XoH9$fca-Q0QJ zzUH;Ou~%xQi{6B+9w|)UEy!%U^b^oM^yjH5`3^<7*6%2k+Pw(Z}_^!g~yQ zrbc$LnR0GJDA;Yz{xor0+r=5Bc{Q+DXVYaEcTQpba58>V7eSrJERDrH4_*j);INL7 zeZloxGZMx2jZNlDg#ev}Rt2k+_e|oc{)P_qniXo}aTv1?+lNnKttb)XYrI`!cduFH zN7u~O$9YXK{Gh(izAAg>?sVwE&0;_Gh;m0I=t4|3p%@heklsQ??nLKOJ>j6X!Z1&W zN`l)Asmcj^MS6N^S|Bhs&8s3*0=iJv#)43Oph?UttQk3+y0&1S%!_iHfc4u~gsS%2 z7ombl{VmT4Il)q{SV7gC8T)3Y)#_o<`h!ifl^1N4Oz^0D`GwR4cM_dCJp3lygAbv>3 zaUk1!s-sb^sRit|>u+Nc43WJ%O|;k5YW6t>rM&RY`F+rD(=JtRGl&Z3qc?Oj(AsB| zWsY}kP2xfvKtvz)_+th5X|`?-75QT{$T z>_M}%>PD#vWaoQHm)^Wq$D4PPWQTyDZ^_I+%L+0JXQa?X=Iz{@w z52|V^(^N6o^_Scj_f&#K2rP#PJlHe%$qm^FK8Q%dqq!b2i?98+4UrlCwAEkw8`vt- zY@md@xeC-4+y2EeynMwO3Vd9ARdM$Hmh+NBq42=)rF83;sKnr?H8xaI>FmW?6k?%Y9w~(Fsa!Sa+1Mmf0f>DhEkJVW2`Lg zd1eWv68rB-R_~l&42Z&>JFmq6?aIS2ZoEsp)q;+xI$k%6UGP>BzyMPx0i9Rru`jo@Hx z9K0dgD4AcHkn-}S8bNY~vP@`ue+)KloAkl}j2N{?7FetHDD|5)53xvvOv=uDskTS< z?Y-i)yR&av?T)_UDNYD)!tYL-S34~ro;wy-GYX~-(%IL?CFo-WCNr};_dTD!tvS}w zw?@@-15qS{mGyhniSQemqOSSge*HX8tsTDw46klDEH^#OXa3{u%d-Vn^*`1=+*vB* zX3>0Av?duM*I`~CFfCxbJZ0a*eaYbZvYbBQ%HjkjiqRo6F5^)_wZRF$&|U0%)X+K9 zgLmoyf};H5m$9O|iL5-FH6uA3-P_~bR%0%+_KB|Jt}9GVnff(_ABH?qW52UAbx>bP zNS(~bNE0(74#j&UD;!MKx{Gg)Vh2RBLVSJ*rS)USwmLGK+>v((JASi&o>RmzX9i6@ zr_I5M0>!U;F0Ake)S)4oDC6zfjurKkUE%||Cb*iA{cJ<8^LZ4CIBN-|f)lFGgoeJ@ z4B?32q9^C|6cj(YPnc4^sQpnaSed~oE-0Tv@0sY}mFOjtx>u~g>t}kwJuSn`%$k3| zAaP|Q>kVD+@8=i#3h{Qy@&#Vv9bF-KInHKcs8t5Pa)no{wp^XE6B{zI7!!gCcS3 zB>Kb27OIZjG^rYyq~Mn9nK~ z{1H4~bxDariKAux&&Ao2^8aUSaL#rtf3z6y09OcHh!O8)JN$lX3q5;?m;j{U@~K-$ z%b5iYbt$`;mEZ@LObqoGeDR2DyT!)Q6aSw!;$Gg@!U+((;DrHk?BoNx_^Ul9u zp?iG+*|y)Mkt`>^cG{-6xOnY$s?S<&9ER_K>ySmFWdYK%O5c?_vEnulGUfaX=)~~c_0Sv62)uU^%-~o)F}+A+ zq$+o^!co-z`hf26&M+nm#v`&LF@r2G51tDtqwM?NJ_>l^92JzuA6ges<=bA2_)lEkZKd}FNd=IQ7%6s*0Jk-&^-M2j@!->?48EzZeCAbr)? zo3kgjs0s693mr=?Z(T$?)?w>B)<#m+J@YBue(w>|EW%?>a)X3-HyAf=7JMYmY36%m zU19P=7CV0*B*0#@e0a9fg}M0SIf2|oze8p#x}&tx>xhE3(71qB$TbE@(?iYB0aQzE z+K|=UB>(yDF1@T59JOhvZ}bk0+Nm6=v1twGCK2t4v^=+Kys`+QpVUz`*UBr?8VzI< z3b>`F=>&o@uau+}m27V$vThl>)?myK?oq*O@wZH`=tsU(qOyl7t81bxBcscA#D_6W zL_>>bnZ^XC;mT9m8Pz>vt236SU)={A%kt}+r_wKOx4Jq$r!32sljb)oRz&R)3PU^k z3Ht=Xt?i~y{%cSK&>0kb>0wK%5JvB^iADlxar>xCpqo4^$bkzKg~x*FFaj_9XuKI5 z`rD!(dy}NMJN~y7YM&n}wC;6Z?1Gv}_|-{oPfg}5o-+*c_ng}_BsOZLH#x8oxd*&l z3NlD*q#=Wsl7o6LTTaDzvGLAa=gsS8w3~UGV5MrHsywT$Zaje(eKW=*+P5a_H*%QP z(XEZfLFJfTl6Xdt4;n&Bh*J+jTwmun*FPG4_8bPr_*J8L21N*zutE4|4<3vCw;M2yJ5JQYj7b`)mi-D>`gf`Q_av|4VP(>Cw z$DiW`^X9)2DJKX$4stTnHs>}xC2YBq&E<>_$2NX;0+7WtyNgc@A&pYr_L%rv zGbnx<-7HWYiu)f5>FbzZ@TO^ZoEU;9UZ80Ufv+_M2zP5~?Xr?qEuK^c`B-@4nwGg6 zvAhG#9DQa?J96`LB#qO$Tx4kg1;uxyR+gl#K~*q=W>%5H@Ci7i=Bjp9(etnMS7fd7 zH+%1EvcogzEUf*7ZFiAN9WzgJVofSTqWwAZnz(rd>*7fC4qrd@7~}3f@Owk2{zi1Q z>GD$bwcP6#aqCg}HfLM-zS2*3X!J-R)A_ezxRjpe$ zx>N-g^169M=rn&8i=`IUg1Y-p_ZG2r8kuk2;n+3}!y=AuLqoS`{lC|*;8WnmFAf#( z(Dw3cg`Z1`O7F#ky3gDuO6?sqN^5+Rd!8xk3YN)vMIGqWrQr^|>Og1O?Bxtv=QKgZ-LhId&p5S{Ch(_dGULakGJ3RpBKlEJ0}fJRh0znsn|>Q-zDdq2kiyA zp&w$S)T%|%meX4r?Bn%p7n7+<#8W{L)Ph)?dK>=psRbEqP3^SRcQrHWYR10Eb(UAk zNhd^@DjEAOfZXSU|X%jT5}#vu0O_nI_{t;UT#k1My; zoMRFX4)W2|hJkhXXR^6r7BrgZ*PmNd1yA(!aFMekTs(xjm+Bv|9sBt=*tU;lm_+1`SbK(McV*Pp9xco9m zw7RCNMQcNO&b7O<&Z&eDyNKp;oh-vB?$pjvasCcb*Tx@f@Qi&qx}j#JzY!98hcoZJ zo#6bfHLt9i-4hi?8cyGT27ZZ?V3o1w@}sj*-ui}Eqfg^A??~qtre04X+>9 z4eeE#_Ub!`aGvt|4(=sHo^D9yU(ceEbzU(jk`maUo~Vo_#F5MwEZH)l!*l==f?NK5 zEL241H>I5s#1J3(uf;p`pO|Dj`q905rl!rc`HYAn+>C3$DK=4OAw#=%xc0tRie&jl z#ZzSYia%@S8ApqMy?Bm+)7M%R!;Jzx*p^Zx)ln*>%BF^4fJFPVf|VDLYs$xXhj6^# zi}?FJB`e&B_yM6ZC4KqasHJ z84#rD9Po%zfdTOQ@8^`lF9rg5aME_{V%dasSHJ1Qld-a{=GqsWy5!?UU_h~ zTFCiuw82*o#qhO7847_75xK(QD&Z>kIwC1!&MBV054P36lJtmkmj8YoLa~A~9aKlz z;R*2uq(+=;;I!i_9k4j3uYFN63mNxcFW?eBhJcxw-D5`^>xPdN8}gcEk$^?oDJrIGG%OGia0@pZ{s9ky4a0t! zx`tZZv+rnnJB<8v_o{n9ea-!66nU-`jlkE%z}Fy0lko)gRKnyf@EUG#fZr)iGv8WT zC;of_I20@kyxO=twZfyB`)OYzb;}r&Rucy&)geZR=0LylFY6ZH4V?7?=gG+iFf7# zE=e_kL$+WlxcR`RVOr&$5_l+)bj;VjCcA?dEL%u3%V}Ej!kw|MaanlxP;u3G&UsQMAULv5=Gs_k;-d+3;~M;$g0Ml2X;m8In#`i#}C zVsJoNUUV>a!@yr*>-zS3vAYMHf)=+y&tHtQ|2W0DTiLU2`?3YIzWXf&v!VO44xtrd zf8gE7e~;ox#F?5C^BQsNOl=sG;DUDO%k?AIU>Bolf6?%Ke61$YtM}^%P=tD{&)Zge z&fY=IJXP(BLHqV@VUR6RCxt+@AnNPM<|lrN0~BUUy^+7+m+IenQBAfa={ragG?&T( zcjKP#ht4}o@=nt&t=UpgP;zV&HQO-TM6EW$Hc`9n6!WI9_|KcUW5YR+Cd4z*`jTV7 zAj^?blgiXaD{GIx)d|E+mfjMfBP4uv)8&y$Wl_MKZ2LHDvcSg6C0Jc5HbbJL`Q6a8 z7f!fyU%lek?oJJEGo|72UNPajLS9X2Z!@`&uXb$mHP$Owoe=h1{^2NWeIT;s6Xj|* zK8|mR>P&ycH_*vFxPA0HO30{@QKQSd0VY&+jNWEd|=YOQ`}A8-HjPJeU( z*kVIJXf)vgGPiuqlJE^}?P8$v!q?Zp>s2g?v>rqRsU~F^kx}Ueg5jd9s8Utm9QiX83cd-w9yGeMXVlq4v2p-6k69afBkAkeH=lsL!7+P9F2F_1b=KzMv;K%yq^p^cfw$euLA3m?y4_pIA>u z3JyS6e+SCb)&fuzO`^_a?9U)8(n|r`m}s<5%Vz&9CRf2T(xT2nnu4P57(wP|z`ZI5 z8Vau;L|5!z!1|}XsB#lP$p_SmfdVUY|IW5$IOX$0I(u$El~hP z*{y_#$Qo5HJz80f@kvp|TvC2#9jdkBx<1w9#^&6}7xY$hqLT2?AUwYtzVDH9hKIp= zE;5Bn4=F4Rfk0+#7png%#$RCbh zORd8po_1?ZbXPWK=KqaagWEl*q%sA=-(9XHxL7JvnPSJvK-d9;s>R8v#22G1Zz&^a zRvsok(07!HwFKiOXXG26pD7Pg`oymnHO(E{o%)to*WKB?ur@tK-yMWp+P53dqX8b# zE6pnJ!-+EJ%-ddLbk}gdUqnhV^Hsg*Fz5bN2>45wX?a;_PD{!QClZF^{|ZCk{=?+|v9CDn zj0C$SzA3J$ORPSSwQo!Mn^%g0W&HfARt{zfEhtl+CV7M6_g@P2tAa+4hSfnP^E-U z1VZR!Mn$BTAc0Uah!7zJq$B}CxjP6NopZnMp5LAS29r1Y-Fxk|p7pF}uiY#27#gxN z6r%1rOLzGD(ZWGS`U~gwu3)e{X!PdGlhNiNON6^MG^I*+3qV0dD+y|RJwNY6e#hpJ zRcqZ`#s!oi{hZ6vxQMTj`>T7-4xkbP%-jS|&oP ztrB|5rl+G8qHrU=J}5hz@oaj7Nwup1j=tV`sPLianV_o2@9$~{(2_rbH(|FJpr+E2 z?en{}Tu}u8ZUROza?n9hnwO~BQQ#nL$;;CPLe#P#Q9>(X`?Lb);7$|zLLyD z#K^vw4v?Dap~7BL8hg{S$$$y7-dre_j+>QB2~zeqZe&NynIK8%treJMHt_#dwkp(F z$1a-&*BC=Xq|EF{p13ck9@L@K2sgVJ6VZi&*HT9OdU%rJ2dCu^yE3B%y#<=pycmKo z+JRfZNz*Q>SyF?Dg@e=?_-xm( z-0UKsTT<}M@{iMJwb;!Fe~i=XvQ3YWy8_aRW8^>zY{Wn*{$$c4|+2+OO)F9wHsifmlY7N zbyP{crwQs)6&Q89P*rFds8-vdqf~?^Z>sPn|eh2V> zJ32Cd!1~o*i;Cccj~w6t*t7w_#&Wk=Cb4DjH@|@2*#$2|dP3;+MCRlFV0juC?$?k1 z#~;$uHDGN82MCSpGpe)@H#>$Fx08DqO)%7sE$Yd4`*$*`PcyuofPGSlF#m8;q$hT^ zSW`D^BOD}t$CN)uzdy2ea})4J%>Vw#%K4PNefhEtuM;Jwt?-f_Y^#{96s+VgQD5Sb zMvrvZ#qSq(Qyn1x>H%-YOie$P#+i!-@@}SSBSG#RkYk-x^PyIG-!H9)cCsVpSE`(d zO^pW+8_^gCRAW*yvVS{jR z-zY53XA(11&p?~kU8}G1!#l&MixTxQPaf=QWOfa%>%I9@)$uWFX>Fj!@s?Dt4VCKF zO?l$}U64ZK#kdwJ#ah3m27^X%hd3kPjc3)cUlk28#BMz8($TfFjEeUdZS{Al>2v=(s zI`3dBdN%NudNDuzK%k#|ZG2)v%0zy5>avezN4P9W&)mG0{-owhsQg}8C2T6*FdAg< zx>-s(=aspgewFO;npcY`ROOQDok`WK2l|caq0nUKbVB>`afN~95A>>l;tPthlMgdH zmq>q^b5F`8EkW`Q6->_)$Gi5py^UL{m&IJ^x7Z{&l!OrJ8gP*nZl^j_ zN}|JZ;tgsqY^F|x@Ma#F8l%R41HhJ1HKR(wDUw`G^4v(F8hbPkq!HMOT4)fN5Nd^$hxyzlI&k8;rwScN^=vpt-C9#V~2UR^xClw`9< zckZtCn6*2=OwP9UZz~<=Fgj)xvlt-Gp?T7xhJD+naew7>+?!S>+}xu+3+drCZ%a&P z%q}#3x1U*y^+<{gsth)hb!a;s4gv3O1lm231`d7f2~>{l%rVA;{+w0J!j4M!85-feL6QnLN8WS zKaAJrfg2J2r#o&rDH~R3%%#rcFEKxeiDwrn|oIUfjD!l#m_j2<-dsm4$l_T`Fld3l68M{%DdVYSH$)RubpA#ze_y zsD05H-t-ouEQw3DF3iGfnp$Y9L@&S!OQg4STUeXOyi7Q_a%n{JSwX>B-07?SUV^HR zSCrOl+Vvl3$KA?~Pe>X*q_1=7fe5I1%=ws>BfUI^=ib;0>t>QOv{9F#?&Fsqz_TD- zQqNI_I{FVBNll>Q7x6-q)h#foP?rT0TRVus1&Q$wQFBrXb}!^Ce^bJlfq4~s4XVN( zW78|;>4#Ef7^Fw=xYFUec7b`_Sfy!o*OH@ZAw@u&b6OeyvR$-vxzTT^1=XTo-hNgL zsP+c!CGSa07X)p-Rh;t~0NvP#<7bx&VEd0L{j$z;*)S_1ApyT~ta@&YOY3Bk&XEHLnLa0z&hj@9vX{uuwKS3UNkSJ1jVKjh{_?DP2k0*his5I+KaAAt_HNWMNeJL0 zt71%?s%HC7y*rYZz4*4@IG7#LrY<2geU@wb^tv+nh{PTxzut&P_GolY<$A77JJ@3v z8+h~6TxQq_fA%;k+O4A>xdqOq7etD%Og4}&J>1W~lLZnO^H>iqG-xQbRl!amZc>OB z8+#F_EyIxS$2w*2GP)wfT5sjpQ_~396;6XS^OV@gdb%KneTY(DOAB%G@cG~%(#@mi z>b#0ISC^0n4iV5;#N2&mNv_1o);d~=onU4!oWgXZO4wtv zL;7h-%~oS^LG}0Su-EN@Uv*XaCBIcZ!9oA232*>sb-`x2JnbGSIeNjZz07vDdw=Gi z78r-PU<2i?xSsCbif9XcBl>mda^-O7NQ1G*Hq_H6`{Ne20h{rfZ(a z&n|Sy{KYpksRzHRV+z)9a`Le6&`Y2=nWZr`D}dhDyLmHVbe_ivl;X>UlAGo?n}4@_ zeV^3T$nZ6~66Y)y9Qfl2_vkd$iMg0O4XE^apDs3r1^RJrL^+6pDP7KQ>58!I?2j+U z_E21U8JXvT%Rr6Ik8bP%~;{FjR#G&~BZ`;b^ zB#)HFdV|zFE{rAIFC8;{tDZE3I_eR2F;@LwLu{}jVC%)_OvTB#qIVOl8b*GMbp9qJrJQ~P{|0-DV67GHXjHK{z@$p_( zn|JAbwoxoowC3`D0@*+WsI-U+F#H?G03z)Kw*xZaEBNm}K-yxEEG@b~$E28*fSRu- z`5VyvAM%1|eig!ROsbRN`Tu5hAOKfCLj6~ND7%lWjZJ`NJF}JE zY)|xMqhtcO%Y5#i|J7ro z03QLA2YzN9y)d8s>EemtP*w6X^M@T+ejBHd`Yml7ts}5hC(bcp3|Fh;$Zy1Hb{uqN28X@wqfrcyAN&c(qqU{m6C*IROb6 zsE>S=+*ct3TVD={YjTfN@|av2M7qw6Vvo#> zx>hp;iuw-TmV6k+~1KtS% zgQ@7wl80!zl?0ihv9fQ(fSZZ3h?AU zg3v6X#BFe1^87<#u+{HZZwPj$VPC;=x4yEE&v>GH{yuV2mJaDV;Ok;2F92mtWzl$~Uv-J=21%xwDWh&5*eSmMA&DT)z zT72C4ron+X7bOqkATz9BNdC(!;Skf7`=q3oEuC{4+9xscExA7)ad&uF7VK}FK^0Jy zv9nbDW@&e&af$f@n#>nP*|&oiou~%xmqv=8a{wW&6I{vJX~|!g68tc_mLV@sb0=ju z^t|D4c(E+l$q=MsNK%0ou5_T`TnicLSDKUWp&Kl6jj&Mw&eo0Tfnn1Z?>cWSkfx*> zzZ)zp0^(Gha#d1_v`0AuCN5q)ivhCLnqh>!O@se+)E1$~kx$@obe&o_D>>oI)+w43 zODXP`3*+r)bL+fYQeb!1RDHDZJtY13VW+iK#F?cTK>Go4qVsd0ii|qb!Hcr;u*gHE z#P-QBR@yy;QvgF;!>9!6aMB>iXM$%PIa-);3Dkfn3MAEiG3gaCAT&ENmE>HfCSRp2 z`C^e12-qT5#H`Op{dY`i%iS-c14#9@i*mqrzQEZ9SO)sBwc+H|VC77r5qU8x0-EKF z=+L=o?jMG%IGg8)eMBOu`8&lJ)=ovWAs7b)hr+8sm>hBo;Y5EF6+3)${$5vQ5Ji}= z0;*5&j{A>w8UBEr*Q@TvddGN_1*F+tL$zn@8Dpb787*Tx6JkyAnP*kjd2D@}y90`B zR22nn29KG{fGoRcHa5qJMgN{i29zkD13C|K8mzhhc{M2qOpKO=CC^f65a9clHn7+Arz$?)27q_C7;(_++YwBk;&$^oSQ<+a8QKJUG$7L^h92Me!P0VrdF zpzn>Pu0Me!_t66GBnGH+duW=h3;abIVbHoHhMQSN6fDkma*OL;H@Q#$Xfctm0rF=L zW%`WA+KEJuXm6_x5YD{t^yW^bbP+jhk{b*~rjg86S|;gw}j zK-`;v47Fl8k4&q{M8~aQ*V+Ip^C?J4*NSLQyb678_%aeGR9(R}R)2qd1W#~QY6f79 zKx)J-*juIns=4EbqmbS?RH4Q&*bhu@!>=B!7ARWK20;TJZC8&urj*Hg%m{xmZwj!f z4G&+jl2Jo!rJy_D!Di!pp6&_ZI-+O~Xc>)n<&w+GDjGp6Rdz`ZuRPE0udn|r`{waT z9h<{0V?dBXaIUxtH8ph?n1W!St|8fX^mWe1B67ONeOUK96Fg}~N{OJzs-4mZW1KMo z17S4QU)sZpuq5P0Cw2Xmh$8Lw`I<1{?G9%7hFs`@LTAiMTZ8Y*dhsbhh&}AmTGwj7 zG((^YDh#N?X(RQia=(8QU6|fT1(J9sJ#r;-u3k7KG5mD+H$eEvVcV|L7OKluZL+bt zEM63FhvfLhq9;X{p`-J-m2Kv8x|vj8U;pb4LD0}_*BQ*0aapILELF_1@? zU##V}l@e5mv(@tnz0wj72(cuc^D<1m#MeXlh66-#qT@f@5&MmMM9?s+Q3rh9{%e5v z&F6RYEni5)fBb^T7`D`)rBGJMPGzR(X463y4d?PZqYD0>Om zO){1_9ecjEl>hDZc4LPVD8&N;g;|p?mF7YNnQAJql&L6R>v!3tnG^R;>wGmD3pT@T zHdHJ8VyqDBN`jJgg?Neph<9CkE$n%nzUDv6t}bRbjPR6NIW9g3b`byxO@?l|n^>hs z4WoE&M1ECv3ZZ@XVsgVXVsds~aYtlqteMEqr~hKz-8*6i#MSPl?Cck+n-19lgK&*| z4NoUV?Av6^H0K4?1{%(Y{-^@I(Pj1K+$mvQSrt0J9Q=TQeC>fl^^#F3z@;buUu60KC^HD@fi zJev|AckOEbX7+N>?Hf`Q6a}#BlTw%`S1>3bF#!EFG24o8HtVdna={M43UA^w>puvX z)trIMBsZWgK1>&t*~NQmAs`wimW??vHTARVUMFYYAo)1a2wAtela?9NjiT)LwP>I< zyN;^%+O8UEm#p5Q58wZI^svce$fj>>VO{!!05oJXR-(P31+u=bV{daW{p{H>w$4^& z#@Ze)fUKwxvx9?D9p;*4qi21sCu8!xwW7iU(WyeKV<_Hl z0=HBZDP?*#uh*Oz<@IgDy*pG%PP*XG^}?G8RAKWW%cPvlM*qn`_$DaA-D1kzuXKX2 z(9s|y-Z>7syBIwf51`G~D*4Q1r(ka+48i_>RGSJ{zs+s|ieC=2JCg^8|2IG<0u6n1 zw)?d{Mn^$R>dF<}@jEwrn^WMkJl#V!dEoByD+4}^IvE*M?XZIDu-j%@->4+x{EcNz zl{{ocTPr~BNE4DA4se~a4vS}*G6ZDj!_4I9XD#|@gJB{^Iw>yfly29k74y{4C=xFX zXz>fg0~Ou%u?ZA45BlaQ8g==5e%Zi2-TIFAsg(MQJWhz38Nh{37j^jvi+o1|79oMxVE+*?X*Sn*y0^z(+j9`wlr39&_R>B^~QQUvT2ul+kD1wnz=x~&?`68&@4`& zi`B~Y9u~-dWmG%G;|`SchdeuM1AlzvA1a2HYc{p?&Hw;21;{~C)NDiStJ6UxFXLr> zNe;&On4aM(a>;$TQT<&q2aZH=R?=!$zU3vM`fL3@MB=M{M(<)gbHo5-8c9E88E*8K zqV1A51z8ZQD@4FiEweFv5|$?9#_qI!)2vBIYc$}y~!@%*RCW`zJ6FuGM2pAW0 zuL@xcq~U7dERU?y`+Faud&@M$#l=wz8wG>Le-#$~`4xA|%zmL=rx8qDtc-_w;?~5S zM=kdw6Uh&*j^$ru8vTdXN}A8~=8Xv9#<8t}>e>{TB6D}f0l_k4^G&PlLDK4avB$}= z%*5MimFFPfG>JoprE7kRekS%kuPX6gNCq^^4U|VRE=>OJkEQ@2_bi=BjK<(y2?EqL z?@W0ux)x3*Zkz+C>T&^yK5Jg}i(M*bn|=nz3xC!Wf4ltDN;8oQL$c{{JBjrmUhYM7 za@j{DmPLs5jx5gR3;CM2Ts4A*AsIKED~h$Ts8KgDq#Qr;g{Ue*04m2%vzZZbn9DwV zkkL4g0uNCS?e~)f5LT&ipGlH6v&z$A(bfxpoakh{yfhqiWMiocog-U|q-Vhk?_>8# za2-Xnx%~~&xK}IA2ZxsjRf72pz6pQ}ycZUP=axWTmfz7ZnIhb4C(+Hr%(j@N9;Py- zvCG&AsNy%!X-=25CGHmp9Yp~I9DKZ*Qhq-fdWp&8Cs~X%(f?>vMfjGzKpKJqw%C?QW&?z2ubv z^`V%n6^2^)_#t%w92z@@`Rj(jeZ=q0L2{#iORUFuu^<_zGzn;ij=_1yVP|Q*CrT|$ zh@DYwato1i9+ok!9+U)eCi>|CYvd6 zg^TFvV2XomXseiIR^j`;*swqk#DkN6vDSZG!x9mQV}`my0D^0fd!Aj;45J;``gmYR ze9a^;m2w$QyX56hjhW08L`YybsDHRgQDXWk{`8U0GGLHV-(mV08T&CizreGG%4WZ3 zSIk~9#eg_yS7|O>uEdJ|4{|$!{S(s3A*Zz?MNqsnd6XmMD;xe6Qtk)^nBUqKY3~p~ z|N8Zxnt~T9ZxeLW4n=`a9+P6hf527iA5Bz1d&7Y~%@F&RDz)ZHFl@cTevFBT-C2f@e_?q=2*kVJj;XW!zRS2oUMxt# ze~A)g358W36OCE{2!HaL74ca3>lEJj4M64z)(k?TAAp7shUHj^t zz_$&d$>366k8Z5FKC0`sKCRXrS~bvn+xX)%h*ZPFLyHz)z1CP^*^NaPgDj=5TW8p{Mi!j} z58;9~%qz-^siZpC7{3q5y!gh2bs?F88m1%$@H>l<8#z~GQ5CR8UF$d}ZG#MXsKb^k zzyphOUQ7^_BInYi6hOSluWJh>X6H9Mj3%ZdOG-xSBO4xkBTKLy_Cd0U zUbqr|2bKl2hs=1u3=E~xB0WrE2h{gf;mbP4=BBA_DlUx%ezHJwNF(W`DG}@2JDJYL z{{RNw+m};v zX4gq$`SnL3<#ihHYM24k%4lZPjWaR>;b&BbJ=-%?GhCbjk?qb@KcFJB0E#1licj%R zKIs)Q^Njv8A=)L;lh#^xBk%+`fxNA`xDwq&=DpFqxZk`ABB`{l4t^0R?wR#d&C&H8ciPj0@{c6j^RZB8Mb*%E@b&=tI|6F{g=&_i)_B3;!#-f_TV^k#?!hLBe8 zKLpPD$^q_$DlkwIr*N$%g}-iU926(vAKyH3TVOR$CO@$w;EkYfbQZsuU3mJ2t#j$> ztw>JvUpY;(Ap3GmqAnppj^r?t#?Hh#QD=J8wq}kqtVEasOJ28${0%3rT0mA-X(8ff zLCoyO<=@q2LSuCM_aTGutbmmd<)bJ@@pLe;Cc$3NW$4WT_<;)bP^PL9U}azI6$O!M zuQ>!@F?Ao#1$TnOSF@{xpq23HBZ0a_OYfSwRIF=!m!cn0>Y_`bKA{b-SP=+IrQ2VL zHyex4U{m&CPEL z7T<#&MgFGUDs@Htkv$L%$tOFcjo70qNC8X7uh zF6p<#jM^i>0hEYYd5$et9zCk_f6xh7W(6lyEC_B%1HvI! ziO)%_g(m?T=g{d#k4jY@mK-erA|0Pnb_<~Pv1T)hyD8?%bNHrydEVKt6a^U&_}rLw zr)5?Y^ANGmRd9&dGCBdAz3X!)&)J@gUIp5F!)}+ZZO*mjf8bnqQjZ1R8`MGxa7??f z3=~2K3(Em%51*ITdqf$8_so&|950mu3H#zKd)!*9hUG114sD5}R}Ial=cFXWWw{-@ zs@anhz0zbDjxZr|;Na3JE;LB5W9s$;V&A9Qy0hszmOkd9hw~mI$&(63`l+|ov_-@O zsOHYMq`pPyJJN-i>Ys}Z+zdI8(=vIv=#DX{uGTg!ni>;0d|4{5-SI9sTAlX6#xc^Y ztXe1~df}qFJ@J|S6uBJAL^Ua(mjr%uFHmiRylsETO0epN+haV8TIZ)TvDFSz8i;;uXId64R!8S3n?f$kr* zF$1h~-n4+D{t)tnYG7Ye472P#0glgiZoX_8-G~q-roq-EdeA@QCf-Y{chY(#U2cP& ziVr&_k_=iQXu0Ahetkyys!$*y2TJ5=hXACW$8I&HYcO64ZvMF!(aqLre$3E)a>S<^ zZ;~~AUN5c_l;8jziD(d6r41?w0yZ`SQrYsMT=HOvn{O;22$L0}*hE=`D{+co!S{#Ax0@(IQZK9-LI9`s9J4oqm<5811{5wJz9R z&uosr@JCqy#}J2H{$nP2!y$JVoaP643I{ri*9o=wBHl5?Wt#D!XTF`(y38b?76hd2E8c{gW)&5kKu)H2y%##~-uLI%T;ylDYSQB4(@+*XqW!JJ z60q7jNs@rou2A&_)xLD)|3a)Uj?JPrAFZ%0>-T!5W!Kq9ln@y&3{Nf|M7?I ziJw{QZAW$4&*OzLwmT`L2UZIJy$h^B?;phOQ*NirG?SCUJ$SG~B~w&p)-V-XvB36Xqbfq(pDWNCA6^R8!` z#1{+tU7o>#?px&a(AN0AP)Ms;XsToKENoKv3yiL@@TL&nKH?PJIc1ryf<F^eIwA@R zl7G@=)XvqB?QANOVHSt?h_SJqJbKY<{~po=QpGtljZWKJXldZ&zZYA$oy>_!wHwuSlu8@v$5@}vNRRM0ZIr55>k9VBe zm;DLWT{|Z)-183pI#A!A+V=n-c}POIXFucR^*oWD7iss~7v(zF^U|G1A4ILHWN7B9 zECf7qJ8r*twyhFmrIZY{ZZ2gg`cXy+|tXm^U;2rE>X3R?3Y^2fWClDZEroU>1CyIa}xN|!VWp}9> zau4@u{d#VKe1BDNKJ5PL(odO@D?#sDEB`%GSDv-|4k_TqkO;Xf14j0F@tv)6L|3@y z4@}PPC*(QNb`{0rxnnm?>aFL^vkr4Ramp2_?JVWp*1gAie0OZ=2e82ZFaLwI%1ZZY z6RmwxM3B}D^BwVQnPj8V0;2&QP<1;yI!bExN%>#A?72GA291v}%(;8UJ0z8>RF zY(LKYy1NWAVFS4AF1dZ6`>x?dpYAzg>+B=k1C+zHQ} zVYt<()av&nzIUG8JSg?xxjRS(uTR+6JZ)t7$;yBCtJP4UpmAQm_z()~qnjrN z>{G1|7-ps4e!&6$<-?zMy~1eBD>NI&oNPlru(=IIn5<@mhA7AiI(AqO)+o4y_=PFJ zH)CJdI*z5q3Xjl@XJ!bSr6_DQ8zn_i{Y{*s)(~&X=G!~VtFr-+x!4Ve0c7jS+T?YS zJe;--!nD+8IItF+(%9Z}zxxUItfhE}*PKK(Y&q9$JZr7}De^K}+cqTM({20R=UQy9 z7&Opqn$#A;@|R#Io5{r0kFZshe$L{7vTi)xG^^9HFU7rfzEHK7wn?%j)ENfmo$2Nz z=4)-u4xt$KHJOB{o?spz+r7jGbRS0BDpNk77^4) z^2^dXXqsG^1-EnaV7It2y=XFBZZ_75l|}a2_|qrW6~obqj>PIO&;RreJ=xz!k`3*G z<%0E_qy$=gqo0~D!9B)T7U9r(9Srq2mP*BzYKT{WHp$C05!?6pD16d}3S6wa$sl}( z2>851N=bVOF`?@dzouxwKiscgq}B@rmq|l-W40DwwXX)+vJ+Zlo7#Y=W@F0IHWZ9< zeQtoHhgc6>BSTRN>2Vw4MAHoF*2Ed@ats8Aiq8(mIogIaQm5gMcQ1 zv?JI`P1d{0$|$RAZU@xjy7hwoPFY?)K2O5OZz!e{OD;k4J6B9I4Yp(`gXKA_BajU< zt#lnk*BT!^X{500ZOTp|LH*}UuN@oZ&8ZmOeS$%^*IEriDs1_jPVV8~^(Od+`}WPz z&z!kh?(TEv(mpu78(6;aPdrX1jl@1bdg8Hc*Ci8^cqfr`ZzJWIf}CR@Xn|hP)WDoz z!>sW5n9p;w9n`DrA90}1^aSc>fi5}UN$x)8Ykvq_-lf7FFJDj}E!(Xs%M4}dL5r=^ zA97;!AD-~Kv^H%JTBN~!^v}Ctp={hhT=NKXE%5W`V%=%RWInHoY5v zusAoC$E&cjdSdcrvN9nwLye8_BNgA(QMP+K}e&M z9O&%FV#br6(qX*p7Tp|j?1(piYVH2(c5wK-^Ep`^H{O#r=Fd;Nk!Nl-o;6B& zwHD=bf~+*)ld?O#U?>~9x-*(XS?A-Fg$7_HWSKYse6}(3OxY=e025=wY^`1JLQ>ya z{X;ja+1F3H{FG7ktGa0FDDm^7*e%q#iAQg)>CPly#g{iRj_;aa5*HfQr6j^MYcc9G3D+)dL$XMd$K=tRje&k#R;yq=yvfCYi_hzY( zXByn1DKccsU6TOV@k|bavj`TLWJ2+^4x_!i(V}lz?dAfJU>LGI9?Zk_mk;CU8JACC7Se8{O?DC_E9q8e@m zy*ymKE;_pPe#v>tZ0Q(1NY%|D#J!vG;=_WUd|6DL!*3It10}@g(i_uZEx3Ym?!KO0 zMWoC8ip$!^%IVVT){rMG!ybB3&U{4-1d8UiC6OS0mz2kG2doA=b^=f)r>Rs?=ot}a5M7cWB7?p$Rtu-?@Be1amk|m zmL8$uCb^5@_?~TUDFtTXk$}i&SyO)LPUg1%@uwoShxqf`3(>J1iV|acD&1*e%D}SQ&zOcC}n@Tkz=a1Ll9w{vZk$(L=vb~F64=6Hwalk;Y0FMc^cXq> zQ5_M#A2CLWt zMQO_$>Xx5J;Jf?yrEa3>li*?MKv1QfN!=_`9VucPltYc}S7mv6J5c^N8=FM`BHUAC znpJAmsE}k&hb&kH!rS^EtO%gXt2cy*l`U+P7`g%`a2<2U)dO!&ek092r$6lXs`?qF zE4L-H9qLgLn#XEA07RScIFZtDkTBnO;UXBY-Cjka@_$TKkPm+`Q;R3+nd#TmgLdnG zy}RlB;lptwQiMqqn*_%9F{$)wm2%_C6nu50f4XvUqnS6l6l*_$?1VQ83~QEwZDTDr zhgtskJ_(2HOojG4F^!&&cpDzLP)ZM6H>pr(bxoX~j3At?bP!pd9}t;@?46ju(%nSU zCqunJNG?no1C@#UORvXbHy1xbr{kPukJEYC&5P}3Tn&J6b)Ae%3XXH%7{0(9CGMlN zVm{aFQAD+eYxU=hp++DDUG8 zy11RNn^e?cr;|cZR+sirsO9bCjK}@Cxwmj zjBo4;D91QMB#c(Sj(GLk*aQT%WQ|BRkPiYEo~q{eD?)Bn9_nON{3jn%`JJVNtdw(DA;xB)(gP-T-EX z$EkTQ0wA=%KWEOmtN`#^gtoQ51U1nL_hl{$h?03YeH96QpMFD5xu^gBzd+Xi>3KDO z-{CTP^qbgLPzaOG5U@MmGXC-*2?%Ha(%dI-``TJ>Oh`XDiYCPQ2fvC1`QHbJpuV%~ zfAUQ3@)UJUVgS$_eT0LL-Uw8H+YXl(md%}C<9CBgF<`K?46^}K#6%Q;v`$2wSFB!3ND=LGH?@s!M!Y;wYvpNz>dj%1^Zz`B8> zYY~9C0wA~;m-#gphq=A?3;ouA5NE~A9N77+o`C-4%H$I7+42_T-2-Zadyg5X?V!ZJ z`ah>x_HN_f`>-&NEL2`DE3en@*(#KjJNwSM1p2bS%Bh&{h`)O%E3E2{PB5CInmDx zWF;(Xh201Z@|3}+nm5eeEj{;KN<;&}r<}`QeR3k4rNO`F?sR=SqFbv`zucz-`^BWn z{)2fIf9U!`tp)=mX#{fATxXHbaSQmKgU+psCN8*+fJpk~!o1IfDxXu*vbAv)nF{pE z{ANuWkwBa_Z3`^5L&zdSlRUAsd|}5^0UOJH3>;36WZj2st1N&FbJzd>DL~2k*@~U0 z1Z=n8?>~}%K=i~3(6}x$Z>3qYaDYCVN0}(qI%uI8Sk$wJ0^3<>keuF*A8urt9OaYA z0T&f4xSK-&kl!waRpm2Evc-_EK5a290_hXeYS}3FCJX@g+Z{rywDCYofp0B-cGZ~M zJWs!{TRRZh+N)IvgvB&i*JY8kYrvI)_8Z#`MzZFPv0KC&mQEVitIwHdO-h^q0dtQ4 z%MifL%Zdrm94U{05hNZM{2eaIb78_2F`s?0>-b=|E3y2PgcYXYdh23>GeEL9NV{nX zA$TJ-!5JWJJ$$4qacsjPQrYZ1e$-OgtV~}g3Du_VG14Fu+*l*qnSrgD_AqY>bi=_0 z%81DhQdeV5QNumwtKDC|e!Y>|osqP;I@E#AY9U&j9)qezlUm4+&=)_)u~**P8+tk~ zX^I2=?7~ANw}Gnk2CW*)|AfsAmnh*3;$P~B7ZEx=RIR3KJzPzK&jqi&wV|uh+UlJF zAsK}aUnJ8W3M-bibi?>0+^jr0gS(qD<^mQc*OyAtyWN5}KCTpRb>MTJ!~d>TM3ilF zG-Qn1^j+u5KnUtKK1b?3N!yc_-(vHI#7wr;)aW$r+K=3#pQj0dxm`k#ULJWN&4~^} zXoz#7!Ao5xpaXO=J|GsGXM^U_3vo*j(6EzIXtqR^CoAUC)lySX*wtQiQ1DR1TjzIs zx^r7>Rvk0;TUPl7OV+pt-}bWTmC-WIMX^yT&233U!!yF8*_R^mnbkG2nM?rDw3R^5 zpK7gmw<%&9DwS!A^@N33@dOz*jc%;ysBF=q0%YdmQeaEL(&fU`HyuMT+}e*skBZ+v zPwlqtW>Lr-Xgo4#z*~(opGn(podCzbGXtuo*95l!3}0!kUh4J;l9Rw*bZx$RI-=%0 zeJ)@27%315vLV{Kkc3~J)g9_ta>T29BRNvoVeh%-(2&@9w^6mlt<8m?x~*EpzG!RG z#9F+RLtcQ++7|ILLGf#vl=AF31@ykzNy4>VL`{V5T4$9GKNmF!f-qp!mWqTVZbmXILixdyWAd4SFGwZwc_n&W``^C*(jrhvWu&X z%-~acsj^tSU&Cb|XuRY7d1&^I*8&uQcv;O!CViD;?Q355@dX#|`Sq85mqpU!nca2r zGPl-AOx)b06E{6N!TNCSfF&fhdAS-U_wQm%hp;mPgF4l8Wc1lt=P8gerA})YrJ7*dszE30a zs#F^sDnsqd0A#}kx|gf&+q(q1j~|&d)=j&g{pT7fUv|mGyUc3T zUtbs1Tq|nZ(G_>AyFn?>`S@%9kOh7hz|Y&&HxEiK-uF{?SKj&)=8=n?6Z<=2*#zWu zm6BTGr-%(S;C9h{PGIzW+%0g3V1tFby&{+lXL$M-H;VYGD>!O26V&kJB$O`ESD z;ufi)AaKI+loH5t>z8j+W)RxIsw-k2}(lEN|Xs22Hz++#{>%TF8IDj)&0 z$uY~wIniCVx-)!D%**&j8o_?A%=Dyy9&kxGjTpr|F z4T`@mO&vfqaiZTKsK*x-;-p)7@$*3|wSYCpEs?KK`&K(6`9~gjc==1nCYo=Xt+1*ZG*NpO+C9BWTgx@T>R>nGDGNJZK zgnfd*!``GA{cRA`qp!C5ewjhsun7~E`Q!8Fg+T$#c=y59+8HxN1pxiW%w=q6o&ed- z>w$9BjonYAv*~GG`Amocj9OG&*0zIDbtG#~^Eu_Gd0hd>YPH>#N$!0`7=K+A+X0vL z?;^wjtbFtI)Dq}Jy!mk-U`Y2I*^OskzZ^g$Ycs{$h~yC)rB6qylbrxkAZC32`!g5$ z6~nqslmk{)+WvJiNP-@Ie(!oNba5b`u^!=L9f+>PFAOl7+w5SuUbFFn|LoiPXtzMf zl`4Qv0H8p!QOvMwCV*q*V@F(C{rr2D=Ob9T?N1D4S;JzRY8W%40aWwzm;1r1vrM|4 z<#|)e5!dlE6&|0%`u~{GOd(v16nydJzs2Ne*3T3b_f00*W^{pM%bVbwpZD^BdXNSe zdK$);`_RT;T(4$pS}vq7?)S^(A@=+&fs$X?SdpIWCq?h1L4z_Lr|r~GLqDr=bDZSd z_a5Ju#;((cDJvUjKbdg3gm|^3Jj32PDSVd;9cC8bL1TL1p04BIYl_%Y9*y9#vwCjJA9?|qv9XMUh0(~iTXmmOZiyz@ zw&j$5>GCrBV7lVxT?@X7%qzIH)PjHPCfcKayoSvUKm<#J@P1)dzT=Th5!l+>HWH?A ztH0pi=^EnSa=Oeih^cqSm+PUl3qcm2ENu@C0ER535<$umTxb!70Toti|ACCsVN6wq zSOWhv1N&f>!9sy{@kTQV@n5_~(?j)6p^jyytM~@hP0`?eOb$}PZ7dB1*yU%Q5G${j z>C-g0puTO#TG6ymU0q$@sqUuOi!oU7AM4*Cy_ZJmc?Z-svZpf!)~SL9`IlqVQ$wQx z<9S?W?E#X=ml#}`y^v-$mJ<7VW5Hva)VirSnj(<0?nP)iHS;_^)NdipKRp8_Kc2B~ z2?CV9x}kx8FUZ}Ry|;c0Kem8h9(TkYM@doASvcz5w69Yh|DFTQC0X+`pOdygzzs{? zENi8Ox#htnR9-?cKKF3(KtiIwHm2Op{B~j%tx@M&ryx5$yno-Nen-{9exFVU^ zl%|4RP!5GJr^wMT*xaMACjDZ3iH?Us3W7;EuLVt|jbclL{M1)8>qt-Ym%5whQx>O} z*WrPLreJsz>8)RW?h-0JSuI^n+-(posyDi-7*#u2=DiiyO(HMABS}_OOTnWH^iVm0 z7P7Yc8ZOtH(HQfdUI%H4G44vB)lH|75R1iU`C%=*uWY*f+-S6 z@-=);?NAX6K}6QojLAw1@x^&VDm`&i=_t<&2sOAnZZ-K1ykOGCxtqmCB>6z=>d;`Q zlFvrXwq2j;Vfrpinud!+kDW^MnMyl?t3mU?iaL>arobkIvEkiG33aX$Ft5p#RrecR z`>{01tBuFWQ>{#!V?cHR;!ugTd6M7Cgpv}%Gj?2UD~(NCB?y*Xln%)F6dCplxm6mL zjlR}(^xoF#7oOF~GRpAr=7AQR15(}vpP!fBj(cxL)PMPUBn>e2XVgWS+Go2DP&XS5 zjhbQhmMu---F+8+tR^kpKY;WNjRBY-sA9>Zu9SqMZ%5w|_DI~MA~B)*&SUZtpOjmp z7U4Y0?2{i&Zx?q6E+{|<@Y(oZS6=Fn9WK&{e0OUlIkj?d|H4%LyiR+Q`BM~Mv*{z3 z=5ARm0`DJn<}ZK)0p&Ugx2)DZ3r0bsw`6n<%kWM~SjD2S3!5#|*@9Ubk*|o=iFGrn6Ej$-0JQn?) zHe*A&zo3GC_YZt zvHZ4k15-$_^R!rg>$$GOKqwr*|KqKG)z)N0q(=FxtsCRgRH)efZqFUc~xt}VO8 zh>F9DQD?Z$<@3`Eq(1)8(A?=XwBtWH&Lj`qw_)%bLF$=U$FcALHNXaXX={}~+`gh;I_nqhgbYb2oC;E~r!+*8YFR!eu zZ2dgu_lB)j66~nFH)#Vu=4lW}zH0#PQ(+$j%n3*1}w)Vjr=%{uuoi}TdVw-E`R2=JBtkFa9fpIc@ z8NdG@pn{;w^639qVf~NMm|t$dW;X2_DESh(o2)z(xG2pT&ekOhFPAeQA=LtUTZs`WbhDqHzba;tn#8zCerI z#cx0hKe&P!#%Xxzu)5i#=OechEz$hLXL`1E1UIvd%6-(RK)j%hSVvEn30^3!<$pPT14rUpcj&ziEJFIF2#x-yN z##?`{iT?u7ng!5+JACO2>Y9z11$T>1>%tZ^zTJBL8So~f3k!i({dmxfF)e_)QUW@r z1>92M3mnthbXpJC8s5YYA7}v&X!){U{Q+BmdGkXE>F_W7(iaI6?K8pkVbrXyQ^rx3+&uV)mTerKd59xPflhkMKH zUEIKBdB7zJ8=rD*!7(EMT)`@=?(;@(`L_kJphW(7o%Hv)_$LXn_uoHM`0-QdTG_^q zH;Tp2^u2=9&v^n@M8Z0J(Xztoem;s^D<3^yWyAOQc)$PSV{d^2?Z8!wmw^Momw;tX zW?=fPtqGY?`?7Mg{S}mSBQNc=ssDd-%gxW9o~zl}@3jlI7l6ib^U7-O<8rK_Q~MP2 zAKq9DTEkfwL9-#Zf4Zm z25rCdECZ)SP!8^uv)u(8i`64(nQqX6R@b?ei`2F)?QTjqcAfjP{XJ&x&(9U@#6SK7 zF0EtUQJM^&1bDTh^wHXv*P`>!wuXG)__NSDo_~AKe%09ezh8m#o^~}q%C#?WVNM+g zXPjjXEd|Xj*KGi@yXis*wL88-TmRp>l0b5=zKgf{Wfdt@eN-nf}30w%xdh6}>`@r>N;N>Xh z_bQV0E`a9RfRlLtzHQ%oPa{AU=AX%&CJWxeNAIC|$aju~q5pzjN#kQIQdgjRx*85% zDg2$g`}B$!pU@YDdKc76#51-PwETjukT;kC>|V=mzke~-@2w-m6T3dD31e9Q+ujkpqX)b!$kWx&Wt~$(699L{K8gSU literal 0 HcmV?d00001 diff --git a/examples/argo/config/app.yaml b/examples/argo/config/app.yaml new file mode 100644 index 0000000000..d2c4a3b5e7 --- /dev/null +++ b/examples/argo/config/app.yaml @@ -0,0 +1,18 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: podtato-head + namespace: argocd +spec: + project: default + source: + repoURL: https://github.com/thschue/lifecycle-controller + targetRevision: main + path: examples/podtatohead-deployment + destination: + server: https://kubernetes.default.svc + namespace: podtato-kubectl + syncPolicy: + automated: + selfHeal: true + prune: true diff --git a/examples/argo/podtatohead/.gitignore b/examples/argo/podtatohead/.gitignore deleted file mode 100644 index 2a082b43fe..0000000000 --- a/examples/argo/podtatohead/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/slack-secret.yaml diff --git a/examples/argo/podtatohead/README.md b/examples/argo/podtatohead/README.md deleted file mode 100644 index e4c147d758..0000000000 --- a/examples/argo/podtatohead/README.md +++ /dev/null @@ -1,5 +0,0 @@ -### Create Secret for Slack here - -``` -kubectl create secret generic slack-notification --from-literal=SECURE_DATA='{"slack_hook":"","text":"Deployed PodTatoHead Application"}' -n podtato-kubectl -oyaml --dry-run > slack-secret.yaml -``` diff --git a/examples/argo/podtatohead/app.yaml b/examples/argo/podtatohead/app.yaml deleted file mode 100644 index 5b3fc5d21d..0000000000 --- a/examples/argo/podtatohead/app.yaml +++ /dev/null @@ -1,22 +0,0 @@ -apiVersion: lifecycle.keptn.sh/v1alpha1 -kind: KeptnApp -metadata: - name: podtato-head - namespace: podtato-kubectl -spec: - version: "1.3" - workloads: - - name: podtato-head-left-arm - version: 0.2.7 - - name: podtato-head-left-leg - version: 0.2.7 - - name: podtato-head-entry - version: 0.2.7 - - name: podtato-head-right-arm - version: 0.1.0 - - name: podtato-head-left-arm - version: 0.2.7 - - name: podtato-head-hat - version: 0.1.0 - postDeploymentTasks: - - post-deployment-hello diff --git a/examples/argo/podtatohead/check_entry.yaml b/examples/argo/podtatohead/check_entry.yaml deleted file mode 100644 index 958540ec07..0000000000 --- a/examples/argo/podtatohead/check_entry.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: lifecycle.keptn.sh/v1alpha1 -kind: KeptnTaskDefinition -metadata: - name: check-entry-service - namespace: podtato-kubectl -spec: - function: - httpRef: - url: https://raw.githubusercontent.com/keptn-sandbox/lifecycle-controller/main/functions-runtime/samples/ts/http.ts - parameters: - map: - url: http://podtato-head-entry.podtato-kubectl.svc.cluster.local:9000 diff --git a/examples/argo/podtatohead/manifest.yaml b/examples/argo/podtatohead/manifest.yaml deleted file mode 100644 index 558a6e6de2..0000000000 --- a/examples/argo/podtatohead/manifest.yaml +++ /dev/null @@ -1,301 +0,0 @@ ---- -apiVersion: v1 -kind: Namespace -metadata: - name: podtato-kubectl - annotations: - keptn.sh/lifecycle-controller: "enabled" ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: podtato-head-entry - namespace: podtato-kubectl - labels: - app: podtato-head -spec: - selector: - matchLabels: - component: podtato-head-entry - template: - metadata: - labels: - component: podtato-head-entry - keptn.sh/app: podtato-head - keptn.sh/workload: podtato-head-entry - spec: - terminationGracePeriodSeconds: 5 - initContainers: - - name: init-myservice - image: busybox:1.28 - command: ['sh', '-c', 'sleep 30'] - containers: - - name: server - image: ghcr.io/podtato-head/entry:0.2.7 - imagePullPolicy: Always - ports: - - containerPort: 9000 - env: - - name: PODTATO_PORT - value: "9000" ---- -apiVersion: v1 -kind: Service -metadata: - name: podtato-head-entry - namespace: podtato-kubectl - labels: - app: podtato-head -spec: - selector: - component: podtato-head-entry - ports: - - name: http - port: 9000 - protocol: TCP - targetPort: 9000 - type: LoadBalancer - # change to NodePort if no LoadBalancer controller is available - # type: NodePort ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: podtato-head-hat - namespace: podtato-kubectl - labels: - app: podtato-head -spec: - selector: - matchLabels: - component: podtato-head-hat - template: - metadata: - labels: - component: podtato-head-hat - app.kubernetes.io/version: 0.1.0 - annotations: - app.kubernetes.io/part-of: podtato-head - app.kubernetes.io/name: podtato-head-hat - keptn.sh/pre-deployment-tasks: check-entry-service - spec: - terminationGracePeriodSeconds: 5 - containers: - - name: server - image: ghcr.io/podtato-head/hat:0.2.7 - imagePullPolicy: Always - ports: - - containerPort: 9000 - env: - - name: PODTATO_PORT - value: "9000" ---- -apiVersion: v1 -kind: Service -metadata: - name: podtato-head-hat - namespace: podtato-kubectl - labels: - app: podtato-head -spec: - selector: - component: podtato-head-hat - ports: - - name: http - port: 9001 - protocol: TCP - targetPort: 9000 - type: ClusterIP ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: podtato-head-left-leg - namespace: podtato-kubectl - labels: - app: podtato-head -spec: - selector: - matchLabels: - component: podtato-head-left-leg - template: - metadata: - labels: - component: podtato-head-left-leg - annotations: - app.kubernetes.io/part-of: podtato-head - app.kubernetes.io/name: podtato-head-left-leg - keptn.sh/pre-deployment-tasks: check-entry-service - spec: - terminationGracePeriodSeconds: 5 - containers: - - name: server - image: ghcr.io/podtato-head/left-leg:0.2.7 - imagePullPolicy: Always - ports: - - containerPort: 9000 - env: - - name: PODTATO_PORT - value: "9000" ---- -apiVersion: v1 -kind: Service -metadata: - name: podtato-head-left-leg - namespace: podtato-kubectl - labels: - app: podtato-head -spec: - selector: - component: podtato-head-left-leg - ports: - - name: http - port: 9002 - protocol: TCP - targetPort: 9000 - type: ClusterIP ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: podtato-head-left-arm - namespace: podtato-kubectl - labels: - app: podtato-head -spec: - selector: - matchLabels: - component: podtato-head-left-arm - template: - metadata: - labels: - component: podtato-head-left-arm - app.kubernetes.io/part-of: podtato-head - annotations: - app.kubernetes.io/name: podtato-head-left-arm - keptn.sh/pre-deployment-tasks: check-entry-service - spec: - terminationGracePeriodSeconds: 5 - containers: - - name: server - image: ghcr.io/podtato-head/left-arm:0.2.7 - imagePullPolicy: Always - ports: - - containerPort: 9000 - env: - - name: PODTATO_PORT - value: "9000" ---- -apiVersion: v1 -kind: Service -metadata: - name: podtato-head-left-arm - namespace: podtato-kubectl - labels: - app: podtato-head -spec: - selector: - component: podtato-head-left-arm - ports: - - name: http - port: 9003 - protocol: TCP - targetPort: 9000 - type: ClusterIP ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: podtato-head-right-leg - namespace: podtato-kubectl - labels: - app: podtato-head -spec: - selector: - matchLabels: - component: podtato-head-right-leg - template: - metadata: - labels: - component: podtato-head-right-leg - annotations: - app.kubernetes.io/part-of: podtato-head - app.kubernetes.io/name: podtato-head-right-leg - keptn.sh/pre-deployment-tasks: check-entry-service - spec: - terminationGracePeriodSeconds: 5 - containers: - - name: server - image: ghcr.io/podtato-head/right-leg:0.2.7 - imagePullPolicy: Always - ports: - - containerPort: 9000 - env: - - name: PODTATO_PORT - value: "9000" ---- -apiVersion: v1 -kind: Service -metadata: - name: podtato-head-right-leg - namespace: podtato-kubectl - labels: - app: podtato-head -spec: - selector: - component: podtato-head-right-leg - ports: - - name: http - port: 9004 - protocol: TCP - targetPort: 9000 - type: ClusterIP ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: podtato-head-right-arm - namespace: podtato-kubectl - labels: - app: podtato-head -spec: - selector: - matchLabels: - component: podtato-head-right-arm - template: - metadata: - labels: - component: podtato-head-right-arm - annotations: - app.kubernetes.io/part-of: podtato-head - keptn.sh/workload: podtato-head-right-arm - keptn.sh/version: 0.1.0 - keptn.sh/pre-deployment-tasks: check-entry-service - spec: - terminationGracePeriodSeconds: 5 - containers: - - name: server - image: ghcr.io/podtato-head/right-arm:0.2.7 - imagePullPolicy: Always - ports: - - containerPort: 9000 - env: - - name: PODTATO_PORT - value: "9000" ---- -apiVersion: v1 -kind: Service -metadata: - name: podtato-head-right-arm - namespace: podtato-kubectl - labels: - app: podtato-head -spec: - selector: - component: podtato-head-right-arm - ports: - - name: http - port: 9005 - protocol: TCP - targetPort: 9000 - type: ClusterIP diff --git a/examples/argo/podtatohead/post-deployment-tasks.yaml b/examples/argo/podtatohead/post-deployment-tasks.yaml deleted file mode 100644 index 8e263a2c0d..0000000000 --- a/examples/argo/podtatohead/post-deployment-tasks.yaml +++ /dev/null @@ -1,25 +0,0 @@ -apiVersion: lifecycle.keptn.sh/v1alpha1 -kind: KeptnTaskDefinition -metadata: - name: post-deployment-hello - namespace: podtato-kubectl -spec: - function: - inline: - code: | - let text = Deno.env.get("SECURE_DATA"); - let data; - if (text != undefined) { - data = JSON.parse(text); - } - - const body = `{"text": "${data.text}"}`; - console.log(body) - let resp = await fetch("https://hooks.slack.com/services/" + data.slack_hook, { - method: "POST", - body, - }); - - console.log(resp) - secureParameters: - secret: slack-notification diff --git a/examples/podtatohead-deployment/app.yaml b/examples/podtatohead-deployment/app.yaml index 15900eda61..5b3fc5d21d 100644 --- a/examples/podtatohead-deployment/app.yaml +++ b/examples/podtatohead-deployment/app.yaml @@ -7,16 +7,16 @@ spec: version: "1.3" workloads: - name: podtato-head-left-arm - version: 0.1.0 + version: 0.2.7 - name: podtato-head-left-leg - version: 0.1.0 + version: 0.2.7 - name: podtato-head-entry - version: 0.1.0 + version: 0.2.7 - name: podtato-head-right-arm version: 0.1.0 - name: podtato-head-left-arm - version: 0.1.0 + version: 0.2.7 - name: podtato-head-hat - version: 0.1.0 + version: 0.1.0 postDeploymentTasks: - post-deployment-hello diff --git a/examples/podtatohead-deployment/manifest.yaml b/examples/podtatohead-deployment/manifest.yaml index cf6c15a2d2..91f7512173 100644 --- a/examples/podtatohead-deployment/manifest.yaml +++ b/examples/podtatohead-deployment/manifest.yaml @@ -1,3 +1,4 @@ +--- apiVersion: v1 kind: Namespace metadata: @@ -20,11 +21,8 @@ spec: metadata: labels: component: podtato-head-entry - annotations: keptn.sh/app: podtato-head keptn.sh/workload: podtato-head-entry - keptn.sh/version: 0.1.0 - keptn.sh/post-deployment-tasks: post-deployment-hello spec: terminationGracePeriodSeconds: 5 initContainers: @@ -33,7 +31,7 @@ spec: command: ['sh', '-c', 'sleep 30'] containers: - name: server - image: ghcr.io/podtato-head/entry:latest + image: ghcr.io/podtato-head/entry:0.2.7 imagePullPolicy: Always ports: - containerPort: 9000 @@ -55,8 +53,9 @@ spec: - name: http port: 9000 protocol: TCP + nodePort: 30900 targetPort: 9000 - type: LoadBalancer + type: NodePort # change to NodePort if no LoadBalancer controller is available # type: NodePort --- @@ -75,16 +74,16 @@ spec: metadata: labels: component: podtato-head-hat - keptn.sh/pre-deployment-tasks: check-entry-service + app.kubernetes.io/version: 0.1.0 annotations: - keptn.sh/app: podtato-head - keptn.sh/workload: podtato-head-hat - keptn.sh/version: 0.1.0 + app.kubernetes.io/part-of: podtato-head + app.kubernetes.io/name: podtato-head-hat + keptn.sh/pre-deployment-tasks: check-entry-service spec: terminationGracePeriodSeconds: 5 containers: - name: server - image: ghcr.io/podtato-head/hat:latest + image: ghcr.io/podtato-head/hat:0.2.7 imagePullPolicy: Always ports: - containerPort: 9000 @@ -125,15 +124,14 @@ spec: labels: component: podtato-head-left-leg annotations: - keptn.sh/app: podtato-head - keptn.sh/workload: podtato-head-left-leg - keptn.sh/version: 0.1.0 + app.kubernetes.io/part-of: podtato-head + app.kubernetes.io/name: podtato-head-left-leg keptn.sh/pre-deployment-tasks: check-entry-service spec: terminationGracePeriodSeconds: 5 containers: - name: server - image: ghcr.io/podtato-head/left-leg:latest + image: ghcr.io/podtato-head/left-leg:0.2.7 imagePullPolicy: Always ports: - containerPort: 9000 @@ -173,16 +171,15 @@ spec: metadata: labels: component: podtato-head-left-arm + app.kubernetes.io/part-of: podtato-head annotations: - keptn.sh/app: podtato-head - keptn.sh/workload: podtato-head-left-arm - keptn.sh/version: 0.1.0 + app.kubernetes.io/name: podtato-head-left-arm keptn.sh/pre-deployment-tasks: check-entry-service spec: terminationGracePeriodSeconds: 5 containers: - name: server - image: ghcr.io/podtato-head/left-arm:latest + image: ghcr.io/podtato-head/left-arm:0.2.7 imagePullPolicy: Always ports: - containerPort: 9000 @@ -223,15 +220,14 @@ spec: labels: component: podtato-head-right-leg annotations: - keptn.sh/app: podtato-head - keptn.sh/workload: podtato-head-right-leg - keptn.sh/version: 0.1.0 + app.kubernetes.io/part-of: podtato-head + app.kubernetes.io/name: podtato-head-right-leg keptn.sh/pre-deployment-tasks: check-entry-service spec: terminationGracePeriodSeconds: 5 containers: - name: server - image: ghcr.io/podtato-head/right-leg:latest + image: ghcr.io/podtato-head/right-leg:0.2.7 imagePullPolicy: Always ports: - containerPort: 9000 @@ -272,7 +268,7 @@ spec: labels: component: podtato-head-right-arm annotations: - keptn.sh/app: podtato-head + app.kubernetes.io/part-of: podtato-head keptn.sh/workload: podtato-head-right-arm keptn.sh/version: 0.1.0 keptn.sh/pre-deployment-tasks: check-entry-service @@ -280,7 +276,7 @@ spec: terminationGracePeriodSeconds: 5 containers: - name: server - image: ghcr.io/podtato-head/right-arm:latest + image: ghcr.io/podtato-head/right-arm:0.2.7 imagePullPolicy: Always ports: - containerPort: 9000 diff --git a/examples/podtatohead-deployment/post-deployment-tasks.yaml b/examples/podtatohead-deployment/post-deployment-tasks.yaml index 1628d22b3d..90b56d71d1 100644 --- a/examples/podtatohead-deployment/post-deployment-tasks.yaml +++ b/examples/podtatohead-deployment/post-deployment-tasks.yaml @@ -2,43 +2,8 @@ apiVersion: lifecycle.keptn.sh/v1alpha1 kind: KeptnTaskDefinition metadata: name: post-deployment-hello - namespace: podtato-kubectl spec: function: inline: code: | - let text = Deno.env.get("SECURE_DATA"); - let context = Deno.env.get("CONTEXT"); - let data; - let body; - let contextdata; - - if (text != undefined) { - data = JSON.parse(text); - } - - if (context != undefined) { - contextdata = JSON.parse(context); - } - - if (contextdata.objectType == "Application") { - body = `{ - "text": "Application ${contextdata.appName}, Version ${contextdata.appVersion} has been deployed" - }` - } - - if (contextdata.objectType == "Workload") { - body = `{ - "text": "Workload ${contextdata.workloadName}, Version ${contextdata.workloadVersion} in App ${contextdata.appName} has been deployed" - }` - } - - console.log(body) - let resp = await fetch("https://hooks.slack.com/services/" + data.slack_hook, { - method: "POST", - body, - }); - - console.log(resp) - secureParameters: - secret: slack-notification + console.log("Post-Deployment Task has been executed"); \ No newline at end of file diff --git a/functions-runtime/samples/ts/slack.ts b/functions-runtime/samples/ts/slack.ts index 453839155c..7030ddc4f4 100644 --- a/functions-runtime/samples/ts/slack.ts +++ b/functions-runtime/samples/ts/slack.ts @@ -1,10 +1,28 @@ let text = Deno.env.get("SECURE_DATA"); +let context = Deno.env.get("CONTEXT"); let data; +let body; +let contextdata; + if (text != undefined) { data = JSON.parse(text); } -const body = `{"text": "${data.text}"}`; +if (context != undefined) { + contextdata = JSON.parse(context); +} + +if (contextdata.objectType == "Application") { + body = `{ + "text": "Application ${contextdata.appName}, Version ${contextdata.appVersion} has been deployed" + }` +} + +if (contextdata.objectType == "Workload") { + body = `{ + "text": "Workload ${contextdata.workloadName}, Version ${contextdata.workloadVersion} in App ${contextdata.appName} has been deployed" + }` +} console.log(body) let resp = await fetch("https://hooks.slack.com/services/" + data.slack_hook, {