From e5853087901d9c4aae2464a85a12e4f0dffd18ad Mon Sep 17 00:00:00 2001 From: Waldek Mastykarz Date: Thu, 5 Nov 2026 11:48:01 +0100 Subject: [PATCH 1/2] Adds api-inventory preset for recording an app's API calls in CI Related to dotnet/dev-proxy#2082 Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .../api-inventory/.devproxy/devproxyrc.json | 49 ++++++ samples/api-inventory/README.md | 142 ++++++++++++++++++ samples/api-inventory/assets/sample.json | 72 +++++++++ samples/api-inventory/assets/screenshot.png | Bin 0 -> 125550 bytes samples/api-inventory/record-api-calls.sh | 60 ++++++++ 5 files changed, 323 insertions(+) create mode 100644 samples/api-inventory/.devproxy/devproxyrc.json create mode 100644 samples/api-inventory/README.md create mode 100644 samples/api-inventory/assets/sample.json create mode 100644 samples/api-inventory/assets/screenshot.png create mode 100755 samples/api-inventory/record-api-calls.sh diff --git a/samples/api-inventory/.devproxy/devproxyrc.json b/samples/api-inventory/.devproxy/devproxyrc.json new file mode 100644 index 0000000..b977799 --- /dev/null +++ b/samples/api-inventory/.devproxy/devproxyrc.json @@ -0,0 +1,49 @@ +{ + "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rc.schema.json", + "plugins": [ + { + "name": "UrlDiscoveryPlugin", + "enabled": true, + "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll" + }, + { + "name": "ExecutionSummaryPlugin", + "enabled": true, + "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll", + "configSection": "executionSummaryPlugin" + }, + { + "name": "HarGeneratorPlugin", + "enabled": false, + "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll", + "configSection": "harGeneratorPlugin" + }, + { + "name": "JsonReporter", + "enabled": true, + "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll" + }, + { + "name": "MarkdownReporter", + "enabled": true, + "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll" + } + ], + "urlsToWatch": [ + "https://api.contoso.com/*" + ], + "executionSummaryPlugin": { + "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/executionsummaryplugin.schema.json", + "groupBy": "url" + }, + "harGeneratorPlugin": { + "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/hargeneratorplugin.schema.json", + "includeSensitiveInformation": false, + "includeResponse": false + }, + "asSystemProxy": false, + "logLevel": "information", + "newVersionNotification": "none", + "showSkipMessages": false, + "showTimestamps": false +} diff --git a/samples/api-inventory/README.md b/samples/api-inventory/README.md new file mode 100644 index 0000000..73e9b0c --- /dev/null +++ b/samples/api-inventory/README.md @@ -0,0 +1,142 @@ +# Record your app's API calls in CI + +## Summary + +This sample contains a preset to record which APIs your app calls, for example in a CI pipeline. + +You want a list of the APIs that your app calls, but the default Dev Proxy config simulates random errors, and `devproxy config new` gives you an empty config. Picking the right plugins and reporters yourself takes time, and different people end up with different setups. + +Using this preset, you start Dev Proxy in the background, start and stop recording through the Dev Proxy API around your app, and get a list of the URLs your app called and a summary of the requests. Dev Proxy doesn't change the requests or responses, and doesn't register itself as the system proxy. + +![Dev Proxy report listing the URLs that an app called](assets/screenshot.png) + +## Compatibility + +![Dev Proxy v4.0.0](https://aka.ms/devproxy/badge/v4.0.0) + +## Contributors + +- [Waldek Mastykarz](https://github.com/waldekmastykarz) + +## Version history + +Version|Date|Comments +-------|----|-------- +1.0|November 5, 2026|Initial release + +## Minimal path to awesome + +- Get the sample: + - Download just this sample: + + ```bash + npx gitload-cli https://github.com/pnp/proxy-samples/tree/main/samples/api-inventory + ``` + + or + + - [Download as a .ZIP file](https://pnp.github.io/download-partial/?url=https://github.com/pnp/proxy-samples/tree/main/samples/api-inventory) and unzip it, or + - Clone this repository + + Alternatively, download the preset with Dev Proxy: + + ```bash + devproxy config get api-inventory + ``` + + Dev Proxy saves the preset in `~dataFolder/configs/api-inventory`. Run `devproxy config get api-inventory --output json` to get the full path. +- Run your app through Dev Proxy with the `record-api-calls.sh` script. Pass the URLs that you want to record and the command that starts your app. Run the script from the folder where you want to save the reports: + + ```bash + ./record-api-calls.sh "https://api.contoso.com/*" npm start + ``` + +- After your app exits, review the reports in the current folder. + +The script requires `devproxy`, `curl`, and `jq`. The command that starts your app must exit on its own, for example, a test run or a script that calls the APIs and stops. If you downloaded the preset with `devproxy config get`, run the script with `bash`, for example, `bash "/record-api-calls.sh" "https://api.contoso.com/*" npm start`. + +### Record API calls in CI + +The `record-api-calls.sh` script runs the following steps. If you can't use the script, for example on Windows, run the same steps in your CI pipeline. For more information, see [Dev Proxy API](https://learn.microsoft.com/microsoft-cloud/dev/dev-proxy/technical-reference/proxy-api?WT.mc_id=devproxy-samples-api-inventory). + +1. Start Dev Proxy in the background with the preset and the URLs to record. The `--urls-to-watch` option overrides the placeholder URL in the preset: + + ```bash + DEVPROXY_INFO=$(devproxy --config-file .devproxy/devproxyrc.json \ + --urls-to-watch "https://api.contoso.com/*" \ + --detach --output json) + PID=$(echo "$DEVPROXY_INFO" | jq -r '.data.pid') + PROXY_URL=$(echo "$DEVPROXY_INFO" | jq -r '.data.proxyUrl') + API_URL=$(echo "$DEVPROXY_INFO" | jq -r '.data.apiUrl') + ``` + +1. Get the token for the Dev Proxy API. Every call to the API requires it: + + ```bash + AUTH_HEADER="Authorization: Bearer $(devproxy api token --pid "$PID")" + ``` + +1. Get the Dev Proxy root certificate, so that your app can trust it: + + ```bash + curl -sf -H "$AUTH_HEADER" "$API_URL/proxy/rootCertificate?format=crt" -o devproxy-ca.pem + ``` + +1. Start recording: + + ```bash + curl -sf -X POST -H "$AUTH_HEADER" -H "Content-Type: application/json" \ + -d '{"recording":true}' "$API_URL/proxy" + ``` + +1. Run your app through Dev Proxy. For example, for a Node.js 24 or later app: + + ```bash + HTTPS_PROXY="$PROXY_URL" NODE_USE_ENV_PROXY=1 \ + NODE_EXTRA_CA_CERTS="$(pwd)/devproxy-ca.pem" npm start + ``` + +1. Stop recording. Dev Proxy writes the reports to the folder where you started it, before it responds: + + ```bash + curl -sf -X POST -H "$AUTH_HEADER" -H "Content-Type: application/json" \ + -d '{"recording":false}' "$API_URL/proxy" + ``` + +1. Stop Dev Proxy: + + ```bash + curl -sf -X POST -H "$AUTH_HEADER" "$API_URL/proxy/stopProxy" + ``` + +To try the preset without a CI pipeline, start Dev Proxy by running `devproxy --urls-to-watch "https://jsonplaceholder.typicode.com/*" --record` in the sample's folder, send a request, for example `curl -ikx http://127.0.0.1:8000 https://jsonplaceholder.typicode.com/posts/1`, and press s to stop recording. + +## Features + +This preset records which APIs your app calls, without changing the requests or responses. + +Using this sample you can use Dev Proxy to: + +- Get a list of the URLs that your app called, as JSON (`UrlDiscoveryPlugin_JsonReporter.jsonc`) and Markdown (`UrlDiscoveryPlugin_MarkdownReporter.md`). You can paste the JSON list into `urlsToWatch` in other Dev Proxy configs. +- Get a summary of the recorded requests, grouped by URL, as JSON (`ExecutionSummaryPlugin_JsonReporter.json`) and Markdown (`ExecutionSummaryPlugin_MarkdownReporter.md`). +- Optionally, save the recorded requests to a HAR file. To do this, set `enabled` to `true` for `HarGeneratorPlugin` in `.devproxy/devproxyrc.json`. By default, the HAR file doesn't include response bodies, and Dev Proxy redacts sensitive information, such as authorization headers and cookies. + +The preset sets `asSystemProxy` to `false`, so only apps that you configure to use Dev Proxy send requests through it. The preset uses `https://api.contoso.com/*` as a placeholder URL. Replace it in the config, or override it with the `--urls-to-watch` option. + +For more information about the configuration options, see the documentation of the [UrlDiscoveryPlugin](https://learn.microsoft.com/microsoft-cloud/dev/dev-proxy/technical-reference/urldiscoveryplugin?WT.mc_id=devproxy-samples-api-inventory), [ExecutionSummaryPlugin](https://learn.microsoft.com/microsoft-cloud/dev/dev-proxy/technical-reference/executionsummaryplugin?WT.mc_id=devproxy-samples-api-inventory), and [HarGeneratorPlugin](https://learn.microsoft.com/microsoft-cloud/dev/dev-proxy/technical-reference/hargeneratorplugin?WT.mc_id=devproxy-samples-api-inventory). + +## Help + +We do not support samples, but this community is always willing to help, and we want to improve these samples. We use GitHub to track issues, which makes it easy for community members to volunteer their time and help resolve issues. + +You can try looking at [issues related to this sample](https://github.com/pnp/proxy-samples/issues?q=label%3A%22sample%3A%20api-inventory%22) to see if anybody else is having the same issues. + +If you encounter any issues using this sample, [create a new issue](https://github.com/pnp/proxy-samples/issues/new). + +Finally, if you have an idea for improvement, [make a suggestion](https://github.com/pnp/proxy-samples/issues/new). + +## Disclaimer + +**THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.** + +![](https://m365-visitor-stats.azurewebsites.net/SamplesGallery/pnp-devproxy-api-inventory) diff --git a/samples/api-inventory/assets/sample.json b/samples/api-inventory/assets/sample.json new file mode 100644 index 0000000..59bf78a --- /dev/null +++ b/samples/api-inventory/assets/sample.json @@ -0,0 +1,72 @@ +[ + { + "name": "pnp-devproxy-api-inventory", + "source": "pnp", + "title": "Record your app's API calls in CI", + "shortDescription": "This sample contains a preset to record which APIs your app calls, for example in a CI pipeline.", + "url": "https://github.com/pnp/proxy-samples/tree/main/samples/api-inventory", + "downloadUrl": "https://pnp.github.io/download-partial/?url=https://github.com/pnp/proxy-samples/tree/main/samples/api-inventory", + "longDescription": [ + "This sample contains a preset to record which APIs your app calls, for example in a CI pipeline." + ], + "creationDateTime": "2026-11-05", + "updateDateTime": "2026-11-05", + "products": [ + "Dev Proxy" + ], + "metadata": [ + { + "key": "SAMPLE ID", + "value": "api-inventory" + }, + { + "key": "PRESET", + "value": "Yes" + }, + { + "key": "MOCKS", + "value": "No" + }, + { + "key": "PLUGIN", + "value": "No" + }, + { + "key": "PROXY VERSION", + "value": "v4.0.0" + } + ], + "thumbnails": [ + { + "type": "image", + "order": 100, + "url": "https://github.com/pnp/proxy-samples/raw/main/samples/api-inventory/assets/screenshot.png", + "alt": "Dev Proxy report listing the URLs that an app called" + } + ], + "authors": [ + { + "gitHubAccount": "waldekmastykarz", + "pictureUrl": "https://github.com/waldekmastykarz.png", + "name": "Waldek Mastykarz" + } + ], + "references": [ + { + "name": "Get started with Dev Proxy", + "description": "The tutorial will introduce you to Dev Proxy and show you how to use its features.", + "url": "https://learn.microsoft.com/microsoft-cloud/dev/dev-proxy/get-started" + }, + { + "name": "Use Dev Proxy in CI/CD scenarios", + "description": "Learn how to use Dev Proxy in CI/CD pipelines.", + "url": "https://learn.microsoft.com/microsoft-cloud/dev/dev-proxy/how-to/use-dev-proxy-in-ci-cd-overview" + }, + { + "name": "Dev Proxy API", + "description": "Learn how to control Dev Proxy using its API.", + "url": "https://learn.microsoft.com/microsoft-cloud/dev/dev-proxy/technical-reference/proxy-api" + } + ] + } +] diff --git a/samples/api-inventory/assets/screenshot.png b/samples/api-inventory/assets/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..6bb00396d73262ffb2c652141436351d535f94ec GIT binary patch literal 125550 zcmeFZXIGP3)GiF7vPA(4pi;!LX`xAP(nLT42!tebP>|k~DkWeA1p$@bdkcinLT`!) zhF&9~D$)r^Ns#`o?CpNeGsgP|&WDo^j;N5_xz}2AUh^t>qkm76k%66ohK7bw>+T&G z4GsNM8k*y>e;ot=Vqb=2p`kfTqjg6W{v>5(fG(#d_a)6CS=ikQ+YM(H4Hu zeXI&|%wF!+FxILWi7`EK;>78TB9+H96nyU9eSNaZZ35j}ZjMG2v2k%>o>|oUkS6L0 zyZPWJ)ipHiY;ALMb4_H0hKr0u1q2p5gv;?itvoyUczLDW#*OK;<3$u7O+RJ5iQ3%~ z(`SYdJjFlaP?;zRT4kAM32bw;tR+mvLWC2VPiroM!s98qGocJ$otLofaKxDa=np`{#K7 z)SuX%OLq6+*!k7U9DiPTN38R^<8;fj{8XPL_WNofXUdMvjoPOpg7TkzZw(z|Bxs8^ zZoRy4udgLswCOjQU{&8O?!UDV6BDyIn6JFmr^bf=80GP;-Q=F!Y>euQle2SkX?}Bw zBh3@dbMM>t0U_^X{e*f^A%CoOM3c&hEw$A#;O&l^%wQqqHVze4C!ldugNP{svR zTHuD31Z-`e=!`WfasD!&9^B;pGy8wvEY#;qQcf{TK8}u#Q-PZiCpb&W%gdYgRuv?Q zQ??eeqnJJm6-YYCfkhNCDZlf~XxdH=_S=BT&@14_JJBNU;Qjt4I#WNSv2g;T?Q?s( z;4GmfM=P4C_vOVS-m9Z}*=n@kX{rvoptS#59kTYK*DnfB}==(HWmoJaz>v1y*8JAAqJd*+TRF{C+yxVEb zra?Vri$%|%pu?A^E(lF`800RUr+IqgUMy3_i|555sm=sP1K}nguP1Qh&KdR`AHB)+ z*yvivUP`6KqF{M(>zC<|FUaox{<~l=3Bzf*>x^lbID%qYn|eR3{djhRkfk2}`{Q1- z#+^H#!Nmz1HETf{g{M1IEsoJVk}ayE^}6HY5OvzLZ5R^dVx$`M;K2g}RZCUlJ9n); z-X0c>)qPZ6gJpu|(Pz1xpV8embj-V*vGU$a zDIR!%WdinSXFgpRw4xYv*vUS1WWNDjG6dDr-D9QX*P5s7%PEtEBCcQ@J*&R(sS}*d zDv(aky}!xMr+5kxUO=0U4);FfIesgB0Pb>Zc5jlDb}$la+2}si#Gd`VJ6Yyvqf>OO z+I>4kd*|+8p01&xVRly5z`y{q*tpDPRDAjV5&=7vqjdpg4TBBzq$_p-mg|MKO_%?FfZ zwgK0;zP>&m649}Qh;v>Zes%id(u-mSRu+~aG(r${2fXT#kd~gFRkd4cQ}`h{MOIvV z;FfdHFd8vdzWu?ffeXp?qE9$dY3t3f@S zjWkwG=qVNz51_cXqN*KPl8IbBOP4Cm74nfd&!kvEBYACBWxIalAY`DW!Edutv@oM@ zX+SCOYo*}QlQL*tcYkAmZ=;&Ebr$6-mx9m!A`GuoI4j1@S6f?ai&AM2oqc3tZ=jla zqhC&=6Dw>Ti;tR^-1ac$JAoP7-w$lejM^&=lO<`(bI$dqV_&G($1yyNFnXMC-EfTg zi+F6S8{UgpzON_;i5OUNnyAB3v`Al?4|kmfF333aW%zB*&8<}VkW5kdA8p}+Rdk^> zHL|P|yDX^FjkQ(x?d;}M=Lgh*v1b_$5w)yBkO41no{CtlT zw#xun+9r+JOQQtL`t(0$EqW(73_71!GK4cNw^Tz+6VcpRbkHda?b!JEd_|~cTwJ%O zc!g2HTiCEsz6&&3fVIC`masPm2nS8L1hPb8kvnu zK`nUdfzG1!av>L(Muc-nEMI(BoE-lkO0-K9Pi)XTI`N8AXn^2gD`Y!+Of0eet*%zs~>ca6jpuQ6U|7@!goXxDrk2x|DxrS%$&Kb zxw@6|PSAB&s@IJy{boU(o!dzk75=)=pKW7popNK?$$zU~Qya}#q~$}f@O7O2!r=~o zLHWv;4o@8jA~$UI1k6OpC>`y42E1j@O|rz{YZ!qy!!8T6lcr@mVG; z)~_`MEat|K%R3_{2!XHi)BK^acZDl9hYJn!of-&-slyI3QBYrb@{l1pqL?8Ujjjs+ zbfS9Q>HMwV(=U3YOCjUb{#N_pyN35_D0k4eD^qi~8C>0@-+Zc`(#~h} zU*Mn(eb4?9GWLYa*>}<}-;~R89)`2TLaup>41?eNJsGfO5*qWogD>sLr`mzT&GaLO zw<082zCjIN=dMc6$C3T!J-pT26$O|l-BJXH=`g_({l^bQ#*9nsYXn0AHoIloqqyDu z`sx~Ymx}amt=~~ts}dk{$a^_x&E`xV?Ji?wTAkV!GpYjTY~;*GOl~o^zEG;2jGAcD znf>*YmhPScNfPt*v`9@$JL*YahHCqjfZ`wbQ*F1>oU)SFU= zYF|Olv}BpFHI&&m(m;s(%_d49)H@lLnGB7+rWR7ry~c^1wgD|4dI=Mj5xqF!JB7L1 zwqI!Y=6U~^dvoJfZKag=*;=v~Mt|f8^`>=RYJcjUWp%SpK#>}lu^8S#>jNH_xV#=%%9?un_e+YK^P?%FTn zf;`3nmvGu!8Y9oMNPOrvC|ETZ0Lk}>9GX1D3u1MWB)=|eI;;&>SIGPTjWL$bY1x=( z(Bv@A%*`NYfwK^k2WxYdTalS6;*MK(`lu^2@i0j9hvefQpN*_g!?lKvm?Vo?fSUSB zuCSYq*BM}pV;{s8v~&5UBVZF&cKMd!yx|n-^bkM~sc^Koo3I}O1uv^GFMOAj zmn`i%5QE+<9LU=?u;>=v^vJ%s9I3F{_hF5Q)3&S;jKAOo$AO%$nCi);%VNeQq2CJf zN>0W$H939blK1L^B6)Mq>Q_9uhb23@-H-PtFD>qw(q>fEef><1fD6b7LUqkOJCmy- zD^3*Lv>?HTHCa_$Kw}nlBn&(+bj@B&4?gsB%^p~bIdvAtOzwaD__1l3gk4u(xg+;T zT831ya2Df3#Bo&jxf>b@9BO%b=_OtF>T{8=LDM_VWzN%G@Fh52#G-P7fHBMW{+6xD zjFFK#J**@kP*HN+$w}!~3*D~KlzM#`lNqVZWMJh#E+AU|wO85vk8sh+=HO<<*%$%C zm0ww4BG}C%%1wNNR!iceOkA9-7VnBxpL1OI`pcON`Fo(;uPQN=kt1)W$KwQ>=X?)h zCj)kyL%l7YLa!cxq=~_CQXa=8O4vIkc9;5C#17{+=X2LLPJv#z{lHbIF_}Sz)f#dE z{@l?=c7*@ar7}Q)CGnvg6(y+Rton@GBt;;23`iyuT{~H<>;H9o< z2Hgt@!KFK>+1uGUr4Lp2eJ>oaB)CJ5y!+SNxv>+L%bFZ_4Ix0<4ivx`@*fv3cq1&u!sY{<8fNSC`~cu_6OHxe9yzp2FPBP0U29-5{mQJk z^{xsx8}_C0MWKK8c^xy&y{Ae&uDf7Hb9~Q&aK`kcD_eCITfhUdDI&w3mDvyh&t&z* zs@e~j?tI%3NA1&jdP7G1j)hyb_@OR|?YXYRY;{-w_f!H#ZuZ4hdGl7zDB2*PYcwo&nAzr~^K4T5*)@_m>x- zdU3H5rX{UYn|Us*s;1yF;_sMghUZH;axpYroCqp@pv=J5d>S#ecsgn7dcpL-WYLCd zcz!PeacAtdW*=xh+cQzh{;AbE!_0!e?BzSLsG9Qt#nZrFL)ca3XZH~VtzwRPz8hom z=7r_XS#j>o2P5&^-st|^IL!IWIG&;NRhmn>L+>j142PlQGsC@ULA#D^8kFAv))g{h z?Vb|5(u|sia}03B85z?rn3aBmDJTUuU=t~)u_@1ole8{q>Pi33l8D5mJhVRYgh33oj})0K zSDlKH#7U+$Gin=eW&YWvgz-q5;QQXHk4- zry<=}lJyJI6-)Q%tya1Dlx$2MZ-jK^rcnyRIhI#3Tc;g_6PQ9l8#nWN)_6Bc`LHJP zPOii(bB6cZWR-Tm({D|oybD6JZ?v3@ORSnLF@^z2A79Wf--VB4kawnz4hd-+U?|3g zvOeNZ(9d3f!pGTS@k60>)lVZ<1c^ zvOQa1%PXEOU8`u=zzb4Jp$#vj**ojT_AHq8%9x$ma?khNF?&^7m7P>x*I;mHR~tP0 zDDj?ITr;0$C+n7io>~~6*9L3=6FmfG;+3~X@WbRSlbsl3Jjyrl=5=p_nRIr#lV@%&Zi30AWMRb8E|!v{T^NeA6Y%YKYFs>? z&xjFqJGx>OFkL&Jw!9tnq_Ul8`K$!c`Xp$cmw-WM zo^P`3$NwZ5uSn2pPWC0%$>qRNrVm0i3X-b!#?J}a&@Vh!Xo=rT1{K|5`(A{J#&04$Tt(9tDdK#6kwCSH)# zkU-byubMz}Dxj*&r7Eu zfY6>UsbBSwJ`yq-yvxx~3Jr6*UvP45R4kYM9r1z?p|QlR`9=w6-lh_+OwrxjNTGHs zc^PHTp5O413Qf*Hg~N` zsZ_^Tx92D7ea%Y7l8V(d$NJq4-$Y7zwx;?BOUn5Lm7Z#)g`6<)3o~qzG(jqezIJ1wa8A$x#bC<*y7AKh@ z{2L4kveE3Zl(`r*+=%d0dsp99Coi4e-o2D)S;xuxI=h^OHw|gg@pJKB-US-rDEmi_ z$Gx~mY)?fqIjakld5k4`>lbazab|N3q8i?}FzN?S%*t>AVBDMe&f@fc0S` zD{r57xvlv*>j~e)%CbBlvuSpgHR$(kVe?v3}}DjQi!In8Mvmu7Q$ixnQ-7XzcR< z&!oXz_Fj>TD|IEQ31iBi#RMKL(#My?FIZU=lKqn_Aatf1s}uFjV6u{bhdAxsM67Z( zORbH`ao%TE-oMX%$JEr*$A|5cyh6hJo+bZRzseRUHjH})r7`*XWD6gkDvD*V!ie|l z#PKQsuXwncn~aoQXoY!-J=R*A3Q{0I5=aB6GqqkhxGm;~)rT*`VM=ayLbF4wm?Hjq z^O{j1ur8>|Tv=9%i)*Q_aZQl~dA{CYz4mam)3Bbf%-q@xn74zXWfIy!zCHcXr&Do7 zqsRdigPY9bgpesfhU&Btv=A~EQv9TuQioV}0C3SxRM9Sw&-GKQj%O1wf6_PK1^>&? zTd+{1fT3$JNp^`0tIh3kvb8oDf#(^J+xBSe8j0jUQRL%# z%Uk265aiw8=E0MeHq6&+F?6%O(aAhb@5zW1heUk2w&!fGyDcVY;X-$tL~s2BB1)XA zVqrIN-oTw3N#U&$#V3j7!W&Ji-CQZZKDfOfDe(qmtw6?*nZVN^P+YsD2eKxg%tS;f zQj7s)$GPA$ylGq7(>vj^+~ID@Bc8Q*arpKK$Q47q(3;EMJsnX0fGi6c4IW7IIgM~6;l(X_un zquo&=s0O4;D4s6TRr23**c&-1arS4H-cYk{lBB^~=UxQhyAJBzCgi!fBVEw`=pDb4 zNdc4<1O8|r0{B1j>l3x^T_tM_;hYI|6TSc%N=@yF1%erH+-*c(x6!QHZMV-9=QJ9X zBjMXorx?&Zhx2?Gkb_29rgxLV0q>pcGMh0pP!T-rES)907P1HiGz37gH$WLMs*ehCv$7Pa!a#JYi%L_VfiOl%qbBqV8eyGPL^&} zsL5fM5=U|Ux^I8vXjjOuJ(;^m8U4OBs7GLO37J4XpRHRp8wiEipx@=|##sU4`FxgV zkDTT+tk3zqOZ{m!t4x$GPgmNBP}00SV3}Lu7rT9im=spbn4nP!625xq%ZNSg){jZIN zP<9Ypz*K54*W8TPSz%hxMi=Z^9+aNg)iFv#ebbCJe07qh#c-H01F@r(oZ95L9+|`Y zMv9}IuNujtBr7R&CwQqjBD_lUHw-~i^HHmGx;JOAL8WEK+*!4apvE*T4$HLf zO88EBqR2NqqZsVrcErAYc9NDvzAF}R_i5V1{0;0*hKcD3jl9!v378-SfB?9DR<_6M z@aIE-jzyE?0c+jcWR3p{l$*7zv5U4uQl}vmjoRDW2cZ6nb&QKY@;wi>o~^vA$zd8N zWABSjk$_bCcttD$Wod^0EaqmU*NHDC0g24-Ks{V3H-@H8FI_3O!Bb!zuey9Cc5!d5 z*+{$qHCHneDS^r~4xT!Tfo0_s2=?ujj(&tc^g}t7@l{mEcyN6#>>gM3w_WsvWqusweU#Mw$KlYr*9`u@o z{``*%=&-{=ci-o28g@M;=&d)@8k093&wMdydi*6EutsDsSvb_LLSP-abI~I&Y8T6` znu8PrC_;<64btMI_qo9b0|$UKRgylD$~yb`^Bsxl86OtZx^qeG7Y`}9txSfY$`^^I zSTyDzDeQFua18)84u275Xozc;@}lZ1gkqCTF!v$vati?sic`)bXJh+{qJM!!rffE@ z6I5S};&&hxdN?OuvUKktub|5}{9GlkFrA(w-z|%BmO7SdF{+a&u0Ce_Yx*O=P)JXs zb_2fnqy2g1wWd9{M24;x8`+!`>;lCg(PwWXrZs4#mB-e}F3>MbA-fpx6MANcshqB9 z^znpY+tn5v^cz3K6p?dBLnF@9JMmIMj_?n1cK4|2{ORhTvWb|DqSO~@<$}>+uYrDB z?K+0cteCi5y{OW%JVPI$ver8H{N38T6?H4^6K8Pu=USM3%K}SSOd?I6A;SrlQLbrR zUNKrGMcldE0u*0?BaO1flq?%$JU!I!b1uelFb{OKvvgt^RN@dvPH9k2lr#&v$OJ&e}h4)%cd~Ze|yye-{5mF`L!f1&dV%Il&#j-_Ms6! zjtjM;Tjz21l~P>Mtlu)Gy6zPw&AH}7VZ?T#HhF2-tjeWO*n6d{9gWMzZ*|K|71!Yq z=PD(dS76OSDD_^8Ixn$iv!Oh~u9s5%$)Le&4UU7n)$iwi8OTlh)3N^(M~FI%Pk=-DXZ6j^rcY>u`u8Fe0W z-YG2pynnADg`+LyY-8F}A;R}LIasbq5fW2LQ(@mrS^FZ-9q_48GVC0yij4C}F;Kq& zw~6RE&(7}TKhN(N_jI*2&Y4HXeR6!8d(oMy@Th9#n+7Nl1HuPn2G!mZbXUlz71L+v z$|^RG1x}N=$_l_0n$nt&Z2q zOn5~{vSSoepO%1WUZO{KCe?RROm9y%Wv48p)3g+RFB3vA_ly{@C+*AA)sc-n`>dj4 zaJ%OgU|9q3d#u28BXhiObtr^b^T=#4d-;|6%P;Wo@$^KS*fAgi*!wP)0%h`r&lw_M z7dOp1RL0fvlj6`XY;~EzM=FkMh-yBK%`ouPDylV2EIt322Jlx-}&J`v6+Rc%-(H9PwErmg+2-5XmB>FSu# z%Oa*d0c(v$Vr3s#xKz_7Si&sDl`Etq|Fss*F~qTZ9-gQNSFx+Z z;~IoxZ`;qCIkKTnObMzlE-ucA#|GCQfL5`#QZobSBhf;>Q9v%FXolG5!UWX!R~Nl9%hW=d=6Hq~D>*>FZUZ7+GpTCKi)Z6| zD7RAaZtmlmc6Lhk{lb^G5j>fT$w5Cpze#J%<*wWp1^6clc3YH@Q?~EW(5Md~ZxR|I zj>x2?;m=naU7LTf+>+M3gm|^{3aKu;TwD>dPpTZer?9X!pB7Lu>)-W?T^p$`alk|< zu^98}p1Waq&JpbCa5mw<#7TI4Ec+9mQ~5Gt6OFN(7cD7zl$DcDbs2AMHjp5>#4Qrmrw^fze_nv+kl;J5mc%X@zK504^;IhBGlW8+K($G+p$aj8 z9b=?U&JtRuB&9;TUu^;-_>n0XSVmL-2@5^ zBJDAd_AvW-Y(ZL#9-9IRJ}U+L5ym@R*D_vqYzGW<%4?@9p~lmM2%vy@_QseA7~n66 z>J}pKKFkaZ40~g$*=(RRs9c;tj{5FF`9o9xk#NO$M+Ag~_JPwwJE=2XZL;}4GRM{$ z%W#6zZ5GWGM@x6oxa6J(5Kb)c$q6aBu47d^sK*vjVvR=uZtnqA6p(5QMr~e5-SqR* zP-1siYShTJtd-tzZ-=ahRtY_Uhz|+r(ati0s5aBX)mEh>B~)FlnkP6+mTRZHms4i| zDJUj$Kh1xs(9ICCgE7bsnSH#U^wPpipL~7(32Aul^4m0>pD`&Zfg4}>%y{^Z^zeAo z1LHccLK7oXNHrI%Ep>5|sU17ebeBj0U!E_ix3rz=zt+@eMoxVhITR~-{Kr^fR z9>U>PPpWF&*K+$u6NrQI!x0xGl3Obt_R)IxB?kpkM`=?iJQ7+!oud(~j2Sl0cYHVo zvU+VvFnJ!Hk?>QeP9uL62QTA_MrZcpq&Qf8A5!L-my6XN0Av=o4B4%894w~kQ%Ft^ z70hh}TQ`OAiWChnAo&2fB|s_UuJ`++!|mp{W$DB+n|Ap%TYYsB5I((@MO`+2e$8{D zYTj3Z_t))mmNIsI(932e{;oTFccrZEbe9IK*0whZLIu8byuX2Auujt`aG1_Zb}PSO zgqYYmw|hNzo0Z?@%iFTGobn)vll};un?vb(+|HH%9e8X^5l@o}{`4)s4GMbe$&a*tfc11>tg5d$LI5+*{Mwa9eYN9D4?=prNiGg(U7HyBuPhW z4G3-j*H6d!@!hG+QRIin_{bzcVrL_Ykapg3@yK%&-zil7GpYnr8zoRj#(whe)jk(; zJ_YQ^Q4g-F-dme*Cr5&`B%D&0-vw?@_-ZfdHFzXUs62bm@E}zWryOHhnvsrtG5|auII{6s5Y0`UQ{c6MJJ=QkMcxYjkfHb)cxB#u^5sV}o z1~$acr1NAaq9U)2!D3~K?ckAleIXZ%5gJ2beiDl6q%I92yJf7N`Z61 zSq;f;X(DL7qR0aOO!l%oksstx7w*7c&#qrVTt_Ge9FPeW<>iuzlkMXT({XzRPDL8w zN$u#d3BWoyEje3D9qYajw*}}LN)o~iSZ3hSu#aIMPUDt9A1-=jU~4+%(32w9=ua-k z>(X{_Ee;~aR+qBe%Yu)BQ0InwhRyq-vNLZbph-rtgvrK$qSVB+w3633z#?f!Mh{@s zy_0{Bd-igPKYV?VKQZK0pFD8uN0+GPBIEF z-}(8?1*t}80`Teym`HEuF1_cdordvgu8KDh8pZ-_dY8Mw1yt9*W9ZvcV(SkP= z+!u4~d4A$FbnO)qOxVnxKbC)3Yb@P;>?47`U=578UZwmT@|#@}2(RViIafWte&E?9 zEbD&uHzP5JT}5;#gTWSz_+yoh(LStP9ihLz*z;MO8>+QD?HL=cXql;{#hh(uX(xZS zI+D(?Sk1%@u7r2H)$ z!B2M}md0rZ49vxf=C*~Z8vON8UUqhQ9+Iy5!~AfecrTd+ zppv3Gg{v!FMq#mMEmC0-wqWZxCSe}`#|02qDdZ4_#msu3^>%t66bEdtqVM2b$0)7L z%5aPtA!X%~1tOcF_K6QrN*yc;SK806wHfLu<~H8FXjjs->qIKq zy+g8-*Il@ZXt2aL*rJ1sXB7sylpy)kLzEBkr{5Z}O;o-m;eHrwQ8VX+hKRyn)k;aM+P1(Ez#h5=fg*tiN4 zo6WiIdh&=_cZA1mj>9zI0mO7~NZqWY1Db1i4kma|S0;ASd;Fs$4Ft2>=>f6d;gnO7hl_5;NgpcR>9bGG*^MM z5eEgXILUae9UM^#tJKfw9~#CKoErzoju$z|#asGoDb$Wc^)&Nx49lq({s0T$7@I8p!^A$-wpPTFIFS+mCQOK{LO$3;^Xk9q z0}l&Yp0kp*Yf+~@deSPO>97GHovyVq==T6}D}Qg|>Mw&+R8FRW!9%H~4x+HQd(Sy& z%%i}=Ud?C)!EBhSL7RJU^|gxO4a2>skW?pQbZ#a?7Qy+@4L&uV=5v)kVWwB8AV3!QIJOtw{U})@?!Z{=yUx>G#OY-36tSr7sKUAm+@vv;j@PeWudD^dC^;={H6YUbR3*2QYms6$ zkB;wXnN297pXKoqO@E$|EvhK|KvpP56AUG>K92W+pPA@07k?<_G^Ag@kkM>4B9<$F zTf_-VV%dXO5v9PwZgjUFH5+Th#3`$<`gSw^tmRJi7<~yRGJxvB8@6^(NMaV(djxYd z|E?LfHd~r6o?0aotQTpUbsXEM zbJpkN?A^?Nxd8b3{--55NhR71=q}W^yoLOx@DB>H_j9eJjMlTdGl9PpOJTE$gND9o zY7%dBOA!_R`(vnEgg#ZAkB_gf zh@ebl7A&P7`{3eRcJ{t}7-}l%nL-}$;tS?1NJp`3&h91#*Q0o1S}F7ghkI+t`!V^P zB7=^d8{0pPc}+}AHs^b*k7*^hMolio8kKmLMLwEaN6|BJCdhlE*E~;naaRd=Sj_zB z{0zC$S*I>8Az|O0WEi!`7fVF3Zd9{D};0s z@%Cw}6%-ogcYo#Q*XXD|g_?7+prBf=zy?~+JiWmLj0-IfB58IX85kQItEV}hqzUB% zGxkxK8}2;tn>&XTA&R6QO{)yH?)_e$5vG~#14o+6P?O7h2#_h!U?yYrj@{-!hm_bol_vR*G5=S_ujq8 zoz=J^!LI7)4c!gAb3Nq z!OviwSH6ky^A{8pH~{wrvh5TzGtiO(K$HQnHK_>+3Gd$nb@9u;s6KD&veaY10RXv| zi<|o>zY`3D(DYm|>SHWCJU!!uOtMU>+^5|B1PKddRjFx1CS_nEa+qp50D31C?G%;s zn^1==khN+8Mg!`Q;(2Vg!9LYHE>4)2S0flwrwE`LhJl(C0jM!Ig0mk2QFN7v z>s)>dbfdq?O>E$UmQ63&1Ms~>p065*`+|^GpFbpIoe+LW!h(@`A z@``gBb^_?j%WF%EFBM+xHeu%8hh{^yyQ1Ma6t~ay6JeMJ($6=HuI5 zo3aW=>x_EF0YNw&$fN9ip8*UXd6>kbq;v>K*0--;>wCEVcZGi)@B1BIP5^9)(|tf2 zgX7?aRRX9KROmhxOUp@c_+q1sem8D{PX`uf4;bl2N-UhC0BgR>pSdjl z6QDn@o~)JMb;~7&yA5Cy_h)Om6DzfDsNKE|2DvM?ctGN%%6ZPcy)2PZ0pR68PA{09 zkv~$Blbw}jfp!DyQ1bYBxBEkEtnHu6uwer?WE| zP(_|`fSTw!&#LZ`64A@#9Bo#^K#HwecTDwj-bzB8pe!!jBDtaNO?a z3wlFO$F!kYp-fy!(a|0ri@odyOu-%= z<4rqY9IZK|Lo+&uzAYdXUqrd8+R z!<^d>I$0$Z+=EMym?V>DfQT#C1Zl8?585LAEkLpkUT?dYEY@Sx{nV3;L`!eL2Uxv@Y^ zcR*sTPF3u4&)#lDJ!Gw3uD#T#kNmzA3mICH|1QXT72Eo>p^*< za)=bQU-(upJ7I95Jp%+36)nPj`+Q}=1VUchB`;Hf4ws#^wRH$1hg~h3o^#g@48*-I zmkvJUS!@j0?!n{z$-_oK-=^;)7E|*Fl?UKde!D^P{S!ymzk*PFS`|QF1&%rX*2_{b zDpNXs{dzRmy3v&=0m=eNy0dyJs3^Gg(KfHT)|72HD1c!_g=wse; zAI-i0Cm0VwBA7D<2L_<*K$H{?cpK9Ff*wffGjffJFoQzReV}i|zBDaK&IUx;50G@M zRctK14RRJkXU=dd?E_`U(=6l#`>iLXhuvl`ZioEG1$1;I-0~~;PN@C$>2#Fb+$F}q zUmxj#5Aacdl&EO$8U9_F3!r}mfN>Xi`@(0J*vDMOJJ&C@_Vwwzh68IVlFok<9IP10 z(|=aD89`Rc@Le5WloJ;e)IR#s-mZD)PQs-0%1z?(7RZ&VtE)3eE)NyXaHc0G?@_}E zK>G&!Qq4R@6Kh`U@%_^)u$U5=_B#TJ2S8T_eD)U56D()5Bu&z@_-z06B1ss%I! z&`l+8KKOLJnyHYv7SQm?Zh9bKTMu;fKF?zqABnRUFUBV&`2%l{oxOb&hfL4gw{PA& zPVRDz1C6%Qq2C%P&pw1PijW=spKI5@hd5wzP>)Ny0h+M;$r#mo#&4o>0(DYyIBVVN z_&l9N4?y4P0r_HUC*u@Iih6zJiEjXbrn!+BhV=n$Q7U%>;J8fnDlZQYmuHt)wq{fi z@PEnsuA1ZDnu3%vL!qwd_0TAQP9oT)pme}$BYt4>q};~ZH5Cl@ypobzAd7_f?WXbN z%aE6+=^#qeY*ZLcSo}x{C_pbCGDV*0$1Oh34(E&1%$+Xx; zI&jZ{u|b~C(-aVS-^y%23kOz=F#y0pD+T?2q4z;+2nJMdpc+&|K4C=+3=D)#D*>IY z29VB&=xDM!RVD!X!T7RpBWQH;ly5dtzd+zvp1bHthxf|2bpWcEn3ycVjigcwzPY3? zhcGaJ8kRQ)?s%Zi?I8lR<(lgi0|A-;<@4u2Pz?o*N-C{z+y;05`<4j!YjhBOWvZNi zB%Hy~_p-~Bkr}vL*yQK5E<<1rEAIj7uAnK1IBMz^_*1nHR)~T^z{lq&KuhXjH8KZP z)5^HSjYmfYp9WOa6_9TQLAF3}q(>fPgT?|5oDoP+BMGSOiFwMjDqrr`xe%}1ULvel zX|K5C@;7Xi>)6N{*?RfW2EU5SeM0Obv#UzziKj`s?3&-Qo+1fYMSy_V^cI zrsJm@ZW+Otk=}!bA=zl=weqchQy1)ohbL1iVyy8o0&`!+U{@|V?7BrpMpo@-v5-mC zQ_|0h33_j$qSgr5^x35ce%q@PBj2w{Ns+<(MZA4$-W=3u?SSP<`^NHvy1mW>gWCl# zi+7WgbQp4Gyw;QS-jqaPTmvQ8b8?&O+_?wG766vvQW8A=?={M1f&M`CLV<O}>9 zQBA%lK_YmO6WdLV6Eo_h-5NEQlU)!33nJ+}koITSs>o5x!_1E#EdG-q;LE!Tuvj-p zPD+*9v@_Y$2!r7JqgKYkLZG7Xj)RwzwKs@UeAw|0 znAmj_#cjdVVV7e)0z46|=r~Ee-vR>l{9!<3W z?)F+RHBqTzGEe;~g+5P^C&#Ne52JJ6hxv2+{XADamN;8n(ZjA3So1-*(>t{M(+FsH zNy-<6j5F>Ng`WajcJ&8+iQvd? zu@*Ngh$6ivYaY)eBwX5D;&5-sd^k?hjd>acED$CXgpozAsN0T;`)@D@#VJLU2h2+x z;O{tZObfJLNI zjD&#bc+h#Ctp5Oq_)A-x;}54{^a*-;K@1@BqgWZn^n@w}z7H?y>gWI*4j)g9iFvr| z1;Fz*HO~rAgrGRM2lhQFRDq;-U~hqI%Y?laAaH;x<@ioBFoZ=#VL_b+1%!7bKcVDr zmK^HT2{xTafEmwRSQTy`+S2`k0hPIZ3tW$O`W#S75FySx>duS*7%3i3fgKLCfm9pH z+LST?bwfk&*&fro6(O-?WzgS20`S)^uW1o65`2sy|G}_fbD|Guy)}Ss2H)%f_=|rY z1y?~+S^(u*AW{;Af*=ut@=;_45h;o(IsUzo+eIhI;a20D8Z6 zcjF*2Ft{reb;rfU1?0(*7qO>Ds@TgF_qf{P}Y#kEYbP(G8}WJ*9(_7X{zNWR(D96fZ!}e5E)T z%<&uU&~#w}`>z#JombtJ>Ct}bR~CWC)3Dn#7Puh*CCWPg*MO~Z^_+^4@E;E6-=Czp z`s+FMYZv}`9Lorsq-_M!du630J z$O7Xw51=*p_~rqK_XsEi>ji8Y*qIOM>CK=tgMOu(c1sSRF7#D^hjw3s03?{y6~x5E zZro5y7YCRMgz;mPvU%MAKmvzgW@hHdtG_%}NgFgx)B2xtbJVXAsc@NUn)vhOO!|-i zA(~ovq@^jqFZL!ZY!_Gp!02fkun%lG-T=Kw0>heT9AGP&4tJNqjx5EyZY}hK7YqYf ziNng+xIl8BI^ltXO1KR4Fn^FE=5O$cOp$aP0B$Dt*y*fr5vuVa#Rk|cK<1Acb{+li z{Z(&+A}iEl3%m}%vDwqx8w>_~a3t)bl-ECBh*DUUW&HW`CyuKT7%JvvVDSE5O67nu zCZ+4+0|0f!5vT&cfB&wjsj=%$0*QHhP)pJ(02mJJcz2Ec8z81YAa(?6WtFYL*tY5~ zh{|e8`XA1q?*#qf`E%#Q00Bw0t4Jv-PLL3@o#2~8j=*#UC@a!?zErOPYRq|sn%kke zEGVlJ&arBM>;+|?%D@1yMZCePG6kFf&~z{aWDouRmtq+=IenImt?K{Bu%rQ8x>w0*V5HB*{5cky8OhP?4Nt zkqbd$5hN9%2zS*v+Hb#Oe0Pld^ZRl8Pj`=jQ1v`}uRYhCbIo1rO&Bz@;Uk{AX! zq2lI>ScCcXq#$SpVups;{F9TfdVYr%eOeCoseChOCb7_ha&xw;7Lf}?45^Tg1I*(G z7KXe~Y-{`|QMSA-xpPErty7X}&_FsN**4=90IhQhcfbC5&1aCajGge}th!U*orvJj z3XO|f^tgHTYBKO`^p9j^he1-9sRUpF?^Qst2~_3a^xKM6JXf+bV0A-j29gG)9~Hu@RO@UW!E5dL|WR+ z#KgqdxHUoSAhBbD2O>sDmO9GTc#&bwBQ#ZNk9pc-1eQs}hB*8t-aNI_K+bVmRQ3XU z1+ENjg&8+~3wz+oKuwP;(gg~^G!f{yp?+9r(;dHl{UR|gPp6v0+k<;}r%TP(;zQiXp7R4(3z?cd9L zUBD&fT_khH zomqHcX<>>ao^5XOF0|?QT~$?8K^+j~y?(tu{vjP|br!~DAl&0-7o0>{-I{4lz@Y&5 zTQ!$7kqAOosyDSI38b;T2OcLHT7y|kW8)*=ZxQU~&SU$!FltlO9v4j68&LH#RF?M_ z=p-b!r0It>HJj`cNr;r#}0#6ec^Yhw&xB&2m#SYpS8vcN!DR|1J!H?zT`HucWt@y96JIY%#w!*kB${U+! zU|SJOh&$_=Lqkbwf8z~mB))(D4$4X^N4$FBS{i9W;AuvaOgDVd9JQRO0_liL;s!5% z`2L?cmSdgODyvo}NIuM#btn_0WS=jf+ssr-VWD|#fc}S5Bky}!<-4m`C@ETLh0B$M zDN{2=63Y&5Z#BYj0;mg?$%b|P&No`9!J?HbD=QSeQ2mUa=Qep|Kz(Z zPGd>#)48)}TVJ}Cz^Q8%?`o=`&`vta1XV2lWELh$bRPH50}z&}$-~8!3$!5|Nbz?} znt=!nfIN%nYDj4@O$28ypj@6>IJO8cKYywA9z?;~*CZ=~a2}pp9$UX4)d&b*Gh<^- z(TgPNrH|v&4Ml=yE)W`HaCSgYl}vX6FsbafxGH~rBl)n7f>r2i05$uFehHJid3P@pVrzf18KTX>euz@b5FY+Jcf z55?;WS96L+u5S7BAK$XFWcK}**AQYc~!I$wtf2YUi9mK#`2b=&T5#$+}n=N0Z&V;k9IgAs_ z`4cKj(#$a^oTlO$$HOKQU%HH`E^*PHmEFADC;KqGPice?vDl z%EOLyFydhXKmMAG3OJ{tZ!*47ak`|qnM%?mxSr;~C?$z9BNgx|1Qo;Gai_|&hD@J2 zLBY2GnMTGMO7TSy2Y=ebkRvR}1<(=TG{nh9E8|#LSsz{5fR5E_`})BTd+u(EzObYE17Yud z57fefeun1?N*1aiv^PSIvz-}=2|s@tvlKya&oG?BOMH#FYN-B#hD)edU@ZZ~xFJ$e zxzQbxg#f1uiHRBD4WTntKLk9)Z%RfTx!=ef99Dd3fgAD$#q>^TR(q6JzuiNQ1{bYi zhHK$bWpQ005i;#$_lB^i{!?4XA4W$Jjf78x_vMb>7l9+OMA}kzkoE*Hurrm*!dI_;JJt!U z_L`mV?^Bdj4s^$`J==-WNH$j1#+@0?FQue}Jwe;w342T*F5I3-{iM+S1$-)kb`uZS4?$Yo!Iz^{ zpvzjmf`{vDpfXN6Brr;UiX6SySp$x(^YkOppZWe3jS6=r5_MJ^p zB|vWydG~!6PzfpIiCl7V=>rhGDZ!#sVNb$lBGzmsAk?uKst+V0wn6UOc~+fVT@19_ z^tR zE9#r${3`_+V6t5Tjeg$&SRW{s2v`O{A;C*KfLV9OyU!D$?13e?OQzFB0DCC5xRkqW z{D?^#NMpS=i8)LR3?8t!sThTN?MLaE5_6^geJC&4GUr9#{DOl)LoSPz0Fsyb-=E{+ za+EZiR^esjtmvD;@yIxp9AytLJ9@18J*n%!c@cAl*8^n0U5rw~01Z#-vw`1&^uE*& zWl-{fo`awguc5&@NBv4D5wK_)zJHI>p!TsH$p4CQZVA|vYqFVZr>jRV{=wu`jrN4YmT?$W9Pz{Pq z1BZp7BixI3U+U5wItCtI9H?9pl9Fxn-KJIW&g9=x{riPUu}-uMcMwCx;QJq2@AwEB zer#-ZA_1_J3tna*eFe6!nts*~=tp24u0OQ{&P4S_)Tv&)E^yvVg7!ZFx<`HbbdH7w z=E+i^eT`n%8k~jdTJ!Yl5tIih^5&PuGSk_!$+k(ydF9Hy-Y8Ps; z_nn4?S`_r0JdDImJVWMB5(Sw%Na+|b&Ndo@~ zo2rd|*b!RP8DL-s{LwA0tvv)>XLdjeViYhrgu{YL3DSo(a0GxMV7<1rwsM%{j*pL% zr~;@w&^yArC$Z}QL%{N-QSe)tBmpPZ81}qM6|EnkEV9)*^X#Z(Qiv_I;Exp)oG*HV z1)>@#WB_obLA=#@xgfh%te?CD3@p>pS@BM_R}d`6istjK1{)_eHL$8IfeeC$a6BX> z9k2%hw$1bgns*0wCF#$@$r{h&=kE{kSfg;L*arc_f(1WDfoU5(NCXYPX<$~WBj#c9 zpmdQY0>y9reR$n_e~qcG1nga!<@Qqm6v4ldKEl&J1%xIJNL%>7*~|gUs1{e0Ev#Q4 zFHb=5EMV5w#@JW}R5$!xz$UU?4wjZk>I)TPozQAinsXxHiNTwYc>}qpqyho99$BvP zYeGUhKuJ5tumfBIZOsb$F+V7*Vzy(IK$JSoc3!!1<^JP6J(tn6y^P)8k1{d#uSB~G zO)V|NWoSjdk}(Z1+JJ5n3owCHosJBW!lpqd$!v-L|E!B!)`+0(Sft1EHZW9dew|vzotrkFHJg6|>GL0)b1!HaxnxgGS z%Ir+RXFzJeBiSDYUlOtGWkoBlJo{~t2z!!$oPj?VayUt0d4r=4z}Ju}lv&3mO47WR z#1zn2-8C@b>H0H78Vm@xJ$D>Y$#ZSob){3ZmoDXsf#{cELIfx&GyfNf3In=DH7Fu1tQaU| z_(^u%o{Tbi8hU!zIvOn-41!fq_p-;z;fce`jh=$cu?>&QfVW52k#s?C-`+|viRdo{ z-wZTq?p)zx1{4W!N@&^J+dD6fWOeKTa3H~Q!2$Mq^9{=$cFw-(&Y4^tbUUJOHJeM! z+_u+QLntp!9+O;+QL`(x9<+yz1J$Kv*J5=xz$BOJ1)uHMJ)T6$MFt$mPmF%_orja# z%z~E}jQpqttXLw={=9z!kkP3>jDeygLp@s0jv)=*7@5yBLX7|-(;P64&FvAW0AP~9 zfF?E52>T!vs7KiM>TIBCoFoK)Qr9(;CT>5Q0+u3)voJ-#p;7GePvj@0FWv4gQws=A8CYLm2mR?D2u$QDZCjv_Nft~41)2TV*cxTYJ|y&eCRypZo^hpMYGK9&9`Tmiwy*&_aV_^%G)evP>_n6 zk;C-MqENsb&yfAK-UxPl4cIt5#`!pr5xlHa;i*b-V#iTa{xYHQwG+ zl@RNRZG;Te`PTp;GAcFC6zSAwbP~YDq97-?0D9MTC7*0_YiKV?BGeJ~XCg47ND8}j zcT4*S5GY~p&I{;a0(2qoe1ntM4t{k!L^Q5#iFV{AfKAL%QyJqky0EYSe2;l9{0(qb z_XQ}$JyH04r!J@z{2FxB)M>UqD_wN%Ew}U^VZEf5pBo${>bV0_R521T%rMYxIr>%a zre1?6H3|%H1bb0D3|L|$wm*SacT&hAuYNw_3gs76CEU>V8k!0cMIAn ztUYP$mo#QkuM4XEjRcQEiHBx~M4o;*^huO-Ucw3w+EWL8Rb?0XWe0>^M~oDsp`7Xod%K{6%LW zdrc)ua_v{7o)ijTl|uSon#0N{?ATlFeg8{ttl+qWuGX0%k(3bpNwj9! zh&z-9@M2Ml6gyKs=v(cSxevKE1it)9TGl+8w$cj zG2Pzq}@?PAN8OFnWPoHlrv>q?O%SVvph?9o^wbye7*x$W7tH{_7e-)hW{XO z3_zkdzdk{EenlA5n9n4g#p(^?vHd^3-V;)!6&vAChOmcjpmdWRQn~m^aVrtF_n36G zwu?W5M+z9u(2$T7kozE(tJ|1(ND$5==y}S4G;-+sdMU37@b>cNADCGK9143aA6m@a z^HE#|9M+#PM$}zy)t14$9nB8*W9(3TItdquhppPh2L<2HgqeP!)5M}QI!?ucR4{(TiF{Xj4f-&wepue26h~p{E9wNfTT;m=6^cai0(a;xr z&IEnOttU$!5bJ2cq;#HiEMZ3P+m5;AL(bS*YMJ`5fT*i2mw_FAKK`;tw9Y!D=lW78c@tc0S@} z5)XQ6=&&O=q_RT=B{gS^+=GfSXG@#G;iYc{2wFnoTLIS&4cI$XPKi9LKZU-r>S_s^ z7~OMB$_Q|M3qXjy2ogA4yoP*P#aQL#;yzj7lvZd|7XZdvnKL!&lWJT;2=!cDLGX)t zMoM;@#s;Ql2uLvT!mzvRVKFkd5Uf$$$r$62{>kE=5nE-77Th$i3C-Y-e+R z#(4zBQn7O;K#8+>sIIJXJa+|SG#6&!PFfo1t_=(ht)LKBDJ&jNgOX56p2M_D2h z%IyZWFMq$I1s(&a<#!>YjfG@aW)Y#YO?p371ita+#q?29iidDw+{L=3PRU_qI`nW% zn1%5Ck$R}%a0!mM2_~K@p*Y;ZDcl$+Kv+vb!NDNjRL!8YFWNjS-n6vf#KHX<-;j8!AVCd+9V64dYUm0Cudu{Tu47e*K=sNbhi()u{VJ2Ec`yG+P?sC zDSe;j>j(@CY-?(=6FpsU4~B@~*8p$E>}i)15qiA`C1YAeAU9gNiYs^~{TS5vW*?9c zkgt|&4#pzKIR8nnIHY~CWyigCkQpj$1w{Gjy|@eVrP$6a^UM+REYdw2ufT&en!`LE z>az+!^fOnHY`H^!L*JA?KrID~4dCsK>41&J6=)kbP9>IH0r~SB{yDUTc_eQyy90P8 z{+W%py@-8P4lLf{wIN=Zjm zdKxSXq$5bn{^j zRf#mbxLUzIP<#!IRv@B6I;4UwE4VXRef-lksYn60-L|o>jvoe?OW3mQJEh{FA=E;t zCgpP_&r$}jJk6!N3jvc&_8W+tqe^EWgS_(&XotX7S!{t=wdN6<_@9~)i(F#tT!kV$ z3MZ+I1rY;{v*>Z~@=!}3g0c7n}X6A6I=m#Z6o**;BRTIduk!)V~U1&FdRALA0eJf|m z&82`R()ya99_jknYB^j(zkscgWXj0X&-t!}Jq2zh;0g2`1i#`PPTx?B9|5l&NnQDO zvK&0Fo`AfngIqVDVgeNTJj?-;C~0XGpE(YD#=1a_kr?Os5- z4%P-V#<{qH(DP(iuK?4%2>gwjmF7xCs5xh9sQQdq_^1API34Hs3-jL7fs=&*>WvkQ zW;nD4AqV#0@`M#3d42tO*SkrGo%Ok)GC+$@&Xdr+CC1#FN8>L?5pn<0nV7BHzs0=f zEE%%S<^`CE_5=K&v8}DEt6TVfN(SS#x1oXNVl;;NFH)ikh|RoOq3<6~|NO~XvI_}! zN7l;(4a~nzx5v3d>qIgreKiM(plxe+cNb2THkbU zY-Z*Sr4|-yZ-okjHFsz~sTOAbbOHVpRD+*8fKKt+KA|SW*N{nj*Lgv+V@Wuyo2^N& z^2G{Ckj!0>({){<;I6#oFfG@ynE>5cwG@<%u%uz(cdV8Dv>>j^+-#YioL}vL(hqOO z8D92{Yu8wvu@`#2+L@Y~9zW6PpQ9)?vY0#ahYQ$Shg+AR>+28TBTFF&A+ll9YfGC* z{T7{HuKwf2d#XhmIYTOajEs-3Hmp6dwon#&?fUg-_owh}F#z2qFNk1HQcyr`(I=r= z5h%=hCyCXb#B52K#|dY3j_1jEp)10wZCV~At&s#zdAJGUR!bkV3^dey`QR!y5KU8v z6B-KA)&PDE=9H!9&iVWMTTx}{S5>S!vQ$oE7_P_YUlifvbAqBibcHIRs-T-yrr(zg z5d;RpywMJR;JJMuPeWK`^$-cG|@x<>rO+s`|Yj~IE}!t z1|ioyzbX6YTR*P6`TZ|nzD%Sz{ri9a|Mwn}9>o8ZcFh0QD*n%}`v1fAl}R+Z$c*nM z%gs$=;Z|yy!2STseYXK%gduq0e)Eloc8AZ1AEfnY$@iGr>WMhKS4$#Q6p*!Mq5$*< z{J9QOTuuBCqb8_ZDW3l{tY8rQjpPrB_ld*pZjTO%vJ=NIqmp4dsQr>CaC#^I+`FmD z2;|yn@X(tvKb`f@ z_#@2V!DKpIJqCO==|ZvJ2HdAVUqW*KPf69D>>19o3Ug7# z4tw!@MWxn?!w5!l7&GKM3fyOKU|^hxyEDu${^zkK{^OSqAa5QjwypI+xR;vD%+P%A z{Xl;DH2LY1L0OlyYV>kuEkkr7mwS2D>*(&icn+88fsg^GlukD^*PAgW?*9ShTdNf=7?dn z{n>F01mvvbU$V-o#t7Xq`J;wsl5Y21%?WsR>DGm_XD24tflC6z-3#b%bIT?IU|dcD z5=xAMVEFBijVI{Xu}*!4flp>9$k!-x0*VkicDZ_BF+_a`(*@aPSSp~Nll|t+rvJ4l zQ5oM^_~bbX1MV4gHwtkE@Jt+acUZhuArZ9{Loy|uIiuXo3muJq1AFOda`Hml@5!A* zr@htIue>QyIVTj?*Ltk&{@1!HF@Yr&vyRfekd-qz#PnXv*vu7*8@Yo;oWsbwz&;Ct zc{*GaJOz$$GLnbE#|KuKG_t1X08LG-T|FJ>gPq5Ged{(2{NKDG&ANdp0%i}V)n~zi ztMhwbKOaCPQ(b9oYv*p{mdk`RY42yKGTh9BPEyQfuB|?2BfI8pM9;LCi#GK<;E*lQ zkb>a9xVTJ>!H5EwV9~2cC&|eBo(D+#5it7*mOi``i2`9X8*72 zj%SbVaGxni+AjA!Uhey6%_Uy#JlBxYGMa z3Y0-_Z?+Cb7MTPdzsqp5kBac4+xG_FDMgvCFJoyuIX)gJ2A^kVlP{vN;?6_gd^|B6 z;!jJLUGE0&6UknK~0uI)$Ni=FF&iS3);lk(>#^KgtO6YpeLb%zWu3^2#^qoCcs8l+tbr_B{ra{43hi0# z9HK=CrS`-A$CN<U!xjzQi zyCRwVJ(v_0>?-IQaV1rEf9~B-OMRy8EKoa$kDRvFH&M%_Z#bRB^E~VXP0)f;`;Mez ziu3gO(upL8P0kn-#eG#|kHoQF#?Qv&%eJ@?qJ4kj< zndfuz{*m3aO?1u>arZSVCd0ABd8x^zl){G?D>GWV5xf+CkTU!N$yCisPHuV6GM26# zS7Wx)7dK*Q$ER5F{bx-?`MT!ZVaM?BfvK>ejG$jTp_Z>>#N3TGE19y{E~iVOwQuNU zzY08XvE9!_&>R{!NJYAQRsL9&cS~THD62M}TlFSo=ixOzR<=fND~kNg#Kc2Mg=0$TSHmClrAlY)U97nr`IL**Ymt2?;beWE zH#VN^Zpq+4SS7YQj*-X36nNEML`VN<3{&?==dQ-1P75EM-F40iEA|03SJffymR8z3OXcWz$25YPQ^V~rY331(VH#Jl!^(7Cl zvDHxaipNHhpI#{1U);_0(%g1stDrcb`>a+SHLVvtwyvP`=&hd%_h+xCwS_(lRUu7T zAsf-seCA2X+}Cm|eC^rU*qR?3nEAbCe)jF0mBnSG*V=V~%8->&otQBUR&XUmW$&&W z!SG~Y(0ePFY@KYa#bsiOT_)@-l_(9}`+GQ1T%yS*yg|p-{-XSWOYnv*tv>42yfXd3 z?%X5|^ijJQ)r~`Lc<+R!t!Xt1ld%0dhaJVE{`^;D=|sUShR2m5h(D>~D9&l;I4?fQ z^Q|isu4gJD`Y?r4N8WSs)J2T#hEHt{w?bGh>y2SV#{(%XK7xc$ z;$|&Un!EUP$@tq@KjwJloov)!C?=)~?~NlfDCNMRKEcW8%lOVs1p;@XtUpbKZ&wNl zb*RmpC@Vj;AyqNwN23llr{4uU7TOLKd7t4rMx=sZqN@W(g5>TSo_QDd-qv>T_S7fF z1GxkiF&@tz_f5pk))@-w99C`@?7};%_-a*)l>Ka{W)t;WEGH`)JDLa9mqvxX_D0zD z?>kCt=)dMTboZN-0G=VF_ly0W#0V!uqEMB}yAuLh1wV197Ju7w@2+7$Z!aVD77sIX zY{?FK?vLr6j8jl?8oH#FGb6qi!-uz`@b~`~yEk0pZ8eD#5XB0)0>}R43<{>o7gOH4 zwK320c7GW&DI%{DX&|2O|HB3N@aOIoAivy<8ZLTXID`7yWp`U%SSq79C=<(JI}@?s zowKHPw?yHd=E*wCJP1 zFQ#RN^~3A*Egx*pp!x2yV0GMox8&&=RA%!EbB^V=?4?l9<=R{m1ei=*Er$=1dkJ4+!g2s6HQj0<*ltbAFRkKD}7Yg zkZW1$q8$F2nm3AZO!wsea*&>f`?kAN5@tgq!o;O9-8ZGpv$NhP6nGAEnzgm1X=e|! zz~^o5pn-QrM%;2Crnl0avqvLt_4t2Re{a#Hb`&$cmpC^$wB9Ul5X0wgv_uFTN<2BL z(6`yFe=tM1$wckCn<~P3Po)PoVixCFhBI*~eI<6=`^8f6!xP>~-nSC&`O8{jipaZH&X&visH93&p;li)sXaq7|%S=4;++Z$PbBbAij$ z%iLFrW98XpqVvQj1vO2%=JtGWm@hQ}~s&^DB=Mv0Q@~qoC6a9Vb)h zODIqw**TRiE5(0vs-fcTa@@{SQ!nc98Mr^wSAWD>`f2DsSt9w*1vSl*`m4qZwGCZl}n1#>Urj ztTa$xqhyM0Cz-y4Q$N4)Lik4_cDDd*PAKDo9JgcA4YUhmh7~9KE8poUoJ1+-{raNs znb$gZu2;XL`M$xG<`jJ2(Tf@{Mz1RTcuc9b{|1X>qBkgdYM`#49*|g`b}z7PlTpP; zhl!Da8nww=XDineG_>=h55I)Vcih}f@VHqRq%@W7HEW&hl*Y%PUo`eg9#x3tR(|E& zi94~avZr+O3_vbQhJngEw#4f&HclWXr^Md2e>!RJo{H(=>){fB)q6=S;h{jZ@>vW*=pyj9nI~!}K^tA-fDr~vq%kTX7?1zD;$2!aCcha@R zh*)mUv?W8e5exQYg~`9LIfL3w$b_;g`tYHovXZ|1!03y_VrBI<;n|CqibIm4{aml5 zG{5o@5tj8vmk}C{`}(53@Dk;Y$Co-QFyWpK)WT`Z(x2jyE1T(gX1FwR3Ryq1IFPMn zq~jPYW8w6)r`Z!VokdV<9-DHHSz4xAD+x*7ku-iyW11dSzu5Ycyx?BLZT+w!?~VzB zDlY}C4##SZU(LvSQ~6U^fK-qIXP$6=%2c3ox2ZE~D|=fkO@wb`v2VWNw8aZ8JKAFx z$Eq5Nkh%4S%~Ohg2aJjrTrs72p4&nutYczatdAng@Nw=|&tIfEcvMj=4^=&Hj=sU= z9Ay1sZlKYvt#H~Sh7e1PyIevRgzVodK1zp=92*$EG-%#SaV6IecMze})s3U7SXgJKykUd-6! zukub9=6M@-Icg8NwO{Qd8$Grf@6aJff6J(?Cvxt{yQzzqo4FL!@p*n&o8DRE%;=@3 zn!Crk6q$PN|Lp&}yGx^L=1VN%qK1gQevz;!WnRcGmSQh^w+ho8U(-#TdNV%$v&c46 zs`bh(V$BKb<;ip0pLgm&@^5NOq$g znIb&ERLqQ3Y(;ZPP0i}@=5E}k%zN<-VZ4%(DdU=G_59K6AHlt|PC@0Yv#D1-S4u|1 zM9MpqBN$caPgUW<&R!fVFWMfRWIj(@(c39~s={ux1-qw{(Eih9Bc;*F+k90}KyXv1 zORBBdPUB|v%D$bbhM1}hZ&i62(KP(5kW@ug@M+6BgmAh?;r>RCpoxMngk9hRGuR}A{+rDt)ElL7C~oHr5b*;bDHmA8|mn?1P5#J;rdF)waoT0cbl z@aD0V9Vcif1(?ti`$cLQ2(OMe`CIe^lv8_|X^%gZna5fH_1k%AL&K%g4eih5j$tL+ zo>$?vMt+E046|U$EuNR2&dzg8mtF9RKAE^tE`(y6WFIK1#jg*kG`+T^e81UUQ{HZO z5m$v_?I5P`vHdKj?#XtT541(y>Q%Gcw2||XRK@ftFEF4du^ldM=dUY>@~fyw*C11# z)egJZ9LycaxC-b=TiEvuo64LM*Z66H%D>F*fEv3`Og(Fip1=Qj{;XjiK8o385hd`j z-zHVEZ`%?+61K|zHFi-moqyDTV%mXOiuT%koHu58!A5bW{jtI3jJ)Sa`pUB0jQjDt z>|L7^J7}t-U(Wa+8oB{ZZ|0F`p`GyWL7rBGi`9D=fyKzHp)tJ&9iH@!u{;(;DqBpO z=1gmsQ+u_3U&yY=XUzVVR3xU>s`vf!^H{bvdE0FH>Vq@!}G91t+?t_CIn1OPGN5+l{^?p_CGZmf&9dr(* zIXJ%MhMF2D^7Bgj zVmL%+qn#x(KB;ml;Z2si>D(jtO%-1}T{GC$D2X>aFP4$~CT4-{LE9&;LBb@)aD@-$ zB&H^RS}n;(LZatJ6^$0AKpVO9kS|D3crRg2E^zEMdUvxNKCrZa4XrZD3nlHvF@Uye zd1H1CLkLFV?p3$lzMaJwD>fRaARy$pf3em!fv;?DE3Ce&ySV#h0{9&sV*_D1q!}S}(m5 z<1EYb5$z5x7fZsP;%nJUz2f_0*`pLUW{k73J0GmD8BH5`k#{uU8e2&#j=3<|5*$f_;Pg>~*Ao?FSHOANV5OSh3{LD4mc0!zD>PzP7 z&g!(aFm$bOUfOy{O!C{z(a(1o%uf8(xYaL>vQR}WO99H|s5#)syXm1SgBLQxC5~Dw zuWB79BYf5>9&@ZR?yHsLz`eoPkeBKP7dpB>W`BZ{N>eiQ+Fug$Y9Gs&dryx=N~^w( zXlA}T&pY;O`U1DX4Ytxb1e4$OUX^Q+RW|P;q?gap$8`RjcER4`8(F)KsZTMGUvLaP zQJk=#wTdEqj!KVPzgfUpQR?w)cxp3t+I2bRQ&7r@NReEXM_*kC^;1J+VL~@8Prlnh z(UrQ)weHr~$_H}pBfMk`mky(u#@)x>o>wo@hgBn0p`Gfk(c0&%dWEJhQ_o{q-}2!@ z0qd&Wr5>4@CnZB&W=Og`waA!w=cg^v`IaTjcs{DY$N4_ZeJlzJ^%acX0xx_dB|Kd( ztBtPJ_ueag;oV6yve&@vig9_v(i@OD%9<ce?moCU+Op5kJw#v3^BT;uRUqf%>*@;E1yLIHLh5ane zLb6JlFFxQOnl9cD@>1JVBBVxJO3Zlu=nGZt&h=jFZ?#AWFMRX$jB=oKP4d;-wwnr7 zuT6t9haa%S>|LlA2gs+}N2T_{(Fpm|fO%VEj} zaS#4H_+W380Y}my>2|R+@o%dx|D^jp*u@m zTq zEH+gab4&6(DOB;e;krOoPPEJDm1oXv2VFcyN&#U5PG9D4_zj5_1z7Z#55^^A&8gtS zTK2n+v}#6H8J4s82B5V^4xDx(C(nC?t)XXFy4v&SMkfNWuQ&y+C%ERQ5A}1$<5sm+ z%@G?(IJi9kyHut_#r`7HyAi zsP0?qxltXK)``4);Jtj7A@q(%_Lu=55rM0j+IE+Wk+^E&-25Hwv6`vZbt-Q()2*Y% zrbm51(1G<27m%Z|_`I(hxk+EVUDPnzUx}1f&b`>wr&R25j)Cr6PbG@3eXz0_`JfpY z7C_@|Q}3r1tp9Xbua6iTW3OdF_UJRgFechNM(mQ6t$|uw3{K?A)vQ&-@IC5(^X7Qu=O{E1y^la6<>LQ|_B@(egEoIPcLb9Uj5 zE?o-8uN`>FRg#Yl9nC8ZXx>=oi5p*Vzf=-WMK4a~E7dEMwRJkZRm&icQJ{HS<+-YL zpr~X(tV#5HoN#J;jAaaGjnzv}9nWqHW;|s%C$EqKQ}H53Ae&iwu_v#Y`v=*mPJ>u@ z4bj`>@{aOe=HTYlp6iMS(`r&)&bO(xYNS5Jj42x@{v2A%IO~ttkRw_P0RYJx`9H=X^o!;H)P|?g}b{XEZT_&1Y(yV?x zDsOvmS13(w^efu5Z8tfLM{jg(`9o%SAtC(Y9lg=Liv@@vWglBV_R5{4)Q*uis0wM8 zj1DgivF2i`;UoHctQ-RyL^NM;jW||2OqkY%H!>jsHhSXt-+7;AtZ`*4ugP2#_EN_a zMh|~ZFk-D%HCl4zE^k}ziCEq1#q0N+L7UClTE#O=tM_TNe7ok-%#IZm>&~W8)1VLZ z$kldP-t3Lc3P~0(zxz@_q?s+e{Ntw@TeQ90jE&Znj2ufnvM8qHMZF*U?~m2s&kC(O zbAPU$o|Ba~_`A96iJyqd+SXc$!*$06D{MrLeev8rdY8;9bwU4E(LT{?LjSegp{lvp zWU|Y|mKvV8wn*}LT(c_a?o$ACNTisMoS;HZHLdGj$J*h}7%?|<@1f-J33VKW430N_ z>Eo~yqWl)OMvhHK{OY{Hi{K&7a$)`q5ixN4r#-dpuh7V4ZyckIP~yotpl;VvE$5xt z+QUbti@2l>Q|}+eN9L9-e~=to%jOQ_epCP5>M4+pLf(f;yf=1p4m=f(Dm%pt^qm$M z_IAS#HbqX{U};geQ_Fhoa7WFtzsAlg35CeY>4XkzxVkKHP%i<6_*<(B;=T`DZsYSn#q)eYHD7o|1w6MB9hOy6GE=#(w>-lkx7$$^mV5|e!Im@$FWy7D zv%Iw#s6S=wcJKP5wirgSnq__!PJitivbb7N5iIxNj`*PGhp z_J!CQSNy?_B5NaV2Up{z#Sl02RVb?Sd+N_C=&USjYFuogGqK~~ZHrX`zluh1?})s+ zVXv5t2Rp~e`VUEBKSyt$aEWDQ^;)}un9G<=3hTYmzG{`%Z2f%{89D7*b&Og_L^@4g z5%XU;ta=AU0k+k`(qF68d=fu??3{0ESr%UN4m^iFyRD^j1`v$5{6@+>|H|M#Di&mn=p{(#cUr_P5Q2xQZi#Kwqpji{ zAJ2*rw>fM6!87j_a6`T$-DWLLlQR(=m#{At)@^)|7uCeN>jNFrI|^Nz9A`Xxs5STg zQk1daoyfbS?Cg%;yqCD|*%#c33s`mmrOZtipVG(HmFD9Unu1=$Rh1*Ut&U%c>tZ*5 za@eHYD^#=DY};ihVA)Y+e#4g4a}3Cq`38TtF>@97rz^gS)P6Eg4>U%of8v{UzaCz8 zNejyg0j`n7Psmk^<-LUpgE&5Mt<|u_VTi3d$bI)Xr5~->izjtM(~6gzsWvNNf%^aI25EriV4l!2IZtZ7QKi&(lB@V53)gIh+Dt~i>kJsfa;$TX$V}|Fa zS$d3{!-ANt&!brn`%F|sqG|bNgnmsi-6!eyJgIk9mdwqbz__2d5$7Df|3sqe`S+fjOEK2DO|)cTd85W^x!+R)h=Fax zC7zKD-22X9JFedS*m{85vn{8m zIy2^+Kf31aX!V{gmd&0ox6;eycnBgs2C;8-uv6&V(UIja^k}LPvmaHt`l@Ku?M1fT zf~&fnSX9x1nc86Q-zx5793CH266A;54Mqjl+vm=;rbWLAI>6WPv2uJ1E5OWnE^m)$ ze0q0`R?Ht+{K8}yZOgFUC268Ix-sgsXN_T(e{PU}lW7k3v2k`*g`$8nLBvk;n2$GZ zi*7g_&HX9T%)hm*^*Me;T)6Krmity1LQ6W#6Ga=Q3e2dJH^1^{BvZhHHmY5o>(vw6 zkNfBXjcNsj9riqN0liM499D zonE~xY{;FEDz7ZMzw)%SH=Zr84w5bUe_x)LR(h0~9DXt4s=rR*S_}_J_+3J6gX^wiNY6HY?sc~>j?#7vsJuuZxQKa7 zEv7)whVHbG zEza|z*XWuJ)_J64JfjB)4OulAMue%eqv5DR%;>j!?-SoC| zKpVzX$(p%&l2LPvC6sB-ownAB`+qq5%dn`zt_>K*07Oa!L|TzfrF%$`Zjl&}?vkNX zDQS?B?kAOGx8Ducb(H_S((^nyy z2->CT^tLoJU#rGopIoj2EmE%v|^*%=rMQxft}H|LilAzxyB^{ghNQB&2d1iKuL;@08;<01yxXY_?mvfZWu%Ydc?&oYAGIkb@MeVW- z&@Wdue_(i9s8PU!^2iM%N9W6%WVM^8T#lawsueM7!f4%FhI04be*%Nyf>A`(E@t~~ z3BNcIv*vDcXBpHv5UJK*r%+#C6WSvX@@H|a* z?eX!kyZr~Q(j5lZk%FA#GXZ2+UI(3R%Ec(h?>^$+>rXP#+qd2DF~-w`7wU6%cW>n4 z?l0nygK{u{Qv=?(MO^qw&$Z+1_NaoUe#1+Yc7J;3%=1(vvKd=+cHz%QZS|ic(=?Sa z65SMlXn?O&GIzS=AsBETY(O3yAJ9mhx65BohkuZC|7jx@bmg~ybz7Sql0DG)af*_wsI|H0K`@!*y^eaFh{sy@>3K- zikMB*Qa#9FH49{AKAiPGLiqLZUL2g**;R}-BBHuA&zdkE!t5w?!ZBRzH zDZGI$@!uh^zE)n=&S0EY-tp9&D1A+jvCq z9zTvO5xq>N>@`-O;K!@(`1mX7tWF2h*)k;QSzqv7gog-o6W5sU#awMg0itBRNlN>a z@?S3C!w6xu3v|h>2UF`oeyBn1NB4W%aP5Fgh}46HjD@UhDhb+x@5ipTw6s*JnNwFM z`9*V4{MA9#wg(F1{(ax&-3AxK#)aQ8qIPe8?qCnT=VWE&>7!E?@om`Oi+KD)ZGWkZ z`%GbW<#D$0WXiV2k1`cXQa;mACW+UptvC07z1wd4TsfH(doabg=ew~Rw*@I2wvl+74)vmG$0fy zwn_ybQ0*I-&p+|Uo6ocR+=7+OP3$cCsA)m6Hs51!F6uf|MF|l*5qHRH)&Jn@>*DO~ zlZAF))v}4A<)c@0VZ|;mO2ua?Ze(j?qv7PE#n8+PUFZF`J)AOgf42OP4{)O*f4Fmj z9wg$*KO_Vti09Q{hhhqo`)*TA1Pqm9edkCN|Kd6d@5Tre5C)W#~sIFI5oW=l-` zx>){3L5@vCt){`9sXt~6v==2HSzohTv$^1!cXQboBT>Hct3< zwc2XTEJ;b5T)J|W3yk@XO!41rA2mC8!xq@??nZmRu>@9e+h8)tvz2OxOY@=aMq~ZT z`uNv5$}S)!r@`i;mp*dNc4|o(AN36VBv zO*?j7yRo<@7?y zvtOmxQeJu8);a9&pso9)%tuT>x#s*y}Q_bwx-wf zigy9_<73h;To_ChF!d37uC(1pN7l-+7Axd0$JKmEyR1*%c<*~zx#L$EBg4KuaFwLWwD1l@gxB%h?qe5={> zl+TkVld?1~fz?-`?I>FOf*Sd;P+%tc2yY%`$i8-4q_I^jIcdt}iAqei+R0cQl3CDM4_i&d)>cXZlyEqsMX@LqG*_;*nd} zusPq14ojD*J>+1rA9ZlZChm9g#RK{kd{w>tK82dEKZunhhfeYF3ImT`r`HAIv4^M; zsqlB~U$IE*v;49+i|Frc)8}t5GH@EshI*%os|jDBi*H(d1;@FympVHB;&lmYp5+JK zJAGQ=&oJr}F=6HEioWX|DTtaqdSwCmEN>*$DdNqsYc@@s!sA=_0kqT0huSPBZuvMi z#wzAlb-PXieSC0gT>|@1;vjNWt8+a(N!HO`_$Zd@vZL@gFm8&nvJ}&&0=3bli!bPv+^&5T{?{N(vq6^-PL>>M#S z4srTB3XdUH*tiat){T?3AoAH~4|e%hX?sWOa>c8SjFGLdR}cT+OX~XOWpHL;l%it$ zfCPspIvI4eRBf`Z77l@lSGBiR(sC0Y$R=rXPu(G4b?Zxd4gA^~C5CjGveaA36Fs-j zOw@b+mdi(sSvTUdNbjAf@G}lMrJYyt;wNbrp9CLNaA9nyL~njG2_kBxOAiq%`ff<_ z)bxFtnxmRPV7g0q=sx?98`;qIU&>sVkDO?W#wCrbBdSc4KL7qTb!9|DV!_=Ts_rr; z8+d)uUW*mb2$qBHz_5z&F%9p63q?(sb#n_^Bg3ZReDKcNv7*%QR6xc0J5H#Yh*pME z1>3L3Xkqu=NBwhZ!HfK{o1!i2sbi&L#_fv=b{_dJ_#fw=W>ww2l}!iLKI2V8wS-%iEHVI znGn#r#XBI}hByL&uWGO^HJ=)(0eKaD_5S~YA4y4Qy!T}K@$V)X9`xsz6nxLZLia&)#9;|8mB-jhQlYiABW3oY~>{rH+ppGB2)c>E1l^ zw{mIw?a!Vcl=>S-XM?xoRAv5rqk-TMyYa>-IN#hG2)Hquo**9X%w;-{GWapu-8|i? zM*9^`H(F(W=S#z!=Mqg8VWK6w z!Bu2B8VUon!h2)%Q{_rEbskt`c zuS*LNZ2}W7?FR34Ni3;N$7U^Wg3;uzbRyDD+!g*~?F#YFYnO9TMb}To);?}&wN+k^ zhw%7L>4I9-d*^ypi@`(nDR^G*3k2L)PSUT>BFjQPOY1Jt$F%)EdSz#q(A*E#k{inj zuTmqR7|do z-|zed9cDLbshw1IRKfJteddC^A=B2iAEWpS*M?{%ib;BTj*OCa=efZt*afl974oGd zxIA13e$4dgPhmU!V|c%$qj1JNf< zx|Cq34*pIDPZE=F#7U|B242c>cv?q`+hiffO9smk70p)`?qvKYkFyp;qLtv8)0?24 z2EtX%^!S0bk>UuJ~`}Vi%27}ek1qhU!5+KvHUk-3s32A(IvYn|OH#tc527h?gIz&b6_d#id$zMDC zhkw?j>t^owtNgv~q38wOG_=4-xX!ZXSuZnRZj1_kwr8kN$L%)khu@>j#BXM!7pI15 zb5a{o_?cU>%8eb5XtG(;T|J%b_CcTt46bEtZt!&+^ZUa1&YuWv)OP;t%|lShz?8m4 zU8Da(d2*{2KP3>STDNHo;qqy1?@14OSsINLdwpcx4Vfm^ z0t+*$@Z~=J^+~?2IX|W&@k-yR+#k|FK*v8F%k}0_Wk=GgOBKy&Z-#&5l*Jq6Wwtx} zcB7`e1m`2)vs^2k>CU<5a$U9}SwcC=GY&liP{{XA13^1pd99bTpFh1u;T5o04G(VtBS-jy1vZcD5U0cklOo?c>>=typ))t_E!c@j6|a}guUoiDB;@;&E0 zQ}a`=fQJPvLex|U4*}Mg{MiMTekR`=^F4dDfFYBylQ9=&`BCUsCN_V+TCWR`FO!b* z$#PRaoaQ5hr$cZ?1JOA8BOS@8X>%U5JjY(Nzs)9)Yt=Sed+_4=cs}lFudqb7r2tvL z9SaH01jXUy+V58h4*QkHjBF|!M=1op-l>xg<_;L& z`p4M!hWt0h-Xe~fS-Il-$W9H@x#t&VfCDUhfXVRi(`*6nyhN?`bHCj)-wKBTa>L$d z2-54iBUcpd@fxVcYN<+ric6=SuwSLv{fJzw&qwguJiTB!U)uU!=d zMOrifs6!=y`LlO#rddH(LWcFhK273=rTF3SQ%Z`ONS3(aRt&PhOAVJOYwGzcg~C7i zR={=;uZ=}cXtsENLDrUdS}mekInRxWlQdHW%*+S)&riG*Niv-7*Xy$fm!zn2@}SU$ z)E`4*q)!ig-xvO(Gcvu?u0NG&XEjsp&=Y$$gSkyuhp}Su4Wwu>;q$%Rh{2p}vZS%|X0OqXFtJ>6(mr_L2%Gq{ z_FPP(0AVgFB~O0oSPjVg-v+SB0?QSJhP>yJNNZ)5H?KEa;fOS$@pM zKUB|bMC@-%TZ3r0Z*|c-U%*BbwCUbUgF#tW>}#|5dz=KpQ2I)0mE)DD1<*?6B~lRW zCP9<`z*!OayHc3Ol*Ahq< zfkV8|#tEv*Oha+u%S2YDqbfsr{#!WnwTxF*X-)E6!sbGdJgpj8XM=a*jEe+oY2T5nhFO)IF@Lftr?M8a>cdjftk@JE+ zy^|egS>L`1!)#1XbU&=MgdkF(`GE2IRl%}$d3QmKN=j*c7QD{pX5hP1R?%(Zi1V+5 zn~6N9=@i-=Er^cx_XWD#P=~=YM%d!+_CQkNmwMkhz%{J41?!TnSXIMNV=89yVrk#E zY&w*c6dGY3V=IRa+`o=%wK9;g(CANzkBHM#5&;%sl#K-4wmy6p#FxoK+& zFtWuGzltrTRf%~vEtunO`f{i!v)nbS`MqHgK2_l%+Gj&*^~;R~wom6GQEJ zop&$R7j>Qhff8Iin*STm%asE%3PdO=EKu2L-<@Z9(yisH#ZSx;q46%>C;!+Tm{th- zYpMooBPbMBRm)8XTZv~5js`J0|86pIa?Gvg)G6zxr5X(ITL`lva@0#h+Uok#0KwMH z(0lgpWOtX+YKun^{7_$Vt8Z3VP;<|*f=fVfMm^Ku>7u~SV`BM?7j}b)-%7>e@sp!4 zGL%+#!SRP(eAt=9&_A6NDt`YcFobo9tBT$3zx% zAzll1u)AjxE~+bmH4o@8)k+t;WX9xv&cIwG$XEI8xYGxuBHm1B3M58ul;2_d*zdHRAf` z2XhxI3cgUgY2ty>$PUkpDkK0I2!3Glo9p}4{ng7J17}3(_Ub)R19ZvV`uYyALgUCh zdN{{xtN3P;=K>nckH2~xZ3g}ON~2spfI zIQZ#fpHj^JtzUPZSSZmWeV2XXPyDTb?~PRnE2r=B)tVlv!k^UdSpEDq+vatV;fe2e zL_p=0=pKOI67^udhnwZBcc0p4%KryCfJ^>`=nGYdZ^^<>hA6J@G`vA~JLCfs^98Cy zMKX#@9r(l1)2Ae(w+bm8`L{RZYoje{34Cu>JHsMDUf)KGmoq20>C{?JfqDUAfA{8g zvFy1D?YSHg&9h@*FQ@!M-YPr}>G0){n8^|)aRm$0RMmG5KOgod%1Kpsc;B%PhCkA; z(10{^Y1G=@qjATPXzx?kvFF{@K1%iV5@B?Kde!xgAcWHU)f-ltH@wuwxixxdFzBlB zx2_l9u+xU|dSj?j3A@D$tQ;q4a_TVVn&q|Y=bNHi$vs~MopRZ$RPnVr(LarvG80ri z`4F$E>GIMJ;5TXo%bsQFn%F7+FCS=z9iKMWfARnTFaLr5{&h@JM|(XgUJGGAX<0wf zc@Ob=hatKQ`}(*wZUuP_BLG9};TsOObtx6yL6L%q9KEHu7yP{6RnvJ%ZTX3tLsxEkzh17aW%ulL2 z&!c2lttGsT>z_4!c&&+`^n#u1}wqWlmDrJgfDZmG?pa zNvUSN*<#%asH^dek4$x~osH`Ls8feIs%7Ed5(Gj;-kY@I(Vnzl1IwT)qw`Xv(j3QD zE36vmHJxaB-^Z2Vm7n8$n>z-R=?HcBND>k1`{8P7Ujh&3X>sP1|yDL3vM8eERhG;@#CX4{P6;ztq>2(7Thdxe$pOgblQ7};^cu>=$8}h>T+L+ zDj|y`-rQjD>5wkWv3&IdX%^gy}aDwJ6Sb-%8&TbbyJ-q_U+s-OJXva4Sd*{b))Ls<~u7|P6wfQ zeK8jakxq*858PoXcobd`uqEN6pmc+#ZlC_&ja%vuX$Lm$X}V7HhTmPwJ6s2c-6!Qz z^3y+V8y#z|D;ZnzkL8>M4}L9UKXdD3e3fq%eo~IP-CI%8J<5Jn2GaU0zficcBnl`| zlS*#q4BeJf$j9z)eRLTZL(k!1sbl!K+17L07g$jLNzL~1P&Hu#iqzTjKT!P?>-pOA z6?Rw}r5(#@0beS&@gaQ40zb48)P& z6@@R7S3Mbh>@8ZVOqNjg?VE0>Y$_!i;pWx()0&W1%56XCsGt2JHF?Y9@GUhCOH#20M%U}6te!Pe&zE=1TZ zEvTOt8j`)qfqQSG1XVr@Z+kEjhi_DNyUF>ms*CRJ?!MJ@h!c@eB1(01kPVZa`HcInf>1MZ53g`bErkOs#-T zAhRK6+MW-Vj9@?ZLKTMje2_1vJH6fwwio$^czp3<;Ip378Va0sZm47az3r8&WJyi? z*E09>_?A{Cm$tfVDUgiIxwPpxKa$AN73wzB=xuVAKWNc3stbb3K7a8JG;^9z$vv;+ zWsO3-{LQqOlA}Od!3}!f;){FX5s+PQS`ahEXst$fThWFef9rwT$P}IQ3KMa`3hBF^ zcn}7*0Upsm@~H7YM1af_$p@$M{kkB!w+>a^ISXEcv+W<{P8d9=!YLX%)JR%T;_!Or z$2-W3`__koZWF(yFb0Ywz{xeua_ajSYmBDEAB$S5>R-Dh$yfx+4|p}1vfzrJ3RYvX zOCZqM_#~*5X)Mpl#ewpP_>Jv#bz4pP_PMu&6`i2(241GOBJz*Jt&wUVoWs78T4H=b zzu~^5aqw=KQ||S@W)6NpV}rmu=>!qwr_U((%oS%hcnd#=bX%7g9&;hnrQc<~09|CI z>ENfiS4^dB%~x2u`F>bTZN$b~zfJT#GgpH*6h$bhWx<+_?3BpGVtFNZLh2}b`(*Nd zw8iRM0GUZV^DJ(+?d)|*?%vA>SUbMq+`wx4_v`=p2{iuydc%;6FQ5=rAr<;0;gRu_t=(gfHy!b15439#d?qX)>*>Zf zJFlnk^wJVvsq!KPIT})`FHw@j z&E;}|j1|Pj*#z0Z?1txtpz;)%c~PpC0tP2l(*!xh|705>+tW!bk+r7C7YRS8%BckI zwyv!&r<$LI0C}4_1|>Zs-mly7Qmc%5Tl?-vAv`Rh=l7q4%d4!+Y5NkkiIlA$NVbnw z){~)D;)nby)SkOvx0Wz(c3hq{)BDbQsq%6TyM+!&o4LgoHpBO8zshIDIm7)_c^jRK zZ4fHV(E>d<5_jw>iReqkD`M_nuQ{!ENG%{`$lD?sb^tn8z_etU9ujA-3iZBQXn_Vx zwAK^_>kScH7X?;mPG$NYHQsm4{F~bBhL5zJ~1J)z9F`IMw-K!8VtX8dbh>Z)NV>Wjd9(x z$YPVz2@&rg%SqWW0P;bs)}7*ekO>R5_XQKliItXpaq@k) zv}*Q6t+q8giAn|PCjdeEXEj(&T+nv{QFTJx{@Ee>QI3s_4;x!iPuj7uQS}w_1U_Rw zOlSVZL?HzvMKT@W_oW2?`pFdI?*R3bLpry$z&a}9?MZ+F+>-DpoxBhHm%*~ zEuVZ|FXv!GDp`_Oz0~Alx3jl`j=(s@S(nwKefFJLHTjX&JXjWALlRec$l3kp;Dpj# z{o7*g(p+@NnG__(H+!3;yl!{ zJT?X^%{`&vyNw*L`{BJQ#%taw##=V$Lv!dOTbnA9Z5Dcx`#kb*h4M}}uY9FxNx6t0 z6@|ye_u|sI8r~rVg_5rFHDAs9=Kq%qknDM@&CN5T^KTCa=HuPpfwKUK6XB+pGLxLGzjG{=j^$ckxpt-6M}*x(9N7aFozbNbSdt!x|{4)^6hX;fmT{mEh_5A=LT6e z73f-NGMY-ouM#PPXVz8*(P&$&v8Cll4*ZRzGx1a3{C>gaZ(|oNC+dIr69MS&y4?l9 zPU_C~G5&|*ceK(xD&by});P|x|8}w@xHAC4hzqcjxn@={4vc07g}{M!xNIk#sWZdJ z;Vp3wHF69qadb?otJZ0F%DB4%bPWNl)}l1ce*?(;q7$X6E#6L+n(Z$yAGBeDw;r5J zz3*hsF0@4@5M5JixhbrQdQ3Tdl%72PJ$7ib&4Z=;+;x2hl$S>-!=wL=ITMS%9NS$pkc$$j!_Rcpi&xbGNlE;eKv zh)_Vchp1s6n4SS8gQDAI0WUvmP+{6jEjJhR76^jd_|}*g$Z`BI(ldU>z%~QE#i4+G z?_z8QHWkUx6L2!1mL@0TI90PJg~X&5s#51fDVskFFKwUr7{3f`sIHjzRS|<@1q9;^ zmhAK-HYPGxf369Y#M;O!YkuD|1Ly_q`0(prhTzpK;F)k#Myp0*6J;?>Kh#e{8k|>p z+=vY9n7d6#rdh+$u{yB5Tb(+od#U+#{Xsf-dPVa*;6DdNOBf-zI^ve>*)N@%(ji-i z#a~f)4(#+r8I@5g`8FaN)i>MB-cQpS6c}E;R?A5;tKzg9URYfXDlAFB8Iv8%3IKPc z0BtMa#8jf`b75tu4<~f`HNFKt`q>}+BG+ZKY477kS)J#)oi`DQF>0_pz*T+JM_KtO z)^2!7k#SBvS*aXmL}1^rC2j{^W`F5ZAzS5~VMfO|D#JYJtChCPW^EkDqJ1y*^#fcL z?ai!PqSp7QyMIN)oklyU_W z)APKt9xDJ+(9gK1J*IeKF~1ThMKa(1{^pwugoBXQuP;zZWkGjd83*Qp z*yCD$5axJY6!FcoI2G7-SGPioN72&q0uDWIE6_hnqZIS*Q~coXS=6i^Trg_%uL<@- zTeERi@~KESh`dc#C;+06h=kUv)tEzx(i@-^Iq1div#_01sI1b#2R{oFK(acHdtW=| z^qq%^|E0qVv_8V{9TVv|5fz_#1e486KMxVr337lr%ICDJV!yal)zmxeTSs6B0bR!iv0fVkB5Yb6_F3}@uo>V4CvjIX~ zGMm{t*ss9CZ`{btBA4%Fa63<>1JGpzHyL^sSy8D{(FH&zvRAUBlqTfvGEA@{x_lLy zyj+y&MB^697T)oNNWKbRlU1jf!1DZUImYq>ev)!Kr~XO9WK7OQD*_MPHdz##lmC#0 zt0ZFw|AG%?Adh=5cF<#wMXHYC^=7VyZ<;Q1!Q&*Y!ai-Cy*f8phSBC=E?6{=dk2 z{p8_TX1)qlmdk<mEWd#rLdZpd0nZ*lxaFU-x^yLLUK* zr~xgtRB?PvY+0VxuLH~gf)y@bRqXA1oHSZunjufpFlS%5EUw#pNZ2@=G#-jmN8|?4*EE7r5QFt_ z(d~o7aMz*XGf_iF`(kI#t6lQM{Um{y2GzTTMt+oG_adOZIS%cWS6WUsu=5~fiVQCz z%u>=ImRToLSEqOg^Osv2b}Y!ZGl>VSe%}{dgMuRg|Be`ZQM>UZxu)X5sRiy;FdJ8< z+XKI{y7c9OaBDdOY2E|~e^G3WbkcK*)3@1MU&_P@D-{2D(;A-2b#b9-*P zyZIKS+$)+yT}skESrh6V>^oCPktkB_D_cG^7-uH7038QK+}FFe&%9NO;_$p_=ot?9 z`MLnVyM5i_hb*m!#uQ#kngM0W3#-Lz$G#F0>gBxKVqNh{zQ(BOZr`sGKeez_u-^i2 ze|@BRu$29y$h{FCG>*uyt9R)}d6sUd9IQfLk{QdUu^oBI0UmE(Bx>ru*b-L)|0T=7B*3n+d%|9Hgm6i6$APf#Ad zeD;Ic*iP_0QepJPVy>1}mG=k4v(iZ~1V9%FAM1X<7MfyIPjUVV4NjmfR~j2N-Lnx? z?=QXUy0hqF8p_4Yc+m>+AtEp#YQpkm+QP$)X;F;E5=L!%T8*QC<;FLK`|5lSII#zz z7(16ZnV70MYTwnz?n3d*M((ZO;J`V8-V zrB~8C2PM0sqe|_UpqgUO`6stssAkkd)G7zflfR6tfko`Lx7pp<;`91H*-x@YXLCPiP$6o%wJ3{Rc5y#xC-ib!-0_YNMXqRkEixNzV*H2Z zve}6V+{##WsxP5CK|YzF6s9*v6TN^?vdPzBc}5JV=R2(O2cI0G-HZT^eSM_0p3w;x zyn#*L?|wl@WHsyNfN3|Q`%w0{h)@eBm`&K-pVJ`y1AH@*x!pf6QSa7T(l zdaP|L3Q0bv_e+xdOpo`UF7)39+KND){!pbXoyd<;bQiHHpt}qmc9>SzQ~#k=I70@$ zQu`-x%zPw(UPpImY>ryijGcKo45$Otl$ZLC8!I_xD>$Z}jps{|TVXSBaB7ao@$&Zv z)%ORLO!UvbVvaTqYfbFscQjUjT>-!U8m6N4?ym(LqXM^s31^8-Rb9mcH~&h@v-=lX z4-yUVOX`7pe;Xm0;WkZ{!8wZ%U!R$+bu6BiE_NVXNY>(zE>`~YIz}h>ofZ59fKgNE z6OxmtstIQB8TB+ap-wk+&5tMPL*@^abe$p_(eX;XJF?6yjmIQF{6Mmnh%vC4U)FSP zV{(IDclR%7;na5Rc!|rD5%pzZ5&+`0D4p2e5#AW1ip`pw2l>VC)RMw1;Ap_5g?nt% zt3JKpV-v)CaHm~FSi11@uQoVOm6lq}{JSB^kI(x`Esp6c^9L2Uklb01G6GC*4@*2A z?c02p-sS5xbi|<$+q8C1i3q%PJ9|qU^D9Opw9z8qT`}Y%+h8lw?E1x!grXX)g-lT> zo15?R{nzt#CJ$(hTQTFpq38CU8j{!FejXL;MMJL%BMFm2PSr$kCm9HVcYV@+RVgw=?W}rX>M4@ouen^Sn{BtoDJ2+>SJ-2x>$9|y3pdLp1{ds3FAfyb z{Rs+7AQoR^Nk#;viM`Vm^Cw|z8R zQeM*G4xQNNNAJs%{oXaVnmtl{YJQ#%Di8V5Zi5oJ7SGG0;f&Nw+TXQC{&mhhMjm!6?8H2f?V`^_u_VOFv3I2voSn&|mw!1Zh9ce#79#Y`)iCke>It>lYyRqPsCVH-{}2wWJjQZWZ#r z6KUhPIobqpw5xq536Hz`Y?Br>c~P42UTWibaQm+}7pakdnNsJY;we1*lu@(+a5SMo zaya({;26>AE1^|R83wCSB7h7oNm-~7l2NTnD~po0ic%5P-R|%!_oQUPCs1iaaEd79 zDqRyAU``>C*|PL19cMI3W-23EzsRyhiy+E~aK;k%9zH@4XKsoV_Q&@c4^3`IbfbVMQ{icpt4bXQSg=V47>tes znn#V+uG1jxRu!zGhf`N;G^Hk5qYBNt!V%p0YS6ONa%LLxm~@|5@g2V16Qi~m&7g+r z=g(4IV8x`Ia>Hr5Ksa?-hvtzK1I`Y?gO56gBl}wbKcDcyhM+sGlQREI@ABNiS0Yp5 z2n%YtDag;>ZkpxhnqqY)2Kk3`?SrVrjxW1##=t^E9$xwC*M|SGr%vA`mh8#wUx$L>XJ z#{75DyuftL@d!p#lHW~~=blbaL8zKork5P-{n|)-5FRj4%x8b90M@P%yio<%3D_5i z&k~m{7B3jlB29jON)oCz5Vd}4_8rgkq>VRrw*d^PqQT?G;J?&8Vc3hx$Vsg)Z#T=* zkRIM^S!F7YmA5PM?{cbhos06mY3bWQG`7l+zuKd48F&Kz!!>iSF8vU1V1Q;@%TYDu zlMPHj`}sH-EBJ1t0k>e{@`UbNs-N568uF9w$=kk$$v3zF9?cgT*IkCj>wyMeZczRSz zJmT28rf5T<6PtLvsPP412x>_OgW_Jh1?*47@Iw)@2H-YItdjX@rJbT^) zL`bPYec)ACX`B8hlyS9>XXU(lRrpv;Mkf1INoR z2bf0pJ>vKnUBXV>$R94bW=BONl`nIHw#qEBBczx~(&ow90~*n0ePnN?@%7ZS-?BnJ zWS{JHuU!$;)CnZ}qd|>+A|C2MG(iFNSj>sEw^x8MC z4HJ!1-9`L7;5MfXH7{c@##>%^IoNA2E&qFUU%1quZcvxYyXAC{nL3~y;n55{yjC&x zgGC>&Yh{y~$!XIb!2yn&!u;e`nk1qyZ@^qp94#I4#&%1L>2%Sp&+p9#rE%Pgv|yjt zrm7v?GjP~LH9W8Oy>P#s$kV55oiQ9Z;MK5;h+NLfw&U#iYoislBUM^T8V|T1sXEV1 zwDA={ux?#i50%2$U#|iA4WLlprARDvMAmPVGaC>&7Dp@TmMymPw59!!SOAe@w@Vw? zC@STvwl2E#&+_j3P;a)9PTgI|?aZGT8;?!1raj8`j!6l!m5+G_mLv=M>B2lIJLfSf zQZzc`pWSN;ecl-?ky(%?saCyGJWrXc`ImS;Q3x5V!~;+Rt)M3W<5DvM_iO(60P&Bx z4{U#Q4?@n5GFYCfP4Ykbpa*lQ5*fD5#gwe`h`@Uyh=o<+gNwOnGJBREQQA7?+EkP~ z6DT&#^Di5ONOS}FFbLA#Cil#OCAYIlguaaNgb_J&w>MiLO_ABT@ZtkEW&og!dE3s; z$@rcMIg6cC>^2fpQwcTcu-Co+&Zd(qJsL=_va25b#$0`Pz-duJgDim(uq)kiuja|~ z9Ne%W@2WkQtpJCMBfLKC?4`r}8+g4%w9*6ivYXwdv)M5k?OMpZls!|v(WBbL)tbF; zJLWYgX^Q95xBH8-B|6qCGORcW1BNNF5@*+d!>za@x7vyF=+9k+4+zF!nQlON49v?q zADbW(aBmQMlgPwI-i)AYa2e!Dh|79N^kVzEL=R>du+x@tj_M3cf<43$+GCa4UmmQl z+j;DMBvtn{tOawB_X~T}hpw`u*7w)o#cl3F{>bw_NBcy|6al+6mUj_9WzOZV#cpYL z)5wgycgH6Nt(C^~N|c&fnRcIz0KhV1Jr*jvB;pf0YC^Id9OHxx2y)A+ukU~Pa8p(H zEaQg(B@H(&ZSpYOqBp;$cu8`S(HOMZFv;MOF9aT-SMiylWLqLQd4D9{QKz;48TOQM zyZ#I@$SZ@E?}~0_nq!s}Q<`is zcgX?9#rNI_!*G_Mw=}KkPvKy-1tg31?W3`#D-W24!d0dLWGI(iW~erXno)!uu-<>j zZ`W@s*}MJoVctVCRli(?W@}T<*T`Ufh{!lOmdoz*&T0RIZT4$B)Lh4Zj&XX(pK-Zp z1B|J-QkgYXQ~qH7vq*g+`^Plm2~|DCOULfrd5!5F7}pf}fy1C{DP=gAD1#a*7z zhJBG@ur9Lvp6l>2w_=B1@)<`BIJBxyMa>pKbh`(H<{N(bFEFrbZ23*1uR%x z(b}6{RopCa);*!c44%%rHWr4@q9RX15RkH*N6|H52!Wuo5lN>C`x2SGa`TXuy6q0vQdF8(t_h7(W}vNWh2->Arao z%rp&H6~M$ls!B>85@kqsq(jc+%BBueeZR>m+<=yB`{#UTmt)RTqwKAjqE_8%*S1A^4V%ltN7q+M?dOb4 zd(AO7+@rm$G)1Skap&W==}^udIiG1fy|51vYgcwqFu3w+zkE<8GY;9Okym?pV98JM zy~;PaJ^*=M&7I4tc!kIYbWp(l1oguXn40;k>z?LrFYHKGmT!uI{fBuVe+4iPGCFF; zQAxP+$9O0+Lx}7&iY_!7lr-_U%%OPsSYTRp$2P$3VCI@LfX~5r)xFQG{)vwl;&?h< zHg|(evG=B#dJY#HuHe$9Q+be`y;Jbk`jEjJdb#MFTlpkYO=Kyp%$`{B(gBgxS1$$m zvZMuzrn!9wWUhG$J%NC8DVQT@j7OSY_ppTn2}9dXH#YetHy4hN!I!=iHpdJQWKNGA z)A(vFYu3T`7qiZ9d`Vx|q>sxS8V-R;R%pjcO_w)$hJyDG(oW{*onT3Qi`2k)5^l#Q zp|!;c87r&36MBX~NhMIlkx|Ue2TKy=V$E8Z^f1Y4c8Ifvv>+B56X_RM4V8q#j}xC9 zT_uXl;pU$>Gw^9&wa49$6b%1H8?)WZ@if%2EZ})?lWrO zc)L|k$vHK49RYX#l}0JC<$qt}_Iv|5Vkn+Je!T6a!DDW6o=!UOBo z0}3$Q9p<;Z-|{iUJAMjW*k@ToTIaz@7AKy(D;E*hH`D^+1Ru6)dGzd_mmepFo=7f| zl#w^%j1`H*p3y((KTIV!PRQI58jOn%`Y$75uPD%lNJipkxF1559l13)WV1Ba1;I^J!&Av}Bw!bjh?txjh!kGdIt z50i(?Fvo0d+^sh+zE`b)S_&#PjA}m&iR88TVls5%L2fKh`(oDy#yfp=_h=3c&Y}tb zzr`|Z&vla@mZ_o4JUmPzGJoOvzp%=A%meuh_^hjp1^#Gy?nnildBE;nAgwwX-7+&4 z@>~lXa><+KdE^VF?`+-Oi_M?52K;@im#!$Chw=qWm-BF3wa*TcoKC2N#r-T(7msOK zuG^e9x!X^;)#9=58eQwDXG^F(cu+X{wA8sO6w*jVvXrNM5Vj8CK+wiK28RUN>C8KM z;$9%8TR}R9GK=d6Jo*ftJBh$8Y=#$RTJ44dj2Q~{1i*EI()snN z`6bsc1Wbsg%>Y?Zv&tt#m6gUWL?9@p>OH$OeG(0FdwlAn1An?T;oyJDVZZT0wY`<= zEdbdRn=tK(fC~}GhJePSOqQt@CJPR&B_Fjv>-M3+^+gH^=0@QHZq6lW2;gwWPY1fj zH$5w7^iA{YdkI!h9lVRKNO4){nVE&ps?a`@L(U;I-n#8h{^dTH-Rsoojr2>~u@`FRdyn@YKFTX&s-fxVmSSpT4{^{OU%eP{kqHB!EZQ-;3 zhrPFqit>HChE+sF6qHm_K~h3OngKz&8A?I~q)WO(rIC`(p+~wyQt7UtQ+kGuq3b#Q z#s9w7dY<*H^}g%=@P2q_;WwNauIs#x*vH=c5Z$Y$ZuQKKsFWO?E8|Ss36GeaUzv>L zb#NcbT`Ixjmce>FrBOyL*gsRMfd6MmuN3$GyDTrV&Jo+t==C;&gwm-r9$}q^PPnH6 zbOWPx4n!#|5u=)Jfo~+#cl7F#)koA`jl48pgGKy^&2JBNAFH(oqiOJ?jEvD4tnsu?` z7)I+Ao!IoPJHqiPB;#&`Iudo4JSOv-PPyLRDjt5pB>qoMIz+s_Yel!CF|B{0L|U%yq{-8DqPDpQk~9Ye;qNqO^gSwRO1;x1;r8-!)I}*gSvCb40)GXKK&3e3Q$X3^ zn(MRe`6O>WY~rV~u)!YtfC#gGW3HXWTm5PeTi!QJh;jc!Hkp`U$2g*{PBi!9F@o*r zCyjHpeGq3TF2!NRW;uONcOb7Dmno8~+a#%~*z}=WDITRQv(exMDPAG@D%NT{=^SPi zo!NUpIA}X<&!euDYpbojt}P^CoN~V^#V+n8$NfukD|hW^vJmw8@lkmP>xHj8e@p4R z=N2|qGoJsseK!&{9+BJdkth@CYHY5lkFgh4+zJrOia;GUf*vNyvzeW^YF&9_(d6 zKbb2OXPi#o+I`S zxXFl!?H$Tvp?7%#Me ziPlOJ&Vf2kQ-RU-cFGR1plM0ZPOco~Q$oWpEwublPfX#|+n^|Zy>-ZLSUIrnyBh1Z z`ceW$&!4XFJy=GiJ&WTS2Z**y-@Vb`N(guO3xn1hQN%EXh?Ikv^VFgOA(p_W<~MrelOltegL*r<_x|K+8&oW zn`3;8U9OXPorgI+D1yCQZOf3=R++Onf~h_<0g-8JxOdH6-bjKFML#q>A&hDg&o=$ zuKSW$B)+KT$~2%Jbj;2xl{L{izmWHphxDMvg)J9RcFr13+IHM1zxHxftdCQXC{f4G z?+IK(HJ&TazBIjMVc|lJHj&aK`VEWCDHeUX}#Q@^;%U7Rx*xEHfK^?{1bG5cjDPc8+1OO*; znQ3A16ys_qE=%@0yub0gzw*UoCU2*tIJEv;U`uUU!{$P z;P0qB7meh;k5{c)+n(<+n518uLj&IQCDJqhXodoN2^$zY&$w*X@FrFh4$LF=@$jUt zfQR8gts%0|RiGza5rPC9}u6j+)LLwwC?hfk2A*4d>>~l`3o4_@u#n3dbfv>{$D{u&{~3 znwGlkp2Y97h(vh(M5(RV223+$ zKAde)1y08~wP(pv*;Hvo4&lkvF?cDIM&+0w7c09gJ z9v7?}Y1{iN=u=8OMW^RwQ)&4sgaT~z6a>%ftKkY~3VAT^(VUraCnsZ2TFCk){JU#@ zadmF%2osE|{>U!9E`2sjy8v%yQ>aH{r0Cu6nh$Mk#RnEY!O$!Nm_3-NxTH8Cv@1|s zIDq4AZfXP>o|%i1?taB)suD1i9-|SQ%x}r9PNc?MW^-184bPrEN?pRcshe>ZvU-B9 zgQQyP7usiFN5N|D zQV}TE{S^6WKD3si=^MuZ6(>1Xu3;5(ZEbs6>Evp*2*c>*`IFW7UUvw=HKUo0O0?}- z2Y0|5#^WEdZT{G*jDW_&da10N(2tkfoFz@sEvZtLC=dK*kVllwWw3Y3Z=U-qCKJR9 z8FwDMkPm(3AAC#AfrE-LMC0npu#(slEi%Po1Eq_1yL_R_$fZjBouKUGC53-?#y2)9 z6G|@2(L)) zS*P{dDw0O?O^+iWpEKHlY?0bn=L5r}jUubB@oR@O4fGxcL~y9AX|{R*)BrLtdQ@2l zN-?=+d4MeXXq0;KIsQYqj(Gpr{&hnqkb=;c9+FFgc5Xo05^L~wsSg#v5{6EBGp z$aBFgnrmBUba3u_6Obx-X{I^2oM=x2MGbIQaJUb@HCA?5{Lz=+E4H>aT=@Tdx zYah_S^njyDE>QFU?su>r7&MUOhxCQM>P8ZZf7HH~y09kF07ETG$BVX>xrqX{Nj8N4 z?mN!{2~Xh05<($j@9-dg_}ce?DlN11Cp|Hlg-mX9t~9yGf`HIejYX(Uaref46$tQc zUdiMyoqjJ}JMzA3Slr0K+ji6`GgwG+z+^D!o=nd)8HSY>4QuLV-3?KbXg#R=cptL0 zJ@5UO(kg8L1!qZ<26Lz__f5+@0gm&aSXDv8EN0`KFXf5OMFw6pi&KmhU9!?*P_O#dVPVOe#CaLX{i;Yy9i1?kWM4X|pY)_?c~GJ~4o16%NI< z{5hEOO7}S1+bO)MTnvif=@V9WbblrBPZ?c{*WVh?;J{g%Kn7b7@sc7WwV9CC2uX;FhJZPEcx!!YN zMd|-NhakKeZ)dHV6S0~Ged=kp{VT3$gkD8% zjb6G-zJlo&L*ennmy*ePhtucin~BGTa6GZSV4-NaPQo+%S3KJ~@>ov*FQrZ+ztifMaKwfj+#RE>ZO^mma$UbTJ4z*HuvYKL0Tg5)iYqw_4^OyOPSZTO(#`QV zPgF=fuHfJ(wQB5>2=FVT(p#nAFogyv*-6GZAtmPrA-y?0aiyzGUSdP=@WHv)(%E$E zN$`Q_V+xPc#4?*yJ5Pz8Pkj{|?B_PEGScq08A>(cfq9{oD~pd~t_*kDB?J8pS7(^# z++UB691DA?qj(e#w4WeD1{VVV)q@^6*yyZ)v>BtD-zB2q1g3`_*_VpFRx|54oDcHc zDE7N{K8CFJy|pz}$ZE-lsrQZs+-e?-Pcx&mJLrO~=cFh^ zhy=vnd@iL{)Tp0V#Gq1srAibd2b0NDN-*#F&LIN}J=H=pj?*T43(Idd9=nK{;cj4N zO+A$#e(L)1&BiDBl(TM?81({Hdc9-2)@4pcnY70thmU}d7k`J+)Xt|EAT2}=xYaQG zJ628{%RSk?6(pJ)EU(dFqSYs1ZTmHTNl1RDml7eqHgWbx1ST;ifbM0Te+6bVf53M6P1oJ$o(q(0vQB%vGlpb-_-gvJ zvRNE}!raIOKPJ4IyYuH@@#8uMHHO_Q1k8|b4?xS_S*e0|Edv&S!;CdwP0TTkhbG~3 zs8w)PW1nT#MhL~cw>y2_!r;{lydVzcr|+N!-jh&gLDnJU|W$ zI7oUxBbJu={WIS(raS!|0KZbYTv$300#6nLtM!Ol$0l%SX})BJL2o>`B7Suc+$u|% z9b`3*yVdFV=mt_)DeeYuSu%zx&_Ey`T~^?k`mhEj+dgX&E&cR*Nq#u z!AD~M_mAwX-ypD^pf!{?16HBbw8>@R#`s zH_?z>o(4v!8TlH>tGc5!hAKBjU_Q0Jur$^`a>zk?Ah+SYuRHXP-;8T48Vs{Fs*l#f zzA6q|!~nVDZlGc16B?p)Ae1dBtr}5EL{wPFgKT|xk?;|?pdrIQU87{}nfoe%K;zC; zI@=t*T3&+C*vlu~c3?4h{=2Je-H@#7NnsiGd(L;68+C`{ z&(Zn&g=G4FD{G7>zmkuFP(QVg<~9m!WUe-vKU+=i3-An9CHvqlv;SUAG&Z+NPNSsG z>{vK%?x$^+Vs{CETx{!I|5uqbIHxdiq&4d(=2=;{Pr^)YWkU*x=>MmeembaB|tbv(_(4aar5lVKixZXU?M^j zPO+*u`V@Us1Onlrd?}*1^x%OKu2EF*k*^{|Hj2ad-4CzXVju+KcU1x)3gI(l)%WYy zx}E>tup42?UgRROMnQ3cq>jzmVF%{w-gW~3F*pVobnGwLD@f6Zy&SN zJ7^1kL*ZRI`hDKEMJhji^e`LvkO_D!k^^tZuq25PPSD7{dqS)W%rg9f0FD2J8be!v zgZR0fUd@cW2y@_nS2l=sq$JzTz6cu#6*%uthWFb{HYq1(0*>H6WPg%U(g$rYVXg9u z9gA_DqwKZu`jCum3QZdX@}hK@jqX&CgaK7Rqn$EfYy5u-!ZbrcG+M1L_*3 z4ugwBggsl0IZC#Hg~Wa_3?P5&@goxm8z+wn>)B$=otcFrU1YHMVs^Ns9AA%_SKm5S zu&~!)DWRXdpwM=&w)Vc$V0K8_F9I`#W#FqyZtrobSo}fgqCqaZbbt?VLu$V6Q|bK? zvHks$3}k-(-1krxgtRB@hvbQaz?-%3@&~PRh#UbhjSA)m8>ETF4lL9?P4ZZ6J!CeY zRMY95e$^p(Z=IJvU6Q50WYgYFEpAG9>8A)mC`A^tO}${Xv^M*i?3Mb4Zk%KX{MfrW zcUz&dv+TsT)_2HwuAlXXr+S9U5r`ZB1Z%>4c--cq5Lj(+XTAd@^t(a#DTLwM^Lhnm z#N)*Tzye?E7JqNtg)Ni##Ef zPp|`wG{j}^NmpSj zjVKZu$cOGxa(&7{9Y7Uk%WQ;n@s-5sEuyf7oO07&nN@-dfF*yQlfA2jn{+St$sa1PtiS5y9E#TU90(BxK zZ*1o>SUpC{eMMNU2y7dJf#F@y8_`@NpbttU%RBXW``&b2-UbsdA^PJ&3t$CTRB`W} zvS4wm+%5=~xu4|1Z z?o`yL*VX`!Pe3gi8y^16D-5{Uj2c2@5&T?WdZE_j-Rki=iMzmdJn;*gZrAyCchegKD*qDZl1C%rdcmwz>{*Ln&j=L!uAj`G7l{~?sZt9eiM zN87ubgZ*r9-R*I#pmZ@Sf}ZK4gIbs4Bw~8+WJxG*aY)o|1>FAk=A~hw0hVOAIzc0w z-zB9#@7<@%vf6ySQ-#!?h0yM0oZ{z>XhIW@rw$FyEWK6iJ%0&Qzja^%%WMQCP?e=NZvda6n*&4qPq2T^)*Y^zaBLx?Uj^UxD0Q}3$zonk} zZ0(0EIe1@`(=Y96?j7wl-f}lofST-_y$noxtJ_BFVDkz8JQqa2Tx$!npn=3Ps89U@ z)p8*t0&o#NR%tRny+@4a+iyG22_waNy&5(^c_;hoQy5+X$ewkBw`u$N(+?XOP4RYe zTU0@rod2QO*x=u*dqYyn`+gc@<$X%-6gtxCDMZ0q72*fdx>|+dFN~)HnVcB*2sy;umi@|t5j*$TLab|nVcJmz~aC*@on9iJ8;*K z-$>tC%mUQIdY%`!_;ZOP1t0sp9Wm=%?ve?5)NT-vaWm&$TpH4S*aNH}fTYmj-39dL zy@@Fx4KA~t*5i7_eacKHloc;7S9?9{z&k}{_XjC;BZ zl&gr=D&W|t;OT@I4dd5;{}W_#&_&sLouCi4U?bm)-yH>QZ0u&e%NYZBIA1@HfTbyA zF7)~3e6spEc|uFwf366+%V73d9m5Z$q|9`txEW4Y5)8bjwccxveO zbwH98l^js@Z&RAuo*0rG+%?<^zq%}JH6|eGcRO(hXy%4btz(D`#5-Cs-vDv)W+_aq zfHUjnGa%wG{wkLi!-%M=R2+YfS0yeFEdJ`T$ieN{No|z+4~V(>M^5M@ zrNe&z3&BW>FPmZumGIy!P~b86;F1bTQ{o$0d#~(b+s6x~%!pxEPLH#XY1H;}@l+k2 zr{6s$77;j_-6YN~k~2-;JW__}QAa6rSXff2Dt+L5a-i3w|8ps1MYL|}Tk*BClpa-p z`AlQ8CN$@3AP$UQ<9=ETUFx%#9!7=2%X5Jazm;E+4*EWhK8D_Oi+-P4yet4GEEwh< z-auc)=?$z@9^R0C^IDal@;vP=wZ=;-_PQ6c2G=ZkowrMGd^gy{l%srz&%VOU#)fp* z`en?`FRx8eq&?W4aXlsA|EKZz>%}X2W_W`I$8zUAEa4MErlRwJnqPz%ZV%1!0D%$i94=x zXTM?kV;7GtUly)>O5bkE9X->76BBbDG@BQmo=?|s+B|sTn8Exq`q&8{GCFrHaZvP1 zA<`DuZpa9XsgEl~(knnM`{;Z7919G;fn4vq`^15k?{I^dG+%aefN07K|^*3g!dc+0Xw;m}sv{b|3E1*aPf@y659ta*z?SA(9=d zsUL}siw)h0$3-}#T+b{Q$tgtw!UWW)qkvaocaD&d>?868ekkQgtOoEl5fmCS7Vz-y zKu2=zJqeDGstym<15A%ta_QyZk)-)(EPth8`FZNA&jFy+-q?5Mzyrgkc8Ei&C}3>e zKRW{#6}QWXN}n9 ztsmt-(zh_CerMO*QA?3efOQELSbL z$gce?7`m6fgCmoHYKoSDKHNkx+Bw5sCz}a6=+yOdj73lAu`o2#*>c{Z-oa`y;HudQ ze!lP-3u9Ok_%|e*umLrE6r-9MPZRB-U~fupZI)S_P%$2iJFb$)o115x$MP!W^z#I1 z?UzeQ3q*MO_3#?o<+}8^WJA;4!t1|W!a=q)4zQ2k($uBy=Zc=h(Ik-}`S+`f*o;wO znEq|jY$z5nNaP;{syiJMQW<+o(Ix`02cc9UZ@y%L3EfTx(Z@9!1O%Fi1=5SWCC(LA z3TiA|%MGt7O|{P2Uz$cc=c3e6psd-vh*u?j-pi#|6hAYV+4iP(UU$~fZ$ti~4Y*63MBDS1)${j5)U$FM zn;pMO{$(-!J#MZ03ys0r48s*>xZo!Wg@_GOYc@yjkhVS1&kD%l!_k0hmcE}#M!DyaCk z4ZhjR+exNWslw_5JU7(~^Bwqvl3m)#!F6U(Nol$3%PsZGoOv)W;)-;em94jk1P76m zihW#TtVm0Q;I9#Q^}=(R%8AjkOHLdL#TPA0I@PMZsOl4sdWgKJy2z1c2Vd|Y^0#4F zW>Bpo4u#k*Q1`wKz2ja?w>Gna8l9*%mV|~#Rhr}R@b<5c6i|u^41qdXh}? zKaPy7rb>=%;4(GnQX~OeIq6~VxQdMzu=g#|q9l&89WYVR_Y-))ZCb#Tr->#8jDf#A zcnKG57saB}fe(zwnJ(;uP=(JQB!NE+oQX2vvsU8;<>-kk1;0#CiN(>~DurE=I zb$N-u5wuCQWJd-=yndRSI_f|`h;z}=28g3TEpv4* z3j6L#kHml>$Or51{oV(w%lR-3e+f`YzG-d?C+)T~gXn5RRGDmK03V(WZf0yU0fFWC zCuo!J%oP>fxdi2AUA5jMiDdZ=Tr1n3fdyG}JB)vKPuxGxAW0cG<}b(bbbEWr>(vjK z=?7;4Q(l0>0I^fl)mO)u_H}A;%>oYURAE_i+eiOi&9q|VKa(R04-^yBkVQV<5X$Ju zUCl*U?~Y|NyrGWhA9ddmj#LrPS5^!vp)(T^SyxJhRR2AekVE2IG}>Gx=QTA}B!1<{4xalA zA7D8ZI35r#^tv?Y@B=6YJ|H%5DgQvX0FoJh10ijH^tD!>v6_Pln8((53V^*gvB@l4 zuWdTWzMQKgj)=h5OFx3a3IP9v6}~0v9nF}Ov;k~r>ncB1FE#t^%qRoP#5rv2>z78+t5;)6BE<@w8RU}%7OXBi+dyzq$10~C3(?*VIoOO7 zdkh*pEaOmhak^cT(W1-jlaLNzi}CkM1V$~bpkRC%-Yh*E>rkyF~Z7N?VM zoLYtw7%HJV-~wmNNqw4cMZ9|l7{-Z{6wdwHGmq-|10F}dld3HhU z6>eQx_KzZ?9e&8xGgrm;7+rZmzxB(2@1KZj#0!46D%pyiwXQaEkMK#Jz_; zvERlAs`@-C+uZOmPVhHf-q{$JxkJ>;1561U~m;QYp zMzCkiwY5n9>s|`e{kfO_d7m3M8vS42{m-Y~_@DBU`yYap|3B=O_y7Ne|2ahe_d^rG z`Oudh3q^Xr_72S#8k4CCGmeB_TLoohWd#M?1F}$wsE7y=0$N&H{*3tjgJkqkkdq^a zc<{o2SI?_guiDz$h=_=YL;M^y)z!xkio)^)$MayDpw;waa%?DE;laIocFCFJ8!v8; zj*eQxM2+@?Ule^z{9%U3nIjfyI$O_2&$BgM>>msWn@EyoABhFvI;Oy2uqO9o>#+@S zNy+dhob9$@la@sV1zC2Y*IOfDcn#e@KVeXLqLt|`Zg0-k#r^##{v5)*i5^;7j#A7K zsmjeoh4Re3hd7?0;8ga#?7d>Gg6>C~T~YLi*2Gs9wNFG48zC%d;R4&dexeIT`rXXd zwJ17xLbPyfOpNl}G58xekuX;Z9PEMA>#|yRBxP;l*Y*5459{jYle)llG zv^?SX5V*lA=5=+t26-fc@OL^tmG<WGlaRhxd)}las0TRw{CJOm)SS4pW@AAlmZ+F4^Jak z6&=02ynMc07p{(37*JcwzcWxdX(`C%Y&H2n=xY_GuHbJ3*dNc$K)}&)dawo+J?j_P z;bpB?{s~{}O+Z*+Am6Fg-oNu@iSk)oPYP-3F_HW&IuF0Vz`M2P;%1wba!VC2z>rVY4New&VVFctJECzgh97Sw*6w756Sq*bvjJ;7=WN z+2P?9g*+oMTxx5tR5y!F21z`QCQW2x0hzV4vvXu*q=&6ZP)I0c-y$(buG>AM)UYFr zv!D0NYqqrUjpEvMrajorn>XR9ZtIvNI%%p*ia?0}fQ;L6u0G-L6>#9YqxTK?YEHovbF=oN#3iWJ-pE=986`^~H+~aI{=@8jc^M8MUje8;}_x|HN?e?5u(& z70hn9u8<|Npv%Cm=3gveq;uq9f~avN@G2`8rNs%wks>1yxQKSR<0dFS z)fPg65MEkZGU-q5O0zLHGfR)yYrzvczd z&ij&&j}IKK{m8PiGTmF_w6yqLX|KPSE`0y~Jt86kY(4+{`Ez}};92oTbA_g+=3`jS z3aUva+itNnD6D7j1-YP01O+xng5^w&EtfL*1r?QM-_j+2Tnf@hkCdU%a+877N{jI+ zOYT*uarx;|xNs`Fp}#~X-}S`-_)&zX=BhEpScE_L@#9BdU*DXbYv5CUey#k`vGH*Y zb#?2>vbHTJ+vxcC_{hlD(>mgv(sV* zL4uVvOntW2abu=Py+lnhIUvYECrb^}4=H>=<53G;ozYQ45Np}=a ziVv0%6}@$da7+jzIUmZDL~IOlfE!>+JPxrkZ>U4g*PXEywtKYqi3-|cLFrRUI1Nbg%%wgJg$#kYiy0|AJk z)VcnxniTXKtx?q?l}c=#LI1nz9O;^;5kMge5f{yeiJ1s}7+5wPLAC0(~QQEK@1 zTtBJ`$0}u^B>*v%DU~AIPhv-W$WYk!QHqFQe~XgNUmrbV!)Z8HTf) z6Vf}*(46*r^-py7`9eLUmaonSk#VK+#D~LYyss~#C0yNJ-*ek;Jh#3_qeC@S?|LAH zC$xO@Hac9#aa4^y#o-&`Vxy?e`qyVnJ&!#l@^cAcbY(2>A4-0=5 zH=cDP2;6Uo+o*b(dfO%{Qf)>lLQapSZFFJ7dqA!FJd$LI%(_OuH=f-g``4awZO#5> z`GAv02(){E9*I$RXE257$fL`sCw9m`Cv7{7gAeUU?*4XRacL>n z*Tlp`pg(IoEA#{e)tAovH9h6lyq9Q1xbPLQjC7u{#mc@&O&#`I`Ut=GoPzeGIw$kC zQ3rZMPFR02(*)+pO(7N>5|SXGx{hptMmi-bjcNde zOiWA%1qG^C?CeAABfBiYMvPOLL7=LF2bf~2RJFkw863J>b-O-r1iv&rRN0nzJDMuw zjwCWLFkl!-^X*5xv_?0A9LUwQE@BIoxt}viWhYb&ArJ^ukit!_28dB2Q%tudH==Gg zC(Z%&`SZ)*Z)T1`DatRO)!0~BW&5~;nlbg3=~bfwOC;k;J;;U6@v+5!{)ucLAVic2 zyOGFfGc;uUPIZ+y9shy{kHHsHo=+>RvSA z+1hvIOyuAtScIg^st1KG)x69eC~i0+E#ykf$>g!((82?$C(VK$o@{rokX^>EVSbC< zu>HOa%xrWh5;o@a=FM%PxUr^*%+BtZ7i|n4AfY-4`9or$WUk}>M_^gQt~gLC9f6SD zEAxbvB9P%+K}u?O4(~+Y`II$NQ9;{R5&8)(mT|mN_mOd8loOQ}B$wS#=}fp%Lb`KSVfa52ma`vTq#{Z8trj#)J>EmJ zsi1`g1qBEF0^!(OtDrt&>~L~*xaHmVYMhrvPg!~I>U`%K{8OlY1{JZNwyIV}+b;&u z^H!-iQjO7gBqF${az7%7;H_lY5ZY2MBNdHT*B~o@e_=$n1)G7LjP<;BGHD}X)_lw-G z4ZF=a-dCq^-YAZ@-Qg!(;*R6*+*ul)#%PY;NTlYT3-~#lE&H}(kg_$CwK|3AglK@u z%m9%iPYB%)BQf1lK0!9v*lJZTa_xj&l$eGN<#;SdO18#Gh=;ukXqLQ38!mN2em)Ws z)Ab=^Ia-gKV93NiN!SUT#0>OlW;o;wM7I-RlqhBld##q(&=x515s?-|74-Wl6-7m1 z$44~lcBN}Vj!H;ICpFtXpHv>ZpO%`@TP|l8em(IXh!JWjZ0I-q%Ry$N;R;R>vrq_-0qdl zoM88{B0nk%MB}|V;Te8luxliH+rtgidjSv9{yBQhisQCsv-=IHRWwZkpCHeL*m-!y zZS}PpDz+FrtZ#ObjFY8Hkw<$)})YgUW17Vbh5Z*E8l{<7+p`C@SieyuWF*5%w0p zji0cePGl{hnQ3k?$UbJGZEzI|ZbfV&Nq40h6D1}cX;w@ZFWo6%r`~um@(`S4$ zh*K0Ke^D8!^m1wu5w7q`D1X=(D~#6PGh6%7^q$e#Y<*}cS+ zMg@4XeLtVWjjT*oU1I`-2_4!}?B*HB0Vo>2LyyJf65ud`+O(|^z*H$7|I4PcAfdkbrN59X`2OE@n4p-x{17D2Ar!Qh9b1ia$kTrsAxS-Ue_ir9tGL`xR`N@({-8z+2{l$A9{Lv zgczYFG;F}_A*OwOb;RMuxIj*<+(bbNDOK^8tCJ->IA47_tzXIFpuJEKi86nnV@aU} zSYOn6SQmnEEdJ(A4Xd#8_RPTT=%Xt%LJ`zFA7o_i;YFv&XgCLZT3F;moh9UuLjKsZ zbpjASQR!64Yw)=WJAx4VDQ1G`yu02S20a3v6NQ@eB6PBgtaxjA&MxkD}l(i0$H=voZtDE>MWfNetv(KajycZ4G=x)B25(yDJO3(PyG} zkfp=lH+2x6T@eCl=}q9I5J>xt5r%T8jd`I_>zN^%UIS`P-8IBL`12{mV{0#bO3ME8 z>AryhXU~c+EHwgcl}dZRwV7i4eSIBDo}NA=a%a*~T}I0M{EUeMP@z>%l5JoW^~34Q zQ|{ZiI5_s6uL^(K;x^^~tStQqZi=*Y&<0NM)~_~JctVTgYjz&z=lxk~%Ttn^CNCe? z-~T-IiYX>oPcW_7V=cvb-)8G%)>W8EwI9_TVR&vTNin(NE@2Yh(#R4~abJ8G)NKlw z98aJ6@OU4cuKo>a^CqI_ZzL-GJQ&l6-YmchuLiKj-@JgJ{=1=aIALUR^cgBYL;(q+ zX^~=7+dG|L-}+S`@j+P2Y7DguK3m;pS(E~Q(7eKSw=A@BuGdO9$&0rAHih14s#0?8 z$AxBuf7%`zTYH-(%iQ(&0dPFekWsMjHjW9m)*tc@z|!>2e}ROc$A z&-QO%`_Au9zOC@dp^oD83R%I~-qyAkw0%AJcN0n8c4mLW%Ea;&bWF}W((IY*bUtaf z76)B>Ksy#4Zir>k&`JTL(d(?c{lad`J+IQX6a&Heo;ouM^I_)mrngjXib^$E1vklyXdNEYr}>wE|^lASYwgX z39}0$vb<~AJ-;b`22cquedYZACL0b%1V}&XP3AlJ{p*XO;GQp(ab4@ls!sUJxh8jO z>!OJldjJCz0yr!HmADugQK0l_Jf3r>h}%>sb#~8wlibx*jHs9{W?P*?&n949@rniu zi&P-?>gNc?arxf}c_WW9pnt`tu$^#&n;R!Xlz(0JG^+KTn-w%sb1GHUMIL&yd(~f6 zv6wjN+9@=l)F=rW)4d9A4vsP!=fQAtzHjgW91_+nPAj-1I62*65xDJE@9y-hpDMg; z;|^*xkFU}a`LPU+lf>7@uM=!^bjXd!k7u3dLEpC(e>A+Fm!F^cKI2Qu+PC#}^WcHj zpPkrE&{Vcn^h5Cm5?zN!ZFO3OvD7gmBdWo76J)Q+dega9*Vde?6dy-U>$DU3Ie@;N zN0%c36zQOnl+&PN2r_OqikYo*E}!c-Z2z2>#{^lZ!nv!cooDlijKqC?uGNy8?V)c# z06@_qaFq~nMZEj>vjh_}-r0Ic6@krF=iD}P7Xb0nb z4i7~EU#QNdPRL#5`|?fw+4YY?~s!(k45UXZukyl zB{$37n8mCYa*Pw8`i&v>2r>~}tW*I2vN4dNmJ=Rc+hT_e?m;f2We?+7&2iuy4oS+brMI1T@>oy?{;i6>l7 z^f8xd1hg1em$e15w^cpAPxl?9nLZ$q@m7`rgvOql-^}mme+( zT^V@&Zm8stOc!iIL8z&lQO~Mpmxk|UnFi6(DI_CF--l8OryhDPuCKfB-~hxFV3Dt2 zPE1FCuHMk_@IE+i9O+Ajjcgym)vLI!z0=*||6qwA?2+*a%x`j|b#r1p{UK`-Zkh4XqYoa6eyj(j`emNd!N(@zG&S<;>kf$#r%qJ1a_ z0lKlf47S87k=Y{xzZ$pWmaK7{8E3}7aeg4))f3B-83dl7np6zVbX2xsR*zyl4GoR% zwBfstzc4Fa9s~>PW)20mP@e`*1jer=g&`YUIJV91=d&)E9D-qt&?bqqX#N?%wmyi` z`~rwXv}2M*(%Z0o0ZRG(@O31(hHF-MV1i>;Jrurl*I3T9vsbc)AE4mLu~|A_Omga( ze=O#*dT!V*weQIfB#8^;78mQ)IxxzE^Vxz3{D4+&aDYy~1(O1O(VYRoU_gOy*wD0x zJS*~^8meb*->GyCy$e3qp}OZlBua$^;*k+ZEmhn6>+CL5#-G?Zy|9xbm(WbFgY)u0 zXR}RCy}sqkhQgDhAn_35J&XGe6@+B3ok2x@@wVKUuRlEozzTA7x8tU(ZAjJ-E3u1< z28n5sDPv@XtaHxSAntoioF!3hL7~uD++l`A4IE_2PvI(U-MY^4gFgwa^wwz~&-}{; z>b;pC_Oq-$b9{d%G~gyh@i?8*dCtd7e4fAU@uhgOjZv!5+U8mMR74xJCtj`9SgU9W0vb&b*9>!yR2>`r! z#l4enpP$J@VLc!v{9n|)WmJ`2*FTB{0s<;2Dc#+TAl=;{-QBTiMY_AYyQE7xHr=r4 zhArK2F5mlkZvB7xkMrS-@s4wS(1Bj8z4n^@n{&-cYU@Fk5gYrN`s^pFY;JAB%o%_I z4y1I+`|QT3-49Y%c;27%Q3}8J_?R`qZo4Y50$1LnKVN5&FsVq9atAn%iDQ?)fWN{c zA}|TE>s*$dW;ri1G<9@F;goX>H-WqiI>hvRcl_yHgoWt%`)SQv;p4FyqPfCNT%or?M_M+GYubvu zzy0Zv8=A5X*kNu!fXvY4%~JV5xA!+^W~4Q322+Ldj)k1imb2Z$E|gETXA}Hx?G%o4 zcFiec<C7wiGKs7||K<&x>a9G&14%41A=>WKsXiz!9VH1Crh%wd=7@$_=)CD)CxSo+BY zXOCLlM*A%w!C~s>^?7&q$dxeyf%%9AP&8bS%vN2%d*xO6xTk$>!yXq8z%QH(404{| z!`aR~HXT3wf3#cr!hdGh=lz#Q0uChYY-LGy~d=(Ig zHxEB{LyqB-__H+Fvv2ljQQ!4yO#w&*0OON*+)mX#sjI77SWu^RPDIBNk4d_j7Z2cZ z*!p1P_*nKw5(2n!F^4yh?W|}yML2-f;J0Zx=>-(L?7QK(=Lp*rhVNwe+V76JSM~x> ztQPC7ZceuV*A$C*m3hSYES1wCHJ(Rkm7@TN)@OVcah-pycE;*|e?m(ke}X(cWEf^d!ifHq_oz{7KKQ*FY5Y-|P_ft4IWuB(So zIs#|5Clxn$icV5J(<>nWXhq99E!C}rzXeF904i@rIsW}3*ca(oy(mIJ&WXs@e^L* zh`IwnF4N_SmCu~-&=Ub~BYo*N1f`U#z38jp{#fXvayb2*FGB@e+qx0jcDLje4cLjI!M zzxjBG+$VdG1klZ`VoaHUi*HOXm`=D!YPFM@IOB4Bm1J zFed(L$pPh6o#TM-pq{YsD|8t5?70^|Y&-_8GJZE{C>3Y}g`a((@gPXxC=go3j z1HNiN=^s?Ir&lWt+EE-ypvy&mA}@>uLRi-^JH5d!Ko5v|Z7>+UjJ?Ks^Nmz8o(I@l zx`ME1EmjZGZ(KgsxBYtsko4Aa7-2=TKJ`{0>6b5MlTVNoPZ zMQ}(_+nJ*Hl$`lWFLhrHi`<;v#Fo8n7Fwg^!JMaLxUx9)Mh3z3T&FZpS%Wb zi&zvmvtBBO>QY)bq!c+7ytxaQJCOek?nK5MXjB!bdaU}wot~Zf`}w(U*xl+l24oSZ zTd+UWW}EU(b_OD=)VeDwD7fBA(F>}!0EnN^w&MA-!Vbj=>Ba9WT|ZnnvaeC2HS?$nlH|3GZx zzgPf0eFP+Y>=PP!P~#Z@|5&$Ps3db7l-ArY7tg9rnLBxU^5lWh7RR@LmmP>D`~=Qr zI8VPqp@`}w-iNA6lR;Zd$I7`$bk^HJG_`g>qNIMTh^R)G4gg4*ES#0-|KxZb;Ug!G z!cl(Bz1R);rHgTU92XbIhl^H~LMEF&%zfN`(u-r(cV2Bc8{W;U{*jo7Xg7>vyzzl=-`Yxt?f82 z{3e_WNFH4;0=oG(kWc2Q;xKoo{SRe+cMAatH1B^=RDs#e1X4L?IJbXB%`1o)I31@MD<*3dF0>pr0iAcVGEEH}WaMRj{J`9&r zp=4SnoyQGuS*3RIE&v5-44RBn)k#WEZ?l}Q24cB{*x0eF?AO=(B^Ai8UuWhXhS0Zt z;WY(Z`!p+CZ8BDczmyR-)6WEv%}t0}Lc1BO}18 zfZYPBpa87rcS(x77cjiz)tmc@!ou&>UQqw9f-Y!iXcTc0$qXqYwX)+?`UBCV|GDTL zu7DNr_Mg-L{pY>l;GZ90?qU9SC)@sCYxV45k3>lNaM@XSnJ7Lgl_1MeT0b2&G-2TV zL;l}i!-wt@%<^{d9Ocp;$8r3bXj-Y%_L2GeLpW(xZ zaqnBfKWjL?dv4l1RVepWN(42dY@t4Rm zt#+oy0J#Pd*?;PAe*aFJ56prL(I*?6e;0t^Bl~j)0hlf9gE8i8`t)a|RfpG^M}jY= z&UHhk7xWqax`qGi)ypww|Mi^Rc2?;!6`VhNhRN6kAQq*r(KH4cUb58u1WWFYKcCkj z3d9MZ!T!T>vlERtB0d@pxxC?uV$E8krwnd~zh)p`ivd07Vu%Gr@_Hse*Q`{!9<-Ic zLQg@C&%8tWvm8M*2|0PqBRLt#M;-yxTzRC>2rjEBn6FwYYT8emveeYr8vmBD0^^bW z{^u4nKP{}HlcI&V_GEq6DadG=`CD$F>2#Fu0_z>(-#hS&z3^B>q^?Jgo%}hLi}lw* z^7+9m&^2VoKjP%d7i}{A^*_IlxP01l9aZA*CI!Iz*nc*CFF5MM2zblnKt}qnbJG<- zG;O|B;mvqGQ~39$fqogy`}rz-QFu6=e-`P$G$bS>EQMH1;K*VnXQ}iDlJuCyo__ym zWf&Q+U=}jn`{&(ENr2yyXl9x)miuGX$|N{R7~KU`CTc$wwOes#GAIA_r5)j62`y{v zWgmO}Nn>hai2Z7_o+ZP?b$t=M{lgVwPSKm2hJStQRg3>qkpGv5QvY8?_y3zI*n*?0 zVy_jb$x+1egS2~;g;|mC+$1CncQXUTlGW-OGJC%Kxnv5{it~Jz*kE+m*Ma;EYZC2j z%aa3KhW#?U0W9g~9o6ZFdfLE$tl4jpox8uzjDQIf|b!|Do&c^Os|y9i{KoeX--F&F{<%L?<_E`jGOURM=Q5Rx~^Q&o_Cc31db-@cNKF z^2#Y`%uYoWM{k54mJokDg30NiFPa~WDH^1S^(Ae0YAn% zg4D%Xs%+16a^@$Z3Zw{9vESw91wm(XZkYew!?`%HZr29`Sn<4Q4F8jcBThVZ9U`8u zWX|Zyhx8?S|Go$Vdi&h89T9PC7%N%?Rk8uklr@p-G}bODNcWOYi7UzoP;4hPL`|RbIm&-z-WuBHbOA4m-3Z%0jm3MSS&r!!{ zdHbGen_a!?-A*V0(PK?*`AMajJ!U!+A$5=of7e45G29ap zj&?{nvFwLi%q&hHgaxNi-PlgTAN9#;s9*F|gh4pPQ%uzw&|p-z(BcfV0~hZ6_*sBLz+}*iw$- zAdmkNVvPSIK&(obI+3Expj!-3$@otbbLC*UvSczx5eMy%a6EW`m-oi?WSF1kbxo_) zKH$PL6&b22ypcwmWm93VbKazUMkOq!`H5+|ZntMP=-q@)$h5}zSeLu6yxB=o)w^~6 zcmGL60}6}!b>_ov@+|tC?`!VQ=m`lTsVC@AV@+bzD}^D*QnL+&Gfz1M>+?&=p~Cct3L=$m}X}d zd&!!y9+W*-8WaU{hLf#4Sxi=FUOH`3GQ$?=IxU$dt5tDBw@58+h6^)&*mu%IP?5@R zhgNQVFR(ecSRoJ1G5=)_0e)bVApc-R@soiEa)wO!8@#s!1D@pEbf-MGf|aVnKaioo~+=HS9w4qONFM&vU_)&4#}8%YRP`@X%qJ zTpIPZuXDe@MWD#IF^ZcMGKnByG7^w*15G*+&^UtDPlP6a#~g-L!=RfK@p%a5^-1vh{^o=q>d>9(ghr6_gLC9>S7o(M&Y7E=5d z3m|zPv~j;o8V9D=Qal)|b2Mvh6=tTz0K$&4l)l`)Ne45(iG37R%k7Yp{<*3byQqOi zT0BOd#XRy4cO#BCp|p@qEae!$_rZ(t5?jK}m0$Mmbu1unJLz+u#hju-Pmm?xba2g| zye}~heYD$1uXvj8T>6mu_F|V4n6|?P0qo!dbf;a?949FvR4lC3ZRRDP_WYdZh(|jx z3FSWzzW@xVR{S+eo7uLjLX8eK@A`<>@i>k|W> zTN(#XOxutUgk~~nc>R<+gzD$a;ERnMeW4e7jWTIkQ2GkH2f8Xk--t91TpK@atx4O= zmi+82QXr~frJ|wbvQ*PQpB)aH+8sM1M=G`XJpMW3cyPlCAYIpb7_cgeDPLim1fy}Jb22@Z@fsS zkDmzWF*f)wbHIpVKR4y4DzTw67&U;f?!P(jyB8vh6M1P~e)lD7LsQM_@CvW7)MFxm z&VOh>`Ba;WdxiXG=CaFUuAbCxbmF>ppBF>CHTXjshAhy4kkAZq=BOAA`;($4;1L%n zB{$f`i<88HlWAwtgwgwQdyV?ORSeMvy_q;I=aD#gJZM>;9l2X>yQ@xvljS1gW+wC8 z??CH=X|mXT5rKXi^k{Y9YxA_ccTOQZd|)3845YJRYQMSTIyulRt*@9p&V@cz- z9lI!VzjbhL8qjxI#QisjU;Q4*#L+~v)B+}W)}U-EpYj$T_d}tPS7z)Gpjena5Kp4X z5}w_<`jkfwd?W4q&MbLw7?$Zq4<3jjr25L!-sENR>B9pvH=ly1nAU0KY02S>!SPT00+zDy8z2*w3?mdrz<{c-ie93VG4k}vXg!h0Hl;1KOZ z?=lM;vE<+Y7gpx*`=H1U*%?Mj7}4IBFsiBLjv(!t=G@@Nf1NU)3_>5i1*N8dGQN|8 zZBPtcu3>M0NuTfvw@LAcF?F%ooUTp{VS%fISJHsK(K0dFkTvQe5RJDIlTI-TE)Ad9 zy>??ZxmA)98*rdD4>M*4$%uQvXzM^W=N8l`6SR5Ueh#mFFweV_|6s&Ku!Pa^Vz+qI z2C+dGLR6}g;rXwk@<|VXxh>SM($KzpbqODw2)#SKniN4vWMd$uCfP#uN;;*x%|oV*88oL5+%j+5$B}P10(gA3iQg)~NM|rNWLwJ# zD(Sm2cmuX;{3NfOTkp_LXu{0z`8nX!P~)VeIEvuZm`sr)4`F2_{cMsZO)v{^Y^DZf z&5@L!k-Y!cAdmf?LB?!2(ar9&#mjmZG;jW3*NuM*#29bBM{tmlS`YddN(4-1cU$wj zO@MSCWW*^Cijx6+;@$g9JCG7(!bv)#d5UIFQeNF9j7DB$-?x`!Ujvoc>y!}bs|#|2 zpYI-Ci>*9Q-kDnZ9;=qlN54=FZEa`cY#rJ>G~7mvjhk)Q6@0-G^~r0G{$C!?tmu$_ zXhk$iIM>Z<9>ut4xy{G}aqzeWdbk!^j6Zl}ULP6Z0J6M>pGCa}m}l{KS*19|*o)Cy zwl2>c)dV!J`oi%-W7%0WzoPK-G0RiM{aVRLYQ?L4AU5g~ZmRd$1_`Cm&d91*+kq11 z#ss#Bc`lp}8UD24A^GeLgL*4Yzf~s}w2`a#fwEK)y2cydQkrE-Kk>`W&SY_%&v+izi---6n{4^2TOGu5-+z_reKJ%y zXZRPWdj!I7m-$Fd!KXa6U%g2iwNxIGnnA5!Z6;a_ME9hPx8Zu~!kUArlX!jcxEx%K zJ=NYC<(%(Kjb3^0WVlY2p3GOh)7KC`IZiyk4k3&9B8W1&{3dh2G>uzOQK!opusER!m$SNr)pDCI(=FAC=BHDR3+RioAA z&(OsB%hA{}UC`35q6jhrt~JuxC~rS)4Y}dZxfj;rn(ecr+BON(?DR`55oF)U`}piu zPVA7=JOa$8Rl!)G198-Up|g&0WdFC9bSbA2!RFY}M1mp(RT5h?|iY#BpNM6 z%QYx7m_B~J=@g}A<98no6{y?)hT0dz%&*%T_FnHKgDUAfAPeYf!Jqlv=7D~$Vv zp`b2wB{xle*@ zqN04Wxy|F0Z;?N0w(bwtdX6W+bF;axS}|J#Eb(`QnTaldZ6Hnd$gLb@4Retla#>b) z<=F`Tstwy(A;jGkk<)$`@6+Q@O7uJu4WcNy+xu;TgG7j2xqF{UyL_#N%B*3{{1V;S z>@g35Tbat@Q;iFOk9?}jq!@%QXWz>+)Af0%44BRHoi*l>5vQZ zqxnG=a~yD$B+XxFbOplBaURlu^5|`ISZ2W*e)kSzm!FnVL^?xOb?RZGy9VJOzr?on zOiWr@**5M(E;itM);=sB6V~LR+S!-+e!S2HBsLhSl>qPz! zAa3_Nx|uqP#E;MTR)V4kndFz3#+exkwLpFkp4IC)hU)m;EeBf^*L(m&i~$%pxvcTil-GA z2iu2;9x9~a=<2LcD|N`Nnt!5UYV9s)sU`>M7(1>Zm079xGM?FfHUHr6f5m?hZQm;S z{q@bPv}CFA_ zX3SMZT#%^lLXxf>YdxV+uW&KBAGH04kOnU#oGbYrzlZy^sC zVa3Jpd&IO^4|BJnLz*2M4jm1}*_k}kOkG+=RzfZ^7CABr91ZG}#iO>qKL_y5g0J0N zM=kPce(;-%OzQ0E<6Cct=nP$CkQF(-R@$dwS5LhoPk1QstM%zEnOhH?UVMexSkf`_Qi@c2CAk`3jmMYkyc$DQz6x--aDh)K z%}8>a?b?H1BUCwqYO`!aa7P^Ss^)81)Y_EOmum0cBR$=0dxbr##osm|S*fuVaaIVu zoozqnJ*M~#VstotgTXFO%7{Y4#OGn*xgUj>hF)D=G`g85OQlkkw2nSEZS;#iS0~fq zRmil9l5SKa?ZU#v_IlXm+<_kAVObvSf55_4v4*L$N^75g%;HMJN0os&!cCE6TuH+# zRiObN@fT@6 zcqdA}G&IuPE%ZoJWaGBw&kP4n08548z-RLQR%lCDuQP2N0rp{zHgHhbXyM_J#MVGg zrH9tLeU2b0(;=RH?Zwx-$eH8+0@H|0y=?~&S;d_^9DYFl?4u2)%`Td>8N<=v>ecn1 zRBK$&IVl@!1>DcIb!MR&)pb6$aZ*-s4%or=*tRw8IU0dNdbIQE*Sq~N4as`Gz4{7w z>vDe1?sAb@Vop(LZu=fdHW)qv0bZdXg{w&dTLWEnsjg%0p|PylrEf1pV+FdkR^|4{ zlGIOKPGw$ z^&@s}{nnULgS9MelwWXTn`yF5aS5<%)Cmu#l#hHXCe%1GsxxLEc-035j4eOATYmP5 za4|Emkhhw=NhTwQCK%`r8fwZy8uvwRN@zSLH__%rc^~|Z!pb}lBs`XnzLN(wvfLL= zCK11zIIO*%DvY>vg|3bbRBN2+*2L%wK7gh*dXB*?sw(zM$r%n?Iv?T%IYQ{hzBSyAvrO2NlT$H(L2V4-<+ zDrgmBbwn!+YBGzQN1<1tO^RlsX4OGf3u@h8Y~I|6ml2OT)zW}8@ji7WvPQ=jYmx@u zZw63s>L_G)Z6dPN;>c1H=#=8x+hSSpY}TOW2)($^^@_RBPEVuT`4MBpN}yG$Aoa>= zCHHgEQ|DKSp?zWAX$&QHGLZn9q|^m|mh;Z9!PyJOMa&6O;%QN6lVjtp1(`p`1v>1B z(xb6RHPs{xj2t}dKp|*%oq7i+nJv7$JJL*-<;oFwyj}^Fn-fW+pGLL;>-O4#6VS{v$2yc$3Kntf>Ivm1mUQetfd=`qwXct*}#wbr~%0r0cH@ilY6Mz;Y0J-f%5UAnsMk7-@#Equ6 zWwbRyj^9p1BYWB{cPTTIxw*M(JjDED&$#O@c|bn>%DrP!0#?9m2BY!UT~uZ#X|We? zfZIU#p6&IYFSgChs`NUUP9jk7F0<|?ZogJ#b;di~!ofkk_ep!IG#v^&JqL!rc=MOs zyzm!_crs`>GC1Jnjg6pBa)M@mz)0{GF)7*ie%$soP8m8xs;M@t7>M`WZFssqP8-57 zBujZ3_`=ZQ2sG}6E9-;5+5aXS)#=+jibg;|^K^_i0GIY_^HUF*Kk}C)UzzK4BC?glyv4sC(M&Mz5e>VI z&C1%j%Jf*hP@kLm(|$&SAH+VGf23m%Nv!bmSrZ^|$x?Zq;dJ z+e0U(foX2x_J;E<)r~T-Gh*=fOTmpUiCx?^va~5@^AH<58(RnX>a9S{ky`il_@B7C zp4-xAx_RmlG4y@ru5%frLq(nM-h$o*pTcG7X2UQlm(i+9-cFyLM6c^-PG zBIbVn1!+6l-YjGoN>V`NZKZ~`dUA*9DWDPPu!4(^<9JQW%a5WB&n$4PgI^<8rp_-+ zpFyDb_GnwppMvko02=IXb9&`~=`%DrRsDL%>sxFtyn;B|+w2DX#-F9mxmWKdEsN43 z#?`tM?_|z~qgm=imW?j4n4DheF5GlCtLBGV^4`ctv{w(g!Q|)dt4Ng*>n^%Zp69BS z+>E3xw?phUg%ouxwX~!s)%x-dg!^**HnkrGlx>PkqJ>ZZ%PC#bN_zJPzd5 zc#5c&McY5_q}-K0w-^|iMsatal{br@+;D+sRs}mci+2>K>*d{y>}M?9T?l#jvVJZ z6`_bzms-bK_S;ACc|23`sQ{y1mBXXF;jpi&&TS)QWO4*tP+K1e3RL|D5b-%B;Vx(p+UsN|`#u+(Xv6EWz%3eeNJmOfJ z)~?KQ8Za^n*Q7XUaa4_lnP`nbINN?$=OviLl0lP{OofUrZB_lf6KfFX>dWBn>&1x| z>>mOL2cBh-*rs6habJi|bW)J|>5}0MW|PoKi#eId zx^Mg-u5K4qeON)TFf~8>w4Qa}6Qj84zsW-AapPGQga43RY+V%G&KZr4p){Q^)!=-7 znfLjdw9NPD4GLnmE-D}AjmU&mHHq2IGwlf#Lh8q{YOQ&;JH(-d=DV4Z!Sj>TXtL>; ztsFrGcq<5}9Usq__udqXTX)P=S(Nd@>>0v)V!>Q1DJB&&zh!;K!tbec-nLhHg#IO( z3whP%d&hBgkv_`x>6Z6Uo(8~k>UO@kxYO=xant6VoDY6|`sD3GqbTw%u>KA|!Rx^` zM?fO!>GFtORx&i|QtZa;>on3tD0xXF?gutzQo5gz+5Nj84UJ2gt?`ldsOq9&{3>1x zpD#xLCs6T$xlO*Bqi&u`tSdUpk#PeP@LY_ZoH4C!28mlZFl}iZ1Biyw-LJvCaTh4V z<$UbWm&Px2_1_I1cUn<~C%s*-ksA@XR3|?&2IORDEzX!dsy6;mc(I#SK)-O5X+lcU zAzM!CeYwqdhTiO%)CbkZ!(P1tlq30Iy++&oxn*Hd@ZP)}zxRR97XPc;+tPsnENth3 zoIHn9>8bv^Rz*ziJJ?zpCVpb^_oPOpe2(BlKI8Pq;nO9?7rV_E#zU-)B(L79sjVE+ zY<;S4v?3o#-Be?}h?LtausLSGT3%tGmK4+s@;cUJ*=V?YuiW@tmx**Mh!&ax#~%6d zkQ}8nMhhD5HhBm;X1}&DH-51z$vv_xqbi$m9*4v(u0R%Y4_(<9ycRPi84p7HGPJlD zw!Ah=AM4j@tumw82bN4Xs+;OA*%qH8&s*;iD$wQgTwubB6fhr%RT^TK+`Cg-3J3#H{IVKIJYVUTXm@n&I)+aoh*HsD_cW+v6aj zAuewT!PsPKaVh$cLL^v)X>Wtci9AKcBd@&kL|Ze;s9<4?;=EG0jLHQwo%E%-LDO-aQe-SmBb!cW8ygz6wiIaB4vuJXK5xiA9(fR$-jspg zHF!4yA#ca@fMO@>vA%YV7XQ%DsTa7Zp3ceGqM@5nhcqmD=*8J|#ojyK1iI|%@?Bzg z=M37amTw6|v$O>1@=_4;X=zz&6$yWION~#g2 zdLW3NLX~4;VvUZ(9b^Kjg!XClEcS)YKE00-XO750k$#OrS!UyQPtZ&QXAl>8Lhm7a zF1y6Bs$mIk|L869_2p>QfQw2BERYkdsK@1Ysx)lzfVd zNJvm_^M(p;=)%DUdbJ)^a>~Z$Y zTM0C8aG{K>*FHd`4^ussS2M7rh`yIU>Zd`(m}MXOY?)Z&FDW?mglm;nyJstz z35957iI#SZ`srjrXJOB{7gG`UkMCV zg-Yl1&3YgXvaDz(r(xwFziH~33$%V7`0_-KduBvjva(5anNHWH;zNF58OSzk@KRhK zx}~d?7)SGLW_apH+NHbyF^>UnO>UdIv#9GApM=1`qi+1>yIYj`T7(wwdc#k~_L&(K zo~R|c#@S+m@{pAe1o-+X)MdEhIJ$OYN#pw`x(D{54@&@GB6)6bA>&^q>TRduIkkCB zQKAz_6_#R=$}OCurFcu@Jddj$T@L_VG>gJhe2<_P{!rWo=H$!ENla)W{|IE3oSBZO zy=!f^B)=_Q)$1o1g-%HV9}Q!-os3+FiRR36-fl>$3@tEt@QCkN7Rq#J?mL|3NGSlZ zK3i1`8X$Qc6Kd&5F5!PW+Y)VFGBM4};96OzUpKP5a-!F1Ua@&}gV}6(%K;!txYR}J zT&zwa)fZxYV`WTDC@=7#Jt#-Wt7`ACT9x)9X}`rMHAO z#wrvws|D9`k}L1LyydVI8&h+tU^?nsZ!)G7Gbj&P3~X@|-n^4^JvumA23$8Y;aj=~ z+!ENVh#Al(k`=K-la#|0aPNSJl$E68$5-8vn#oG{+#khtC87)X`Q$yRR1Nq@>N^lp zE$+$r+XCgYsZaM$yI)crC9%C9Y%2tk!D#khj(?-C=vpPDxm9bA1v*N#A8?yWt-=6i z`Z4$pU?!4+nq+1c%Sh_TF_?BBAF?$_X;z6JT9;R%N|gJ3)n|8AUbRM<77vdXWIx|x zF7nOu474*ih@;8Mr=U&udHDyY<3lMBpX)Z(*6&Yk|6E246Z+0p>%zHjv{&D?-|O~4 z90-IUElztgF_@#XEL?8&nvPM~S&*%e~h^bVEWf9%wuo zi;Fe6t(r3u*y_VPlkA-KSS5pBN3oETv54s-^Ft-;l9Cax=Xo+17`r%9t70QDkcj1m z*3BK?f5829p=qtap5}I_kJ3X-Gj>h+9z9Pua2}bU)XpKyp};hkj;@RqU3y0Q)xkm& zNif1`4Za5pC6N*%ay-}l)&=5-5L?MpoKpfkt9CNl0fSF`F8HSViVmk}#yO3$&7$-C zYm&JAujHETo1~zu{GV2V{_X+*b1C>Lh2D){2SxL1@Xkpq>my|5{Ycj2Ao6=YB|0#V zXWOB+X(=KUHTXFVhz<+9c#RyZWP@2orP!S}Swah(KGA+zkF6KQE;hiUKn_Pc`-s8_ zl;J&deCo)1Ej5yMN8^r*@&?<*I&!3=*;u3aSb(44LOv{ig6|U6?k=+7keZg7^qC{1 zzqp86Un^l8uG-D$jz1ZzKDF{qDQXw}(J=s|SYo-6d!L6@uZKnBtYtkVD=o;1#iJ?b(qm6_V1O(bD{88|$|K+Z^WO z3*{eh(N|Eju}RuI2~@NOqShyu!x)G_5@|36y_b@%F2X`UtzlQ`LnSo@P(ke)!)I^^ zLuJw5PtGpSTO86EqpyGI8|AgW=~n>?{qNswXkS(k&{ks8>))p@JMd8RQPGTf&(}J- zU7#Ri%+{gJu;9}b*SgC@=|`E)Ekmo_ro|ZPhDX15q_u+TXH&ON>RNe@V&mgwxHs&R z3EpDz9s?EQdY>}X)0-)%g^9GAZ6ZzQ%)_w@&01F33v4Lm^Y_XIrv)zn9*k%A0*X_R3QQfiN9`8wtAL?>AcsWj)642>ck?t5W!QrZO@D0~4h z<38p$wYQ%pJm(B5>KiV`qx7L|9%pN)2F&(fIg6CYVQHESk>B7HfUGo%m9R^W1Aa+r zN*VaN0E7b8GpLoe&#@O7c~qjh?6J_iQ6Wx?FRLvw(n z2^aMTy9ANeIVa=86tUW;-{ys;*vjk9b*-#XajW#CKlxQeDI@+Prg=(u+zc*V@ouFH z!M7EF*Z`qnt^h)Jym4m2jGzYfdAhVe@MN2GU^xf8R3kUKLl`R7Sb*wq@UruM(vMn& zY3JO7KfV1qp$=qN8n?dB=q1;wG4g63p<`^6utvj|PR98j;%uz!;030Gom@IIoq zfwWVY=&4j|iAc1u(Nc=&xQv41?;ncFa$vEPZ7NixULejrQi!YF!Uo=hTBeV?*|g}W zcrPyvz+(F7*t-Rx{+?i{jZPLH-?5?k(aFUA_GtQX)Hu~|P-`g#JPcl>?wDEzdqSEV z^oa4UoKxFef9{DP*1vExg=lRoQfd_4*hl0L4;jbG641+DpaOv}7yW)+8D98fQKQ2l zxxY3Wp!iIv4opb;$_ECNUhGy1v@bbs^pkLhcB{|P4>rZ?0oa{m80yR$c+qP&UMj~It>LSJ*6 z>V^o+%RPr#b4?dWhBHB&s={Y6XNBRV^Pj>oF-FS?GSYDeNA1VldR``qeR%>5mL!Z- zn+HdvMS)Cqje3c#+!Z5hk|FhLHF%9CYmVX>NU;8gS1;Id&b{=Go-Ya;-jx_6njii! zm!aM)@v_x>PJqWbxHV6?zg{24PUR4-&&I$)6Y?1rP6BuPvI&RmNAr`b6}X+^nWKu9 zp@yTHy20Y9+1`pyx=?p_GcHPbnZ*a^I)UK)(c{g+%E}Iy<|p%&i0uje^vdP~p(Ei` zCt_KxSZPOv#Z|21BCCVp;E3wQw3%{|v#9sGHryO_ZnCV>au<26`{j7^`q*&XZNnFp z&I%jS07&2*)v{g;->zgv%n_Db`vf?$I(5)Q1|Pu9Zl`r+3;J<1rf zIdX)m4$lV`Y~VX8zR%tQJ4}bw@6|*k6yzwCG}Q^Qh4ik`>@PL}(M>MPw>?h$+iREL z_>ny8BLIt^=cqR*__lbrTfB`7pGm){_KUiDlD3c2jkY4wAsZ^fucme>OT7aNcU_hg zb#s_*P-22bfa_A4+cbZ2J!GAr7p6rOIVffZk9dA2cR1B$Znj5&%d-3k)w@9=K0MNI zwjg)v&+~S&n1wW$e#-#o=~6Y_-s(DezL2OhdrjrO%hy zEABB(`>dA5K)>Uau35dm~-h1bkG(>%@V!oDs(5>+~Q zZ-toF63zuk?{f}VC;3W#~p()mlLY->N*QQ$^HU06Jj zNA0^uI}>hO_L0g%PPcHmhg0W9fs?lsR=hjUodYC-@!LW{#LjqaYDoK%2cO4OPjvZEV8u5!DkbjTu!aM=6#hH9CDnR zfyZ+y)qZ;^L;kF`w3(~Q+`ShA3B{4s#_C4jgsLpVgVSVFtO|skj-yrF1Q!^%buAJ6 zCXVTThquq84?Ag-X|{VIE`le^QO5ngoS8KEQR_jwD>w&W1E9i06h)#=a-)I(Rqf-} z=4k_n+`;zy=a&~Uv0u9N%^!F@# zeC^8bIFbNlF)`bawtfc(?kw)d{s9gqb$+1r7CJZ1^5Sn!0AOyLPer$CjbSz9nyrcx zU@^r$?-KGd@c=4s8R<}&5d4de(q^iOapvSc)(6Ln*0^Yz>QTIuq)bXxqUJ+ypH7@D zd6bmojrL!*x_xp^Y#p!75ry>0sV!%=>DISHcg=MN*RqEVd!{m4jfm2dw#}y>2H|>x z1qY{>5vz~dI_v`w=&H1>$HVjJ+9c&XyQD5H2D@@wVmw3Yz+K!- z+XUf0jv<<89pDiATTM~BolGy$fUY44mqubN`v~#UJG3}O8tlf*c zs&4?_-rTs-CJcy87S6*1)Tqb;y<6UD!Ggmk<8!wfn5m1`52rV@Z~aL=UES!CC9%_Y z?|9ZXK~U@!qB+zC4a**tahWLF9t}Q71i$7NZCB|np6=t+qE)Ele5&gV{ql*Ojr(uW z-u14N$~L>B(jeRc6|SCSAaEXGI7-loZTq8CdjojgU#Q4ht|xW|`A29gqfvJ)SGJ}v z<^O!WPS)ev->zb+^h7uQF6GFwK1ae46!mVE$zskgZvXmTqj)O3$(sx}yA&|)>xU1| z6n(%7%+ByK=$7H?4;L}UEJz5~KQkS#aI!`Y5#=!_#+)_?#A?u*l`^iIQukC{b>H2N zV$9CUZ0P4y&s{OTVO&CUDgq({GRsp>zQNK<_-FlAz8Ho$Z95Z>mp@{8)-_!z$8{&N z8u>@XvEOH=rx3m6n@FH!haB)%INNV>+wnxFlpJ_^BLXshO3SZBkt~;Zs0!37EbgP^ zJ|7=THe4@<7DPH#Nz`GLE_TNDU5>8v4EEYhPNxnp9vqC;g)(HN=ApM+g3A<_`;w_J z6O=cbF8XMDzkVvRZF(w(6%SA1bv7;4dDPk}?D zr(1OpFTVHaaa^$pU2v0hwS86@HD+&iOn-Rn+)G+3^UIUghCB2s@sevkYL&ZD z-(OWoTA8_?=fhr1WnQTjwP!t-8dE#(^8WD7I9ArcICm+>#7?yD8D#ylmSTr;GjOTp)KJD6MMX&5tu@y&R^>j1UxJ>1y*vq zFJI?S5$4Tvtl2C#e2WPBvY5*cUcw${Pmds1Y&?W{#OJZ8B0wQ$yJ`-euQ!*Kqdq5FgJD z+OBhWW$VIZ`DY7*M#eMjH+PSA?Fe-$-V zo#A|W&ziG&_QQjd@Q#;2&yzgme`1R~u+mm9rXC9{Ra}A3PU$R+KPATd8$KSViD^S` zinrN$%@ti!xmP&pzDTv@54XmhAy#2TR(j@qZ<86zb5-aM>l$TW0J>1rnMNavlBjNv z0!^Nj{5r>DEwr*;?^8HijpmDF5myFAVRj+fCE&4VTrk^OgtBpS6G^APk7)vHCROaF zM&O9`vry^B0i;Y#$k|;kX0lc=>AU;aX3QD*G+ghGXdfb~a6PYL5;NZP)JpHD&rQGl z3ZquK#-9#9a5eAOJ0nM*M`)B{CRf|a0#QLs$wT5xQ51h&$;AA(i2KC;(%D&(lGod@ zdoVK##K~z0h2(B#wS^~lzN3xG9J#!;&@liqq=psc1HmbdOz5gxA=P4{_uDXRX*J(Z zhf;E{Y@Z^!gWJ6GVv}y%<>W+-$K@PF!cz()X!hZ9aM;?4AFyV*y7=?q>+$hH*aFQ8 z4dy2RUMiWo0J6$0Wu<9XKx1llZ==q9K^wgvVq6)B-p-;~+eCXhHmxq>gM;&InX^gO zFG#+L6k{wbeDGCK_11#kT)ND?UazIQAp%_>SGMSohRLZtD#Cjl+++>e{OF}1t0Zk2 z`d0LX*7)Qp91ZbU-&~4t*GL;gCaxx|o7(P)Xe<9&-F!KL*jm-|a+`BWT2Qs*V9L5& zx%y#jA>P%sc&i3Sd360WsS*4K!DoCLDgsgcP%F}#y~8>8TZ9(5<}$!BAIPkxv?^;I zAnbmDSp{WM>?8^=;N*KL)j&%@L=q9$;qBq&H#aQ3z^i%Q8tVc}r|bNVA$jx)Cce_Wsty3cBG!!B#iShQ^md@j>&df6UTAeSpSi2M3!XMJ+iv&U zo%-*d)^eO-VF_Ox4Nws>!keV{B!4~#fA-+v;x7@-d|SH>LR*SU^!%ij=_7fXn#35Q zbYDm|f&;Oxo{R*#3Ph6sOx$~LV z{tq(000v(_Y&@!-XOXi=BaQw@tyA6$WNBj3w7dG!7ZRl=k?t>9H0^D^B&{ubjn|NM zDVjXR!dH@!P3R>YbJJW4oBdJM&u3uIDW9^8Po&iDpUZxhXno0F#;pl@YaYACza1Lk zpY8zj!n_1E;5f6=981P*9_z_i!6_x$Rh2yBY}usi$byF6&woV)6uUP5h4gRBq`wp1291eK#E?A&AGAh|HB&`1-x!-)x1dPPA2gG?_B- zB0XgvsXIxdM(d99E%x<&j*@N3&X)%SAAVRBQk;Y7C;w8uUOs8?h6}P3;M=Ip0oD(_ zkDf<0-OV1u|CRqEKM*hqiKhfnq{UOLu?6JL(VlF4P06tQSp1TE>7~!;NA{LhX_)_3 zI*Kk{me3l!hvkqqa$fh{!<7H5`Y)U9$V{?=Q?EOOTeyNd`sm;W!2goh%wwxlYNhE8(OMS~x$-rrrO~*< z8viQSd}rsmU2V=wK6WMs-WQa-9}5#!=(;M>((Q?~pAtSho*A5Di4D9#bmtuevcMA* z<}&8Bk34&n`}}E@rx(0lYh5myce!QZx)mt^AkyXEK2+Z>{jh!cHO|Hd3fZ`06#%+Szbfb(n-4Wo^G!&s>|ddBTYj@uUb2&%zAm-MoeMS(nXB_G`&el>f3HW>1=m% z)mYoQuYbGrR80SE*!qpSCZ^f4uiaQoF}>BOju>^P$|aus9aoEw{Z^Gy-%4>$KnVFmpGZo9Oir#BqxAybj?)HS9g8V3wFL~{v0b4Don_H3$6*qRQi}XYC&ZQh)l~SgUR{47oj2TbSJE*VL3BRs2lK;UKe56=tU)9Hr zv(7-jF0AH$x~b{g57YzER*Y_FuZ(=~Xou)g|5gl6`%{cj*C&+_5xQS(7c|%fM0VUF2gL2|m!pBdRYL zq$J$00G6>fLV2>Q(==oM-d-Urc@Vtno%ktVEsoF9Z~e?GT8Ap#3IZU~d)H6RJ7ech zM@J#`^?;Am8w9J5QmQ}Hs5#xOo?gk&ev|^<&;bL3;9pn6y<@i6BmDpuSp`5&lg6W# zc;JIR`eJ{6T*_BAiZ{0TwIwyVv7~8hx~Y@&)+aR;M^qi%z}Yb_xu9NQ=O+#DZ`k49 z<}7@My{nUn&D;;I6=ZYKtAdPQ&&w$Un?I{(?G(ItvO;<})#(&4JdEGcFBMKu@1Np|M>m$+nclUUq3_l|6lvdKdQc2YHO>9#b%eh zOf4*MG@DEr2zqdY3uZ6>%Dwr*#@oGT9&YY^GX9bN;8W-bvAM67+4eIGAiDZKf0W&z z4h@eF&!7VI!xn1*>9;KOq!sh+_bI8E)So)MAw@8!~2pOYW5Qzr`SR{i~&0Aj{tluV}K2!JNhP_c09R-ya7 zA-n!{wSEvv649DE81P4E&QmPyqq?T=vzP3y{K(_@NgT?W4`uzMV=meYT*>l!k;%dJ znW_cS#cjlC$vZ`?veUiB-E0=?=CE5$iL}|T?1K7ffZ-}J&WaE2SBpKuhZ`%?1+}*E z(CA1!x&i~hufDI*?wHjECtR1l#7ceVnDU>!dYLe|!e8Ih#S5@SccO1lBH%GDISIMf z`uD6eK!VN+a>>%lMZaNVEBsDypj8i)VPeHcw6%yrX#En}aM!0mN9e9- zYY%oxWdVX`MnpM#)bRJi6sRFM9Hjbvg9ogF0Y5r#u=p)|#mo5DL|BgsA=7z#dHpNr zW_*eX0(GpWw|0#j+rML2Cy7|k^)cz$vfgAtnz4Ouk=Tt2J!zEsS9vYPhpC0*~hEb zV_j)_QgM99J*(7faz0Bc5GNG(F$pO*DKjjF@--k`-5q2;SQ*JmcWwq;eA~j95px*D z_iPY+E>O!lUe)#;qhH3qUoI%z)~T_QzNx-&&>%E4vZ!hTyfVt;4nR}TlnpSmR)Y%& znR`<4fhAAO_5?Jd9AU54sZ@O?Wysyw*{wpEfOHXkX^jCD_BE3CYGr9lzcm_ZV6@a4s3M(}(I*ugd-rq^ zd315gf~?L|Qp^yH9j~$(YTRsV%fH>N*)<-i^7!Dye0MK8PCW$XkiBid z4UqnVFcTwX zV9aOwLF!jM)B5ER)CZ3lHVQI%3p4etfBTPE?|Ibq|P7+FXVavDw*h5lK%(jY$3U{tLZoN3YYK&B(D$ zz+@(agVwN2VILfjXu@8NdRl4ji1PBu;!pACoqjl|A&B|a@5!N0y?p-&O)gCWuRyrb z$fUR_8GZ?dkxq1p))H18GKstgh-kGg!&tbX3PJ+|s&MpW|J{CWdbF>GM(Ko+wD9qa zx98b_@niPLezehRB3*vZ3#8BZ@^??CR?2QYY6ISn>eq7uF-Y|&mTn4gDs4n$$fUCt z>J$TZW%pHD>C)gH-zgw5#UEo_TzHy@?OkYSs3Oqj@Om}GBi&*R==Xy~+xc2fMq!Jw zY%FY{D)fq_+x-y!J;{=>>KcLxmjDmylB?^r)vf-0gJsgG0!U~>eQ!5qX@PK)dyZr z)D&nu?@L^3l1d-A8)(|oMwsl@YLnPf8y}yn!KOyrh^%ty=Kwdr$b;jRE6aQn;foQu zb;E@^%@;J^(5KcsbfM%GZ!A)?T~-@nZL`^A0+s+;s{wB)#q5Vy=-{<@Ter$SX}KN4 zp;hO8^X3dm^W>4RZ*tm;lAjaov^_?yIx?-KM6N$DX136y%%uZi#D@i$N)4}-Mi=^wX8n8nLjU)nM zhT(Z!-Dz{=z}0$BeFKZm@qASD&i=O2#I!jaTGqImo=U#zets2>xghOOAWU6QT&qy} zvRCY4=e|0KDa+5+(F(p^>}v0cxQJ=%8mifR*mB!Tq~3HjRBz5O5#s5N{8hohVVqW; zx~eWItL0+r8rDR;hyU$2+m3q3D zwMf7k-;uF{JXRrM_zW9|jENz3gwj9by(WkxilEvqY_A|Q=b|b|WQ4FZrE^K4Mvsb? zi=L5P^RMH38du`uOkF?yi~Cgxl+Z0VQH!k0zeg>ctaSiHgQq4N5F8gziu%2ACOw53 z*yTYbCS^I5XXNIma&-;5e2~ho*Hi5M{&Q$y3PqsC6PqZ|{#0oxJ*nC|m;hH2780u( z%Uz!J!LN5($a#Nj{_E|!K#3w2_q(C6JUNzX+EW0N`dJIUF`y% zG7Tg~mQFxoy4(me^TUsBh0Q;E3P6A}DO5L7lT)gz*3H@3Lz_L#z$n%>>fBrc!Ppy< zyu16duA%d3A$R*W5TOV`?ay^LoSms6XH0XeoV06e!f^n8hmV=H*tHz*SDpJtXpSBAYw+&l)n}gSk#5$r~Z-Id+dD0A}n9qm!(o>iOxGGewb(91$S@ zZak$YQVuICLbr<|1L?B6FuTp)ogN`I>4Yx0ROXiSc$mXO!&+BljG<$AM^~#4E_Qlq zzIq8)_RHCj9jpv0!571M%Y-FT^ZBLvldKW(LU#Q+Zj$@@xm)|^#Detu6Kh62 zPd7n!Fz57FMBw25y#7uZeQXPH$&>bH_I>F3v#)L!xVQ^1-DYbNF#KPVUabJf1<};A znn&_xUl1~EgDJ%L^0pUV-fE&Ou0TR=9J%u` zq6$a-S}CPyFyU8Fs=f=qCO_T6d+a;&0!}4mwr_eVf!{-|pxCi>dD6FMxVAaSG)Ttr zrO{Hq^80%@^Dc-x;QXTe&*BboGyf8IFu$e#U&S3F9&tH;76K1o$Es2IC>_MORW>53 zn-X1jR?RLPkz~c^p!(<_tettgL+;x)p;U`5594;h@;c36spi%n6$JH8q~hUH>Wy3l9aQq%Ljoah8c>cN;POwJRSUVryVZ<0g_&K?lo917@fK6%8PX%*^); z&*&Q*oXyA{9@BV7eOA1)Fj&|nq^J!qDA;mbs+@&cTzGDH*8DQ4W%5e#^ec+1eX3P^ z6M2Am{Y&IQJ~@G?K~P|hn;5-4zg+5w-d}`KEHpWTIf!%seb^zaQ4xy+y@s3GL}RF# zS2*CkvCOaikuj(xEQp$b#FE^iCWsl0>6;Z4LG6MI*2B{@8Z0^w=a{o}qj0Lb2F4)u zm%XiR7l$5IFxN$c8iMO;j{UjFbQ?;4F!lLJ5C@+2XF~H!%XzxqYYmE9OCQY)xFpSF z#eIPN{XqU$@TvAP$hq~Nl+`oYz9|F;b<;{`0n%lak(`Cbv#-c4wQqt5707tkd9GR; zXq#9&*64oJTk}sXK!TugwUr}aQ>&j8Vrd6-L{PH5h;+!K7?~3}SS$H`o$8O9V%rO) zBpzxW8rl|r%*o<#_HOyhFi4Dv2QWrIG?d^mHtm$Q%>VtOhE~L`v3|_NQ(p4r)6rt` zi1+IAMGd=SKk5yZG4#N^cMscHMCKcFZ>kfGlM13J-_=iS)fOeEN$XQL5JSq$=GAkd z5s&wtVHtrU6F()4!3`#VtpZ}RXQ9}MCWT#cRhmX1B7L%URX`V@OG0+~P|2__$4LA% zfioEk2OE94dlfThxY~){Pg(|JHgyK-_=xYc5&AgMQV<~Epn+J)ThVx?o3i)Mi$}R6 z^Tj;EUkrM>#uktEQSzEug8_%?d9J9q5_@R__J>WR5VLo#66TQJW%Q&mUtjt6Anz%U zH1DO3+Y<&J*Y}Ye4AgcZvfnDFIUj_2CO520?Xu+k#fkOEb+f5_QLOFTEDMv;wWb0Q zw9=lleI2vQ?dHXyqAD_O7q!^`B##ix5|bSoGJlQsTK_1Ie&hPFdChG!>d^nek@qM2 z5Sgg4s>|bkh)%lYYgk<)!h0saR%F41L~I3+ut>qoI2}N$N0_p@3h5jN_J%bvSxFBl-T_8t)Q>0fTf(~w-`EJq`OD|Yay#$pT{bd@_0%D z+0tJ!PbJGM5J66a!+1)b_~b;NTz*9Y6GoIhWlN|%QIOC@@N**v�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 literal 0 HcmV?d00001 diff --git a/samples/api-inventory/record-api-calls.sh b/samples/api-inventory/record-api-calls.sh new file mode 100755 index 0000000..00e4e64 --- /dev/null +++ b/samples/api-inventory/record-api-calls.sh @@ -0,0 +1,60 @@ +#!/usr/bin/env bash +# Records the API calls that your app makes, using Dev Proxy and its API. +# +# Usage: ./record-api-calls.sh "" +# Example: ./record-api-calls.sh "https://api.contoso.com/*" npm start +# +# Run it from the folder where you want Dev Proxy to save the reports. +# Requires: devproxy, curl, jq + +set -euo pipefail + +if [ "$#" -lt 2 ]; then + echo "Usage: $0 \"\" " >&2 + exit 2 +fi + +URLS_TO_WATCH="$1" +shift + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +CONFIG_FILE="${DEVPROXY_CONFIG_FILE:-$SCRIPT_DIR/.devproxy/devproxyrc.json}" + +# Start Dev Proxy in the background. With --output json, Dev Proxy prints +# the PID, proxy URL, and API URL of the started instance. +DEVPROXY_INFO=$(devproxy --config-file "$CONFIG_FILE" \ + --urls-to-watch "$URLS_TO_WATCH" \ + --detach --output json) +PID=$(echo "$DEVPROXY_INFO" | jq -r '.data.pid') +PROXY_URL=$(echo "$DEVPROXY_INFO" | jq -r '.data.proxyUrl') +API_URL=$(echo "$DEVPROXY_INFO" | jq -r '.data.apiUrl') + +# Every call to the Dev Proxy API requires a token +TOKEN=$(devproxy api token --pid "$PID") +AUTH_HEADER="Authorization: Bearer $TOKEN" + +stop_devproxy() { + curl -sf -X POST -H "$AUTH_HEADER" "$API_URL/proxy/stopProxy" > /dev/null || true +} +trap stop_devproxy EXIT + +# Get Dev Proxy's root certificate so that your app trusts it +CA_FILE="$(pwd)/devproxy-ca.pem" +curl -sf -H "$AUTH_HEADER" "$API_URL/proxy/rootCertificate?format=crt" -o "$CA_FILE" + +# Start recording +curl -sf -X POST -H "$AUTH_HEADER" -H "Content-Type: application/json" \ + -d '{"recording":true}' "$API_URL/proxy" > /dev/null + +# Run the app through Dev Proxy. NODE_USE_ENV_PROXY requires Node.js 24 or +# later. For other runtimes, configure the proxy and trust $CA_FILE as needed. +APP_EXIT_CODE=0 +HTTP_PROXY="$PROXY_URL" HTTPS_PROXY="$PROXY_URL" \ + NODE_USE_ENV_PROXY=1 NODE_EXTRA_CA_CERTS="$CA_FILE" \ + "$@" || APP_EXIT_CODE=$? + +# Stop recording. Dev Proxy writes the reports before it responds. +curl -sf -X POST -H "$AUTH_HEADER" -H "Content-Type: application/json" \ + -d '{"recording":false}' "$API_URL/proxy" > /dev/null + +exit "$APP_EXIT_CODE" From 25d116443faaacf7482e885e4d8b581c15d67bae Mon Sep 17 00:00:00 2001 From: Waldek Mastykarz Date: Thu, 5 Nov 2026 11:54:03 +0100 Subject: [PATCH 2/2] Stops Dev Proxy and keeps the app exit code when API calls fail Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- samples/api-inventory/record-api-calls.sh | 26 +++++++++++++++++------ 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/samples/api-inventory/record-api-calls.sh b/samples/api-inventory/record-api-calls.sh index 00e4e64..d618ce6 100755 --- a/samples/api-inventory/record-api-calls.sh +++ b/samples/api-inventory/record-api-calls.sh @@ -29,15 +29,21 @@ PID=$(echo "$DEVPROXY_INFO" | jq -r '.data.pid') PROXY_URL=$(echo "$DEVPROXY_INFO" | jq -r '.data.proxyUrl') API_URL=$(echo "$DEVPROXY_INFO" | jq -r '.data.apiUrl') -# Every call to the Dev Proxy API requires a token -TOKEN=$(devproxy api token --pid "$PID") -AUTH_HEADER="Authorization: Bearer $TOKEN" - +# Stop Dev Proxy when the script exits. Use the API when possible and fall +# back to the CLI, for example, when getting the API token failed. +AUTH_HEADER="" stop_devproxy() { - curl -sf -X POST -H "$AUTH_HEADER" "$API_URL/proxy/stopProxy" > /dev/null || true + if [ -z "$AUTH_HEADER" ] || \ + ! curl -sf -X POST -H "$AUTH_HEADER" "$API_URL/proxy/stopProxy" > /dev/null; then + devproxy stop --pid "$PID" > /dev/null 2>&1 || true + fi } trap stop_devproxy EXIT +# Every call to the Dev Proxy API requires a token +TOKEN=$(devproxy api token --pid "$PID") +AUTH_HEADER="Authorization: Bearer $TOKEN" + # Get Dev Proxy's root certificate so that your app trusts it CA_FILE="$(pwd)/devproxy-ca.pem" curl -sf -H "$AUTH_HEADER" "$API_URL/proxy/rootCertificate?format=crt" -o "$CA_FILE" @@ -54,7 +60,13 @@ HTTP_PROXY="$PROXY_URL" HTTPS_PROXY="$PROXY_URL" \ "$@" || APP_EXIT_CODE=$? # Stop recording. Dev Proxy writes the reports before it responds. -curl -sf -X POST -H "$AUTH_HEADER" -H "Content-Type: application/json" \ - -d '{"recording":false}' "$API_URL/proxy" > /dev/null +if ! curl -sf -X POST -H "$AUTH_HEADER" -H "Content-Type: application/json" \ + -d '{"recording":false}' "$API_URL/proxy" > /dev/null; then + echo "Failed to stop recording. Dev Proxy didn't write the reports." >&2 + # Keep the app's exit code if the app failed + if [ "$APP_EXIT_CODE" -eq 0 ]; then + APP_EXIT_CODE=1 + fi +fi exit "$APP_EXIT_CODE"