From 5de95e15ed73e239034ba899516c14d06ec2ca8e Mon Sep 17 00:00:00 2001 From: Julie Lycklama <8868475+jnlycklama@users.noreply.github.com> Date: Tue, 29 Jun 2021 15:41:35 -0700 Subject: [PATCH] Create developer documentation for api versions (#845) * create developer documentation for api versions * rename img file * update documentation to create specific guidance for developers and customers * move dev doc; add reference to api docs to readme * respond to PR comments; fix links --- README.md | 2 + docs/api-versioning.md | 47 ++++++++++++ docs/development/api-versioning-developers.md | 67 ++++++++++++++++++ docs/images/api-headers-example.PNG | Bin 0 -> 44141 bytes 4 files changed, 116 insertions(+) create mode 100644 docs/api-versioning.md create mode 100644 docs/development/api-versioning-developers.md create mode 100644 docs/images/api-headers-example.PNG diff --git a/README.md b/README.md index 16fc26de6b..71922f390a 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,7 @@ Note that the webapp library, ARM templates and Web.Zip package are for testing - [Conformance Statement](docs/resources/conformance-statement.md) - [Health Check API](docs/resources/health-check-api.md) - [Performance Guidance](docs/resources/performance-guidance.md) +- [Api Versions](docs/api-versioning.md) ## Development @@ -73,6 +74,7 @@ Note that the webapp library, ARM templates and Web.Zip package are for testing - [Tests](docs/development/tests.md) - [Identity Server Authentication](docs/development/identity-server-authentication.md) - [Roles](docs/development/roles.md) +- [API Versioning (developer)](docs/development/api-versioning-developers.md) ## Contributing diff --git a/docs/api-versioning.md b/docs/api-versioning.md new file mode 100644 index 0000000000..ed185c15d6 --- /dev/null +++ b/docs/api-versioning.md @@ -0,0 +1,47 @@ +# API Versioning for DICOM Server + +This guide gives an overview of the API version policies for DICOM Server. + +All versions of the DICOM APIs will always conform to the DICOMwebâ„¢ Standard specifications, but versions may expose different APIs based on our [conformance statment](https://github.com/microsoft/dicom-server/blob/main/docs/resources/conformance-statement.md). + +## Supported Versions + +A list of supported versions and details of what is supported can be found in the swagger documentation at swagger/v{version}/swagger.json. + +### Prerelease versions + +An API version with the label "prerelease" indicates that the version is not ready for production, and should only be used in testing environments. These endpoints may experience breaking changes without notice. + +### Breaking changes + +We will increment the API version number for any breaking changes to the API. + +Breaking changes: +1. Renaming or removing endpoints +2. Removing parameters or adding mandatory parameters +3. Changing status code +4. Deleting property in response or altering response type at all (but okay to add properties to the response) +5. Changing the type of a property +6. Behavior of an API changes (changes in buisness logic, used to do foo, now does bar) + +Non-breaking changes (API is not incremented): +1. Addition of properties that are nullable or have a default value +2. Addition of properties to a response model +3. Changing the order of properties + +## Headers + +`ReportApiVersions` is turned on, which means we will return the headers `api-supported-versions` and `api-deprecated-versions` when appropriate. + +- `api-supported-versions` will list which versions are supported for the requested API. It is only returned when calling an endpoint annotated with `[ApiVersion("")]`. + +- `api-deprecated-versions` will list which versions have been deprecated for the requested API. It is only returned when calling an endpoint annotated with `[ApiVersion("", Deprecated = true)]`. + +Example: + +``` +[ApiVersion("1.0")] +[ApiVersion("1.0-prerelease", Deprecated = true)] +``` + +![Response headers](images/api-headers-example.PNG) \ No newline at end of file diff --git a/docs/development/api-versioning-developers.md b/docs/development/api-versioning-developers.md new file mode 100644 index 0000000000..c5eec860c7 --- /dev/null +++ b/docs/development/api-versioning-developers.md @@ -0,0 +1,67 @@ +# API Versioning for DICOM Server - Developer Guide + +This guide gives an overview of the API versioning of the REST endpoints for DICOM Server. + +## Routes + +API Version number are set within the route. Example: +`/v1.0-prerelease/studies` + +To add a route, use the `[VersionedRoute]` attribute to automatically add the version number to the route. Example: +```C# +[HttpPost] +[VersionedRoute("studies")] +public async Task PostAsync(string studyInstanceUid = null) +``` + +## Incrementing the version + +We will only increment the major version of the API, and leave the minor version at 0. Ex: 1.0, 2.0, 3.0, etc. + +### Breaking change +The major version must be incremented if a breaking change is introduced. + +List of things we will consider to be a breaking change +1. Renaming or removing endpoints +1. Removing parameters or adding mandatory parameters +1. Changing status code +1. Deleting property in response or altering response type at all (but okay to add properties to the response) +1. Changing the type of a property +1. Behavior of an API changes (changes in buisness logic, used to do foo, now does bar) + +More info on breaking changes from the [REST guidelines](https://github.com/Microsoft/api-guidelines/blob/master/Guidelines.md#123-definition-of-a-breaking-change) + +Additive changes are not considered breaking changes. For example, adding a response field or adding a new route. + +Bug fixes are not considered breaking changes. + +### Prerelease versions + +Adding a version with the status "prerelease" is a good idea if you have breaking changes to add that are still prone to change, or are not production ready. +Prerelease versions may experience breaking changes and are not recommended for customers to use in production environments. + +`[ApiVersion("x.0-prerelease")]` + +or + +`ApiVersion prereleaseVersion = new ApiVersion(x, 0, "prerelease");` + +### How to increment the version + +1. Add a new controller to hold the endpoints for the new version, and annotate with `[ApiVersion("")]`. All existing endpoints must get the new version. +2. Add the new version number to `test/Microsoft.Health.Dicom.Web.Tests.E2E/Rest/VersionAPIData.cs` to test the new endpoints. +3. Test to verify the breaking changes were not added to the previous version(s). + +## Deprecation + +We can deprecate old versions by marking the version as deprecated as follows: +```c# +[ApiVersion("2.0")] +[ApiVersion("1.0", Deprecated = true)] +``` + +TBD: When to deprecate and when to retire old versions + +## Communicating changes to customers + +TBD: if process is needed for developers to document their changes to communicate to customers \ No newline at end of file diff --git a/docs/images/api-headers-example.PNG b/docs/images/api-headers-example.PNG new file mode 100644 index 0000000000000000000000000000000000000000..63a30ecf3f474725ed07f81917866f93720e3289 GIT binary patch literal 44141 zcmc$`bySq^yZpOSu zg6`bGD96JA-ic^XCjkD!aDJ^Qd#7}Wb_@9Bu7!-M%$++GvG_=1Y~c5M4odHx@7y8k zK>xw$0T+I_bEgMg`!HxJCu=Dy zdmNnaan;q}_-J-^bKZGRqOox^6RwWX74?p!BNaP~0o`6he8r%b8)*T)H>Xp+Ca)Rv z99Vs*$Pl$un0xiFFO0{)4?3%CcN5cj zz};6X(2tW7F#6e%_jF_^M}D*rvRF&_&v%tqJ9h$a;j_<8aoqI+ht=xOG`iYo*I2(rwk}LJdmc;P1Vp2Un!u+I zXKI4LIA_P*@iGvX-ts+0?x^Ti1R?)bh)1ANyc`7SF0=-d;d~Lru4~xu<)i|h{;|>p z3&HO=9+qP8LtVoaz1P2J!Fm|{X$5VkM;a9IR(oQJ)g?~fBn#NQ+f0Rqv>!)N@xl5* zt+dCzs49!$MY~rm=7XsRdrkYH7FoW6v)=nHb-GlIa|Vzi&4O;z#vk5C$1@gLA$&u^ zEVPcDq=%@dn)xp4&MTb}j=rPXQr5o;$LuKQw$1tzIgNn{c8JQ9Hi(hBz2Nr0MRI!{ ztsOAjcKG9!wcdJdzC%yf_zg|L`cm`LND6HU%x>WEVZP@J6gb56w59bck-xoH&y#lN zv?eVxPC9X@fgWRj_&mI=Fi20h(98~Gz^&wawN=o84{9b^^t;|=HxR#E`>Zi?afK*b zl_UtIN&o}Pfa{!<04a6#J6C&aEkgWAs=wGm?2;KiEPkv)#>(Ayvi+m1yEkyJ*1hNV zXznWXm%l)7Pj5U+M;7vDR`6W2Rox|N>>YsY1vjfNMS>bB%LANZ>;)id1uR@9(np53UKGJs4Oq8IH4um<{Z8>BVT zWnoTG(7Tsy7f1b|TqDPytVx|oc`OQ1corG1?>yGx6<7L)D^0Ip)Fq!Yr=?A^A}PYj zJJbk`d*NZ_6;<}Fj4~%i3k&XWI_wA9t$w~f z0c(FSU13rG-7;>4IYY z&t@!o95MT&6vIWIY^NXM_h0n2UN7wD9HzNu`QLhy$>pnOLFXLt7^6T3H;2)OO`Z{d z>0Ej?Re5a(A1cmx6;IZFz>4;LVz9>CRj>67QvnNxo#*3XAwkNF)9le6K<*fThil&n z#IG*jY4@(kN6QVHnUIf|LhLB#7rg9hb0m)zeU1m~qh+|@5T#A!amg|8P<)O=A2U<< zg^}UiFSK$b^v}dC3yp?;Hq>iC;Q7Dpy*Yb@dYqs-apw%T2VnvQll(86vkBzPNoE|6 z2Zh335Q#kgK9EqwZonwZsF3H({EXIfE&gz}EsVjB((fRMp|cwAi`Yi8X=5h@seL4y z>VGWc|Iohqu)7{r(L+yDCbIjWM$}Ghw|X459L7N3Mf_)V?XlD7X;qm=QmDlC>_c~J z=W<$Gy-v3mYL6d0bX*-0+b00V+XgvUA5n1+%4bS>wi@#MmKzgyrHiv}{(1;;AM+)VZ_ zT#R%dU;}+4<&psk^I>%2RvLP`k>>0uP7xM{=R9!~xo__+&};F)(ORZ~s=UDGHG>?J zksOFSPJKn*UYT9#7mESoUyQ;eGng+EIU-^YhJmXvxLmjQWuy-#fDd-`_1)^aq5(ySfaO%zU|!fBkc|3S}v!F6=F2h>w$ zz7tU9x9GVkk4kZVY#c<<+I6f2Ou@$yWDNltwWX;7LH%4!9ErrM?ktE@)hq~w8BBhr zQB>*j_mC6QN4Qzye%9IZQpAu~ha@Q|nfEm?UrDLtBj_|;>MR}2XcO_#Fr zQ=}z;Zs`c2FrXZt^+(<0ZbK^XZ_z3j7qS}U!R1~)o-R{qHbP0=j7t%Q(R*1U!`WpC zG5hr07ak!(ZF<}$58Kr{*@FrG>oofrUcc0laZw#kBByrX6h~3g9NrAXq>dDeOe(2f zb$;v~Ms3E|2l3v_T%iP14+_G#=}n|!+SPjwc4rDa7OmfbGuBMxSzy?c1nmAA35D+Z zRa=^eIT0{y^iGF}AmLf+!pHeF?*eWvfPnRcY((6_;b^Nna;EGY32F zx(W=x+vV%sOL=4S`~B`f5K3JqL-&aCpDDv7MpY?@`pdWIt1BrjMZf z%qYHeesm*hpu{^7$WCBz#d`SBjG2et_hi%o*s>K+si$(z&a%%fVrC?sGo^$NtJ>*LBZ}b$;O47Uo&_QgWpV?swfK;$o`~!<@U6wyH#?P68{h z6N%iE0+MJ=K97KWunHr+&%QSt0w-Pe=!*pQinQ2-ql0x&wu3JzM{;XVm_oyz9^|3A zc*UD$CHM^EzMP+fJ=9aiz;cPUM}SFcfKIM=S$#Ybod~%o0;yfGVMrkuA4t&HR=NyGxER-S#Wb6LlRaW5>sIZ?70|$a*f7!-kmRWsjkLn(O98jC)c)0tLtj3yFEY^!y+~xTowtmZ$6}o!J+d{ZU6}_{=(vO>(S5h;}{`EB>PunaU3%iN}XImY%_~z;au`7=4g8eCWgexxp)eFYEQ|^s&JBRx(eF za24@^83sqp_HQc9cS>0|O$^7F(_<!hYNyt&ual!ERgpZpBLp;?89%1SUL7;3 zowbutUp!})d&);Hoo*!Y5r+Xj(1p)jEpnEhW*<4OGUkQcJfS0u*%YI?JliY&SN3?; z=)rUKlVne<)%ok^CwLTb__#Guj{`BNx{y+T zC%pRFw0mzmwdjFLu4O{Y+goNi=U4QdL5r{+F~m>M=1TgdyXb?O+6eT3y~(w8&>sY1 z4obh;>%8M&A!5Y5`0adXo6KE#M_+e^R5=A_pP4hAzq2}T{buR<Bn}m}Ol5>^+cY?$eXzd-ZC;XdulICw&_Mz>yV7O`+C^S!3TWJFMdzkYkOveAe zy)m>>Vttv|*?x7j-hZxqg1xymFMnucNbNfIA2(X*xY|92;U-4yieWaFY6d98*iA~M zlMm_5PV0T8GGfe_8YI30h6Oyo+f3ZTBB)k}&AZEv7Ad2N++p5|z^?BW3>UPtAPoW}>Yydf z|5xElO1d@mpER{O@uBR$75F%RN$ZULzcsXyzwG~_;zob*iBdB8EoJ8w=Ds&%Yj!?2@2`dX3LOqEXP{Hl*JLkRo>7j!1x6>F2q6ZpB~!sMGE zx>od`)p)d%ebNCQlHG<<2az)M`tP2t4z!MP zZ_KqNStzY7>%uQ4kEF1(HF){Y-Qj$HYQPUGA?pT40f1op&a;E`@7n-l+Tm{0gdv)OWh3{>rB^WWWO%{yq~k9Q^a0dYiVGg%zb zk8J($^HZr=$-W)1bE6gQx4G&KogcO5>-|ZJ&*%R2Op~?A9quv zeyuv+E_|W>8SVK=6Rk#!e-&zs_MIV$T-ok8#7Y8^ zcll&oojA$B%j#m40X1C{-FVT#a7!{Ig+kWf#4FNAT&m0gi3{QY&}_luYGNftJtk|O z)8)p-+rNsMN zEU=xKDtEDW=qXbTt%E)Q-MV$EF}QElmYXVC?7cX>ai=yu2+tLIwfkzY_vW9~dF^ z2h*mp@=PYki^Jues$n8Ni=my<3N*lh5em(d#Hu196-3dh6vmpQ_n-?>>Es7wq&&M@ z;{`qZ4Z~@iBm(_s=3SB zVQ`Knm(!q0;y$Ii`c>^ovU&1~yb!El;HwGfG77bBXQ_C@8d*MME zIMM`-^&1^w#KdS8LrYL_(vWG(R=NBw$za>-c-WElGp#=kX5P=aO&1QV-4g|V2BS4A zC?F@AGGb4jsAtml!?H#FHUCn&MFX$c)r((~kt^65BxTSm>-pHgza)j1_0p@7ak?9X z**2f3PCi1!Ic=C(j0k<`jZ3aeAiCU?To&3|bA|CWt8H=tUF>^_cvUmYX1CTGU!kv>%>5N1`pO^N zdgDfB5&mSk#J5JUU9eQ<8Gg^CHOpyjm9^cy=Qg<7B`4+0Et}W**P+c6`%-<1O)LH} z&$&Jm*``@r{IJ#U>4ICt_yn7AMGM@rdt2cFAicf^B6`K`w2U9~yHf)x9@+defK z-_hOmat3LJ(GK%kITBzA_XRF#kUjQt=D21d$@BF*9`HJA1;R^H;^%KR31zuacuy`F zGj0CLa8Nz+b!Pc1xOP}zO^4U$!<|9FG3JD<#)4a6#R}EO@uAK)XmtY~v7)K|(Hwn{ zW|PjWZ(UQBU|v%DriAX-U$MsFQTt_IU7;JKvXlYfId=deAVont9{LvUxDck7dyS8m!- zyHS`>wQ_OqaF1whh5BD%bdP5nk{xEUcqEa551cJO7w_h5HT|!q~?V9Q_ z-?%6b3L5)y0|_QcL@%Vig?#x^C0yUFl-B%e|JTF0Pv6|+b$-c5>1sRh^Qa)rHk>;7=@YOHN0yWEWO z4EUDUxZqCm8iBO=fkv{3;p5ShHuyR;=kAb$>ypz-WvkZL9$MgL%*(tuZyG$ zmzg7Zvi*!Kqr!YV#$f~U#T9jMeQG?>P3I^vH~#B0k8@pTESUMDPm7;78T*i@=ZmOb zX{3>8pZ~4Ce4)otEIf2q>@340kTsr}g1c{W!ltH8D7b~$fF$R7%Kv6+l*e2o3+Lk@ zIcEd~{Bp?MjW1?!{B`rRS%Y>wifgVe@l>w47gy@C?bCWrt^uuh#enV+e|Gy=b~v0s zTTOH;@8T@22=~(HN!^Mf3eQ#D%IGPBwxe|XkQT>FdxB5l_C|Mpwrv9^G6Y%%o@N}1 z2KnOq+J4X#L5_6@1|x%{#O=lEs))yPJv*aB8brji-rQv1Tm*U%+ENd49q8d2m!@LE zBn@YSo@h)?Nll2?CgI24|7U}&wvPqbAc6WWv36j$q%^YiJD3xPy(3|mH?3H+J zCjv5@O-%ZHQtuy*C(|Zf%w%YrTWr-j4~(yvepuy=GK0+HVVaMGFb2D2fEkxwMg7U@ zOGGBMRhoLd#AwE>zC!>n)G(M{bpCy?#33RAB^Xw?G^nyV+RUCXH=JtM) z9;%mZl;U|Z#0q(LH%;SUjJz#o!_f{deagvFJsX!p{skENqA|zcFbELGg#=?vSp<7y zqKi-X*u~E0otqXf$PwH^IQ!{ot7D?Tp`=n4h6yySKTVg1a~7w^AsS*=TCDo`c`f*sEu&KK zvW@P6|&@9jJPUC^C43K&5Uh%-pMXwH^V5; zMoP^_k{gn9cA*?>O;Zw1>l%wcYc$ou_o=~}!dmBkH#kO9bfb8h9H$k^6iE>NNV#4q zblP!^#ij{3KWL&dTfx5mwtKS`l%ZVxJK7;|!lVqqrjO8|*X6>g;1TW-=ynB^6O_`4 zUl7f2Pq5?lOwVW#P>bJ<+EULfmin`WM7DQ&(sY>Zwapu`;_n9kJjVHi0e-+b=KhE> zpps!KBk-;jccBuN-I45dA1;>F0c`G#Y*m3uN@dTbWo+JyY0<69fwaYyB~q4O&7-~e zz+j9e5FJSy^o~zgnC1q28nd|dd*Bf1nw*r;n5{M@(IyDRj)R>PNx}AKlFZItj=NAw zAEtSk(VUAq?`z(AdvRP-6kr)8WYz8Kp~#+o(rr{gnm4Lly<#~X<{|KCc#@X^ZP6H1 zf*{MKE|*iCZnU|GmWurQKIPXt(Dw~VH%>z}X_md>xVjbT$ItnX+}?2x>evjt+`#aJl`n7J^Teg}bScP0vIn*)%U*^-7rpL%Hh!^uH%}IFwIk1#btxMdJDtC{K9!;!7UJtQy&59e%DWCj9lI2% z_a#8VvYptN5ji1fVR>3|8sgyy<3p^t#H}OTgIm2#rp~#>_=)pF^v=4wFXD&vK1eSa zp{nOIJlgAcl9_p(FKaJu@M{6$eIwJ{_Igczrq-*3-1}{Fn-xpW$KUv{0Y{~KtddIs zSUINQRS@TJ_P`ghFH$*(>42Ry6$}h;y{({4U2{C^g5k}!*7DkC^%zgH zxOSuXvp%m|9V}x60VNG7=;+A7{wQv7dSlZpptoVHhJDi5z^(RJiwv)BQ&@KU_{isU zLTfqIrZfVfoEB)+D7e$H1gREDw1Kt7RGw{U4r}l|i+=zfTzt@lo5RWF>HEUN>Z(q|Ly2K+N3D5Di~{*3-fr#%Wu1`?rO4&n zg(|_&s9`6>T$}UkyGP)1GkOm@oTKpR$7BjB>n*^L22NPv&Fl&$0GWgXO1Y)Rhw-QM z*MSNPIxyS#5{J+vk3&B^j@MEtsK&b6G4H({qm02(yPZ3Nrb1_ZOZ6(8%FN1y;CCce z#RuA;rB@|f)Dnp{eQnh`UJ?RF8sLRBS*4n0ijpQTc52TpE~%QaV%L%%cF$jy>3CaY zS??B;vd|5^R~Mbw&P%4~B)!Wu#<@3_G4Z|5t7Ou(odom=PlG?^8^>ww^FIOYDhXHt zfj7J1H5zTw+DeR~jM@jAsxx6IQo1q8a3UX{&#}IhEnL#E z#h>7-+W+sA z>;FBBvz3md0JzvwJ6atZfY$v7(o5vjofL^I8Io#sGTUNoq_b;_pfL2mah)$KcC;)p zi=_BBfRod$Fp;Nia_jN;wAKI9)DS{(y-?A3{5@g3+@r$p=1TatnIQ|e&Kw!&AACw< z*{%Jh5WoA!0*~?NyIhc{9q^%!9=pBfXY2eN26r%Vo{H%QB z#!v>0eZzWUIbiY{5?FZQTVmJ>MMR69dcl3qyHMW!xC}ldrA>Q{<@O7WLjutWyhuwAxE;zJmSIBzEf(Os_uW$ntc-?a|S-)TVmmCi02+G^4T?cfQl zVLo}h`kw1w(5?-9fSK>kiu#cFFT|R*4qBu3L;F1gw_nMQHH(qBn>O5+2^Wh~aK>66LxK4jaNp zU7PW(qD(jK!x7#cq2Ri(&kP2XT)uu*o2mN6^W~gKhu-u9$aO10THT(nfBw`;*Y~$S zU;0v?q;Gv&g5LaYT62~ zYs4KGss+0s0Wmg?0Q!{1^DgZys1?a;3x`T@ooms1ECn6_W+peTx9o}EsCJ_H`#tQ= z!i+}>ne?X)8@6&g)EUGiIJ8?H0}76r_N?>$^4ADZx1GaWJzLH$e&lcna9|V+I6n3r zCALFsL>yN-hrapZUM|fjq`WKDqf&^beuP^s@d!uv-geeeQac}$#5vX4cv2K44>Q_# zMJVM??Fl_GYhsj2h_+F0LfcJX=mqG+sZl`QwRsE85t=I7xlA&oh$%pQWq1HAyB4g4 zQ@Z_PJk)7fL2zrMpPKM>QP-h=;y!&v7;Vf`=QVDSc$lJ$L60VXf>91kr<63?e+XcH4IG% z>AiO<4tk_+EBXV?;4@VgJ#}??K(b-jg_OMBsTw_M{#*bs^r!hefKSanqs+V#aLWAt zb<~Xlrq|+b38Put1FIBXIAE4o{`8XT9r9%e{)z8pA~kNK*kR5)iNp!Tk2i%Bee%~s<9RKlzM7L8kSUz$A-|n0xT1Wi z=l-q3Ioq%cSBS$9LMROPN%Kep84OX?6RK$lEp>hxT({{*8$<88EO~h*KjUn?*zCES z>Ae>b|LoO|y_xQo%)MoP%9Yz3x_G~jE^vT}OOlR9+C`r6+fJ8LK7#oQy6sGJ`ynq5 zuHh)jT9l3%N06X~&l4wt9=9o?BAeQRa8Qi;x!_uV&C%O4Mh!cljgoM z{BvS6W$@aMFS*(q$V-^#wEJZ7dmgC-f%PxGKZ!5B0PExx2PRe_BIoxj1QawW)T2?m z;>@t^OV9r~)1bBT_UlgLnq90ZX~B_OS~d}InsMw=B0@20yF)w=zqo6QKtO>Am)FW? z`g7wzDoctblHBS(E-LF{1a{EUZxPCB^K5j+M#zr%yyaYVJ{I*}&33kuMO@6!b>8im zroUrs$TV`LtFlJ7qo#}l{~Yzz37L_r72MPF)(09Kt4bZlU>yx_RU23F00MSS9!IW8j$d)l2UX=mv#d=~jIP&s1 zcf2DTyI>t)-oNi(Tfk}T>zRB22b&}H-Ju6VEIks(1ANPXJ2-ae&HY_7hNHk2lS+5x zz$x6uvMx%W`I6OHvk5NS*f<})yY8j|cY2u|bkOL>6xdU8Xw(7G!Gxe?lMpnthCbBD zP#UwKas85h1(?Q!4IXaCi}uplZ6g5a6CHZ&0Zes8wp3>)0;|Ks^lGX++l58}A|oJ- ztY6HJmVBY8JwCeuJd9Cu^=j3S`DJ*T3!6d0`VC+bi@JXEgE-x0mU1`Qj#d$nZ(H=) z_6_f1Njb}CH+lM|KRJpmBbebl zT8VvW9@=_+(`9^9SA#p?jaBM5YZHDxU{-=mjX9bMPHnc;3g1`>|Be!eiS zM~vg=>l#ZjM~20RV;4@5@a5^<1c(KlSoT$Elym2e3akte}-!j>A2A&Eb6O^OZw9cUoxO z_4mlvLy=zSTA0sZG7n4sgjQTxj)%rBv>Vr0y9if(diPZ?~k>?kN%* zlI*rhIqP`%KEohnBJi_U){|Ur4_PksChtW0iMCcio1d=8)6)-03lj@TnYdY>4Svs0 zOP5QuBLN$iB#hi)jMAu_VTc1<^Jz74C=JKq7nN%gyL0ttzQ~S@?7aq@wz(ZNpbKC) zx+?vWWI{z!RWB%<<%@CJmMxT(7Sro6Do^1$vD$LJNJHnqxKHqXtnShG30y2foB=DE z(K|v5E}ANQ`fRkw&g=bF1~|9u;VgG=7n8c@l7aFT`O`=WnmXGUhV`BL6}TcxA0`t^ zMOhaF?XjB_IQ1J6+3W<@=UHax?1o;aUW?UeZHHRspUf*^GWGZXzI~oP2 zBTu*qWA||=Vz@@#?E3`tLbXYGE6;1$GfwJZ5%H{=^+ST$BK*CtI=dvjHYpw&&kbub zvuIyZPb?wv*f%r1?ROrMNRNrID>j<9)v%gG>~`^LGBkL|q$tq{LobT^`=^1)g-p>w zKsQBTf;qnfu2fE6sT9O-%2aLbUA?slTa(yl$kv&A*?MfjxaGv)NPM8uJI-XnT_Yk# zz%1O0m596#*n#dXpSiyamTGY^Cu9E}*e2tGqd|QzI#0Nql_kJg>JOg0V&{muZ01e8 zFzKpWR>$$DXJP*&-R=$w?_2Vw)`Wh);A-$V9K5ny29>4Jl`_=WS{Uj_z$i~Hat@BY zDLTQXj9!d!4g?zX;}lxK@d}oa0AGI{$#7-T*2hn>2;+4S2e!?o^kkm{B4L-{@FVkR z-%EQrC%q$I$k6M(oliJmABQ%juy#)%=_bf_xN_(e-bY)tardpbH95dgJr|Q>UKxXp zN*TG#cYExzJa*gRLMc00=^D42gw#RQ+qW=$&`#v1!ng36qt`zOd@(Nna{a_U$r7}! zH*b`3TC>ga1r%SP{ND4ku*bntDZhx|gvR0Qh#=*!@ktR1rtz&*GMQ!%vkit7@L9vf zt{ALlKRR54!l&?fvLZI*c#(4UltSSN*QNM<>Kmq`kAjNT$`1mpYtkz1JX?5rP2xIk z-qF6#t%iQ73)cRok_X^l7+wH!lPZdu3~5)$k5# zEg>~y(9C64F17xGb};w(QS$~_-TE+LA1wO||AWihF5a_8T{a5~zOn4>yi@6TdB51m z#;w*o%j*i=Zob!am^1}h+m&6=jGYdYc{78Z@oeONFM%CePdW{OL8mI5Ki-R^6gcb& zd6bnya2KZ&TMoxa2alB8Lb8E9k^yxEqv9FE{KOu(B>e%W74^eEnKt?<>raWFUHC() z^tTh2d^v4_H?gfLi>^Z&pQjW8*IGqf|GKDpZV^Jd@BdIf>hE!O!YkT{ravD2?3^gZ z)$s6s^V@bu7FF8XdB>mUoT4wy)QE{Fj;*QI7@1G7!v&i|So6p`wiE`IRoTe;(?Ap% z(UxN6&lBoI&&*3yybNtmH0N#!PuX}gr1Am>)+l{U14rB zm4SPYUnQQ)m0U3nB2^u|fYa6lfmp$(ubTz$?LA^9qMXmG>yy7&#Ky$-sd97`{vAJV z;v#QyIJ>^g7E2V#uzxo=#@}Nrb?j)@t}txHnW^Qy8OiG(3uJYNQvF4X+8ep`%`^Fu zq$yXCm4aV-=kR`68&33Q-2+BWq-K_hY)(g~l+Dm=SUrX%n%AIj^UxfUr~F?lQnt=wdB@x+N7NER52w2O3&O>+9V%% zPE~?f(*V!L-2E+8I;?bl3pcQA-aRu;qP$+d^*glo(AYNU09B91OEVMc9%+mof+JwH zn$rqyr#E!9y`hu){P+`DM#sF&1|@7q+xd=Ra0Z`b{96uWUU{P>@;R7uDy&wLZx}iO)SM3Zb>n85?(F@hhacAf#ouA zs(yVmDMmODd0?Tg?z0?ufuXiD4JVHAep38H8_fu$WRTA859+*(0(D;p;%~7JU#p9& z7j^()++*)BG0WnqtI~%%uG)XXxg7C9`$RQon9!+SRl<|qcy`fD8u9(UqrRHe`7Yi~ z^m0zSwH_8dQlP(1U8yN`g=;F5Qk@d%;b-3Hb*wnI0@0kWXcHaH0SOs7#p=KJC@XO5 zN;6E(i*e6EEuV|2vPw!*?qU&Vm?RroD73AP&Jd=0L`d(JdYZkza2N``km}!*tP-|e zfU-1;Is0B%Sf~)zK^w&HQ>g4K!80y=fV3CPl}SF6Fo07i$bG6yCFHB({)fV87j(u!0DM?d$Qg%wOo3f|vnZh|w&< zq(_dMKpb!U)A6ZjiLhMW7g?|)j-wtUyiOQzC_|rCK1T@8ij_|CwrlRVh0s&k-2UwuE?&O4dbDXHpPyvmW5+%DO>U9d zwZK;gK-JW)`OeFh!wih=X#RWeyO~snF45%%P(-onhB($2S)E z2#?lm2UYT9XG>a|7G>n~Hw;x{$8=p}EcTL@sX{?kjzcCie=+`rys1hGrs{vbnQ}Y` zb7*_fdLK2;=}&WeI)Wm*U4ga|YbFlH%s~xWd697S3>s9_HZ;IyNFu$CuM-Eh^sr`@ z+rJ{n)pqsPI6GmAW-81=*--v1Yv1e}<^_wb%s^{k3SBxA6%uc=O1wDsdRF^lmgrp9 zI_&8{W|5a|?oGaE@xPm;_^8Uak8Evk0Mwa4aYh|7>xUbNqO9 z6ukotxXLp~+iKIWXn0`&@@4_~V%xJe@RaIlaC87_q!T%y4hc zeWx*rL?9Ag_At*VjxBu0)9!nqql3 z{LDm?eH2y`)^ih#{>?mPZXBE6>p%f|kC#%<^NFtSAL+P(gkGO{W#JCyHz9h?tar<) z;_Nfs9B1+7bZWAIeRS)2a!$L@ld(6^%r&*EZe_FOoRQ=$80}ckgMJg{$DRZOB^PpX zsn}pws*!_tQ!)cwlskgV2Gy8mq(r>jGRa1L4@hO@-XBb0k zASL#b@1^^6Z$I zPggu@S~QyD5?78-@jI4R%kD!2r|f@#xUSi0g)TSBJ+Bjo1kliO%9i?4PW$l2pXMEd zueSD~zYm*jh9E0->$vC{;Frhk`LU}C*l|+@Y+!>za9XaGlQB!7MGsSt^96Tw>6+-d zWfWk#6a_qfCC*m+M*s{85!-L(+eqW}0U(@lPYhj#uD4nZuMgnDTy8{^;v*(Y5PIWv z16fj1dM=~##uMM)0#zm|>B2nofKM*t($S3686zn&Z$^$&zq}L)dnE|efUPeWTLOF1E{8wzqTb2_CDKj0IXY~U!H5Zl@@UWb(g}F_D|9wGG~iEcgp4~ zxsVs*?aRB5{C9LR>l~GnnBE|lI>tK^T#r}J@XaMjN~lH}iVa#sYw6^kb~5;xrU{-7 zh-43rxb-nER9^4=WXqa=zPkkhLGgfUEx-?Qs|)ld8#i5WIDUSZ&-KO+$L~s#^1(ng zC(U&^7+esyw9kknrWY5Uy*Y=&*OQiFjTbcb{UnSBH%^!L{rnv-48c;&NPqhqtNP9H zczs{dxfri2Fc8 z{|4>aEoNRjUhIeNFx=LO#YDLsu%IXt!P7V27JivIo3y+R+c{1;NAaqlybR_AcM%QC z!|s!$r8p&J!M(?4xgl%jp(R{q6U;Y|ABcJ#7;<2tx$d*hS)-p+g_ z#QIcm(K4&L!C!1=#9^QpVlwy434q5i)XlF3F5!+w7c!?5|=EX{&Ft z#6{UT44TC4Z4wkZAyWmVgs7dUqUDjfRy_CE_oRNJJCFl7Q7ZLf#tia`>!^Fk8Ks5d z7NK>VLOPsjLOPhljt}7JqO1VI_&Id7JFiTguegFedY8cA!STi*gt+KrG9zXMFj7Z? zozO+T3yb8(X+ph#qeeSf+|y~QEh}&tIKvwYWCd#F1-aalz>^ixzDF`%Tn6R0U$hMF0p2b%ZK#i@2jC-KrEx=_T~LZReE=9U z8`=`vB+A-%4iIIY$$PGGN8`HNk3b&RC_uG#_TJ0EJ8}Z))^a3X0&tHw3#do4pE7Cx zi0v5n5=t84boh~93Bs=|CQr$s-^d?DFCiL5Cnh*aLyYi&18&EP?QGAZSrE+7&jm=` z9p7)JE{OPENi0`exrfq;q1sI$3Sn4M4fR`aDEmV?>l)%&{waYP&r&g0#k6MRQGYI@ zjPB2;O~VfP_5h47JsY+3epcJ#BXW;ij%|5ov|SRgaPwrvWj!DM4D3WyG@*->EYHIW zjlA$=yS7b<;DalT8FSMXH*bShc_c!T2pXgmvV?)^?%zRoKr`E(qwj#pzZ`nbaG#}H ziou_aDJW2&+-_Piw#SFhLmU}V)v?*%8h*_qOxx4J9np)@Sz#Ywh9WbC@tK&hHa&;A|)aeSTES zH+$c1drv)cYrYXbMjmN|qTQ}ujr4C#^N7#dOeq3~Lg3I`=OP|zQjnVW&W{5jp+UkQ zLho_{-q}x+mwH*f_t^g2S2GPAclEQGZFE@VgLHfWaS~P~z1@3WYj|^1S#GYmF8Nna z%Sn%bqv!6>DH=ADv3{4=e0=y3g(2iSvI>Enm!&^~8Z-%%uKJ{(=U5~KAL0vk`)2Dv z1;GoXd$cXg;#Z^JDP>@1iruC2yGYN)i!8H?qcqOtm5fa)A@GZO6fwNh^q8G&ESrPY z{SUhq_#!R~^V&)IpGaKe)t_6D z1$!VP0Pntg=?u1}x28)Q`oAggjYX;o$2Xh=b=`PWD8PFKv%&eO0(hRG8I9G_>WD?Y zZ=|0VX1tMe!S6U?t|{LpCIzVh!x~}xAl)8Ga{A1R*U9y3$J~~`;_9W!_d%I0j|X%# zJR9PIUODdUO&vG%-(X$KD*TTQlP#hI~%*xdGJHwEbn(?{)y2XS*QP zH}Bk{8F%{CZ>{B?x&eID z@g*M&5GNssBolwGUg4GMT-65w<|OJ8kC!pWup$DVUUOf(9BCN)IX1&<-^#xf%X6hYZ5Ds)m|G1COy9XhO;+?ofy7Ft6FZ(l1n^~#NY*EMdZw(%u*ns? zsJ?reTKnzy7ZXvDd5d3ELwA^o)kr^L_E*PdRu?n}ad2r}6AF8TGZp#dCCvf{=t@*_ zZy$#jvO~TbE!2kKoBSW@-ZCu8ul@U_B&0(chEhOUknTnrEE+)+RHUU#K!#2Ml@dn4 zAf*}UPU)2HX6T$}UEcTo+y8wWd+%ev+V`_xUcfQTT(hpV&iH;m=i;^2ooRV=h^_)m z3-*DHm=$LElR4v77|~|eEIsOS6>p7Hg9aR!vKPQc6172>INyelrQL{jU-qTI^B}rI zXL^;})(b~-ntwPA6(8dv`LX8T=esa6Ahte?JLkEGIa%oC?r|a)3NyJKa1e~_r5K`g zQ#PAZ;>=hA;arUDwJSaPM8m>YD>unDxY-57Ju!na+PehJe8?NdOETejfyW0` z0hgXm@ZuRLU6%z~tjehJR>C_2^=%w)lhF~slWN^Z{Rz(HJe*Te4OG!3qK3Mcd?sk^ zlQrwy&<@Sx)B@!{vNDG~w8YK#$yu^OT))>#}aC(XQ z)X1pb6|7fNx2(UYKj&GH&scq@^1VD*!s5}zB%P+H+TMJ+`=j8SFU#NUn8^y8o_Cg{ z9g;U*tFsum(Xdxj%+r)XbcK958^yI-_=Y*OC@!HnLc|`bJ*pOCG(5fR^|`#5zBbn! zO5KXA-vUj0f6qUgyThG)d*`$oWD1W{YCT*o(wZaC8x=0rBKV#)enTa@Xjyl!lxkbU zZU&o7UZ^{vAN<6ZLV!ySfpRuyQ-I^2_6$Z?|N1fULA0M)*-MXqfRj(%P3hyGIOTBD zdM=Yud>IM>lvtzmQ(BB%v7Rz!OPipwQeqGIUVu`OrKJ|!YY%swK&2lMsk)!G(^n4q z3xcL@!w-sy!VcuKdTHx#HE?o&`@ya&?Fs>9xUQ2o476(-MR>6ZqDEF3ZQ$ORQIpDJet%N1S0KIKLXqpJSJB? z@$Je5t3*`_(Qp>k3yTa>s@n0Anlo9at*KrAXc?D^JVFnbmSA!Frw$P`yzKK|UPcsm zd#%Sthf5;%zx)8qn^FQv4@nnE&K!0pUi%!*t*>JW%U#2M*rV5R%UZ;;0Y zY69=L)wNbUsp4tBeXLdYwYHRa4U2XMt}{=3V&tnQOtNhKwXr*Da_asm1MR>8ZlIAN zo4)ncp)iyn;(2fovjiWn=}!^vGUnpn$aZ$_T#w-+rDUU#vj8l z#gkmL_|1#ax^xP>{ilQt^K#R71iDSG?5S?N_Q^*nrmbQtKO#j{%^kZl%p`asJ8@AV+7@>GHcM*k6fa~1m~ZmS$Z-6 zS>X^u2vk#;Q;*>!L?1mogxc@@=JGt*JxXHWiwT(ZPZ}g{M=iw2F+VVh?wH{{#>L$c zn{rel%I{<)B6dsHD^*1iZ+^OOdBom_h|BpX@5Q43TpDrmPK{5`&{LfCtqA)(!hG*7 zNiETRD_MGtn#|2LaprR5_+OAyI_ni!pkpyyfyi14pzJOZSedhL0mu!b+m^fe5wK_} zvF?eY4JG5@EdJTrkir(Z?;mRe`+03iJwuI0WW#^oft5hmxs(nxzN(_xOx^8#!QR+m^xaF@}iyUS{!N7 z8jKF(j^#5+4mMnYZkCxCzt}6m!;TcKgE0_iD6|^_8Mg@uVr=70eK40WapS%}$cD%9qw>{Bd#haJV|@<&y~& zq1(};QOO|Gk8IyR;48hehxJ|b?pJynEF(J4OV$GxuVD(hJhdavbs%~UzQY!7YoW5o zR=8g{S{R9iix#{0YyR4d4a@DhJ*W3OCiT^6LH;>*sRz4_f-l!9=KQNp_8of%Bbpw4 zFK_0iAnK<3(Uj6Rs;2N{%%sbD5pz&9KtalolZ=iGBc7FaaWM<4|Aw;B#rgMVEiSD5 zEO%I97wyO}^oPmGC_`RMs>@Sc=R z-{Mt0j?TRIql*DZ|oULTDb7B-21o&VeH<6Q3m=BvGXE6|j@z@Y1vpmdEkW)L_UGdA8C$Z{DXFNBU}tTQv^Pt=+7V zoOq#6v)k1n7W!nLM^QnzL&`kU_xBaS9CoMbFMVoB)^#BQW4LKYoFZ-0oW`Vc_%Yr2 zqW^F%=N5rd^TL@U3~uh&=hVzRw`}t*AN)Q|C8&F zD16Ek2M@>yp;erTdcg3Q&2*Pqj)tG&6i!o3%u}Th7z^DozZkx3Qz<3_OA78#`V!U81r8aaZMtCLyKlL$a8W*a6s!SU*K>>j zDCza9$tnR@tul^!&?$#tQ8a#}$m10Ta-WR(Inqb1T-R%30=X2Ps_F2X%YSSHl#}yb zcRn)GTYOVgx!Hng!4CS}7JK#==pURs`t*a;4$(p2uxKV6_^gG`b#d)RtwP|g!t_aW zYrX@2%+iwSnm1ipGht5s#p*kWC#xo1O%=cxIQPy)ue>k$6$yH|k#6qeqa+oD)g}ps z`O|cUna3Ok;mB1!aQf5wkkE_db&)X)V5hcrg+5JDZTRFNi)v@#Yp5U}5M@5#`Xk*= zF;z(vJ2<)atRV{c|7I?h#r7_O4+lT*6$Nagdj6Jm2HKoiWHJNscwr*SH~3^@@qck5 zVGZvb6gdLfbU$tRQ2pFg7~%qtLSi5(hmd{H8WZ3NZIIs)Pj`5>8>ij*K3d5&lTk}Z zVza2ps`BRKK+p#i`XE;>YEYX*dbj?uTH;qObE>{RA#svnmXGtn9Tly%;l}zj%65#q zd)K~XsXBB>O)L8mpFYFK_USZ1ZYv`=KI1xJ>;-VM;xkF8>|vesxC@fOyav(*Q7TV0 z&(t5j$nZ2-GO9mBFv3krVT_Hg{L>is&mEKCaQw~3KPAJ-l`VbFTl2Wgi}*QJOc10V zN1|tM8~A;1U&1bL_`X5~u6nOMTB}>zNXfaE(b>giPO^IoSqTG+Fy`PZqV2wxxsQ`{ zkZSbG(zQV~vco+)4}~~$1FAXQM^`^t(RBrKnqgnWPT^F(m$?Rk?SyQCUP{8v5sTRz z7D35;CqsXH_une)`W;{1NjkLnbCz(jr?DPY-5Q`E;r}b7`iuGNtKB$paozir0<=>W z`_q?mHSSlu7boty@6abT7Vg@Ib~v5y3N^kaj^?v+0|{TA$YbTMY~hN zyyhNH+-{pcesI2g%}w4+k8_9^1nzrr2EoM#$x7dbVg8DT8K(QmPQEX`+xWk@8%9%q zpFD@-i-QGKOTs(350iT9+%k-JA`=IJr%%w!M7h5>? z9*%m(KEghc-G1XGJ+;7k$fs~j9WUY3CQ(_d56qnsM4cz_=d!jhZ>1&#x*OGIKCCrr z6Fpkvb`7>6zuBW+Bj)Ir!$H-h?OUAglic9;1JL~FGDi(>9dS$f$3Y#1gvPNdU zvg}hAEkEbJN!(CF6lNla)QmjW5<3gL9oD*znmxHfK?){A<`x*xKt&!Lc2O9H$Rord zF1J3dPLKDA@jBxFv<6IzE=c@7c7eZo_A@e# zKo$Tk5%GQ6BX{9@VfO45B{_F?S_@%L`fg9y9wB{<4n5Za&wsS}2qMrd`iHXm|J2ih ztJnR%>5jF?FCWwm#s4KD!PUF6JcMGo8Ja7;|K|rKq5oi6AaBIT%qy|ItYO<0X(&V9 zDMHhbliLaWWeOpd{ zbHM)zv_K%^1nu1y_r*bZrm_2j@WS5EaGLuxT>((*6af@cr4ICNqrtlcoTFf=?Mn9A zyvH?f>{lkjS0UNMJIF@B&;Af<0Y3SisqkcXwqfs!iWNjfl|j>RPnH9eq+=Ifh4R8N zHmNk(Whgnjs_Q8=L@sH1N6a7@1315NUUpJ@R;Q>XAuFr}cPDQ;BrEG3?1r~q^Ta(y z&(m(SMl(%Tfkzj9aP#m0t*pm(f3csuPxky(C1AHS0h-MG9rRCWpOf7aEB2UySMNL& zN+GX-revuQ^D;%j+dr&)E9YJTQULz{$rO1@7THph*7QB?RtUTy1XpRR-7f zEN)0eU#ZoMt)Ha)l}`WJ8NR}n`n>i zn5U>z8{BC6?EGdz#&}>N5xh?3`Pg>iYRaXrrGmXFe>k%5!W1Q47RS_=U10J!C^qrFYAYq=pt?py(iDo_a1S|c(OyDr%TB@d!wo+ z^x_WY@n2#*Z~lFl&+rb%(;00Gl z{D0g21I}Y;uxpjl{O@$-4gbe;2JxgWd)`nA7)L$q{t0~=l5>Bs+>icc`ZE5nU0K0| zy$)6d0gpz|_IIZ31v6O8f4RuqN`D`+U$%f{4I~D0k;1+BYK%_GrBH1OzyxmTZF`LY z1l!|^*Jl5+eN7hw#}L% zkxB<(s{Rz%rS}0#tQ0sZGF`gT7tfuy!N%zJnn1{5F%B7@i^uH2@@k^=tII|@*voI7 zd2VXbalbTw2ewtQGoK+P^4_M?Jqx?0#avqewZ1U7uVG`mj4CG=SdH{(kAca_Uga#D zZ8`We0M7!_AT*~PfTx-OO=v3gR?o5Ak;TZSiA;ge^+Pw#NA;^|Eiy7oxEV^?7rNQ$Ub?JGUM-m%9ettZ2 z#`ecXzmw)OM~XveXfw}-M`tYpe&n*?`7VN7L^WUwlPTW*s9&C*{^@`du!~v(Q_EhC zww^)RM0EkTn@TmQ+=Zi7s89TB3PIqeq<+?&LOy6?p_~FW?XD{u=4cVLF}a&UNAOfK zQeQP`w9of4-MkyF(FC){ zNZ&d8vDt?nd+^BY21Lw0VR(|QbwUPY#bDbCG)R}?a=q^w93y*XyYlhg^Zj=AnBYl= zI+-_)lNAo65EO0H%-w90$N^{s1l_l%Dh1LGAw~B)5~c|~Dm+7#@U%ZrPiiT%b(BIJ zY!DOgRhtQ?y@d6;@w^VU>duA>=gSuvW@)-pC4?d0Td}TA(8J7(3^50D4}iy7IFf!* zLQlj`SA>#t^fT8I1g7pNxquz{>2JilE@PZwG>aKxr+{J~Hi@$FOArlmxcC4y%U=Xz zIH332;bJpBKf467wwZxm=Y%1N*N6gdXUJE$b7auPP?inA%4UOl^WVP=l@GL4L}*v% zT=YfUZhnU|8ha49p9Vse{#g zDbl+I)yJKGmS?&`CD%pz@m#&s`DL%7{FEjB?5dnfz!E^!iWd}~a7xGht{pY^=6g41 z2B_J4`51#LdUFIy2;t>aSLau1`f5UI^_8GcyKYdwh99BRcd#~?y;Ky_4~et94II#Y zEblS-9ESGAric#0kh4AhC}RBK=kx?Yetv^HxmRaNCa=TvagcjZ>nE#D?|{2HC{T9r zp^H9_7n`}`wltfF#j=>g7M--=Gi6-VOj=B%Jj0Xa!%>SF>sb;+RNwuBCz%yC8$DH+ z{bBfo=88+BiRh}M6MKSYLewx5{K4~d&u3Jc;j?0L;IQ(>C;e?^PPvGQj^~Qtz|wy+ zadRu_Wj;7zN+QZ>1W>){Bi7oOcw3tZiHg~XMd;d5qUmC@cA1|>_C}->EOZxd2KilJUcAMTtp|J1MAeWCLP7cF zAaDFmY@WM(rz|LEoCYw>1Utx3E`I|Ay&YY;k zFd84BPrfSP%y(bkLMOD>TPARYyH9&^UiE$2_Q{OMh^^zpJ6rDp@NbgTh@jTQ*Y2~r zf{sfkFJ{vIep%j1$jnr&WNy`%d6-a&4$D!j&O{-d%|=I6RT3bN{D7nhO}c)lgo0!Z z|Em>$=HyeqYvLJF(Ad1!m?fJBc^Ol4^ype46G{U3$X?HJ!(j z9S}>Wp{42E?Xl~(R4!RY5UUw4Mt@9~v$5SFvoqOy+Z)*%L?X}=_(fRrEzai<*Hl*u z`8MUyct!rT$E){GobUcVEtX5Ob$6V;2ug!fD?g^njXr760biaoMEez+^6@zzt-EsD zEQHYI40h|-T}W$kMC*X+kLb60xh#x%yOk`jqE{mX)1_P9M^ zaBCM63fO|*?>JsK%OQP}bM_2YFLn#95nSJwoi4$-`~3cRUH5UeRvV*>RyW@13T>9R zE`S~J2l5s&^eRkhk<$(r80DW)k<+b$J-wmrdrCI^au!bx&h+|9tYeLZT$}{(8!LAJ zB#J?bAk$B;>onnE-leNDuo63quVw~W;dP>Uf7UX?^D-&FbFAva&t==|7%ww zQT^F!p-`0ocm`A!jw_uOBr5|+d^0Ln^iCuvn@gPb+TeSsAvvsl%L%P4xw=?zKVZ74Gn(FpDQW!HJ z9}HKCHqU^}JYsT84dir22VeS1UJQS8?72JIjNYSz24Mj8Fm=V88l&5g{u7|yb*lQ1 zcuLJ{0dlk_N1NkmFW0eQe`^guq?q=y^RsDUA!jYQolErgMI2K0_{QOgns5~$3N$r` zQDzH-Vjf-qWz;(WL>DU0{&yJ6{W>UXCi&d^50eRDfsib{o%x$_nNEf=70lIx;*ZDJ1u(WCE4GtGX>w!^kU-WU?E z2YYD^RqMWZU;NNpV`Yq{FEdcyB#cHR%Q{-()|IYOI>=5>pm;eQ6bE``ym~?DXe^Nn zdw?bX1q)WJ`{uXr1=k_C=0#7?OABe`{~65hVkp#u3WpuF@7mAbed%r^MtlBekm9pc zQ@Y;&3>^Q}Oo+qaJ2O^b*3sTYnYnACf}cb|O)|mZ_9NBe*WcnsR{)q`X_I@+OBN&p z{Q)+(Pv91&gHT1Omgt@!oEc;QKX`bLkE^B1=}V0|ufX((wguWnh|=~aTqE@ukaCH4 z>d;rOPc`ge{$~JjNfbdN5Z$`tLuM3gtqW#y0QER5n3zE{7^+2)@K@bR-2irQd_W}A z?PeE%>59(D6t&?i1s5G?7U0{!J>@0A`dmN5MFep{|^6 zAyjp>;A(>|BDNL6&H5c=!`x~FupM#7O|g50-PVUZh{=f5L*2MxL;Ec>7L3zCujavf zsLKG+S6&eg0Sg8xKx0Jp;TI@*rN_chjg{5_t2+mI#TUdUa3>)d85gxB*up#Q*7Tun?ioY3t@DrKdy56q6|e(A8fII>JY`ZIMI{L$iGI@Ll zjF*7lqYW22#1ff+fUu&a01LwN&2No%BpYMEwhG|&8ns0L8Mbl<1^8;3!GXpEaft< z2YzL1iH=8EN#rG!;gEoHTs5x(os0e?WUac1UUgYJP8P6W#tWgX3-n8uO+`m^iD!rp z0BbiPG!w}+&y!FMov{;I94(vfvb2UxB6qn1(StAX2SQvK9Try&*U())gq9iS+cg4L zIj@Mgpz3C&-2Hv)@aQ`>pqQv;W$w7TM<6bs&y=_WA^80W?rTzxC0)=>Cpt%qjLk9* z$;j&KeAC5M7}D?8{kEi}|BN?IVBf!bByj^I#*o5G(+H!YzH_h(e1)JB;<>)yAr z?>LIwhbgU6@-^)ncN=`&A*1zKkQG%sc!KDlkrpSPj#_?ZZC>G)v(q}(_4^rkdM>j| z#}?xBkxt-j1<+Ivx%v6CiY)4zm%0Vxpa@eVUTXOM0_EG{+OKM>+p=FDv>I=PfQbNS zo(u_Rpd|7Zw~;tSPAj~KcsN!kiX=J|H|RAz57U-Y8xsu!!{j!279ByAu?@E^DiWhn z`yE?qDkYT|Jx?8h_dU`cNbY^xee)d9aaC4=FZ8JgSom14ikF0pPwD9^*fKXt%8W(j{5Kj zec)erby#R^0qwni*~*fU2Y(Khh$?pj2LdDsuAe%eMUgdRCd;O|YGhZ!CJT_L&au%u zaF$Z~=bvhi$|qk(_~Fjudd~GYd3lG$K)$i7y6y^$)U%=EgiyeEkR)*(tLu)L+q&Bp zpRvfb5Hsr?D~B7%7?j=Pnc=-%^%xgdV#q09q(kaTYvP?nd>ywh(5hz%BwobhEL}n) zOnl>}bnjg$e;|Ed{;$<1=U}y$pC{Z{Cc*4M`7z63T(y=CVE{u)w5VkD0Tf3h_nb+wtib=0% zw-T#uGLs{oNVHhLd>U{u-L1qx1b&im%aq4Uk`#Jf4$4|Tzh6k#>&RUmoXDLo2=?O!pt5cit`@}QP^Bcf8Oml=8_yZ5jvszTG$pkdlUEEC0&Hp+FQ0y(tTk6GV|d_ zd`4wkg#8IO{++L{zbSaqaR^pwAxa(BBZ7velwg0=*pYLy%qEPrX9Ovj@R=US2;&n z<@fhFzxI^)qA!n0>n^t(7EWmcgntW^%i&&m%7#0dRm$2)dCnQ(FTQ^hk5ZJVnjvF2 z?YXPomoTL2(pg|=bdK8_L7Rw^cJM=E4ckU*CC@E`iaSXtcg!5&UK-^QnEkfN;E3#A z;@tsPmwn5Qw2$+|@8xjDLdEDIKIdrAEZDrA9$EJthg={}we`22#B=3fPq_x`IqffE zU0++E9TR6>1!aRO!K|Zug{V#CN^m9Nl{gjO3swWb zPhS%8*?&*ZE;!dYO(*i-GzFe+adq1qRUjO zGqf)$>*f9>#mPf_ant9xnHZTW-c!8tZ|%cWB}(Regpz4*#*qw1td=<6Rt{?0ZbJ)iQ# zhBs`91N*#XaufI7zG-`WEiQ)$Wk@AWCjX(N^_ZLN16huNxvem$0e0?_MlNv)EM()v zG2p8#vg%r`NRCf?ujD%|d z(QkJD-d*tm52d6qn!N5!9+2!1oqhL+%f;-#e6}0nAfNFmhXmo;869LLr)ylbV7fVZ zYDPUk1c5Kjrx%51GfCFYU1r#4NMC$0no2THMO1&qU25i3iqsGkeBu~l@$lgDt}w_N zP~x`SJTAukuQivlc!|86{X=HfqC^MP^Zc)_W0DtmGEr?{@8$zyHq0M68NrriM4s!x zo*pSSSC#T!>Cb}y05e4?Wi3;HzpD9Iy4oLunZ)86X#a2Ex6zelv%9Guoct7_zua_Z zwX13BRPNW^6|qT_0>=u+I!m85`4M1h<0rzpcC5xdoBAfVL_G4}@NR`;%C&LQT8^L! z_YUcl*=bpBvD6lIM^qfl$Ch_69B@!`aQWYr``GZh>^wKpcr@zH!|(o?K2=33HA-Ww zSva35SUG4OJ?8fwPXPs~x{gAN7ye;DnKNar<ESa5U-9X&d6dZbeHbw9*jz{Hg(X$V(#Q*{J zg$Kp@2N8C0YhkYAk<)&t~J!ZH_R!x7ISXvCXOFfO>|&+OSK9TDS6J8ks@p`zNJ?G;ZL zo2KkC4~uTQ6e7<$4QG` zPe|S>W3ebf0F{dCS2nP_^+&Xu{!6PGm4+LX)h3Rx*9TuGec5Cl3;7FO-^L8AanMw z_;EG($qm;Qks&*l0&A-!+8nt1rF+Odzd^`ue{cN4-XrVrn@)8j3AN5gW!4g6wIauY zVE97OLv!2jrCm?$jLB^lrlu-N%kDpyD7#oK@kUHo!d{qF7$1_B9!`y}NHqTpe@=b) zA(`}ZEU78=q#MZ={Lac&jGZR82%BKpuIjYBLs(H#%#F)7{52P^(O^wkdt!OXY2o*`bBUD@(myxK*$qSUsp1%EE#d4k$}NzXo2f8M9clK+47u zt2>P~dXG{`E0bS6A`oK@ab^=>LH$iv;;Ttx69L0>`s+4YK@n4-wx6x`FAj7S!!9Qv&SF1w$m!X?eWrIA7N=T za<7`=ca2o@H%81Z2h+p4zb$X96giC3W~oo>gl`poBnx`1h)^r89r)EAkdAag?;@K! zQHme-SMDy3z867VaG+K&tawlPmv5#C5U?QB{7wppvMjSEdNH382fDSy)_G<6z$x=)JVU#H%CYCu z1Mrn<_#YTKlfU(gNv2czro!%uM*7NL~6k(L#9hFMDhlQDAv{huxgf$v&KV0xUAMD>>Yh1rGbzQysKJrc?XZp

h6=a1ht%%MRreRG{JkSC{3v~UZ(aG!Jh7d_-?qL~ta3fo1t20XN;`Y~ z?DWe@=@$ufq2H;dAyXz~x5M<}a-w!8zk+&WiP-ASyvondNSpm{=R8C> zC-UYzOI7AT|H9Dp`-9g&H)a+bKBT&5g%S7y{y28IacNeXNEr`^QYI3v#?T9zLc?#- zlT5gWNG2xRAa7;50wEafq4p2B`pmz83w)uMp!BNl{Z}5r_W#{g@&6wbU&g`z*R|Gv zi#xVdK;e!-^c6m-^sc-(G%ppZJwmgs<*Uwx8N^;kDz@y-H8p|$z2xY-6K}v=bz(RN zh3-;HkRE5NMqLL*Plpu){K<0rzhxIla?-fm^GRw{wDs(8qY1RWC6no`uP#oZ@~Mn$ z1^A|F21MttE!6;RSrbqiFh0yTzL5kfInXdpM=)zKm`Uo5>-I33CFb7^{@KL84gSCX z5*jU335G^3IGmlwv8(+Z=~VlBl^ZcSxY`CFplbfjG^AkFMfHo$w{*VeX@ay?XkAEu z0M(6aLogXXK=QU)aysE>T959xLPXQjsAB83)^_47=5*le{=-O`nsPkjFLzZSmbPta z!N%{b8c9pe7m6Qgj0F^1?O<;Cd<#Uj(UDk6EP6FwQb{y?_6q9cZ@TONszkwR8&n)q zbxa510eyT{tOZbpBR0&{AqLZ>U8hKf2OdC!+1Kdo+0AE_SZW+;W#fe`{)UnZ1n^T`rUhc=INIKyi$8Nn-@D07HU%$ zfEbSiQl3psrwRO>(mo&#-Wi5I4Kz&n1f*HCpt@PP3w-bHzX&`*FL>e8dy$afyhsQN zpPl|9TH`|W|G+PVQdBnXF1;!PfkM}i# z0qC^b;8gmP6F##3)3d{I+$P!Wl)$9o_0~k8xP7n-S=@)!UYft-;O$a@w2J~L7GhxC z^ZEGtWNY~yKz#;_7N3XP{>SQ-ouI#LyL;=JT5!x8R;%4TU0abfV~{A}{}nL}Y>Tj& zvzS7IiI2{eEjeBsjw5aVDjzZN7|Ecjjd)LK5*S_bag7ixZuJmQ{Y**d{1kH$)fIk& zr%_@hl`=PQ)^^cB+qsjGc%Wwe+xNeN*t5CGgfshHU+9b4BealUYLLOyBk&EF*@A3+ z2AQcV14cYIrb@WXJLk(vDfq`YI)MR0ZSd=PYDn880T!@OZ-9J4-c)?AnR2160)sq= z)Yc4?0fjgczruVdp&G7}l#3O?sq$Ffvh8g1EY2UtCSoBkY_E8oyWy}+gvhXu-DzZ~a6Xj_tUD!jo-xAX^Lux(eZ|cUd0& zS{CvkX1EPysSA5RWz)Rd2iZ(7PTJ(69rRQDKbC_8qH8WQh$Ngf9g@#~m!Q8mBs>*3-v*tUuqK#9*&8>LIZL;iT~QwcrL`PAfmg&0S$Vi zuWO597_9;U2!ion^17_8<_KsEeM1mlD0{RxTdGql-ILBl?tgQ2djHw)y-4h0AM!2t zWx)8WSF?&htF8C0cZSs|gq+ULg@E1HZ$NY6em?72H)WXL0Se(3`%OSDH&Fd`Dd&6h zQs&aH1X78;UO@ZEwAL~PIS2y$vtuWBZg6(Ad+b4ty1$L9 zIv|=81gz-Y2#X6gh=rNveUQrFfGp-F$3`d^m!-&fzk!}pYr3;=t5e8sYAdt!KXhm; zkt~o7Em7YA4NaMJgbL@$GzXs^dui08?U*3;vg3%+bCoAnt&wzKbJoFkS?P^B{{zNA z>Hm-)lD}WMUA@r=oruRvD)?78E0zq3ZFae7)GZN1?#_%>1a>UZT4|DZbL43Ll3YR5YXz%i5GlX1Xu!iE%dj{J~jZq;&e)^?T`I{f&5&iq^1ML!duClIgz zF(B0DW&zhd+(BnR=*J3Q=jloYOf{O3j-ATU;8|}f-7%ApmGWPK8jZR;gqjANoybYU zMNAS3yVw!%|CyLl?o?9>h|{ca*rQ_EG$DQ5Y9xdWh6u={8NNqGqoSGo2IJHM=8Rn` zMxC9ZjtzbY6*E@+y^%cTl-r8UDkP^Z&hYxYn~q@HJqIc&-3+J&`i7w=8HeDEiv{&} zxL_TtF5VtA6*K1Y8C%!|)akODm0N6-W4j)g(czA9W_xCm*|(4y=4Jj2`dTTWlht)r zghl6mkUcbPjxli|R*^^Jfdu~C3Z^6X=vF!V_I^D3DFLr=Sr84uCK~j%cgQ^h$Ld9K;8`h{ zRUQq5I7yyP@^Wx^9RT-N62p<|e%EEkwZ;BCT?_#?Q*{zfBTgz#=!sAuXT(b-Po=02 ztdDC5RN$&VH3D73sn$=F%@GiAo_~epdfQyUqE0u|;>o6Gks9=&asJ#$v}ZGMx5@8Tcew+oGj@sodhbp#Rq zAsJMYd+mPO*p44SNu`)u3!A3rMiK7ksbAW9y2W>3LTsA&ItQ6NKpt*tO z#>63J5e$9OW)^hrW6|E%byfrBh1vzB7MfBh-)b8DWp)RZlRTt znqyJo0}kfx5naV;ca)rd@|rgTqdTBus|E(oD7!%ta-nrBp%5AzEfWoa```$hNCS`Z z*bWda9Wt|~A@^9;F*x5fcra@R2sl z;olIX%L4Gl{xCi2z?9=OMi&s3wUknxFdlq4VbPN6uwbLw=LQGXHV7CnFCLIH28y&% zsRcJUeQdg?zE)*{AaWX;Ja(yATe&74>8lLx_ygS&iG#L-uv4o3k~~67X+Puy1SrjJ1Bedl5NfU z6QV}~>suIdL3}RI=%mUFr}!2HHA94%O{$ zd48PT_s&rH=0YHG(XkhHxvFNiZ&eJ5b(e`(BBU9CnAK_GI&5jNFh!oPA+TDZeij*A zW}tgo3Rc*QFAqrJs^ZUv<(mc9!N%|noF=-k7z}>^U2Cm{eU?6KJMeAEi@@<+2UBC2 zp@RKbhE)e=y~XUp=t0B}PW!VTSr`VJJ8Lm($)uoqlEN>GXV(CP3OCr5JJ|i21pH6C z3Lrk3@`M&reU?jbMdX(@_gi5l{O4s`QT4Nc2!2<=Qhoo$Mqo)!g`Qrj=)fy=8Z|H* z%jY^lol#r4uf79V0`wvi=s|%agvHn4jCtMNO}2{a3o6HK99UfQ*%4 z{gDKZ0Lhi=g6&rN&H!psYRbsY<6b6BT8I0GJ;G+S>vX@<=Whk@X60L&-*c zHMigp!mf&nxAx-$z8rry&!SJw-V4I=m7m-OxDxl6*Ukv}I|#_w;Oo35?~4b{sWhnrpz5YD6v7 z^oAowrO^J`16(>~R;-aii#lQd!cZ{Z zx)uHo*zdM~v~5Xk>?NcfI-U25z$T4iUe4FPV*draZp}*}gf!c{$MCe%nwQUIx;H8A zj>UXs0$zkLJ0uWjKryuw!(!VKIaL{p3@TZP{xJzT?O*MU9X~j^9qNEQg^a(mnQ)}P zFK6kd=52jiAkjbf8-|QtXK%r2_3+0kK4;o}I$Htbp<6Zq zys zClAj#P`IgyU!8<2sYt^7#>jPK%INsj;t{k@m{bbXU?-pCr(9t9SG%{F|NY6*KTsj238Wa>@ z=?0GD=i-|W1n90SRKjV z1QyR|a>fk5GdswkX2pRIoS$wh64e>+8bc*qQrH?LuLSP}#Y}!R{Tf3A*K&=C~nOXP0md1^0cwe*&qpPN)TQ?;K39t*pA_BZz@c4~}xL3OWasVXU(hdhPp!y6jXkulf=e_USeYgs) z4YF`?J8JZ&5+|9rXD~HJGj;-4sETL!ClluJq{#W; zMO->edqHVnW7l+OCOi{A<2wsN&hQ-Zw1{;6vsclITe#}0opk8lhGinxzx}E6Y)EdQ zTfGx9pBZ%9-S{2mbtjnN;{Nbp-jjqp2gkn zkp8S+T+UO6?OqA;HOe^=j7#?FRw3wB@*LMW{TfOYVxWm^-`I>*x^2%ICRX!dZ%~QeKn@5eE45c$Ak`&>*qYfd2NyLN_R`dyr{i{v3&~l+yA5S zbN&uAuw}&l9izOV*T)>p8HU~MC;INDb5+U(qt*7ey1&6gNgnr5;a~PhJ>>6Fe(3tM z15|M$A0Op1w>3@%rN8fb8GQyvKMHN2NYFz6pTE1|OAWog1QOM{>i%qw~Dq3mw_Q+ZpvW`iZq1D@Z~ z>;I_a4=6jEga21?R~`;^+wUtvWEoi>rm<#EN;Q^9*2=DAUmtmteT|F>L$VAiOV-L{ z$xfCKArT=uN8h?E>B-@VvAO4C7xH3R3ecu)+U1ExV zIR)UNg->vhlc9sR`UPROSiIEa{>u&=(;nt`)5}ZuLZZvXzda{)xhbNg-rjj$(-`&F zFgS`ep@SN6FyaEMq;$UC&rQ+jGf+JVl&L*4XTdqt>EGX=2Dj0)9LQ9zKK62Fb9LmzQ|uCX zc48>`?!>>r0^483?xClx9-henfI9V1pNQ(wTvG-qf$Cvp(0RQMbhd4hKA00ab2L-wco=}&I_K%w zJTaC#FZun+4(dkls%)n`-thzG_p4};h3dknorE}R{4-G5;=2qXt8)10fW4R=%=Y7) zUugpuXMC2{EKLP|1eWIS{_R0x3nrFdY=6pum40ffpjy<$5wu}^mV;Jf6sAz4A;UeV z?pTe~v=%ce^uyvM@o}e`KPT!LM;kQB@?BPo%$`&9m|W<%Sq2;#yfBQ4c~7Hu^39Bm zJKy@YVU*Q5AH64VUU!ethL4kEo1|T;Y#Bem z>I<@IS2RatE|QYh?Y6(ajRPq?+7>zXD~;>MrQS|$g^Uw}Zydgro0kh|vht4c*?$Ow zb^V6!h(LS`82zvC`4^V#;k%9|79}|5kmdG^)r$#SyDYoycMETl8OZ%>kNHXSDnbkh zi)E>*+4PzD+10bX*Gf(5qHoUX+*7qLss^vgW|PP!eUaqOUwRK-}O zdvwmz-2G-KyH(mT_>L$!h&cuyO|%uoHjICY%Q;SS)QP#LhFTYkY|W> zorsH*Cs4xC{!MOt!=}zTH4-+LU{uE|2hvx0_)`343bG&hbNN1(cO>pSodtzs@J7YR z3{6&QAIvcSHBtoBm9Ufdp1W(hdut@DZD}Q8dfXYV+%&#Dbbs+?hu-y?_r?O6>{*d^ zt(po(1vlBaOEaPiXtaP5dQ4;Nfj;B-7AP~fCu8~Te0BJadVTVGkunbN3YDEApCcU= z!up{%N3pKMUU5}~N^pu*%*PE>t-uMl2ApINs(C<4j-BjoX`>TIYzk#C@^tf&_&HEt z1rz2@yR%1mE{TNAJeRcIS4ZUI)bRn|-QsFfYr{macDn{Mrd-qDG~c*hYFKBPtC%0x z49)f32joOxm%~jLK;$Mk5^#ijIBcqu=gx7f=`SA3L8Q4xm&gjSylV2yFg$&k=mTP( zdflw_pQ;b0Up$KggxZ@bQJ&%*j2~U7CXr0j$oQ*r^KuUQ>XkFEui-AYx(t?s(t*&q zm~Sf9yvn6?co}oHG=*`mr(9mqrPkP&PT3g7*X`C1mUzsPVS^f^AU*Fs;-9ZpblGu% z!Z-58ag9sl# zJ%0=_`Pn+0W_Ghq!_5+mWN@gw%nf_`dHaGmNn(w_#prYxr+>qw5)(XcZ0Q&JuQsi15Lbc8&;IeD_~n z2<{u_Az*;dAfp>ICopGaB}Sp15gQk!ohYa5!S?|k3@jqM1r$GVHW)<{8y3gqmy_SL zEb0W5h`~WPf@f<=;h!oj-%&p5$n}2gQct=!1}IOur=*25L{!lSb(dpeNH5 zHom86YjhzqIV_UYy$CT(kCR3^#tq{ybTIMac23JmH?0aZc2(`HtT?I2EK!Ad-n*+T z`}Rw0da(bvON6`FP-st2s%@i;ukG4$bM?qfuPB}2q?HZQyyiULYr$x3-hI0*e$-3| z`BU2?*3Np8b-=kEH4S^6!?ypeyj}e(^j;v${6SG#{G)5nU2dDG)>=9@yo%|ys z9CbgxmNmDcu({j!?yCXwx@gwzo`n^o-y_eD4^P4#jAr95a(e!#vD4@gPjs*MWXR-U zNsT$1L7YlvLsH<{4<*`aBs1w};&6O_`3c5_$|J4_B8icE-9iEW{oltR}B~<90d5`h%jQnNKK z{rww#6(#RtYZc;N7$%jGckk>v`1t1izQRZrcJmv@>g4B&u1Q}G$39oKe;;02|CBkC zX$f{(cJbv2{o6RL8;7l*;dZ|$v)W_c3}_=ot&?#mLLh4vrFx+B7Lv_HC42~3@Z*bX z+TDVjl!srm8RZ8ms9<#@(vFq`Xur2yp-G95Xr1|htD|7)b@k80S_aFo$A zyl$?G6RxncO;@7bWH%sx?~UO}X!!;vaUe83dqwU^c1$G0B`vNOwmM@<8ES(xhwO%2 zPi>CfOY>eJxGvmjW{cWgS^RTcP1bG*8LG&7T_Jp^HPSPjgo%sGxM=uJ{C)}W^GMw; zSTuXBJ#c=ZLzt2DWW;mcVIoH8K(;C(0J+ja^2DU;8M|m7HN_ap#Rc(4G;5q|GVkV1 z+wu%8(@o2y?~=CXEG6dER)oO_o&e;Ldbi)+(a=U!7lFD5nDvPfG|6qy216!)u@1nr_ zA=q$wzrt~V8A@jXalTl%Tmxv8%O!xF$5{aS2b7r72qG{30PtSl+fx|3w)hap`1o_G zT!lw_nyw^-{ek(xwoy+V&I;v17lDp>NB$*h`%KObx(Q?88siz-YE*XTCXyI=t^uab zUHotu^v_f8ljz6YK!@IZixUuZpmgJ@z6FuK0pQuistvSIMc(s+9p_PW9m4-i^D@}OgQR%oZBX(#Eb+JD$(nbX2BQik z)q)Qmbsw<<2P_(*hzxBhAWap}!+my#x zLKr&KN8Cp#nr9$8^9HIe(ed;hc_8Aj26kep_rIR@;T(^vQb&G*LWKd4TKbYnZ#Kow zD-_16tU`4oS8?6;4)wPb@_oQ2YlO1KFSJCr@eAKk@>4MzkD-cJrc{#%1j`#gz_vh_ zDM;((FFq*Q<0ai(%gIB}6*o74fTgN(-d>`;JgL{97+nicys^Ee05Asp!_AACPXaX2 zu@J@KAVDIn6Jtamo0#QHf~n`;iw4ymH0jpufirkJq4^yj%B5|UxOlC>{B+oQP(r#D#*>;bW@d z;`KQceU`v|#qF6NkNF6b8@D!oxfy|gtYJ1J#5N$NRry(Ax>(w`1~k3rJGg^X^F89f z8e625kck(I@Q~!~WWeSqQtPNv_}xY?`)8;}*XkWE0X9a}Oa|N2SHhl}=?a&CgA@mf z7fhp|osdgn42+0OUuvm=rYK5g`mJoT4{njDQI1z=I8=@nCM3M+*l99`=R{3dR3Z~-9K{Y%UAjqnCQiiwioW_Jw%kz$$Z50c)b^f{? zs>~$9UypT0T9yqX*BJrpZdln$1ZvfvQN?)eSmGeb*;*P1_$g6%T3ca=*ULvgFTCV^97GecwyZURxj~T?O7nnaS66KTC*U4< zh*}Wnz-WWN2U=Tlr>F0X3z;9Gt?Nln*+I5MOVBch9TK4zM`*Hd9K`^YW+ji>Wgg}; z^c2D;CUo?KV>;R{%q)IUW}KJpj7IMeE1iG>U#f&Re~Oqw!_j-c)kB;4N{eZ}2OC;h zl(Cr=uG07Fu7S8uZPe-$JOu-iCoTD+%O#lPgDOMN_L}Ab&ibunT{6Z5rCzqji>F@k zTye6SX5W_jIeIZmZjKzWPSL~H9XJVg%W zA^@ZXhDqfH^C`NXWPRWMIwSOWRE`qPRNQC4H_WJBO7Msfn(kIqi330A1;C^sSy1~c z&N0>eT7JDbL^z6OS|FAWA77}$@@t1-l3_SPMm$6;W#M-fWs+;vuTh*!>WlQ zATzzs_{1yu(8^2@%^Yo?)oDJ?lp#DPWDB@chr9NQ6;$$_q~LBeGwPt=RRE!<%osoM@V)R8Ed8-lY()R5qcIBrHmK?{!z;UkqoV0kgxwe4* z^=-4|`<5-hJsGnU8~~mI4G=RlD`ko56o^o+(p)7hmY=XmqM8D*$4X#u;~HJkUd4 z&XM@M+@t8xVBe1iz9-TrW==Gpc{MOB69EoWsIbl^0QfZf%0QBZP5XJnLJRoDECYsP z@1^E>CaK6OU_K-V7G2q2eQwMmRum`?AUSd;~Y)m_p!87$E#yI6hurJ%07S`Q0kQgnOY zGI#OE)qRLr+OEF*vYk`T+i_<#dxx{jOtU2fQ)^?HQp)*X2$Sole?gq8T#cT`Gm`+v ztZdel>)0U0&}Lm>Kl>DT=e`gB8yxfBVVwWl*Rt1kd3W{?*WCHa;ud|a^bq*Ds;aG0 JaK$R