From 93d494817068cf532406d86baa8a18f669edb256 Mon Sep 17 00:00:00 2001 From: Tomas Klapka Date: Wed, 18 Aug 2021 15:15:24 +0200 Subject: [PATCH 1/2] feat(ingress-nginx): add ingress-nginx-controller template Signed-off-by: Tomas Klapka feat(ingress-nginx): add ingress-nginx-controller template Signed-off-by: Tomas Klapka --- README.md | 1 + .../img/nginx-ingress-controller.jpg | Bin 0 -> 183726 bytes .../nginx-ingress-controller.yml | 817 ++++++++++++++++++ nginx-ingress-controller/readme.md | 66 ++ 4 files changed, 884 insertions(+) create mode 100755 nginx-ingress-controller/img/nginx-ingress-controller.jpg create mode 100755 nginx-ingress-controller/nginx-ingress-controller.yml create mode 100644 nginx-ingress-controller/readme.md diff --git a/README.md b/README.md index 6ea64cb..ade230d 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,7 @@ Start by reading [how to use a template](docs/use_a_template.md), then check eac | [MySQL / MariaDB](mysql_mariadb/) | View information of MySQL Instance. Uptime, Current Queries, Active Threads, Connections, Traffic and more. | [Ignacio Van Droogenbroeck](https://github.com/xe-nvdk) | | [Network Interface Monitor](network_interface_performance/) | Monitor network interfaces on one or more hosts. | [@russorat](https://github.com/russorat) | | [Nextcloud](nextcloud/) | Show stats about your Nextcloud Instance. | [Ignacio Van Droogenbroeck](https://github.com/xe-nvdk) | +| [Nginx Ingress Controller](nginx-ingress-controller/) | Monitor NGINX Ingress Controller with Prometheus metrics | [@bonitoo.io](https://github.com/bonitoo-io) | | [Node.js](node_js/) | Monitor Node.js application. CPU, Memory, HTTP response time and more | [@bonitoo.io](https://github.com/bonitoo-io) | | [Postgres Monitor](postgresql/) | Monitor Postgres Server. CPU, Deadlocks, Data and more | [Ignacio Van Droogenbroeck](https://github.com/xe-nvdk) | | [Raspberry Pi System Monitor](raspberry-pi/) | System overview monitoring for your Raspberry Pi with Raspbian. | [@bonitoo.io](https://github.com/bonitoo-io) | diff --git a/nginx-ingress-controller/img/nginx-ingress-controller.jpg b/nginx-ingress-controller/img/nginx-ingress-controller.jpg new file mode 100755 index 0000000000000000000000000000000000000000..bfeb45e9424a1f8eacfe88ed68afaaddd0848e93 GIT binary patch literal 183726 zcmeFZ1yo$iwl3Vbg&+X}K?4Mr;0`g|0>K*z!KG>3p+f=@T!LGITSIV%5Hz^EH}0-Y z^Lp={lbv@?&Oh$G{~Py>J6@VmwW`-Ds%n1ot68&T_4WAmJb+L^MqUPhf`S5YNB#k> z7YGle-L1?40A*zW8vp>n2B4#e0Z@@CeB>8}w^jgjWEusT)=5hK;|jO~01)l{6^saMFcd!AY&&wMO$Ng8)KyW7~yDt z`V%Bbzac9e{YSbcGUCrPnjjAV5E=P*`fuL?JK+!fe)|^xFS6*j%)b%%jlgdNek1T3 zfxi*pz0b=ddS6(SM~IGxPn2I+l#d7St9t-|1^^5I0gM4o06Ksoz!sUZ2iPFvKh`|( zXf2(c?M1n{?VPxbO~EhBxJPNMD- z^naEvicJ4;o10!z+|krrRQ-v}_Z-M?67=8O;^yYY<;KSacC_H;5fKsLzR%0e%gc$( z!Rh2-=WOiGY3Ic7y?`fXP9~04_RdydJGws#G=2egah9NWaj`NLH8(aFcwuTP!1==XD1{Y zJlyo$e>M95RGmnOepLEP_>nRq^N2onG&6QKdx8v-e<+yqzAz_`kj6ih&LzlmU!41& z@`-c*0me@a{Xg6C{}5V|;-)5|CV#XY?D$vp&&(YD|7qLSO7dry`Y$PwH~&f?i$`(~ z2M0%-`{$bf6^cLaAgPD^zaKJ;|0$4v!}S}k{}clMsm#CG^&77L6axRL z%)i<7KMbzFon13Kq=)Nz zso4J0pX)CGB5ZUbELt=adH^aB3K|j0bqjzNxgm*x+`{~07xViE1r-e)0}~4y2Nw^S zp_~waih_oQijIbXfsWk2MDamB2cQ#S5Z~o_hnM4gx4?P6E?%6;wDn{fjvgP z7mlxRaLI0yQ{1`7#LU9V#xEc!BrGEO_=&WPtem{UGYw5GZ5>@b6H_yD3rj0&CubK| zH+K)u*Zu)--oASu7#Z~;Iwm$QJ|QhVBQq;ICpWL8w5+_MvZ}h~YjaC$TYJa1&cUJK zke~9o{=wnV@yY4g`Nbb{p#aeS66=R#|0EX?QZ7_@jTIUp7bp? zqbbjtDR7hv9o@dg&_iM8`udeq2l~^P3cPhE!N4`Rnu(22U_<*t51!g*EomGRhgL7OQItv zo(S%}iEbRpr*dJgE~pY0Dm1_noD}?YKcrJ6bY#lr=Er$^*-V8IeXy(vZ=h3pD+6O- z$A+Al@hgH)q`qU#7d^*CleT3+n{gsnTY|lt=YE0DE!4EKhQQDQSZ!5FRp6u+JJsNm z&QRH>EtfQg+4&R*x@M~Czi)~nqrl4h`ojwR22Oc1GA+0^o|^s5;k7&GQ8p4 zf}r#$LNYe=bRXufpK6&Q)~W*1XO223vM@y1W^GOGGw#ic1}s_0*`4=9dhdMeMotz(@xVCr`-?1gEM?9v}97dVke674+1 zni5}n{UtrK)yLKYO1iGqK)F{L>g?6N7hT>Kl{X=~LMd;?%a}eMsaoOQ=Bb@LrKdkT z%~_vZS9wclCX|t*eUEBjw8_OLd_cRX%;1@#w2!KCU8%OPR+V4+4Ij)0InblasSf6p z!9kD3N`oPJ5~VJ};}=+Hug3=cqI00EbrMkEL}K-k*BSKH4xdE6KiZfBd8@Vit>&}ZRcIFu!q|glAo}bp6ueb)hk1{-$f$%i!$hA#xZ?DU*O&-CYByS(WZ!!f| znq*qvNiX?BYr%hM&9@3O-pkk{TXo5rENW6Q_}r;Yt$6dbl9?y_BWg6As!$xxqr`Rf z`CEARN&1%DLzx$7rgA9HWg7Vq9)#yL62`s?ehTV_?wq2XTFKd1iKxlZ8L+p zdx%FS&k;(SJI?tAZY{Ia`)#k{UTy5$Yk21ps1IY_pGRQTYgG(xmm5vqIp!vmr@~+L zHxBPEF628)LXh@&^Y53qYioJ=$oHLSj`6}X>$0h-Q2L77D>L`|*6WPT3MCjUz4 zt8cftt^YP?ce`Ab+}drF*Q4Tany>9rVTYzleAJ;varFW}v-|4yhN~1QZXdy$I%#4& zubD^v^6awh-Kh7a)T$1*B-lR`Mv%9j%zhn3LMu z%5(O@jE%K*c6cO-j z@|geX;WlWi(2xZR1Khh4QjmQrN~&$R8-ITs4G zxY^I0r9Z1JgYe?)EJq48QGO_TX<`&JDx=#xGR$e6VD<=-psYAH^(dI1bi zvOE7^vH7OWCqVNo2&QZ!zwe)*_1=Ri*({sUisY&B!}G_c`yH#~>#Z95*?|Seieb3l z7A7V)c2(X#rhDH+{3=eLkgxNk$MWps8DC3HnziUQ;?u(R)3&soP9QUfy>NS169c(q z++yNnSM4?6&!xoyl*{RNnGAN(|oc3x8xD`TRUo!ub`>n59 zlhQ+zK6$Nobm@g1NpAsYnpgPe-VNy}?-e!oWJog#8v4@7`<_22;PvS>^!$^0D>L{hof9(XIX;0zPTAiQMm^BgcdEpwWH32fcrOuPKs?} z`L2=$@MVl*1W+6m3GF?OR`K*2sDji&3b){9i#-HdgM|xb?jd__S`ygzWUyfCf%A2@ z7L&QUWQWB?7M-Im*`JElt-aB^4O?lSC-5ffUn$7*7VR(CVN%RbB{ryueuWt@FW2{? z1$MZ)uA+6WBQKTQg+LuH;Na)^0u2he_8gX|Ur54yi|KUCQZ znaQe%nH-H4B$%r7SmE+L_)Hg;kIJ6B*L5bksg%;*N~EuAP-^#9{bg+c?F?(jHK5(= zWYYj$?=--hVSyT`((j@OwcgYSZgKlEAWim=^79v0iPEH-(Y$9aTk2;GW<|Ig@*aDm z)RfIN$60To_nO657U1djIKs`xy@E%p%k2uC`zVw7g}$;jQyv55Tcs4MLx9{{c4NP3}rSo5Ss^XgvFTW&5F zqcVkikt^<<9PV@rj{&l5!tIVuDxNbJ5W`2I*8q>N>*I*wvbj_5rM@Bi!b2Ds9`@AJ z=Z!dI4s7T)gmj5k-+8mbpiJFoc?U4Lk!|{ekZ${Ub>kyIs<*={Ri?KE+EMr!bI$e& zvL}s`bC+n_jg|+!*MMU1Txo;rVQBQ4A$2tb7fx9>=3JkfJ8R$}WyyjQ;%0&-^~g8t zWBERFKpkHCEVKWPod8JdM2cgkiztMi=F3Z;{a%OBQuw{a5Q;i>w*@0Iip9?zmJ)idG@STD~zDd&|kZ@`dJIg;=HM z^HfwY2`lbUDXAd@4zY4B_hydwlQ9=y7@75??L|O$jM@x!%=TTDs`XZ+g}ViRmcKT7 zaW5vy<6eTic}d4!a>43LOwW0z^DzNf)cm$)kqh)TuqsNeI>Pkw)>M^#66Sf}OP+5V z*4*zU?+yuEhTJU+N-e{)xl5AWWi~mneu$F#wN(45Vvn!Vz(g-X^-u;8pR0f7HhP|}iWbz)&uyNmO!N{>I#qM6?on*yt7-_(D5|HjHo%P>ScnZsX=u-d;!El8#rpA2O~8e6`U*Bq9mq{0 zwkH|=Y0jQYgn7?9Lur90S5n>4L-oix-NCJ|Cg7$WrWK5MHDo()5=f5>kI|wGgVs)Ol+&v;g)baM-2^lRz}+m%qb*GX{-mn?ebg#o%14UgAZ} z&K-&yqJ*-as5Eg|l(U_g3O#Q$NbQZZrC;T{%)etC?gCrf4rVY%>?>FGdMwdG9a9+h zNp}MUs$Dpr{Ng+`KKI`XLZ{otX@*res*1@Xs0OhsNGL}Yr5yX$5d=> zW`p^V91>R<8*DNru&hp}+bt`?aEp4d)e{EC%LW+EM)Rlo=H{nIUs$>m}!C{LIPZ z7rCdSG6ZfZY;x@og5ZcyP-&YfDY2^Dk2TtS_9}%eQ%Aw!k{K0W{LW5dlc>HPR}ltu zZCF6eCf~~}BF)|Z<^cx7F5#EeqHN08Kga-Ma@@C`*lK2pqpn)l>x_MV1be+?;Mz%!tqdV zO5~@M?Qxbblph|O700SqC5TZ%O3VCS@fgLI2p+b3W~YCy(O+CEoV^Bo^|W>eODkHL z85r)YD4N8DPM8w2kuv*|uri|)B=&1aGM+)WUS}vnNT(}tK=xr=JCwNhcbGw2ZKzC0RUJ9(Z? zp4|uQBgkl0Xn_eSbLlmJJqeqC-e&mrLTKV5$od>E<;In2&1L#(lC&hoeXQ$TQM`Mc zGLBe8LUyq9?jC09^9I@|t&zS-7prLE7TuUHTCT+V{@D>B`ye zuC2!ygU3O0WlzT6uK?qTiibaAWAc1im0%TjK_6_KzZAM~rfeAst_F&KL6*CYwNNG+ zQ1}{TE!plk>h^4dkG^heR>RL%11l;LfJV{7<4de~1*O8zs{wYIj;Y-)F{|<>#Pz`N z>*&~>*5q)xS=6}TazRqe4|VMm$1L_%z5y`_1f_Q$3ho?}ODz~^HD+c7L6uENo2NN+ z&X+3ODI=0d?6C#9&cd$&EfrE1TT&6ZZB>0Ztegep`3nB25r(}2igG8xW)CG-vU8w~ zutD0>+vnO)Z;8aOb9=9>mGdT~IZi&M>}S08B9U^lYOlC2O5?K$a}BcSagjU7V+CS_ z&SJWguIa_T0&&*i8j7*|k8*<2>#CA=#y47af+06Go+mjy9?%yZKkQ_$k|LmE`~0{N zYuI$C^#Vxwh@_A&69|wE|6@sfM=ks@GwKEq;B$aS?Hpro)F&hjtENUywemjwU=7s@v8BZ z;x)hk(y^FRI6JqnU4J!_GbGSg2JG@Yd8RNLa6_GqY(dfci{BW1Tnb8Mjg82vIucTxKv!)>BC~~w_D1qQ8$2E^6$H7ZLa|j4Yc8R z=Z>zBD;$tZw&pzxxIahZcJ_hw2^ihola_EZ1b+ft+C&sRpn`V*&_CHUL>RsK+J(n< zJhBD9 zsc;nWw`sMth3L+5T@gi6|hk#DOSf`x?ec5yR}FX0x69p zvd-fILev2IgrX61FMV$M*ep+$)Jl$6Z~d@&{O?9mWQ-%L+AH-&3VLV}K*$#eR8=j( zS=(xFvP)^i#fpFC(WFRr6J{l2a`ptE{PZG$3Z61F@}o(-iuR)P<>3&&BP6 z(Q7~}(UkltwV&|@>QdNX)~U9%fW-@FN>I*Rd&B6+j2O?|hj3+S4`UZ&I>inedQVe( z-?y1=2`kCet#NLbkEK!J6%|)hC*)|?fDsL6ADTr7eh(-Y6IES_sPmIw<0zYrDY~3?0MXljox?8gwI2Bs@M-PVy4yRZ0 zN___|O4%T&;^&Kztm4%~5!Zm4W~_s>yYU}rc)!qQdhYteU5s;eWv>A^w%M8^^sbTP z(%H8oiNZ9gE{+!Kl9S|fZyVJNnfmZ41o;kle$1(Fa~%87J|zJEds9dtY7$smntmS zfr{{l2=i2MJ)ps`sS8bcaeTXhaeW;dDXa3DYA@}mExS8HPgSvTIQuWOgoxS)4C6E5 z!e!-SoVTAvD%P^+>rUf*@^TC5znMoVaX7Y@m%!|I^v%4o?$YR_Fww=vzC#Iw#uyPg zF9^}&!b(*$==A2P1yR`fj?vZHNR_|y?LcVF)_QNjT*Y4GpJ6qRil!URZE86gj8FOp zOOwG%Yf(~TQ!wSz<{gH$b@SX=3sm2k3SkNinyPZ~(RdF#9VAb{f?WlQE#^b+^v*pq z&^ypw3R6<-n4x3nz=uD;!CaIezzp(RMfNUrw5ns=sufK*Cqg9mPK;IbtqO|1wg&^&8tLy zSEkjcmHy>pk?xa(796TsUTT@{Xv&|*;7~{19q43h;X(*>lK6|utk4^EsoFUS>Dy>M zYlTBk_gqsMJ$-sY(>gAiQ$J5Y)1TvypT~8`QN5lXN!$%Mm?H1?jGs6uuSihLm+^aA zDWk61TMc8N8n72;V;?wb1XxwfvMJ&#cofmwc*GT)L{5R&Fv+PF+WQftU7IOXuayQl zT$IJsFMXn6qU>=ulnS!ZL5v7zlHFAa@)urRA0=K@R_H3KgEpfd5Uo$J>35%j6GB!1}-r=A$pll+*!92jM}7p+bp zrloW+z8&ZTx`OE8*i;^0=`XVs9yd@y3k1h{JUF}Y+|Zx33M9oWj7+n#bUQXPQ+zot z)NY9hw?eQCLpg7Cy~4|72;o&3x$%HPe6XPc(Fm0(*G9%SI$6@3weXM zQ@$_szFYJqrwy1W9)?9@L5FeSbn#4K(XM03vdF%+zfL62`cBx}ouhZQ%({Z68)z7!&4Lr8l#dEjr-Tu@tw6(Q`|1x$v zTg{laLtFfb{?6*hDg8lrl&rnFnzGvmv2TVA_`#<8ZQ8k-5e@rj{U)=i$5%cr*~%I=w$=GUH4Y<`HR0X8c&L0@q9K;ja1qOx8&|>cw1#yUZ@6}6%Vb%P`X5D>2yCi zN5eane_`}WRrn}-w8<$ht)A1F7OU3XaYY!OEV?$sacDSQW)9{smZy7JZD-G;G1bJg zdE1qK>XNsuZBZo2aQ#5pKKQ9=J`OpdyM&aU@{~go2I-9S-a*@%P7pWYc~S0T#u$ZB zr3T{%ikM=db45}L3-9Q{Jp+Agsk!cvs6D{=Gib{qXN`Cd7i%YMr?f)bmLFKAy9ZIo zdOM1GLIP0hLmd+tZRklH!fnd--@g2`7x2MR724|H#Qs9e7)Q%^rX~qRAH+B`Zowx_ zqVZBY`?aC50krYG^J##dm6B>$yaG=X9K$PK+S++~cqw|jv3t)ckd!S)Si05-9C1v& z`o2yQaU+Ff)EUP5*_0^g!!)p~jVEbUB3E2u(Eybeef_g)fz?2F3{iU97z>3C9Xe6c zs=y)nK2!8HK+5PGzwv95xMC)xZw&DmvInKX!(N1K#}r@N^ zbo+u)$VwpR_{hm!lDKLHq;C%K2(njXsA=!y_91O9Z_V8yJ>*px17khKTBQ-83wyrJ zyY!MFsNssvN{o%Wu0b;S{TGTvNnxsbcA2omnPAkd zsK?&EN~qNGF4B@nojrRSSOz&q&h$D|5u`ls*pq{yDK=ew-)^dP-}7qIJC~B;7CKFy zja|H~mr@G+s>n{c>3)y*Yh`%sLELd0_HLg@{!{l;P5Hvv4N9>Am;1?)i}afMfRBaP zTYyz@+{32DdP)RD>fqKjAV3&-l;9eWItTZ^1}tbS`$d5|MbFdk-T2CSkHTu{8qn2! zLpnK+196Dx7pohQd=q>nunQWk~OzZ3M+UjWP^_heFyK5BMjLPCdyrpno!RkhW`dOJ6A* zR26()awE^Xc||-F%P_4(T(+P!&*r_0ZFXmXCdua}TVkh+!4QSvmrDL#qyqbAoe?Qa zPC+%*ryf2c&%QporR6FaC`lJZdmw)1gn$zuqztVJyw%3aL4unq)r#EoEy>v`C;$&KHBgn z^yhmbE9D%%cWo-3KBg+=JbcU(ZC1z4K3_N(&v_~*!5)ejD8B}zG@c}_t#C~9xJN?BlQa{3!`9R@6Nv*$WXw7sRrMWp&RdIp6lqgsNl6@`5y zt`Q|Kfkj#ZJwLaLc2cnMaO@gDEwv!?dVF(R+$(>4qeAH9>x^M%k8O+uv_x(!Yri&X z?v<$excjNv=T{_TF}Lx-9FbFs;`dUftGhsV-#Vo@=|fIJir~jcgR6R`_7etE4fD=> zXN^yTMpfPOE1h($6G65FkKlbdH>PhNkXiL#&Xy#ox8-brzO4rWO69s3HH; zTHl1mK-az)Jq3*6M!v-qLs{Lz)ho_mn7LkDmIo&_0;_4T&dJK$xiu-` zV*@Oe&tdvGxerJC*&S%{>4UAhd~HR;VSU9}6m&}BHF{apmc23x zu}q6TV*y1=s*t$f5J{x_#R}+we&44xN10*|MY|JS=~Xem-mBTmeE&PGVenIAt0|FK z=@uigx(1xVAOS{#xTh;&vq9?3r$!z_XF)A)4J;$Q={fHrm4ohNu$QZ8f23eUn2xb7 z@*x+k#;*aJIS84|J0owu7sf86H#}b(aJTZ_7f@?)=s2Q0l&gW-*bG}9l%^Cct!LQO z#!1Hcj|CFVg&wWJ=4Kkkis~rav6%e=_OOP>hw#JmvD-E|4=UD5cx0YpJ+cOG|KLth z^guoh0WcP{e8BZ0u}j{&62IhOv@O*bI5fv(=~44^6C0UJxIHHGogP;Gk}==>!uE zYcu@2GH-0lws0zli|tRs+5eB z+49~Esr?1!1$gUEwp6pI=u^yiJJB?dLb#2kAHNS1(($MZF$rNR(%w6%cUtJt1%pr< zJJsc;(sMT?YFvtL4haa9g-E#%$WwHFCPmtNoa8a&P<;(pB0?_Lja9yE@Bj2R`py7I z=z^Qyd)6v?(LpC}>=R>>Ht+~^;?w6cChmcm4!%Eh1oUFh_h%KDm>eW!Ku0B^NwPR9 zV%iUbS6>6ZTmw$@ke1HBcM}0YPOP!70gKkjvvrk&ST!}g_sJ<9@tmP(8d3XSl;u1P z(ylra_bDX%_}_lg8?1YL_LHD5|;CZM;0YdNp%_<|ErZ zbsx!3Ue%Jcp`9|Cl}@`*+eH7&)V~L>I~jR`a{n$;;T3%5|DkT%n=>+mp#avO4!*z zQM`ttRaSx5n-v|#7g&y1alAey?A?FY7xs7W%bJ-@69tpm2qvs#QqN?V%5}6YJ_ZDJ zJ8n%(Qq&;N;HZ+eQ?`8`8(qg#vdyMRrwZ$Y{$TH@^6*!$*zg;e;u>o)0YYw019ub& zh^#_xI7Lytw8MVj($st3Ix9C{Z!JNttTM4X+2jDGzZA+76*$k5wun3f5&oBV{0}er zf9Tc59fEk|a1E$qXDZ`=-*P)=wHW$&o2}S3$9l`n32BjAQg>-r4U2O6=0m{JcLd{| zGS)?3wbEREvyHNSYdMV`H@}(-&;O>`FsKv}eK*v159zSoy9OX#w}t>`&F0Y$Q)*r( zO#G|l83SvAj+RCQAg&##z&in`qq`nCM)v(L1X`T^sfW9UJ~%xsrU!0etFn>TfURr5 z+@rXjlNXHPIk--ze%Y!7dVI>QyW{s%9E0S^wTcy70vY`jba91dp3g4K(qR9A}xL-?EGE(E!wOmD~z!cxi@>+Ao*Cq|hhwb|6 z$)45P)4h%-D713!quxkR&LA5d(2HBB@<1MlqYw+q#Zc`T!m1#sca-|u)sp?&S<(_E zb|dnZ8=jBspR&3zWwnfCRFlQ?N7+vbfgfE1j)xWZvDDwslU3;Xl#%Uqk+}A^bdeuQ z9-6p1ogqlueh?GsWBz1+WL~;JVIhwU?r~(74y{57G-ML#8Xgwx*W!F7 z)=XTvoKBHpErMOCC>sLLIXU!|EjgAec!WOehsINurhY0E`ZvQ2KU!(|nP0BnLtJUI z?AsN@oCQ62w=1+aa*zl5#7*yf8!Er7=WTyh9`M3>IGw0_5LE{t-_b;MI42PBZ;bUF zlyPa;j20_2!xD7Qk`q5Mp26hgT`i8Jox^yrh7An3b}ZZQs`D$RjaKoo{r@C350^N^Oa7|~UBGxvuweB0M+MEpc+LD8@E&}!gw)a@O>lZr>3)&A0P2fkuQn`nJ|;La&llKiy_1r;E?#j*UdBx zHG376H0h>!OQ?}DGmMXiy_~Tm)2eMK*IrZ-bt*(NV^Q?z{#>8cI54F#-`h&)4zM+2 zy$I|=zs=i4XG~iKaP+MzVr7hqbhNJg+sOPpBP&yZt($-i#_YTw`^LKE63c~W&^^H> zSMwWAu`ySDr_&YNED+rh4=nwsui9{G2>*bh5k6>Kj1h)j|gU=km(RP>s-0@^}-P z=gopbrj;;#@UI0IllZc+RcDhk-VoZ~Y^@R=nL!!RU`*FEbLcb{{GxhAEG`PUL-6mo zuX2hX9mKB*{&jm%dq{!*h8loU^@rjWLm4Lr{OWB@5&iSI)Yt<5&hzHNOv%ih-8k*@ z$kmr)M3zbCw$gybL8q~$P3G-T`v(4<1>?xm$2BFE4x%fDh&JvMHs ztJKl3KcbhvAN~g6Hxqt$hyUv~AybRZk&X6;VT!xsU>(&`r7ggGGSYt9x2j76xs-zb z8CmBK1NqGK(l(Gwsvv!cH^POgCgY%xqQ@NRTyG)D{)$D9@032@)bNpy528v?2@AGHB~Ka_(09{{1B8U29g z42i9p^nKh{vpfP{KM7+&Rh5wIb73uTNJIw4HQ+OHMX*l_?mlor2{}jVBJ57FHnhy< zvdclBj1p!$zpDoCvB7o9*~V~N(r4{WFS`Zq_;!ik2uF@=?IEvd<{Ud zVIL+t4!Q=crXs|xTS?y;6 zTUwNAaY#k&^9$p~w(@+oQ-l=l9zrA8pKnVKf?Uy*N&kM$$+Oz#0zHx0nALgG!5G{T z;Pz>)Swgm+?$$qN%=w7p+nRk1fE-y%e!m6=0%HHm+3?iXwIU1GdSx8u;8t_vqlnZ# zxHU)&Au)yAjag%x(F~{fe%D5FvB{(^lqVdT6nvrmSXX=QfaEO#spXG>%5?Pqs_?j!qKT}7etU7X3F>ZU=%l#d(LXN^+ z2^0xT>pKq=PdKG6uL0?5->>S4ViD%t_;qO$sa>}|h~b%txjFZWY4D?Pk0UGIMTE$H zzpAM{AifGxMIgB|?DN-kgj5-1-S9{2#Kx*<0xgF|u4Jfp@20Y5>$Nz;+NI%_tovVtgNLsOEPoWx@ z&TyC?z&h;e4?L0y&lU~sSH2+sC98aQdc7#>@-xQIW`bY0FFe)g zAy0~&f{`ZqW7f;J|B!|DFLP)k6X^QDX^aeyddVR;z;?-EF#CrF6@8E-lY`6~U0`Pq z`~6Dw<^Me3Nqb})SS@2r8|r#*pZoPnzNv6#%Q>v7b*p$&7@|qzcH8cxzxPK4KL){k z5-ld_Ul^_8XIFu+En3h4ve&@-xP2E+i<3;C>Oo$2GiF-}{&l!3*5WMS0yD&Kr_X+7 zI=?wD7-nc0te>1#h$FZa{Hr0m(aX#sdxp}h1759xs%>&;aY+s6Y$qJrU>&rAAFd(s(Nh-PrsXbOb5KLF+U-n?Xn#(hfDYiK=4?-aK3SLYT&_LpA zvzPS{q_u=rqW%s>z=`SFHWRC9ZlzVIpU$meG@9qY>x;cgGQ4 z;tcO`;X-A7xj%I28Cm3mym^$WqN2wNF6<^wkgL>OUEs99WT_%MYKe52J;Agsfuwx6Q6A8-&Hj$GJMmgby*UGK7Ll-z6uqgd zwJ0?sWO;Jfb{y`8O>#gW(kIX~@T3%{Y!H|aF@h}78YM&RVno3tMv|Yh$CYaQk#Ep` zbVm!>WV*S+@VU_SyTzoI2P5hseb!4*&5@jyizFB8nvxZ>jm~4>q<__#G2EioM=KLrORTlD<|frFdB`~s zy(MXqCpXFHn{uC88D*v2hXI5S!7wNIB(0)-j_uIZ=vqd2TT} zmX;J_7c}wScU|4oa)I*6q!@U%9_8cdaB^(#3K zvN?KeVr@&ja@E@Em=BTN{ix`+_tTQbezLv?H^(m&PL^z4E9Zh8h0`4!e`m=ff>x)h%$jY3l4%zPZOy zfhfD40E3ElWaG?5_Bo|m?j6UvXvFRapQ29rC7(3%zyR_G3GA@Kq`GH@4xnJXnRd*0 zH|qN3^5{c_0JADO)c7S+gt#`hv=x=?J#BUNi}QQuWcddpClPSuj}P&F4Z%b3}%_b(!))d${Ex`xi5Q#nI7FUeCyRe$yG7v=`^*T=m z?PLtPyY_a;C)_{1r4RyEZxkiedx2~*cU zRJjruQjO>l?Sxj3c20`<2JZ@R>P>E5s*LP%&Q5JvzM%ZDqH-qDR}S==5djgi3b5;r zvVO9ZkLLv#N0OjaHd2ixsTuHens!@ULiy_4J!)KF_LaCiGeEFIvCm$8j5o+D) zhRm9_RD>k*=ia=p0iqKHR&892eWziE1rrf#bNHWzEcP0TX-b!`;tQdB_dvy^OItU+ zSZ&QSktYVMSJj8oWe2u~)GNlYrqW-b2g{;7m8J6CrMjSLC|@B_^8sHuUjyhxoGXvV z;CWCWrWeYb4XDma>9(}^%U6%N4%gjld|C(LHzk>_ojXI zLfXw`+Ilhh-mH$+hN!B(n)`~AEB$GGR86-X%rup6nQ{5BqxaiD@72u6hvOpFw1BkF zleN_wZYOszV|}tYLlZ$c$*$Yn41Onf1LpwmhAU8)zrpATYi;!K%m%%!(v(jm1X~QR z((a<^w4<*dBv+%vd(LC(-%6rdsS8pc0SkD2NPU{v6TzSp?vG1~eA5*Gz|B@c9zTqk z3oq~-d&4gsIe1*oNi%XB-6&mCj_3upfPMOeB%G4geSi2+AD={>V-rrgC<5p4!9OBm?06`jW`BP@MaGLpbj$(P_@2zO zA%=gB;0rNpKjr(3cbK$WDDb{zLjyD9e9;QoCef7K%Wq70vd*Mo%N%d&m6Oy3=?$FxPh~@OUBaoCSiRFP&r@xuYUd~xt2fxKNllb1{}`{8W<%tLK;MjZ zuAXsi^!udjF^?nK573s+8!U=M3g0%5MYMj*aIHLX)kd8!Z>nzJWoSpkD(cr}kTwuk zEzMtt z&x7JJA~Y)xP}(y!hg@Q-Mg2fBvv|8aS~%Hk`OBEg58FhwZ%flol8QuC`W8VOyY`tk zOG}K3q8sNgHaxMBKiyGgKD#o*fEdzl+pDu}vh}p6XS1HPwj#~|o3AO&dONC?RdaaY zlEn0x7&dhT^cV73^QOoU=DEHDw+Sn8#u!MI=N5c|C3m)V-{a8@?h)hR1P5ooUFIbnd?Mv7creHQ$JfP+_0R1R7~_C__h@BYA0 z71JS47x$WCs2rDE)|l`^`s!IXrB_YKd~=Me@@^Q?@{t8Jz(r6&!v~8Am>uk~W_B(f zR{ZboX>qPcc50T11<`2wcB|Mdpz3ob*{XcDo(5niZ0S=BVlJC#T__OpAt61XoM+0; z4UX3AV7D=4GfAYj?r#Dtb35CJ(B0f2$teur%a}amUZK=rst>TPb69XkmBBmp;d06i z)R^_1YUz@dbj?k=Yt{Y_URlN0f>&&hpe%6ZlQ(OWYW@kiI_6cWD?;XjHhG*^)jJ8( z9(GaTP%!r<-oi>~R`%ZsY3bW4v7&l3%Jb-$F@(zT8NFVD0{-KNM<)Al&b|XTN1Ztb z(%RZKb0lNnqR8^<527Gs|)PKH?o?GP^d$W0HGNJZN< z=-$n~3?P|Us5F_j$w^Y(d!%UM9a!V+N`{Wm&aJrt_5#l5qZ?+{m$^S-HUJ%H>nD{z1*^Rf_ENhId zTvQ?5h-S1>GTso+ip}uqo5Upqz^&w4%$X{1$pFe#V&LC+j%KB@PoR!B0v@lT>#7vdC(+r5s1NmxWcf&f|O4URk?L!~{#0CwuX;<~booJP~D6 z+mOy3(@q*e1I3l8lVh6s_<8Q5D#wTuT$^xkk+kf`{>Q0FQ%MZNpG}@u6T4Y63|P!C zgi}A4>JjsRrN4?&qV^nKL(D<$~bpLXxViXsN}NgmYQxY>o@$RJPFOafZ;WIg>mq z7@?Js92Nf8+ozpa-r-3-sY?-LhpXc{q8~r$6ccUS7r5iZyW~Vaa!c2GZy`c2kkqB{ zk=Xh}WJ>aVlI)HLA4aNot%^1!*nVM}Xy9Bt15MLaRt!20q*c{U8oaKNzm zaimzTw&qz}w`d2yWlQVZA01IUeLNwLM;8uDO5deJzFM5=}Q7JkB~uSbK%I^xt1 zwAp}VurDr(Nj-W`eb8dnI)Rijvj==GBF6_T*u!`{h$aJU$=~yI29#W3CQ}iR7uIgH z75F+GwI^IDw$Tf7U#Kz4T#47O#u?hUG@4J^BxISMkZN)U%6qcNB!Jz-DWDB}A_A82 z;_j(GB#(&~Njw8t4EvQiT~>C(laRXjMR0B)aMIw~C~`vg$>-%V@+K>Nwb}7sil|&K z;|EVU+Pjg?sa2-ArdZ$Wegs|L5Zy7VAb(K$?Ws0Dt)G^?NQi{m(AGJV#E1%;-M|3) zKiIVU^W`d~;f*^&)^YET{9S{*A8#<-rRU%p5S}e!XHOkwV}rBp6R{Uek5GR5C8ndW z{ZfPCM!sc?e2!R9We50M>$S)0#uK)sSFU|ehfe!^wNoE5GsMpE`#a1GX7ld-s{ z(^+X_L*-a3=yC@qLP7CDN=j1nrfAH=QrOWRWT~RSyNbvRE8KIu$qLJknFDZP+J&F; z2>oyVe8o{o;+apb)ZIX_wIO+}tg()9hv6_XNXZ#!B^E0JI83LWs$f3?I^8LZW&SB_ zFCOB6br2(imO@rS|1HncDKoD9q6yi89^}9`q21<~p5rc%K6X6z6n3Ire_f92Oa}_ zD;*BNGpbNvO;YEb|8IR0?F#i%jX9LzAk#Ir6(5fK{UGF&Vxa%zs6IfDu>Dqm4F(u< zB~11i=qYq(3tOswzK`I_Gmzk?EB~*>-`x-8f*jR_=k;eG4}fh_`vXq?0e~faCrA7S zlA#;z(8`n0?HtJYKBu08pxzsgQ+tC=?^HC?4-f`oISEsLKTV1Mm9M(4*@vSb=P;vk zYK6(|{<;$6q4N7qSm2ob1wTOkKngiif2{alYLKoPT({gaCr0*{u7AQudFl)TB2dbI zH%9tt20vj$|7_oIGU8JJO-7!dFm$dF%@X=M!Xh{P6=R(r_y6Y**3QhI@GF>oJwlhQ zqGi%IUmgQk?w=z5jBnDodk!-(T!7SsI2nXmLI=R;AD0X9I}*O}KMGPmuHnA~l>hY} z!kw~73>m@aG%WW27a;Lxipx+nNV~!p{dKF`GF|?6WG8LHqxut;AR^`eeP=*VB>re6 zcD+yKoNWIf?7et@^@>oQJj&c8*n7KmPVBnUKWO-W(f9v*2e=?t8?wzbPF7OdQs*#Jppa{A|v`Cv$RR+fn-=)c)^yKW)RFsEB26F+Y~*l z{g&9);fi$xKLv|bFOMLb)0W?1)lDmPO8JB2%)@t9qfL*(eD|0)CEY!|Skt!`OEZyW z>7=j^c?$^2G#S1*ayu2!m@f#95bcV)&-_Jm~%&OjyxP@^-@ zOE>T`*!+|~sTMkHJyCwUN5LUTqojF`hEDN=qCCDzQCV4nL6{=#K1I3p*hk-v&jNyT zrDmD$n@8U9S_?HcXp8ExS z1$qB-uJ+`(#Ub{kI+xoBQLV;v_gzWo)sZi9b8Uxbs$>cn0;t_ak&k)gBm zNpr%}NL!INnk9axeJO$X{YxH?T9)I5q=EuGg-^u~9D643+z9oatx~+YhEyf1W*1g5 z>A#=TldWgTR@m-k`{hmWDEs%T?#{V(x?NB`UbM`jg~7=hR?5Fme6M*4|V4-atU@8(|`QN*ZwuSVg;F$=?Z@eD78;?DGL(gO+L8M?7z_L$hrEl@fJ#a zV?gwPZzvt(L~~F$!=q7Q;mxp(fj0`U-|=FYA+u+g$ZuYXrjwbv@%H(AviMx7`VMix z9YrEHB%lW{FKNsBbb3E&AupETRa&Co^k;nP#1J9(5WrPz1iDKzvF;Xmr1Gq6P`^_p zVn89z+IvuR$UcyUD~!ZP-1xgwo;E5Mc1uU!k_gHlP}1&rTp~yp_@_0fF^gKw5&3=AWEfIud*yUZg(a)E;D|$WGlDVcgStmRtW^4JC6PjXfts+gEeYD49UPK6S^Hg>k+j2-=5^K*>45UmC$)7Q&$07$7 zD|MoG^Im3#%#iX;M;it%i>L*V@(-MBJ&&v|KN#QDW=eSjcmn*EcjJHPf6em3)3mVo1dt#VH8b7t3ZX9Hbc5$MhzTZ|wxAK8RH(qt6X26+b+8!HKW6XXC%by6h zs9MWiTNbVguCgjV-fk(J)iMqJrN}Ch&_8TTRTV!&>peK%tUJLIF>&lB=6&emaq7id zxotWWjCw8nWTxGTN<`>zS32EaZqzetob`g_mcEb&#v;8UVTjthFlANfQp&JUb1rf` z>#EWhd*a8Jr$g;jt-hD&oU(K5sTY^;M5j-Fsq*B~TGa@_dlvRhpC`QNa=ih3+DcJv z$3HR?>FTr87@r=bVe4l3gzocR!u(C4>{YJBFSMDHA$rPn^OZW82Uf|P)@cU%7A{r6 zB~%+PoxM`zSNUuO^aa+b zk^4bDPXe?=p|B*KKL?#VxbU82LQbl#pR9NFy4$_o2^+)Xq4JgqDgb;xFV;3duCFj> zTP$gel;qYbv2WqUhIJ?4y@WdZwOq0bx>f^j$?%OL7fda>TH7q^Ul~Emm@y20c+PP*P?3GShuZZeZfM-Q zEcmlww3U_Vr=y6i$Adg$@=68lhh7mgFZOg6uB}ySxKQ6Dr>3=nZR=NlMxuoWQ+61` zo$n7lcPa4*ju4873uAf|A}IQfB1Nbgs)siQSW^lzlULpKHiNU}jIzf{YX=#Lsf7&9me-BtW_jq4z)f5$@W&osm3mXIOELie9drjcIqtq| zEI(0)(XDZy%5v{?bzHYw*nFnLh2ZzYiL9zTXx>Swj6c(f=YN5W2n2R*zucI_oX^k%dOmrm3Y78N;40$1!n(Af;Taf^0_rd zZ=&0Avp0|lB?jMQ%2Ct_u21yj@)ai53ER_J7xjHvaBj{CcE57n?=oA7x1KD_eqxj< zv81OkW*quTuNAH=M!F#s`k{sw6KtF<(v=r0G=FHU>PMqBCw*+add;rofxEBzW{pJJ z8OX|_Cua>Qzn+`VQ>I)mbi>N(%j<$h952DGkcyezHM7a7*kkNf-Ja;uHH_C(pfK6u zq>fy+bpg3aZ)J!?n}FdfNvT>X{f$&hB>T52_D-uRy^8*WM@w-W9MQL9q#`Yzx%*a7 z?`LnIO*6l~WWS{~fNgUeD~qEvZ`*qk%0`V^`0{AjdUp$BVGqxbJ;)EekW#xOvm@zu zKh-Q--(UrvulTuzsHvRb`b{4fRslT8R=ToRtlzxpEy?0x!HgA!I>HpavWE`0jl;h# z_*&~GC*j+aD))_z9N=wX+^N$^l%$RR2VJc2dXZhP2>iM06$nV#TN3PSE275(x%J%D zx`b^9Ug$`eR^6N?}Sy=v?mGkY*85yHAg4q?{4^-AuY15B562a{^fw&C>NB|tyFNGU^J(0yX zqbCpozy2b2ZJ=bWR_9q@t9-e~hqwew$t2)vi>yiMZTnZxWX(ou43yZH2h`gidsdaQGq15o_l_wLiY94kEu0*(L zw;&CKkl=8ij;=)93b@jgNU#QrGh^Hu#!Ajz)N685j%TyNH))U}MQ*8z0k3%5N;kf^Be znI%$|@AJV&7vD7AB>GO5>8=Dg%s|_y<7Q0^flO5qm+31jLoSm$7FGPBJ4c_0)8*b$ zJzKrO_?5d69Kgoun%H6?y z>sy(VZCv0qN$YL;{YxJ#po(i~ANh0?_S)38BF!M0G2eW+czjh||EW6a-mvU3+(Bcc2Fy#*^UcM^K#-SB}t>RZ471nUF-T?)VqB z8`2cG+4R#mo0irNjqc_Cn{>X~#a3p~E-fysxuGwV#nEfo+Zutkn`k?}%$zm#XA|<4 zeLV3&hED|MP%kxbgq#kydQn`KSn|>xqQqyb+Fpr!E3pq`V^A$R0=EOL30n!{kmDdo zjE=S*R3|{>rK>#YrZci2Ad}|WH!F8JOR_5Z;bGK=SMaOk;5&Hb+xtMVriW|KkZWJ^ z7jtrFtuK1YFeFvA=CI_wO5~cX?p8~nXs76*wrgC#*4d(c6HZPM-*#A7r-UK1US$39 zx~M$6}~gj-VT$1|3G{1S}qyBSk|XZj)TAnnkk zYl7Oq0oZSmfVY<8zW?OK@}i<>hMN!QAl2qg;r!?;w55!`Xz`h92*Hu;lx9S~%xq1Z zFK_p7@ykLDQ~b}Qz$1SK_(+LJ|kb zv8Gw$^+m&{(9!wHOz%ejY3d-bu13X?fm(mQag=2pL;nl%SPgkEVx(aRw^qnyz4XKz z;}sx7hyKd_9UkpiUtwVD!1 zHgQJa0GpCv{l-(3Q_*j?XC3d&&d6<=;J>>=I!`R?tZrL=TtdIOac(q&eBDM4_jz*W z9r?4y@pzC`g!J)$I~}?}oO>g(e%e7VGq|*e5JukP;E>u_K=r{@x5p~$W3+({1|lGW`P0)^oF?Cn-&s^LIgHc4s})w9BDw=qch}7GHA(Z{0^MmqlhbLef4hq@~uU z`>>_wmtJhUmyvno3jZ@?K}lSQ3AYdF_XlbMxFX_9f&L@Uw(F8+-7?6lc*yW&2=d0X zxf49H6(#&2??c>f&(XB!S{Q7hr;cwBh^j$32hcqvDYXNNBRr=-zLIk9yF1q+-BNUA z@JHGERU^Y1JMZE!Jcg3f9&{h+XvjaB4Sf%HvbJo|qV0!rY%3(I=E+78%Cw4I8c#H) z$$_>bsz1A6h}lzW5nm^HixV2T$5%CwR+hUHTy^{?xtA~GD^wczc3xlVg`Dh2k+ww*z?=Q5CK~e~NWsAFW?w=+|r^tN`%w}s1{`85kiQ44NRJ@|})Cgc_gA8)I z*ebT3pozgLflN$*&j;xL_K$hHk$x91z=dn$X+9A}^Wit4hcak9M+4mf?Lw}1vQ;pkOrc@}~^HyMhk21q0Ajrlp}>F$~N*`)Y$TmGRQ0_?2k znS!BF6NjNk*FRlSQrI0Ef^HQ`#Z2Y`(paD&U!coxABD>f3{Kad;hJZs`T5_kAG7CnbG2{3$0<{dTl^C@QFrYFn91%)WgRRrz8(yx2%?PnB`-WF&ryp)7L1(5|A zV-8RHl@U|6`3!gd@Q`BqbTyF>#FTj~4?tdT+OK>1^lt!!jID!6QiHCxJpC<67y58P zb(Pi2^D4j2>-Q~wO{Qg%Y!>fEDP!`ydvo*!V}y)|JooR%^V^=j{wwIq_(yPWz>F9@ zPgexu{vWTNPmw~)U&LY3?Eq2Tf7m21AkY4NL8{x8DY zCxYI56*$a7|B4We4J+qpzY&4hewM*Bf5>2BH~J*p`69PbPlonu?_0_1&(6wyXuLT7 zKEYV*o(172qX8#RHC$m<6ux8Z~+Z^HWo5uMvY6xl-u@j^ABAq;n{OYXD7iyQS?NznPsM%H3 z)XCD^+P&NMq1+t8)WYqsqDyfx0XHAS@b5*ebt<$8(5=s6SFUh+Q?7-gLQaQ6QJCF0PJlxsYALe%`Nzu6|;C`9H8o8j(b-(D{k%KtjG z!W)T2#lOvEzzm|4@8M}AKVDFEe5Pn?3IC_mW^nOjBTv1(AcHRu`+O{pIEL!9-ra06 z<e0XnvSCKhZ07ff|UTj zE@mLO)>p+*gAMjLn$+c|-=q#jQ_n!6D!>qzLQJS5)|FELlZx>wWN!h2**3?v4nmhY zpr_M)-+TdQL{+t^buTHbCt!W9BLaUv2}K_(0vZKM!7zKdLfOD-OekQ8?}<7Cq3TnA z9)$avj5D*62DI=1e7p<89`Qi`7-3PoouiqBW$UMTg#Kj=>duOP((~p&nsfC#`f8G_ zT*O~y3i)FS4jeQ84I`(kn;5n=OD~Hz>;7f0e%^*S7hvsot=f@1iVxm^f#{!4xwkYY zbT&?ZAtqbjnB;XOqi{{ntq38pO|>cHByC4$T9;{Jt;$FDVdtf zwJuoj#+$+lY+-)CcHmRkcx~Pl`fkyIdqH6^&Y3;q_yxzY=;9%E8v{G(45?SO(pL$9 z0tGXV0?BTAA32L!h4>O4;t-+`TWr#M9uDn1c&#WVW2_?wQ=zf_AlyfYmr z10AM}Iaz_1QYDn@<=e5!imhu#Vl0Y8snI#+w@FC=Q{X!10wBH}lJA~#TT|EutSaDv zZvh+H>YROy4m%@Kx-F(tqC&|H}0K;k)=Jk=Si)2{H<@8QO+$ zg=)X}oBNZXSnTygsl538>w&f`f@N-Zn9*=K-1CVeDk8t6I!~=k+*&ArPIJ&&sq_u* z0`8}r_}ix<`PdXC@j%XdbfL!<_obHK^em|H1JzJUgCe3zmz^Z4Ua31H4zQ-fFxe^~ zz_06J8<3BUoh_aDDB8Mlo63@}@8zc8z=38llC|kU`BDe=B}*AFIdwp=;c^t8@^OrP4KZdpF&jgqZEdIvZIek?r#98*3QvcMu6%uWBHuc2=ML$^Zc!Hi>ZB_Vj!d&_}l3aoydgtUh2VOdjK~UrX?@f4Ay8p zc8{|a9Yo3Mv4M2KfL;QqZ2b&`wh#UDtAbNzN6?QR4Cu}sprY8Nz{ykRq%)8h73B03 z0_5IH{qxHqE~8lRB5gaA8x3u%Pbsha)4+fA>i_+mU!8%Jp_Aa@@;@z%x$#+%bmx=L z-*Zh2i)E+1FK$CA1*dG=L?W=~KG)#^wpMm-4+8rM7{m6Z!wMm<^BJ}mzUi*=la=9C zb#WMAkDh)(i)Am4a4x-Vc(MBlvfFa;h7^E^3oa^6VLSS3U}47=a7g3HX{VKKiuS>& z{-?PWJm~4e8$g@E5BYMoEeY0EhL3n|n6{#ciW;|hpFmGp&u^Z3EQ`mgMv2wTzyKP> zGSS1{H6Af8yW7^vw%PmyRWq``x!nnRD`){3j)7i`U4X^Qr3httGFm+Em(ftQS_55O z2qYg+s1uL^I=R*kZM|z)ue6t~*o);ZYg&%L8x4o0%)iNbAY}S&X?S+s5I9>kaf~^39605< z0oeh={rkB5*dTT-Ri!pxWM>A9-jY9n*C*W=5pz*Qee8N@JJ+-JTuV{FLqie3Plzro zuVfPENuv~-hPY6qN0~NdONNjozcF^K{Aj?xGWS}1IuM*({tgJ+O_dPUJR~oHIhzwf zHEDRQX3jvioLJuHW4bZR33}eMv%B5;SELsvaYqLjvo;@vh+J+>iG1rpk}EILsU7?_ z-f7fdQj7GpYx0(H5hB=$$m8o*2N{Ri-N7M(#f&7T2shaAPo=30k|0nXp7i#dxNPS7yhYa z$?)0$!7LVIl9=@FRC`bOxk!W0Pd)CHKooXzUgp?A1i(+P z!A{Xrb86(cQPC@*;AX~ zl@W*|wDZOO$pG|EyW=Jb=o}rPEY{SyUmQ9st$v;?_~(UM=9AbL)c0^Kz<=I4o}X8m zQ=-&SjW1jsgZO!fzMuC!r%#GyoqBgu(<=8v+^vmU?HuD9d(>qRA-KW^jA6zAL)m2d zk3YaJ)%_>!+xue$ELt5F>uYQoiTG9Q>H}0D5x7dp#ktSipYW$y37OaZYJW z%SBT5(h^iG*BD?7lD~@#Pnj<~BwhEue57$LX<=2AUM+duv)yXw9%KXRiuIi=P*&1T z_Gi5?~ZYbeUHEZ!ypuMwXQa>hC z;!Dx;E^~G4D*6r}ErKB14^>&Z)15g>nK#v(=@4zO38e=3Gzjdco|o!j>8NVaDen`= zlym1FX}_5pF@Q7+9JjRqH0NAe092;GRgx>v(X#7 z^7J0@iYN^_x+zG~{eF!XYPl+(Y28EG=9uz($X#C^X&89%OkBw?%niWvcnEt5Thc=6 zM|JFw?xGvwT7B(L*pO0?vi8i zCZH_wOVdetVVeU^bZ5ne+EsHM>+3L4ENuaa@+(^lu3v}-~s#ysGj)%D0To)jF+ic5?jnu$T7ni zXpBW9%_9+l{LZm+pbFV6rc~GyO21wIG? z6+~?+CDD_6lf=uibYr|6HK3<^-6XD)?-J+`_X`b|Hu=;Jd*AfHyIbSdl~o70;A+LM zH(N0?D_W#ChW03XCS<|Tg9R+$F`^dtBh$YqQ?gqGlWI-G12v_=$gdP!InZBUa&4xgx496eNfIfz2xc@dk-WxmmI!LQ)`_8yeXGW6{!E!T27gZ&JL#=NMjX<5=tMQ~~i zAIoy%Md?){z`Z0F+E8})3=|khS`LV#w=`p4vMHjyn3msRz6jCIg;eCdCQN(t2JiZ1 zk!(qgzRg>~r8*A)f{+f|3Qec~T}R5&M)x~QqLKm-1?G}v#4zFC$Mg!JTVRypZpJ|B zX)9&`o&9HiU*62jAxp2-%JfQ)aHgfCFMa&r_K2Sogk#ibLwe;+|XXJpX_7^ z-Av);xu-t$wH@qo8*Swe&)l+^MQkTEPtkDC!K#W3# zXd`?<4-l%o@9G@MOGHP>IAj&gOM1^gDSQcKVc_@HjQr55rd9{{*N8Qs`xrXy5KU`S zmow2YI`8e#{KRcr@=ze)%dlb6DO>Ny*2OCtTuwWz%`VEZLb*)@ZPKY~xMLYmp~^J0 z#tsMURmSEF?`3G9U>I)bi)YuoD^HY56&7t`fPCpCik&A?5V)(c`u4=v59%f6zTgNk z7di}u-H}sX{E2MCspOIG%!_Z&b=>^hji9x+fYfO|+UtDoaL5Nkv_ioRxq{vfH(r0weUW^v9PJ@bA~XK7!7$LJ5yN z^(S-k(L2YHZ9qwqcDtm?b$qD1Lo5qlt1;c%%&uw=I^X^}A}fvXy!hy$x?~D7GwzC$ zH*Zdc;b^9T&|?a>bN_Mds9KH6j`yxyHhay3o0m!EHk9v}L7nhli+;kAb`ZZ$X1i&N zMJ5P#^JPHTo~NQhReFLPv~yu`QXNyEntX_cKOFgrOG}jah zP>Z#?&{v%nmko(~t-;%b-KopW z!y&X$YjWoB=8xKpjgXsG&YgBNHO^rb9U@~<<07x|u+g9GwjG+jJno^6A-{@$qxs<_ z2&(_h$%yR^{w#emd1a_V|K~uRVXlf-_ibm2y+R`qOde6I)--b(De`tf1WW=74IQyE;9$k5j_{Y4V`8Rvqqil>2#X z6?+3a^hUMk1zx}%EK`rt{u0E`Rn3CHfi*b>pR7=|a>J~cu(yv#ZtD7K;mXNNqs7R? z!iG;Yn#m2>Pp-z^qJKaqLmxzXLsITmFX0Jpy*_#Awv_*T)u294mE)exBIEn7OEzBk zs}>5nS&80UMiwi1$!)uwBuB(*+tGRCltE=htq-GAY}Q}dCEKS|#;?>k%&ydE<(C9% zu^BN~r-;HPMHegMvnG*A6t*u{7^fukj*nbdGy727WNVe@0wCt2%yDlFDZiA24EOFn^`e z__^izXA4)TWMmWNK|$Qr>?`AZ{0Iq<3C5L%l`qZ5&Dw@8c~UY&^E@w;?N5-Jb ztoqio3AcG60VBf?is)m>>$Hm#nHX{7_hCP`(VO#Uotw~#3Tv1T6JJpQ2Pb|9h`70W z`9a}2mS#ISU|NKIb1CK_cjnes#@D%CcVeS<6kK?xyqPM=_}iCWIpp`m+^&9^ci0XQ zK=Z&d&ue?jN@)E-bFSsh@z%=?bcQ&aVz`Xsds=ErnfddMMn#j_$zwN<(~oEo+fT5< z0FS-`-nE>sV>tu0Kdw0g*+VdR8ajXXk+MP43lhk@mC67*gs;re^pqnZ%M#!JJG&8N zLnf&edvp~t{kSmK{n)!b!{WqsCI(XS4Kfyq=PiBfAO~i=V!k|H?F}79(24$MLfjJ} zLtxaqgN%W9C#mPEXAr=mygoODv&dmfv!jlo!=>DL?VA8}UZ6Pxu|cO*mjN}L3Unb9 zP58rxZpa1b;w*<_(62eyb5Jt?v~^)OuZhaD+eT5lYkKh7H2iyL&)!ls1id2UaC`yAH}2k$3puafg; zTekDWkXSFh8o&$-Tv|81|xNFQrytnB}Us++l7-yJM1f#~*WRxGG zTNm`}q9%TrOwPSK5Ewsn)(?vb;QKN5Lt%QZhv!`QCl7P^D7_}LJ!mpuHmF-|ud;lB zlw7Y-S%4h?P`o;NU)_mHzCOrUA;+{C;d;nT_FeLtIFax1^T^r~?tGT;j0s*hN2$~! ztFKj3J})6O=qJ+hImXstCulTuZspWtP?Ty1 zFPVBI|3Dyr?qhS9u?_!)2d_N9?xUWJ)$;8|1A)~==unAmmxd#@yOf9^;le`C=2B-W zIvR(&%ic*MR-gLo?&?@2^S+blOTE;7qjUU5@PZVMl+l*H&g|5CN?71jN4P}(dqEx5 z=i;JyuH#U`+U>aFxn)r`aAoAD!@NWt`L>;0!&QZ#wb`TvGt<5+J04i65n%4-fS;ms z-KCGk4$V3lvNoG#ABF>tgSU*X za=#l%Mh zAlO&RIf|&~a0+!5pUd@^O67S!ug|P1C9+Fo#2Q5{&$}i#Dzv$qDlq+Ihcpvs9OHm4 z%>tfieTSW}B~IF>!YVgbD~P33IL5-BBEiA5JSA42)-t~*1ozRc%^P&8ipY;p0M z=r6$wofM{Rt;Wsf6VW~DrD~FiIil}pv*7lFXsQ_+a@Fb)VX>HPtzsshA<02Jrk=K1 z8Nq2gEe%?pqgP+r!d=~&ul17@BmvcO+(=<1b!~g8aUQ=UvDildLi?sC?zGBmbpR)) zYJGac(IfBu%+pUN*Ot&BEo;qnINOOWor(i=l@X9|iX%uKDK6WrcFiDE<#s{awN7?Pq20Cg;r+eN=fu@I&D0kQYZ{~TFl2SMfj-j@ItNMJ`@iv zJdon0&ty|DZo*SYU=kLxn(0T2_OeWja(vQkY%D3uXCJv-F3cBr_;3eOA8XcD-J8Cv zIUUD-&lIdwjkX-u$J-t*^~zkUqrNU@x`b@g}H?TwBONCiRS1~shBHH$z?shaMeJ|$PR8)~Kh^^Nri)}_u zjlQ`)_PBbJ0XJIzt4I94$AsBeZ`_1aQ5s$wn>mWe4nGq>u5|kz+6Hb&h)xRcGoZ{? z998)cRn3u{8PKQSgC8nPFiQ~AqtdTF4!OcGRAh~J1}aI5KG``au$=|JzPr7DC1)8S zn!HXrXI#;w_?XyB*5%bdT^)Bu(w}3Q?vU_DkP6k;~o{rH8O! zRdN1H4g+}VEcH=g;%#^KbNOS7R&U8UIFxkExD*xehqugax<`%=dHtZ43KJivUJE&r zU!%@b$3dB;2RL1o3Rwe{nY9E8_iBF@S{zP*}<^l&N7 zCDewy{D6*pNwz6yp0??_c-ofrRjZb?6@h-|SV@mXINTge>?pl47fg2-YG+0~6?Ot! zZ9RbB*nxZ~g^=nWBi|+%shs9ILg)GFS=2oV2TYEBo@bz()rXeI(k{#ZS}4eh(!zawm+eSxuSd;m&$~T8>@#VUZF6THhqjbs z`78o&$q$hj6%B8CK?9(X8c9d$FMOL%o_-kA|3&EJ3wXHp!yKMCny4nkxH2fzCiP^P zyWau^3Doc8PUk%=frc;8;ti0i@02B2-`fn5TdX)#sy=?BpS|M(jMrdcifiq0EL;X? zkwLd@d)^$45N$g@zzRKw`t(bJ<3rc95mf1ns{JWFSFV(a=0O?)td#CFaazRX^O* zmM8&ibn{U21RdfEzw%r9lQjK4Yr2}@J0Z{m!l#ii>0UA@+L3a9%QsdLn(ykfX?qY! zF;QF8ZKrSdyDV@2LzZuY-buyc>mlmpzRwOHQ1J_RyjSaW-(UoiX_|_tyl^XmK8wC-}q#1gGPumzw55X zzvWZs;wk=CucQi1W|c-bUBOr8yh6a3BDXCv>%51(QjEA*;+dEXtA@jJmkr1%O2B^Q z>P3+8VjVTeB>hGBgCpDN)LA{1jo3ce`j~p>5>~t1gmw~vaqmu$;d9fnHdp$rUQ$Pu zq|pGwbGwoG-botaI)}N*2X=xY4n%6}N~3pFTFyX7e)-Q9_Gh4!hN%^9z%xyA?#SEs z7{i)%6gMZajZMHrrdQ~kzO82k1Q)s$*mDnWrwNQB@}rp9q*h@=2eIz^=jLmLiud(SZ1Pl1 zeU&QIFgIy|dK5{K)-eI5D2dON#57_ z!|1gNy%Yua-Nd~B=^uli=IZOseH=ep)3~b{T0%P%t7_RJ zCg>&654(gLbvJ?3q(EL(j9uih#x1?_27_bpG!P8V4P{X|(h7Nm8O}@v|19vm8X8CI z1JdgOFennTrptT%=$RpO!s6skLF-q2yow#Q<;p4|ve+x$y9)j)m}YEdDJ||cO=}?h zVso##V?_cg!jT)c2|p0YE!!ChVXxsd6c(9zL+!$pa61*uUUWiyh=_igw$(|~t*g&r z4;%V|?Akmfsbh96LJlYxTrp24VY*_supcZX-HOO}8}ToZ5q>huD$ghU<{^3=e?q(y z+)*?dH(p)%!Z<>v{eCTYy5utUer=q;{-c-7`<+(-b(iyeh@X%Zj&JP!72Bopbx-3t zRz;i@XQX;Ko~_FQ4vExelke-U5QGAHBx2HatqC>Y7P02?-r=jylbfOSuUMe(%Wvv> ziVa;&ONzjI<^f72{nr0hS%VD!qHGdHx9qNa8M^zl(SVFMiEmZlAY0+{3u&SnVlMnF z8=!cLBluPgmuZf<#cVzavvtlMk8wb%2zV6|+h5}kgp--9f-l>!Z`PR)F}^p0#R80{ zwu&rg9Q6_MS%U&aJPUF(edu8m06l}K$JL0pNa92I2hlN>MIsT;Zg+BFCal?Z!Ohyv z#_O%q27VEi8nR@wnq7^!^=yro5uFEFS?hVB4p37}XGcH4WkLUZv$c|uet;zi4w8jrHf267Gp&s@aBi*zM?mg-@n6HEW+$^bcyOm71P|^`aF^iPNN@`fAi;wM57M{t7@&P_pLgHgr3Y&2oJ(-pgpJ!RW8b} zB@|_fDv}q2k$o&b0IRsT1-VNCAl&(#5PY8h1IOITwZ@yekhY3gR?WK7Ek4NhQBBP0 z0WxedH|1Gs45wWP;I6PjhR4Dh9K`ApIw{bZDM#g!97CQFP!^Q*7G3Al?*)@%j%0B< znBlCWQ$-ggbF0#SxHo&|!+qL~_vpNQ(b7xM!;4RV!t!s)en^da|L>6(?mc4eG_oSRK9=TR#AAe_E zG8&QM@B0DrM0`~n%MpSN1b-pJ;O(Yk4n?&vKKl>h`$yq*Y}x04qM+o6x^ai>bkxr^ zP%f)ohmV6#Hi0UB#7EoolD2#46_q-}15YB*YPhqp1Bi_K7)VKW+&fzY=or~vH61)Z zeWW3k$z?VY4-P@7tX}RGP*)YtZn2p#G%9i`7T9%z?`GPhzdz24CAx z7%Y@t%YxZ-*`$c8C@~v&M^fqZ%%|Kb#|7`rz9Lb9K7S1_6W;p4ioGJYtql%$B$E?A zz*@H8JfxH1t9SSyC4o-$w$>C@R?(n%BsNOfFk))PL)IvEIjd64bFmpodX``P?r6u5N9nZ4PTMX5ots`UuE@!bllp<)hns&7JfT2$O0 z_&c-to|Gtrd$Jt7eUzc4q5bkZh(s0T=4By-cjel4zaN67nIirsrGx?LqBUwxH1++m zpTPO0l9J3+q6nE-k*I8;w(-bkr$cVu7a4^ocW&1|GPgUu!CQ3MA8f_HK;z!r{a>QF zFYfTp@6%uC@(vpvUJoZA`Pr(>2yuf-k$Fxyd__SXp_&r>qQ+hxE?=2)If@p_Mo!FQ zB%gjXv=sMwiEYE@#L;t}f4D3+c1_{(Rg0v^nGkR9iKkoHOGva9D5WzslVfdE!Cw8; z7EhBYZ?Q<%k|eEMrq z5rB&wF-tf6mNpMQ>m!ugOS@W25(V-7Y8iTuxBwt5<`weD|A!}xETdO1M$Lj-;R;H> zg416?Ef8QcHqZVR+z8oAw0;cQp*b74ITHKXrJNz52mhpqLZ=Boz?r$RX35=U)Oi&STR^763XsuP}hT(|W1aU;Xo2HijO2 zo8O;TfQetb`(GEV^U_-JN1d~s+@SsH*vp?1;S8NTi(o`HJD~m~k{niD3M7rHq=z9G z_0LhQJCO&Xsv2B#g9sp@j@ca!ZrBw2EV?5HPNfU9;%CK_2&ZrayDL%96&zb{bkY04 zU2@I@OC0aEnev~M7?VHev|kPp*jf1vG#FFjX|2f7z*0xz47~da zB*pSixQVFf`E0f(tN z3F5oelw2hv^b%RTnF0j)y?TYO*nwn1t-ro1ypf4>k3u?f{2*#@f-wUo?p7#F)_EB~ ztuc^ghQYOg^~gD(@9@0l?Pj}^M0pWPWnibwjBw?9et+BRir6)9uuj--Af)_6lT5*= zJYmRNK5>4m8WP(LuLuzjm**$fXAY1;0L<8!wU(ZXXEv1rb+h1_J{D+_K8G&CWqZ0O zmMqoiL+}<^+ko7TcOZA@TpORbqKSvB4A*}&;F0D-jYvCEq4->ao@ZT@Q(qej8|RES zSAX^_QayD{u%9M`Aq}gbP8xbFfUG#qK@r+WSvA6-P-OMYdR3yod3N%0*+<~E7>2e!3(TqG zv-3FYJ)4$ngJHZt?)LFn{^ZY*-Eh^(%a{;W{}>jKu0b72Q32~kdu|`o^oq}YsS#52 zl*!0loz$RR$-00eQ{=DnT4U}%Kl7y)Sy?-GqZUtdevK}wtJa&L>%5Bp-Fc4Ff$Q3e z;~j_hGioe^zmXAY@QWpMe}1rDOEAEe)ZRSNc%+pp4RhipE|py5m$*Q2Ptwru8NM;I z+C6S=9AmAvw?tMFGWF!xi$tTQZ7j}P9e#_Q`?tvSp8>y0LBI1^{;}8mm$1P|yI@qv ziY(w}DyanKtZIE#r{1B!77*j#w;XK*)}&o2_P>GjtO06Bk(+H~(~8IKqJCkV<$P*E zziGu#>vBi`*3-0?`Y*;`n-9h^bgwnzc{+C=;Q&bE?L_Le8zj64IOhNw76HSYy^h)i z=~_;c5wvt92=$(4xA+ZvEGFdnWYa$JKwj~#QA0!Gnr#z%!1R`^1+l%VW||CVa>XRD z?#y`g?|BOU{MrAV_^UbXZJ;&g769-o9osDzV)!S%`X%Zu7b5#7E#luraN_~$4!ryu z2=IjzD?m6)7>chJO+zY5u;#Xy3uj0i6WQ+}w79!yqCVozWw^JedK;t5p>wzEY+ht0 zAEaGJ!kTWpnvU}Qg~o|{;9*(wBsxjg2Ub^{m%AM-drGc;Ym9pBRTKDB^)6~}45%Je z<96Z!w3~-cEQ|9&5aWQ#9(!V#_;F`1Chmo-oF7N$_7ahBr?pCgN&hzMy6^K8g zy8F5yq&RKy6bdBqYQdP56~U{H7)qwKt|7JK$xmqMuQ$^Eb`-8M`#Jm1`!BV93ZGqm z6;~!Ef069A`TE!|z^c~?k_VT+em#DC1L?r>$aymYyO2ma#p~x?c!}B|)w)FE$52tt z$awMyMWN%NSmkg;y$7?Nd*Dh&jCg`#@w34D$+W^p9MiVv)Ihk(-f~e!z!SU}P3j_% zgdXl$+4CEy9m14TuQ8hyohrt(BMI!Rs_xxMssdUbHK7P%6rsj7A^>N2e0^SW? z5tfqH`?*Sn4r`ii>W2kXz=~iw*>E3^PL{5Z)X|>fTePy}h|M%d(a;LMsv2*^j%vJo z#mJ9og@;D5x>E)B>XG(8O|tvUNpGBpLrCnm5Fa# z7&UzWmO7$%?3xb<&pi!R(j_tSj1YIXqiOUqkt694oo@0ndd)wAyKcMgf@qvq_e)-R zagw2ftNfj%Is91L3FJ`Y*|_mEJN>50M3_FSVIpfd+TfASS<3*v*&IojLX>7LXNQSc z_{E#W(&U>#FH6cL)wl3i*1`pL(?TO+O+VZ3j3=ky19qAlXd8+1;6w&WgI&-MI zgP&^s`B*{J%)MD>y#;(h4mdAL+#uO@PUD_@<2&rwcp@J8y>F`yjb1Hc=qDTcpyvU@ z{*9F}1N$7}?M9Z`#t|ddY2J*2IQqK#NDD{Wv)tD&3aPa1_QT^+ z5>`C2K12mmpc`nJsMbqNAP*}qM0H+H#F#r%7$oY5D2Mfgwg*3w$|5qMaOU^2lS{u0 zojQjs@$F%0YwO|z*jfpS%@@Cc+9oevK`J5f4&RFp_jJ!)mR~F-s7F&Kva}2|;=eil zu@7NW=PPKpvQu<=_ak!uUC!)St$T52Xg5`r8Z%WucA_amXPybowPktDxgo@GVUwfh zs;ej~l9?UGOZMFvWj*k;-T9?O8s;?(4Xk4E@tG8Bs=V90V0*RFdFW!j-bo|39Q-Lsw%|Vaxgjjd_XYn++AzvFlY8#Gq+pZdZIcF@$;te>BqX*eMmU$@f zW54x~@~~K`6NXZY7G|^jqGfKecTkYq*f7}}EwtrZWAzBfJ!Y#cmI34-F|r8vle9Ly z`>wgt(sBf_ES$&;^_~u`9F-vYOT+OX*PhRhG&$_56M}Qe&AKh(5xLToKsXs?u01x_Uh!Mcd66VP(5~PG}3BDMvV8(>q zq{*?}b-Rx;la32jb|iJV&XbZUpfV2WP-#>6_+rFTMoV=hZ@|+6a4#ixA{xM_h6>jd zgWj`Cv`!icFDHv1MvseaUSJ{&vi`i4tu+JCkNfXyE|`mP1rb&$;JxVUJiQr7Csrq_ zvMt9i2Xdm9sV)a3x`^3>h#s-&BDh>MK@LIQwJbzx)r^LQCRWrcE-uPFj(a#KuhYm0 zhzxngmmKaqK<;t2Pu2+ znLjTm2oz2p6-_R1RSQHlxHG`cS|J2+)#H?r7#V`LJi0X3I^5tCk&hWClM8vlZEv?4 zU3r9e#<$1FnRQneO;Q>$`<*g6n9F6#`?gp0;oH+A(|A(c0Kj>NNd=zkw1FWh2wC6< z!pCgOX(8fmoI%nHIMS5?BCN?#Mar$RWJN>6Z!q0 zZ%Y5c3H-Uf`pHW9&yc2&jw6DuVMa^goixP2u}Q%mc{Ux_e6(;CtZlm?Zl_M-R;pni7iX{Z*#L}f#Np` za-p;|pAGytW5l_YMY|0*fCOV1yx<^btgo&|GD0=#Sx0G;F9wd<-Dx@sh6sYJteQ#I zYUaet@(@`n^MSheV_ThB^|pfX5t~9&bC0+EcRdhz>tI~Z*TCEeowZK$DvG&ai5`md zHUN`@?{_YxreLQisrR-^5qDrfwg(Pz7p*tS4{kmg`r4IXud#v^bb>l&1yVcTj6TLG zl^Cq#vjIijpw`F#*ww<=V1oBg=|>xh>^`vEsKIINM4)|tyE6Cs-rMd_;Tz${aK5L)^-OU&PO2bu|_Tuq*^=M&n0h-^XnG3 zH#l5U8kfYDYfF_|)=+kTm)Y94oqIPhuq;+Q^jfrmU`}v!_8vW{-xKjGI;0!n!fEDX zIqZ3zV~=<(iN-Wg1^~aPiDq#_erM&D@oymUhz|ZNaGTe_ zh9LCEHS50I>1jHLj2QSl0oL@Rko$9|ZTjAY`-IAYT*tBu)EZ4Pfk3h3@^vs|>?wjG zkK)7SxRQ0Fva9;#QJeB*3f6qv74tTvdbN@IeEP~mo>w>NDPo`!^7-QdUnEc(Z2IUp z>zotmpzSl1AmBgiI0OaP1Sb4gug`bd@Ng*gM>^)z5Zmn6De0bFZ8vOm%JsV9Tb zG-&}~HseQK9Q++Gr2Q?qitCpZ*fA*YItS8C@Qw}$xl1xU!B%rb=cYLG2sj*0t|5%T z5w`NKE=kEZ-|c6}%Tq0Ru`_=G@E9~xH~zelx&3?dAB?wuAamaUVZc9FWyt?VEUufI6*Eb{8`pVdgXk_$$2V!4P3zkw|T@IG|xlMie)=W8p7bhwe zD!cxi|2eNpwkB7-A3&Aj9S}X&Sn8u}jkaLf=0cr()1`1-X=k4dtoT)~)e1DWG$V@& zH~RE&LR+!0~aZ zrs2)Eb6&d=e#Hh@ReaO_qZELlLI%)O{(0@_-y=`A)I5csT&+LI+IWD=T66S==PgqU z2q^)q!XkmY!YCiy^or5k9F92qXzk*rZ_eKG^T=kxq~X9jvo*FIZvk8i}~C5IRpqQ8{B zk0qw4htJNBMQw27VO8!#7(Py5ue=6IyrJghg^fp&m^BU<+T3qOb%;_moQ-lgcLb^2 ze~}X-)fFPyJqrx}Hy<(p%u8|9BEXJ~x)i^0K?K(P7#wsm89dpRkuks}G3UB4uG~Ex zu#i(W)@5?c#;bd?hhUn)kONv62|tS5?=rNB3PEqaoZwluC6`;KDC<0BF}AghKYU+z z#_q|2DtX)vEndC^G|1QWJk{@`C%N8jlj;MzQ_k%h1PpwWVhnjeEC} zD-*^18@8QKC0sCC$%c^VIiq+phsz7w(CH_BvJkbDfr~KyNIQ`znKc?Rw z0Q&#fCGoq5HLv0iiu3V~_ufXc3 zOnflhVNUTV8YaJMeBpDznb*E^vw~)^bG<-0_QvIFK zo++mA1E6~KBEeN{jKta1Kyd2A{gd42x9mz*6we#pi`cHc%seWgIaqT_^J2_a9mNs$a|g%@=b6SeYWjAT{Z^? zj@41XF0z+P0f@SlQh_ZxIzv3NNPeaV@x<2&*1L0yN>jRWx$`0}=1(JCwRvCehzg4; zj1OD%o>^lri3b6R*D-WFn=Sc(WUrgTAvewZhLcBXPar|=%JWv0Nv|T6FXEPCxQqqA z<2W3bq?r{q#B2=UYY6Z)N>=9%9;XFEaNbTZl1L7Q-9!f;6%*pIE}si+p-mLIL4SXq z{DS1E#A)R@6~M&#zs)Wg-S5M6p=J1nK1y04E1`P&Tml^Z7)|j$z2TMKo8LfRoI4SS z8OQ+)3_TvWB(Q?)!8?Bgk$qkBYGOX(IJHMO0fG4FC{ZhjD)OKYNXBO0lK~aK4UJJO9?pzkLTb_yv$Wh8rko4CI69{GDE7sr6U6=)ohn zY`}|TrQ2yIw|7kY%YSubRQ^?PnScFn?SFKC8<u3gXnnD>$4s zYulgS8)+mhDth`6vF+{X_48Exx4j`|UmJfmM^)sWX&q(s@vw_CL?{_9i|(ysW>FgWea`1QuGn=-V1#u-xhbsvhKr;2`Zc&16m z{PRAUzfLWG@b7i$j|HFq&$BkYN0aQKwd+N<-F@*dboc2`^1is)RLDi3`E5C2i?6)^ zh7DlPK*e_f)L;(MpNLEv2_|C$+DAX>{h(Va(?4A4WK1CoI^xeh6hlPnfskc|1cth0N53H6$&(Di; zKSC4fwZ70nOB1KNd=1--OwT?s%?ippFBO7AJXsxecyFNSx%fcI+%3)7h2CMjAG9ir z0W)HR3-&M{ZUNI4f=lNwPS$U+#w9@V@8-IL<4&D_u$(2c2mgV$Lad>0B9@j-S8F+rslR|P>;#2 zG4)-~zVzc*6Wogr5da4x5ZaJ~t$5gmwn5^!B!IKlJ~HVS|1+n;+biuXS~|2dxjB6F1<5_Bh`7{btWP<;$fONT#@ zmJy&uX%_umw8}2-wF9Q7(pubB`X;l_v=Rj0!mI08zVEPws>KdHQSck9y8-48aeO9* zR&h!Wsx)Dey$PXZ5aJ3VJn0c5Ys_~Bfh$}!o#ua3RDCTaE4%Y&RhUop=XbYh7;omU zl)d+E@^4YUe`w7AY{RYpBkJ~QvL+EpU=EPD=s$Y(6-dC^88<4O z!+pECHlVU7M?LE_fl}rEc*4uBH?ruRib#Y4t~uvm-O7DLDZ|8m4`WeZVSL#I_gwxm z5oiI2W#n1Wxqn-{%lxEjqR3pcWtQk_c29m`dzjI;`;#b!QAr0mD8waxP%QG{wXNN? zft|tN>zcS}>t_28rK`d;q{+U%+SdR;$Q{4v09j((QEQuin?5N>*=)zC`gPoe5OQ7V zOi?vHpF=8|u&!$aw3+>$6dgQnH9NmLO~&uco{+7=-*&{XWIGZ1*U2S6t%Iekr1nmF z4_N&DtBQ){@Ru6-Z#)@)&n^aq{8f?XiIwI?rjn0b8r~S+ZZiI=$jSdJ75RT-8}#3} z>p%T=(5AnQ0yXuKF<)}>k;4a&abRr$`?JL*DgF(V`8+-uyb2>b#J)7A>4!W~0KAj2 zsID;MiLuQiATI`A*u^Hw{;+{r*3_KSf}l13k19_e_^M;?dGiYse<<{+|iqJL@`0F7ib!z&9TM!!eD z9fQR}M7h|QUlk)_@0By%k@FO=_9FV_~$4c4-EK1lOR#=lz(iFSF2_N|W?DI$G?K=(;)D!us=KR#DYxAkg+(zdYC7$ooq z4q)4V|430|{m8cB9R9R2avNSm|4EnU!NcOmrQK-f=9l1zry3;&<5uaR!>2!_#jRQU zU+8e@?|#2eLbz+`Oc8vk{iq?X?Yseij8)Y#`t32y;P7m@?)LgWpjVgCk zDCcLd(%knxZ)9q;o;(yEeWaBD!REkX{V}|*G3q$WVN-@@L-nETB?zt`JjwlJDWQ#= zOGiYvp>D)+`YBfb3>5y6^+($a#g#Zd$qqa2Jofp==I9w4_{4==?}}3(&&N9BLtpzG zrW*&kA@g*SS0KsmeNQZ^3N;*j=3!Y-6=Gr<&?PY#z8VHnLynDBdwOmQ;jD4XBGZzN zJRJC}GH3n88Fju|Oh}tNE7B5Kb=+j^THK*P8@F-E;VE+2dcZa6T^9vUp~2X8wc1{p z!fB4)q0i4Exl@=7lod+Hl2%v9h53m=i;fK>S4yguC`}cy!LF35YR1{W#!9RA^{#1PT4;YDcu&Ja8g8#NeV!(b7!5tNEHaqxW)moM&JS=r zb?$l;XvMp5bmmoH-biU~o3Aa03F}B(6TJf+%d)#jU?k#8d`$(CwQu!u5F%AgSnNqL zZNthoufiWG3p8}7iGLExsz-$!)halaBS^kwZT~RxNG_&dTCASf@5h`_ge+l=-r5(-jdw>bP2`R7;7|rekUR-3zh666X6JI8bt`1X+Up&n+ z%cP3!zVM^R7N8QLpmRsc9 zLrzKsnp-$q@20jC+VC==k(|)OdAi`#w|DKlgfGWFd3r789^jo;IhlJWT;XF0%01%= zsHO9*&vUvM5KLD{hw>DZ1l6ua`g`TiGvMz}NtR~1f!$~Z%HR256Ybh-)Di^QKu>F5 z%Gg@pO{TUC3yY_VE|IlEzYeg_I8Pn#kvkx(@hIqaq6sKks}6av6hlBQIwQ`r!HOl9 zbv``Po~N-LZ!cmAF<&7V-dPIyu-nBaHaH)Wey?d!XDh_Xg{*Ha&Gv4gz0`y)JzeN zPqfj8@83Y2aw6Ji!Tc5+jF$2>BNfw+{ov)bTR(`X`v#m*>kR2;Y6iF}5xnr5X_fJ>DzEz)4*bA6plW9Skt z#`LU>XnA;zAt^&tN|qtmC4I?Q~Km^_||-%wN@8&(^t|+4nhKrbT*!3ui4W&s4eM7fv^2ZA0+a+gsJ=zmh1}cccYOtzPKrUIVsQ10L=%h)Q?OH}<@?LRz{{a0|Bi zJlghIT>ZyKH#coxDJew8%beyP%xqv;n5NEcVRY4RdxV)X#4y=+2tA3i*YS#qa+IMS z@02X78l@gy3S6UIiBmASIdhV4v)^?qc4^nVi7znCGQU*R_KKCRWMN34%Rgk{p~{Z| zZO#m$@!aMS{Zkwm=}U%L74d0KrD_!B8PRtKXJuQI_95 z_@eoG>SAao4zr>J3PNbS^P0X-(lo8Fab&q75XM(hSyBAfb%py?wPGg~#bWLTf<3^b zAxxvpk6wD3mXWNYhx?1;tbZNog_U7V(WE!!rk&WSY7@*^Ui|Id6zDZNQH=u8^Rnzp zpQ#-WdE#X1@-K5{?klw_lj1cIJ~!Pn6i*&SUazPEK;PEwn`eBS0BfF0?n<*%fjx%h zRrL?fHY+Xxo;}$Ew1^4$i4vRRSfmK19wpkAZMIywF%WU80?koleS7>qLs;)A_b+$gLrQ{ z<;{=-N9w^21?M4-UaV$JMkY^9Ro^}W8C6Q45t7FhHeqw{nD|WVZXQkbp(NZv@Mv|t z4qrUO`QnQb$ubAcIQKQg4xLvK_N;t2+Xc_b{~Do?F=>S6a@jf>ZW!AqIMKxs zi&pbj>8vpNB=el;M<%mu$TiBGFIl$x&5)xe>cLKnSDz?r;xU4E-)bzR&W4H8k-x`5 zy8d2RyHT%I0<#29#ls9_E8VRVr^P0aUdI>~Jk0Vv?k;xr4UoL8;1rp4o0s)3j@v&l z(Eq?f|Ne@9T*SGoK4yJ|_E%0G5xQf3;NjjIuG>xvCVo1Rkvhc;z*pLnE1z{~ zi9f6i`M%2XbY=>fr^7t>yKPXdU)86}z{E=GNga$MHaCWV$_39lKq*+5AqZW4ccJ(6 zc1oZ7#f(VOqBG%o8v>FhFB! z)jE&(Yqx>dU8|DTS()7o^%BPm#^)6t?Ts2*-G`$9sc80teaGAhP0;l_1`hRk#Syq* z&x#~UV8@Ra#<1-w9(gV=^r9r@U|zvQhC-{QQT*`{x%hEJiRWALpoaLB6iKdF2EXo@j4W&AaT6 z-(Fi8J>VNFd3X+IhDz+RZ*wy_!#YtCh_gSkN%Jvzzq_ZOo7xFg9=R6D0Za^CtylqB ztIb&ap&_PaMcYGKg`)?q3y$p|(XZ!}ilyW1H>^a~w!2P*?*|#nxn_Bqt+%r5(AU2e zEH4&+0n*^3ozidBYR-KcSJpZF=JYn%uQb{>Qu2GD-sA1QC1zY53kzcI73*(e?wy2$ z3KtN~9fHopr{l|`nXwwB)sf>E5Y{>FWQkxwMBX<*}1ms&X84de@+Eew5@-GvU#en)ag)?Ggmje{ehjSO2N za9ZwLCw~u{vEU?>g^ino-4g73c_(SS+oX*)mmJ;gU_3iPe1eNmWF?`-Zk(m^9hx zEB~W{a}SZmc%UG7Wo>nBICg39q9kQRQ{#{R8p?2N1k}2D*&0Vbdh2j&LeFGOO(}5o zZMY50qL?@eZl{F-E2B4=C4mCzfHBsPc|0GFv7l9>8g|89%CEa(7V$+3eQK}w zSBuNPUa*Kdyok`B|Exx*j!*a<1@mNpGIVp{peiW7N4Z*bv=Ex2sX@H7OK-M%xNHD% zA!23X?vQ1hm?p%ZqYWHr{$?I6L|qr8z@<^+`#j)7htgdw9{x*jb|ke|`*Cx1#*9lk zQ&XDltitO$T|bH_9TlLG1Dl%8^H?08v&@Q_7_3&Wv^3gD4=YWg#Uym{T{|5@lcWyf zlbGTJf`YBHe2Gu#yXK`ULqIQHD(5I;MxG36U8{}2wxmNcN396wp(D=|J6hoP1C&3O z5-uQhm<@99!$!m#8^;r*Dtx+KhY8>7N7eHljUb~XZe*Q1xjm>)X%9!z39GLjpV+G&S86w#Vd=>5ZrEKM_-u#$M7CqmauKbk+)WKu!%%hA zaQt{Lzhyu&_3ZlE2CIE|ngytH*b}Y5Quj&yaG?>@(D-SnWzNT75hEX@4q1usAd`47 z@{DxGyoGteW~z#hpgWrskvgeWca*tdB#1-0C2>@fCd|r7YmZl5KdJYlxL;rM$rIdx zBF9r*uE8Dlf=NmlS;x9iJvP~tXO_-!my&gS2~~t(P0*?*$0Cr%1<#_T_08c}<*u8F zL1_o?J0Sr{kp1X*e9HcBAf-{m`O_W@oikfgP<7nL8L5U>Z{>28LMMj2pJ{D!9b}KH z5f^33JRZ@R@k;UCRs54%+6nVb1RldbGy`_5gvJWRe+Qisv`A3gu>ja<0>U?AcnTSM! zP)(3Rl$4gV+0zspHbDcb)sNqF9k$z%^4hjF1;%{~<#Of&aK8&Zf1u(^ghIaHM;Bmy z-l`{ubDpuT7)TvTa6g)I*-k}1lY6hj62})ng8hM+dl372U+_!uq=T;heP^?38Q+KAx7&f`O;j!q`C~d`RLc_s-tH?`wwywX-Bcf zB3H|<+@MD!eGh*FdF;ZkxlF3q_kxL4>WQu4V?~o=j?+9v8KL(Eg`avZ#C}l5Jic$C zdLDIa#CWa7>Gv*BF`njp42PkE*NYwM1P-D)0J|NzKOe|JfoDNI@up zkK`FY2#F&b&8L_NQi0ECD#d2rLqF4^t3MRnjh4o2tI)}z+tdDrUpRYiUQ<&PE3W0o z_FLn}3=0osoqg+ai8ySI+MPwjCKg6As zj2aCG$3z<$F9dtQblu{pe!rE}ZiYdIEa@px3?~YX825rlB52(ajJ!p>mWH+B;>;Q1 zz*AMJl}DuM2I|HL02kAFFbBCetk%C7nbOkMCK7GPI*evmW7vb;i5?}-QXLD5tT5JM zDG)4jp-%b=-60^?w5{pdq}E&IArrQt9Z!429$!5I6%ZRgabjfIO(jgfXOPfO711j} zA2I8j&cVOnhmN8jnLZ>NBf?NZd9!ZNNuHA=VYqagrQGytc~cUgmrH}^DWvrO$VGOG z&HU3Z(!uMa-ssm{{NZ?F?y=vCiyKK$~?JACGX-^N_*QUj{r`q{) zrr(9SbGogAm)pjOCQ&1|v(0xE3^>6?Z3Ksdi-?Tq?tt2G(EDY1<Qt>{NnHD%Odfo^>7p{ zQIHFJJV=h0q|O#dkM&wBx5Nxz?0>a$5s1orQaH=p{<1k2s42eT+><}epukx8BDzDw zbT|Aig|N^=i$?645%wfTF~(P&@_v_wn0E%dG$x%Ehg=6JG^^b9&lE?P9Iw0-FI$Fn zgh|^94|!A-(>taCzf+ZPYEWX{QiJ!jdaPXK@UU6M4eyw~FExloKqnX_Ja!KTExgvq zir^FW+t{+x-c*naE07O}5w}zEF+9RV{@^@_`k-pD+mYg7#IsXGcQ%PZUd&fd+a`G~;l*YM| z)Y9s*EUa2$UWZPs_hRDcl(dA~c^h^w70Vq^NI+}q>W8hFjjBfhQWq0t z^}Rg8a6c6Zs!EA1q4WnzI{Qv*0dG$`>&qH^Z8XPKE25LSKVp8g{=su;qz2ZB3cgmz znsxPFe>1q;@a#;{>y=C0Yn}JuC_07j1p4VC(*aQXzhxpS{_KgC*BENMTwUg(rQkYl zNl(;9wZKB+j363-I&jRkFGW2tM_>@kM%-kZyU+#Ie}Z+)TiAEKLg>?zdmtry^XSXh zojVo4I;p3_NWy}t0{Oz!O{k?EnC{sA@QoCIlB|?{Ze4isjq&3t*EYkR&EfPL=T{r7 z(>*V~BlCwx((B0|GzFDFpvfY6g^AnKVPjL|PbCm%@h+Zir(JkyOM8#aU`5b?s-V7; z?6@!_ys+tKPbk_}--l}q0BD76ztOc5IR0{L?P`CV2bH3njgUz|h)5h(^Aqx*;mTq` za*NYb);FeQF-wGosg_h9FNP?SX`g)6z4-)0F1*=^;~Vm{H^)_TVEcJW9)_5)Oq43z z282;{9az>gp09>J+mP)MFV(bT`Hm{`* z$U9YrcfUZTd-6jpA0M^5FP5xPeB(>v305fV0HcFEi&Hkm8WzpO0JIyr5i+%E3iXi>*l3j)! zMrucutJe`VD&^20`7w`|x8d@7mZzP~#NPh7R9&j3HH|LvC}rf2F>ybj71Pc6FA2~M zw2W*Lw{ew)lw?#>Pkw!hC$SJa!Oh*lz4hWwPzXQ0{i3h=Y27woU|m$->nhWkg2}Sl zJRn@<)I~0JKd<%OW!zbbdp{zUA{9{w zVWoFJ>rCX4Ud-w)(CEpxKzFm}j^NUQ6ScWQKCRc#x8s8!vWGd2?3sqiCn$|DQdb78 z$}xFez;@fqa#MxSw#9t&eCCiwCnUK7*LwQ#AvTQNvk?H=PT3uC0q6fW4 znE#8aid4nt$?YjuLW+FkSxVqVy{%43%dWNZc;hPRgfdCO{?gL#RMykyrh;Qt+2`A$ ze9s3_Nyq^2DQ#&LorSUt4fXh)Gf(fMsnx zZu%Ve<`nsI<&pmq_@0F>zF&uoN>QtBL0lv)7rU|D{VGDV)V8rA%J1&+rMa53A`ZsL zx}Wc6*B_R3+sS)Q3n_wG=_If9Ll$oy^bd~{6*Ew#&|EoXIfzZqyrd)HKbW`!t$>hk zzHH5$wTQ2hhGaIhHj^bQ6tZ3<`-q8s$4+NQibiXlRb7^j+|kycDw~#cBFpS*QH#Lt z74NC=!noftSV6z{$Rf-zC*$)yhCNDaiBTsLz;CuYv80&Du`Rt@mOlT$cX;Fqann2Oj881Y~Nox)KT4gLp&bC zY>iwon2B7tx#|kIX_qij9ydkh{s(etH z!UpVEWCAytIco5^=al6s{gLgs4Ucd;bNI%Y-=9od-(Oa+98G*(JF*594Sqm$x{w_0 z+o|jQ5p*NoJYtR@*0Hmwb?PgOxwovID1XT1^<`Omxds&&K$Ll|p+7EnyIRQ_!i`sA zoaqRCv@8}#E0MU1W8_H8hR!{%nEI{Xevm}3gVrCeJQANOj- zsN-6Fm3lEgy`PRTP;P7ZYpjjjJ63TE(3Wu9C9=03((%zZ6B3FByCO5}TL zRFQDm!Fn=};>nv*rk%o~z7|-=**n&YvTt1~u-vrbyN;E>Jet|yp)N=z2e?g%&IZ9ejp7-nW>v~}{( z+Sp~_Krdk&o}^^(y|~{NU4=&KW7)q~oOq>BQ|APmz^TZ3&>jLF_jv-O0l};S_+9tt za;2&iDx!B+9ri+nghgf6#BT-$6@DJ&S&8XvS;4#Beo;SEs0DxzkWLr|HF5T);>~YqwkwS!p$Mu=w3@j}E z^Cs}p-H__S83^)Kac4~?8ceI70&;=ViDK;HC(baC}&%i z=N}_I2ROCDKP!`>l%Niqx(Z%1*SSD6tu!9> zq_xaFiIiB5eKi`rVjWy$`h;n6)`zA0I}N#CVk6N+;>I*n$k(I*;itixlGRTaI9ZbI z+)5l9M~nEm9z=N+SyZu3cNS^a$vN55m7#{pKc>AK>i69U)7@S>$Pe*!a;mvdv|uZT z=+|0h&gv=I{|0*xldJPWgz+&r?*2!Ps3#!cslG;j~n}LP?H)W z4Moo#zFN97rsk68W^0Oiu=t_Wr9`jTNx(p_(76{(O0)MHtH@^IwVN&u(C|RMKtKFw zL&{G6#^TKy1hn&bu}X zokR?gU60)4EVY<>k4H*k-uVcd@jbHdBvmrky98KrepK@(K-x(kx94d=(4tq9+Un*6 zXYwphr055BysEEADX3v3L_SRIY;j!Bad z+wXl>E1lE^cz|Uj5BCn6?*GT$cgIDsW$Pj!sDKEPvw}p)Ib$Fv$r)5YXqpC*92-GU zvScMolq}HX(BvE>=h);NCAY6o&kSeooHKLp%)Rga-tYaPRYmWr+O@0pT5GTHeX;C~ z?vz!SglWb5911+W=HFN|+UR0;VDC?dID~hvBQ=QMojE2?tT+twooozFWl&CVZ4?K) z+K-e?P?Gwak&+r_P!?&Kq*-%0r*-TK=(u5Jk2|%q<4ihh9&(qXp2)AoV&>COwrg40G}F(N;Wk;tbD}qAq30Gv#}5dOO>-`GXI+($9Tn4 z1l+=(6-_(gM30dtc7^Q|X%u?NtDWyCRY@iuysN}eJiDF(3p|}Qwe$^CaGlD{>&?3*rd2WBAi|Frq;h#ft?RbI7BRBpCu>L}|2uMu zEct87dm?-?Q%q!nDxqH^O`mzC+M}z1&6>t?T$TcOaioZ}Warx}9zVzN#Bhju&K8__Oy zQJ+mFa;estdKjj%>kfPRVDriaARLN%!4Ks?qwCb&MHgnO>?S3KIDkVgI}h#GMgkP# z)hF)mS^NOtUbgrVE;0ou<*NORTAAJj=PFsi*^NVtoDNODb)$8k6LziqV0C{zXT5fB zbIWuWp{k4~Ad;A7+yj&*0wCq*b;$ga(_!OTN^9xwC~x@nwuj2y#w@0*UNt$+^R(Z1 zFBfSDed7TeRuSzD%{pSx?<+1y3*fJb|8%?Ak}zF|R=l~4wApF?MjGZ@-pb5-@(}7L zA7`O#8o`4jDNwtam+nE1Ct~nf$~(pJEb>EJ>$6owz5)lJ=MHxz@9SB7zM1t18`pRv zp4E0vD#*qds7f-i;MSW|wgu0(hF0*j`=HfGAUvh6x1k2Gq`lH}hi6lm`HE3m2m!I? zDfbk`(!x8GG0i##adCv|Dq+%YuebzqHstGtf@+HGjZ?>_S3#Dys{ArK$Z^_nI|KRI z5yQC-V_PA1$3{&{azhM8rM$7)B#oJ6dFZJx`SzCtda51xber=1=HX?%)?0Tzz}D= z5~fE>TWWP+t+CCPpTV0yDiZWuIMvMGfGK8H#;E$MiSdg6O1?cyu>0Z`j{58CGMT516<^{&iZ%2SrBWD7YNkgWutL(bhoxV;|?vE?y%4a?QUfNlL! zf=5RItQw~)p-26YeFN3aA-z}wzFns~bn^FKa^E+xpOC0M0}t;*-<=Rp|d=6PpV$7zAnjCf(4L`*(K>+i!o(Tvf>9&!!wPsdJ+`0 zFdhC)8)DhDxt40TmqLj+_OM>qQXD?J1Ei5WNf=w5%+RK!b&a)i2ykV5TInDBvcZ2J zU>ZGoPKl~0)US0a8`7}xG~}C(T4%H;#*Ljgvpmt&Z{c(9?Akk}etBHhJXedo&eNFN z@nukreNpD$OV^BLOHD&35|6L*19K@CuGz!!wTd`vtzw}$3~)dX!Z4gQ&qVYHj6aXb zoYwBIC=a>eX070BUsE8SmpVS^6mt6m5g^iT4gkOC2UOIj55VpQ;k!t>M9!ZxQ&k>h23IQ z5c?YZ_-=kSvXTm7J&U6W5!bAUVK0cM=K->i(wye+_@QByj@K~z4Ebe^j5mpHess3R zZoHNnH5sa(Aa$KY+{Yy^W#{(evJfqut)!|Kuo8bF-)3#eI$6?>FPnl6BL=;GyK1rB#lgmyH~9pb9(w0VTqmCl&!xBxbEfgm7{GiV zOV#+3r=K`u9TQ(o4ob1d`RGVQ^92*#u{JBpLwtKNn$4SHY=5k-*fo@QKB~_*Q1(y{ zn@eJ)uA330%?4mCewaUPAw-~Jx@eVdT6!YSLt^9ps~@|CmO{2? zk@wbO94d1`yDR(~P|BJ_3VfxVLLz(CutzAit>Qrpg-D?Mv6igT>O0EN^tKWofGfpu zDa3m@-21QYqc-IRmOcyA^HAlwp1BDteN81ZX?PE1vzuE@`#F#XNQzM`m?BnccGu*}p6yDU22XCrK{-=pWr7)K zcEbWWXk}>^aQcDdePM&;W@>O5jd3yU5mYC*i)~t_Mh}D<@nKv*3a5Uyz&kF`Ww^@e zL05Ok>{@DBWw93}pVQdD!zqPHaVLE@?{o=~y@Nc`GxrR=)hTSJe6xfW#Ug*<;$!G*Bg- zD;E7C6MKhNr0bR3eda3s36rNgeL1UB*9Q07lJx8YG=t}e5(HuOW)A~`T3&|+2FtYY z!ZVJ-rHhYJKCec_OnovoWB%fG@V;BNc24rCPB_4+Rb0C=V7JtgfM9kUn4OieEVMP^V?x-+wR3@pSlbR{}?*urp9bF%HDv>jrR zYA!B;ddOses#%o&c#GDc$Eu{;L}gWr6t!BDn%v2-$*xOiS|>D&l?)=X$^^dqfnsCq z)TT1N93h%jMaA7KQZ26lC0Zq4DlQFXwUU1^fo&~>sC)TZtH@yin^?9cx?14d5pGD1kOMO<`t>mxTYG?r)0r5ABU%6t8fmp24ZXF znJ41Ggrx_Q-64&IhN(M7(<4>Bv*;EX3jtQwSek9>NSAmCLqcF!@$?(K5Gxs#wDK@v zu)OTXLPr5jHf$6q6K-G7kwKlLgimW9rpW9-c~XitJ|d)!Kx(22Gm@L-cb zu@gD{T9jVi6kS!m?sWQ~*Nt;Fn|%5%h;{P?zm)t7$6{>loOdJ5&ZIy#qJ~MV;hV|b zjB`upaVImqQ^|QwkfUuZlP=4TWvb~a7USJq11EM}*miX~oHaXEIQbl3L5waZ|k@#YHJWlhvI z?J`-OYLz7-Lxn)L**(X*-iHz@UTAjXfj1I5`uE{WM_jSPTj$EW@IGGF`%?CzVym5U z+|*+<=7%AcuVcmss_-0*ji0hkfj3lFCk)y$#&s)Wos=gXo}C2R7>GAcldVkA^dbuT z?a5si_zvXem-(tkLquUx;t-t=%gP> zOR0oeO>GKad+{BGILSQ~o;$pfIiDdhM65#Q+-L2x#v%)2kqgl zYl?%&JIg($`Sc&Ny4j|cii=AswCAPEL$RWs+Ciqd046M#bs#BJ^gu zkAc!!CvcdaNabY3j<0J`xVq)c>l?E@(HR9H9i%LH!%~WZeLJd!&UFx0USoX#xHS~W z7YqaT0XK)UehuZ&r+}_lX?U=B^pdL<+MZ>GK=x}5 z&06W+nzD_xE%4P&eMp_8E!Wf!D#x5gvDpWzn;5>MVC%x?ZPsS1ZBi3>d+jk?-JIK5 zjW|tAtVj^S&Yy{;2c{K;{6WKz=haq^v7b{Qwu~vk10r}kWc3a8$>ZvSn&T?|D{0PF z8>Z#_H>61z8y1(vj017ov|7ln9(r%)9w=Ivh9<>7gB6#=Oi7wOf4HFE+|eU-rikBr zoo{q8{K!$SxCmUCOZ~)mRDzW!D(~}^WqG{d{Wd#RLo9PE`o4T)uUAA&hLiQJ$`TnQ zf*bzd;DkpZ3SXa<8Az)|=~%%SXWq*0#-(ufZ1KDIuB^SDDzdkJM@12Xbv!q?R7n;X z-toRQ&;v z{=!AAO0RQp9)p%-Ylzbv1FVb0KWGhGar+M_V|Fn3^5Q(!7jZn%%OB?%%^jul=M%sU zAD(#nR4Yk-=eA;a&G`Lk=W2G8x>98kh^J%LqXc5QVg5tOu5=05GnEtdBbW9JDK7RMeiDJxsr_*6@+1J zi7q~TD{!ag+*H4{a6&j0Ov134IrF4hQIbIImWEuZ#t$+EUxLpY6#hE}(yBKK<8HZ2 z-V@Y%$v|^uO#w^SH$T&&^R4;-TfV~6H~ieNSlgAdI1M3(rtc^T0mszaDbE38Me;1< zNEJZmC}BU_H);jo6v>H^F6{HrdH^snz5u$EjFdiO9D(okLTQl%7cAtzehvblXhn&4 z#b+<5$p4e=m>xg-aOLj&{u*$__J7M2|J^=m7Be+qZTgIf@3-LvkOcnY3%Drz zw=_Clh653-8~??ok*rh72T=agtdZYz)*+(0 z_xGm);hpO3adY`}Uj^E%-ZB22{yw1n&pbuuY*7?K>>;ddt$^e^${o$QZDb0Uwahir zmag5z*1_hu`Fw&=IWAXPK7XJb@Qt+^@YSLrPY4pXgDoB*wLOXr>+^TvWggw`AEPBf ziMXqekOo~m%etOxR?~-VDI*$4twT(@Q_=zTe%)%Aui$qS2Sj|%HDn~!Z{L4T3}`g; z%b13P6!x2JwD-~$7lb@NzGB==&;GhtbXWj-~;4Y`*b9ruxFn7g! zm(mFTRRQx~IUf`AZaiHG%VuZ*=cXc`|5LHQhoV|7-+;v5POnT^?$aGNC;)%+T?M5w z??GOtG80fRwxZF--Gp6PfN5od5(u_8i!xSDM*6yP=%;pNb7;%n`zeS!M%{aB_!4|u zyU$G=Y(EQ8lD94Zjm15b?{Hdhyhga)h%f&%H5 ziiVkQ-n58xG4eYjO&>Mq7m5nV$gPW^v&Rz7(oHhxxtsldE1}lgXa0b2F{|>!l_oU& z|E9V1UzxFKc;0=I2V4J7ins_G22{y&XuT(?q(~CxM`FN&yP^2o3j(a_T+WbF3373GCPN z0>)bpA;7xUME%$HKW>C;Ccf}OgE0G27YLx2+EX=Oh!N2^zHX2?ddNTHU?)DA2YlNXRPA}nhdvzSmvgfJfiS!R zIEsl+(_@uFj^L9#V^0By^}j-b5B7zxe`)*7KTR5Z1=&kcIwP*8Gc>eopx=T{%T5cS zM(7R~-U+2C74({PkltFI_FJrAa?KprD9t~^?QVt*kCCzGwa90_?RzBu?X+QN6?%GP zQB5$Z8#bl9#r`pjw{z=oF|;N}QCgBPew=U|MMjVUPgCtlmDE)$Q$)Ic=rLKYq`E0% zWzz_#xWICiOP2ohUGC;h&eIWfKu0RzYgck6Dg}o3w}*yP`^sePYn5(ttLpDD1U9o)6u+}4<`X?&P4`@P(a>eKmHPeXR|=NO zbfM>(koMEv|F{rCigKt+`X7o+bFi<0L)3mvt>>zO~az-+gI*23O&! zO~QdnCQu)i9-4c-jd3lllbJCY#`m{yQUBRv>fh>?WPYVosi6uD6zs6&r;m+~Ya7Dw z^d`=;XtK(695yE7Otx);69%ItQLNh#&|7Vv^$g=5rw(OxTni@YCE%YTCwv%p*t(c$ zVMsGj95BLGOzsmSZ;yq4Ec4m_ro=TAeOKd{u4GTX>1Lt*_ePKCle(klV?BF6vA!pm zK`?Wm)FWQ|Hv^vQ^!^Ku2F5F}%M<%IMEQ%Y9n|SNN(D5MFP?fzd^2%D0R!N1_zN!2 zpM57xYCnjn#eNV|Pl@ZwX`Z$Ki~~58Ta_T7D7gT-%&VDej`Wy4#rKtE7is`xofYC6o>x|lHMLp|Yc|_?2 z`^2qF>=S~}LHMlVPi%b8u}dY_ze7p@XlvS#fP@9cNI!Aw#(#jizw#%X4QMGy_CrNr z*mj^5AXqIhQW8H2D%3{DiWkNtGOQ4LoXaWYXIUx4^vR{hvZW?QUqaShTn$Q3M)xSh zI?fc&#fAKH43&!XJ(eN9ym*Z@{zA|YgvOdnkQ?VHR0~-_Udeh3VDMBpF>gMlXVn{=fC(pWWVE1LS!abux5B&S-wHNl#DF*`BgE2Xepf%VSB>`^pb= ziK*^ZmTed3dG6G+vYLT<>*E(<1>3qgd(s%*7M~{KSR{@Sag2AoEGU#3#*5l*L*AQr zYdDE%=d@Y$Fyj^Ij=N`?J8s11GMH0x;^9NwkR4=-7&0q<_AQMj^=2bSX^%c$OaJOs zr>=9K?�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

aW5_Z8t9@h3 z-W+sgjLVUyevN*W{iM#y35MCe9v|whx}$I~$c#{%*HpQ4=mPTz=w) z(3xmfK-W+!NPT_>rk?NLIZnE4$6W@$Ec3dTM>P1|lAw*RL3AP0Yaw;N6@+AGuZxo% zdBXW&?yIDoC*Qv9Sg|Ic`GO)-G()+uZaj)ozJ6~-F)C&Uri^JH+%I(5QsnpqAkWtq zhoeUMFx{kYfDQ^L<_CZKBMzVNc17hW=6M(^Ydd5&EreNXWk2(6HMI{ zo()|Zfh8i9RbYK>7@Rr|cOi)pYJq_{YnajN<|>Pg)(>bMu5zlKxfVs6mF+rSXW4lN zZ5447id#nZ5khHHQw|o?a*xUep|7imb61*s)t&XGGHVA6v;`#3Fr0aLzTy+&x`(38 z^Eo}(>%`(0)nJ-@O-aRUhlgi(fqQmqEoU#C2!EpQ-SfqfcR@<#FdcVGaqPZRuKG>r z(H$R&P7Rgrf=@IB=E#bx30X^#Z!Tzvd{HNKHu9}v(%OO76cdFSDSMlJAPF6j`f^UP z_~@8>IC%^gzH!5RS;y(VJKFGoU>AocKJ9Cy$`$st)x4x07yCY*btX!D{{J~OS&H9_izv2 z))U=2dE{0{F{BsJ6ECkm+`AOWPNMi-U7qrZy%DMFGb-r5JAARB;~^GxQgD?rYN-f&s!tn6gls zJ4u%3*$`JjhdW)pwTAstRBprqo7?4`M-A21{n~TIq1!4Z@5p^N<%t3bb6_duM}XJZRfi$&77~o>-^r^{iqInws1HpPO6{J&Srer^p|~I`F9{UF zSjMQ8s?PE1df@rGz)-NgZ9Q-^V1Tq^m^94u%nd=CcccJT(uyKJ zf{hSjAtU4t!d$+mOZjR)vsF-=B<|=hlF6+Owa|M%*XHpW4p-6)QsCr&KPMaGI3os( z!p;qft9n(*LIZZYRUT#%5?uTYNT-Sy-O=wNxUF50W5_QrDv{aHonz$so=B6OK)W%; zMPa0ox@Dm&LNMof)%23UM5bE73d3~#n2xZ9d`Ol>*7883AcHS%Kw_~ayT8xePEVy^ z!-DzhEz3(oTKQs6mZ*+ehTqBRc+nmJLG`ArZhICqxzZ`Dpvjtvh#cS!Y)h+ne$5#r zN{xZ*w!$|XD$f^&?74wW+%yjIgD7<%Y$7Z@qgnK{Y8}aJmlph1zsW@k1jQ5(q7RUzE+p>d5f`ZR|xhcm4|?P)fH*3vT&e@H8ry)q#b*y6J`$JQtE)`S zto`H>a^|^#|CG>FTlfpaM|CZd2VC!{;)>W8X$neY<82ekMea&)ZDy2*M~sh6xt1EB z>AXokrNntZ_yyAWwQMVH^$s?;Ddez&zigb<3a5J zE%0y3h-Go0!>q$bq5IDNf4f#W1tJ)U*n*)p0QpA$AN5-c8?oF2_P}f`DB>UW>npiG z4RF=5mk<04mm?@dY|LLvEzag*eIXajKjRP*TJ8zBttg1(8lXD%5gc~+HwU1Z=9|u= zA2HK{oQdFX;qo$qjMvaDQ>A-cFRac1pyyPK1fnM$#)`)o1^yQi+lB&@lx}13>{)S! zQlEX(M#Qotd_jqYhbH?<;Tj$%+20mT>$Ul%uRqKGvmF7hq%zz6){D&svlpSg$z)H5 zwdh3`XkTI;WpSq|j`w1sNcix)IuLf-*QVpFMhwd%H>I+bXmQ#4xLVu;+ z7~#Ms!E>m07peEriWnAnx;jRk2xM*!eRO3z^i0f`H!S_AFROQcJ~|`$l<0s=b-y`j zgUnxhQ1`Q;nal&&6*HE_p@e9wk97xlw2%e>=9Z9n0K4)Xa`%_OD3uV=qq#H$q7grP zV%NWYto(-~@ro*c4IeJl0o$L>{2%nE|77?3@4p;TcsjVW1PU0w7CL`6I~K|G=lGKN zAvpj5&)@gXfB&`WkGXew1a~sNzK|AbI9YeulSAtC=R6Jq&8b1ueI34)bbXPXz&;y-**yO2zF( zp!W(yJ8pBUrU}PkCTP9;!D_%j8FR%R)+cSCKi!R7@g0UEc_Ltyu9oPE=8nb7Lv9DW zDD`nguracz5OjK^R)QKEt%t3{W9uh4lM{u8KZRRTLUe881`>++V1Y9qEZ0qa)%}kAnK$Vlty!G+DOH>Une9aRC*J) zOni^cH4E%k*UXj1Y#2Zh+KQaRRr_gh$07Jkgu8dwpgdX|mGBL6eK>fzP`~ssP;>R@ z+t!Z23jvLd#u?@fUux`i!Ueqp&h$u{awfAT4-zgBVcdIeYNz-Yq{VM1Gouy8>>H57 zircW%B$d&n-5q?!n$KZ=;a3nS|`MXDt~!#h6LeDM_5W)jnM*k*?PX62xc% z?&4G|?-igB`-znQ%;13i3OQ;CaGm}P_)GB%naiJuR(=5FS-XNU=YaAy=NDN3Th{l* z|7CC~oSJ_#Eg^jqVSYYa@uP1CDi-NKhl-fkaHuD|D)H@Rl3W2a{s4?V5&((`Fn}xpc z@~>Y7Q1}ADUdjc^^SY_YN>!2jsJEOFt1^J$gpwqknS{naE>ef;vZzqIsaNMNpR|7$ z#|1Z|vq1U~Dk^qn*%29>(;S2EKdeoDY_+eLoin*bXet}}wN-Th!Dh$Y1xE#9Rxu$Z zxwE{!53cK);#6rwMK+!mRyyvqZ2-ToS}1?LVAHQtR5+vdt&!5R3ICH{Yf2V3KE%rN z-3wtNbZwr$5|@I7BR)W({~ZhQ*k5pr0Gj77+!Cje03V+Zv_2j{%NKLqLUrMQ8~s&B z1!J6FWa6NOdEX(dzCngDasT4b1u>4e$SFAbbfg0CM?+Uw%&&ot7I5r43KN+C!yAVP zkG&kXPmhz#+;21zjJ2g-xa3kOvbH3<@Yy1{epfRWa*yDiAWj#dsUfDN<8mH_uAX^m z>84u4Qr8*-e6MLvYcr^4os!*JTnwyrvN_hl15%!W{&Ph0>XNyFc^1PGw7 z7pnKYmIfxBb<@CzjeVijty)sI)K4nP}4GJbsZFeV_ zFqK)W@DDx6D5W@mRjA2TWDv)R4mvQ-lXQVeS#KHV#EPo^j0_Ln4FIud9C~W0UW))D zH0c&{%bQ6?=1?-~_2U?DM|&mQ-Nm*ADGW`|usr}R7-oT4F|Z&5#`9<6 zgM>X7O<`P&5z|f~a$VAwKkT(CI(xhuwGu(}Myfs_5E~~as>U*`3gk9n_nbcd=CFa79yY8#!B)y3NKX3d^Z>~j*P-njb2nSHy%!p4 zToq)?9nCp51`{Ku7PXBZS_d?GYo<@(P~f(c&1_QglH;Ys`l#hqYEU#iHe`9XJ>>1W zbNtyAB|SqV{w7CWf1818^5{2+v5Y~n|A|1Y6;2&|pEY0WVHOh+()j?>i`ql;0=l$Z z7rde!KGQXA6Fzwvykju(?8X3VO62>nP<3lv(}B>aWER~|kBP=6*_NWLa>@N2(=gO4 zchkqsNUz!=8D82Xobj){#&&ABi~Q!%;0VafTqmGFic9KdKjslD98>DP@X6Z4%v#Pu za$6b_xa{qrI0it)|1oMiKe8uzLOz)fRe=7DY~`1g->)+#_BZIf>IgA_GW+AlFT5D4 zMeV!mY1gam>^GFUd+M)RE9vAg;(pztfl;6lh9}_7fM80Ah3g${sK~QNQ9@O=%{%Xf zSWx&iYnlB6^0*3`UjpO0ExLuWeAQy%X-O_bWALJm1)bgqc?oiM;$2KqyL)h-p#l4= z!Tlz!!8uYM&e?(Z{TANUs(|a55R*c4am@aHm+K>geN)DYG8oc^%hixEw*u`ml{}3% z)?!t)m@|=?t zDvNcwQJJ_6X1`KTaSPXEX|cUbQvHGPDWD#T4$AP{r$)QXmDxhKzS4h#bVR1ixSn&l zvKa;}DUj;)P?SQv13YhTTV*CW43BS(FiA)>jRO@~R1D;dt!6H;ZQ-aHAuGz-1}tVG zg`a-Hg9-2_Pg1<;1GZ0sbt()=ue)TF!2OU}iIbCCi*i5!8EFH$k;gN$g?O%DOPB*H z!khzEwuk)Ue^4L7kmu82usYD zHIzD&*)*7oA>P`s@a$iemrgc0t=gsAzUO@{PnJ56zdBl}ZH0P8c)lR8K$%nOTH_OO zfsCtH$IkPirp9?OD*#9m5n{WxXS}wbSd0kUbsf(1pVHqo009okSQz^NcUl_Xb3@*m z0Nh@Kli6Nz%JLc*u!)zujI+OVf$Qy|dZqz0bF=&+0mPZU%HK+WO6z zkU|$=J4eeb(k+dWWhu6%&0bGk)XJ^@I7;%M21zbOmByuIaX=DkWDxp@pB~kzq#PGq zGQ~$9Jgc8yo= zZg<{$2fWbTe!mHR9bsqih|Z^d`vjBXaBem|*p8cfEj&=F{7 zq;xu`0TZz;mwH!ylVQ#4)`<*6k82k+*U5O++jRR$lg-W>!7SN zRBsT`$NC=7uz~ zR`pe!PtejdOHFEf+BZNPU_oUscBxvS{3awz_*2Tp^3j3e9nLNl?^X;3HO@aAS5)P3 zokZfjhz_&;L~zkte^NI9wrvTbKZpT$Sjh7c$K{*#9TEhIBqD&tBK}0DFSQKhKRQ~w zHXLfn!Z-tH7{TVHW@?#xmy}-2f%^ch`@;sf&$Iv2Bjq;;8|;hffEz(@*G}qNkvH$Z z7Yk@}2Ty_!CdPhluzC8hoV1`&UjVlC##TT50`Y3b5Vg!`G*{AWyC#m;67SFu$`?MI z{3W5dr!tLkBX8bZh6UaBa36M8To6RdTTGR{o0itiH%L-UE)+kkh{tD(ma4t4xq>$V zlwSYZ@dV$HVlq(w-%@%tST4x_O-?***S&sS;*)uGv~MDa_wr)rlhG~|R6WPjlQNT< zA|*^7Tbx=m6jt?58C@jkzUN;6YPI~nBaO7VMMq*@$@_@w-RC>{Iy@ZFl42@p4&v$3 z*0NKe8$k|O=6d$_IrTU?e)#?`A{E7))&aipN73i%{E^#u`B3$6tqj)^CJ!?T4UK0a$(o zHaY(A5`Zedj7?8DxFk{>BKXg;9!&&{&q$VSz_x_FqX$+s@&mB()37{b2$j(u>#hob z`FBEm&7P7B$20p8tq=3y6ah7DgNCc@r>X< zezQ!EH8#)2*qO=I4jfGK?&)lE0)#-Uphh}hoPScL*wKNkqyU{OqpZionQ$Zl_8tX7 zRFAvzqX4|a4e5d49FOcTj~6AmV5*TzH>e#z#0l+_ahrD)MBMiukBgqyN%vwZ5i!iW zZe&jpfZ}o==8O0MMWF=gPZUj8adi=f!+k#kNg`1v?;a= zz(9+sZiRJzR-C?dF+i;+jAh|2dDCA&qy%wJL@REaFX zthsE>x?F@Gw5WbjX+-OoQBgnx?Z$m{WkaD>NmpFYWtU2pYr%10CHZ%2${XgZ(z{*! zy`*a-bEb|78z3#$K)6zQ)A^wa!|3u-k%9xweA;*&GD?$!K8xHh-~B z;U3W24p@JKq{FKJ!75lmvFsZJK+-D7Co>JhwqYs%I&<9(Sej)DreFXdKC6x@?SEf9 z5Hc5qn-k5}SD&yU`{a)YIYk{v9VM=JH}Ra}si+$SBPI*SYQ8}#85eg^PJ!9z<8jJU z#sg6zc1)jP`mb7*y|1KSKRs(3#XDkodS1DW#4J^m*Vj4a<%s|cOF#OoO;2w^YO7tK`7!_}+{qbD#;8+vO><*klei0q+p=v#{u-I}}tz4BVw6CF4cC zcp>M{%rHDfC(=<`^GJ_OFZ47x}z{Rjgv@aD;PNkQm1m zY(D(z7eY=JF95>s9{MW?dko&daUWh}dg99q^x`2=2~VWd)YueGFg@=qc&hYeu7b~J0T3CRJ`ajc$1^(AWSWspVCrO3>x9wgFA8eFRwh>w&a-YT1KOXP z9$wN==wi!9T+TiV_NfhJ2T3b`7FJN;x(OFbRKN1!&DfjC^ZlJlQbrmst0(Ss(?keH zLFF0e;>tVllRI^1qmqi=5kW>V(h z{OKH5MeLdG-NL%hj|vJD1@0-1e%MvP9IYjYWhx}*vl$+iwG#5}l&R~VDNWa4-j7W9 zkc`h5Nz8Y*79I#a#*ZqcOc%+$yFM*oSV|ka4Fdk&0|T@JayxQ8-USsJ9bV}*{~Y+EC|mGKFa3nj}`EdoOhOOly)2A-d>di+RxT$Hrx|4Cm_vGR~ z0(+nZ>|pv@w{>|_43(OR5 z6DsbTO)dKoS(ZN ztjF(+f*A#Q8&CzXavlF?5Xt!Zo0dB&CQX=304nqkmd-!y{lFRw*usG|_;;7gpJ@nx zJs-oQR>h;b01fb=0|2c2`@6YS3s$D1QWAVShb-3HH{kTUu3*QyO zm^rtdonqF?p>?yHFmq_)bh!sHZjMU9^Fecd`TgjZT?s|e%i`enAu$6D4w-`)6W1i< zx(HB@p5?ne^LFj24Rf&3ZMLCr?d0F2pX~7yV9W(nkzT3^d7PhPge3(LYp3He$5c~B zu8lMCjcNUvu{p(F5RHbFFea=c2xQWdtHL(`JuYT;@qXouTBZ+yc+BM`MV6- z{Kr2(2y~!-(cuZ37F5ZHSBnK98n(YdbbMmqS4UM#zd@qyUtRhJDOdtF!kEys!c^h< zw-MZ{b4_fV!}8?PxajI@-k%4CKd{{p@^x6yvK1dL;!nI3hu8%3K8tTPHVp0ie4hkd zCb7U}0(fD+4`!A&O#VvBJOIJ!bt9zI=5+aW@@9Um`JLTd8E`fnun|8K;P7l?ajYK_ zHKXj^nUeI^LcckAXNhg+2E=e9-R(xF?I4~ko*y~jBN(urSmbpM9;Sa~6(ZOp6Nutt|i(9N6bC;Z-?fNB>`u!i$M@r||LaEemCOQ&`99_hI! z#Yi%8Q@;XVQl#7Ve0_)bB@e6~!?M4LY9Dp2D&PPdooBZP7vzrqoe>N>b|$}1kUuR6 zzxhypGid#Z-2(r+)8)GZ@R0VKFg0dCoPAlGh(m9vTCrS=WWbHjr6$tUg{AONk{>K25A)_QId|c_=U4 zIj{r#LF;|wx7b0z2K{}_AGyTTh3fj9FO(VD%QT^u){I!VxSG~uW^h0k%Hs780uiH_ z0K!@sbHTwH^dEEI9J-jXYqXu8?4O5jvLEiUKOdP}FqtBryIm&Vj|UuK_?4^@c+w7; zZ%!Ikl-_$Kxw5|PR>?Kz?N1Uhc>lEayquHqahaLehSaaD_wSJ%tBBJ$o7P-@I<@U{ z!2TD-?T-_b&-rJPHCE{Mw|6)emhQS(DnxC%!1TSS64{g_iJ}b07Bln1i4!`hE51P# zYWfLOv^JD9>$EgeWy6O+2@PNUsZoD4IKE{W0xU9AfScj_0_)e=;~3+f=ROL{2PWoP zgV{d^e7_mZ$DvqXFYAHZ_os^$xXQ4>*Ufoih|^~HTRPc_C^ysGRKOt|Ty zTT`4#uPbRtRsz*>H3$XqPR1NHeWlf%tq`9gYipqSB7lfz)*Es$g1=J&9O2<)$ zZ6aPtDk~m{w2t7R-#xmw09EksjOsYCu{*))D?^=4@ps7|h2Q$f%bNbYi{(AM)6b?h zqS%YkTkp}zPyvhj^<1SpR3&Nt#&+|*Oz(}{nCXY---K01IZd4;NHCPFsSiz%w9iH_J_STi`t zRJQ4prNx>2drt_JBnU6rs!=}MNMYrUT51_opYs3kx3&LEOYm2XyJB4hhc4EeKgJgJ zcwYKIJ5@IX)@FpCdb$p&to1KeK~PZ#g8XOO{$C4!$vi92sPzcm__D={3H8lS z#LO|fX89CH?i1^6jXK+IOovv7$8-{gHY!=AR6QMRx29`TgOB!rX0zjWb?y*<6k6<@ zm&l3&l_MAMU26PUiX2FiA4=-2~ZTp4(Q(Z=CF08rv`GqdMR+>}#127EnA|GuB_AwHSDjQ})=3 zl2AWrqlKv;rx}Z{ZnvJ3aXw|^uwl>i$jR3o7_Kw3%^P?dcqR%!uOUe{2z|z(C&lAU z&d;k0_}m?gEY1&ZDZIw{vGNHXg+BpzS(|_1Ssk&?jl!VmD;d`o>4v$3%*Xrp%V0 z7W-{2-obiNgJ^}$Q@Z$-CS?fsjEzd`QTga~jpHWTgnCY9}v=&z{Y4!5>etLF;{1Tys$PWLaLdni^1K|oHBhkRG@g+f1L9Wsx`qw>h zq_3Tx5PISYPyNBw((2ej3GC~P&sl+Vqpi{$ z?VHpjd9Rgce(*e^t{0QV_p|~m#5xl#U#IUECyi#kX)e=CuQAToBc;b5UF#UiZt<_d zUC@lCTIDVy#Kby2F!RbbXDH^Fete}>bo3oXfTSX*0F{`oDq_8%LF46=yOGR=g5fl4 zXUGR=QkqH7HT<8u{7YLNIi`O=toY4^YQ!y#)pf(E1Dzh3C+Q*Ua`GQ4W*Tdv6|4Ns z1pTy!3&|s0ddp1Ys-f3N1LB@~_q7 z43tpy1Dv24Vn8i*X~6kH%H$KrgmwMB?lb0>mU)1EOfupdWCR<|i%oRO-k%3Sy#LZ4 z-{(7}Y2M1fh}XxQb6cuMIUC9%Iq7&8M~+9-rD$CdzBUxrHJRjTfWiLZU?29pbHwvc*-B~_d6OfTwqxaB+UIN4-i;pF{*k|02z zPI2;E&}`7jPjY6UYFh8x1VwJP)E27WOrrrca=p@coxB(O9*2nsHAdbG2kF=st>26X z>Da3Krx$*o;;0OqyNZk7@Glu35nvuMaPFAq%LHM>4sS;aKp}2k0MI$_%E}=pVNNm(aQ%;?@W1C8GlXkJKar^_sPw16sSN|F zdQ1R=lHIK-%P{uIyAp8!fl|lK4UDV2dPdJ+Ij=cG6D9H*SPZ@XbD-Xz&nXV4G6l;L zgyMqyZEb_?C0GUgm}hU7}smoO;M9! z9+zDS-&kpL##>m(UTAd0ErOCwE;!s;H6MBPkUc_MYh<8_Q*m;*zBwJ(;R~O)&B>j{ zFm-r(Rw%*}**w&W!c0p^*h)UORh`WEgbfl^x09Ed(d@C{!J8(qvbpR)bI%Y(AmhOr ze%a2^zwa(C{>fNv)N?|>`*n8@<3^1^al_0;VQs+1Jt|Rj$RdIc)IOkx*&ba7tAXu~ z_@9>^lDS}{4k*(Kmyt7|S(f7^w<@>MXz2ci@%Q`z#s}nMKko})bXnfrf$hz991@uA z(i||x^Z~Os!V}m%XC0E^tcf0w!DPFBgFp$u+(ZWb<7wYnXC`0Via&^S)qs8f zkLzbaOx6wv&i-LRP5y_y2$qKJug!7DtoIG_>G%PA(2q*S{84X*1Z>|RL5K7@KWcgZ zk9zw~9P|xBe@OZBvz~uG?~kfbj}A{t9QmA0zs5EJL$sU;e z1~J0y#xGjK@a3X zw)XG2Eiw6__0TkXkm1H&1uS3k$IFJF;QY(``5RJvEEHG!QCio-SK<$_q3r?OZiltg z@#CGQMVmeNhM>zGSOg6-{`#C>>sy8t}uK9PXD%I&|4tvvgIJy>g~oqzc=?? zS0wcgj;Y@0Fo?Knh%5U2Uho~+3Q-U~7P*W*1zU|^F!XF}BnY?J$RJ*oW(Lhk;G3I+zQ~=V0xRKw#GqeY6SepOn1&e@4k? zGk>py_}|{ZxMI%@x^kqu99fPz1s8w(dlgWxggL&zyx<$%xd7JW;xmJ*0560nad>}p zMGm_`#wbyt)hwAMOSnVDHDTH(U!OiBxtiH#urR^u~6Jv$1vH|r~kvE!$M3x6-h8G|KGs!6T z-=_rt$%-}mN_B?vKU8*mGl~txNPF$#m&}1GMqfDyA90_|x^~?4*mb-g(PBR|$vb~= zX>YLez1Nl>4n>%;w=8dE#U_1%QM~?m8BWUbO6t>G-;-?Nthl}gRAN%d*$AD_LPc9` zCdVdf>y6_q((o6NUdkrVo3Vym=3@z$MVW+;aZ^xu7n`Krom&&^ACi8&bgc#N4Vy4N zv*4g;y1tUveJ2i7x%B9M|EKg*WBZTvH=X6dKI-zvGbrUMWZEZ89tP+vBO&n3wB?i` zaC!@9FcjS`U|((7`c+uN#J3b93OcG4nS-#8knFI#wF(5u<&rfqw&C=M_i9kwvL z$O3BDf1?~)2@8z<207WAxId_mJ`1!NpLopqOvSw-YM}X}L`hc97K@JTyuX z<1`2YSatQ$YDPaA{h-qlA?)^_R{!!ykW=Uj5UnN1oiykeX%BSf4KO1S{|C=B;qWMw z&)!RMhP8Fyjo(i*LemK(qgO%6kAQA8p5{4_Kw3ZIy!vYuy_&O!IRnCHhL9| zm?ICs#VObrTs7dlI1l?G2Scmf`D^X|DeDRxWTpEpD|p%4|5DyPV4jo&l%YzXrCLD? zi_Cq4z`(49E%R>!)?{11ubD$Of3I&B)CQ;-cwQqABuk$Nr69Za$N5al>cT;~4jhK)GFI|jA!S_&z3DqA$;V`d{Vi~6DzOx=; z1o;t(Emk%t)(Z?K89N;xo*{M#q4g=Q--qvCS`r4DTp!~KU89BhVN3T7vOW!49tTt5 ze^i-B^e*CHi#8}Ke0R+f`}?0i#{ly*60@hjitT3Lw>}1?znVt<=Z^iecVeNIjWmIF z4=S-L42_*@j6iQjoPu7*@Q58s(jU1C_OchIi4#BXFQEN=ED2;SNlW?&GtKGlNuA+q zbfJZ-EVSdh`tohB={F~&)txcRBe}R#8~p+mov>!ccOcZD!{3E7Mb@@~9c>t!+5uPZ zZzAriknZz9|0kZkvVavJ-gXQu~NDBUnTvHxE*v4{bE9J^ReC9}7PwHB~a>N&TG zB`-_~IKaRJhDPQyzZ$52{mp7tL*^EqGAfOq(ig-pr=$IuWBDpQ)2lP0rv)dy>oQ02 z9J3axHG+pVwLTBYbGzN$d-K46ax3H^4MO{#U05`vojcNJ*D{+U%lv+&d*hWw5Kg@m z8|gwwv)Fd?7?D1KE$=GflBbPBilUt**K+8&RKkqQ4s1b0%J_~XM>U{k6HV!2PXbK@ zbaZrOf(tXeSS9kZrH>m9BXolZ5;gU`v;%W03(C7}n-Y+3Tddb4X$umfaW4g0L%tA* zO1O6iR*)tQIWlaXCE8k0@3}B_**G&+Lr{pcvy$XJI9 zL$~V80Scgs89oH}MRZ7uzG+xQ$Z%cV(9*KicU#+D`N`2oLSN2Yu-V9HJGrCYrq&nN#gj`L z`8w2bstEZ?jc&Po>S?hY$BEv!g4NCaV5fGIGR+EouBOU8{tFEiK~Kc)ZQfuzl@{v8 zOl10zTbR*!SjAc%uSgFDx8MKZ@ALsgJmVL-QO+%z+0gTn71mXce6l1AuPk=I;~nF1 z`OOkj@T)~lGJ==)qq~&4?IzglL)AULh?xmJ(hw|q1$DXKcBctp8t6tp?|FxBo6If5 z#+iY$#)ctx^b{S5at0@4mYnBSO+BBsOY?)A+(3(1W6KM-t*@>P7DL-=jP}Zn+wuLu z%o;%zZ0VXdGGuyTE^tu0?dWw*wuV;v`)^b4UUSAb3tjbi7EQJ)-Wqu(lkE!OxI_JT zMy!X`=sWcnPsO^YOUup5g+-=&=WoQBk>0mtAcB@$I)2n(LDRW6*DibE;=IO`+y5-S*$^s09iLY@GOw$kQq;Mp8y5XMD z)P)ruc;$P8v94*tuQEcjyy;GhtWPOSM4u#?(@pjeGH@8vwCJp_Z?rGh3z8M6T0su0 zODf}}t3%IO+Rk65Xmivc`M6r~i zMJp@`qNrwMx~`g!NJOaHhG?6d`sDDL)`NfRD=Q^h%n?Ib*zwGdrZ8$o`rLWOX%d=u z6V$IDw$4!ZuW_AmWvhnTQ3ZWuZ=9d1cUwV#Tb;p&;`-e##BI_(zng05>H)$W&qIL$1Ude1LWWJ_&w0#S9_ zQR#PE%q+L;#WinPmF6Wo2z#)S%dT$a$LS{wh%qFl@q$R{odL!CU|)*V2TlupnSjZF zTB}fvtIh<*ra@qHblbRfMXKg#>KW+jS3t}oo8-ty(wc3REi>IE|2*-Ok(o9yMAsRc&S8k=dSf$7&Nt&ApovZzrPkkfM<3Xb1hgtqC>pzWL)$b#BJAZ$; z(4^|}yp8T~;czs<#>|dFiN`mmILL>3=rrz;>zgrWzClO;>~8iY-MO5`&g$oPnVwp( zG?Exm?$$j}+c(oJ>)Z6&WL-;g`bbYxoq`L&0j}>mF~CQC=yv(?R5 z5vnR>p7Bii-2N`YTUTWSL*zxGNWGkj<0(eMj5Vy>apb%2oO$v-Z`*y zLeyWAt`b>MN<5GdN|dL~$r5vyuSj)iCZ|p`(UI7vJd+XIKu&tL znxhxr8LXt2arjwonDG?y7CEd+T3;O}PHBDc=8UB>iOuH682kps9kt{N5xvE_iPk>8 zYrBE6{~vpA0T##Br3*I_NCJcecSs;W(BSUDLU4ByoJN9snm~Zy?!l#T2=1;SxP`_g zxVv`#I+C0-Gv9pY%-orK|2sF&LpKFgdso%6uHI{{_a$O@^~foL7;$8c^!|a4K%Ad- zqJ}j`ybb&8!@sR_uB?melvCki#=>@#;Lk1mFJIwOqMiUO)t)H z0~Y4d*U6|RnXIf&=;Ia2gJfJr&&p_T`LN-_Ku9U9(mSe54bFM999I>15xt(Kq|uR& zo*Dzrm zuw4;%RAg$BHT}`IlMpnz>rF34TqGASHxr`+mY%>S#)KjsR3&n;eO7lGe_1Pq)=Mdv z3}(e7(bM|Ejt8?&Kp)Y%iInMCpr`MgA>o|)VCS?p7x(-CUYVg^2$RV!%K!KhN-2H% zTB`Lz#&o_!iycW{c3&WQ?cKuI!;0oHW@__qAbT5kbZulSFDKU6Hy?HiZ)n=8Y|Y&K zJ}ybdPs0iyKP;_zUw=_3{J6=WrhArB=(#bp1LOHvVOO7A$_=`ofT-D>WVAJ!*9HVf ztp*mA{=w9viz#!A%yN+PI4i z*|;HT)kbOvLxO9MrML&4vW(Q|-#3>OJHR-N*Z+LQ&`;oD_!`ycLT%GSdc1$UV=}f1 zzYUySFSYyVRcTKeUG&{{0uVaMaj^;f(o;qu<@Dfe5O^e#=wg-bO}l$S1ypL%@kRp4 z@o4ma2Gj5(Ujr1wQCEZ#+Pn$c}(6MIQFvp z^i49xF)E_QgmUduk>CO;i4jcUTP%3;z73ocZfb?)76mVJC0V=84|{E?)~8i*V_tK) z#VnJZKvCP9@1+t{MK~7dO6*vdNgAbV8QJ+J=$>vP*lt8cjFj#OQf+eLPej4YwO*JT zV|QCwKZG!0tubsJt=VpTI4(T*cxew_dN*l#d_};ds=-Pd6Diu_-Cx^>Jy?VQd_l)_ zp;sP1N#;eHCf?#B?gd?GPd^o{VLbduz=IUHQ30US){&K6dJZH58jC)|$2;t%rxaWt z3m3bEAkwYGU5qU=QF0veeByM#2@6)^(w_WD;NwPc;5uqYveuIYPA50dq6TWEi3rg- zl`i?_W(MiOk2nZ40oQ1ZF@u%4Rn!FX^=Wwd^v-|iK1%27;^FQz*dn8C9G@6q!NJ2jRjha|Vp16RHdH&0DpGjU zUB#*CVO`~rbww&2ArKF+mXs-8bw;K2Q2NX_H-aqBliKU36YzXbrHi*$$1<@8sv`@V zO#?!4Lpzi|7%h_)m^VCFOfNF4a+<_HbGj_bi?P;P<$GQ83hia4&=aJGZj%p6z;Swy z##hE{-hnB76(SHH;7TCoQY`?KeE|DtNhxefcf(D0r?IlM>RHX(Bs${PJm|MAQ#w3p z5oMj*)h>kstPQU?=1)~C+uD@eb2Do_LT?kSyZON+cqbKY_opSo^hOIOuf(m^Dq@$+ zWoKUaju}ZrS|agmN)za(KD;+C7-r)piJJODbe$EZ7e_NZIJ1ZH;XW~?m3y$0d7%pV^*DKMb~|;-BZGZcOlhoI4}}- zTJBx2HMzeQXNlw2^-1-iqNYNJt(;ogD=#IP98kCDQ~QZp_d%jLJy{#(FO~-G93hs$ zw9DJ+#LhivA68Cg>p3hS?=R~I(W_!7I59})r}ejopB`m*p$V??ETo|D0-x(N0sK7K zFc-T?t)aPn5yqLSNO7mlom#i2bg0Pp;)~^~Ip%R^x2j%iHfATs6k_qW5lc;}Cc}?N zKg&T#)JXqe+tVMW7%g^mc{NdNTvbMO5q8(wz8gUTlWM^sA2&M915>Sy>m0 z`26t*p0GO!A`fZa+v!;k!C}j#NcgI*1hEVIusdhUq2y`wt7%mks}|If*?!@<+e0r8 zaGV%9^BhmNTxd!wylA5fQ(fwJ=nxlDd^nFp_rsw4;GMib0Bpv^U3W?s4<5bxy1h(*_d-*fp*0*2pvKv<07O zz};Ze*W4r4XmgT}k7Je0hxDe~Mmw=rB`6A>_mvuw`2g_R_8oe+n@bNKpTq{e%$?WL zD)Zs4a-NRCIKtJjO=-Lwon9i#rk5w}3{B<;9ui0WLPmY4Xvia*_S8Ux=EHX{m5}DVC78Lm!MH z2DP#a&u!XakTAKB8>lVV5Rn;19ql@}YRC{&DNGZNKuI`Y;g_^bzr#8zQxyms&^WI5 zul4Dd;Bg}F^dsz69QkP4khlt$>7Di%kur7?`0^oj!b^atuZ8GVcPNMMEuge3k&m%B zig8A2JBQ<;X#Bt`gZvBhHw}&cKD*40=_K>(ZZ53S>}8*VPlvj`7*e3p&6W!HZm1D2 zk#5&zCHhW8Wa;RzZ@dnBTyH|7diQSl!tz&CkIfR?j0}Sw!;+m<$SZ}!ISvPn^@+FI!>$H%MRF5Bg+N2El7efKq>bL(s2Oa~@ZuuQ%JD+ivQ9Yet$R*1n*E;$aVkbq~*4iCZ2` z$O$3GXkn7ONN&J{#x5eKp{i~M2XWPQH;MNz6->NfW`7u232s&TOZ!|A=tbNUyC_zE z|4+!??`V-IoKbN{&bwa`s_hPzairvF&AZ%zjp|5<4T4k}K$5rD8 zo~@IMpO|cw?aT_I@1_Lsy6qoYO$p7l9_LVI`7G}Gr7+eEL2Jf}P1&Bj)ArS;o=G!g zC{zi((}g0W1$588W0sCQGL7}ke>2{kuX_CAs7n~hjX2}1Ce2S^s5!=OGk+b8v3tafaYWGZXSk`&x|I3FSP zu^^SMOp4ep%wve;nyFQVL98s|cg)k|OdQspiW{{us;qL7cr11TX*~0j!<4rGRog7i-_!9Bs~sU% zt?_>mYKzQR?J?RUx`WI#e1zRg&rZ{>$E2?R#Il7}z?uy=sc)!&Li-3bvEaC8aWtn9D*KlGB{FZo6_?AiHv(Ko;a__E(8hxFU_3 z(J9Px8VD61>2Xyj{`hvn{rt{RV2Wjm5L)L8{=ZMJyii5K3RCEVE1m75kRU z2`eP>f0EJr*R5VDU3{)33!#_xHkKm@4CyjBI)|@$4-`~G1dpzS6uq}aFj{@v-xuRl z*o1yYAjCmf|9H(iR3g}Fe`_Gq9LziOVrV9sO$Hqt@dzW+%$nC{0$?YC`WwP~n~o~w zKW@gB2{b0&au1+ZL;LEFR*fp~d>mX7pp`sPOIC7|3>A0DSDaN-q6*GKVI>kpJQ^}g zWE6aCp~f51INp?yom)}Od0OhqTy~3wL49q8;EV^FR>_6EIPWhRVB^qR>0ZK1ug^=* ze%CnUoqJEj=}yar7ppz2wgkh4TygxQo`8doev23_Qe&2*p03RIm&ac!00_VOz_UN~ zJ=OSj#TC74w(p|Lm{iYnD|)wm?ChWp99L3mvJwMZrK-6sK7lcbwhXIB;;9H(Je2|} zIL8I)*~CDMJG4Ky8#-6ib)Id+iV_4Jz@hWml*El$vO$zLb~Q>N`#5GJ-kDYtNhMzq zFHL3mIl!s(4EOH!v++kMUtm+_rxR5NGWcIId>az*#NuYq@OWDGVC5XCIQn36W7+U8 zt)>qG(cGW*yw6%Wp^B8x%M|8{YilB}*f+E|i&H;yR-1f+@wI`#>zM}0FVD`=p>iy+ zg7egNH>McRjA`weS&hnVG=ceP9obW3!^4{nB{^29?rg&;m(b0@XK~N(Yxi4mj5#a0 z=65DUr7eU-pY83bp7fh+brAJ;K_R8GJjjIxzbsIKqP#$9rVc46`_t#CFGkZ+6;dV@ zKgwj)y2mfT?(k3%4A`;wZtZOhY`!7!kv(7^mbP+Y@7aZaeiXY&up2<>EpZQ_hp%dx zbOSY%DFrq+clLawvkoRMw6698CxVMm@VePahY9 z2B*6pF2;O_jde+S!xe5Y8|-~-|Dq(hvBrRC+H5e{Rk^T*BVOvgV_lO)NLg{og7>^~ zWZT{jL+IxRXf`isyKI9=PELz$I^0kaz>BkNIzzB+t$Aq%S=?!Q-ZBy+TqJLSeCP9s zf}nWnvdYqrhsB9IBQR<-{=#gHrd6IEDg(nJV{i&}?IfcWqt?X8r;$U1vZj$ z($CT~TfzimisBD_zqh+soI8!aXdDaH>WC8+Vu(*Kf6>RE+D^1D+`B7otTyP!FJrr? ztFnow78}R5P3yNo_|A1x9sRaI`QD3rC5rph{+ay+y81fv0x79B);nOFh>HydC^6w_ z%yNm`Qla?%k*GedbVi?T-b_DzW?Shk{YSG=wy|n-BCXsl-CH_iZ+L10S5GFNkG{a) z%-9^CP!Cl@*Wmf=TWxeQtFFHECf9HbYgu-bhA0S=zryYbEeMTFN!SU*>;7Sl-HcJP zeW9Oht(~ZGAT@8sLMuBu|6@Ct@Qz<}hEGJC36c94N7$7xQ&Opd7h>Sbh@w& zfjo+;Gs&#gkplg!wJ^x$fsW>v%_^tZ)BVBb(gQ909apfJ1 zZTtvVwpJIy;W3iXcMp8l&5&xt7X6}`cBgWh62CB3#2#D>3%43?)kzXd6I`Vsf+HvR z33D~KV7^tUrVv}`)PNzl-R!HPB-KZ>FC;fS1b)MEUG@s5lSrdWR2^Yi0R7-68y;aTuJxvBdQFYX1;imqw^uuObr(#k-CYK zS?-*?haSQdh@X#;9ltmdx3ik|V3>U^W+%X9-Dv_lZ&w{%)2yg{)B3Qr25jnh zrHm-IfwFXG<+x=v1hiqzkC|>>tu-@wWPzorq2FnY{<@AKSO=*#J`cdQLr{?1Un3KY zlT6%$KR$S|X`+ceKu3ARQqF@)K>WT7LYGI=(P*-HcxWXt_X$p4Esat6iBFRF;iv6( zM3#+6y687tV}_G*6;-GHN?^Z)-MgH+&v#fN>a9P!o6Z4s_UV=TOumpD?X9Y#%?IYx zpH^4Rj2z6*L|d%XfR7)+53g$H@z(JYxlWA-;*Tm*vQ4U4idvPaTsO0FK{v1IK3$8B zEhQpY8ADr5(Xq6HZZFw99{DvyQ-$*kTJ%gdh&V2x#Z%P=qPgs(YfyO4KJUi5=Y=SJ z-J6CEq+!F`zIXl9VFK%ddL^!po3c+gib*oGU>aUzO7fp&a36|>x)#5w!$do8+iOb& zb8@OFH;%YkF}5|G=q+jzN)1BNa!?g%ygY=Uvvu=&^SWZ3#q5116%I;SxsN}@P%L~f zFwB;Oo})cWSymV=W@b)2?3f`=%DNkSn*VNlzV^+lF9Qe!*YsH3-PKxd@e3mkRn^)t z^?q|wD@N78`Ye$1xu7!1CV#-3DjxTue&o0>*E9i|oCPc#M}#`_NaK)OKYc1dJERq< zch1>)O>CI!;FIEN+#9g;XJxE18#=Xf+sfO2fn8vV2-@% z$}z^T2{bHvncSNAnTP}=aPG8wbAyW#NvC-`drZuaU*>Y;^V@abes-IHlLY(WT86#O zGcufduFk#1hVl_CHBAn#vhc3_JA@04JzWA|QRV=xmZ;ASm8H!QOo_XwwY~w~5}V3k zgfPRzRi={N66!?lfLWM1ku-`6gPe4?T#lCjLIdt%=Rs%jTP%yoJI=`V-Q2Yy{1wIw zo&K?I2siYU?SjPnyY3=HXyUUxXJZD?Flmk9b4X>B^06AxNm4Fh>r?rv_1vy-%YU45;I9DBZw zo}#oIT(zU0BQnGtu@f}q=U6UWZ=>Ad8O&DRPxbl+s^svjJDxWg9nTEzwPLp;q>9>o zR60|;Ml*D`06(l`AyCW)Y92n@z>LrsI#bw6oO?Aby_Sc3HKt`6TIq>($y4zvR&Bi% z)I$@l%$M$C_zna;{;W26={q@1^OmBz$r}rctrfN@LxzcVp(f$G zNJ}+ZNh;rgK?j@CDqJF#US{pltn!lYFAujPFbRUZPyE285034Yt!vWM(TItn=CK<|AM$${)?bYy}OO!&bUgBXgZK+SxS{QXlP*TbD^5}Zos~UAPd=@_zHTMX$WzEt9%0qG~Oa}ce{(i_Uqr4HoHKc zWUV?abI?Xa82!uqtWXT`FNZ@fcGhW+riT=eIJwT`ze;q$H?H&Gz(D@fV;oR_$j#`5 z;>YGX2puG4&N~d46!de#pECSEVm2zJ>FCk~OG)3Y`1bnrAo9v-&h}5+{^`#D^CK9t z)O0H)$Za%7RO3EdCl?UMC4rFaMfhuU{xx{Z194mt@QyT;U&DRKFTq>+8i?brK#WI7 z`Ujs5Ad_F>eeSOx2SPt*gwXwzRVBXo-9}ZDy5iMvl;=O;xmAbPM z$Z=Ga)owjo?=OGWoXzT}k`RMCcF$YH58BIMwPxiS3UIEHHSa;58*P`cv9gs4p!+il z5420|v%5`tZ#$y#%yQ88t7v3=S`fv5$-}KQ)dO(lDCv1HP3&YIRR2rhAAf7Kr17 zOTLQQ>d$NZT!ya^GnOZshUg;XF6675F+Y0=X??Uq-!upSPyx*{szP@hqioG_cw-}k zV8wdlWW@f)>d#CJx=jhbNESnQjlBaA;me5Gtq!Lm`v4f*%o75^8sx;;kvH@h9K~Ow#N7jS zsUi+x(OsPAPmwaMG2gz8@_DN&+3`NAwS3*y?4{Pye2+QNsbl~IrlI{%{tc#W~ z;#RhN>?UhSLbNd3jR6!3Qv7Zwr#GbKBOLRXodxaC8N!`AwPsaV(ht3mpZ4;T(M!sm ze|%h&+*vsgif&~$dH=ERN-P*pf-{1APVc-YXUBOOx_G`T-}tLA2*W+No2{tl6~{QN zC|?A+8U-kwe$9Nn{#E03mMO(CbyX#^f2@{z0Eauhv{fZ7<8iOG5|520broH%vtZA@ zoJNcu0;yE7sn)@}#7RGg9Xf5M5cRg_u?YP zZaP%j(2;JA1q)9_;p+K<0kg=YfD6>IWbknGfYG|-1`L;!!EaB#JKuhqhr>yflg=2V z%U_h=iziI(#;(z0Oa{g6ob%wAuynBZXYGA}^*>;^JqUNpA>@|IT z&4G1#jv3df9c;>Lk9{<1#al`x%EA+Vr-h(XWAY6nslGhtzS$1o4wix2{BiwH)kN9U!<=v)v(^>ZW{Ypc3xFOwZ{XzI4$cY@T#v3 zgLK7?y`?E5+1#COYDQH+?*3?0L&#EM+5y6z5Ep?`JT|KP+Qpc z7YKls6%RlZGN2gaLT{2V&r*-b7bU+B#6w~Y9EJD$UkzS_?Pq=;7KD%>4ipZWwBM{< zcb_YMA0_VfIRhvZD}M<;f*W4bejk?6Vxp)8`Qr*8-^UrS(H05)aRox(2bTW4^#9RP zS0d$Pcs-cf7KD%_u2EHmHPfJk#p!eQrqbrSfqDJ3jQ=VAsNjk>SNps?5wPWtU)PK`6>w3fwVak ze>97JH2el44*T7b9mYSA*IDZv#p(M9M+MrEPyuF4>m=E`8J_7LX z_A+0f32J`>**4ShSHqXzsA>`L&KW}SgkHbP z0ib{&yhDXo@)vhxfwnrh%qz{4r>ICwZ+~ciS*ve}5nDmq)heq3A73Gyvuy3mHjNgQ-=mu(Q5|Vj zi++PtyQ7Zp-2d5_(E*;1ts}|d(wuh9S3g`@VR~K(BEfl&2mP+iUEqG8zfEJ5iJ>yd zQ_0@CZMnxK`!Li+pOr)RMvj%0WlwIwwGx2bMEqWG@t^&jHsTPp+I>Y@Y^#P_P4li#KuydAoR(j$4+92uyCyRA@3edfvOz z2t@NuJSZ0J!by#G&CjAY%#kc9Lgd$%A1*o3V5Tnh=@0F~7HFL-_=u|9OL&Q%n5nnl zL{sV0!JC~N7gTuN*T~MVj?FL1T`Y;jn(u2E?6gkb!9o6XGfv+ug)hKkZJu2=CZd|8 zRG^hV5L5)9=6^5X{zu@Xf9HRQ8bV*8SAH3J1^|9`>Mqgt8|+QIM4J%!aIUTh7=OxG zpVbu?p9&p4g%&9wqp_|}ca+0tv0qYoa@*=e%AgjL#YOdP&+S5u`w66X$mJ@t3tXVj z%PYnzG59n`<#J)7xsiPFE2asWrMws&rdOF8!eOcFC2kYfifQv9dcd+_#a02b3{Pf& zQAl;uc5gLFxq%%I^gOCli=mpxt=l$DN0Ri|2245cnxgc!*9gF{aN@Ib;buozP*EQ~ z#XpUMKjPwq%_h&TojP_M2WmiNY-^=%HZvldKC@|3YK&x!?J!Xva3h#fQeI&zT+y8R z`lTPD9u?9Y8Lm}r-*ef}9Q$_>EdGpU@mJf4%;%>yKtJRq(LfPF^D=DtW^f(M8{X%j zD9&n~Y~CHz4!5vi zN6Pf`m`M1<(i2WT(ZGqqTn(u#gkVGH3w2c8s*nSedD$^8a*Pc{Z5_n8S98?&)?FUT zuz(=tLz5gO5aVRKm31_73}&yNG1?TbJ*5qO8d2G1qpCbqjD(EHKg*4}uQ`=!%O`c3|dxDA`IXX@Y{iqCL7J>H8iDj#m#XWJ~9^4nMUZM zDyB$-OsUYL&eeseN*MYXLTYD&*xaJjLmP7wv?OY7B_nda605nFK(KOkk}kkOo?e_N z8{)eX#cfUz+C5+tUYMlWq)JFat|;pxUFoM^AsX_CBQEiy4yaRiV0@5Z(~i3^y~N^? zrqPu!<5NZI^)Ww?0r~?)!8~`G4|-12ud)YFT&Rhe4i~6qr}Vs`WljPZStn_yrKtZ3_*A)80e0|a9HU8HbcRo-7# z13~|lFKvG~zx<5@JX#U++9maJ~eIU3#G_WjL^|xIBMj zAyg@}5e63k0LC&F%oG7=AXw^g_cst3kn>Z#0nn*lKo0icmH0@afrIcdfOT2u{OlV@ zD{M#p68Lrz206*CA;M9EoI-C{zJa=%FUS5kk$B5c1^_boWB$xPPRfMhi<|n#?Bsts z=WBM_!f&8IrvKAPgWjf#n|=fRxD&}g&Z_hCrv8qmaO2b{nvZfct{ZFj>IyuInJ)lk zcK3rAaZ_1)8ccqHf_EBWW4|2-1814P9z zaM+npdg119ph_%k*~tCrhwG_9l=57{zqX-c1iK7O8Lk75)P19S;p>#CZH1DHH&Qe2t&2>{Ulq3u+E5G(M}qFk%Ukm;)srH1 za8BZfKRc3lw7)50AEuRX(n#ba_8A)s_( zwe5i#a1*k7J}1_%=!fcdqmnn85ikqzbn*1$NJI77*IXx@AKauOS`9xvJQ{T-F|7iZ zCUs0;%i9y{^HfENX{#!gR1bh`gWc9rVldyI%yKF1f7Ws=PN(dDWr!jf{MPeuS%CHK zF>$^7un{VuIF3s2Uwu>itNnj0QLAothF!m*S-uWooxrK7)yS#|oYF2V+l4jjrlpR= zKTy=-a?@?BESDiGf9cRp5cq&|`FNIqyvS4m;X9bq?_KPFXTjqi9fQ~jy{`HODwb6; zcQb-jE>=~Ujd#d18Bw9r#R?#-A!Y)qj-5a0El_X0OfC*v!fj}x|H{A`%o>aS{63Bs zrgG;~*7+CBf%AirpB5i}DOqKIfe(HSjE05X^ zERQz!b|Zv{!7aHSNi>wWT%BHarwJ}Le)26fZp~oG9*FzeqR36<&C_Ai`X(CzM)~Q9 z)h8x_hO1t0?caYPSuw@v=IGV|AIdsDmD(O5q%lV>FeHypYufg*QA9Vzz2j+5dIf-TwfCjHP~x4iPrgZSc$bkrI2XhAIylQVwJa|k zH=4(^uGzZp_K_&jV?gbAD0q6wnMuu=9Q%lcumFNqJ#q6K*z`>#dn|qgRlBuig%NA= z)QX#O8B&aYJ5j}@_&`Ri-G$nSr6Y^r?gfQm#&YWOT$ozgM-h4r-P^mjHFVm(M5nx! zAic z+wK6FB2wDQhk$ZLIg!C@G0guY#*#D2ikut(MhB|^P_hie0{#$PP*-+kQ*lE1L}2GU8) z8DYZ8hSzeKyJ*1~g;Zjt9q&}Ex{z`2z6uuX z5}G5RA(u1vn%2K3aB>{3X@RFKj!tb}EXLc36{ggK2^Dr5(@OQEhxq^>L!;O>5qCHvm7!@LCLA*#^Bw;_NYs#s`OuOCZ#cn=bB%ZmG%gnk9Cb zN<`f-5fh9C9I(yI5$F)dqS{g4?rm-9MGOJ8HSedC z80X5G;}*vC-$Uv(#qRNn!3f?V;HC`huPtpT(|{e0xI0E$2lo*wERUHMIch-yhqMc; z)x$78*Ny0Y#^Jgww6jB{tm3^=wSwqWjU5xF6@GhE zZuHiLI8Tc+CIRaHT1qq|1_1u{8;_alA6DZa)-T;u$E&x-?~RDE`YfoDiAv6Dv?G{F zLsqF5yJRuYDvqQ4&&2g#wGT;f6fUX^X=zSYD2Rw;Dt^!XP#@XTq8SE|wf>eHjR?Rg z6JeD>4k3B(OrPGWyon*}o;$ax6u^O2yPGV5B>T_~HLYL#G@$wSq-ljL(3l3`H?t#< z;?n#vkKi!Z^$EbxGKB1)l4_RpTMG8-+5B%gTHy!7N}d@uzolCc7yofF#AG zf6n}0DGe+j;n2PGMyO}pE$WAu$-nCZk(W;XhyH%(BklHj-gos4|4@e)Wk%Ky{Yn0z zXi#Y2&zXO?&wrydB1hrckV)$Nlb>Gp!)E`lj5&{ge^^)D{ONrEcZVW(q4U$)U$c36 zYDHfoI$CGrU1eK&@+J))_K)hBfD0bJWOJ215~)-- zVR_q@+p`v0>7@T&kT#LP&`LF~*Ch)}65X7#0`j`v7yW#vCUN=4JZA6_|ErP<%!AC& z_v+-y&O>EI2hMheyE!5v(jI7u5j_ciC90@Ek4I{E4~(+pTvr?EifnPnV)8)ZV=m3G z3JA3n1Y|*?g=Qf=00#sNAnJ1b26_l*HxrOe=2EK}F?MA%ERRTbif}Z>=ph$*REj#I zk{Da>T<|PnR_rBFrZvi>Ty+)IRs66tSyyTE?|1jdRY^ShiYtHhoP4)=MW`!mhZX`P zE5iW>C{V4q@{ddZzTb;UQRUy>SsGfjs?Z-Jg}$Ey@#o9{lh*%mX+WvdvFmcx`$*8= z!r2j2g_c+MZo1))N=49X4}bs+$gB_K{|a3H3qd02=j%T%gO5Pd1!MD8l&aewTL#(y zfyetlh$k8Tc&Pl-D%ghC#miXKJN!1pxahcJKHjXD0`DnC>8r=6LQlbc^g&>|@b#gA z$oDEzq_2W~nu+UxFYetIiAVCj=y2;e@J%X7)%?@|?xQQY=U+YMxV}1LNplOv=ro=9 zdNSWwrf$Ce*hw{5MF5kytKqBj0U`2@7ovI0x+vlH$+TMF$Zg}g>iQ6hB-ubhJ4&lG zD4hrusGYbLm7{NC=~i7mQG=VMGU_Vd`mQqAXoao?q@PaWl>IW{K|9rSL+;e+6DL^K zj^bFVg|WjNaiaM6i4^;KQI2_$$^EWy*ZdW9FK=OuFhii&V2sE!jN4}&*85H&UUs}li97%~kuIc1ePVu6%s=o6b<87QB56|Ze2U&zZXmuya{_LT zbu0WYl~&aIn%Z9^IBsV?=r<(_&qCi0$9k+7)+8a)ijt7FfzLKizN5>_c%=8f_>nFv ztKkdG25Cgxhh>Bk(u3?5kdpfAwoCoXEx2Uru zQJ2aJ6VKXQ=2*qGhRz*_dNYTUk;O>j=xSAy8oKz4mfly=x9mqhIA;TkIslU4ieMGI z4wBHOJa@-1kjE%sg2&F#NeO9TVc~4GUKjI4oh(_ax`ekWZ*YWOQjn@?=u_;6)#z!2 z{0Cu*i4MG;xuY@1N!->Yw<>nbLhgPt?(CYKmg4Jqu}pEp4eh(}D5l@IasJpgtXqMn zF0>J1nyD$1j~0&yR()%tk@+O{p`7T~rc=Q^IXdkkLE4O$i#NOjr!9RBOeQh7?+jRA z=+J0{*CNQKb5S9FmE5i`V-YjV=2$bsMkT9RO$tdpS%V9|u23q+d(}-y zLxY5Ln3emVEv))Cg;y%!knYd=dtqyeW8b%4+!=)n0!^1QkTq307^J&@{wnNxGy9jy zjb91n{|ra|b34Q9@5q2b3({wExiYR-_QP`Kqr*A4py+IUBP*7;*Ef?nXq)8@;Us5b!l+3!0+>KTRK zM=AckQy8PBA!U;r%XzNq;6f1{q0&x{d#jgSS9j3;Y3#;Xjd(B#!ePFzVs|Od9?(ZV zdRu5OP;e3`hoJzLTWAqVocX52%?9HE0t9R%KLZ4wt!v7|T#NsO>-lfE#h+9D*O?3M zrVQl#BIxGedQ<*~J$z}83B(n6FDDKX`0+rM73dT&<)y~()ERv>>q`ITsSo@-?e4K^ z*pE>^tO&6Y*Kh}N+=h9z^kXlmL|o(dQJKH*^P(SC`@{5pPWe-oe-1@Ijp(QM>;?V| z8}Rd=@e=L#G;_hYkCRiWMuu*Sx9V$K)pf*KptD9qm2Org>zBfb|FUQ2zuC<2Z=Sh- zj{B7#@IND$U)D$S@2lFQA+-!HtI^da1S~A?XCZtQf^JDh!&8gMz?VQZS;^L=!qdal z(UZ(i5c!EPjvL5x{>hUYTF}q`{glB^JNW4fKjXpAnE3N^;pb=L|EcGLG|`Sjmh<7& z=8_HJgtsee`)O#v>gw-}oOszmHmUHCa_jjE^W+4$Yi_Z!aXWL|S3`2@?d32nGO4hH zD$@Fo)oV01C6nyEghZl-vO!b!9~9V{hCB$NTTRHLCP>?tzN-}s{d1aCT?!v8XAo9A zJvWZ7>D3cq0+f28SD(j{H7ME40Z?K#FQ-Q2e>)DBeFl&)25%Uci*rcj5DOVpX=b*{)8fy zua}CfIp%d8b0`M}9{u{QWZ#pb?KW4&5(8EVD%6KwJ!?nnbk-H{O0wq3K{&!Na~qH0 z$EL(HO^vUW$%_xBr+QxtDuxdzMvTNdGelT#;^dLIlZ=56uvNm^&xlkwd37GGVwMj& z;uiO2$=lt#)4CP-8+fI1>AtBCyR1wrkzA&8T6eCjz0<+$;Nz>-l@5ZC^BIH|Brl%) zDk0RR$&||@sR>mE!Eq|JXJV@tflxvdWCJ5Z{x!m4thJ8nI6dt0{o{xhMus)>Wk=;z zJj)e;ymnO}A0D#YC?+}76?00;35W3zX^5XxCmOtZ`uq^pevHVC>&6w*ikqlEnR<=% zYHcxEE!Is-XDdH3CwH208{YFg?jG*ja83~6fbC#5_cd!}?IZvs5QYt#)Ah{W+08IR zmq%%ld8*X?dLcO2KCC^p;UK5LrH=W&@FmlmJ}O!fs&Kn@Do4c@kQ&gvh|AH-Y*lPk z&^ElCSt8~dCiMrT=n@nTZ9FDIEczX|ChH7|C5xa2He7I6)6{NIypx0+> zp1pzhN?V!{U2P(V1Ga)^P5iiqR2pd{!TbPQy{vA;)Q_0epi~iN#$nl-kIFr`{Z7(9$pR(*}?0Y!#sSbN3a)au66)p@1lM6b{xO|svY6d z&G00j)#Xevwf*A;7bmZAca+VkMhSK0Jijf(frXpI_Jircs=rBca}j`@dG`sl#2$L? zzR1X?wQt;ceR+2azc2STF44(OOK|?m%2N`fRAqJIg_Gj);?1H=3-3wU>RP=0w}c<| zU})aX=(h}m4_%5eUmW;lXPtX&aEjst?F6_zrt|2G09bvN$!T}AF%D!@BEeO)BNguP z#X0yG$futVveKRQ6tn?4@9I^HB%mf!Pk&#;9-=RFek&J_$GeWNewJ9*EznTj_R@Pm zdW`*tzo5CA|*+v^eSRArM z6VJ*=k0bal;_I&nG!=MyL3v1o{D>G}3n83D0ZjRiLxt(mOCu9q?)CAgi4CARZIml0 zY4@Tsy&i0#nn*r*u?Hs#+5Ekb4#ND9AqX9{hKTAsugJGt8%>r?PDVSd;$3+aZJFQ*^!1DjKq5~H#_SM$9M_>FI%0n5 z=-pX==cUb86b3sPl1TYwrAv+MRp&{Vsqdmsn-%o@)f{oM=TJevBYU2;bJ|xl1d5AV zLR`#ix@jvpxTfjk%hJd#<(hKuIa2;@Cf`u}wF~vTE&{wpljO|7Cxnvz?P5S$2@4UU z_(78gYijE1+HPok(XI2O!tBn9Hdwb~<8}2qe|2l5aO>L(_}+l+Jd{IkZ|$OFWa+Hd z%iC7}Q-golv82AT=(p#>4)lkNp>w=BaIF|B|WxoxVtw z&;YZ@4TlVEKdWk3nkJAjViq?6eb^%_IHK<~3#J{fR&tkfZR@N3AZ>{RK)FfTrhm)< zBv0qho6qZn7H{vz-C#I1pTU{oOmVzCKw%lJ>&@VG7*9qcG5mhm9mvom;6xChL2_wB z{_Qmt00e-mT7B~k6a@TaCZnGEVhRDZei3Up>Y0$X2aC*?L_3hZYyE3o^8I%%GH}0o zeW0}*ANY~v#oW0|1_4-xC)Ea!l3@X;C&iO+U=Z*#Jm7OB>YqCE4b*d#NI%^CFYoMM-O9h5d#weIh5XB@f86Q6 zluM`sIShv%z6O{4Fsv8y4Rl-bUGq8^NclA%Kn@(^mW0sHAAvzsFN~ zC9?TOjV6#MijDxr78%&o^kUg8?~X#gN97uDfgxN#HOwH#_2Bt9rX`g>v=xBZw#At|hCGE-zwnzVDNb ze#oyyfXg{4H)Emgh<=tTH&y5YaLE~&4orIdPJCxWS3*56N?hVl>3g-fm8 z$N06_J`{RwUjGm7>`$jsd9V5biRfteKO&d-+%8Hz3Aeu`7sPCW3vd_T-#V6_o*RW@ zWf{QHAOZ^9U5y7XD*>I3{6is1{7D2#EWcR7ifP`-<*4&_jRHFVp`Fa{Djh;H%frc2 z6V%#g8@s&uE7>Twf1ixLtf2Hk2`Z`lInZeG7giIX5D1v1z~J9FG`hf)r36XfZ_N5< zjfJY}yd?q*_^&QsB|)FrIkt9yH}xQA@4HX@*%1GQ3?Hgl5=^H5hwR`(eibr!hzvTq z_18B4>B6|7vWMbt`G;uX0>NYy;Hp3~Nb+~D`0i35*punsO*-VeM+swOWWCC?{>>== z#=RnDYg~Z4fiO$-SDu7(V$6UV+mNaZXU9|MaQ(&A(@+%u!oOdot6YG4PX1OX$l}_a ze47HD{A&^Z3vKbJMnp^0Apac)e^(NV8Cy&BcMc6y4fqTmO8M)k@rMiWd@3-I_%+%B zF8dE1?vKa`P-f5m7M08pdHPrMmw^74?)GQL2v+_7+I#P)rnYxoIEV@& ziiM(5VgV5lQ9+tOu+T(^fKmk%6bJ}NlO_ZUq98iiM zJ}IVjDSx-^wFHlUlcL3{aS&7zOu4mdmb+^44_v{~0;36Ghj3t&)K**gB`{-8CcocN z>&Z{Fl!oEJTa;TaoWWfXptCGHTUfXM@KC4@M_@v$X8ZofUUTo)$7OwUa#h#&z1~=UApzv{TxGx!C+2GUouYo`PJUZlgfd*DNP|q z8hDwR_El%9Wc1hW#oM%3i01TNGTqgaYOo{C5I40s$obWfbVz8rx%p*mdxwg%t?>H? z5rz-68C`GQX#}r^mKoJN)VGPxNr?q#8DL~H=7q1bBM%38Z*{sh_4T;MB^g&w0?DfB z(&NyYR)P1^T9`$~v|Yvph5GZ#>GQgXk%wpkV``p+me0<4m75LZshBV5iCyOK-s-ZY zV~y8!(a*ob+QoJnW1iwAzr*$i_xP?U&im_aV(WaC(nvi@&xyp3&&rm>@*L!KohgsG zg3D)nh|i%Xy};4`$G*ezEM|$--_Eco+)K+^@UE~)|^rM9GNBxXWpjk5d7 zhk-v!Nkvp7BX@wT{I2HB+e%?@w1b9Lr&(~}1Gv@~1CqX{SaXQ4tJO3PijzmQMBxht zWCHk~PN@4S3#=Jp97h7tMtuy3)tw3_(#V;x4MgK{yyba;nac*_-(k=}VP`+1+iaJC zLrMY8DB|gNSWd?R*t@3xu#5ygq)`CQ`hqn(7LFKhAk%bVUZA1iUj6W~;^ zHG%?7nB^33XfXKkQ$twz+&)qd>A;UmNIsdD(^(SmZi4%{wdb|ou8dS;wL>pXb<6~O z0Xe-oTv;X?N$q9qVtzp|9UJTDj}iTt85BnT=;Ox#VZ0#I@FJgY4m}z6PJ0mH*D~}6 zvt*g$Cv}lfnTND05kjWdK^~MTx+*vjl&#GFhnUaNaS%%5Ytw^g*0WK>`)~KtqiWDB z%h9W%T@aY=GZ@D}tM?zoVmxO($NFQ=*xQi?H&a>`!OHwjDEJs~3TvUp4}sXT&Tufb zDNR8uCR$sK+%FRqLK*P>l{tav>Q~~WBX@fs660%=wJdL@;FsG6nxFl=U<${72x#XI z7{HL(-(dh;8fuB>;~SO?unYNR|0+p(B@Oi;63~V`)CmlN3f6-ZoM{mOR-f(SuAW5TNUR^WEfM2BPBJ}_uBhA75F92*A|X!5|4X? zeQHltfy8G&qyTcXUxJ)v$pq0JU;7Su;AV<{NBdvY_8f3oKgPAH1+c9k%YOeICTOj? zQ;jI(h$tPKjsJ1qZ&biq8kvV^gO~rLU{QP2iUm6y(Hyv%-_P^)Gh{0TBKEOH8&>;O$Mwd;Hc$74~6>OskI&u^|fvoQ0GXU`+U>9*9T4 z2}QGrpZZy>wCyr@NfxnTdRN@Z|8+_P+;vo(Q^hs1U zmXk%&{?)Dl577%;yq2YIrE8M+wO%wJ!1VvUE4qw<WF)8TeuL-GUpx!-O3F^D`Hgi$_#fje5u#8#qlTymkSf&3c6ob3*6258|F z)!XbT>8f@z&oSF_H$ zVn4O!Qi5RA{Kt^*uoJ3?W$<;W#+t%G0dQ6;+S_U7&;ZN9T#f^>uYS5iKs_z)61t?O z3QL@4bvV@Z=}>9T?^@vclx_bh-5#TlC8fuqziCzhI+sZ!X-F3_B?iuyE&LF0wN>hB zBM!U>z1l6jWtR?V-9hkKi^-U0&YSgaP+p175=$d6=>cXNd_-$?wEc#~p@x1wiP5jP zP0v((hdqdkB7sQzA1!FZ9~Sm%0a&D_e}{?c|I|gYE&K2d4xU}lIju%qV^Le~2FRDe zYR?Dux;@wO8_;)>Ar;nPd(^NJgbX4ovp@1Z*a7QhkLFm;Xr}&6dE-`~2E^L7DdG_# zgn9zVQo)P30%as+U?sl8&R9!+hb6)%;6rEESA&NIs!2WMArQ$r(olGqlXfH;U5y6_ z3ebYU&lfJT^r^)|TYl+^Nh+Wnw7#_@IuQZ9IPG#ZI$7UZT4c_T`WuE-AtJ_o!J}Q@ zVUAjK8PFSV_P~+aCdA{PkPJK&sNGWnuduI)c_Ye;axM4dfg&UbtLX3!E_RMQkw1C=vkAile7s1xQr0 zP>Upx0gM;q$WdMpq#QjANO(1@QXPn6S7ur`!qP=d%osw~!;6<_OX^Gn2)?C->XPLfPir(Jhzr252JHQYP1Q9w4z@CpFs6Zv{C3xu%z$_lDg*NVH6(| zoVL(1qM{7Jg#pqYbcA>~&6iMx9s!3|K^n2L3QUxg6p~hEK?bZDEEE$(RzP#qK=LU> zo+1aYV5%K49@PiLwSZa1u80Oaz|BvnqAJi_6qGDdI^qVPLU*2TUJ)Ht-o_*AAY2rw z#jnfx@d;iq*jVW640Jk>)!e(mi7o5?hB5iAsdNGAPkH=}YzjR*Glx{j@gju&C<0@e zmPote?B$&uPmK{8;Ou2Ty}bom`(F-L}^MD`R$Otcmf4OumuTRm6ClL3tf zoFDC2@N=Vq!A_tRcP0<7sss@2th9bUl6q6r!niT$c}|Qr=$~7^viMxJ;aluXAI_yX z_2j-g;mheMmY=3Xh<Vi;==IToFVjuQ_@*J2hhv+;YyB#0UWyZ|yEt&>96;cB%|pU5c%(bQhFs0lg%C1hcrZUT0dCmsw63|ESp za^s`M`SC!P4nqar%|9$EmcNx^KE6Q*5yDmssv5U~G;%JDJVl#Z|99B=C}5r?2(g6c zm&Bp-4Am)FFYqI!JiXW^N zee5tu$ScFtgMh+20?$ny13Hl+Cj1YoDt zHtQ$jh;L|VYbnnj62lBl;7JQU^?@OtlLR~rUC^O_MrV0!E*5$(=o~$yK!~r9<3%lg zhe^{`nG%GDQ|v5lfsN-<0Lp>L^gHxHF0CQIjv_Efh42^xhyqGa#XCb`12C) z+jZwP>Yhe==_qzEXX>VzW#ts&h4XS_GXhl1uD`7;-ywMUsLQ@USnA20GKr6uKD_4V z2^rEU+>(cQHN0MR#N&*l^_*npMpI_HQ2X>(!PgDwLxwkWdr2)LeRh>r?hbSpGI$Ud zD&%hPKsoS+-|-J!%EK(0q8cqkxw=%b#_`khc2&o6TT8D@zkaTaPol%wcIxgLe7T5; zy=bg!`8*A(tKtBuu`_jg)Pc#bH6CFP)BM<5E(s)~B~v_D zxKIwUc7LDa5WjpF|?7nIP~E*wk#?@X)o>4N)I#^nAT$N zqh}o6!-%`*)|w|qM_!SV0fH4+x%KaZfuXabki)1+H(B!8Vh>c0(uE zLm|1u<8+Q2dk>MShkv`;)wNo{hk_tuVwc9ADhhTE25#MVJs&yg3mD$NN^KL>dr?P- zeFAnqP;T@6$8AcWr16|~TTE1#H>eliF>6g?<1@aq;0?h)#KkCP@jqw^r#d<(3RH-+ zXzRG(kSPhRBiKsvPs`u8jG2Xhr76nrfazpDB1hKZ7m$X6othO{xd~@pi~4Dm)C#yFfgMn9ZLj|*uMt_o1PHd zU*-5@dEc4uuou4?Nr|-eI1)0L6g z?(}#_An$w-{bG&PD-!&)gJo0BKA1|?ZY{moS8|Gx@y8~8#o~mn<-YyQNnr{cfO3Bf z(}#;wNlGX#4W~q>)Dx|KO(Y>er65clF|4#)Mxe22D-m%cRS+uCflyQM?Im<=W;!#x#+lNSM;!mLuBr?!w0>CmN0L!Rl zK{+7(2TKqT9l=j%00|t8=X5~7LMB4Yil)a3Ye$Ky05#GLocAgl$_?Cwy#g6Sa)20dMDL+ZteB*VrjaT*NJ>=R zl~PWI*u_lG460BdVvt%KR;Q2#)V@RrI3iV2Kv$_VU-yH9-43zVn-(zjPd7lEIaZ<- z`4aGu)M$g&J(VXA$mm^81JyQ=k3d8s#0`oN1|adE09T)iUho&ET;)R7rU8nRO43t^ zgG&&mxZyx^9Py}XO5v0?U#i2mrV$6!NdR^JnOvmJmBteQSi0E zYXISv2I&u~j0B7bpx|hXFpY@?j1r}|vAV*v`WV;=LLm*PU71OE1AI+qsVl_`N7Ei_%`sTd>;_JY|@#nbBcMthq5^?9IhrQmdwA3@H_%v?~&BHVg#5 zG%|g$%6y6h*+UpT$+L@qPOKkW0`E*r^0ecK%jkyksY;_D37vUV7_FBDXaHo-0N=z$tw1n9bAhMjUf(Y>pKpx8vC;?Nwjf;+>Xy(3LG=iAO@g9sbimf9^vorDf(jZ1?YVUE&MqxOxRv@;o%KQJ+IF)=#N}8I@s%g^;(~ZF}w%oPwW!bl!SxLp5j?9a$ zLwYt&C)G97&wK`));V41l$!s0!gqqWQ8wI-Il7w1$TPs!)`09$IMVCV#x{yx6;I4h zPyJo;QtHswFt)!-^A7m|*h%FzSv@D+R*0Bp`M+tHQuA|XSzT9@LVMWb-!$AbY>{^5 zr*-FFee55&wfCJzWTFaZhNwea#h4t{05?EBF*bs(!jW!bcxV*F=)DOwu=(jUMGH`Y zZKwiOfJ6fid<~<=0YV(46f8fWD67D#v!_vNg^~zgDM`u$rzj5_1`Ck_thv}qMUuv! zQv4oNa0(ixk<&E4hpGkznq?ZzN&yPGeivlZ?}brX+)U%i0g;JWNTjjHh{8oUrQAgI zgA{U;b;a$erA8HLo`B!ymC%Uwo4*JfOco6uZFQ^rcnBG?UA%|A=G|uvqq3ibvT6(r z;Z$wf7xZJgQXsg1wxn1!damB5I-f6LOLWtp1M2xtvtjdx;^(4x-^{;2i^I*P>o*Aa zFJShMtp$ea@QuoCX4?_f!ft3_9-@9yjK5p0KR2D|y238CltMNcWVdQRPC@zWXTeuq zau=#Lmg$$IqWC$?oJzBTE`zV21q-5+jT2rLOcB2Qs6)IzL#gRdc7uVKX`CN$J<^w` zMV1wULJdnT^8%U=m=`K?8W77Lp<0Urw8=4pa&e`q3;ZJq30QSXp=pppDyUxKGQUcpH_FkQ#Ml3pbQ0wpymv!HMBbKYO!Ud>>#Zk18U)k)Dd)%srfw( zNVIVc7B=uNe}LjtdvqSHD#A+Jk<`3W=A}*9I2&vS0d*K^o=zQxW?DO3{|ppUoTVc# zd!Pi2Cvf$F(5JiQH?LG3q#(}-o}o0}$J>enY5IS?GiJ0M#N3dRT?;2# zV!)kny(r?cd0@3s=Dh7@G~~M1u#k@_HRVZBoh>715q=@5QSL2bX}*e|7Tx4uYgu%R zv<8vD7WC9B~8>kW12e?O}$V8H-d^aBKK$J7$vuR41||?vn2!0H zSMw%9O6$hs>N7D3sdavi8VV{eDDN0R2*1ZRsBi0)5tb_~S8ov3F=lv5Es!j=_0cJw zqZgPS2jNq@jNA17Ek|_61;_3TyYmN zyTA*+@`lb9DndEq7BB-B>jsw%tgN^fWz6fs^IJN;mKBg9!3$%x9?;))odzw-Wiv7E zXcw~6mpOi7hYxZ4H*zER*zpu_kM0vqAjgWdK4ab2vtVsRpI?}VmX?5;RjQ4e@q|w* zkY0mN?SdR0w$SnR6L<%*8AJUiZzI&Cqpj@(Af^%#{X|43X8AI@s<4bqH&JN*gzTCr z($qKb-_a;E;9m^&)Q|2zwqFDrc`T8?9jV`sTd5;GS3edT_@P}SyT<4}Yb4@+!~F?p zUjAdGo~62C#x6cS;k?4mAep8!hh)M)u=-vWx4fnYKEgp>Mi3R?jU4a}L_ApfHp;>0eOza$O8it=?AunM3MJmMmJ(6(n#~@Mc*l5XoS_2M`a5{$)03JxqKzE zhbLl^#hUy+n@j)&B=hgE`!Qg+(EAP0^LeU2t(@&cpvHx_S<*DXzs49MeGB^aAw)sp zLKAq$`GEAgkDe<{q-|^OXh%eFQsC6mgBY0TyfadZ9%z8TG2gK|D8y<5LM1o|ON#U4 zDdOP#V%5^};%)-i(=oTWBEywIfk{0CZss3CbacOIP9zbxc(`GR1R}bVr{!mVyBNcOrj_4H`BdTK2oZ7pq9 zALPP^zIFDflFq18d8eSazMecpOlaIJI{tNnC*vP@h(1H~6O>F>11@GS>!zyGB zz!<7vd!#_Cc0PU;Bj4yKEr{b5kbTq^C^&|3LM>q5;6n3wu$iK(=7S18jbC>w%T{2+ z(k7c2_QL@={(1(#L;Mn3Uh!`c|Bp`TmJKSn;Q2#m|E{pV>6FFa0DbD){CxaBG?P00 zU#jtiy2Wjks#ROnxUL)$K5B0lsnysZu&TQXecYEuzX+(Ev{W-H`!9im=gF$I2k2Pw zC#>j87fnefG%Nn!Yl3gRxM=?WQ&)fL!lZwg_uu%~|2OVo{eoXgY}S+lQDo-m(#<Y0u#2>wIlCyu71OUla1 z4*lu9lxZqZJ-f<7qAB#=MHL+;9_>b3xIRlffr-7SBJ9 zc4oDUCp{uPE%~0jV3~Y~jol9PrXzN?>~z$QMe`L7)!g@>5U?*8}N9 z)qA=8Q)CZxZ^tByJ$RMc&3I`MGmV~%`Kj-`pWuK=1`+;1C*0^Il)6mYE;77Zoe#(r zR{J<$P?uy_!~QE$ zq#vn83^b4d-w&Ic*f#jaV9}CbDt2v~%p(bh^0~C#ajosxnb<@p!7BYXxwGk|_fweO zsBi6CY6YhNoU`{npX8(o5i-hv=KAqPbA|*LQ8iEszUwUSR3j`BrdemyKCLo#x73v0 zYXh90tJgH{ii?%<4R9*r<#-f3E+I|ul*7&3&WwjrJXY)1O3>3Et7x*4jt^sgjA{;P ziv`k7R_4FLG6$Q{Y;g&?`1Z7_n)$g~rbuCSA?&%N@Ua~-ES4rBE^V{#WDIXO9#|`W z$AZqZG5J00b5fJapiop2M~-)YoW0F4&UfSeyXg;3b6neehqpiJn`rW)(`74XagO_ikwOYY29m}Uf@r5!T*BFxjRo#p>2majs= zwAOo&CI6KCI=Au6Xw)aHRn~@B{ZpvRu|;+$$IwpYnnzMc0}S{dZnG+X1&$IOPrcTi zA)PYO^ir_;)VxpAPKMpyU)QsoJ;&hQ#j*jlz{6skX}YXq7^rHc$NP4srgqQLThd3# zX{DGvjjuEr6~01 zOon?w_C7JX_QB_y!&pk9wtTcU2~&T4yRUoOse!eE^6N|yBTPXLwUtWTH>w(*Qq6vi zySF3l;J)Cc>x|6)7w?eA_lX2HClTYXy8Hv5BSSJ{)?3G0D}3uXGZrwJ1p z?<974*EVRqE(&$sm`+5BG2RCIyhXDYjY&av-SF3z(x)Zx7llScJMSq6@8M@u+_;T_ zKkoY6v6Q|q{vWEY+6iY=GHyHBx8usCX{iKixqbZL`ViO27+v;e85IwU`Q^yIqf2zRCh9YYd{!va_uXweRowH+y%O{_bQ$fNsuI2RarX;jj&#M zlb?;#xq3tQ>J{cn``FGohDYufdZ*0qM?Z{pBPZNf;nSX$-@wm1H?DSMC+j&C-avb# zrbVo1%HlPGsY^k9!}*%%+Fip6z9KUHl5ZCtoV^?%Z62pT+2J!Ll6N_=$}OwoYWlNw zA*rj%3ZHEEoU_?&T|Urgnr|1nAllT*R~lP$Ld@J=WqZg~xfcNns&o2Ns6Jn!;l)5KFFIe2v4x|XCZ(m@wD85){v8Q85EmN416)k~4zxx?Lr6<509I-~DXVdFFNIGR1dV&Fk~h&fOVp z4yon5a5FJNJjsTB?L+!j_qy1r{qJ^$mn9D~+Hg9y*o3=ccYJcFC`&PeUWw48ugMs( zlJw+KaZet+aU(0mY)W4ukY{+@-hMxefBBse-x>W{v{Bx}85i7#Fx9P?tL`Rn)-&~`qzdic5Ug}1s+QSU3ret*KFNVJLTI;W~z?yHzkjecd0lfTim#za_og4 z^1|I?wKL}XI}0QP-FXm4E?$g0IK>*roI_6N5kf>Vp(5fl@s*- zQ+l*j1yjh-L-QT;@%scJ4Xer9V{KNj$$iZB)LXSfydnDCx~HFT)ZkimAM89=@SadLwTB`8mu7 zH4MuWVjAgvlMZ3gGLve@#!3QPytm|5mPW&R*Gctor=L}f@;|sftVdS8ZQs2ErNvKs zyn|mQ^3yY2mmF(;Jv4(9{ycH41at7s5%WOBgP)O_D#NH?<{_DlR zvg?+9`+OL_G~9Wc(fHKJh;MDfY{c=4ix{i8!6fdyZLZo2+lyJAY*(pn<9NYg2hc}{TCQt_d__viV9u;{ z`VQMND=f#k}o_$(seo|a`=z~`s!Wps8_HZ29S}_vxb+daN6HK5w zN#<30>VO%Y&d!S2QgL5-H{1KyVzL)eynfiG=3(ulADy-l^!3Zbvd{a6C@Q5n5Okhh z7|FN2P%Et23^r`$<=mFj6iDT+^YjX5iaEO`OGcP$+NyeoutMc-VM%c-hc_bKw!*g< z)}#+x8RUj>hGf6V4sCW^e)FMkr{`S^*9^IGuZ(2F80@*B8yO z$ro>PyEU6+bUf?ro5_r=9Vm9`8)-7#x+$YCnXE6h_y=awJ8Z9#Y1r1jr#`YBWmpvUgZg)o2y<6B;GfSKhke*=pUU|R3ctq{vZ=K=i_Cd8dQT+Jql+)zb zd4Bx0vAHll6`RjFng%(ik(K+LG(u&zsSNCoofNq{YEbMfda>v-+QZ#SYNJ^7b~83* z;pFrzi?t3z;tgiQ?*EmtxJn!Jd{H0ee8!#c%WTiwwaoF#eLiS>(eFWR zGT!w|fxO$jYrS_m#7cAm#eH@Br{3*IEM9X|wrqVEsEatGH)*fSGp`q092aZi-Fh$( z^}v3YgIB`EL_w*F(p^g4`*Ie;(B`QJt*lJ&7pu6#jd^|Vaz9QOEAOd!w{erHR?QuM z5sln8+dRM?$*BtU{7Fa3E4D%C5D+=01J6)BI8H)}f#;Ixozg z_;lxlUCd$^j~+f(^7PB=Y)-ow_`%zp^!#j%H&5cnQq>>0N9*gCUUuMAj5K_a`M61U zJ&F}}B+_RG+xwPQHPrQ><}bY473~8ROZAWm`yT7;pIZOcPV|#pn#aLF#mmm_Pxv0q zX{z*j<>5CgB^M0S{YsXT!}?w&t!*Y;o^Cec}xiycrWn$IBdfJALrQ=9%t$ zA?qSO2058xn}#NlX7BDbD_4C9s%TUnKQd#_l5*WiY{6MVbxTfm=w&9x?rl=m_oWY1 zofs9|1ry3xba<&ZEdB5a!KcZFy)MKgJ<{=K@VKlL4!YTn%HO`oXsknXFX$o+4P%|@vC zM<*h%bV_{K(7++eGaxZq4V*@QKP-}UG|eB98-(Y{(AWc)UN*{Bs z-bu~Cd_FbK*}ZSTyxANjK9DN0-FK~K(sMPR`S>(z(}B`!{EzlLH)FbgJWx$5`c`Df z)W+iZ8<9Jz`>Kh zcfLthskn9tCdC%f31=CqxQtG=N?(c>V6SWzc|(fRR^n2ws1Cj{0FS#Ky5KBsy(c3( zlz#7y){;Kwm%~`@6SGN=7X1uxPrlsIt=;=bG2K=b%W!G%9m9)?_d{n-baU@jVfAV_L%p;}%?DT|zP9&GtO*_@~_%XG+xXa!-NAKUZ{#wJa2U+QuTYHxe?{i<7&1Vx3;bkEOp-Nt?>=Uaw0NB zaeRK{T#i-P^0QRzO`A~E#hpuUDkU&_E&yoGzrwzx9EQmn+@|yEmb+FzF`6D9Dh>nAI=4BWQ7ErBKv!b33p{1$_v9juJ^AeU5|rxD%K z=3+CkymzBJVszQyM&t&^3-=WHVIkrEB|$BPiSdJSn_fp19o7$w(Qnw==i9A{IJR4P zCb$jkB&{eDZotJ|XDE@b#@(Y&>Uerduv*c^_}UdmLD7%LO&+=2(c7X1tDCs1vo@pJ z?@7xZSykql$ffwbw|1DYm^RjEDC~)R+-WUWKk{MfbWzx&Ms8CJ~3W_SKlVi)tt-c zQ0Pp?<$@PHsA{X`ylp2ZEph2GjHcd!T}A##zVmn9&$E`;-c)&=`FiR+`cjr}`$j)W zvkL(T5h<>~r%N05jR%BOoX6=nb2Nz9xy#_T7YZLtHKb-JmyIx;#+!zMT+9qer?wec z21Q6$_(wHsHr?-Qa-$z~cbZF+Ov;k}ij7y=i^}nDd#a9=O^t3KD^-4x7-$_aT z{bVk;&Dg0lk))B-;USYy)mKI-ueNB?U0-Is^Vs_HK7Q8rz|2gFH?sE|y;Z@YYc$F>-q`B-hb8hwzpK_;GnY@srb<4J8DH-L zw#w_!YmXkYRyyNseTY0<5xc{|R#Z{f9Yg_icodmgndo5`YsGPWqZPY(=&8LW{2Om? zRoy}-MZdEr>P%2~z%y>2`__C}>2K5Tbyx167TzWMYH=xBYg|g!-Rzyz9A`_I)9wE0 zZVQcOg#Z=35WRP1u<$DjvO`aFo=Cho_yo7DRXRZdb@3gOG;?Hejn|$OV`ht<5+457 zHSNZHHdmRdS~p{P7P;K(FGx%A2(T+hJpOi1TkCeL^^ggDDsg<7xBZUHp~D{bLbslj zxV6qah_64kfp6UlZwqX!&Gm_P*f{@>ajwG8O|5gke%aL%&l=9ORujCw z&pfw*$c;_&>UsUv;$!l)!c6SDK)ijPOSf3q;*mk==SUxdQF!D|4*iseBD{o*8%6E! z4bu%@fc;-}ccSteB0~m>4eAsl53a|$94u44e7)T`t?jFzE>R`5Smv!lisjZ%;xbL_ zL&Yk$ZUseNmqp!o_67cW$_R_%vMYJinv-mo)u#~&L!7CMGc&jUsw&C_z$X^WER=^& zjrQyEjPrPfYPNbJbQz0lG|}7GBfNhy_W^x@TLXiZY+r4boxX~LXv;}erH#sG_Q)z5 z-4UaMd@6%tztn|V0l^b=!G|U1815K0_+Isw*&3r@7q7cN$y2QtgSyHk%*DOsrmyr| zf3|c!3HNI0i^P1y!1HR?gWq8m9v>0o+oN*FYMyd;_z5SE5}7y0MC+lRd*e^fi`Rd{ zh_~-P{6*~P+R#}W^gbhNeP>U;2HP?H=4Jg_n@cxse64U!wh8=f&*axRM>4+ig|k>L zG^a+yw>F}(dX)wmOC}CZbM0O7cE0X9GIWt!{YiseGpFu&ysE?Q;16%Mc$X=*;N@oN z20JzqMK2#u8BbgnF^jLf6!5iMd4|cGFV>>5HxdS;uYEp~aTeh|EPV?|uPuvwumaMdY9>Ern3 zqD`sKEDFwlv0{9vZlY;SC(rqyyytat)O~5g44oU#zlQDuu}nxo)wQfBGmDd3V%a7} za`PRI3^xZKiB?E3RDAqtAUgT;nhLzjz`cbLwSwBTOqG)6h_TY%7uMS@o~b#^^Njb~ z-b`5M?c;8cN64=qI5AmYnkM!|)=5^=lvmjLGAoiT$GP$V;s{A7zFtgtKZ0qP-40dn z=VTS5;4s~EE1mGxFWkl+opW7wq*6z(Zkuwi+Lz2mHIh7 z$3A>t?F3JS{Kjhy%%(8MB?n)V17LsRJ^h+a4*k-IcNgpq4tg7A-3g^%JI^yW)Uib@ zLg1$8s|u{Hfx`Z%gfjNtboP&YLjJFcNzO98J@t9vTwK1n?kSefgO3y^4C_3xQ?!2| zGdf%-k7Rux2azYKi&mGd(A_wW`Ra>B>tgXo&qQA0)VaNVv7CQ=A*o#&pJJLbNg9vB z@;)|fPCE0t#p7A(4!O-H8h5|S@AztUKQlKw9T2qweYglIJrjz@X0yvvNXaY-%1ZY% zdvw5c6Mp#y7PTXo7sa4xa!A}9Y=J>9T!uc zoz!E@i?++X)@f$q@U1)VMutI&G`^TwB&j3g++mAHt?zWp2hW?|K5pVAyYYPi>udC; z)+&ch-lVy)y=fPdu zaHPHU;LJU}t9rU(w+bdr!^0P<^iu$VY+L;0_*p>98`>TdI__%JqaDz6#cExiNv`6# zMDUsr%Yu(wUH=99V!hhgIJ#lE z9?rKP#@*{{bb=|C)X_cH(*DjZaN~m%n{DoTSMFJS)l_aw5|~@-_+s-!nZ99cGume& zBUksl;Ra1T_Ro6H7_ZY=_%N-v%av(3(PPM=f+=NLnmU+Os&`&S@$|N>)9fccG0zvJ*gg=y;pWsHW|rQVn#A^w z{7rnzk_J1!z;x%Oo;3PQyVqZY^D2(zVOY~&UjYF>aBTtiLfs#vrt-Ka8lhs3N2=_2 zdt{DxE`BZ861n?$l+R&ZW71os?zJ%e>?_Nh!|d@cC+VN9KP)dfjy|Hvml@Ges+vGN z^0Fwg<@iy9;@zb=axm19+e`u#MLpO|J8>LN`{?n;)-Tt_?}=MnIiQEU!0W_NliX}Y z_!z}y*Jz2WuizQ;+w|#$T5CAW<*QWuKHKhXL+LKJ4~Ug_vTS;z!U zUvmvnX4!8IFHqrqTRjMEk~^MV_H>@ z59|1gO)Y7bo14_|FX#^Ny7L^Mua?p1a^G~kE4590{EArr|^_5+? zX5kIls4zL>Cx;NbIWcFZb0TcV>pzWJIZ0-A^t-M(^%lL5HCvSrb7Q$hJc32s>&vfg za2m%-;gc7dNH49QdO5$jAv1|o&wOtwj*K6EqJ8vDZp+zf(LLpS>PHcR8IgPqCZT$! z^_gn}Z@Q-9)R~{|;0$o>39vdGsKVPD8T*aS(5JY3^iW#bHM4tla|Q{avd7Y_A5JC> z^tZm?X)AwUlq!eK$j`x#%PenvmJ(lNd~_$1IE%((d7cndoW+wuj(*>-AM33)S~-ip zDt&sk0{&T3&i@{nCB=kz`psM4mXigbmco~pX)?i`ka_e?*3rvcB1R?s@05>uoT-=W z$*eu}QaN_URJZ>s(|7LOJe z6BfKjyMs>S?w2MOG2_cmRY(b{UVY7|DbK0I*2iWdv|KLipU2@)M)yeBM1@haC+3pf z3BXQUUhAH~+6R{udknt117}OhK@`L&c871nA^R=#0%DdnNw&|NnDk!SKE5 F{{W$2Q?LL4 literal 0 HcmV?d00001 diff --git a/nginx-ingress-controller/nginx-ingress-controller.yml b/nginx-ingress-controller/nginx-ingress-controller.yml new file mode 100755 index 0000000..da66852 --- /dev/null +++ b/nginx-ingress-controller/nginx-ingress-controller.yml @@ -0,0 +1,817 @@ +apiVersion: influxdata.com/v2alpha1 +kind: Label +metadata: + name: dangerous-gates-877001 +spec: + color: '#009f5f' + name: ingress-nginx +--- +apiVersion: influxdata.com/v2alpha1 +kind: Variable +metadata: + name: beautiful-perlman-877003 +spec: + associations: + - kind: Label + name: dangerous-gates-877001 + language: flux + name: controller_class + query: "import \"influxdata/influxdb/schema\"\r\n\r\nschema.tagValues(\r\n bucket: + v.bucket,\r\n tag: \"controller_class\",\r\n predicate: (r) => true,\r\n + \ start: v.timeRangeStart\r\n)" + type: query +--- +apiVersion: influxdata.com/v2alpha1 +kind: Variable +metadata: + name: happy-hoover-077003 +spec: + associations: + - kind: Label + name: dangerous-gates-877001 + language: flux + name: controller_pod + query: "import \"influxdata/influxdb/schema\"\r\n\r\nschema.tagValues(\r\n bucket: + v.bucket,\r\n tag: \"controller_pod\",\r\n predicate: (r) => true,\r\n start: + v.timeRangeStart\r\n)" + type: query +--- +apiVersion: influxdata.com/v2alpha1 +kind: Variable +metadata: + name: quirky-banzai-477003 +spec: + associations: + - kind: Label + name: dangerous-gates-877001 + language: flux + name: bucket + query: |- + buckets() + |> filter(fn: (r) => r.name !~ /^_/) + |> rename(columns: {name: "_value"}) + |> keep(columns: ["_value"]) + type: query +--- +apiVersion: influxdata.com/v2alpha1 +kind: Variable +metadata: + name: wonderful-brahmagupta-477007 +spec: + associations: + - kind: Label + name: dangerous-gates-877001 + language: flux + name: controller_namespace + query: "import \"influxdata/influxdb/schema\"\r\n\r\nschema.tagValues(\r\n bucket: + v.bucket,\r\n tag: \"controller_namespace\",\r\n predicate: (r) => true,\r\n + \ start: v.timeRangeStart\r\n)" + type: query +--- +apiVersion: influxdata.com/v2alpha1 +kind: Dashboard +metadata: + name: modest-colden-c77001 +spec: + associations: + - kind: Label + name: dangerous-gates-877001 + charts: + - axes: + - base: "10" + name: x + scale: linear + - base: "10" + name: "y" + scale: linear + colorizeRows: true + colors: + - hex: '#7CE490' + id: base + name: honeydew + type: text + - hex: '#FD7A5D' + id: 20f72325-cbf8-4860-a208-7f5ac140a296 + name: Delorean + type: scale + - hex: '#5F1CF2' + id: 629f73cf-1c16-4fe5-ab2d-049bcbc4bc90 + name: Delorean + type: scale + - hex: '#4CE09A' + id: 809a8be2-e21b-44f2-85fb-dd8868ee877e + name: Delorean + type: scale + decimalPlaces: 0 + height: 2 + hoverDimension: auto + kind: Single_Stat_Plus_Line + legendColorizeRows: true + legendOpacity: 1 + legendOrientationThreshold: 1e+08 + name: Controller Connections + opacity: 1 + orientationThreshold: 1e+08 + position: overlaid + queries: + - query: "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, + stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] + == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"nginx_ingress_controller_nginx_process_connections\")\r\n + \ |> filter(fn: (r) => r[\"controller_namespace\"] == v.controller_namespace)\r\n + \ |> filter(fn: (r) => r[\"controller_class\"] == v.controller_class)\r\n + \ |> filter(fn: (r) => r[\"controller_pod\"] == v.controller_pod)\r\n + \ |> filter(fn: (r) => r[\"state\"] == \"active\")\r\n |> timedMovingAverage(every: + 1m, period: 1s)\r\n |> keep(columns: [\"_time\", \"_value\"])" + shade: true + staticLegend: + colorizeRows: true + opacity: 1 + orientationThreshold: 1e+08 + widthRatio: 1 + width: 4 + widthRatio: 1 + xCol: _time + yCol: _value + - axes: + - base: "10" + name: x + scale: linear + - base: "2" + name: "y" + scale: linear + colorizeRows: true + colors: + - hex: '#FD7A5D' + id: 785c1811-9854-49fc-8efb-1761df91440a + name: Delorean + type: scale + - hex: '#5F1CF2' + id: 930e4de3-cedc-439a-b558-d59622c75898 + name: Delorean + type: scale + - hex: '#4CE09A' + id: 145fb222-167a-4bba-bba3-cfe8a8c7d4c9 + name: Delorean + type: scale + geom: line + height: 2 + hoverDimension: auto + kind: Xy + legendColorizeRows: true + legendOpacity: 1 + legendOrientationThreshold: 1e+08 + name: Ingress Request Volume + opacity: 1 + orientationThreshold: 1e+08 + position: overlaid + queries: + - query: |- + import "experimental/aggregate" + from(bucket: v.bucket) + |> range(start: v.timeRangeStart, stop: v.timeRangeStop) + |> filter(fn: (r) => r["_measurement"] == "prometheus") + |> filter(fn: (r) => r["_field"] == "nginx_ingress_controller_requests") + |> filter(fn: (r) => r["controller_namespace"] == v.controller_namespace) + |> filter(fn: (r) => r["controller_class"] == v.controller_class) + |> filter(fn: (r) => r["controller_pod"] == v.controller_pod) + |> aggregateWindow(fn: last, every: v.windowPeriod) + |> filter(fn: (r) => exists r._value) + |> aggregate.rate(every: 1m, unit: 1s, groupColumns: ["ingress"]) + shade: true + staticLegend: + colorizeRows: true + opacity: 1 + orientationThreshold: 1e+08 + widthRatio: 1 + width: 4 + widthRatio: 1 + xCol: _time + yCol: _value + yPos: 2 + - axes: + - base: "10" + name: x + scale: linear + - base: "2" + name: "y" + scale: linear + colorizeRows: true + colors: + - hex: '#FD7A5D' + id: 34f269be-ea11-4503-b762-2c68145cedb7 + name: Delorean + type: scale + - hex: '#5F1CF2' + id: 5d65784e-70ee-422a-a808-671fde5028f6 + name: Delorean + type: scale + - hex: '#4CE09A' + id: f99b0db6-c7c4-4f47-8baf-4cca70273fcd + name: Delorean + type: scale + geom: line + height: 2 + hoverDimension: auto + kind: Xy + legendColorizeRows: true + legendOpacity: 1 + legendOrientationThreshold: 1e+08 + name: Network I/O pressure + opacity: 1 + orientationThreshold: 1e+08 + position: overlaid + queries: + - query: "import \"experimental/aggregate\"\r\nrequests = from(bucket: v.bucket)\r\n + \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> + filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: + (r) => r[\"_field\"] == \"nginx_ingress_controller_request_size_sum\")\r\n + \ |> filter(fn: (r) => r[\"controller_namespace\"] == v.controller_namespace)\r\n + \ |> filter(fn: (r) => r[\"controller_class\"] == v.controller_class)\r\n + \ |> filter(fn: (r) => r[\"controller_pod\"] == v.controller_pod)\r\n + \ |> aggregateWindow(fn: last, every: v.windowPeriod)\r\n |> filter(fn: + (r) => exists r._value)\r\n |> aggregate.rate(every: 1m, unit: 1s)\r\n + \ |> yield(name: \"requests\")\r\n\r\nresponses = from(bucket: v.bucket)\r\n + \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> + filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: + (r) => r[\"_field\"] == \"nginx_ingress_controller_response_size_sum\")\r\n + \ |> filter(fn: (r) => r[\"controller_namespace\"] == v.controller_namespace)\r\n + \ |> filter(fn: (r) => r[\"controller_class\"] == v.controller_class)\r\n + \ |> filter(fn: (r) => r[\"controller_pod\"] == v.controller_pod)\r\n + \ |> aggregateWindow(fn: last, every: v.windowPeriod)\r\n |> filter(fn: + (r) => exists r._value)\r\n |> aggregate.rate(every: 1m, unit: 1s)\r\n + \ |> yield(name: \"responses\")" + shade: true + staticLegend: + colorizeRows: true + opacity: 1 + orientationThreshold: 1e+08 + widthRatio: 1 + width: 4 + widthRatio: 1 + xCol: _time + yCol: _value + yPos: 4 + - colors: + - hex: '#ffffff' + id: base + name: white + type: text + fieldOptions: + - displayName: _time + fieldName: _time + visible: true + - displayName: _value + fieldName: _value + visible: true + - displayName: _start + fieldName: _start + visible: true + - displayName: _stop + fieldName: _stop + visible: true + - displayName: _field + fieldName: _field + visible: true + - displayName: _measurement + fieldName: _measurement + visible: true + - displayName: address + fieldName: address + visible: true + - displayName: class + fieldName: class + visible: true + - displayName: host + fieldName: host + visible: true + - displayName: namespace + fieldName: namespace + visible: true + - displayName: url + fieldName: url + visible: true + - displayName: duration + fieldName: duration + visible: true + - displayName: now + fieldName: now + visible: true + - displayName: value + fieldName: value + visible: true + - displayName: now2 + fieldName: now2 + visible: true + - displayName: TTL + fieldName: TTL + visible: true + height: 2 + kind: Table + name: Ingress Certificate Expiry + queries: + - query: "import \"strings\"\r\nimport \"regexp\"\r\nfrom(bucket: v.bucket)\r\n + \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> + filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: + (r) => r[\"_field\"] == \"nginx_ingress_controller_ssl_expire_time_seconds\")\r\n + \ |> group(columns: [\"host\"], mode:\"by\")\r\n |> last()\r\n |> + map(fn: (r) => ({\r\n host: r.host,\r\n class: r.class,\r\n + \ namespace: r.namespace,\r\n TTL: regexp.replaceAllString(r: + /m\\d+.*/, v: string(v: duration(v: uint(v: r._value) * uint(v: 1000000000) + - (uint(v: now())))), t: \"m\")\r\n }))" + staticLegend: {} + tableOptions: + verticalTimeAxis: true + timeFormat: YYYY-MM-DD HH:mm:ss + width: 12 + yPos: 6 + - axes: + - name: x + colors: + - hex: '#FD7A5D' + id: 992bf506-6034-4fc0-8789-36b9635f47d2 + name: Delorean + type: scale + - hex: '#5F1CF2' + id: 7e3a0bac-f188-4da5-8e26-9cca99d72ade + name: Delorean + type: scale + - hex: '#4CE09A' + id: 748483b5-1a14-4f5a-9729-1540205125dd + name: Delorean + type: scale + fillColumns: + - _field + - ingress + height: 2 + kind: Histogram + legendColorizeRows: true + legendOpacity: 1 + legendOrientationThreshold: 1e+08 + name: Ingress Percentile Response Times + position: stacked + queries: + - query: "doQuantile = (tables=<-, q, name) => tables\r\n |> histogramQuantile(quantile: + q)\r\n |> duplicate(as: \"_time\", column: \"_stop\")\r\n |> window(every: + inf)\r\n |> map(fn: (r) => ({r with _measurement: \"quantile\", _field: + name}))\r\n |> group(columns: [\"ingress\",\"_field\"], mode:\"by\")\r\n\r\nhistograms + =\r\n from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, + stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] + == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"nginx_ingress_controller_request_duration_seconds_bucket\")\r\n + \ |> filter(fn: (r) => r[\"controller_namespace\"] == v.controller_namespace)\r\n + \ |> filter(fn: (r) => r[\"controller_class\"] == v.controller_class)\r\n + \ |> aggregateWindow(fn: last, every: 1m)\r\n |> difference(nonNegative: + true)\r\n |> filter(fn: (r) => exists r._value)\r\n |> window(every: + v.windowPeriod)\r\n |> sum()\r\n |> map(fn: (r) => ({ r with \r\n + \ le: float(v: r.le) \r\n }))\r\n |> drop(columns: [\"_field\"])\r\n\r\nunion(tables: + [\r\n histograms |> doQuantile(q: 0.99, name: \"P99 Latency\"),\r\n + \ histograms |> doQuantile(q: 0.95, name: \"P95 Latency\"),\r\n histograms + |> doQuantile(q: 0.5, name: \"P50 Latency\")\r\n])" + staticLegend: {} + width: 12 + xCol: _value + yPos: 8 + - axes: + - base: "10" + name: x + scale: linear + - name: "y" + scale: linear + suffix: ' req/s' + colorizeRows: true + colors: + - hex: '#00C9FF' + id: base + name: laser + type: text + - hex: '#FD7A5D' + id: f9c52d75-b294-4ad3-9a30-095f16a13fc8 + name: Delorean + type: scale + - hex: '#5F1CF2' + id: c44865d0-1961-450b-80a6-56b60a84b55e + name: Delorean + type: scale + - hex: '#4CE09A' + id: 4e70b9d7-830f-498c-974f-0456b07478c6 + name: Delorean + type: scale + decimalPlaces: 1 + height: 2 + hoverDimension: auto + kind: Single_Stat_Plus_Line + legendColorizeRows: true + legendOpacity: 1 + legendOrientationThreshold: 1e+08 + name: Controller Request Volume + opacity: 1 + orientationThreshold: 1e+08 + position: overlaid + queries: + - query: |- + import "experimental/aggregate" + from(bucket: v.bucket) + |> range(start: v.timeRangeStart, stop: v.timeRangeStop) + |> filter(fn: (r) => r["_measurement"] == "prometheus") + |> filter(fn: (r) => r["_field"] == "nginx_ingress_controller_requests") + |> filter(fn: (r) => r["controller_namespace"] == v.controller_namespace) + |> filter(fn: (r) => r["controller_class"] == v.controller_class) + |> filter(fn: (r) => r["controller_pod"] == v.controller_pod) + |> aggregateWindow(fn: last, every: v.windowPeriod) + |> filter(fn: (r) => exists r._value) + |> aggregate.rate(every: 1m, unit: 1s) + staticLegend: + colorizeRows: true + opacity: 1 + orientationThreshold: 1e+08 + widthRatio: 1 + suffix: ' req/s' + width: 4 + widthRatio: 1 + xCol: _time + xPos: 4 + yCol: _value + - colors: + - hex: '#7CE490' + id: base + name: honeydew + type: text + decimalPlaces: 0 + height: 1 + kind: Single_Stat + name: Config Successfully Reloaded + queries: + - query: |- + from(bucket: v.bucket) + |> range(start: v.timeRangeStart, stop: v.timeRangeStop) + |> filter(fn: (r) => r["_measurement"] == "prometheus") + |> filter(fn: (r) => r["_field"] == "nginx_ingress_controller_config_last_reload_successful_timestamp_seconds") + |> filter(fn: (r) => r["controller_namespace"] == v.controller_namespace) + |> filter(fn: (r) => r["controller_class"] == v.controller_class) + |> filter(fn: (r) => r["controller_pod"] == v.controller_pod) + |> aggregateWindow(fn: last, every: v.windowPeriod) + |> filter(fn: (r) => exists r._value) + |> group(columns: ["_host"], mode:"by") + |> unique(column: "_value") + |> count(column: "_value") + staticLegend: {} + suffix: ' x' + width: 4 + xPos: 4 + yPos: 2 + - colors: + - hex: '#7CE490' + id: base + name: honeydew + type: text + decimalPlaces: 0 + height: 1 + kind: Single_Stat + name: Last Failed Config Time + queries: + - query: "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, + stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] + == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"nginx_ingress_controller_config_last_reload_successful\")\r\n + \ |> filter(fn: (r) => r[\"controller_namespace\"] == v.controller_namespace)\r\n + \ |> filter(fn: (r) => r[\"controller_class\"] == v.controller_class)\r\n + \ |> filter(fn: (r) => r[\"controller_pod\"] == v.controller_pod)\r\n + \ |> aggregateWindow(fn: last, every: v.windowPeriod)\r\n |> filter(fn: + (r) => exists r._value)\r\n |> group(columns: [\"host\"], mode:\"by\")\r\n + \ |> last()\r\n |> map(fn: (r) => ({ r with _value: \r\n if + r._value != 1\r\n then string(v: r._time)\r\n else\r\n + \ \"N/A\"\r\n }))" + staticLegend: {} + width: 4 + xPos: 4 + yPos: 3 + - axes: + - base: "10" + name: x + scale: linear + - base: "2" + name: "y" + scale: linear + suffix: B + colorizeRows: true + colors: + - hex: '#FD7A5D' + id: 34f269be-ea11-4503-b762-2c68145cedb7 + name: Delorean + type: scale + - hex: '#5F1CF2' + id: 5d65784e-70ee-422a-a808-671fde5028f6 + name: Delorean + type: scale + - hex: '#4CE09A' + id: f99b0db6-c7c4-4f47-8baf-4cca70273fcd + name: Delorean + type: scale + geom: line + height: 2 + hoverDimension: auto + kind: Xy + legendColorizeRows: true + legendOpacity: 1 + legendOrientationThreshold: 1e+08 + name: Average Memory Usage + opacity: 1 + orientationThreshold: 1e+08 + position: overlaid + queries: + - query: "import \"experimental/aggregate\"\r\nfrom(bucket: v.bucket)\r\n + \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> + filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: + (r) => r[\"_field\"] == \"nginx_ingress_controller_nginx_process_resident_memory_bytes\")\r\n + \ |> filter(fn: (r) => r[\"controller_namespace\"] == v.controller_namespace)\r\n + \ |> filter(fn: (r) => r[\"controller_class\"] == v.controller_class)\r\n + \ |> filter(fn: (r) => r[\"controller_pod\"] == v.controller_pod)\r\n + \ |> aggregateWindow(fn: last, every: v.windowPeriod)\r\n |> filter(fn: + (r) => exists r._value)" + shade: true + staticLegend: + colorizeRows: true + opacity: 1 + orientationThreshold: 1e+08 + widthRatio: 1 + width: 4 + widthRatio: 1 + xCol: _time + xPos: 4 + yCol: _value + yPos: 4 + - axes: + - base: "10" + name: x + scale: linear + - name: "y" + scale: linear + suffix: ' %' + colorizeRows: true + colors: + - hex: '#7CE490' + id: base + name: honeydew + type: text + - hex: '#FD7A5D' + id: 36c1564b-d329-443c-acbc-e0ccf228a2c9 + name: Delorean + type: scale + - hex: '#5F1CF2' + id: dc4b610d-45d6-4189-804b-eb147d9eb8ef + name: Delorean + type: scale + - hex: '#4CE09A' + id: 7e5182f6-ece0-4a34-b378-09ca4859a82c + name: Delorean + type: scale + decimalPlaces: 0 + height: 2 + hoverDimension: auto + kind: Single_Stat_Plus_Line + legendColorizeRows: true + legendOpacity: 1 + legendOrientationThreshold: 1e+08 + name: Controller Success Rate (non-4|5xx responses) + opacity: 1 + orientationThreshold: 1e+08 + position: overlaid + queries: + - query: "import \"experimental/aggregate\"\r\nnon45_requests = from(bucket: + v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n + \ |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n + \ |> filter(fn: (r) => r[\"_field\"] == \"nginx_ingress_controller_requests\")\r\n + \ |> filter(fn: (r) => r[\"controller_namespace\"] == v.controller_namespace)\r\n + \ |> filter(fn: (r) => r[\"controller_class\"] == v.controller_class)\r\n + \ |> filter(fn: (r) => r[\"controller_pod\"] == v.controller_pod)\r\n + \ |> filter(fn: (r) => r[\"status\"] !~ /[4-5].*/)\r\n |> aggregateWindow(fn: + last, every: v.windowPeriod)\r\n |> filter(fn: (r) => exists r._value)\r\n + \ |> aggregate.rate(every: 1m, unit: 1s)\r\n\r\nall_requests = from(bucket: + v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n + \ |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n + \ |> filter(fn: (r) => r[\"_field\"] == \"nginx_ingress_controller_requests\")\r\n + \ |> filter(fn: (r) => r[\"controller_namespace\"] == v.controller_namespace)\r\n + \ |> filter(fn: (r) => r[\"controller_class\"] == v.controller_class)\r\n + \ |> filter(fn: (r) => r[\"controller_pod\"] == v.controller_pod)\r\n + \ |> aggregateWindow(fn: last, every: v.windowPeriod)\r\n |> filter(fn: + (r) => exists r._value)\r\n |> aggregate.rate(every: 1m, unit: 1s)\r\n\r\n\r\n\r\njoin(tables: + {non45:non45_requests, all:all_requests}, on: [\"_stop\", \"_start\", + \"_time\"])\r\n |> map(fn: (r) => ({\r\n _start: r._start,\r\n + \ _stop: r._stop,\r\n _time: r._time,\r\n _value: (r._value_non45 + / r._value_all) * 100.0\r\n })\r\n )" + staticLegend: + colorizeRows: true + opacity: 1 + orientationThreshold: 1e+08 + widthRatio: 1 + suffix: ' %' + width: 4 + widthRatio: 1 + xCol: _time + xPos: 8 + yCol: _value + - axes: + - base: "10" + name: x + scale: linear + - base: "10" + name: "y" + scale: linear + suffix: ' %' + colorizeRows: true + colors: + - hex: '#FD7A5D' + id: 20f72325-cbf8-4860-a208-7f5ac140a296 + name: Delorean + type: scale + - hex: '#5F1CF2' + id: 629f73cf-1c16-4fe5-ab2d-049bcbc4bc90 + name: Delorean + type: scale + - hex: '#4CE09A' + id: 809a8be2-e21b-44f2-85fb-dd8868ee877e + name: Delorean + type: scale + geom: step + height: 2 + hoverDimension: auto + kind: Xy + legendColorizeRows: true + legendOpacity: 1 + legendOrientationThreshold: 1e+08 + name: Ingress Success Rate (non-4|5xx responses) + opacity: 1 + orientationThreshold: 1e+08 + position: overlaid + queries: + - query: "import \"experimental/aggregate\"\r\nnon45_requests = from(bucket: + v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n + \ |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n + \ |> filter(fn: (r) => r[\"_field\"] == \"nginx_ingress_controller_requests\")\r\n + \ |> filter(fn: (r) => r[\"controller_namespace\"] == v.controller_namespace)\r\n + \ |> filter(fn: (r) => r[\"controller_class\"] == v.controller_class)\r\n + \ |> filter(fn: (r) => r[\"controller_pod\"] == v.controller_pod)\r\n + \ |> filter(fn: (r) => r[\"status\"] !~ /[4-5].*/)\r\n |> aggregateWindow(fn: + last, every: v.windowPeriod)\r\n |> filter(fn: (r) => exists r._value)\r\n + \ |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"ingress\"])\r\n\r\nall_requests + = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: + v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == + \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"nginx_ingress_controller_requests\")\r\n + \ |> filter(fn: (r) => r[\"controller_namespace\"] == v.controller_namespace)\r\n + \ |> filter(fn: (r) => r[\"controller_class\"] == v.controller_class)\r\n + \ |> filter(fn: (r) => r[\"controller_pod\"] == v.controller_pod)\r\n + \ |> aggregateWindow(fn: last, every: v.windowPeriod)\r\n |> filter(fn: + (r) => exists r._value)\r\n |> aggregate.rate(every: 1m, unit: 1s, + groupColumns: [\"ingress\"])\r\n\r\njoin(tables: {non45:non45_requests, + all:all_requests}, on: [\"_stop\", \"_start\", \"_time\", \"ingress\"])\r\n + \ |> map(fn: (r) => ({\r\n _start: r._start,\r\n _stop: r._stop,\r\n + \ _time: r._time,\r\n _value: (r._value_non45 / r._value_all) + * 100.0,\r\n ingress: r.ingress\r\n })\r\n )\r\n\r\n |> + group(columns: [\"ingress\"], mode:\"by\")" + shade: true + staticLegend: + colorizeRows: true + opacity: 1 + orientationThreshold: 1e+08 + widthRatio: 1 + width: 4 + widthRatio: 1 + xCol: _time + xPos: 8 + yCol: _value + yPos: 2 + - axes: + - base: "10" + name: x + scale: linear + - base: "2" + label: Cores + name: "y" + scale: linear + colorizeRows: true + colors: + - hex: '#FD7A5D' + id: 34f269be-ea11-4503-b762-2c68145cedb7 + name: Delorean + type: scale + - hex: '#5F1CF2' + id: 5d65784e-70ee-422a-a808-671fde5028f6 + name: Delorean + type: scale + - hex: '#4CE09A' + id: f99b0db6-c7c4-4f47-8baf-4cca70273fcd + name: Delorean + type: scale + geom: line + height: 2 + hoverDimension: auto + kind: Xy + legendColorizeRows: true + legendOpacity: 1 + legendOrientationThreshold: 1e+08 + name: Average CPU Usage + opacity: 1 + orientationThreshold: 1e+08 + position: overlaid + queries: + - query: "import \"experimental/aggregate\"\r\nfrom(bucket: v.bucket)\r\n + \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> + filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: + (r) => r[\"_field\"] == \"nginx_ingress_controller_nginx_process_cpu_seconds_total\")\r\n + \ |> filter(fn: (r) => r[\"controller_namespace\"] == v.controller_namespace)\r\n + \ |> filter(fn: (r) => r[\"controller_class\"] == v.controller_class)\r\n + \ |> filter(fn: (r) => r[\"controller_pod\"] == v.controller_pod)\r\n + \ |> aggregateWindow(fn: last, every: v.windowPeriod)\r\n |> filter(fn: + (r) => exists r._value)\r\n |> aggregate.rate(every: 1m, unit: 1s)" + shade: true + staticLegend: + colorizeRows: true + opacity: 1 + orientationThreshold: 1e+08 + widthRatio: 1 + width: 4 + widthRatio: 1 + xCol: _time + xPos: 8 + yCol: _value + yPos: 4 + description: Monitoring of Ingress Nginx Controller in Kubernetes providing a + rich collection of prometheus metrics. + name: Nginx Ingress Controller +--- +apiVersion: influxdata.com/v2alpha1 +kind: Telegraf +metadata: + name: unbridled-bardeen-877001 +spec: + associations: + - kind: Label + name: dangerous-gates-877001 + config: "# Configuration for telegraf agent\n[agent]\n ## Default data collection + interval for all inputs\n interval = \"10s\"\n ## Rounds collection interval + to 'interval'\n ## ie, if interval=\"10s\" then always collect on :00, :10, + :20, etc.\n round_interval = true\n\n ## Telegraf will send metrics to outputs + in batches of at most\n ## metric_batch_size metrics.\n ## This controls + the size of writes that Telegraf sends to output plugins.\n metric_batch_size + = 1000\n\n ## For failed writes, telegraf will cache metric_buffer_limit + metrics for each\n ## output, and will flush this buffer on a successful + write. Oldest metrics\n ## are dropped first when this buffer fills.\n ## + This buffer only fills when writes fail to output plugin(s).\n metric_buffer_limit + = 10000\n\n ## Collection jitter is used to jitter the collection by a random + amount.\n ## Each plugin will sleep for a random time within jitter before + collecting.\n ## This can be used to avoid many plugins querying things like + sysfs at the\n ## same time, which can have a measurable effect on the system.\n + \ collection_jitter = \"0s\"\n\n ## Default flushing interval for all outputs. + Maximum flush_interval will be\n ## flush_interval + flush_jitter\n flush_interval + = \"10s\"\n ## Jitter the flush interval by a random amount. This is primarily + to avoid\n ## large write spikes for users running a large number of telegraf + instances.\n ## ie, a jitter of 5s and interval 10s means flushes will happen + every 10-15s\n flush_jitter = \"0s\"\n\n ## By default or when set to \"0s\", + precision will be set to the same\n ## timestamp order as the collection + interval, with the maximum being 1s.\n ## ie, when interval = \"10s\", + precision will be \"1s\"\n ## when interval = \"250ms\", precision + will be \"1ms\"\n ## Precision will NOT be used for service inputs. It is + up to each individual\n ## service input to set the timestamp at the appropriate + precision.\n ## Valid time units are \"ns\", \"us\" (or \"µs\"), \"ms\", + \"s\".\n precision = \"\"\n\n ## Logging configuration:\n ## Run telegraf + with debug log messages.\n debug = false\n ## Run telegraf in quiet mode + (error log messages only).\n quiet = false\n ## Specify the log file name. + The empty string means to log to stderr.\n logfile = \"\"\n\n ## Override + default hostname, if empty use os.Hostname()\n hostname = \"\"\n ## If set + to true, do no set the \"host\" tag in the telegraf agent.\n omit_hostname + = false\n[[outputs.influxdb_v2]]\n ## The URLs of the InfluxDB cluster nodes.\n + \ ##\n ## Multiple URLs can be specified for a single cluster, only ONE of + the\n ## urls will be written to each interval.\n ## urls exp: http://127.0.0.1:9999\n + \ urls = [\"$INFLUX_HOST\"]\n\n ## Token for authentication.\n token = \"$INFLUX_TOKEN\"\n\n + \ ## Organization is the name of the organization you wish to write to; must + exist.\n organization = \"$INFLUX_ORG\"\n\n ## Destination bucket to write + into.\n bucket = \"$INFLUX_BUCKET\"\n\n# Read metrics from one or many prometheus + clients\n[[inputs.prometheus]]\n ## An array of urls to scrape metrics from.\n + \ # urls = [\"http://localhost:9100/metrics\"]\n\n ## Metric version controls + the mapping from Prometheus metrics into\n ## Telegraf metrics. When using + the prometheus_client output, use the same\n ## value in both plugins to + ensure metrics are round-tripped without\n ## modification.\n ##\n ## example: + metric_version = 1; deprecated in 1.13\n ## metric_version = 2; + recommended version\n metric_version = 2\n\n ## An array of Kubernetes services + to scrape metrics from.\n ## \n kubernetes_services = [\"$CONTROLLER_SVC_URLS\"]\n\n + \ ## Kubernetes config file to create client from.\n # kube_config = \"/path/to/kubernetes.config\"\n\n + \ ## Scrape Kubernetes pods for the following prometheus annotations:\n ## + - prometheus.io/scrape: Enable scraping for this pod\n ## - prometheus.io/scheme: + If the metrics endpoint is secured then you will need to\n ## set this + to `https` & most likely set the tls config.\n ## - prometheus.io/path: If + the metrics path is not /metrics, define it with this annotation.\n ## - + prometheus.io/port: If port is not 9102 use this annotation\n monitor_kubernetes_pods + = false\n ## Restricts Kubernetes monitoring to a single namespace\n ## + \ ex: monitor_kubernetes_pods_namespace = \"default\"\n # monitor_kubernetes_pods_namespace + = \"\"\n # label selector to target pods which have the label\n # kubernetes_label_selector + = \"env=dev,app=nginx\"\n # field selector to target pods\n # eg. To scrape + pods on a specific node\n # kubernetes_field_selector = \"spec.nodeName=$HOSTNAME\"\n\n + \ ## Use bearer token for authorization. ('bearer_token' takes priority)\n + \ bearer_token = \"/run/secrets/kubernetes.io/serviceaccount/token\"\n ## + OR\n # bearer_token_string = \"abc_123\"\n\n ## HTTP Basic Authentication + username and password. ('bearer_token' and\n ## 'bearer_token_string' take + priority)\n # username = \"\"\n # password = \"\"\n\n ## Specify timeout + duration for slower prometheus clients (default is 3s)\n # response_timeout + = \"3s\"\n\n ## Optional TLS Config\n # tls_ca = /path/to/cafile\n # tls_cert + = /path/to/certfile\n # tls_key = /path/to/keyfile\n ## Use TLS but skip + chain & host verification\n # insecure_skip_verify = false\n" + description: Telegraf config for collecting prometheus metrics from ingress controller + name: nginx-ingress-controller diff --git a/nginx-ingress-controller/readme.md b/nginx-ingress-controller/readme.md new file mode 100644 index 0000000..7cef5eb --- /dev/null +++ b/nginx-ingress-controller/readme.md @@ -0,0 +1,66 @@ +# Nginx Ingress Controller + +Provided by: @bonitoo.io + +Ingress-nginx is an Ingress controller for Kubernetes using NGINX as a reverse proxy and load balancer. +This InfluxDB template can be used to monitor your Nginx Controller setup inside your Kubernetes cluster. + +![Example Dashboard Screenshot](img/nginx_ingress_controller.jpg) + +### Quick Install + +#### InfluxDB UI + +In the InfluxDB UI, go to Settings->Templates and enter this URL: https://raw.githubusercontent.com/influxdata/community-templates/master/nginx-ingress-controller/nginx-ingress-controller.yml + +#### Influx CLI +If you have your InfluxDB credentials [configured in the CLI](https://v2.docs.influxdata.com/v2.0/reference/cli/influx/config/), you can install this template with: + +``` +influx apply -u https://raw.githubusercontent.com/influxdata/community-templates/master/nginx-ingress-controller/nginx-ingress-controller.yml +``` + +## Included Resources + + - 2 Labels: `nginx-ingress` + - 1 Telegraf Configuration: `nginx-ingress-controller` + - 1 Dashboard: `Nginx Ingress Controller` + - 4 Variables: `bucket`,`controller_namespace`,`controller_pod`,`controller_class` + +## Setup Instructions + +General instructions on using InfluxDB Templates can be found in the [use a template](../docs/use_a_template.md) document. + +### Requirements: + +#### Nginx Ingress Controller: + +> Github: https://github.com/kubernetes/ingress-nginx +> +> Helm chart sources: https://github.com/kubernetes/ingress-nginx/tree/main/charts/ingress-nginx + +Flux queries rely on prometheus input plugin v2 metric version format. It is not compatible with v1 or with UI Scraper metric format. + +#### Telegraf: + +If possible, use Telegraf Prometheus input plugin to scrape Prometheus metrics from Controller service endpoint. +The Prometheus input plugin can be also configured to scrape Controller pod(s) directly via annotations. + +Telegraf configuration requires the following environment variables + - `INFLUX_HOST` + - `INFLUX_BUCKET` + - `INFLUX_TOKEN` - The token with the permissions to read Telegraf configs and write data to the `telegraf` bucket. You can just use your operator token to get started. + - `INFLUX_ORG` - The name of your Organization + - `CONTROLLER_SVC_URLS` - URLs to Ingress Controller metrics endpoint service(s) e.g. `http://ingress-nginx-controller-metrics.default.svc.cluster.local:10254/metrics`. + +To reflect specific Kubernetes or Ingress Controller setup it may require additional Telegraf plugin configuration. + +You **MUST** set these environment variables before running Telegraf using something similar to the following commands + - This can be found on the `Load Data` > `Tokens` page in your browser: `export INFLUX_TOKEN=TOKEN` + - Your Organization name can be found on the Settings page in your browser: `export INFLUX_ORG=my_org` + +## Contact + +Author: Tomas Klapka, Bonitoo s.r.o. + +Github: Bonitoo.io \ No newline at end of file From 32ba0d2418f2bd6679dab9e82ced3bce2258843c Mon Sep 17 00:00:00 2001 From: Tomas Klapka Date: Wed, 18 Aug 2021 15:28:59 +0200 Subject: [PATCH 2/2] fix(ingress-nginx): fix readme.md Signed-off-by: Tomas Klapka --- nginx-ingress-controller/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nginx-ingress-controller/readme.md b/nginx-ingress-controller/readme.md index 7cef5eb..65860b8 100644 --- a/nginx-ingress-controller/readme.md +++ b/nginx-ingress-controller/readme.md @@ -5,7 +5,7 @@ Provided by: @bonitoo.io Ingress-nginx is an Ingress controller for Kubernetes using NGINX as a reverse proxy and load balancer. This InfluxDB template can be used to monitor your Nginx Controller setup inside your Kubernetes cluster. -![Example Dashboard Screenshot](img/nginx_ingress_controller.jpg) +![Example Dashboard Screenshot](img/nginx-ingress-controller.jpg) ### Quick Install