From 61f1405db08ba0042688a8aee0cd8c2e5b765a45 Mon Sep 17 00:00:00 2001 From: Deon Taljaard Date: Tue, 4 Aug 2026 11:38:47 +0200 Subject: [PATCH] STAC-25471: move notification-operator to private registry --- stackpacks/notification-operator/README.md | 109 ------------------ .../controller-reconcile-errors.md.hbs | 5 - .../notification-disabled.md.hbs | 14 --- .../notification-not-synced.md.hbs | 11 -- .../resources/deprovisioning.md | 2 - .../notification-operator/resources/error.md | 2 - .../resources/installed.md | 2 - .../notification-operator/resources/logo.png | Bin 26935 -> 0 bytes .../resources/notinstalled.md | 2 - .../resources/overview.md | 4 - .../resources/provisioning.md | 2 - .../resources/waitingfordata.md | 2 - .../settings/monitors.sty | 58 ---------- .../settings/presentation.sty | 45 -------- .../notification-operator/stackpack.yaml | 25 ---- 15 files changed, 283 deletions(-) delete mode 100644 stackpacks/notification-operator/README.md delete mode 100644 stackpacks/notification-operator/includes/remediation-hints/controller-reconcile-errors.md.hbs delete mode 100644 stackpacks/notification-operator/includes/remediation-hints/notification-disabled.md.hbs delete mode 100644 stackpacks/notification-operator/includes/remediation-hints/notification-not-synced.md.hbs delete mode 100644 stackpacks/notification-operator/resources/deprovisioning.md delete mode 100644 stackpacks/notification-operator/resources/error.md delete mode 100644 stackpacks/notification-operator/resources/installed.md delete mode 100644 stackpacks/notification-operator/resources/logo.png delete mode 100644 stackpacks/notification-operator/resources/notinstalled.md delete mode 100644 stackpacks/notification-operator/resources/overview.md delete mode 100644 stackpacks/notification-operator/resources/provisioning.md delete mode 100644 stackpacks/notification-operator/resources/waitingfordata.md delete mode 100644 stackpacks/notification-operator/settings/monitors.sty delete mode 100644 stackpacks/notification-operator/settings/presentation.sty delete mode 100644 stackpacks/notification-operator/stackpack.yaml diff --git a/stackpacks/notification-operator/README.md b/stackpacks/notification-operator/README.md deleted file mode 100644 index 9f6f904..0000000 --- a/stackpacks/notification-operator/README.md +++ /dev/null @@ -1,109 +0,0 @@ -# Notification Operator StackPack - -This StackPack provides monitoring and metrics for the Notification Operator, which manages notifications in SUSE Observability through Kubernetes Custom Resources (CRs). - -## What's Included - -This StackPack provides: -- **Monitors**: Health checks for controller reconciliation errors, notification sync status, and disabled notifications -- **Metric Bindings**: Charts for reconciliation rates and notification status tracking -- **Remediation Hints**: Guided troubleshooting for common notification operator issues - -## Project Structure - -``` -notification-operator/ -├── README.md -├── provisioning/ -│ ├── metricbindings.sty # Notification operator metric charts -│ ├── monitors.sty # Health monitors for notification operator -│ ├── remediation-hints/ # Troubleshooting guides -│ │ ├── controller-reconcile-errors.md.hbs -│ │ ├── notification-disabled.md.hbs -│ │ └── notification-not-synced.md.hbs -│ └── stackpack.sty # Main provisioning template -├── resources/ # UI resources and documentation -│ ├── deprovisioning.md -│ ├── error.md -│ ├── installed.md -│ ├── logo.png -│ ├── notinstalled.md -│ ├── overview.md -│ ├── provisioning.md -│ └── waitingfordata.md -└── stackpack.conf # StackPack configuration -``` - - -## Prerequisites - -The notification operator must be deployed in your Kubernetes cluster with the following requirements: -- The notification operator pod must be labeled with `app.kubernetes.io/name=notification-operator` -- The operator must expose Prometheus metrics on the standard `/metrics` endpoint -- SUSE Observability must have access to scrape metrics from the notification operator pod - -## Monitors Included - -This StackPack provides the following monitors: - -### Controller Runtime Reconcile Errors -- **Purpose**: Detects errors in the controller runtime reconcile process -- **Metric**: `increase(notification_operator_controller_runtime_reconcile{result="error"}[10m])` -- **Threshold**: Any increase in errors triggers a CRITICAL alert -- **Remediation**: Includes troubleshooting hints for common reconciliation issues - -### Enabled Notification Resources Not Synced -- **Purpose**: Identifies enabled notifications that are not properly synced -- **Metric**: `sum(notification_operator_suse_observability_notification_enabled == 1 and notification_operator_suse_observability_notification_synced == 0)` -- **Threshold**: Any unsynced enabled notifications trigger a CRITICAL alert -- **Remediation**: Provides guidance for resolving synchronization issues - -### Notification Disabled -- **Purpose**: Tracks disabled SUSE Observability notifications -- **Metric**: `sum(notification_operator_suse_observability_notification_enabled == 0)` -- **Threshold**: Any disabled notifications trigger a DEVIATING alert -- **Remediation**: Explains why notifications might be disabled and how to re-enable them - -## Metric Bindings Included - -### Total Reconciliations per Controller/Cluster -- **Chart Type**: Line chart -- **Metric**: `sum(increase(notification_operator_controller_runtime_reconcile[1m])) by (cluster_name, result)` -- **Purpose**: Shows reconciliation activity and success/failure rates over time - -### Notification Sync Status -- **Chart Type**: Line chart -- **Metric**: `sum(notification_operator_suse_observability_notification_synced) by (cluster_name, name)` -- **Purpose**: Shows whether notifications are properly synced with SUSE Observability - -### Notification Enabled Status -- **Chart Type**: Line chart -- **Metric**: `sum(notification_operator_suse_observability_notification_enabled) by (cluster_name, name)` -- **Purpose**: Shows whether notifications are enabled or disabled - -## Installation - -1. **Deploy the Notification Operator** in your Kubernetes cluster following the operator's installation guide -2. **Ensure proper labeling** of the notification operator pod with `app.kubernetes.io/name=notification-operator` -3. **Install this StackPack** through the SUSE Observability UI or CLI -4. **Verify metrics collection** by checking that the notification operator metrics are being scraped - -## Troubleshooting - -If monitors are not triggering or metrics are not appearing: - -1. **Check pod labeling**: Verify the notification operator pod has the correct label -2. **Verify metrics endpoint**: Ensure the operator exposes metrics on `/metrics` -3. **Check network access**: Confirm SUSE Observability can reach the operator pod -4. **Review logs**: Check both notification operator and SUSE Observability logs for errors - -## Development and Customization - -To modify this StackPack: - -1. **Edit monitors**: Modify `provisioning/monitors.sty` to adjust thresholds or add new monitors -2. **Update metric bindings**: Edit `provisioning/metricbindings.sty` to create custom charts -3. **Add remediation hints**: Create new `.md.hbs` files in `provisioning/remediation-hints/` -4. **Package and test**: Use `sbt notification-operator/package` to build the StackPack - -For more details on StackPack development, see the main repository documentation. diff --git a/stackpacks/notification-operator/includes/remediation-hints/controller-reconcile-errors.md.hbs b/stackpacks/notification-operator/includes/remediation-hints/controller-reconcile-errors.md.hbs deleted file mode 100644 index ea9afd5..0000000 --- a/stackpacks/notification-operator/includes/remediation-hints/controller-reconcile-errors.md.hbs +++ /dev/null @@ -1,5 +0,0 @@ -The possible causes for this issue are: -- Incorrect configuration of the Notifications. -- Issues with SUSE Observability instance. - -1. Inspect the [Logs](/#/components/{{ componentUrnForUrl }}#logs) for the error messages. diff --git a/stackpacks/notification-operator/includes/remediation-hints/notification-disabled.md.hbs b/stackpacks/notification-operator/includes/remediation-hints/notification-disabled.md.hbs deleted file mode 100644 index e6452a4..0000000 --- a/stackpacks/notification-operator/includes/remediation-hints/notification-disabled.md.hbs +++ /dev/null @@ -1,14 +0,0 @@ -Notification Details: - - cluster: {{ labels.cluster_name }} - - notification: {{ labels.notification_name }} - - notification CR name: {{ labels.name }} - - notification CR namespace: {{ labels.namespace }} - -The SUSE Observability Notification can be disabled for the following reasons: -- By Deployment pipeline to avoid false positive alerts during redeployments. - -The possible causes for this issue are: -- Deployment pipeline using this Notification has not been completed yet. -- Deployment pipeline using this Notification failed to complete or delete the notification. - -Check the Deployment pipeline to find out more. diff --git a/stackpacks/notification-operator/includes/remediation-hints/notification-not-synced.md.hbs b/stackpacks/notification-operator/includes/remediation-hints/notification-not-synced.md.hbs deleted file mode 100644 index 4f2f74d..0000000 --- a/stackpacks/notification-operator/includes/remediation-hints/notification-not-synced.md.hbs +++ /dev/null @@ -1,11 +0,0 @@ -Notification Details: - - cluster: {{ labels.cluster_name }} - - notification: {{ labels.notification_name }} - - notification CR name: {{ labels.name }} - - notification CR namespace: {{ labels.namespace }} - -The possible causes for this issue are: -- Incorrect configuration of the Notifications. -- Issues with SUSE Observability instance. - -1. Inspect the [Logs](/#/components/{{ componentUrnForUrl }}#logs) for the error messages. diff --git a/stackpacks/notification-operator/resources/deprovisioning.md b/stackpacks/notification-operator/resources/deprovisioning.md deleted file mode 100644 index 1de3476..0000000 --- a/stackpacks/notification-operator/resources/deprovisioning.md +++ /dev/null @@ -1,2 +0,0 @@ -# notification-operator Stackpack -Information the user is going to see during the uninstallation process. diff --git a/stackpacks/notification-operator/resources/error.md b/stackpacks/notification-operator/resources/error.md deleted file mode 100644 index 26e43c1..0000000 --- a/stackpacks/notification-operator/resources/error.md +++ /dev/null @@ -1,2 +0,0 @@ -# notification-operator Stackpack -Error message to show when an error occurred during provisioning of the StackPack. diff --git a/stackpacks/notification-operator/resources/installed.md b/stackpacks/notification-operator/resources/installed.md deleted file mode 100644 index 385222f..0000000 --- a/stackpacks/notification-operator/resources/installed.md +++ /dev/null @@ -1,2 +0,0 @@ -# notification-operator Stackpack -The Stackpack has been successfully installed and is ready to use. The monitors and metrics are added to the Notification Operator's pod. diff --git a/stackpacks/notification-operator/resources/logo.png b/stackpacks/notification-operator/resources/logo.png deleted file mode 100644 index bdab9e42f6b986b80b4cc0de297b09e70a830a59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26935 zcmce-WmFv7x+sbhJOP4xa1R9c;BE=-F5Ngy;|_r!0TLuQ1b1uP-Cdf-o!}ar%UXNC zebznioH5?7S3RocSD#DGS#wrZN2saDVxg0u!@SBR*iuK{N?93>`2~IjhXjuchxh`)zx?3fN#Op{_5#6)!jt|7mI=3oL;5#f<)!^= zlY80!;`>*Nm<9h|TCx!S!yS`__+Ri}V!B9&d@l`}lbo(A92^GTUpqY9&orW!m?CUH z>A2}AD+!uA0@+P19L+4*!9b_Kq~L_Xf-fM@(#@0#3~$<9e5icUpECG28hC8!}K^KbE&GZ7jaH#a9i4h|0w4|Wf3 zc1IU$j`sor0vw!N99&#%FC1*Ho(^uNU^WNWcmGoI|LBpjbTxOeb#k+HbfEf6uc?`% zyPF6N&0mK8v;E6YH(RU!vgF|U@33A1VBp~5$ASOL{r`~v zrQq)*|0{OkzakUV)v$DR1i1f|BT+ss;lIQEzmWfxtbYmU{7(Y^ME-XHRTo>!m-_r| z;r+i2{1f*N{(odkP|DWY*3A^4>FDlaZYg66u>9odWGVXZ9GipK|C441OAl9bM+-|= z4vT+@xc)8T_QKBL=3;8=U}+%%uy%B@b+ZB5nk!pc*qRFevo8OOrT;H({r}_A-&X$N z&R>^OwBDtU&`^f$Ujj3o%?S) zy8o-4e^CA*`JanUP}1ck-)^GHrWTe|9xoN3l67>n23S%_$P07)zqtObL73yO&iaqe z`>&DVZ|uv^Ac`)`@tUmG30>=t_j50H!naxDbBMxcfN_@-B* z=oj-3=5Xx_BkT*`Rnhwl*OTY=c))m>*Po1zN`3mB66&!&fz$SBn;<0Ko_ZPuLc?P@D=Oi%h4hLls$JxeE&$`J8JX-}wW`X1{Bjx8&p$2e-$40VZlTr+-#cvf!P zbYh}lV8V^?YZX#Ni(pv>I~>eEZE(jt6^aTF$s=-Hg0}-?gW+bD#r7Bkw!8jn1Ji7%KYO7)#OycbXepI4qkDuderop=yJHIlDE`Vx$Cy#V?mf zfXhz+73YYWEyBkMFVd(T)U$FeHJNko!O)-{paIr1#f2Iqp4Bk_IVb}$3%b(D=#OR& zNFWxRm+)}A4}w~+-`6D=WDo>r(kZCg0o_^(YnB;{k6l{qXQ2b1q8aiqwRS@#$L8At z-{NjpiO9&oAtxmP-tP$qMZy(PO4OUs-Ou2x;M&${E|1UQHm+b_1}%ntZye^{mmU0Z zvaa~mnE33WjNXpP@Z2WF_vuE+~yU;s8W8Fg!MJa+xtF}R~$t?XNWRkj8_ zPh`%ow?FOf2IGo$6Gk-}>2AGVrxX#8Tg13zFjteb=^u0HefdSh!E^;;4-qsJ;j(9! z+W6UaE5B7o(xMjSN9yyBOjXy5)b#`WI+xAnEhLO9as2J=99_T2F1ZOWD1Vu zy7O0IG3m40@{6EaZN+) zt=qAksdXFIZ@!=beyCMz-4g4DMs!xD^~CRi-2)z{q&GnAp7O!gdc8+u(VZqhN!mH8 zOCpP9PP#9SLIdTkaXFmE79`^s3=3mydVeRMi+3Y$7xZGU&?CBUN9|q%% zo@UmEC@A*0Xi=GoovprqC>z6b;xeq(UmV@~fuP3?Pn(7V-Ak%oH_|u41te`<49=e# zn}mZs;S#lna8S@wn0r@jGN@F_LeP8X=pWSp@@b714?LIl|v7WkU!f%#Hn#wr--_Lz4r&xyym&^UbF-dl{DB z?fKcn@br3bV9>l!rSaRr#T0@Ss-Y3=4K7*q#N6+|&*)gJC%o2OALU*HotQh~lN|a} z5j9voHR&jO4w^z;sj9)(j5gNV`RMgS!np4rKjqkccr0`sUo~ffI9OJeE&0C*Rr~x+ zx2AR3%jc>gXnt%pO5bsIlgh}ouXs3@;YX9vS0!na$uKbk$fqcocihFj&dNCxBhr#+ z%;(`UQ(Z*9d_Q+WL)gTs(|-j^E|Nu9i!1L5tAy`x$*#Rh=oj4LLVxyhL8IJ%($4-I zyuCPlzg&w;(c>&|pxjz5zPKOavvy8%6ThhFe`VwDS(>c@e2qsHK{ivXIuXbodw z8REz2CFBERkJ6~7(d(K{j6jD`Nj8;E*Vl{YJgO)P@1Z%`qVWrM1z~%pGjfLwhC~&H zB)_}97gf}y8IQ{w_GA6%?S*?ckb~76-Nlp~6aS}HU7%QHhbNNBWz&JKTLP2q@~xE6 zsw6#mYB3gQ7VD%$!Y@1W?Z*!YOm}6n1QOmimIw&Ch(&H{^p~y6c7gjwC>U~)>TmH8 zk38vHBaMMp0-Ft=Y}qc-nhXwgW2{I+H4*5Ebc1kXK3P^T(wFuP$mqRMToO#eJ}Yq7 z$FBHQ^Ln{|p?>4xS+WQvKg9mPgFwwd+DQ=jtDD;7UBAXQUjo-Ry|L4jGNzs&B;~F6 z`7w#9B?#=7&y=Iiue84Kj@QTZ?LeCN9E4A)Sq?2r7z~q!$Zs*lc&IgGIrL zPpq2!c}6wle#i=INUcoIjwkm4mTAl?4Qg0kRs~wuu}If@rhxZO?vJd}q@5VLzjr{1 zZw-Z}%w}d-L6&~i4hxJ(CHdfFWY2ZaC*p!gc7aaGA58sG^%X_h#Dd1=0;oy39I@Me zZ2gYd=PoY4xLKdozu^Ky7G*?m@%?V{Hg2!DK3%_0pG8yPqc0-Ys!pu$GH#D>UcbY_ z+UlzN$rV97%YajFjAy@pGoJ>I=`Jb?O-1`L31?V7N3(Ykh|Fq{*y{6IqH5O3pO#arq>KG+Sh@iu(+u) z#yLeMVL)D^E$oQ%y_PJ!Vw5;Gs+3_tVay=&+7^= zOJos%fN|;)*#N)#YdGc)=3YH2k^rgf5Qapo@5%vh#13l=fq^G6J4SR9i{I3)^YCp5 z%m?+$k9b8y3Hm+joz$GGx@k<)bTNvw``>W48kVr4Y*&qFGlsA&oZc)YpH|r)xUS=H z>)-9BV4vQ-A6_R!&gwTNoS0BhS|V{lFoJ9TRdXco1m6ApJFgH)I8gE7D1ad2U9DwE zghF_9@wAPQ3i~$=cEAHhEYBCc0{HJ>=Z=8$o`FGn#Ll%2t$aR{92RQOLZRcYQQjG+7Y&0hANLTCu3HV6Ai(cjY+se= z7<#8LqsN{}vPGhDmM9(;uR{aQbK^=?iSbO3ew9#s!&OAlN7e91_>AN;3E-J6ec_rPX7j{?239D%c~;p z%3b-gUDM9bpt)mu8xo70Z!icH1=*nYnIN^k9Td=;>{&$XI1dHI)A)V?ncTkbH};dI z;QFC5OI0w#L@TkQA+8z|oE9rJFbK>5-V!UZ@CVz*jd!e=@fPW&FbS>uMi`>;#uY!g zfYMd;W7Z4ZNxw7k4Vn;Ih|O6VWYjnN{rSGS8Mj%j4$h_o=dnS2LC$tJL3bT8WPfy) z;HVPpi67j{>+QK#iVnVNtrf)@uE`k7E;`giL@9pe|0&Hs`$ib^^zM)vv^7-E#JWNot`x8v7do6u-{tmPgP{~43 znP@$62^tJZ)Y?jvO$P_Xytn!Cb%bt?rgkT%%nKB!&9 zXyq5oCpcIEK<_UyD?2}SCC=n>Iv3?k3ffRLDs(gPGn*8Ddn=dyi9#~}7oB%Zbe(7N zxYc*yVHI2yKhKvnYQJu1E-G2 zkm!mx*n61NXNl=LHb>McPd^5B)I}GrX+wn3bxVTr^&I-q*3GBG)Do~gskJ)__uU@o ztw{r=>^>@Tyb&2J`VyipM+lGqsgSVsm9U&M;BN4VtEEe6E{Jts^b61oFB#*uRDqae zO%(vRpLWqm)4a3~!)VPHs742cB0svwR9Km#i)W*#MsD@G8EuW_)j2LY?=SGBF^1Sf zsI?Z0Ye})y>7S3m@LD`yrM{!gu&3c5I=k^D)PznhjabX?oyv(aaApKL{3HUbGjzVi zDh?pS9J&o?Q1W%6HINf>_!wZ?SNkO*7>B$j6Ag!cAeQWgmK21?bpaoLk){Qk76H=v z<)8p3w)L-sjh>;D<|OKTGu|I0^JwKTM0MU;f>J-GsG5PL<&Au_(ehCDsH z*s->TbZNXCvnA=Gn;LYjswz;*ZQONd9>w4etJU8%DXFuvf5}3;K#1D1z$}uanTV)Y z<&7vDYXCDF&+D9GM_qWrBnE0cS^D?6KaP|vX&UJ|&3xk!=~UpQ_Pq%4E0Q(Xlgu%_ zypYwWEyJyoDJP3~)o}%~gS9iLGOYg4p#-{gg1l0gfl<}JASS{<)&D`+T0O3;(m$YkSH!3Bb#g`ttPe=&_0 z{mHMN2`5?#4>k#sC*6sPk$Q@sBntXmgeN0@oUkkER$nEo>s1=$U&eNoJ-vNxmk3H* zgDlLo!|RxSsFaNBPb|W(b{iMw71b;&dZTu<@7@BbqYh{?;Q0b?Bs3SkWcg_L`38<8 z0eZ|zfV=eycjMO^8OeYHKV8O^9j`TEu)O{P5Tv}k{ZM?2X<2(2^W>Fv%;fVjKWH$m zJ4`wX)0zF;g)hCP&B|MBFW3#3uo0C33e` zYWDwfOB@&OQ=5Wy#%EeCB|G%5Q|!?>UDMWA+r_keP#7eLDy4OhVbN3WPgR-YBnx9! zhB3oUVgPu^sm8S~asBOx4wH)J>w++J}(DBsaq({N_wO56Eh^>uu2ODx^ zAzUlfSN{3-EtXN?loroI zg}Yq@`x#GGXd$ZR>n}6xA9V|dCz<(%c9E(kT&og{jdEyNh?26I3i4=*d>NJ_rG?iq zf`xQchyeZcu|2O81nJ|1n4L zP9)7@&Cmz=$&(zuks}21) z`eqr3)IiyYqmi*5@AD@Wl*udSBQII)rJ6a|l!*gq&9> zco4XnZ;Z9NrApqj$%0Zkrb0C6$A#~Ao|@@0-6NwXq17T4$TFFaEp6w!XZacRl@J|; zySe@E`Mtq#jr=}YhoS1e8)sb{^y!>BNiZ@-a4NVxN()Hw6+y$~lY-|=AhML+qQdP`7?Okl zT|VKbnGIQb&s;c2>DJ?6WCM?%GQ{Z<_GI%-ROrIq0iYmy%JQs>V0!~KnydO_&k=jK zl8aloOT0*X;fF5Y{W#o^kohs0ytoby9gfE{1?)?6KR*I!aDO$HiO1-1_ zJ8gkB_4fe{=W0t@$GW>+H;$H4RXbZ6`CICv;SIJhG|y49eYR+uWy?{kHwsB%0)<&< zz59pS@Nwm~m@cOicpqp5-h7^lJZoVm+OG{u1<79mMuxA;t=A4y| zgOqKvi~Uh6D^31XtVq6Ys(|1<9vt?})(+wxk{mzQy&9Il`wT}}?$PL{0oGw0{ee@k z(J3v_`M0+SciD;5{QPb2!$sX{-_G=uen8t&H_WBgJV5;)+Ozus;Zg6ZBUznXgV=X;)?(_|sa`$9U+qsXNxV2d-*q%lbTUgJjlmkdV<^`E6W)JW*lXD|%T7UU22oWkuGT z{$>Z3tBC%pT%uV?TAm)2+C&<3Xgp4-1Cz5hFi4vNJuKZ0E{Khs0A*EwfP-J!3}O0} zm$7q>u7HyGAkP;$m4R2GNf0jiu5i1X0P}BTu}FaoKIeGZIShWG5;D|y?>-Y#r-qJ8 zj6F4Cqw)r{?x77wpU=ur;>%9#Gx&W>8tti2nNWa|T5LK(2$KVL+E*0(8)8E~nahft zHO?uC?z@_D#_QM0tK5huUpRcL@JmQwQn&k(bZS48(=EUsm~YYjCX;#dIzsOz@8xzq zNlwNzUir9+qI72w*tvwJ`jH7vqvKK{o7-X|+`lM%xVVqcjftiJDz4ewgNaU^#)j^p z;BbknDuANg_$njDVO3%R^bV=$*TSdHFFoWTw7byHMBno(cyx6V(j-6sUirZqXwc(4 zD~Y?5-|;F+%&UgJxhp#!{Zs1@^2)It?P+QubeB^{%uAxt&*`+viwK!Xpdut+Ziu&4 z>3wsXOa+DoPFnq)n;{|w+Vc|W2S#_dKe=&!_fF1ZiKp#2-jH}-dI^b->a!BRwgA7m zgLCAOeFiiY^l|C(7IBTy(3`dl_}xT4CFST)o$eV8nDk~5##3XGL~*01Kz`&hqkz*9 z@U%2$OyrZ*x1$pzZr*Zerw0w#2Ost|R?NkaD3ZW^4kxLOasm~zdz&42!AJj+lpcCr zve-gdLp=y~!3>XA!;cVWrrW4AF(Y~_V53BsB!`K|jd>(E{3sK*Czgj2EzQm6*JG9G z6VJ>G9;}<2owmks<<`i_2rB6Qj>_e)EdBiT!z2&0e3-$L@{`&eU+r4(90{&7c6Wh4 zbL01~UuZ9hM0KN5s~7Ef6KK*dmMT>R#5O`R4;pe#I_ZBBl-Rgl&jhIB0PRYcJ|8|* zOos&A{J>P8Z`R>fU^w&q=5@oYreP3c(6qA|zqod{m|*_9fVY1vFeEHygkN5yfSYeo23RtSCS-wW4;p!Z(R+G_9_n z?UFk6z|gw2n+0eK&y8bfaT>B6%ej{o{MpLW#YR!)R}knom*nJD78=HR2%4b&Rw(iE zltx&?>zPC9S>c8;B`SFORor5oA)SxR?ybsa{1V;7i=~nB*HsB=_mavf*@%PeWdk1U zVYw!6>MP%dq&XA(tdhs~6(cr90cYf1`gbZOfjpbc&8HAE{Y-McB>XtEi|)p*w*$#5 zWK+5&ZM@2H;#|NS(?nc$`Ys_+RZ|1o86&G@OMOUoNo7Ri#lXt7crEQp(|8 zx5d7G6@{9bsRZZ^m?G?VB_+eGPVdY2aVqv8`=FE4n>E!?zaCB%KreoXfO|c#3HMb_ z5IW;-+OI`*nIQU}!b~8BHm^UugADKCSH9ru*B&m+5%~}RWikKo7 zYSe0W{bb8u-S4bY%R6}>7oSgR$I2a=FWR45mhT&JV0Rc5RV6ET6sZCirS4c*Fa*C) zE`kL`Wjk-rbhK=1zl|5a8S8il$yyWa5{mSXAm6p%81-D)!XGHDYoLg274^L8Q+{fC z9;%DtpUx!H6hc#POEYvK?SPkihlwEgfq@u;D`V|}6Pdp{=C@k{xu)ZTeOzT0s(Yp; z-TzrrzDrS=a<&OEn`ZakS$hMUtDn*;T{Uyn#B=${yXPYsypXTGfDh)tCd(F}9jusa zAp^Nxi#x-&txbi41?3O+s%`~nQT@HV_#3%&Yc@>RLz_&**Ume1oGu4LyT>HpW6yuS z71(VQ#!<3hxcT}OV`3k9mdO4y3@{XJ7=+v%cyp%De7P@cC zY{mu+PVvK18d)6aY3Pe;!;UGfWM9Y>5pv+x>`;&nMKPIv8vsdy3WAPSq8A9JO)Qw` z!z5hI^?hsI3Emfd=!h03e~gI;WE)Y^*=b9#eNI}k^CbmA#r^BCu&{JI2vM3b z_ z$)~C`0naIHu?wO?D?-CZ+=GsY0G<#L&@-QO_r6s#M>|O3k(#LmhVrQfa><8G4(!(yN zGOIJH6yIN5(sUpn9G_IRwK>o>rTR%iV0WmfrH+1G8TWJ6M=`6<@}x~S+kOO_hiYeV z2{En#gjNMWIP1YhAfNt8N0vzaN#@aE1YXB}bro9@^o~s%w$<1TI*q6>&5Bt}G$dRM zJDN8)(=8)POdMOhiReFEcYMq>yq%)#qcRHMnM=De%W5^*0l-K6*83@CN?tu#HSDAn z3)}qTGsWJ%J~|f>l-8HhSlL00g44mt?Z%N_rP-eWi6&e!DTooZj9tB#7INMSF$52? z!#ts*6T~&Q(%5~(LJwPp*8{Dq;(-8(Dt0|enZrK+Ki!ZC0l>KE8Ss9@_%ZNt?fKRo z;sx7g1dpWM1hZhG0|&#x!T|*Kz1-uX4x|-Lv-GOubrrr3!Mvh%HV3E$M~n3>Fs;Le zE)-PMs(fL)Sl^@Rj(ZIKx<`%X9Xh^6Wyd=|q3cVd`y0pSG^~@hKKcybp|%ri|4!cH zrUiTebX!#tGm$PY3^upD#=JR}8m!P*7wV3PyCL+iS06P9&MzLaQ%}~EEXnlV;rMP0E zy7b31HC@nJGFSg_V33VhFltz5w-yL<&5H(lmx(mR_Cis;F+k^^DhypF4-Sj9OJ#zz zsrE?^FKK;}^{b0g=t#)}+0uw$eC*K0Nm1|f9u)m{vuNOgu$AE>?67lJ1|a>6i(V$# zYd&XB7^U1xHAi&3JfXuw4?&|jdv{LUll7oFtW3Wp z8O~Wu<1;~0!P{CkpVNN8^szRKbmc;5uAQ74rMR@+6~5+kW?9?$XUKI|$q|R&HUsdW z*>4H5e5nU>?zS&QZS;Tkehx1CsN%5-E&(?0xTNwsBZ<^xbeif5x}qZvvb?&8d9QKp zDTj>9jV7nF$)9S*Mw%?@q{Q6NwUNbOJE=wlR_P8r-cPBXWLdS>BsZTEaUMenyLM$5JYN+69+m6O5W3y9aEOSI zFtZmMvks&>MeceqFHwPi-a10UPaZhJ$Y3)|X@GKrnlY`Y)~VwbkHPX5i#aa<$JnAR zti_>u`9dewFp}HV?->3dqrD$ePEy%>d~|&?oeo;xkr(p5(-rb|>jGHxSXt*g6LLo+!4zw2YSyln7US1uba+3P> z-qz$m27sFrq17ncTr_b?60FYN3kaUBgFN??MqjSGOgHwi`)_(5PBx2L>-VWrXjXc>}DC$uGDeZm+rLDjtK_96YPig_>4l{0_K5Tl)-v z{<@0lNqZy5q?Ywn*dJjKA$zJdaAzq>8FUTJm~Wq6xt`IyKErtub>Xz0-mTQ=NoV7G zykI9Wi~5WoNmL4t{egEvbGS*XOz)9YZ&>PmgIqBd0ot>ftVms&4E*H#Eb?^5Z%}Wb z#klHXS21a&-(F=#jIMr~uvLvLWo-mQyIBFnQ)#-_=`?6#y<&m56lkSN35h|*1gyRu zA`A`3xF5Po1^8WmC->We@m6{v&Iu>G+n{>jVAN>py&K^;uAH3oGx(#{HQ~!& zU|Nzk4HWSmm@A{K@(t&OU5~cT)to9fUt~THU?2J}X_XmNV|9pmSs|mi3?1K|J3^re zvcTE95`Z0qviklgu;M9V`Tj?R3EL@GDvFWuAK|`J>H~^4qMGeOcT@7Kkz8Z#squ6X zt61ONX^81A7UV-^_YOS{Y@ta)NU#Q#TPxN*vvE}PDsZ*d`?zI!uJi-x9>4AC(hlR=OKpAf~h|{5Wpr2AOoLJ^5=*9qx1RpVHsWrh&5%?eA`*5Ds*8k zy#XQ0yG@t>q4RTS=teFFft5aMDQbA+F8^!RdHyLyl21DXaK+5{s4puda^D71e#=&t z^4eZ?e5|pvJWZU%B5TK*&`tkfrc(vd1#kiuu!U^?fjX_IlG}B0?67qh+iyo~acV6O zay2VvsbAjs^10GWj~QM8ct5W{SA}BfJeZj_ei4G>Fj(1Mv*<~e^k2;}^z#h&y>KXf zi^ASTvRf;1&Tkd^q;h%>FhieyJ`EDN>IjBx2k}v%k%P9N)<76KYjJZ`z!8N+j!`J_ zxV6-nPT27J5Z3(0lt4C2zud#-Taxz}yXQe}wJK&F5_b#|N5GwbtTYO0JYL=BUO@eLwKjn3V7uMeE+NjwzT#_06OON>HNU{YY`Lkd6Q_KTA59;2*sV5$pYZrL=>>)+|K)eaycfA zb>YL9VtHu=4eBwMqtA&7U-c!7H9z=WkDt&Li4kT8n^R0>{)kQq)Rd~UG;5P zy*Bue12b9q=&>dk+aJR#0<*T~1J>NP`7x9~r-PuMVa|_~y&G@pdmAuP`xd{{KQuk; z&n-JyI}?a$R&ElTxurKCZf(~RB8x4!Vym{PZg4>YhMn8fg-MhBn1rLGE%+dXG*8 zgaqolv>aNd1dpF0m7~o;k_|OZ!Aakz8DbXKMg)50R=t{q-Up}ku?ag&dWQp-6VtD+ zVjq66wLN%`j0u~S@Euj6;rDJey7KZwG}Dzqd#oYx1WG-5n0gk9hXV_g6^$^csL93PZpif-D{tJE#lm^>Jwa18 zqa%HZ=X%+?`RFHxv9;sxtr_U30VFkKpM{F`l=_0&w^6fIc;gnhCAkV9eEROM?cV zugxRZ_xmYpJf8bbV3A*q`#e`Oyw^$~0STD)W~3y0bdLLi2JA=T0zM3_Xq)k`wMiRpd3-KL;dqw`WLE$1O?mJ48BeNQ?U0;Bt=Am%CU9JD zb&qbY?jDhsyS5u8ziMLX&p2<*b8v$Jmfq^mdEGyI^riY^ixKz75MTc%x`PElE5i0G zKH&K9s!3A&wwMWe`$XGivtxY**8Bn|1^Rg);gLNwapG-sk z7N~a6!QQoP*Hah@XDVwtBP4?pqLt4UBi$#<0OaxWQv=uHrXjeWl>2Dx9*% z(oV{mb#2TNp}tO$1uWmSt%l*k3VE-H_3n|1>e3-K?F4eXk1TX~*l>ka5vHBCJkW1x zl0AQj}+c?YRFae&nv@m%+$utEH~^($j^E4#T7d4q;~E$3IwPz!iX`}V4{Bbtx) zeN{KA=S@qruNQx_HH;oF15-KtLZeTfy;F66_mbOWI7pj%t>JqK7j@_FBp;f?+w39+aK8OvyH)&Dq7f-=NHvU&{e-R zU*76%8rWl)hv{ zeP$c%*nhS8Xm7cq>cIcu5whLKx8VNVe}Bl`{zw7y>n>}Oy3y@Wl!+Z(FsjJU7=vV-yQsUi+^>2$FE|`$J)br&-79 ztXwAn)4^c1d7x(U(7jjw(Z({%X@>)XDyYipH)Y4As6#XFIuoB3#l31Q?7EB_G}$CA z)aFm&5!rBf?(k+(HJ!Z2a_42?@I{Dgk7I*KMYQki;FzJ%S=Kie+K57@cuf0l3@LG))h}zZBHim(ajF-m1Fa>S->=GA(2@$U zK*wt*(9@XA`f}xpZXR&Y-C?b}3T23Ef%Ekr{pa7x5IdN3L$0npIUed!Tl*~sZ#cK( zILnHK>gttlD!<=?6`={4J%;a3X1<2DuEsEEFzgT?{T0sosSdjHD0Cpwv{c`!@~MMO z?6}M7?9$5#+z}=_Z!5yX<2*H%ks=<5v&On}fY29+8sD1UaOnfNDRQ(6Z*++;1dlPpA{H`CxvYFaDfzCnZykXXEtN3&_!E=k$egiHD)?|(J^#e_Dq=L!BjZgK$D29wxjxdrX zc22*fSGNTJrX>1!dWsthe-l)J7}2Rra(4ml3$j)iA-cRrLE%goF+uq$t$wv}{zamj zCcQ?T@}6JlRwtusy25kqG+hVPhRnj~oWR7NtY((=@N$#dnvx>uoQZS(ZpM@vlpWA~ zf4YY6C_Db!69a|VCAUPYsL~TRE2fGfRf23kBtW;kTP6&p?xpj*aY5^ZCYr$cRB85Q?uu)j7ZaW(r>fv%`|8%9 zAQ!S0xD~j-vj&{;q03>IuLO#Z?F&~bW3_DxM29YAxtIG?MKAM*?w`FOO>P?4iSdJ1 zrEdpx6F$XXRkTZ~hI>2H!yasf?zglL?VoRtK;7g1;uVYp^cgkv?avpy0ZicEoz3sR z1;~7~p+9u3rLmF!fs;%Mb*(awjjJmIm3s8^aYT{6&X}ZVgYr zaTw8>oT|0%+-KLa){P+{{B*c+l&z5%ZU8#M>PvXyALRH)WEldcrXsBYDLC96Mdtmb zyN8>Qqpp%tjI)t65!?Hd`ylrdpQ18dk>X}Cg8)DSh8Ms3P4%Z()MLLX?DA!EArHrT z-IgTMJ?YT(O@6cSQRlVk(<~jG3CuX5zQPT016HP$&ynE}6*3S}8ZHN&of@%^O-%$= zk!ubL(;MlJA49SO6O>IuPZkTKpU57(d7-ZVO}SYv-{OhRCA8{&+`u{qgReS zx}HOQvBH**xnQ_@&m>^;Rl%8O@9ec|`|TqHo8zkdzD{-F_3`U`hEtNDj4N{>g84bT z;T<%hcjK@z0pfyLLCD*V$)&H}oXo^oR4_Q29N){%@l^V%d|~ zwbg|OXQ8W+WzgD_f3S@9^ z_NQP@?oH6$pwQ8v_Y-l_5>Jz4S`XXpLJY>?ly>{{oy^=qprij>+tnZcFxk6`?rE4u z?iVj7mRN+36cMp}WOLJE7MkNr*3XZvCzVNU>t&!pHnDJ_5k>rqr7hj&^@(l}rKp(a zS`{M19WY~bvDt3J;9s}+E6V5;r>H6Wv&foFUh;9KwXpJ(Ag0F2q zgrxS+vGTu}D4OQ~I^Q}a!~VOv=3Xoky8dhK{qFTMasD!suqwE340uC*(73(K8_~OR z&B9*$we2Lf45xlKA-R0Ml%h`%C3fd5FAG)a8O)n&Q~BC30twpz9G#wQ>?o;d*g!V6 z;fZRMQH}*!-xxjJOyKoD7D(-9yNH0!LhQaJ(YG9n2fD`?Sm@6mL-yaT*5*+N|2SHX z;TfgPc-?Jnz)Mgyw?|Ii1K|F0b%Byfv|t-738oCaA-CWb;BHQIpI1(nA!RhY0trcC`|RU6Q|6t!md^_+!| zv#=Yy(cy8^jNqBi?zIqQWxD=6l-B41eCDL~o}Enc(J6|vi81Qtdx+cHu)f6V*Xw=n zQC0B}n~d;M*eIghqRS0#Ny&(w`=s?akEKHn;NV(Jz9d&QRw{{+eJZ6CM0M<9V>wQ1 z+6Ca&4~ul`pV@dV^ile87;zldtzcEu#|^*SSRn0aUw4I$pcPM$bdghF^Ub}O&9Xhm z3{N9o@Vr))JD^@w_r6O#i>VM_G(1`fw{?5v+9&4l8>9RSq z8!%^HG9SCHI}-~>y81bD6YuhhH{hesU7!#UyW(@q%Dn*Qv91qOW&ci$m^o_OX+LPK ztzzM+S&A#dgJVU&P`bv-hQf{D%M0e?h4ZT)AtqF-FJ08VEi0scnzWK zM`~Hb_PN@;KJtI~cGSB2@=P2cwBmQdITPo5o9iFMx16*Q&$FJ}6H0~35*a4lljBU2 z%KR$hvW*=#bq$JHl^n!f4yO9`x*9YXn$~EMU zcbci);^#180-DXuKXj6*P9W38-MZ8yv@siu8U~<~TY<7tMb(dBowHc~Zfub|WFg-h z0ilQGSZGI=M_d?P>e0d%RPTc~cyqiBp_%-C9c{iahQkSuCys*@kt|fZuyA7$19zIf zr?(}*dw0iro|_M5f7~4_qhajg5@Mad_7c7ho+W_p#h&U!ZtDF37Yt`z_!#>!6eH!} zB{4C-fjQ#`g__UJ0E+s-<^B^sg9-qtsBbc<{{qGRH92U!U({l=KXaNS;_GRv@w5K@ z<+G32oRbccWAjK;zRF@m^V8hZ8HeAzO7!>|bl7pBQ%E%IYUG2-S^72Gye)ax)nc4) z>;l8{`S@Xi|C4B{K-20ersj3!JVNW;4OZ|k=ub4uH)rL#(jh4cvIgR}xB`S&a;zlh zjFIfJ^Rlb=ZQ6CONOw`{KcrTIKft~uEA+##gIt1wFwF>b^aL#sS&Xf|itxdpuHY)@ zS49NTkPRTvV;mtva|AZT!v|ZmzdxLjyaB8g8&^+*^EscFjvxo#V$pTu1o|C6^9faX zcAW{k#@X^u$$Xr)d7JkcL`^)N>nSVu^Gci`Wr3^QubL=1Xh*f8vN%;m!rl8+N>QCj z{ZLjXl*lBi*5z3&1W$L;C_68Z*ZPzRVI}R))&P9R{_*Se8f1gTe3dLtuZqdd2X2vM zVvbfd72DbL8l zVkuBS#^FL@HQlkYQg5noGH#ej0>nqQp%$|K@}*9L z1y~{iTBxqEuz*@~xvZ&jbaWqfIYN~U@|j^^_I(}5g$$>#$(b*39BYqCtSGHNsD_l% zDP15quJ0l}j+`5`QQ}yC{6l+j@xZ?~U+^ph52xPi?(6{(aVA3Oqo{xO)8$NUS^MGJ z>!#JF<>Q;z6tSusa~i77*3PKGvRAH%$xM}D0$^0DmQfutv9FF`qd;Aplg_5oQsjEr zr8h1=LlZ|WJgcy3H{S~LA5{@M@AeC^(=B|C4^=uxnO;MEe?&sMh^mPf#6ZVH#}iKT z0ZEBz)K>TXr#^Pg>3!3de(;N~d$8-7^kjccxnG&cX|D&BtdRN#ex}!is^iE$!<7T7Bz>{#&Tub(uEk4GU&>2=nxS0Wx~pG^ zJMn{REk9&l&McgA-7M{!lR31+>(mC8aa8|E!dgoqbO|NG@q46vSsC9CgU;&sHce^U z)p{b*(Ge3lGeoB=O+MTVp(`M4N*eP|EtNR%-`o_*tdizPDAmQ~6Rw{Neq)|RjlTP$ zp4!c6reTBWtux8yFb~f5AY)zEv`Nsi{=eShjBIafJg*fWl>bz6Xe$R9x%!2&Ui!1-nb^msVqfQ1pR25kvj z=Gu=#*QX^Ro|l69?Rc^9rzVcz{{IukB{|w_ZD9aUj**|<#RHh~pTU~O?}U1$_u1sh zv(|@EUzmEv_U^kIFF<_|8DH1jaeMBrU&g}uTD(tt7_;YPxb$Mi#Q@Vo4xM%Av^T+e*1TCeTQv$$=htE z3(t2BeaoKy!WZoFA9JWb*&#ZUd;e`s%h_pl9L^~1LE%I~$y z-h3Dzd_8GBo3Do6Ih%Okf8qJgVSr-h#iyrhU-B+nT))RIeeI9gJzu?DcVr8Ay3V^H zp3FF=hyVa1h)G02RQ>!^b$oWn9{H!gv^{UZdTjGmcGbK7z^=f0r+dYi&ENz6*~5G7 zn;-iV6xJFn0r=T%kDWet*#7SKe#w4f>_Xdg%lFz9KlGpQ$?CKA^{;-@w&K0tG{30i z7$FcJbRNA}XqQEkiycCjzpxf~*1##y=8Eq|{X%L?lNQHa2 zwuI|S$4We``aA~U4z#(hp(5n4AYI}#4-I}K-aWWQ57{_ST^JlDK~H{xzl3)+2k!nh z7O?{emJh0+0~ju_QGqsn{2^QD*^E~dcn*YTC_Vk_@zvdJwtmN1Te%AFf~Gg)^GdAn z@qlcl9ki2sZ?lun9mM1QRrpHoq>bP`(9A6SUx~}b&_($4a~s0L$61(h7H7`b!2D4g zpTwhf_^Hb);^^l+Gu|jKO`pWV^$;#e=WO@I7uzFW{X4sK7$0}-dAW`4z8bGGR_T`u z=MFz&xBa(Yx3h?T-S%B};OTw#mesp$!{7+M0vNL$_=sx)j~&*J;}OBxqnLFVAJ$Ib z-T&FY##(9)@0#9Wont#t&};B0;jB$Qd5=B(`M_^y6|t8;Yq5DjM% zH!aWr-qSsWYw|DKG(MhMfiLg|SK#(|MX&YY6NS-rYi)A>UG}M8{Q(=h;-z@w%{wbP zhM;-I;8M|z=Q;d@fOl&!05)btTt{ZG5FT1Nh=uu1Jb%Hjrr^`i@#Bxuku#nw+aSu zSwC^~7(QFY%UWEMSM%yXS#nyM&;@F#P9uFK=tXRT;_Tg2*N?ScJZI6BC{dV9xw_yRfK?70Q zCpPWk%+&8erE51_6ulF_vo(+RGK;wE;WWfxVJ*cMczoZ4BA`F>_}!uV%^2}QL|^BgFUQ& zFv$FMo}Qt#T6F8j(A17|AFKgXms3j7duj6&378@i5+Ei=rWk+WHGwp9GX0wWqQ4SicUJ*DYJOxDIOr z{A%zR95YQC(RijZRAryVY@|3?4*;-R|^X$T>8TGN;mEX883@{ z5esb2Dtt1{6N0kyxI5)W+l-xeRP>kF^dWfaiY`*Ma}wo!i^5?q3W{7_l{n+9Tffc= zhcCM5WW=IDgkT&AfDU)CjbdOxykuz&L^|3i9v=Yo*(M(Oc*(dpw-2xU@eBkH|G37O zeC`|gL=$H=)&hJPDCg)I3V_HA*w^F;8Z#U%(7qqNEg8{c2flnH$2Z5KKj4WdBZ=z? zC662TS__%ar9GkFelT4|M&c0rvxD z5nek{6!MWS(59GJIwTz-gC?>o5-`cBS?wZL63VY7!Y^G4F`M%3I4@Ot0LUl7x?M|2 zq%sxwHwHtM%h`lH(cw5gkV0KR*9U>c#6(a=#iT(8wFeKoa1T5^f!`hkt*Z}@^05fz z*+MW+UBUr&0#Nv#1mZ;qY*I*2+J%hYK`FU5UoOFgDD|h4zZ7o_;QLn zHj`~>k}U%PB)-HY4c){iyare>j+Gz)nqn(>azQ@HsI=V?0arWvn$Qx>%SiT+U-}#T zIC{b%UJ*PdN(-%`dxO5XFu18ryN>KSRUSyE41RQQ1p>6+3VvBYA?!3y1V!=ajW@Y& zL}XIanGi~GB%e;uYad5mPyG+71Pp{gT{(fm(RGa1GFT8_+7eCDNfx~#O4o-O(5T@T zKySMPazcJGZQ6iOpJLOzC!6%yb%_-sDt-^9f(%|FXW@!Kbam1pwUbeWo%n&pBkAs^ z%hR@6p`QGtRFaS#^+G0bWQzGmKl0>y6oiH!*sN``=?*#s_sxFhsMXwgEDr2Xjsc)9 z2VHn@3Jnids})em;g&q&K%vbZIpWe06pJoTxOA~3#gT02<0ywAOC#!XX7Y<1lOYRY zsfB*%5Dsl_G(}GIAtPAll1(k&JQ(#!(>OuEBfv4aDNNdzBDm?2nLwzCzf=^8_mdTQ zoeatk?Yuy|NsqWe2x}7OpbcZx<)1*+D5M!u8UUcS^C1@oUrAShEr1;2eq&(eWMIH@?9}xzBrVZ1b3)x#z=;HpqBTt*RGLd zC=6Wb6tTIYBMFO5Kx7mU#14Cojmhu{v;0hK{=j%$zL2N>h=pxDr@R27W;S4Id#K7ZI2 z2dW7VuRAcyKL3IWY=I{O}Phzda|_%}Fz7(;3<)@Gw$wf=;Z8SknmG^i%#& zt|2Q0<;-#DzeFMz=tL$cE4~XPdeV>+E-6Y9EPay?pmQt|gv`sL2&vodPyj`4DHiRB zl{Cya8I1zLthXVFTA-xHJcUDm*aR+zLBaaQ%biLHflAQ!VuKL6G#g{cFdaP5Bo2}X z4{o(ZTfU$}=m<-FmwkfPY#01ylaDQ8%PmmKPHMMc zG9dACWa<`}#3n7qPrc>vDBRd${0LIok2a6drYi2Ll3*G|GQ)VS4JX^up|5ZXeF8g; zmjuo}=+Pk@YQxIWB#i+UgUT+eN*GY2n3J5MHg}*WmO2TpqPf4609I1ZCt zWQ($4lhoL^ki%P`sjtE{+wAxu`mfHFwxnUXX;6 zo(7|$b#pNF3Gvuk7Oy0J~nBl5u)3UQ=l;b z(kWAsvm`O~oM3U5w0i zdOlfQ%5$PN^r#wsg(mgd`4V!}t!$PZ($fs)!%}K62VsFqm~mtXjWmW8TLUj5oy!4K zbm+9SiCApT2Z27&P+?ms04>jARAisWEXa2xDo`;po!As>21MulkIo7P)o zIyRB%czH>4`{LJ8{uMo9=Z)d;8G03aBep7D_)AeeK9zf(fx1uhGvliz*Rf;H#bwMc zB^GG0xi3`@jk*NK1GnSUro&v1_+3#R%yM9tZ_5M&l80H&O=qKdK;VkxIh=TY!&~>H z8^`b=0nR15)C zD$6OzR$!HpBu#bviI@UI4$7JANMO-+Y;KD^CaBUDyPbTgC#{A~@Z(rxCnrmq@)*MZ zhGRQlGcB@{3?NL!jc(089V-hgiI*}Nlgy%+U?QwAi~NynKo%h0bmwL$` zK7|5)Sp}Y{#a8P$UAEy!8Ty>SbQzkcd0EJC zEcnCCpB%G|gr|cT>@49E#YlEJfXy})N;!@?6E7Ruaqf|jJIyBhbc9FB^H^q?I>Eixb} zM^f-zt7{drl&!TPA@~BT;_9;YyqRT-DJNObwo+V7F6$8gU!BcG6h8X28)?ArJpS019=#W;K zq~9(SY*$D$?<7+8L4<@MYO>?;7fOjvikiuY=a&@vjHCYYeOBdIEoKVT{Uc!ApNNCD zxTzm-g>orZwJ8T5vbfvR>P0@{A5oyYl;Bax^iz%0Y9pWzFy+cZ%HWQX3yaG1ua>;Z z;c$sEvRui9^I0z?lYpTXN2od^F?@?6kA560(Q;TOFm~y^x8rV4v{$ z-vCUQRq<3PXh16*;=oYZ3(3QwKME8=iQ;^yx(`J`wULpQ3#J014R;_HPz5H2==D5^ z9)Y^H@7omo7*-mniN%X+Pcb~#u1BK=bX}<-QS}JY{ zIKf48yIl*8hlUq4>?s(JBX}*UkcktZj7M@%%BZBUm-0bgPFAg5+GyHsufx1ygUf!Y zA}~5->ZQnx;xDE1OytUXN>3h{{+AwB!HJU`j({mBQp+GaJsUetBE^wH!1l$*F(4OhJYqNSd|S%q8tu^v&(5Pz2)s23>%~uCzmPi4d_$ zTy}v1g&3>?rivwK5nJ@z9p!1|08l|F^T&3HQ?@HS4_CTDt8m#sK&^VL3w@9)mHHQe z2}Me9Akr5WfzMS=B^)zBq_Xp#!}w)S@|B|@9deY+IJs4qi=OP(U9Vya z86Lx&w;KwjAZ78R$Vw$AG$b8Yb&+JN!ikx>3IGBEjuAmeG7!*ZjR4?fdD?QC8xUKh z3Mc8*ydqwO62lUxJd)JUk4t}OjvR;1LR z{ibw7hW0|F0n_Ma%*2R+B|{LP(;_>HFKLLEKBGt^@Jn=$S+g!Nz~iq%>4+rgu1exm zVgtkghye*<8E|3Axnpw66DnOwNyxF(&3)=fg9B5DdNawfgH1hGP%mkSSMJB?Rk5%K6|m6O!QLE$clPVmEuPG%37!2?Lpq_kzVQ#J_iX7Ce zNMgk&&-*^S(67W3h9e<9@3YHR1mYGYR0ZO_Y@d+jmdsbAWU}h3A!4EF!N4vTgIKRr zvrnmAwuut@`NXRm@m^DlNeIn$@-4JdSjoxxp{&@+{}$ae!vutirXd@-F0q)yC?2-? zjg&4`be+=>zw*>qVBjj@un<5|FaZ!wd7nL^SLVF0t|x{uk}o`U(8tRUo!qXNii~G~ z7mQSd$yR-9`c>z$=Zc;e8q7dyRSvnPTlIEO++pt#M~Ox^JQPkN@ui&-jqUI`d(xDU z6y!3!%zLJKE56usE$mChLfGMQfkyhnpAc>K1COxcC4AO~KLDgnYKOxT2zaMcu^B|} zLxvSVL}Dbc;Dh3ZDF&I!L7dD@naZjvmzutXPAN}L(34nokUIRJD-9@@k&hvcq^e(8 z4+gdILndXMk4z-K)4fyDqV1gJd`uuY2CB97E8*w>ftn1uX+Q%njukyrl3Nu$1aWNA z%6^ob|4SP_X8x{XEI#(9JYZv|J|C09hNur&B|rJWu<bL50nbeedL{5^k; zd>km}x8ra!47yXPAG1U<-~*GBS`8HBTt5$#qJ&<^gj1 zk2IA)=qf)&QP6-kPbde$<&!03h0Bi6@I>XosTs1ibMZ~lLqex2%y5c5aL8%=!Dv6}* zNvx<@Rz89*7VUaO4xIO8D4w`F7A5_+RkKdnQhwx1IFz`!J#IzvoH9Qt;1a6V&RORe zILkw6MU|yia)lSUs|bx$kRLY(^bP;85*@^^#c<-`?J+eeghMr`=;*fxae6zQLZGon z0yimoQ!%?_jZCf_gsjA|D;=)vC7AGoK9=yojwAhW3HMu{_XQJ2chP_MBIQIl5Pf&9SCBL17f1{-|2Ph4&lxu6pA4W9H5F$kNjEz1%jl)B3%WU z0wc#qECExR^3(_~K`SDx%ZIe9XP(<6luM+(i^-+BCT)Q`01ILv=`9L6NYIH;v+3;CeJJ4Q%^;+H=|h--FIg(tE&Xd_Tk_liL!nC^ zIH1u_@xky*6}lRX#H5KB915$Aq?SP@Y?`h-XKhG^03fp+TO`NpCvl`oB;Ud&ds)6j zak=>IPVZ%X^%*UwLl8_%AgvghJ?pc=X;M5%DwD4txOB~{8wsqR~2r= z<%r^*D2U;&1HmwYprSUY^mii z``{5Nu(D7DnS3BbJ8k`PmX!Udgd!fE5|`ei#a78 z^hzcyiy+9L$gmJuJc%F7<^YD1t#oR%SaVOks@#qSHCGN%6z zA)fxZ+5qOj@hAGBsD5&^99+_)Uk06NbS4*N4KH;`mCIudDQ zEVC(?051eVm#5XuNgKPADO73}09jrkN?tqvNh4PL3+q}OhmsU>MuMDs+ zNn<87_|TMdDKm8$ho#Mu?rwamw8NQuD)A^B7#G8z&rV)cIY%mQ{3 zlrG86#UAQJtl1Vy;I@e`<%)-hnI}L^gB>^G01-E7H9_V!={D$8Y&ZB0nD?b+K_vgO zM6>0Fi0!W&O8#=nrE_#R5}I_&0&s|=z`!H;(oVF?B$YPAPmZz;P$rv{*h{3jOBfMG zn6C7Kkk5A^`lw`QTrAm-MI4R^K3NTUQr$w+9rn*Rh~a0Y7m$gtyly${mG*gUQHokV z)4V_(g%$B}DDm&g`u8{_zK{)a0!hh3#Gy$rok2K;V|7HAER*E&kP;@2OjrQcm8+gC zLdGYN`b<>`H5xhbjX_TXRHr6z@v<|DsWuIeS9e&_MSxy-?JxawG5b|_xWcK!S3(uP zqIe^ZMuSmwUALa*<@|{7BIh12E>(z;V^@8T!!w$|8c-U80L{ zvLxlA0ug58(RyWr+K`n#ZF#nZ*|JNRF(4j3(NiK&O`$HEEdWgdr2KD#(Uu5NJ{(Q) zY3897`W*J_FkVA0Q|GklrQFvzZB!%AE=K_``;?mGNDZad(WQ;TP|XEV6Y&7aC%gwy z3HUgX!4J7~1dKla!;u7mm!*+(*$P$?c>Mh|vbLHTx0EFR2eDA_}a6uI#+o>f6 z`k6xmuJ4Chr?OZ19v&vKwgm|u*$T;_pMNifh`#X0r@*BD!Vzonp2vDqF8AS3B($lo z{QJ0+Ea@tC?L2oO03Fps)IiX2q~8Bm+u1Ew4Z}c~p}nIFeg9`=81(IWZP`iAlnXLV zV(VwMl9e{Jha`1mtj`?leO2|uYH^@A>>N~sR){Hg1g17=Hh3!fw(J0o4cp;4@N|m0 z&XXXrk;D_4O&Y?$M7}obMQaHM`7X$K&&N{BoLlVbJmV#=rW-?>n8Q_jO1OASc7Ypm zsY+R2x_ry{7P*Ax8n6*(%J;Z4uYl!D6pe?VngrW*a}0sfrGcxBT$H+#Iu~sQso1*M z3jDMIEV0uFP>nBjdD?6P;y|d=LWAQgZ^y8S?a1qHvo=`WDC6k5cb8$u-1d$W-|q7~ zPCYIb1*4pA;GX1QoI0=L4nqBit2!3_$zeC!v4)P%Ir9QLH%?oKo_zl0G=Ym)7EQA9 z;|^WhsAp_rhYnevOGdHl>y!)2PN=;RC*wLNMiXr~PA47{rOYFs(#u4t;=Sy)4?1Dv*UC7MqSgpz5s+gpUFlW2`;!Cm}Xc!7U zdGsboB9Uc|A2KZ=oO^PS3)}}?LG9)`c-9t|qqfP=#Lj>F%i^lqsVYf-DN!sEbB)Y@mcBO5S+m4gL+ zaTk$&kr%{7Rjf`C4SQrxeie&(!uFVh*3iW}QqH>!-^J54kVS!CanbDd9r@L`$9QFj z?zHVZPF=8`b%?`bFDIQU)W z<4#4LLdh3djoc00?J~x$+kV02!v6w#2+lmN@zN~P{1bi_;EZulm{aUy+j%_UJjny7 zhhG)u!gUVOFL@+BhXb?Nyub4xt@;mnyo~*Ky^{D`44k^7p;iM0jPsLSbk@^y?sS?* zeMC?Nu0oB5a%1|c76)vLC}#MK7Gj{S$9`2nBgV^|Q;a3`=(Ig~7Zb;>qemygb$-Eg z0g}|EhRMYd(zJ{B7NNk~wLC~IX2GIerW7Cj^}00?%{73v9z%sc`}eoEdVO@g+Pa=b z`~K_mvtFp~#vzw1j2FrpSlo+(+IIasMfa8}fe zuyUSAln<~i9(05}&E`Nk*{@_}7&IEkOwjHd{K3>~p@*GrPs;4{v8@P9?4a=z