public inbox for [email protected]
help / color / mirror / Atom feedFrom: Nikhil Mohite <[email protected]>
To: Dave Page <[email protected]>
Cc: Akshay Joshi <[email protected]>
Cc: pgadmin-hackers <[email protected]>
Subject: Re: [pgAdmin][RM-2341]: Add menu option for starting PSQL
Date: Wed, 19 May 2021 19:12:17 +0530
Message-ID: <CAOBg0AO6A10OHiQAOOguagW1mNzfK1oVPHG9W+JSCkYjR+xQkA@mail.gmail.com> (raw)
In-Reply-To: <CA+OCxoxdaBmh6e4Fo1F_+vZExq8SPUyGAByRzOPy2kz_vgRiSA@mail.gmail.com>
References: <CAOBg0AO6Tjksb+EOA_-O13yRzdL_2d3y6G74m=GGQS+Ymjv=0g@mail.gmail.com>
<CA+OCxow9+UDMrsBBvJKW2AeAYaN4cO3w7kBGNKtsWhSM6_D7gQ@mail.gmail.com>
<CAOBg0AMVyLBma8wsbZ-VQWF4q3OAhqWeRLpmrxVcM_YOKH+MDQ@mail.gmail.com>
<CANxoLDd2xMu7ym9PFdhYUSy4ucNuPoZ2fvaRkuwyB+EqowLXwA@mail.gmail.com>
<CA+OCxowoz1oFE=eMKEnfFtf=oDrkPKHGfZpUGRW-sG_tpfMBTw@mail.gmail.com>
<CAOBg0ANFNvtD-LoFxXcLY5JJ4BVH5zNyrmdBED6B++-nKf012g@mail.gmail.com>
<CA+OCxowW7BEZzULbEpn73ygqWtWkUwdCAB3PMcHocUeQXcM3ow@mail.gmail.com>
<CAOBg0APGPTA4qNNryAXMwKP63uFLxQdQwnFdDXMjSr4OeH-HAg@mail.gmail.com>
<CA+OCxozYus58i3BhP37E-2Xc6Nq5zrJegcq+eANWpvN++_LtXw@mail.gmail.com>
<CAOBg0AO7NfJjLLFD8g5NkkbbnKiCSR5g9yshxc-65sWk2sFyBA@mail.gmail.com>
<CA+OCxoxdaBmh6e4Fo1F_+vZExq8SPUyGAByRzOPy2kz_vgRiSA@mail.gmail.com>
Hi Dave/ Team,
On Wed, May 19, 2021 at 1:43 PM Dave Page <[email protected]> wrote:
> Hi
>
> On Wed, May 19, 2021 at 8:58 AM Nikhil Mohite <
> [email protected]> wrote:
>
>> Hi Dave/ Team,
>>
>> On Tue, May 18, 2021 at 8:41 PM Dave Page <[email protected]> wrote:
>>
>>> Hi
>>>
>>> On Tue, May 18, 2021 at 12:12 PM Nikhil Mohite <
>> [email protected]> wrote:
>>
>>> Hi Dave/Team,
>>>
>>>
>>> On Mon, May 17, 2021 at 6:47 PM Dave Page <[email protected]> wrote:
>>>
>>>> Hi
>>>>
>>>> On Mon, May 17, 2021 at 11:01 AM Nikhil Mohite <
>>>> [email protected]> wrote:
>>>>
>>>>> Hi Akshay/ Team,
>>>>>
>>>>> Please find the attached updated patch for the psql tool.
>>>>>
>>>>
>>>> Hmm, this version is also broken. There's a typo in
>>>> editor_template.html on line 138 - it splits a string across two lines
>>>> which throws an error. Having fixed that...
>>>>
>>>> I also note there's a lot of Javascript in that HTML file. That should
>>>> be pushed into the webpacked bundle I think, and not included inline in
>>>> HTML.
>>>>
>>> I have moved most of the code in the js file, few things are still in
>>> HTML.
>>>
>>
>> Hmm, yes - in particular, colours for the different themes. Please move
>> them into the css for the themes. You have a mix of style, layout and code
>> in this file which needs to be cleaned up.
>> xterm V3 onwards they have provided the API to set the theme and other
>> settings, earlier I tried with CSS to override the theme but couldn’t able
>> to apply the theme properly as some style get applied as in-line style for
>> the HTML, so used the API to set the theme.
>>
>
> OK, but either way we can't hard-code styles from themes in HTML templates
> for individual features; that way leads to madness.
>
> Perhaps Aditya or one of the other team members can give some assistance?
>
I have moved the color settings to the respective theme files. Aditya
helped in this.
>
>
>>
>>
>>> Speaking of themes, the background colour for selected text doesn't seem
>>> right (it's barely visible) in the dark theme. Can you fix that to match
>>> the colouring in the SQL text boxes please?
>>>
>> I tried the default selection color from SQL for the dark and standard
themes but still, it was not readable so just updated the color code with
another color as follows.
1. Dark Theme:
[image: Screenshot 2021-05-19 at 6.29.43 PM.png]
2. High Contrast: (using default SQL selection color)
[image: Screenshot 2021-05-19 at 6.59.52 PM.png]
3. Standard:
[image: image.png]
can we go with the colors or should we update it?
>
>>>
>>>>
>>>>> A couple of other things I noticed:
>>>>>
>>>>> - The button is enabled if the treeview has a Server selected. It
>>>>> could be argued that the query tool should do the same (defaulting to the
>>>>> maintenance database), however, that would be a separate change, and psql
>>>>> should be consistent with the query tool.
>>>>>
>>>> It is now consistent with the query tool.
>>>>
>>>>>
>>>>> - If I do a "select * from pg_class;" I still get:
>>>>>
>>>>> postgres=# select * from pg_class;
>>>>> WARNING: terminal is not fully functional
>>>>>
>>>> I am not able to reproduce the warning for the terminal (I am working
>>>> on Catalina 10.15.7), I checked on browsers (chrome, firefox, Safari) and
>>>> also checked on local nwjs runtime but still not able to reproduce the
>>>> warning. but found one limitation:
>>>>
>>>
>>> It looks like that can be fixed by adding:
>>>
>>> env={'TERM': 'xterm'}
>>>
>> Added this in the environment when opening the psql panel.
>
>>> to the subprocess.Popen() call.
>>>
>>> I noticed while I was playing with that, that you are passing the
>>> password as part of the connection string. As I've mentioned in the past,
>>> that is absolutely not acceptable; it will expose the password to all
>>> manner of tools (such as ps -ef). You *must* pass the password to psql
>>> using the PGPASSWORD environment variable.
>>>
>>>
>>>> if we try to load data from the table containing millions of records,
>>>> UI gets very slow.
>>>>
>>> Removed the password from the connection string and added 'PGPASSWORD'
in the environment.
>
>>> Is xtermjs discarding the older buffer contents when it fills up? Can
>>> you tell where the memory usage is?
>>>
>> I checked the psql memory consumption in terminal and pgAdmin psql tool
>> memory consumption is the similar. Also tested the performance and query
>> execution timing is also similar.
>>
>
> OK, so there's probably not much we can do here.
>
>
>>
>>>
>>>
>>>>
>>>>> - I'm sure using \q in the previous version displayed a message saying
>>>>> the session exited (the one on line 138 of editor_template.html). It no
>>>>> longer seems to do so.
>>>>>
>>>>
>>> In addition to the issue above, it looks like the \! blocking may have
>>> lost it's ability to ignore quoted strings:
>>>
>>> pgweb=# select '\!';
>>> ERROR: Shell commands are disabled in psql for security
>>>
>> Fixed the issue now it is consistent with the psql terminal.
>
>>>
>>
>>>>>
>>>>>>
>>>>>>
>>>>>> On Tue, May 11, 2021 at 3:40 PM Dave Page <[email protected]> wrote:
>>>>>>
>>>>>>> Hi
>>>>>>>
>>>>>>> On Tue, May 11, 2021 at 9:02 AM Akshay Joshi <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> Hi Nikhil
>>>>>>>>
>>>>>>>> Following are the review comments:
>>>>>>>>
>>>>>>>> *GUI specific*:
>>>>>>>>
>>>>>>>> - We need a panel icon for PSQL like query tool, we can also
>>>>>>>> add that on the browser tree toolbar.
>>>>>>>> - PSQL Tool menu should be visible for all the child nodes of
>>>>>>>> the database node. Follow the same as Query Tool.
>>>>>>>> - PSQL tab title should be only database server name as the
>>>>>>>> user can change the database/user from PSQL command, so it's been difficult
>>>>>>>> to update the tab title.
>>>>>>>> - PSQL connection is still open even if we disconnect the
>>>>>>>> database server from the browser tree.
>>>>>>>>
>>>>>>>> *Code specific:*
>>>>>>>>
>>>>>>>> - Remove an extra space from requirements.txt and package.json
>>>>>>>> - Documentation needs to be updated to let the user know from
>>>>>>>> where the PSQL tool will open and on which node it is applicable.
>>>>>>>> - psql/__init__.py check there are so many unused imports
>>>>>>>> please remove them.
>>>>>>>> - We are not using cheroot so it should be removed from
>>>>>>>> requirements.txt and also remove the import statement from pgAdmin4.py
>>>>>>>> - Test cases are showing successful but actually, there are
>>>>>>>> some routing errors please check.
>>>>>>>>
>>>>>>>> A few other things I noticed:
>>>>>>>
>>>>>>> - I was prompted to enter a password. This should be passed in the
>>>>>>> environment to psql as it is for pg_dump etc.
>>>>>>> - There seems to be an issue with terminal compatibility (which I
>>>>>>> didn't have on my prototype):
>>>>>>>
>>>>>>> ml=# select * from pg_class;
>>>>>>> WARNING: terminal is not fully functional
>>>>>>> -[ RECORD 1 ]-------+----------------------------------------------
>>>>>>> oid | 79354
>>>>>>> relname | housing
>>>>>>> ...
>>>>>>>
>>>>>>> - The panel should honour the styleguide. I'm running in dark mode,
>>>>>>> and see a jet black background. I would expect to see the same
>>>>>>> background/foreground colours as the treeview.
>>>>>>> - I spotted at least one print() statement that shouldn't be there
>>>>>>> (debug output should go through the logger) - psql/__init__.py:235
>>>>>>> - This seems suspect - why would there be a password in a connection
>>>>>>> string we've built? And why would it be xxx?
>>>>>>>
>>>>>>> if 'password=xxx' in conn_attr:
>>>>>>> conn_attr = conn_attr.replace('password=xxx', '')
>>>>>>>
>>>>>>> - There's a thick white line at the bottom of the panel, where a
>>>>>>> horizontal scrollbar might be if there was one.
>>>>>>> - The trailing semi-colon should be removed from: "ERROR: Shell
>>>>>>> commands are disabled in psql for security;"
>>>>>>>
>>>>>>> Once we're happy with the patch in general, I'll do a string review
>>>>>>> before committing. In particular, I want to be sure the text in config.py
>>>>>>> is appropriately worded.
>>>>>>>
>>>>>>> This is shaping up nicely! Good work.
>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>> On Mon, May 10, 2021 at 7:32 PM Nikhil Mohite <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> Hi Dave/ Team,
>>>>>>>>>
>>>>>>>>> PFA updated patch, sorry for the inconvenience, while cleanup I
>>>>>>>>> removed the unwanted libraries but forgot to remove the code related to
>>>>>>>>> them.
>>>>>>>>>
>>>>>>>>> On Mon, May 10, 2021 at 7:10 PM Dave Page <[email protected]>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Hi
>>>>>>>>>>
>>>>>>>>>> On Mon, May 10, 2021 at 1:45 PM Nikhil Mohite <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi Hackers,
>>>>>>>>>>>
>>>>>>>>>>> Please find the attached patch for RM-2341
>>>>>>>>>>> <https://redmine.postgresql.org/issues/2341;: Add Menu option
>>>>>>>>>>> for starting PSQL.
>>>>>>>>>>> 1. Added new Option PSQL Tool in Tools menu.
>>>>>>>>>>> 2. Added the same option for Server and Database nodes from the
>>>>>>>>>>> tree view.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Unfortunately there's a trailing comma in package.json that makes
>>>>>>>>>> it invalid. If I fix that, then I get the error below, so I'm guessing the
>>>>>>>>>> intention was to actually include another package there?
>>>>>>>>>>
>>>>>>>>>> ERROR in ./pgadmin/tools/psql/static/js/psql_module.js 23:50-82
>>>>>>>>>> Module not found: Error: Can't resolve 'local-echo-controller' in
>>>>>>>>>> '/Users/dpage/git/pgadmin4/web/pgadmin/tools/psql/static/js'
>>>>>>>>>> resolve 'local-echo-controller' in
>>>>>>>>>> '/Users/dpage/git/pgadmin4/web/pgadmin/tools/psql/static/js'
>>>>>>>>>> Parsed request is a module
>>>>>>>>>> using description file:
>>>>>>>>>> /Users/dpage/git/pgadmin4/web/package.json (relative path:
>>>>>>>>>> ./pgadmin/tools/psql/static/js)
>>>>>>>>>> aliased with mapping 'local-echo-controller':
>>>>>>>>>> '/Users/dpage/git/pgadmin4/web/node_modules/local-echo' to
>>>>>>>>>> '/Users/dpage/git/pgadmin4/web/node_modules/local-echo'
>>>>>>>>>> using description file:
>>>>>>>>>> /Users/dpage/git/pgadmin4/web/package.json (relative path:
>>>>>>>>>> ./pgadmin/tools/psql/static/js)
>>>>>>>>>> Field 'browser' doesn't contain a valid alias
>>>>>>>>>> configuration
>>>>>>>>>> root path /Users/dpage/git/pgadmin4/web
>>>>>>>>>> using description file:
>>>>>>>>>> /Users/dpage/git/pgadmin4/web/package.json (relative path:
>>>>>>>>>> ./Users/dpage/git/pgadmin4/web/node_modules/local-echo)
>>>>>>>>>> no extension
>>>>>>>>>> Field 'browser' doesn't contain a valid alias
>>>>>>>>>> configuration
>>>>>>>>>>
>>>>>>>>>> /Users/dpage/git/pgadmin4/web/Users/dpage/git/pgadmin4/web/node_modules/local-echo
>>>>>>>>>> doesn't exist
>>>>>>>>>> .js
>>>>>>>>>> Field 'browser' doesn't contain a valid alias
>>>>>>>>>> configuration
>>>>>>>>>>
>>>>>>>>>> /Users/dpage/git/pgadmin4/web/Users/dpage/git/pgadmin4/web/node_modules/local-echo.js
>>>>>>>>>> doesn't exist
>>>>>>>>>> .jsx
>>>>>>>>>> Field 'browser' doesn't contain a valid alias
>>>>>>>>>> configuration
>>>>>>>>>>
>>>>>>>>>> /Users/dpage/git/pgadmin4/web/Users/dpage/git/pgadmin4/web/node_modules/local-echo.jsx
>>>>>>>>>> doesn't exist
>>>>>>>>>> as directory
>>>>>>>>>>
>>>>>>>>>> /Users/dpage/git/pgadmin4/web/Users/dpage/git/pgadmin4/web/node_modules/local-echo
>>>>>>>>>> doesn't exist
>>>>>>>>>> using description file:
>>>>>>>>>> /Users/dpage/git/pgadmin4/web/package.json (relative path:
>>>>>>>>>> ./node_modules/local-echo)
>>>>>>>>>> no extension
>>>>>>>>>> Field 'browser' doesn't contain a valid alias
>>>>>>>>>> configuration
>>>>>>>>>> /Users/dpage/git/pgadmin4/web/node_modules/local-echo
>>>>>>>>>> doesn't exist
>>>>>>>>>> .js
>>>>>>>>>> Field 'browser' doesn't contain a valid alias
>>>>>>>>>> configuration
>>>>>>>>>>
>>>>>>>>>> /Users/dpage/git/pgadmin4/web/node_modules/local-echo.js doesn't exist
>>>>>>>>>> .jsx
>>>>>>>>>> Field 'browser' doesn't contain a valid alias
>>>>>>>>>> configuration
>>>>>>>>>>
>>>>>>>>>> /Users/dpage/git/pgadmin4/web/node_modules/local-echo.jsx doesn't exist
>>>>>>>>>> as directory
>>>>>>>>>> /Users/dpage/git/pgadmin4/web/node_modules/local-echo
>>>>>>>>>> doesn't exist
>>>>>>>>>> @ ./pgadmin/tools/psql/static/js/index.js 17:19-43
>>>>>>>>>>
>>>>>>>>>> 2021-05-10 14:38:37: webpack 5.21.2 compiled with 1 error in
>>>>>>>>>> 60041 ms
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Dave Page
>>>>>>>>>> Blog: https://pgsnake.blogspot.com
>>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>>
>>>>>>>>>> EDB: https://www.enterprisedb.com
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Regards,
>>>>>>>>> Nikhil Mohite
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> *Thanks & Regards*
>>>>>>>> *Akshay Joshi*
>>>>>>>> *pgAdmin Hacker | Principal Software Architect*
>>>>>>>> *EDB Postgres <http://edbpostgres.com>*
>>>>>>>>
>>>>>>>> *Mobile: +91 976-788-8246*
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Dave Page
>>>>>>> Blog: https://pgsnake.blogspot.com
>>>>>>> Twitter: @pgsnake
>>>>>>>
>>>>>>> EDB: https://www.enterprisedb.com
>>>>>>>
>>>>>>> Regards,
>>>>>> Nikhil Mohite
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Dave Page
>>>>> Blog: https://pgsnake.blogspot.com
>>>>> Twitter: @pgsnake
>>>>>
>>>>> EDB: https://www.enterprisedb.com
>>>>>
>>>>
>>>> Regards,
>>>> Nikhil Mohite
>>>>
>>>
>>>
>>> --
>>> Dave Page
>>> Blog: https://pgsnake.blogspot.com
>>> Twitter: @pgsnake
>>>
>>> EDB: https://www.enterprisedb.com
>>>
>>
>>
>> Regards,
>> Nikhil Mohite
>>
>>> <https://www.enterprisedb.com;
>>>
>>> --
>> *Thanks & Regards,*
>> *Nikhil Mohite*
>> *Software Engineer.*
>> *EDB Postgres* <https://www.enterprisedb.com/;
>> *Mob.No: +91-7798364578.*
>>
>
>
> --
> Dave Page
> Blog: https://pgsnake.blogspot.com
> Twitter: @pgsnake
>
> EDB: https://www.enterprisedb.com
>
> Regards,
Nikhil Mohite
Attachments:
[image/png] Screenshot 2021-05-19 at 6.29.43 PM.png (81.5K, 3-Screenshot%202021-05-19%20at%206.29.43%20PM.png)
download | view image
[image/png] Screenshot 2021-05-19 at 6.59.52 PM.png (76.3K, 4-Screenshot%202021-05-19%20at%206.59.52%20PM.png)
download | view image
[image/png] image.png (52.6K, 5-image.png)
download | view image
[application/octet-stream] RM_2341_V5.patch (354.0K, 6-RM_2341_V5.patch)
download | inline diff:
diff --git a/docs/en_US/developer_tools.rst b/docs/en_US/developer_tools.rst
index 1ff442cc..bb67e33a 100644
--- a/docs/en_US/developer_tools.rst
+++ b/docs/en_US/developer_tools.rst
@@ -16,3 +16,4 @@ PL/SQL code.
editgrid
schema_diff
erd_tool
+ psql_tool
diff --git a/docs/en_US/images/psql_tool.png b/docs/en_US/images/psql_tool.png
new file mode 100644
index 0000000000000000000000000000000000000000..c5f88ba5a573aa60bf7e08b8a38526dc73e8fcd5
GIT binary patch
literal 23736
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
P=p;Q)S3j3^P6<r_JTn~)
literal 0
HcmV?d00001
diff --git a/docs/en_US/images/psql_tool_menu.png b/docs/en_US/images/psql_tool_menu.png
new file mode 100644
index 0000000000000000000000000000000000000000..c219a0787868bd9427cfc056ce18c9ab562e52bd
GIT binary patch
literal 187181
zcmZ^K1C(T2vUb_FZQHhO+qPX@w!7>u+qThV+qUudy)$oS9{!W-tQ|WdzR-@7nUQN{
zgo2znEEE<L00022q=bkP007Vg006KM1lS)=d~cvX004}MrLeGqq_8l7f|I?OrHv^7
zfJ8)!I=D`fIChV_Nn$M!Vm#s#k}0x)7zA}tfQ+Du5RwE2BN+%PyH>fuCQ&4ERV0O0
zRlq`ExGUO_Ep7~OiWIGyWB#44gn)I=?R(Dl_161w+ws@T=;r$tU|#9ogbC;`K7i0U
zB2Oa~3~L`Ru&4z{2LT|M9SE9NpwQ@~cm(J?m?!_V<z>KvtD4rbwlB^v{UHSkB?tfk
zCc<enDv(fw7Jz^>D3d!Pfbd-fd+sWUl3}Cpm;(lZaPu<9YA|~BeH+*<K7*vJ(a=^%
z0H&Ckv}2&Wb+E@uBSE@@-@YJq9V!$FKzZgMj<o`l=t5aAx8eQ$lvX_OM&uUs!5-*?
z7Z>y#&fmkiyn{2x$8d(SdcZ<(X%r@)ADG|fmR~I>XcXYS9KB-56NSi&uLD?HletKR
z!z|$)#jB3DXIjD^YD5bQxB$siYGS1p7mCh-LD1*m=?ERrue*#0nZh`fwBb>UXARCI
z2|VGuR)VF{ksf1fZBZhT;Uu)jV6Vx8FM?Ub$4-sT=dX8wJy!2*rhZW36aLCHd$4ys
zREXrIf-;~0g=o@B`vgm&D-sF0D1~)>Hd2Edt%BHXOp3TYxPvwcEL1WBai&M3#K=ug
z^+H1i-5MDh{ZaFK<wTB7jU{|5c7Xl_e#qh2B1&@O1aT6Kd~OWr`4l`tN!&|xi6s{I
zLsw&w{YXvD-X@@sTHaYSRN+eJwgha-DCCyMdxcRudkZ)Fb@c@yCbC%`YIy!KL1cKH
z7=u7`5a2X<A+*>sfSv+#TbnDe{+41yfcT?=bO?a#Rb~!iYrWwpd`SY3FTg~I3NTa9
z*chmRM!&u}iWYe`1*Ur~ZhNDBZZP(Q5P+d}><@csPUBltZXm2kzHjIP>d<;i@ZL*f
zfm!RcVw~dBirFnBqX~W>7e*wAm~X(q4+Gz7yugG`A)D`i1^@PICg&k@LBK<(MpOyW
zP9iP7t1-faR*C0V%5;26!`z39p9hB@2qxe*8O~_MbQtK$$A`lM;(ZsORmX1Oa$o8h
zbEXKUx2kR`Y*khmXON;8Iz7*5r)%dEra6oB)5MppToqP5gp2XH%zYQl4y}!QT|?3i
z!5x${Ca-N+L99fqt=-o^b_3)t9~QPg`Q3|!^^nSeAkTM@@G*d|f3B=68S0(wo%RlX
zi9vxRORr?laD}o8(?+7MGq~4V6A(U>1SJ-0;Mwl&1(5euVxgx@p8>oL72<i-U<bG{
zAvpK-^+lZP%6JX<@*B&}dC@$3-}Hqm;Ci2#8br#oPAsefALNB?Hkf-HMFU8C2ZZ?!
zq?-UCBnW~5Y%tg)9*(S!D{9v(HQ3SsEggPb08|5RDd5q7c?HZZuxkgv0z|wQ@`jlM
zo-WXOhfRk+dk6CbutpF+h=3#{mH|O|5UNgG2T?vG280+<f+jJ%h*(pCjz~0ll*R;5
zDX>yxiC8;9>j3<K!3l^n%7vgM{#^q74*d>qNCC?#L@N*Ogd#b{X%>S8GdujKK>0V4
z3t>A-m5}u;uLZCd5O18Gu<8kOBRX(8-0)x}BYSj=W1R;L@I>Fi3Qi?X#h_KKS0(1x
zygCEwQcTxC1P8GBuAKv{_&#MTKyKtrU)s+3t*!^~)(`!@>wVrAa-eJjIR{b@1dov0
z5S@M&A<X>5+F*xp2dJwOxqfS+gi#VMq|Y5Y8S*1UbEGr`cBE%S?Qq<|ut7bf2ootM
zQqY7wNgpM|vgpRx#xR#Gmy88TFX<&h?F8PjgaerRWF4t$l4~-2Vtq1x!e_+?%BN%i
zDIQUY3_(q?RXNKNogx>dw_ji?;#LT(89&9d<*N#ol;st#74*+ePF7A{&ZFlOPA2Ee
z=2mN*#g4nDxqlK)g$@^+&LuY%H)c1Yt<kPYb7fx%z!#g(Mx98XHa#Rgct5nX!)zwB
z^XTSZ>1<kUf^AN;&pc9iJ$d1DNqUibrFelq(w(`UD?i{qw7vO!a=tCTg+1DzJYzAy
z@WAZBLcykDT(EIi-z>zNoETsjQn2V)v`*a=?Fxep*P1$D0u2KVyA4x{l_LHg{T*(e
zY_4M1xcqDL*T~B3$~woQN4sOwt)ek1vN0Ef=OoY((-Gj2>(RR*+5pFZ$N(CA1-_f-
z3U<;iSw0z2l2ei|*|N-5X1xrt%)P97I@`}J)`2OV$>9uH=5-Ud@k;O3-#5LxLA!?o
z@G#$tIIQlB@+`TQ-BTYyo;9JxqRF9?M%hD>QFhWLroT*c4y`7PQ+3r~Dh#M27Og7w
z)p{DDHF4AcD<T(%&+6D(Vw=^p?3?Ubt{NO0CF>}gR?VH4Q>`YNr|NWV*R9r#%}v>t
z>{4~JH*20yyqmjL{Hi`J-`U|};Vj{{xmdV(Tv;3sI8!;6IJX=NxI;N)UCSNY&tzQ8
zxR1H*UAhl~+Fx43b<1_>+6$_?tC5yts&R=Sh(E+7#22Dlcg39dTTwd}+cxpXa4@;+
zT}<{zj|(rvOry0J&mMlsU-4amUafE1dt-P--%>nUJiScJ4=L|xUV1J@U7?<`E?115
zhqhF-jCv<M%i{l-(a5#;)$-+gdwU)CJ@@VSxcI35V0+m#z^+4HkzO(Xfc!H2a{i2a
z>4Cn1rGVl<xG~SuHt^fI>MbqA6^|0L$Nyv)B@4%IWR*ajgqnuhLaKzSgWC;T2;qTf
zf<^st1>xK8cy!?S<d75A7B)5j7uvN8=3wru-CuX}>*ns}31T2TIs6gvnaGyNnfRQ@
zyTGTwOsq)+xxlzUU1WPl^9H0-OK%3Fhp}O#acI^k(P(LeC)_n6WrQtGbR-tD!|EcN
z<DJ7&$CxMlc&H|_CvzvAfpxdkanKQRzkGyO?m;3e#e*v%frZo3eeV3A_P}(kMLA0;
znX;<Pt1P3esmy+^e_pMmY&Z^!-}~d$rNKqgOBsxknAKQZ>^dYI(wfZ0?9C+AR4@00
z!|`pfA!(8fRfda8)1Jxyu8&4YO>60@68^)(54MLrGp&oTL%bKY5|sz}2b4N=hlpT7
zN&z{iASbnR&JoyQ_4p-HSUC02CQ`LY*MX>>%hpjR`|Is1_x(Hc9MltPB6I^3yfkd_
z>s&Kss&a|^X?)xGxJh{#pz^ZJWx~j)I|ag!h^TS`B2TBj0vBbE;ubv|T{WE_H?8Yh
z-znI9@jU&cLq?s)a8lxE;<fo6GbppRx#rAI{_`)J>5D4oc+OR4t>d+6U5*xKy@gKQ
z`?CA{<8P%iz4rQt#h^yeDQH@>Y3-Mr%wP6r<1P~irtICYA8z+VJ_#m@??yF4=V<;^
z=&89C4mH0jUus2a4>sKKwpD$XdsxgZ-<h^eGgFb%q|@~E5$lbXrGisPsqw3^I?4@M
ztzBQw)UC;CIJHl8+dOGqtDLIJshZ0zvp3rh&-p6RYkJgh)w=A1Uw;f?Z`q*Ob#_v^
zD1VwoO`&FP+b7txwXs@R3&#k{9<uE<@7cz+l-lus^1i>X;hJ$%x%q5RZkDa3v{qCt
z)ik@cyk42QT4dK(TgxBiNP7=Fvn_Tk+Ha0*sMq0Ns9$}5hE?KM<A-z3dd2(Jeu=;1
zv*Q@yP}vJ$nXx>uL}IJTp335ejo{eX!rAaW%#Y@};nnde`7XSi)Eh4tL&rVh({paE
z6Iq|~C3x={o*yi&laJ(fuCY~DeX2~BG4qRm`P{J_Kio14n#X3ra(KVsyzA_HZr{VA
z`_SRM4IQTmUv^)@qJPq{>E87$Y%sR(uN=ltkXMK3zrIpkpS@Z;E^}3v>hyRL-~Tu(
zxjCBG25r&%(E706zVvj5a38-u+pg*~_p3Q#Ki+;S^HCMQ4%_azAvo>33=0aI!K1|U
zJ<)kd|7yL9SWH?g&5@6D5p~mj^X<RRo-vtuYoGXHcrhMuE<NV|!hAap&AH{xraz#6
z`_{UfdpMj{->T8_M)tbyqVw5&F8QcBUDv%{xt8mZ_x>)jUjv^DE03GT&*UHSX`k0$
z*{0v0cm);*gkfVL2M_3R0}_x24{(Ic!6&o0@&OLAxGDpN_#m%rLx&5e2Y9Si#$Rru
z1-J;CGQ>OhA?vFm4+r`yZCPPHl4xW?c|bIn9j|}=>njZnApR%d3&r*I_4>;8H{zCJ
zoi;$D%;E;?qELu?Fzs0fU2Bt7f8ICY?+xLe(c5#pU&J?H`p@4$2yqd<Ebk6Tf5whf
zQw>QoSy=$8KQsgYC?FC5@E;2B&kFz$3jp+Q8UR2F5c^-W5+KDtb$|c>!Ylzm{;8w&
zXZ`Dn|8xIA|8oUS`~d*|XZM${kUXIO(gvEy1O6`>Sm=)oKu}p&Qu5ELZ0uxeYUgZW
z?~*-e6ZD4x=^&x$3;=*e`qvF8sYG(~XKr$_RMBwJkd@&wwzs7-G_f}_rSq_L_{$Ce
zj|bNu($>_)kif&%#?G0`gO})U4X!`*Uu=3Jg1=Q<ta*tvWEBX6?VU^sSm{{k7>M|w
z2nYyxoJ`EPltje-3IDU>C9-gFap0n-cXxNEb7!WrcQU7E<mBX}XJDddVxs+{LF?>k
z=VItVYv)Y-4<r9&N5s_G*vZnt#nRr6;4iy|M)s~QyhKEQIr`W2k2p;|EdTAv&iS8d
z{YjAiF9|&(9RvOU1#_`9`~SfHlKcbqcV7Q+$McslE>&k!Ct-VATT?q1zJFJo=WkE{
zP5AFP{{d96^f0y25V8D&bpDeQA14#jKT-cv@_!;V|BYm1U}yVJ=zoa*1Nv7ET=Gtq
ze*!i9tB8DzJoNvI_doTOOr7m*T>ny6wX<~L`xD{ckpIE{CyIyuuXFj2bNWXU{LTH-
z1$<CE^#AH8KB)UWDQf@#0RTx6K@|_c3teyn)s{s*kLw6_17NU*uvKgzNN(@MuA~y#
zpKO*%&Hn0cYtd%xwr0#f1tlR!2o0~ho|(+BqtUlkUcUJ@$=}~@bHELZ!;^R1!>X$v
zbWcy_fB#l&Sif#9C8DO5o|}J;tf{F{QOQC<h5-Tt3=R<NB``o>fWQFxYl~PjH)q7@
zSRf)L6<MU&09D3eIa*(a@xSzlc2t$J=t)IKif=qhRFc8RC52OEr~b>zzl>6VbarY#
zAYSM3+&)@S^KI!d3^0uT!_&WX{@RN4R%E2bg_oj#y-G0CCz=kV$}avdV+eq?#w!#_
z1pDfUrvD#rJmn4+YOWTs|3_vPsq)M$z%5U=4<S_zVIDU{5ujK}$*H-?bM;P?{FXA(
zKUa<!R~i3Vhrgq9&?7KNFco#94oPmIYn+=X%s|PdNPEQeB+879I>_x!`pLiy>g!X@
zV1Sp$a*ahI>DY&Kbq(DQ!<^)tf_ty`-%<n%yhj3zKWtZ)7=Czsh-cLVW%_06?D_e|
z$do7U4G9e=LN$HLp=|Gd{MP=dZal`~sSEB~?f>ZdrPkGhnM28`NQT{fonq;nHW3ER
zCiR?-fI5<Hvd+jn@;?rTl@OrbhP;qfw0Jc%tdh$~=gVbL!SiIgf|P{>gA9X}-<j^Z
zq|ur-O_xccI=xGy+T)4%6mgH3JV9SL{rpMwr{Qp51H=byu;hd!u+C-xbKQSbv(*40
zph_r3thq$VbMB#_QAVuUp0KC&lL`{PDV&MdA}d6eAtL$hkWmJ&Joa)q`+5;&=9Tl^
z^Kyn!|KRok*Z1`#|8B!|!1S_C=w;lx|DwADes=U(B9T{tohcSwQp=4G41;_KJDBvp
zcjrek0>FD2w&%nBUGmiFs?)&97ZO;(q<|=KQ!E~d+FRNPp2kC|AMSHG?)vp=obHgT
zd)3o%Iz4sVl7WH5b`H|sIqBh~3o^vQ+`FM;(I<XQ_PKzIL^AskiliR1J?3&x#RgM(
zjmHbv_}M_4YbEV*JIc}Lf2-^?9FU%?DZf-jE2aJ#`4Cjoq?EHao`of=rQJM}8j&wg
zJ|I6T2a+#6k}7w?a1&G5kB<fN=?kd3Le40Z6z4`m(qW%hZ;9pb-u77iX&Pj^95O?F
zUl#qGR=1E1-vJLuC>RCcf`UDySF2$l&mDc`V&~ep<a`*n)(sMKI_$q6&wq9lM-Aey
zhI5W6m(-}5mKLg7X3Y{zFw5NRsJpD0GHVibpG1EL;qCq6VF<tOt#OcG5c&K0@#p@*
zos-+Wapj{JtP=)){M!)k&IZ$p2^Y-q_%MDwPK~uDJ4$jnjU18AvbOCy@e&#h_vuO8
zP6pz5WeuXFH@En(>vl09;Ezg}eR}|&$PLF&kFlw#B>f&n*|(;sM4|M<^nbsR{E2i&
zNDP4crOpEmOxsveRfM`d%42Q0o-E{v;tUI;{L#8cxy6_|YUzE<<?`A=r%DO}U5;>|
zb;6@`aEP@;b@!ZJSb1%yH?l7<0KNHZtM0ni<Om1d|GGgq-STImwh9%lmdF?{yFMZ0
zZ$uAo)s?pAc%L4hD3rA1NOl<(oYk_(*<SJPExdYf>*|lkZoIu~_=0E{3K0McPfyOq
z>zui2S?OpJo+3?S^Xk9}yF~W?eDrsq0K?2Q6~)w_ZI>@l7TqwzL<!uZmM%d0?m>Ej
zeqbJyqg1bRk&{dKsHB@5qe`s>%5Wy8P`7!4-V`8`Kr-&m7267t)-BGQCVNi%H~OpD
zH!~XOneTYZjV)55yF@PfX8>K+s+X9L75HyaXDhGu?+dp{#r-tV$G6vPGVIv+e&|Wz
z{6T(~zpc$%+@8y5O?rrmv?IJy#gsfS0TN6;i9bFup4?UIDz0m{z+cOS2zi%k%=x<H
z9cT|q4+IZuZD^Q3daGm!wr3w?4H6!G&;9_C%9mq-{_-U|WVhvdh5c2|Dy`ap34ePp
zhFkdg5#eQY1oi!cKE+emn4p&xFL}mBoQwqqh^4_~ojQ1G5AuUKvD?srtt>|$Vqq0#
zK($T+Z}k=xHDz>YMmFJ#F;GdzO^H@Z`)30EHV=<t^ED?8y+50JJ(LtlLy-)V^aLqZ
z^MK;l)?Be_vW}~wJmwtrP<`;Q^a=wdOj()P+J<jU(L+eGAvs@;_drKzE>Wg}L(pi7
zku!?7L5{@QYfXv3`bKaY=v`FAXR&$<TqF+n2>w=2hYnk96wmi3)G6Xo%_Mo&{=zek
z=r6M+L0f0jUfD3ZmOCY5Je1(dX9<Xuv~PBKI?Op~E)w$czR2l;=FRtm&oXF|HsjXh
z9qw-wAlt`N?X2ygH>KulP=Lzwn{!wmDMfrudtbpw%!<)KM1DuKv#+fSBumUA;$01k
zH|6uQh%or@SfZZZP}_`i5Q&hs`4V0P>|yB{`V<-)4;1_};;GL7O<VzE@|kAcXqMGg
z^>3}GmULrt5Dj-pvDb=o*TveI*do$mjS0%@w&p@cAk+8A0nlF(8taIA>ligQNY^`)
zWTq0oA)l|fSJ_%K>DE^u7kvHD-_a|q1z&OoLdg#pP>81TIV=$ks^mGd8_(Y4kY@-S
z_y`=tOf=EsVJUl;g@tAnK0Sl{g$scXlJM2X-aa*v0PYaN!SJuILx;iRP)-Ja4e7Rj
z26Q&F>FV`V#%;L0B0vVj)RK*d4w0L%Pa>t-uFz^H3|B|nK!$GGbi6>E=HQSAd%G%}
zc7CneP||P)PNU*7a*cJ3#7_7kzf0v-kBx`ovd&ivAwWF$t&SWVq5q&Rka2gv=ylDz
zAx!8p`+)GgsvwQ^c0H*|08p+Q^-Foml)uAbjlK$UEj{BCe?hyPlNX?dyhu-Vosmj%
z_l(Jgv{NVESM>}uM--pC+N+;L9nDqOjL><0skj^DO_N4XFHH^<!RK%h(R(rYNwe;&
zuoeO;B<!cO8nDi2O!tdbb%hYOJMQ^a>pc6z6t9Y7(p?$uLq*#Os+giM98~Z~6Y4nN
zoWO?=5^#=e1s+!`qjDw)my4^STJfv5SGYcM!o=m71T!4g=T9|A8<s9p0UA-&%Q#E@
z2(uct?k8$^f-s}@P4{q-X~-E~Qj9_Okgtfd2Y{%~VJ9Z~#?CH;UKelZ<`~;jDp%XZ
zOKMi=^8L0J&z{OwR7UMw?l{}Xi&TqhLV^t%cv-{@ASvlJL^XP5T6&wcAch9oc{zg=
zb5*xpVO6)`NtK4?Ob37g*ijz&C`Vfa9m$$;UP8dZN6*z^5;{MKUX8xID2JlS4!IAv
zLa{WS4&R+_9mk7wD-2ALPIPo~ybI%WQ$jU+gkR7v>3M&GFL>9E@{u;ws#KqD3$`~~
zlWMzPCb1vcCd*mmlI)OSfcT9=1ke-~mo16g_Me6+@r)m<CiMq`b9FvM<3zwWLO9T|
zSi=YsOf6t3et`)Nuz?XTgY)T8B<vD8ZJzK&D%i>M)8NZ$6Uk3*1;sW9wS&A$0OU*r
z^y)O-2YmS5LABY>inZB@l+$cCinH}Lh;TG6=AYmk)6T?83Uimcw^7H@H%@299gXA0
z!6mXuR;lQSp2br_>78rnrpjF+9X1>4n)a<-B3)b;j+VO~FZB4}i$Aket)%JGjO0P~
z0!PXOl19PbX+R~;;;*QX_m!52GPE3_QNn5->KZI@F6eg|tJ~EbC{@5Il?0gEhq;pr
z8RNrFmTBgxH3Fp<6Vq$Xo^X%Y0(S1r{&tj7cE2I%2-JY_+|htzbMaIwa<63Sh_?+J
zvX%hqbOoWLrRv!REb?vyIo;C;gCq1qiav(l-SUec9KU0RyAz*M^^TXa68II<#9N+Z
zfz(5zkH_%7n7%bvW34^Xd%mzyf9jFXH>KUA`o(PCRW$g+FrHCo)#H1&3lk~uvGzT$
z>~y0!G#dN2I1~fKhszM0W$>F%ex`9PZ*A3a;iRbs#>a96n50#h$nD?-!nuv2V;zlV
zkMx#c7*4447e=oW!zi0dLJoZwS4%=ZuoqR9UT%w|5+Su*dxoF*eIhX_`QbA1TbZsX
ze@3%H_j)`XqXm3SAaiL2Gn5o5jN5l$Y(@>4V#0YmWMa`p0rFg-Y7vj)vj=3+9MGX5
zw!sc#Pq7-n&Cl{@je%aTZ%j7{*n8JY%W%gT4gz9R@(EIkUVLV~vP4H3^%9y@qT-ub
z;kx4zsjOS;8B?IaZp?Lv&dr|t9gqkJ=+wAwU8?grxO_iVe3rNT>8e4Qt0eWuv<14c
zddm?#&xfecL@Yi2#0jrj{07cV<wTTez?0l4eqFNesbCmQzO<CS&JIa}06Hi^Nm1+Z
zM4?-kpoZQcAJxJgAP<?*!1u76I>N~CtHG0&+Ex`Kj;>&d1v8yhQo$c3WEIQR+s*2J
zPiO4){M_=xEf8uSvGYC)YqP@~P@b}Ocr?(>_=(wJ=G5!u%?MB^2Z02IC%7q}HS0_Q
z5OvJc8=3^jc&DTZ2tq8!vutB-vXl`GJ-Ia-KBo+x-;1J59!7}=27x(+@MTX>iL!}<
zx~rg0C?Ai_dbY*VVJ4QFL}~@Z!lcI@fi{5%?|!>hl3`EUN%K|_9C9z5Qh`(Z>TpRf
z=|?G8PVM&Z4;`WP2LjC-e0jkS=f4%X1n-CIj}OqthpQ}^?1#YOLq3^WT|<h5soUX0
zKA*NOO$@H-60<OBIx`N4=&hSCQkyc}M~|i5rDi-{ro^yFs8G_|2-w+S&MA4X<kgDe
zRtsJynm4@<=T|F8fUx-B{Oqt7wUyQym0l2AkY@$_`TdK18i-`8PnOlLLU*pV>Z(}a
zp%u4%(9NKhY}e>=>DCJ*T&xlN<@!4M=TYfmJY#}0eBxhIZ-37<8DrD5^W=92JL9eB
zS==?SenNmjFo*}y`n@;P8v4UI7b>Ka9u9~SfYCPY($i24vt5u6X5wr7hCg1Qt91S;
zT-)Vhhf3Vj>W5Mrtps`?19~1sj`q8x(U$bHqa}&GC!O}4A>dJzx9|dCQY9rhRV%#@
zM!JrO{RTm<ncTl9ZG%g2cbke(tA4pi(gs*~>OeD0TQqEpRd;<9a58{)vtHfyWS^`<
z_KImjA>a)Q=9;}qn^Zy~uO<<+b9x6>=e3IidlZucO!ZnYwWY{h0&pCk?n26=$q?wi
z-yOaGAkOJVXo(D2a2y}L_AoKhYz{A~+_-><#Aa8l7zFakR;}v$=IG+I&PdV<5m<8(
z%{qMc&y2hW$zJr(q;lLl1OBQX`BY+px{fQO$HBnVM{uJo4uB*VHP`?R%E~KB(4U{q
z<!v?xA$gfzg!RG}9sSK~3W&CZo8n=?T6#H_if@NW>ZrKubYc<vvCYj~1QIpM6^L*g
zY|)TiKR-3_FdGNX7z3@gMaU)~5q~eRBIS^4QisDhAunVRu(PnxT6VgYkwUK?E1dx7
z>-9_M-m^-Pj)De_zdgDk!`|h3LC>zeCU;W1N4Y>4DA{c#7VTcbc5Y6%&B^ju?XH5m
zI^K_$8+vnbbs!|_Z6YQuF4^9k-qBjQYCI^GnvhP*&v$vzVf#ow14L59Ln7}3$h7sV
zUa{1t?Uwj$EPFX7iE?`;#oNwDp01~~;=_7Q1e1{h_2<SJ+lKLvXVk<a!X)$2q}(rx
zsV+<5v$9$_?kxJaZU3%8F>$r-OmJ^FlhKby%S2a{ZMych4e$Npxn@<JCJsZ5PR@FN
z_O{2Lbx3G1xxbqkoD}4<Vv@9%Y!c14a%k4);3M!y6^$*vY*v5W6CzSmQ7UFX^rvJV
z;_K5Vp!IcI#hYLAODsXnM!3g7C8{#ezTKR+Me5*Bj3pshVagi?gi2U7;4QJDa~fc=
zkQQXXMc^~;?i4ro9<T6?8p?5mM^~7?_|Y+#{KP3@b1~qa5X!X0M<;~e<`GLoDqzsq
zAkUrABGi7y8>$Q|eK?&JqQl*iZZB?34I|SfYUz3?ZUo|@LB_5N#gqi5*C-KZu{Jco
zY#dIy)NR_mV|ulEf?BQh&86v=Q9zpP&SEs-Ig)K+1|MdH)w#Sa(?9gSw48gO26v(=
zHf`MSdxg+!_6wWb>XawCUA3IriCu790$=^L_>{YyT3ouSEDV}Ti8dZ3>&<+4tInt1
zdasMaVQv8MGF(%gx|1jHdiPFx_c&LDgl=U?^QsB8W5t9PY`*#973Q09xgBmfgnrw2
zq_w17UlTvsruhsccR8O5H>!ELv|9TdsWLE5Zss-3{vaA7Q{Fh8v^M1~dkBLC%{ZVJ
zQ+f$gdPYBmd+}$!F4@?jK#;W$N75;dN9d#K7)Fthj|+DF$l;!CQ*92u2C3blFl92%
zjAbQes7EbaTgCZP<Lc8(++)V&lJ2kQk*^J166Z~V*>DJfqC%>2t@C!|nsMpRa+;*c
zP_fsTju9z$nXa?hQfX^Q;9c*V;;}^7dNxK<xNK8uSMR0zDJE2`{kjN5p_oRijh6<*
zrzm8umgJs|CCP;DHtYF=j8JV;1~gBD9bMzX`Rhg6SY2B%G+5n`A@4eZlLa-44l}FH
z?avSHw(pXN_#K4jc#uwc<b(?PQ+oWa1|cMI@NA(}N(**V)KOjG_HpK(F6EzLVQSr}
z;BJIS_{fy*n+$@*6W%^ypWTr&{17N6Fr77fhEz@;qQJF_9`Wtdv7s2Zc)<ItaS#a|
z<hqf9Qt>W!xghlTwp7=*y?E>>CQrvLx@8i#tp48`USVE)e8@qi2qP*?^Ml_314I~o
zCm5D+g$10W8Mp&c;Lk#MLRIfRvxpbhhXQ*|{6nKDJwAF+vBv|^`KMO&$v?ndcR{%F
zV!UG`)pZEauIhADO^p#(6BK&Ycd)xSOf$|Z+a1}4D06^gt@tlIEY3SWIWAxgGa=NV
zm9f(2dqV<1w2%|5;CDl|%Q1lG9>t*-e+HshoUH<?&18srReB7CA5)ImuumssA@dJ7
zFHH$`?qf~zHQHhlQ?p$pgKxiyjT?9&f;y84kkU_S&{DTtCY4_G2(6Klj_#+y#*6c%
zlMZOB;}?|$6;xl&P$vp|GQ9LROa;Q5m;O>E=Ch&d>y0Tv_iSL3&P>f8pOj8ZdQ5R;
z0B;~W9bp_Sc|{m?sQ|ElQ69-dd%n1wjf7Xmu{fP$V2z1`L#+rC+3Rxjpob)67Mgn9
z`Wzwcu`a_paBvF^p4uRQmkel2sOWvJEb*lb7f6Gc49SO?4oUPZ_7*b@i}c9u|EzjD
zr0Q#Mh`BDreGQaZq2U%FR@@F~A4;sR9LXQlXyHeWX2QUd+X?IKqz;Nce#MP7B76q4
zU}bbterX2j-tA30<xWd@%()C_*7Sa07yOJKVxF=tdp|q$!P?d(4c;HO7rmz+O=c)c
z3a}RqI{C2s<Z<rJm`EA9;k}W0R^V^48_+|?Nb@{|A(_I}fNwXLon&Ga+v$)rc;#xD
zLKFDK72H=8YW<j%KyaT~6=s>6_dV~L5lk|U;r_ya3S9`b3i^ry6<u&6Lw5EF*bMDw
zUMVa!%=%Mx4Lott*`T<AxJKiSaGy)$O;`~~nMEAmJWiUk9r}?F-b|L#0-q(*MceK@
z_-KV-HUMHlxIxFguXp%o%&?1S?h`?Ogc|vQ#VP6vz@JgYqRq=eyzP7y^X^q2Oaf*S
z<qkUXfWKjBESy7Tl{=gX+XJjo`Ohy6Lc?&Uv8RF+_m~@{QPC%ha(KSS;*d|ZMa2yc
z&co3railxRmL0zg+H58fP(wvDle%Qr-6n!-<WdYj+ojoMx++*Q>_ZmpvJd9YxyIIb
zF_AC@E(?lJcWsg0`DST&Uq>$^DU^W))E!`C1~h*uF<1sw6D{7tvr7;vF1;=aDfR?k
z|K`x)z9mX2=Ueuy9Z`MlWmb>FCYvd_Od8qx6#PNLu0ErhWEd+y6B{veqXJ0}&X$VN
z2!#k*FzK#BPYl_DcC-XgBx>XAdDVA*Sn#f&*gb}5h1M^XZ~3KKeK(7#AgmvFs%X9|
zD`OFdhm1$V9(xsLuL75p!dh^IhV#Oi7M&)^5}P0E9&&w|tGlX+v`<6|t*6D-%jSPn
zewi2psKXHs%*y^`@^Tp^Si4U2we82K(|oZ;ALq*??`3$4vybEt_7ev;@Y4f|rDNvv
zgUCX6{t$mYHAuvud=pVzlqbqxgZ559Oc}Yqm>q4+Y(V$m`CfejvGI06BE2MFhuQs;
zF<qmU8@NRB{GgdyTq5l$VvdPQ#Isw`M(c2l={lctAv^6MIkswFu{o*UZv-%-!K}k1
zNFWRlAC4x9;he?Nfc$iYOc1SlmCV`=U&$I*gMSqZ9_U!Qoooz$$G4PovIY)k?9V4{
zMtY3sVBqXvf{LZYi*9W1l8=KFv}cjJw`6ZGS52)1+tmvFe44#-lwO%)ccXiKk<O;j
z)XQuq3Er(<_cIddObOivz&-KGA`xwgw2npCPuQH-r|d#fkl@9h&hM@{5GMpJD5Xgb
zA9h`~YHFG^|4mjkTZo7LQszaQQ1rX9dk-}Jj8K*>S)+nr_`5(+VvZqtpa@2+fR}&+
z2SNtmb=EOh^H(Z?1+u40iqDRwgg@VpSN%z}m-;L1hTB;ng_vYA9}~B?pl6gj(qUo5
z-Q*HSl-H$QL~2dU@YT27me#Tv9;sYu&QxlgUc*)?M%-tH-h%olX%Clq*LSf)$}@6k
zU%s|!x1pSV2ol{@t%t~k+n#{PNCPRf@O?gdG&$UC!TTj&1?oxhod=SG!?sz31^W5j
ztrjAaKzBdqzWU^ZXqT5Ln*_@BP<|j;Q#r@xUA2JGwZ!2Ee6foe7MRM=t(k_;(^!~p
z-P%eMEbsLPo6M2=rf}|JJ1>nD>5T~use_>CckH6ML88%p*Iou_#qCK|&q`0Z#h>%*
zFe-2v<IeJby%*Z7_{(S+36$};?{L@06_DqnhTR>uVTVbHr#E!H4$-XoQE0akY`?y%
z9{t9_0KozTWN`<P!eQ||uW5H0$KNu>ky~6wqcA>gr-bT{!_7ph_kmcZ{skp=bN|>U
z*&qevL&2;**AOcWbaA+Xtq^}GT)~WE2AdXlVY<r11wqArfw9$+v;o`V66f2b<0an9
z(!Xk<)m3~ZuSRDho^WKga{G0-mT+@#vnpS|Pv|J>X1Y0SOH=_rRw+u2s(Ca&2|h-7
zNh=O}LZ`ee7rF#*vYNnh`D^)lJkkI2l`q25&a#|U(F_GDfX8Ci(tm8fb{3&R`G{8>
z>+$usNQMbpPo4r$ooD#{dpaIBBbaProG^hC;ZJ^t<-ruw`KLAB_7VYBcKuaSCgWCD
zD+kvp%G7E6ZRvL*KYzMOL$9|kE_s(#_xF{YyZv!mBxIm>)A&#_+}TqKS*&pr_zM-y
z<JB?|0|w{Yyeo}xHL~vy$0`sfhGVAqEY_sO8;Dy9iJh3*D0AKe7AxrV9T=HQih*~R
z<d&W+T5h=h!f0jlzR<+;r{jrWb@-%e24jm9gkXDhLjM<|z=znQ3ve9@qMnhwQ|VZ1
zx}J7R76}pw+`H$k%BIl-(Mg=eK~p&SXQI*_Xh9*aUOx_uBFoJsUMBZ-!Bem*TyC)#
z2=I)}T8|U%m0JB6KrnNXVOKjs=H)B3pY-Cziomn<{?6GX1<{}cm44mbbEVpmFp{zf
z?EJZ;-Uj3{&svy61Si>A6GOlq(qJ;}C3ai%*#X!CKaEB2)@%z+7IyH){k}lJup%_%
z9S~)HybTN<9nv2Mj%s-pwvCrh5_vwo<ue(2*cX3NQPL)W#P@Y?t`UFQ-3^;Fn~oP`
zQyAlbE$c2!0^52KGiqSXRTQpGTD;X)%}SsH!^S&|%lT~M&R*z(&QJh*xvDW;#<j$x
zkZ*s>jkOcdY$&ad3U6Id@=@Av@ksr6x-7sl_K*LTPqRxBv0%|nNSOaro1U?3>pL$`
zT`zAhr+yjW;KGY=LSq@Q6&Un`RQ~z&a`e#Q4+LDG*6WVaJ@jj;<M8@Bo3yw$$TiDI
zqzzi+)8}gX_9gW)8G2S}<-Xwx{%TWm819O!W-miGES56Hbn&Zv(OD*RoN%S%<Mc-Y
zQ>DH6W7R^59K-e5a$&GeQ1i>uF|+Ad^QYCU<+8~h^Tb;a^4-K1<s9~Q%9W(Pu=vfp
zyxBlVSgmn0#3{b`YtU}QX`Qy1wAFDlLsTz;)goF(-C;mu5G5gaDJ*U{Cb;u1K@&-A
zIZkJ|`nz)#+(swod$)OZVb%`KFs(+*9YA*+KLr0ef~f=k(jlPk0e<cW!8(I60^sEh
zB_M&K=OQDM##j^311F_q-5makQnxd$H2P?6)GQd+cdH6tdY2jzqq7NlGtLKN%tAWD
z>3Tz9qnQ5N=#=qc8+^B_2nU?&PrF;7PJ!e&l+mPRc*UrEP652|M;Ph3G=rs4tC7-!
z865@)79=1&8-?;A!H~s;gDQ_DqPX^h7_W^a1fHK5s=Na&H@Yt|kO(~i0It-~$~;zB
z>xc=}4r~S_ZxYW-vnI16Rw-<1$enJpOr&{+N)ys;yEq;(F{wrIZv7buUgY=VhwZn*
zxStG8fi?_r;!MnkSKpJ#)%#i#lceW|k&FWiL6Cek6AZU|f_L^Wm~<fu=6Yp}1v?k>
zw2JL+7KM5>`%FDNdQFCzAFq!yrfb7p7<=!dnJxN6?0Sw7M2OR`RhK%(4k$TP-5G5X
zM^#&7pIj}e)FW`gl9G>`0Ga}+xlh&&Xf$bM_iEB0ESfF4oKVntT9iB){Jim}z<XS5
zluC2V_bSIa+Il*h%df_z%>Jud8G%F5BZl)FZW8jC+yy;Y7L0KB!w5Uq^q;$ydtEhY
z($W@mKj}1w^MFJks9z2chMidG_xwd#L2ylhSTYx2%6s?fqMJZea9K@#y?dUV214@3
zw;Y(bGK;mJq+xVebs2e7-`wo!-SzlXs=bb!PqEK08NO?g$WAX%&}sB1HKBtLL2YHF
zG5HHx-i~^}4X==KVVnz%5Dq0?r>czeWg|nE=;Zx$8r3W}gLWB1bCj@%Ztl^7T3ezc
z6m0V#vhSx0U+382D$cUOL`eJ&391(;nk_NOA*X~*&{^8YkC0aP4Jz0n#si~eUOmoq
zXehX;s*DE|OT8$j<~P-0)2MU5WZn#Mfr0B<NHP)`$}i_DCY9CUlM{ly$N5?XK759m
zRw3Rua;gd$5w3{`-d$DM^5MI9g=wR8Lpu5Ry3>fp8@a#XY|U?%K5w|s!Fz7X<|?eY
z+m6elOqO?TUcLIjGMb>GOx9a^g?0#UsQo4QLY9M)W|`7@4?ti_5;+v)nm`%Tdp`4A
zM%*!C+<qe;e0|&Dll%L*a~()!%!SxfP^78X#u|e_K$vbitq9Twg7E;Ffx02hA#7Lk
zSt?bh3J%YE!$ml?z)9BIN&l3|>_G$Ww7F2h0?c$-*vF&1<1l%d(a$9Mt&uhSmH>J8
z@K9B_Xb?arRQhKg?0}cX*-(<hS<_8e7FV$UemVL+pfJ<A@C}|O2A81Tfjo_<03Qqg
z(mjMY*qa<WH{oQ-8gtxbD)%=(oI0VK)VlC_gr*F*3&oPtJulNg1(BDAW-pPX0wc}>
z#pKMZC~tuG59tPYZngVit$`=5=jCEig?2WrQHw^$5+@<uNXY%V^vd<#Gs=9|{;knn
znd_!d1boIdh3^6pc%hk8?dC_?-0p)zb1l5t(`gLdh7Lspr_!C%rsAj3CM+ZnU4!>q
z7|dwa?VFYO(A{1p@FO&O;JzA&UKy-80Mk$*zQ>2#J+yM8T|OvaiWHcO`f!fb7<^()
zH%y>2&d6Z~cDyn<9Ff=Bh9{A_0lg;0dbl4NRi**2$2W-Q@rq?NqR)=nLs2V;RZ?D$
zU4ssPQ9a>?w&Q7>hC<0`w@ET>Om%CLHCVuy0N}SGDUX$3ex};N9w8Lr8oX0+;}%QE
ze391qsCaDuC%lRy8l+>9;VDifGFzj<LF`wmE5UCilZoF>7Wf(<hEtSk>M@eYhXWa_
zOy;LvV|-cEJw2A`B!eR-B&fTGV^$YSVQLj6ncdlKz*=S&p%^!EvH?kXlo<@aGI1#K
zet;;8El}Z)CP@~0l_7RS!dnhG-DPxv!%1I*>&4675HTV&SAP!h9Dcp?#mjfU^(8b`
z=u~Kzeh}ixBxTR@^S_E+b$+30_IQ@^+{}jEeXQqdx31*w0Yhwmv`P%ed1;x^t`p1{
z+#V3m^n``_)(VSgK}nA=yU3z|?dod;_qvF<z85;axlJn}B=L`q@Y5(?cRlQtn)Kbd
zrp(llArf1uAsfaLYX8Pmnwkdzo*3*DGhW&;Uw%%i_?@uLSkSQ%5qtEsyLo_K=xykn
zeN?Vo3>GR#s6SAu`iQzc0{=5fn;yFy&Aa=1k;n5Yiget27>h=sV}Ht?#Mb`@$w2CJ
zzM`(Fry1WFc5WlkIUD-eWuMCPJiZTorrT8*JFq?`xa^7YGF%GkN(K{Ye%r@UDq|u{
zK~{`CAE?PkL`|xc4zbJKtHrgU#)kCAuar=HzD3RRk8^z_x@jR(qh$%JX&=u0K|Ji2
zgsZs+3;yssd;MIZ85z9-2G7%ul)DA*Z7DfDKCVrTO4Jho?IWXfC57PgUi_YJiA=1j
zC_^bmJiGUL0iRqC^LC$Bj|LSK^!~65FwfI{d<F$dP)l24Vs6q=Igj$TO5ZG*P6#`i
zTi!B3KeX$qsj(E-4!F^nnQwSK!>8b1E%CdX>*GIwNAmjQ(gwsE6xHC1Z8L*F{nnrH
z)Yy7Qg-i{S4r=j^Chu-aoe$qZtrc3RiontMzh7f-$Il0?b{@`X(Wwh2y-CL7x}LKS
zrE?A|^7T}^e<i?47_c9pOsEEP58%5=ujaTZ_<diW-of2Wjg2Mv({GUUcsZ9}NR3nq
zNhNMD{A!pJ!Vi|cO`ndKl`An&bWiPsi`M@z3&jCm&4%Ce8ko?ZkV?)BIlD9DC3z1i
zhgtN<3Q95X=q-dwCR6z(6Ihx<{>7<X-%x+J`HFpzW-lx3%NeAZMsW%-&yS=}TL^);
zjv!0p#PELS-|InoafV5Ewk@jHZkb#;P8%5UqvZp?@tb5ki}S_q3(FHE(*{&1W5RxQ
zHaGY(`1PPYHmn+#Zod07L&pEqE#qk|JLS8C-#5yK_tM?!M?@qPUvN-)AmuYzt7Sid
zhY8dG(A3b~`?Hy}pkB^Ji1(8A_8S^rf}14x!eIjMdVfCHk@O|1TE60=c#|nb<QJ^$
z=b!Tr^t%lBs5J}QxcM+yjfJfUG9dG$ee2KmoaG2kUk7H#w}SQlCTB$cSbY$+dJ2s4
z^Y<SCISuJTPQ4gQDXn%#F!j)1tvk;9xYgety(0Fs0+57}VSvbz22qJ=c8OmY&B_))
z5@WZ6cE?G?PqR^psNdfmO*JHBDfrd}a*Fh;YlVP@L(nqNz5uewcF{f@_oEYe^SVVd
zl^*_4{{8zRKv}<ny|}E*KD%0K^hw-$8ZG#jZySzs$ISwRoru0^VF@H{q4U}MbuHwB
z6iiw+LOjwTIWt;~xVcW=osQ%j;&aIaeWH#H*Did)<g{)xIz?6Xk{>f~cJ2_h;?pPR
z3IU-=tg%7w;_YSF@aO|4^)5Awc*=;J#%pDVfVTaQOM)%`A5*9C)?AS-ad8hAOF~O_
zYnryReJl~Gcrx@Qf`vIQlF$)Bwwl}1bq+1=Fi%ydRJ0u*`4k0U0+4I-@zQUIa<`w`
z{B@c8sI|B-&_Qh60$Q=rX>A1OF1f=#j3+O<h=xGx*rtVLJzbHrB44#zPUC!_WH9c+
znH-jT3T=>N$R8v7>(!kSZ|;`F>&(!L$>zFPh?jS<bAHX@+D)S@xO!q+FMrz02-s9p
zEuzTKM<ZF2AZqtFAqfS*BQ%-tibb&U^pil94G4r2n@n`huu3=4Bm*KAH;bxXt9d1l
z$EO5MR+O^a4`n|MB6;5iowvadmR7dt?R3}pEd!OVJph=HR<En7#2YMM6z8)nM_!Ag
zA-5r}Xy>KhwwB-~i-9zlgQ5QMguvQjqn+7dDW9$c8`+QGw`)<^n?Sa~kR^E0_q3~`
zOlAV)lSVINW-Hb+-xl0p&|mc^W@tA2+f{4Owl{*Nc#93T(KuVF<Yl$KF+)2RtdroW
zmmCybgy_ErV}r^N+;z2TjT&gSTcua8=Initx&yZulWqACwK@Qjb(dX_M8Oxg5KGO&
z<35fWJQpGEjay<9*zLP8eqK#SiX>5d<J<fsR)l-Yu#Z0V%br>Dd$pAk#QXC<nt7B~
zw!)9Xk#t!Mn}--UMGx3;*c96rJ8A_ut3~nNN(+88yE?q*lNBw`x79}5xDR-2WmuU=
zh3;2vfrg7?N2Md;DjgfXIeap#-x}d#n~d4P{pcXA5Kn_PrCr=)Qs>D>^*j|AYLI$J
zu`YU_Gc9)`X?&@;vu;0xI!<NUHJ*cRsy+;5zR(-<QExm#CaL>Bz`BR*?eJni&#F>v
znIrCuYgMlz{33u0+sEyWeU^`PnlM>_mMTCf&=R$Vq>0Q75^cUcw%E!-L-PEUJ@<rr
zgWblv6iZL_T(H5Iu4lFfr(jJ?>DaFFIS<xw4yTiua_x>6402(oWd&GB2afGGh|4aC
z7uoGYG5Zw!;a?qZ#Z0#b0pTu$DxWHt^iwd*ci#rV#^&eMS0J1ld3@$EUf*>K59ShP
zDX0s41inBDvfOc^0)MBTh%JHy_qK`U^}z(L92pTD_}zcWtk$s$4;KvV^~Zar*ZbJ5
zL0JYXlBxg3n+&046e0;<+&R!#^<_XNNmk}aJ+gUDz<K3nF>jH>G4RX~048b6W;1W<
zWc9Cb3BfI@_je8?xh#t{WE_TvUheH}k?`}oB=88cs4!aNW?H-Zx}BD$mZT$A_@%_b
z5muCXd$*1aHsP#KpB$B-j}ee>47w}4!~Ao0mi}7IqJRi_7icCQmmISgD24ijIbSob
z&mz~TcgR}BtNJUeceEP^*VmJQ3jv1Cf?OKiH!N?}D&o{*uNruBN3lVE3b%CS7bazZ
zH?O)-j^{6Vz6Wk9e_YVr{-Q?>jufmh%4a6hfHn#{c(g!=fP!E@b!Hc!4adkRmr9%!
zs667_0ewH^r8wN#*o5eEP(QeM&lz;L675;UCKzL0k*)K1U;JcFSm=4Byh|gcuk>-B
zv-|`C7u9CJ4Ig4QE}--jV`l6Xzge}#vU!3ZE{3Sl$C@*_LgwG#7Ja`Sad=xhh#WW<
zD86e|a(+Use__~A1am2b(c~cRsfEeL)DINGt`S1kc04NyOV$tFWr=)AR90Z&n<upj
z|4N%fLU#U1Jt*jR0R)J(25yHfn4WLOU#vGEN)sa5Mlz(`JsxcM<6)yBt(;PC6YN*l
zA^SrZ7$cA!VILEN0Hn%6l<gVE9nuf`zUL$3-gRI)>eBw<H(m?6!g%s4s#g4~#fMVE
z_Db->osTP^{j3m&Qz-6valv%V;aL)3ki^hKU)f|~0)_>&VGqDtOD4b!${&;fo1;U8
zIZ9im=Eltkp2rvHw^Y3a9ZS0yMFxrw7zkS99zGVT-Afv?;~tzk(m}9_D=r#6r*(l?
z5^JZ<gt{=D?;$(yctIJlytQ<UeloQ!O5Kf;G73M>)bU^jOK?u>pLY~9+Fk=>^c&zC
zgaB`P_iQPFE+Tf))0G&7(Nh_;QhN$&UgvEIwiw3pU|Awa4v(G*#^Zu1++oGAhm>jb
zjX~hTEu&=QNw4KHz?rLf%e&UMXE3LSz?~0Lw8f>q7vxesQSZY##RV}1i{T<}h|`|L
zQ>%O$zNvBLv2Ty8^01;rpW3g>%XCyKe>Za?uX*qnO=M(>Alx)D#2NKm9G;T;8c3-o
z=hm2oa&Q*`*Byze_~xS!7@D>EeHdJbBG5+s8NlIU?sB&?egN|E*bCq}AzCDrKT|Cq
z&B!AHM$uIK@OLXsc0slT<nCyxn>}5|rzgxzMw|LfW-9=hb0k3{`gEQ)v*`CS=+h0^
z;3zMR_H(M232+PesR0!t0ntV|;Xc}vdYve_iL6?v5AQwjsv*e@;+E0GTB2*|eVB_+
zn>71WYZ$D}{N}sFHuDzj%))IX0Pm}Hxtz$U=1jV}57ah6k4G`%+Zqt;4zkkJM-v=a
zO2h6iS!<N9$Orb!eo4S1aYC4@vg5*axr2d|w&1AyMUe=P1VEvh7qBno@+L#3xzr!e
z{umH|n*dkN^XOOM*KXI-7`)V<b-mwTA|sQrK2|R$nX)~e+`Ulb$H^_I9Ka$|!T+>;
ziZsgzVNw<Oa4$^KzeR_ID}i>=aE`=bAT*?khl0V6_f=^hQ1UbVR1<G0nu!MK0M$Pp
zl;6u|$CpRC^&-$!8rh5v?VT6G8GVJ}_yBd>#3DHtOz|qTc{sMbPKW^uyvrc|#nZd6
zS~%(K?7cze>%^sSCnsTT1Sy_QHOv+^*pzONw}MYQwA3iNyXv(w4IOOj1#AK7jBCcp
zsgJnE+ry*0SxOn2&Z-<})(a9n)srap&hiRef1khw=E2q*CWIc5DO!?|t*IlB;E0f5
zJWI>%3+=3r>%*}7m9Zm`;rnd9?F@45iMXNOX4CBzcM_<dkX$19RgSvURiZVaKtn^|
zZFe2i_$^yoVLmILvsTemm`@_vgC818XsyF(DG$3d`(i5S+tK2gGt+?voo;={R|p;i
z61wyz&Iq6%6W2%tp4o~vRC$%+UAs?ruaw%IiWzmS&KWHH=Z=oeoXhF1%qkc?qrCxH
zHI8jW2@IG0Q&DAo0E4jEeqle!zV<8i#pt`6^sqCzp;sMN33{qn8)HQMG_fhr`tQ08
zpH)W+X`|L&oJ+wlgN30BTk$~jbvaep{4Bz06|F`fOj)_;hE4F<@QLpD%S32@%b6-J
zhV0r2eYhXxXN6Lrak#?x5~7grT^u&UjhJNeeH>zoRcIbsAe;+fA($oXmBh<&_ys6n
z>x{t<BmT0Y`f8QoOsIgW#bv3{oQx1GTtH}=b^*)v!G*&~DP6d3NLKK&#MnHbINX?v
z@q!rUw){|2y>4xGHvX6(&w~Exv$8o^9in7py`S(o=KqhUw~VSISlYI6cXtR5!QGwU
z9^BpCgFC_9U4y$5++Bh@8+X_^Z1_0mIq&y()|y$}Ro&Iqv+BM|3Ozc}76KzH7MXSR
zS-OB(5iVIC?&o@^%e~<mwR7JSOFcX2Vk69mLWr%~z8dK=eg;mI*~V0WIGup{xWHGp
zGFqLQOu#-rhw{l_S<OF?_qQ8rVsnU;8B3mJr+k>T3rGGsueRB+^X<q$hf@L_edp2D
zSjsJAmxjYp|BU`|ko5||Kg3E2a;4ubTp%a^yn!*2>ZY@mi>KL<2B3{!TKwwj@2NE}
zB|vGAVt!V6T;T#mRGwy~0AD>tak#v7;915u^(7JdySYLjz<xcA+R$haw$qqCf;uxu
zJwt8sgUkW8{-lvpnrI`qi&^SY3vPW8onhZ+Pk3k29uszu=@u;V4nZ<yYr5wj>*Pb!
zNH;9mHEcm<>5DQM--Vgos#s3WIsb+Od%_=DH1aG#VhQby;GC<83Za_<LUteiJ$?vd
z;Pkz8=%23wlwbxQBF>sGCA7!B?-NIcuszIjbM&%>0@Oc9`&9qo#e(S}8}h@)Sm?(Q
zoGoxNEdtjM7pIA!cSU(;8dXAMZ8zD1xhioo=VHWG5<F=E6t*9i-+mwO2<Lw<Ot4i@
zExw?|Z75hlvx#?QrHvlBAo$B>26?POi>Zyf0Ryi@J4U<_z$;C78SZz>*d+44Z>)hP
z{a&xY%T&=PrJZhSq^Yz&ECOWoGt^fOuwn}r#af7#(0%n<VtPT!I+)z}Av3uOXAN6N
z1Zjl1MZk4=+mLuiiIdcTQs2{oNMxrn=!<df^E!BaSXd=Ri&-WNa{Shl=vZu%Qgu9E
z8N?xs1ToS>TZhZN>jGsC5vr|Y`6A2fN@U?I^k<YK?Az(_@~Ry_lHK<UZXQ53Y~y)+
zr-4sBPAh+sGKhZ%6NZuHP0nV|b@w6EU3}Czl^Wjl`b5OrVqMm~3lfIcQQTEgGlApp
z9|ia$dIi^Mvbh8}4mj;Hfui3c2uM%SWK%t>dEdlYv47AUxD5|7ee&R7PVr^XP;78$
z7V981iZJ}}0^8V669N0QpTWUTM62FBNT9429qG4FUV|6UV4C1z3IPnJw80|COJ>kP
z&+T$LZ#F#@bU!bdSRHj6p)U2RCQFH|CD7?L2L?_3;bdWw+H*tY`laRgay&3SLDAo>
zu6vjTk4wkxkeUQn;eNeoVBq~^;eC@@aiapojJdb%@}f?Bctu!$3J(#M>fhVxL=cd2
zqNyqa;*G^3_&`5OG`H{MttN)lV7%Y21bUVhJ_IA1>O<P!6e-gz7Eqb^eMA4eV6-b?
z?d-THqk)5}HPh@0?LVNdFo&yVu`xhbjH$3kkSb4wC%=2{+JTpcFO_n&^Nwy^$_Ntw
z4ThG>$Rf@cr<l<tfO4HccFnNC<hMs37h*L~;qiB<Xk#blycq5w&kvss@@jj3&&OR8
ze?6MQiA>IWpfvy@1l}YWd|(}+3$hWU42cBuJ#Q{=BSifSffqu-;`^$5aPs8abzQOs
zWRY1Nq-BzEOXTx2{OK}5>v&%!ShgdJerHfLB=7t~nndQ2{H5`ep9+TuQCQXF7Cx`+
z<F1DJZlU``@9XKr#uCaZlU33@I>AwTuTDv~P-x)XGg;G5`qjmn$K4Jg(FUGC-thjh
zZ`Hj8%WPO&O+;tbCUT9vge0*JHs}==3ob4|Gf$5o%Kj;n>pg~3$U1WL!v0Fib*R85
zWuJL&q!^T81~Ok4zy`_izLL$K%YK5A0Si(R*-q+kSyJCNKdp;SDF3eBO%G|aZEF0*
zU%3LmHh8SEl1rpqf>m23R^@XqPH!^|qwT{U_o^M0{MaxJ>%{o_?}PvCq-w15#=;0n
z>F*Wfywo2<moNV;{##kdLixEichkt^V>$=gL4GR<UANSr-=ugcv%sI(qyozhbqoHj
zVjtw?g#N7;(@+Ytk_hRik9%YwZ*shgTpI_4QfD7jvIE){w26Y)CgMZ{szn`Ue8)Kz
z7*rSUZ?<~J#)obFps5E$lCLzW>4^Mh)bBw<<?KEp_?nhrF4jp$$U|8ZAG}Rur!E8-
z(2hAFMYDuWZ1KsZatEB$>33IvwGL5lK)T?u>b!aDqLGdFxV@X1LcU`Z_!%nFPVJHi
z%NK9YVw>QC>TRkTAg}N?*|k%nOrXof#F-kATkG495wTZX;kw(4yV%>~&xW(X&wfLU
zghkeTy47LXyC9IO>Qyq@o)dh$5C6*En%5NiSPx#oCUhvZhAdogJ*)LSe#=inbvJ1`
z%GA1F`s2Fy5TRZ1j8>{alA}Dj%kz}Xx&GF4eJTWASP)7&&APS0|5(&Zi8c-Ac9s4m
zQRr@afRU|UGGjr{m8Mw>?YDtA-#GVNR)Yes?S=lg(IBe7W<#${dAh{!YgUW3+lN;K
z*;;U1O<J+T`rjMS;{4;SlldXDdiBZV8vbz<3CJ}p{8jQTi5a}-9V{dEp+deY#pp;t
zt(Hp#yT#Z`=R_)_9o<D>CW=07ydjJL|E{25Mblx7i*qvk{C$?^Q2@Juy^QfCYT74-
zu*V?d^win8h)w$p6_W|0*v+aDCS;6e;OAMygAXN22`BR7gH(N40gbc<R$0nZpQS6&
zrg;$epqygs`!5U-sp<C@W{U~>RU4NAvuSy4`>Y)i8MTP&hU4)iR`Y(DNQm0o`W|c!
zH|b)!XxO9V5S(9wtB7@s=35(bpLxVApf;5bD?p4i_(jTTO%bl%=gXci9ajK6u=R|x
zd=s%D)fd)IdA`d%rNsQuWK_IXpEjb#g)Y*qG0XlL9kB-0SVss?$m=qw31&?TapA9h
z&Zgg`RmnA7@B3T%Gm7K_Y{@Jl;$u&KlP-0vP~{max7<Didsqc@qhQB`={C(HQHEr2
zcLi5yUC~?YM5F=;%p6IIa5Lhu8TE)Zw?1xfTa@@Pm2_FU_gUG+JR=rdv)w`Aaz&I2
z;DaS9qpn6~r>8VD?dEa8Pj7DoF*uu)XFw+IU|+tBVi!@Kp_*~v1!Y8?$y`BIuXL<f
zO8NQIt3iS5@Ry;S^VB6G-j_5iQ>^eYN}rVIABw`w?FK>a-rp5NhV<BpFhO!Vqze4~
zd+ISuSElFP?0IErqL=twMcQWQ<lQR^D2=e|;2PR;i?%DlN<CBeK+8Zbr{Af;`kmCD
z^?EoYj0tk}18G&IOICyw23KQlcuc>03_C^H7F-W5d$-A1RZarYt39<A`*l4^Wb#Sk
zqmdxAN5f&pBBKD2R=K!2DIKKmvX^I4HEb=*Q_L-sD>3*CZGYeKJ&1wH0segYc>(Vv
zRPtIdiiNrZ!{V<G7e7;(;@tR_n7H<T*QCTgFB2Fn9kBgO)wEH47Ie4N*44nzcXs#9
zP3k<7jwo3{wKuX@H^%>KhiSL_Hm<K3tL%QBi_K37lQnGM^yIOVDo%x>w$z;cetmbD
z6f;x7bcCg@Q@-v}<?8tuuy(7`1bT^|Og-nrDB})r?(pTc#coBORld9ty=e8I^A)EV
z`a$PuH>;#iFW3Qxp7mYO>#)}AGI{^-tFDRuT2Y^p5S1j^?D^N<>xpj@#LJ2d-M+?;
zFsHaAv>WZQb&Lna6p91)FQYeq29f1|8EMYYTxZfc`m##(gw+8gG6dv@u6#ZF(m8iJ
zkS*|_U!d>y?l|yQT_f}aDAoO8QL&jpo~;b4K2U_{-edWsc%@v_yy3%kt_>k%Z7wr`
zCIxUIB+Hmg9)u9db>mK?>6JKsV#}*{2UiJ2<x!P6UDqD69|_)B)mrWdFOAsYS#OHU
zX1+ngaTWSWsc(Ouu83)rK)4_EO~BIcSftn60q`ksjFiNPS7prWWVd*f3lSe!4EH3P
zwzwbe14aMl@Ak`^%!S~zI9|hg``ID556Amr`YuZE%Z5Jsle#*I(QUJir+3^XYJ;-*
zUVA<sVv7%&NHr!fkn)V4zDkLOl==EfiT$P*!*bXvDkz#23XxA8`@0jo8sk=XSK4X}
zA9C?VZ)?yp%h1_9h*Ljq1O?%3$sO>7;r!~#yICwlLJRF5?eVGFV$NaHUF{FH#+weR
zN_GD=gRxqWmYQW;hD|{VZVDjeFFN}1O5vE)=f`s0uDt!IYym6n^S--SS|B)5{%5no
zX+;(IQFHD}ohMqriVmh->r+~5IKrbkw2$R>PgLrPsCrxgMapEu&z6^L<}f(p%eo3;
zM!7n8jt@F@8mhRAW#9YbKT}DZgfPuYh`+dN^U$z*#Z5ryHkH?<ynHniifq!3bg>2f
zlnBEoQKmE?$KReAy&Snxz=FStfe5W1QwcI2<?%T;*6wm>BA?WWWD%y^!Zcdn`+U@t
zC45+DKAgZkX4H&VxhCs3CSsCkgvymH;CUE+Qd_mX@Rm@>?)hRQ834kOkaV>6Sw{l{
zpQ-}5&$UPWHt$NN@thi9^XQ;s0gbZx^o-rvN$qT0igXP4Kg;{w3RDU%EzOCxt760r
zSBNgOh_hss1TUY(iJZoc@t=u+w#-T`q3YGHpAiRP(ZU_cSb|kx^qz@4|BnTL^puOe
z-xyP!znPmvz?POacL$SSZfK5z#VaVI*JX6OX1kd7N3tBUAoXpj2J;|@Q1+RQ1<^Rx
z6n6l$8)g6YPtmyfP{0tP#Wm+{I}922<73bBZWp<@gi-psxNWqMn6KN+$(W??t5h7-
zLpz(%$p&_c2;ljwU6PJqc(L4O0`fRCxqgYL)7)m`*#JZ<W^dDfu)7yFKeXWVqX+nq
z-M<^n&sp^FdNb*r_R}!Ktj&V%_`D$y;jK+&a%9TN`e7Mym7P0#<wEPax&10a`@_4x
z<3#_x8>3|S5t0eJJvkhZN#=a5n1_tq)}r7<DR1TxJaiqpl7BFy<-LEbIWB&)eM717
za4ncpaZ&gH!R7Oj^~!pPb}nGwtzEu!Rl}oMu+Kaxp?h6?qj#fp!ST}PUTg*?eRaTO
zzqBvVO1$sR!!EU*&nERaXcy)lJpRK-<eASy0Vy!okH#w9@a;0z23NvdIL=Yg=Y!dj
zVZ?68Kqgpw#@Uy7Lg8wA%yCxl#*lV%@GqR}Zz+d?ebEcb6?}(<YUpf|${LkQKYq_t
zhIMbaCPppku@Uz?sAa>WWz-|&6yghhxZYQ$vp99M5zObJ$Nn}WfmTASpVro0QqPm4
zt}ArOMaCJ(9l%Nz7eHt~y)jd}8OX4~p^70e;M}SjTRH+K-@-V>yV>2M^I{b5d9roj
z<9+r?|M#^aig$!4s|R#RcQ%)2>D1^CDjl_I61D&&2wXUbxV+OTIaAJZwZ(6|=JnF)
z03oJZdcu7FIJTH$=nNen;*Ffz)qF-Jc><Uk)#_*Q4YcqIQUnBtjVZc?_+EW-HSWuF
zlpCOoJt2R`@J-@7L|In5>oPZ5LL-&Z$L%ZB>1I#MuLc8_0nBw5!H-*_i+61LH5TMT
zWfzoT8YO9)Dkty5jYF5UcJv!bcunV4G<=dM!3*X@*oL=xG=}}IhmOxm#fPll6vm|X
zP5D0;z12}`cN*mw>Cg7Z(t7}?O~^_9s;Vd)w4r$a!1^0M>Y<Di&5IR&kNRSoAhb=i
zpTTj3QF@`wS6+R)6vx9l0hem2nRJd{Q8$DTm7DJU6&|yUP8&%_`@+bmYV~(955*qv
zTzKz!SWI~tQwJPVRH8YT3qpD_@bbe%yy=Z<B$*lu4cOjt0aMG&`^ZbHh>y;>lXKGH
zBUQ`ZXaHhaD!;Q}$5hf8-xzzqUEOmzZqzIwhB21gpwhBGRwQ<PJk$tq*wrCjrb3K<
z+#E(HfCo2V5w8+{u^A9>_~%2SUb&dIw|+7==!XZc+J$Ib=i&AyZ2WLb?zxef28V=f
zX+T`LN<hW23ob)+N68h0&$u%QTFd&Y#Y5QP8ZV#Qgdou>;y@J5*s#YL5|kb2%VFA4
zy^&7G$bzXJ7erN+aJ8yV`Totq?a7meUGwT?^z-1jSdFShyy!XbeSTxipuIAu!#CTv
zgH<2dK>AK53Rur_*27&kG0QBIDwLZ<38ve+xY36)<>m*iaP}+1rWxwDsqcFG)kN@*
z*K==|r9ay?%fD;iPu9ezSvoM7_(Bw()7?{A@Az3-X6{_mhiQG4)IEt`j=1AWWY8^S
zNPJ)9I&dG4FIkKVP;EQG55V@tt$a{T1N*&(qQ#=GX6_1xdtXxN?p9Z~l{uPKB{IfI
z#>SGE3kvmm-Vz2fbY$r<d5qSgUi&)xBy;U_{mFdr>#hBtr|S+-ywuJ%({!tKTid+J
zZWnQD)0s7{lUiBo_Nr#n`>NS`o71*Cjswr?PHrPz`r?Eqiv>)L0;N2?b?XB;i7i;Q
z&<g6y8pEUQN#AD~I$YoUJK7Ct_F#UdjJr*@*#R89ZTl@`?ybu_OiGx~KzO_MYk6fJ
zU7?Iphjus{IBl!}_e<k0qpLzTBN2_=^(T>2`VEo>d2K4c!ntN1caA4LIbOP*(Eh+`
z*J>{eiI`X58qb~NBl=>2@0(iH%lb@hPbuu)qjM(fwY;5mf?VJUK8FL|WXX-$z0AAt
zWMumG2}2>ZU+yj~<eNmDS|j4knP7HLG;CFv!vod^VNu5dcC^3$9yDn<m4U}0xNO1!
z=iQ!$5pp~wfXj1%gOHm%ZdbpI$mPQQcDd~@Q3k3P2}eGw*}S2Rnr$qw8$P*71ZU6*
z{*-1I>crK>WFA<qSc$_Am6W_)Ao6FbNFA3t_Td3!T&)`GSo?(YBMR^6rb`C;4^
z;#g3OVfnE&QH+n07Y|o)iPeklgc}4M7Kd9d@yVwK6`PEjyT`Vxp7;1(;+TKRUh)D|
zi^acX$3aUcX3%R;g7G*9jqa-x&b{<Avou55^aY;}(P37t``r=?4)~fs7A-9_N_H>c
zo!l?f8{Lsf>!C@z;t1e6eZK}kLq}n;5ZefOe3j8_txlZA{m##a;y?E4VF*s+pyZLZ
zPILFxsNF&6H&D;BA>Ad)WBDwk9gW_pNh&wY|GvPd^~=d9oUpdCVWBaI<5E;AV474&
zgCfI0Mk_E1MG&5NWy5uOa%bCsHfX$m)o!#7gY?-sAupr$(`)a?%P8*T-WfEp;28%J
zU!elB^0nFebIGwjnc|cW8LTpGpJ9&y`Q5ev-mwXp%#+Vr7zUJP5(27}9!?S>m>MAD
zuz?x<vy_yIj!J$!jqvl%@Hu;gEG`(@W0F`mR9fI7zry)g*5A+y|G^HHF!e)`5|@Z}
z)JJ`c^s^0aB&(_67VQqqkuT#a;lOG)rUhl{J0!q$H#yXPJ@4HDUjv$aHU_nZ5POHX
z!752Ydz2=#n9KgO6?AvHkUK^JBT&C`8R#LAc_Q!dPi`hem_bulzGCNQ2$xnVvsoT$
zo5hbz^ebyk=Ya~5(9B^-HtYdH3X%0N;_8~rm;OwV!}WD!5>S^|Q*n4u2vqR-w1{(L
z8?D6Es-Eu5hgj^y;fi??j0@h>f4zB2z%^Kaj_ytUH1_pDY2@*I7#)9a^`hy;&U8~m
z#|eUwWy3i+b#y1`t8J8i8CyR=T^he+_6_U&C6=@iTKO^7A=Gev3f~>T?Oic8*|ZB9
zH~h7``H}le%mY;aE25j-j}a=HlMHwDTuN-jEfCdH!;i_v4teTxitiI<T^iBO44T37
zxX(5|_4|_LJo8vcT|mTl<&uJ}zS(>UiI)&s-4H1$GoUG2djXmi*Xc??)h<_k7b=m8
zLuC$O5fdZs^3<nYG=u(2_5Jyhg1c;#RUu#>j`J?6S4P4v&`ea?S>1N8f!y0-LBy_&
zU&mV0jjz_94le_zts4Z$Hk>SLMuHE<30{%GYT7NMn=S;|2l?$6iwcp^EpcE9+SOC!
zIp4Gk2(w~W<&RF}Ku;bP74~A=A%<P{-icbw54NBLf{jerc1M`YL$Y2>#gaTbXlA<T
z4cbeRY4)e8yIT1d-})o?NvhuZK<FN-x=I@lwu|CrmJb?S&!qttT$SalQK#L}$_RMP
z`LQ2O54Au$UC3XoqL)Euq_@-PByY049hCfHx(xafegTB1;=^gm90^F1<mZGx*Z{x8
z=F+|n6o%PE)#s8C?gg>5Q*+2RWu=4*8yy)dESBL*_?@=RTlroeM84Lz9xcw;W4vX{
zbm=Z>yO}<<lxWBpUxu<f$>UMtx+qaA*&F0P_(%LTV3-6KyGz)F=sd7#G??ZnqfJmz
zhkL<<4xB`LKS_=)XAgP#t%Y}oM78xd@f-C1aWqzacguK0BX*DwYf~7O9!>Q`=!qDL
zs#=8ac-_XUUISI+$q~(rbZHB%SJ5ZaQ;zjx!&cSa7^Ry0J?s_xHQU$W;uFRvF0l4-
z;xD`M7ny8Z*>a-1KKg2>nAk(&UGam<HJ2cARfa&2qdtxu)rK0{I+3zHJFo3H^Y-?a
zq*%@&C9s4`Q#4b0RUI_KPoE8Ql^-8;xbINS(L_HWlB1;|lXph7?~ZcMoA|>wRU`LO
z4|%t0v?YJ7_jl>fJ@$3QPI~Ia^1I-jC`kHaBc+IEHJHY~xsDQR9eN)LH2<obh<R4{
ziC4A_q?5EAj;~A3XnNwg$^lP>qu4%gfTu@EV(K(IT;Cnhdt_Wsdn(~x>zpK&C*g;l
z*Rsu&(7WFgXr7l^$FuJQP&1xT)%Hzi$_Q0^+Et<7i;Kb8l>smD{ID|GGOT>?uZv;i
z5NZj6$pH0o75v_`5CN<2o_&{7?-XGRjLq_ly9KD@R_!qWMHRbtEQI&N?82_J*vuCf
zuoB?m_t%LnO;k0<lhk!}p{#d2jngaF3~~`|@aa=r;Bv+L&DvF5?q@Yd`z+q%0P@dY
zqHj`N)pwXTmltT_1s4lQP?5y6kbs4FD~RSjdl+cZ1{GRY?qgY;P(>uZoGU!AXQOOo
zk2|4^qWB>=&=-hTGU7JwYA&#z-2{KldI&Hw?qZck9P|VA8`)8$4kL>LqA=P;V`V#b
zBo?f$;;&ANU+Umpd_i-XKaCb~X`S!8)FA1ev6wYfe8d5oIvOoTQKync)pH#c0;(CW
z<Xg$+R9@oPQGUDR3H&g8un1>fF}8|)cVi3<0@Hdaqc3Z&-ZOC$p4954Zut~RZ4fr2
zc0sc$Z{EQ+7Tlt}5$=(8_3JdQz^NCH%v_#PR7y4mW9aqdu0C3gcls%w=iTJ@LB1N*
zeo?T4Sz^BplW)d3Y~adW<Hlg|4Lfu}P=Pg}rz`jVAS3lW+qhZH#1!oQ_wd82dq6cN
zpHhG}li-Odx}J!RHrulHRo`eq4{Lp`oM7!Mwfq(cEW}!+rxQ{Alm+H2{q4_Hl2y`*
zJ~C1c``M;}o*&I4qj_JvGrr#5pzfo`sA#u?qn@P;#*wO>&r~w?)h718uL6^>IFa0G
z7KTDgYcmeoPSFL)^$_mZ<@9rqtveI;LYaEZ`!Oo_L}SZ_*=?EIi`SNrom~Q=Mi>lY
z;}QzxH5`F8(;B&lh%F%|{S(q9B>={~-{zuK7I6Y*N<Z46yYZKQJIh{j2Wo{1JFo^`
zS)Z*6;7S%~_Y+a4sg(JSi<3^v_D?He+-U2+P316%Z~}C`TT3GWpI-vU1I&n)BL(fS
z$nL)iyRITCD!<B<lQmwuk8*^!HA0YewVxftYy!I2xC5ybU`M{$8~+lp@TPSa%nAbE
z5QCR4tm->?ykkLz@jPs}`ndm~*JHjh>8eb2XKb_~JwvU@XW0mT#6p<m5bm-r(m|Ty
zM0QQHPYK&VsXR6JBmlhb>*YUNs`hm5&;0}BqQH~`W4;re0c-RG0}2hRn1v|Ua-jFK
z2wp#_*Oo8m=CPRF#^hg+Ae56D5C1HSSJh=fTn~iyhb<>4Svw-dS(IRq!)p-0xN87O
z6*5fsuJ0RF{LH*QYwuhc!01Gd)5BAba+WuuQy(^8Q@;NJkncS}bo~hH$F(Q3b9vcD
zu*z8CAepIt*P<$d?{_X4j#INOwVj!+@XS>83+vzn9TO~dmXu3fl^-4b`+mm0d<XrY
z=I-sOzd%7!D_6er6VxVjSn*N9%MO<l1-8Ln9%v22_3{?xB#B>*^SQv496f0SRJrEz
zIn$lO4(U_E1<%r!=qC{-&K~o9e6ZsbDP@Z+lYdAA3F|{Cj5A|F6=;vJs7z1taD+R^
z{@9?FL4k4>qz5@kL)f6MpNGlL`WKUoX0asynO|Z1WOWP7SA<DY>XEXgT9SM(j3omW
zNA0y+9Y!n`Y9wz5JZBsje+zA-X<<4Yov!<03p$aI_mwGRiZ(@CT2wpB$N!|w_Fnf+
zlINfNx{+j1Pr?MbhJ$V3eGwMw^N!X|txVhJprc`1RL^qEr@Fs%qGND@x684-E*xuY
zbU!VacmCj*v*u?-=1mJU0V(Fq*C&2N)hwa&T-vz%|0CCZdO4ThboUji0Jb{-QFw!=
zA={M)p#B3R8xRe=3nmP_x4DYHbZwx;hCE)(7439VW~E|<%OQqZg-&L9ibG7>zWrta
z_RGVFvm(dx3wo0*kfgCJPi_q$jAb<3$!t;lk30iAd8oB8n0mTasy@v-Vu5WX0rn`4
z_?Y@R#`m&`loC4n)o!z^u+d?G^9w0PfDhiu3yAV%Qe-<4ibd-2-hz$?ds8?>kF4rb
z_yV{<p$Fo_=zw>y1p`L;oNv>KRp@`DuLyw>yCabyN8*TR85@Y11vO|fD!sY$-G_@G
z5bp)^&P{QzU41Ibj_s~_5Tu^J?*=?8IVz<AZnp5jH>zG4F1{`~u7m&OI=&yE%?&)z
zXgaAGeVL&^6rG2de6;|dkIMO3+n>ZgEq>+9Qd?L?l1Tx7ndp0hgdH3j3@Ua8w0%+#
z(|YR>wj4jta`~cfCr+g(`WEG+5u5pcVUaUT5aIWE`T`0zUywWz0L5JU(4x++W|d+G
z0*p<<X%a(=cf!Jg>c-|z$Xviv44iUl@sBmM!?M>>`JOMHU{JVt;6Vm4qQ89v@{>?<
z<9{KPRz^_unv$ggi+7jJ^4Mo-O4;~7w)Fd*=5y}if;^p?ewPuQP%Qk%n|)+Ai{gFX
z-u}fapsb_l8><ROB-E<1to)Z$*q2FBpwHJXFEh#7<x3Hyv3CJfjj&iV*O-$0@2f^=
zJlAMWZg`zLPKg2Hk@|rqO!!}PJp}}CPnQYC-(^#30@{eZO;TB+X_-8j)oZhjQI;S7
zgI0=Q{s7Ajy`r(}a9cV3`NR2E{!q~M|EPB}oDf{w=dyX~7*>pv^fFDC{p_?MgGi8%
z-Sp@noV=T7H-n-@r>AN`{kMh*5zIHW{P#7$db~E}TL-AUb)Rpv=5jMHFRm)!@@bQJ
zg_8-u+Wt1OtbgvPzt}9Sw&?7);EKEQ(h1u1*HaTxeA><|3E-Pu&u<`IN&9>qvX5+j
z_J>(+SidU*oISrUtq>H)EvE?|l`|FAp0-Dg+CE3<%U40v-ByA+-D~LMgj_uJces07
zz7^Qo*xye1{bz0Tz!kWwN70h39umbF`>TK|<Kn9(I6`h;>V8#cxvB`(YD%&z@%|1t
zjN3_8=dI)=c3t@&Iy4Im0_`k|vPoFv&jlatHGVUrp}ByN=~m+hA4#)erH3A)OAG(e
zkXT^!&NR7;8X*!yd9;W<+gM_)jaj5z;?Ea2R3e(^hB%^QUwPv78Sk3B{>iRt5#LEf
zssaW>U%~G0p50ZJeAJ!)gOzfyL8LAwF11&O&{x@}vd$UuknfH1x#V<>HNEjOk!Q<Q
zGCvN%XdP-P*Lucs*8j(O<?(?&Hnv+81Q|L>)6PpWjz)6B&RW*BDznwz(CI`8cS&~e
z-(_K~A33`WmoP;zxBfdd4lan4w~~GvcG~0g^XRy3iDd4FXrEMxHDn5nba#Ro>ulF_
zI1Wga$ET<Cq$CWw@BHA%>|CRqc%4HNdK_^7;K9e3376F4mANWxTYWY!J6yP}v!|-M
zkM7w#S8|JTU80C3yN$#5!UD)9rhQYugs9Rw{vSk90S5eVE6;4If_wg_)*2+wm`>QB
z#VjI!%`b1!gOF8LEj?{d;pI$qk#dQe=p#pDI5bv|0slPzIH7+=T9A52X`%%vaP3Jl
zY27C0`}5;>F1#ul)Q8WdQ))FcHZjXc@jVtkgpBiwrF*S#4k&-=>B&64{bZEnGIX3R
z$S$8U|9_js6Rv$u#|D{ACOheTjJPh5=<Vf&j!iQ>uCzL4LpJk&tKShyKv0mXZ%0Wn
zhv!>qX{m-WRv2{ok_%ez62z5Sg|Z=X6E5kWYw;xmJH`J2MR#+^m2+uz5l|IUAR!<`
z5+*6X0JV)xO{MMa&pAg+-JAb)K@J_nPY5VzXc-BK(9rO3dXg&hY{?W(<62=>k5ukM
z%MO>b8Fi$unvMS(NEQ-A79PK)v?p43EkL<gzNp)AM`(O<64TMq@%HxC+5cb8e_5JA
zK$M{1U<j%e3=E7CZ{U$^tMgW%K6v$E5orAs3(Eq}Xe+IB^i;qx?|)3#AlJx1>XAo=
z8-m}g{BSnOGAVw34NQlWIU$`ad-cM$amfF{>Gr(@f=#phF`gM4OX%wpp#oSX6?)aM
z4f62on41`1?s^IpnA}-?g-}|kKXeBtnOr)0t4?JUN3R32;F9~2$W-y?7#UJWslhR7
z<_zMdFn8jp@fJ}cY}Z-R%bchR;I5>kCRdjjuKQIoECDa^JK+ZzW|@bF4e<YEmF|j(
ziX@vnGX8`c8X2i9vey3dH66`#ec`HE+c!?L4zAFzoi2hY7AVp5=a2N7jpUCX^w%)4
zxq?aeIXOhU{_pJs)5#pRdk6H)SU)MVbJ$D^Vlxe#j_Ccx^(nN?NL*Z9vAs(enSmO*
zyL~0~^~$LadL}cz$H&KrK!v->-Iy++6=HCOi;T}s6dRktfzAJeYAPUuPw>;5Gz+ZU
zUE3WkCLDf+a+%5hFd!0Wlb?r%hh?<1v^cqqke}CWWYpji-R?kAaYQOZ$q-Qou}^x?
zaj!C5G6|WUA1-I|h+LYp97CK(@h?Xv3E~kb6#`2?GJbPAmyeJO2)ySQ&9rRLG^{}b
z^D;9laL(4?*`3`+@-l$@_(_{+oZ}_dU#90!hq?eE92N<!xTxl{e?Gpoq)K@YvLL?O
zgp7ZUI7b&s+FyFTsHo_l7|c;P^52GO{AU9M!Y`Nm@@AEnWtU7bh2kl}Vkm|`KYO(}
zL&^|Mx-vlkr5mT}J+BQ?13VG8GnCR|*AM>uIr17HFFnQpW@O-*`->xYupfC0R9`;+
z6rCphzhewjtd9v%`{Fgh#FGVox{=>(%KghhqJdEHWvI<9r5=ev5^*bA=>NiJ_;zNI
znWQP7u6OFByS}?3jhJrB+*PO?@rDTQJOaYU+M0IFNKRZLOEN8xYsc7tL%u)~&I!s1
z-?$Y*zTPXA-M5NFnxlXJlAGV22cTedEQz%=KKOA%4UYT2u9yEglU>8U7WnIv-QnPu
zhr&u^M*r)fcc-)5&=<GRK>py-W<?qn!6fdZ-$A1@qP@x9$Fk<feQ*C*xJ%M9ugNOf
zVAC>nv>lYDh8?dUfC}A8xUQb3c~|afVcwQK-qmCLEnCk@uzp)hPjk*w|49yw(ApEw
z>z@)I0qk^5F2t6}EtW}X-pgOlt;nEOcUyAn$Ysdnt{~u(KSp_c(`HW$4NP@jNdauD
z*Hwt_&x2pu_Q!5uM$k1Se(7?nQofKZP=4WfCe~cxDQ9Qalf^G9z;3NklFNR*1g^=y
z&0iSk(0h~<CupEXmd{r=#XVU*>)vyD{AlX8^FJFP5`%YL02;1#+&XgWc=OM_W_o20
z_j58_OV(#9N}ZQ(Suh_1T1ri?{u4y5(2aB}8S9Bv)v9pI8thfsWnCe%M6J}|x63oZ
zKdrM(wk`F-JG-k|yW6|!ev<&XoOVU5*BZ@RQm3x+s%G7f@(EV`L9cYW*Y+E&>g#eV
zG`VF&E2*0v?lpAj{RjUS(sC4_^qf`7W`#tb1j~UvXTaq0WQe>yu1YuCA;qk9a*Igf
zZ~TUei!KPQWlMMEFFL>s(OsIbKp*`^Xvi>dT>p6-ZeCt(Zzm(dlA8j$;Ez!+yYlz)
zX|fZTtGPY#M#pO*$-EamaTq2M0EFm~I`fYz4jLzJYBI3bJkV;M3NpsN3gJ{gxTnW@
zkKda%DVXw1F0#wSb$>uP=Dq8czY>iCFy_C$<k>+hKq?WiFdQ+hm2*bXv9R?%_3bSK
zvIE0|;wqX;emeAmJgir0b0=u|EnqwXn_&;4fWy(aRi-sdm2~1qd0$`Ig#lN9%5_i!
zOL%rs=JUESI&>G?Shr!5+AH|5R)Z~(Oon9?cox`T5p+n<a#*e3t40$ouhz(8V@|>5
z3z%?NOQiX+@3*a{196a9yQt;sxAh?q{~(;3=PH0&;?4!RSpMTfewsZ41sgFXmhbvu
zoF<=lQQ+UPA9d}2=U^2Dr~D<^nJt!zPs_O=(r)%jB%kV5<elsZMeL+w4hac4*AHc1
zzskyG<ma`CTyM56Zl26pUJ}dCMlE@~priN^lb|H@B9X?RUBn?%X<F^6F%9{j*vt-L
zXG_`nZ!V6ASJhgD4vCg1Wke&{^cYq@C%Hb+?CEqvN=!`5Y`fb#)q;?zDF2q~DDkD-
zr}et`(;!g^f#U<fX*2rvbj=(F9d@^*X{fGiCB>VZlvFgua1v`elf#?Zq$!{L)a7wm
zc~SV1x45{`$xQwgcQUko$0vEmJ^e8iigLxO|3%(yG4G#Blk{woaP>9GW$9nqF#kVm
zn-hX^cyl-&B&MpGMA<BzaJpEoiDCX2k*@ENc_y`Ln82f^qN2I>OJj;913p~4$zt5L
z?k{yNpS$XD&Ib{vO$rhoi%4zf8NF5JQ=uA<YR#e=I&nY_`?O-jXY-Lne$~uu1#nkT
zbN2jxYpco7Q!)RTZxwKAd%@zZzq2@d{(k25=;oy`y7KgOcieSDH`*!+PljARIk76m
zUw%*q(VJ+r{nKXF_M{WhX|Yjf7FBKI&LN2Qrfeuppg6V6UNGP1Jc{^?BjzvLJi1-|
zh!HBI!)t+l6&mMKQ1$w>gDI2pPESZE;J~vS?2efTc>x|*g+=BN8{vN`^ZuLS2X#{P
z`G@wrTTW$s1B}F~$?8lj)2WrwQek-J60?~_W(Dc@_;#?Z6bP&k#f@I^5Cd|s8||(W
z?h!L@bNM|h1MVASA#yWTWxqiCw7M1^F)@QP;k^Ro7SW#>#vcH853f$hrCe(xBe4CK
zO3P;<4}<q|eR^vzc&zf&Olm3OM-g|y#Zv0nUo=XnvufMrq6ff>p$h_M41_rO45>2H
zcsYLiyz{=eY-hX-Qj(_4X2h1!#oI4yeP!?U#3!9*j`0r)5x1Eri#&^NXFvxG2?dN7
zgH}#`lCnWp;)o}2y$#T7cW<rpi(;!^?fkC8FQNivrd$*a`DmBl)+$Z%yr#@*`oJO2
z{25nwg`FYx|C&XC82l0bK;3q^S_L!=i7G($*XJosy-GtyM<*+(;U@ztN=J6uPD=i}
zl)+JT^SpT(c^O~GKTkzqIy2?Vf!tbQ0%a3LfkxzjUa|(p?%rU;<XoY+`EV3AJphwh
zUfB`!)ceWk^LU|>Sq=p0I&?^Ox}6r`Ah`H!#S(H)Ol7jGi^{}V4+)-z%h*@|n`VX7
zR%FDi54MV>P&<yYY|Zut!ff37-|H8t8hYNYx>7ePtryG2muqyF-rDyd0iM^}`dbtQ
z-BPi<mpr^n({YJLizNJ<oa)vy*5~8rQ{0>q?>tkGw?;xFe)lR5+m1aiKNM1dyk(wW
z%@r!G%`RhiIgGjEK||<9K7hcOf#AzHcRj?wPBBv&T}r3w9r+0NE&saO(<M%l#UuXJ
z$NN6DN%XAXn~XyWx}^{~15?5>Ftyn?ukYH$<J8yewZMXwTJK6m5}^1Ri_fFoQl3%-
z%ejjhk6MrNkIEqa8<zh6oPb(TtKl#4pvM;++I+ffLRF@G#|)O<l((T!9ON8py*7v3
zGu+iLMIU#sN=_V6oZrD9s&MswGCLayKp7}N)SXf*pKLTD>g{{8E2`aUm${#_4AI*}
zS?~hxdAVMyC)xlgw&?iEpcY!~btMT<iFgY5ek6%w7+XY|rI(~*r{kMS7A&W4bP7H1
zhS+o_M?-0QjTHa-YdRV?0h1M)4AnolDE{l=tW=s6{yPA@Ij=swjFD5cAQk~Q`rN(K
z=4dEcjY=w1y{+(emJhnHq!$8qe5K;p@wGM2Jx|*{O3StS-(#c*$BhTW$8$ZmE5L-k
zZoq_7n;o`vQqxIyM@a*I9%S*%wI&{t^OhNEdo(jp2q#qB9Gf=T@p)VLQL~!)9To|!
z+ur7^JoK)+$bAzBFZ#^|TZ)C&y*(H7kYAE^nf0=Cec+yCH37YSOt$<YG|tN3)xOGO
zeq`P|>)SMa+oK4yOAYe|baBp?)_5s|X5L<U@5<v$jvULhGgB5#xiogSgmsQoG3GY;
z?R?~JmR{-!9b4vHcgY^R<vFLu^&I7p)U8mFzP>cwP6}{5@+;Boq|jZYkJJ4TSzJ9e
z^vP1F5lC@<d%RB0IKiW;%hvh0Sj~+#-S5Aa^Ou|%G0eic+h}B-^GZZyBbi-OQpVZw
z1y0Mp^jp#<d*=(>j}SWk%qy*i_P4B1D=9mU`d+Inks;!2OsaXDJnagO%I}uNK8F=V
znu|~Et=H*RF_p`&X<aB&l8K^z($LUw)`2SYEK)HqqvQDZL8ElKl=?Lc*8nX^zie_|
zBpQd2p5ND_{wr!}Jmyd~P)=uaJ8JYPt0|cDRVY<nSO-Wma&r!S*R1_X=1KvXXXt&H
zI^gLXMm5g%n~8Ifd($a|e(>$Om)X$&rSuiAd6Ie;lSc99bx~G6Y4BkwBeHNL6QVF2
zaQKI9u;{Kl+FULcY$y>!W38+5XzOrLp`ev<VQmniDTFLMItuNYx0#t4?ScZEwAiS}
z`drXUIYa$%?5JHa9}DS>w=of@8VK}N6x{g|*?Sir6*7fpz8Lu)B?gIQusa~)FerO%
za30YI1L9r1FQ2mZ8<rPTj+U^_2<pl>2=+<NldqJu>-3=YnO~6cpA}wma{xYKK>+YY
zp^?QM{qj)`9(I#}@X?s6b6>xnzg+?>3T2~iFNz<we+qyine$qr0L^?Cbi^6EWZilt
z!(RWtcdNr(C+`YcC?JLBNk`Ru&yImTx4S8~XCl@z7w4%A)+qMGUge%I$YuM)Vwg+p
zPB_o0wgx@LOZ@Sy&|CHEa<eR1ICIZ)Q6pHv1GsbPUCQ~nbkfeR^BP&TxbwPR1E#<C
zs`wmM2{{cGnVE~ENjh3RDaT0Ff$tfV1CHId;gnQV6+R4D!YqV1)AU!J=bvj`s9u86
z^Z~m{(zFXzwNbx{BfD0?_;JV)qN<@K8j4JIh7CSjB_$hbYpZSh2ZC1{YK?S<gH5z2
zqZY72{`AQvE0ZT21oQy6UD>_8c65`n6WCmZXZ^M<^XM#RrgC1UGueRx#ep_^$m;~R
zwOv;_+kemXud{gAag;%0QbMX6ErBd7A9+vR<zP@@P-Vz>eRR}#Q!~8BIZ4c4-J9e-
znLIn>z$=7)icm-t7!{z1>iXS{)8LMr3V5hNJQI{@!}R&C8b_oetB(?U>UrMJOX2dB
z>~VKKZg}>ZOgJyd(4@K$2xORoEh$19A0=XU^>F;th$D=Ee9iiu4qu>7L@mW+Z@9Ba
zs<(!_^&ptcAtsRzf!6FE63Igy_d1N*`#ij4Kzm=@FDs9t@h+b=DrS(f$Wr8MCF=7?
zXk4S^9ncSr>sB5bqcY=L=lfbD!_m96cf$(Kj(jWhcHs(%+|-yrH`TGQ8I_}AA(D-B
zuiFlO86wUxSJnN#f-N;3WN^tkxmcbXKwSIzG2%PpEFwr*aJ^W}RU6;G1U9KM@kjiU
zbtBVrMe?od?(Dl95A_dtt59?j)Puwif7_-J*6SGFVk=sF%}<vL3?b_q0)-JVkU)Aq
zdoTSfJ?Lltoq~|n;`-D2Ns`7x!{^6a`o}|4KB&4`-DQ?Xe}%%pdqfx)dZ@Bf1!Tf^
zx?j};ee%_Guz%U2xqPj5<#ev8HEcd$T#Icdqfe37967JT^!@lBRm>QDQ2r}uA-(4(
zwIbIieEf=|*B~K+K?pvLCb)bEAz!(iWS-}?H!&s*B%E+=#*d}I$JdqK9{!^YQv?=C
zJ&asP4#tcqSbD^aSTXj~xj;^su*6!3_q+67+P*+K*h>bmx0{Gh)A>K>2x-On57m~b
z0*V5+LoO&BBVauod~qe@b42Er_#=(%mmEKIRhL9v0!>|Rx1W02;FvG!Rh-MSuYL~b
zkyy`D7OO}S``+|R^60xi7#&rD(>Rtel8R`1zXsbAR6B?gz&iASgQN);KdKW1&Q#**
z{UT*ByG%n$TP@Mp_ZF}8UeQ@B9)>Qm$>#HsDA$`lsJAZ4xyQWH1WMvbnmdyz2<@>(
zD;P=UVqid#BiS)Gx<rj)nRjhHr9>|zAhXG{GDH6ZjE;dvFX-eLT3Egs4e+5pKZswL
zj_zf?ei0V#Kk|~)s=AOs@0NElT(}18sq_9;=R&~D*_6Aa(wtwzh>xLx2>4c+Sf~zm
z5nPv&hFWM`(Pvh8`ezgThfQMAg-zEzZ#cs;Y4iI08asj49mjdPBgI6`Ev6G>79nRE
zhJeQSv$hnT<ByL`hloqh3@j*fe%^xwaRgfBxXv2dWPfw{*5IhmlNAfg!Ew1fv)`St
zEVQ99nZLm;DDqXT6YTG1g*fT;UW-@G@PRUo0~PRR;`+o+ec+hwWakDT+H9Uza+0Lv
z!B@K@)+PPisn8>NrMweO3!nU(4TMJ;;g|7+@NQk~PPTmams(;xz=ae=#6M;QHu*nH
zEuU_A<7Ke`rQEafIN3v~Q`>4*5+*qB1cWke_CaOs=Ak;jOWSBN<q8-yNGO2K5nf*%
z1YEY_pePUcAowI$^;%bWwaPJntT79m0Wq?vQ++c&M9s9}hl_KD@n+?!9os4iA>nu9
zcw}~XFbHBO9I`lGKCnUwfPA27O7q<KzrkHOC&n1_OEoduFdPUGD!Y#1G|62e0+9}n
z6N>i|C8vWv#uzrAa<&w2amQ88o%L&VfCz%@r9u}uk(<W{6KK>(Uh71dI(@yxgFZ(z
zpL){AnnAl$&$ZPiMM1b#C=oXc<e_8<1{g*5$#*_~qPih?j<7U?yvYmn9?kVY!oCHA
zItBJ6DmkuzwyzmXFK3mqE=HD?-1_?nXwSwNzA)PyF<o2EZCBgJJ6+Xhi8}}UG%>$0
z92(i^0;bcmxECsRylZps!}4W_Zo|@<ULSD5*f(^`4&xlY`tMB@>E%68fT;-5T)tPk
zsZM3!sr<vkyk`Xj`XXJdBU#>wbVxLq?ewDtc<HDhoTjf2&>rV@4{=+Z9*;x%YedF4
zKTd10LL<FcdY7JirnTg2rqK*8dG>~B;+*cw<<>r(zMjHyPb?XSp>qxTv{9ZNTlC8n
zz<l0W)epfBE>H<)*j=^l_z&x0{$Qz9^RKXdfWw-Xh8P=1{dg`X`Jzlh^uep$(w#~o
zX3ZaYDRJm-eGDA;&LyG`TGdV(rf)fRmmx{SQ+U@Le3v3IV5z<!j3PB4c-s~AE%aMi
zuF)B=Z;|Witg^kd5(P6Y!!r#czSS0#7(723^6~RY<(%XM4=q^ZEhKY}jj7k{cxS{G
zf8Abk7*9IPc7jVHYUUiXYj*bvi)2e#>t#W(Y;{~y2WVP}g&%n(7r;l-FxWj)w8P_G
z2U^~;euaI~0N+f(qcRE4Q}9(jN<#5<ew5fWCsh$@zlD7`F^&?JgY@fnhgxSNcW04o
z#lR$QG=lZNLN+3?M+Pu(9y6~rWaXr%j%%cBS7+UmlYtT$rDbr)Cx^#vlLdyTcdw-V
zv^{M23}bO_@2#6Qlbp-PH+p$kP%z9{mD6pj-3cK~%?RQJxZea6X@wQ>-)44muHUYg
zM~(wIN_|t{)5LH`LhbNCXH!d_&%vnFZeWN#)=leDt(LdVnAc~oX=$Dun`huWmB2pF
zMjf3&FF`yt7ywx2bP3ajnGDTXE_;uvk*{1>oF`K`8SmOSS=a3d5JKxxYlMGyWz-pr
zZT)-m-tTv-@3FjJEj=n6O-t10{yzDO-0Yn-%8*1>O{xMJU#jdLKUn$~mT#=yGT?UD
z9&dScJ^ZWt*y`?_NkP&AesID!=sP!XMzfE<Bc2t5pbH!b+zO~b^C`x?9}ji70WTK9
zlI2g&H9|{Oo)hPJ?mFpG>nC76e@B@GYJkl}ReD?wD!;%_sX@g=1Sz-y#!%MT{~&Vi
z_LF++#j*^FHcF&(cXP*Q@hx*yuq>a`x}^v|<kIDM&)ZlQU=rrf?>-tQLyj&rOL#Y^
zNIK_gF1(Z%WpLP-CF4PARv0A2gpF#jx{gim+7AteF^^w=9~8OpfF^T<o@)-b@*Dqf
z^6pD$Qh(P74K0Y|vw-_un3C#J*H_s!<z#l*Vnr^D>C<bC9+s2wt+S+?s0~6GO<&n9
zQ>1XPW$oB8fLVE1g?(EM<-e3FcTX$k_+fc21Do+zmj!XGWg`!*k%JnUT`rc3zgw|T
z1;c9JI}LRaLC)TSh%ZT&OkfHFo&;H)r@0DD46KI0JNVYv+`&H<vS}FHo@b+hKYf4<
zxSJ1B4d@;u{^+ryhC|@e(eRbGddU5kW3^bN3sx*A++4C+&TGA5Xy1%?bkCW^@7H@>
zatZq5_O_?_fZvN$bbvt?eC1~4yytnT3iCU8rXcg<w5@d~mGQoRYeDN)*Y{!Hg&boV
z_Yf|DEmciw0nC5QKMKbbhRjS|iC~@C2=)&IEWBa~W3A^wFDp2U+|8aKevME!W}E-9
z-{qXiCR^=T)Ahm96L;&@nMPaIA8z{~WJ-1k(1elQ!-7`YB|7qiO?5(E!%QB|A(wYc
z#h6g`X)81!{XIrsCja@BWfzsjr~Gpg^JG9=K&p#vuIG&1%Q`2SdOg-wlc}@u?Mo6s
zcd5%a;Jm=S3}0+_;;AWQoD$tAi|0)kqEBa85>&ol41Ik&)%0N!rkQn@f~&JcC489D
z%0pebaLVtzTDSfu3<l876<BxLsF=ckPPs@<sNgk*?>(<a@Oc>fBSYk^L=Vu+>YLJY
z->ARO+d-D+5oOW6cY~m?EvKv9^6kCerm%KyP-!hQ^ngB8-8CaDU_lRKtM8*?&|EG(
zRY(L};zQY?l3N2xdz4f6Uw*y3>pijTyl3y*R%z}o@9vbHJP3<DhVQQO<A*Xv=|1Na
zZuc&9sjJOBJ^#)VP<5VOuRlZlU`i=MjrR1nl6W;{W{uA>K2zsS(VcwXyp30RqIJCm
zJXm|U;+)M`$9>Tr28PAA0St|k#R@lwsisi+JQ&5&I<+&fx1n&77>#cyBITl}$R~gm
zJwV^tL7<SS$YNWwHL?FdjEV2&pSSFt_3j|qeDZn)C`M3LP`=Xu{P0y8nxR@Sx6uIt
zBr(AQF(^r(T}UGjN58=;nB;oCthW;>3kD?gcOSCOcA+rH?vMA(EIS`^w?^*V;fuAB
zj}E?`LiaEv^%$nRn8?#)Gxa1}a`!*nUv;337W35j9}zCWr^LLKv2iZiI}7!T`6CSd
z8SPjY!q5Gv6L`Un9Hk4U8X`c*P%zp%w-Or3$mt~*e*0WKuHD~0vQ{A6@Dbgd@q;F>
zzyRT?Kd-yYq_^)})cCMqein)ogL^8M7&pH|gvjQ{RjxMdx~7Muumkn2m5xdhPYWdt
z0!wday-KD;h{5cUhM6b6IlC<KvO^L$CL=!>-67fSwh5I9JR?@`F@I#tDgU6Wdp=0$
zDQ7&-=i2|S6l{LEGyYS<vq{ek9ly-M+6DZF{|T1|WJtxm>ge5)!%)DCYo6L!{$Gxm
zxntIzf_%Fnz`q+H>5=S~)T=hlfZ5*(&DU+J>4^vnUolKyupBiptIt=qX^xHy!L_%|
zW1+UtxBGHo{RK8w*32ONn^e6t8iO_AVM;mwoNnudL-6Few8a#_^-uc}%KE&ILEQHx
ziyJMU|BtD!j*2qs-krb!Bo&k{NhO7mZWKg@K}AU^sTt`8si9R;x<Oh=N$H_uXp~Or
z92mOq_<i?x?{A&8hX3A|b>6f0+536+v-fy)h2Zawfpe#>t?djhhpEpb@uqKIatXYm
zc~-#}@YX@t`8y9FP7B~CnKx);1)!%iP9l?7`gQR!9jK`U6;J=T`8{_u@jHHIgdjiC
zJ^$w^ns6vZ4K7*GK&=zv=#>)uH0o}pe2FrL^bS=rpA1#WlK|2;79Z9xp8{5A-XYq^
z^Q<aqRZoW~0W{Eo){Cew(k@R$sQo`J%6u$0ExzrmKhx>=igC#IkOUkrTI#gLGUYLQ
z9C)xjGJnMFv%5GP9z+Z=(E#Yb=HfYgXcDAvP(oBwSR%kGOepD7$p_JiS+y!@%KNuJ
z+7RPPcRN;#2P;<@e^U=ieRsBUZ#aubMktOp4)qPp*Yl<L<e*N0VpHX$t#z>~2JYN_
zb(^TC#$j9uqU5JPe@<tnOBY}|HBvZKC{DY;buuRt6=7_ZZX;PjUm<5j-Z7I?t2&k1
zdU}?7F@voj2A{Pb9EN|ti$mnl^e+{s%OrnnfJjU0a6ewtxaeeJ-d=ppXGC<%t|h(h
zoM@xV{^cV*=s_o!yGUpMM%G-oWh5gXq=@4n8H%D3Jv;A@Y@^y>DBSB6@BGSgx+HT=
z?-_140v-cUTBz60*d_?)eMzzSeEtD$U2!=XpTyn+28;_VTj4V2vrb|Y8xk4mjTQ+q
z?@|Q*;jW(hSU6!<sRoqWBnZdjCP8B3eE2Q8s%;iL;?O{j4OBP>{vodvS^6a%EO7}M
z0BSh|shcOc3Bh``jtUv4xSNvX3)to7pWe|hrfld?G8cq)Jq=8~$GtIqbX@OBF?Z5(
z>&Bg1TBPLXbl5$z@4^#2VOX4yDrK-&fJ|i^U-S7aC6nP_V5W8Mh<jes{mx~bjIL7a
z3sW{ZSP5*P%FRY?Iv4Qg_&0D8Jovq$qvhuPGGRf<mr)|9EK?iY=qY>evoZv=1;#?}
zkyh8JU*qUH8M)Kn$e0M_v(Fk{S(G2fEL;nP=%p4-waynQe1EmyBMit1p~J-+HZDGx
z-xnKwauAme;TDh!Yco?bvY46UO}HFV6Iy3PODq%z=#QBUX7v#S-*&ijm{?o^SQ$~!
z#&tB-cKS^&psJse5a@hJf!d!FetUuX&^%RB-5n|a{M!$Vx&CjlLzO8G;{de%M*S3a
z(|$SN^2qHhJJg8$*LkevZt{9Sifyl}ix4YL+t#+{NUhhdyj?yTNpD>4#kmlEO3}C+
zMJC&uV$Ol>4hv!0D|-MAYO^zMiFE0wQ>&Cn7TD=-4<8%;l6pMhwn>O;Nsw`!&z@LM
zrUgFS9DKdW&T`fbn)6!jWu{dd-AsBwpm7D4FY4bLrzv{*SMV00p&tJ?I?j`-Efew^
zu?RuM=#5RZ(~hHV!wp;?y880CThj<+M*3??RPVL^+x+nxez_}ZbSuLKY&BZe&781Y
z-ElZTSsq;j3bXOaHcFlxZ_lo({E?$x=lbO%DE7*gBkQLW6Pb+qcU6g@AN<^c<&9ss
z1x>{=t>3wRB=R+Vh$8MA`t(Di@&oS_V6G=pk(Y@x!A+nm7Z~nVKb;O<prb+}d5z$^
zBI%wZihlWXKohSK+hB>My5nGSc<N7p))dL5zZULI$}_o!g*2*16Gfr<=@ioI=+~|~
zAXnA|b;yvP7y?pfu=hziS8W<DRVo9X+D53Kt4nKq{(MW<ZxB~|7_Ek}GygpZW9&Jz
zrfTc0k-b2Ub7{&7bV1EcP|MOy+O<c#Hm@!Y(nz_gr(#6eQa?h%BBgQNBbGfT;xCOj
zG$8pVVc<V;COI$IQIvVnZy56xpYW*3Lpv<u19@74iPE$f9quGD^&5N(a*KkhKW5Ez
z*h0`3abjTHOB-eA?T!4KM~)eq@w<+q0&-_Vhj%AvA(f$9xVgSDg+G9@q|)F*DxyMm
zo!itZDsAF@xw%6dcJwMeiviGyb>#LbE17u<*gtY_t@)ei>WI)(v+fGYHCK=_I`9!$
z`ao%8O2HlG^Kb=q@twg6_ajD$Q3XanYq5PDA`0(LK<d>;(a(a=Fz$j<PVdX3dxNRh
z?=5_Hs=y4-up(YfH0c@Fsry&(XY#Sf%1-O5lZcn47tL;F;}KGPgwX@nFdxrmcr7{}
zLFoGM9!fy%cP!y@CT<+g1Ws%PJV5&&D@*0~e}srXgaJScw|@;)%M7MS(bB+h;=KN*
z!?wWt<@y&Ha=yklVGw!A>9^`3^Xtd9TgBA^dCy&BJW2(^z-Z3o${Oc&u?STqaqn)_
zj@ZuqI-uavoEbd5^De5_Za>_63MaHC!)@fvB1qNn#ga6K^FDbZcqXXd3&2<Xr&GrV
z1yp~ufb;^t>o|dX7igk1+yN0|)8bv6{0Pp-y>^0U^kxwbqwa{6+Y=C2F}bRej*Dp)
z1*sYfOC@p2$)9|ODO%D)>z^I*oEqkLBJK}QNcSyrHf0hsZIUs0=Z9_D^G#_;N>fLI
z`r?jw)sI4%sg!;ZkRe(|MSPr;hi_*y2qJ$Bvqr)KSZZ^bQi>4l=bs!Oi4m$Htfr_g
zV|V1~6AVQYp}m^SBfWLc&&6`2=6K|0zQZe}Y+f4_I$et18TUE7=aM4Lu4%pb<R`Rt
zHSAk#_0)yG&=s9*V=`CBTWQ5aJ<12VU+L1&VE7Xr5l(E!tNq&tc#@{pnLZpi>|!};
zOue^*b@y~TGfzlRCMC79M-IMO%in)~u_EaEY^EO3UBgeNO}kMycU)a_&qTg#6F@g_
zAVCyx(unoGWxY%qwKwEY@r_siPQfeY)|0(93PCK?4B*QrnG96$p&LjVM8sgt`~}a(
zcEiCUi>T^6Z=~JS_ZD^i(R?C<fKS!@VY23BxO!|(+s|Tf4w-F)Uiqj@&}o_bm2=(!
zpWxL%u3*HoW(5Y{gn0=4)s(UEOP7S^6NtB?yjN=^L``SFbLAHGgDM4CrCuo}No`SB
ze}3|+rlQo-JOH#;-l}@N_u1@t(|Ofv*_BQ=%<#iet@vOD-gHT}1F~z=SEVRQvd4RR
z^+nvckq%ob0Fe2YSE>3%nsJXT?G)R>3)$xD{spVTR$A6HZw;TNC(UWD^n9<t#ZMLr
zko)>FNYhHyZO5L?I_BJ4URG}BdON6QYu^pKp*)`V)hbS31T`f*i1NMdapUo46i(~+
znC&(x{E4^HM3t40UIXeoPYPhkfp58D7>yOu(TWi<BX=N7W<a{^`5rgjw*uHIla;rS
z=KbK{Cms(q8iZFt9;qK&?9QB8qm6J+1*6yn9fsqbNkVpgyknns-l%Fzra}#R;|{|J
zdCjx=YZRl*-zw8uBurypYkgJc1DN}8$svXz4=2k9P9G+eTh=ZoK{0|Gt{DssLJIBL
zs|?Vgznpt-ZCBKix2ge`7?Lzx!Mu5`Xsnb^3hE5NoR9}~4-*t{Imi=h{BHcRf!%Fy
zK<aAwZRy9ibV`4kUFBVMhqHbeaF&I!2C`DV#!6wKl=o)sc<2K-nXu07KAe_7I|e;J
zi5ez=MtF2HsGh><y9xSN69Y+$%_>i`&t;zmxAuMKow6nJH1W1p-biIw3U>)_P{FUH
zrh1{7GUsz>^;)Oj+eMV?_cR9x$5r3cICj9MpJE2a6<=V{ysk(5J8(SRa<oTtzQ-GI
zo~SN$sY!ln6XlfjPXE4k^|?1WJn*j%#boJr;BK>68Bjc_`XbrBXIfJ3Fgv7L{j7%v
zn-Gj7mRo7DbK%;q+m4-Iuszeg0+d=yA!o}YVl~eE@E>GQ{*RE#>e{fm794>9#_P|o
zj?K0n+`qq|IL+tHdT&95GT9xW)Jjp=cYsGqDl^H%D?SpF(!H!8pIu2h9CMy}BItXi
zENAM!XbXDDW%G5{Iqez(_{KTyM{z{zG)EF5hX*b;9^a{Nh@~lBM)e3&DyyZ^S4gH6
zh4R(A^{(MTW}8>Z5>4NYOyYjJw&pm((vo?|oQM+}so?lA(k;?*@cHM4)RA<Tnw@->
zeQDe-)Q+*>O<kYfJZV|yubv#T_}nLc9?kc$_^C#YQEtgK@aJ!9tx~Piq`RMAt1}@>
zdyDa){E0qu4~5%h8*lTL8!tx_(GUIH|LFw)lv(hT3{d$)mvH$)lt|?M64_0Wse|;A
zXGs=O#s*?dt6PhXPwmY!i;j=!5lWeUewwIP0wnxl!4h!{kZ2KjUff{Yu5N^)W|;Q4
zAOm#5#N@H~0hR31ahpYAldq>OV<H)Oj(oRItQ*oY!z5zC4OA%!8;RPW90)8^7#p#f
z!meGAHvhn5W^}mnz)82GOo_0$?{i@Fco(M|KvD%)s#iC?SDz~3IaxBC=_TQ15C#~>
zm9#{NB9fZEG^8>gl&*XtZ)K7=rK_who2-%ChVOCNMzaKv1ysgok2VX)`FyroctJ&?
zhxkHf0lr*emzh#9DH81_5k!Wd#`>f-7+n)+GK<w8sf@7goYzK><cP2U%GAA32CQGR
z2q>0$XTPTcQ-XQ>pN&|XZj1!J;munpD9YJNb@I_ar<&UT?am>SiK?DEFoT*&s8ga0
z9ISji1by-rC6<1_`L5=zDenD}g^=$8Nt|Car5f?IH+sV|`7$SgN_9}gp|^PMm%7-b
z^GH+fAV^h$?KQ<|%j!GN*UjsHnw=VI{NF#Y0KGc^ry;a<UqP3CRv)x;%l^#KXzT0L
zO&72k-=wOGW%FQ{*#Ir!+SgK-`vS$bOec!$cB~RL-Fmu;1TPP#>x&ADjJ({)26Rip
zX+m<F?w^`}8>4<G(r=fyIQ~XLPj>4LVQ^T&6cd{|`+MW6^Q^W5!8F;<dwE24zt*S;
z?ik<dB$9J8Oq6I}!1!RIpP&?Us3a?9o78;13aA(M8$C??kQHrc60#!q#}jnNj`Vrk
z-*J!rF*}b(Bn--WBYi2Nv16Z9$DcAi%?lJ_9@YCpE?!2;b6vMtsZ?kK{|We@S)U4i
zJC@O-LvGB4m|{_9pCejg@&WiwJy<Zm+y3+uOFD>(>lrGdnj{tcX{56)2&hvPv>|Tu
z%tzw+@ickzxewxXGnzy`2x2_<Ouu99ZPGcpV7W{t)w*M+a2W;SaoY3D=}7%_-kAcX
zMX}7#V`uq4W!G`ogAy2uRpNcny_Zl02MsiL<h$>!?8({<8r)=F5dS!J=?mtZtu!@{
zVK8ZO6rdNn&>Bi|NF0*@y^99Lr(XzoOq`tHC7z3)KfZ<__gGc~59Wdl1r8328W7s9
zhr)&BY<C7f$dY8sn0cIg^cYRv2)JkN6ktu4Lfb~1J?#FzU7OWl=Vm)iTiFaj4vH<y
zk8P37&%9(vGx@?H5P&?d^jwl(LhJST-CNv2wNuYQ#6c<H_gd8K$3QK1t>fliarc`K
z2^A6CIBHU`@&|1#Zjm9S1r5=O;uqJtoo`i5xg1sq4>{Jskkerp-KnEJ23j%Gn$t!F
z=3n3_J~s%~)!s#e7u;S<P>kAxoO;2uIjdcP#Law`QYHY(yrd37X;VoRUYKbZi#t~n
zF%f>Wh6q5PWoS3)WSL7LMukdsqc1SwlmfldPSw0Z@@we*$>?h?69ZI)PYz$@hCtUB
z&hEatnEOJH4EFb1a#|nW?FHH|seMQinJe%d$;8%KYz_q|$C$ZxZie%zHvJ_;m!=PW
zxtXdE9)~ynt@&u|zjR1C&r6G^XN*S(l<RtP;VZ=3`!&9wx%9l`HD@QEcaxHo4#i)-
zo^zf8-!xGvpO1iTbBVXP#IYe=HFfYx1)CmKqs@2HmqVqqLE3{J)~S_FE1#|&v-YQQ
zBIAul_)|~yBU5JFyR4r#Cq(pQ#F!0*bs<!_$!r2MKDJp6_7}^NQ<tU2)tr|jABvGf
z$%`Hl29rTXe*2OQi7r!CqJl8;=Jq1L>I2y_6O`TYRH9v_v+;?=P<a@c5Q&-&RjXC&
zH(&2)g<k)VU5IA`0V`=8da2+e%rMl_Sj&jFEn&fetEzLiH>Z&_TU$4F*0CzPI`EDb
zBTYKO6II%;eu+|dTljn>=mUBRug}bdemzJTyXWg?jwYA@2v~C+!sjaMP<Qzc-`Grf
z0@^nibVGWcI(riS?!nmkczjFHWOkl@zGWLNKiYp^%eN1wHoplzKLZ=1czjbjZ2VOY
z-k`-soiym9S6`h-!h;tH?SVP&5CX~YABisvDt>jxc>iU@w*d_ifa(Lk8;lsc+?o*4
zjjEO$rbrZ-$i(wysb~%-L0*C+ZcT#nFLWgOZeBymDCY%jrsq^TUHV5R{-dSyq}eRd
zHd7(h*)j-*Ij6t1mHZw*s8(Lmz@L{XvNj1P4Y?1RJ!fDDRRw4gd%ZsSD@1lTq`yfm
zr3k6zvw<8XG5rJH;rhh&!rkw_cMuMoR(Xnpov|?+dUR==!5-y*;B}Fynip9@7x}i>
zSxnXpg@ePvql<tRb=2Km3EDsVr(o?F&V+Z2$;r*sHWp0r#+=<`;(=QOG}w1O6;-g8
zDg|n4hNBLn#M+~>Y0&YfwC0Q*7|ENYy{w1?FI6-zle}5oR7OrIT*TK>s(bC)TfLOp
z;>zL-)jjo)gse1%4e;KASQml?P|JVV`ZX_u7PcofraP^g<SlJ@ggPE1`2>z_zg342
zmB@Tl<&fU7A0dZQ(Bvtu6C~1>a{jai0;ClTyW!p{(;MY;0o^te=4WcbWEtYRZt`Ko
zAg4PEDe<&uY86?S9f}REa|n8-#g@pmQHY42;|a-wQD{hOtd^H7N7`O4ewd2_!uR&b
z0j3(E0%+>zPUXQ%Z`47-ej-pnPAd?_MIgGj`jj{g^}sMn3SHB4_3-C8tH#2?kP-#I
zhev!qJ3;eB8rF5%rrF@zNh^sUk4sn+z9O#-;T0)&efnT9CxaZD^UWLh8^(#KQZI>>
zz@!}&%p!d^0O!_5sPgdW-gb`=jh0455s_?br@0<Yx;PEl-c3-Mx*}kCDMG3QfK<T&
zueh}3tM^8tSdx$Kc&kiDHGh5}`RDWJ+>@B97)ASwniq_;i6&1wpyT30;$_E<=mlj;
z260kHNDlR(s>^LmxR{}BN|Fy<r*Kw_nF&G!a2q{o{NDJ!>yH-E(L49$bt>04|NbF-
zE-hkLiRl8=iHduPbTbsiddDi&07(Y-Eolc;I@E8L{nj>cqD#kEa5}|yLvCDhzmND}
z+oq|`ueV1^RC=US=sP~gRj#d>UC$T@-GL#O6#}RQEMcOoTxD$htc+9qAP|yACvWX9
zat3%evIKbL&~Oq_J;L!a<sgD-pXWMTiP5<Cr}MeWh}K<}n=Xx%C}zDJ6%yV#qZ`T7
z(^#QYHvp+I*_#(E{3srNDgKAdJk8?nSw-&M0yLR_g&T207i(#*56S1Ulw`sl<*(0u
z10s}C>OYg}i6dWx7D+4yQr$-18u2RV=<<!7l^8|ajEp5Hjr8EaSI|NDcMyHYH}y_2
zVV);z?j;$(NPHO+&t->*_Zyw+=^m#IySfdFXPQP@Ot$5^XTAANUyhrUNWz8pZhy)O
zVro1eHY`Fv_ULv^T2bJw4KmzO)RBL37J9;k>|#2}xV8SnatGYM`I50=HD@L5&n=W!
zMdsP&spG@ss!)+Z>FoOV!}n%)-I%=2G?+I#U%AM7<=GUnuf)Vl)$Nn%#8cd?YOxTm
zwvWT(H*zHXCf}N#ZkoEP)jAlPOUS<jvk~Nkj%r&@89CVxc;22*%3&`dQHR_LfPK&i
zj-!yLapi+5OC%0*G@BqxidgF6=!O*Q6@q6NR!Mc_X^hch@%nV>6l$L4mqQU;<x{K?
zYc5xRq^p)m2!M>JJOvjQ$x2{Vs`;jm4`M05cxcn1(jSv{63|0T6*vX7no{@2oHIqW
z6(?$~pZllF-E0i*KTheG)v1&kjFG?s+nZEd%EVDMqF-I`3dR==C0p_{$%23s$<gD9
z#A7B_E(5O@ds7snz9pmieyIbr0_5_9VZaaTBXVc?2l~^B+#h9lr>hl~B229Kq%HqO
zSVqX0E^Vv*n&S3d1U_{cD0MyMgyk)zNyi#o$Qwy|Q>0y$rEgUWi>k_GgV&D@2)rcs
z+o>=)oEromkCIH_X$4O3v~hv6KytJglczPHhFox)CwX7*qVO!Ie@m^hC-oy}Z}CYU
zpX?_tBlDIFpJ_F{u@kALzm1=1e7;VeYw!mI_K;*;mKfaB`Xn?n=)mFlpaZQp01P1C
zA^E22P6Y|vPIe~fFE>|HDl^iCy!Mv@uJM@IpaHw2Fo-NYowJ6De80uykY$-7$qsYK
zanCy1&Pz-IC`(p{?;+Q+clxq#L0ppI8={Uh=ZO&gZ;WIA-8!<dsqSO|#+{h&Z?2!!
z8-28t^fD@->7a>uxk20V$$G(3cTAz*i>3sMkEE&D>pf+=trj1ve6OTNm8iHW4j*9(
zq#cEWl~*X6D2ghsbEF=nB}bf}IG-AZoJef}W!7Jpm<UYQ+qY)&`!zrl!9s;S8XtV|
zWGrvW(Pnj$$DfttBDlyPsUUXQO`ZK?;JpE?i4AL;XQZuTOkVuV$1bV4S8&7~3)=9@
zTz+5ek+x>+hvb!@xulU)=%Gj2QK%16fHeH_0AG;yK+U_T!|ayMeLE#*-IGEFK8l>N
z;O<4O)lNT`Ft9uq;rg)fs4(S-)d-ys02~l5#b!Ve)`kF*qh7PdaZ#=l923<(*&yXY
z$kziAk21qV0U6mr*&ZPIap>R*#pTEza92|u{`*ckgV%UY3TY7s)21=)^OE^Nv!M*W
zK?0Yg<2NVP)0#nr^BB_~UYocN2fg{SmKgQUfL9*BkA!sPQj4so#z!-*53`0%{f!^w
z+i{}$8@3uo?8-09JjV8ak2_-oiexEtgxM$Y<@UFCnobkxcTE<m2kgq{D-;fRWX<XR
z#9T+N^*K+diSV1G3(sD1^R}Ji$TK$8W~~Y*2M!FH8_t@r8G}}?IsNaZ8yzwojB~{S
zLSRLRK1Q8jJJ}VY1STzuxZjEpUTYMO&jb=CziRdV;U1G)D~u&lLNiamZ2Fx?UX3l+
ze(wE2`eU@mPKWkV$rI<Lli0*^4SxbST&lz)1sjg?a>np)a*xx>RMnf)Kj5Ti4=tq_
zb&*-SIb=`~bK3fT9k*kNpS6{i!jGptN<Vx&e|(-42<YA3pOh1kLdbidXJg&Cs9`tV
zea;UFXGPvMVb(}vuCF{r+SZ+NWd4PB_yEtGk#*>z<oG};V-}cHi8R!-p!GhVIyfH$
zW{wifttwKvQ(>$_tV}nkD0P#ZJ_gm_V~<&MY57KFY*E<2mSXtZB^QpIPvQo354v}X
z^!Bh#vH7fUrq1tH<>~583Y<4@d9@Z4`dBwJ5YqpzmA4A0AfXaLO}dyCIjgI$;3xsq
z#!q9cMbhqZ0X`TwRCcf1%AW;4$ur#VB8bS6*C$8^nz~^xjFXJ2iJNQhvF`seBKR_B
zP<px<ObyNG^!x9siUhO$>A_a%#?%}?E`9|~Va!y8*HnX7ax{G%fG1me^T747AXQb|
zNA>yru4OXBKwW<i<xrnS;%`1~d1cG%0ndzM+^f69X03FY(veEr5283luZ3v{4)8>v
zrKB)5Jh5Tzf<t*i;ny#!^L_1rlk1ApcbyE<>Q{23pSK@0uPj>Cjfh>%uxGzU<$Pz6
zTZ;AkOxgV4YS|#37`!P=5`(m$r-G74({f0(WJFspYA{u-DrJZc&ZaJJvHGm87#fZ<
zUv?gBd6e#b8nD%UX|(?s94p)|wX(GQ>cGDI(CR#fChNo?t+T*Bz^ki=NDtCLD^0N;
zIsX<Y+`n>2{-LWP>k#XmY=M*Rz6rj>NasAs1cxteI|<^a5$>n{;w)5&jxxspo@A&+
z?`zOmC3tW~o)5N;HDK2sZ#Fugd&HG3b>LEXp>>uQ`~;-E??8t);oR>M$kaE=8PB#2
zH`#Wtd~`y3=96p<R=w6_8!ipo@7*fFq`oO$7n{>y&(3j?{=mhS5*>L?BZdj#YCcH*
zWE9u@)b@s+Pzy|0&QubNpD-M~^=N17(QIL(B74AZu8NcshL-~*^69XOu%_6IHbmN5
zF7H=Y$fnAVAkQnQwzbBHghiY{-)$_}<z;6`OaskeuUy7~Vg6U2m|2n8{cSG)G3Q*%
z^EgjIMeO5j(p|d8=^xHt%(2h?A%+d<cvwi%$+Ve8d0}fcrWZUYMV2fZ?l$?*-WcSI
zExYV*CghWk`)cEgiBkBk9!)&;EEpY_ccJ(8fd%eoKRP5EDVdAQTmst4W8MAfq_InL
zye?Y@JXGIDnTH;`$5c{Wb}ALSV>p86tbB;0Hq00Hb8tUrw7b<9n;Jho!CrX8F1)?9
zd|~22ruy+gVPAGa6%TLSe&CjU(%Khbf}Hsj##{NO*IA{5E`A(kDF$<*r4XK#Oe0Nj
zdsw_D`}y__LGKakRKl8APR`jsgT<Sy93vnCIcvkJG3~J+u2AmT+acj}S(3Zuc&3M$
zOqM!eT!f}AecF7!<A%?t|1EU#k~~?U$oL_~Qy{?ecpAMR`{LA6a%T=7apGgn5+}5(
znrzs?aHLNq;~mLuD5*IIOHX@j%B6IEYSC4rn%E$>-Hw?#G#w#rRQ)eW|Ib6GI{cc1
z2G<&>&f#2mRYe3DY@^vVF6-6kf1WCI!3c;(CL-f%LH>S=`}4~tpryO4ZOd(+E~HiR
z#kZLe15APJt)kffF<pivFtLy3!kSaGd6Ye*COdXwH%NffsOrD(Lx02oh417wu4jeX
zmfa~A6g=>#>q}HAt7F}Veo41ozF&fO#Q&CYzhfq(i@-;=-qZE#8ip|7p3T7+Ulo7N
zf8X<@%P)M@_DxxlDe%GqQPuEHfF)l=UxG~OrN3zD#xn!WZ$#%G?c7(TtO4sGm|t}H
zv;Xy5V>aX*;sdXjo#xK+uN;GsC;xpMnLii^roxN~KOQ#T5u@_qyJ22{y)X7F3z+?4
z4ZjN*l-7jNSv%_94d{wa;vRbc-!J(8f31fYb$DBZk4~dG$6aWQF6(Uzi>sN9;Hkt2
z=0LofU{qXr`KI;0XV>WuOf@jEG_sdD@9SLVG&+m~&m)Upde*_yginz3KQjcn^nU%%
zR{r~2<p-uR_Aq}tT46v$zk<K(@}^y<)9Nl}v3G#Ugn+_oLE@QvB@`cl%g*2+Df{aE
zPN#aO!K=3?)AQF***mpuIrJ7D%Rww2=0A4k;s%wcq?gO5o9w8dVJfHV(>rVFp0;>0
zbGBsPg*GPH=>MLH|C|dvfJ0o?Q2ny&-TN4I(XCz2`4B?dl=)da1w#~7k3<QlXisF7
zbrt&U3-uB*7?jl8s@B*q2F<!o@6bwd2<`~fF8fEj`o3S7{ON%{daG^l#{e&vSef2}
z6E2qEB}yhq)-QeJe~Q!&N+0yuW_TYzls{{y(%@U8hv%9=V$*!x(Lh3HtnbYQH{bx$
zf!3P%-}~Ycjo+8rv6(q{&Lk@N(>ie+f)BmrI(von?b^jhIGU(&tIj7);9k)=cmM6L
zIUqFrM0~5rseUQ4xuO27-)`2xebKHB%XP<6VgjCdxh8k@U7wmYsoMGa@(fr`<LZ0b
z#`5Catzn6Y<ddP4JG8vJaOW1YP1D)xEWQkHSZ4Kc<c8t-NP=sA`o|A@N2ggP*UdK<
z&EGuc5A($M0n@Jprfq5rPI9<qzSp-g?G81rKNH-<=cqNJ#B{w?tCRn+u77rmw_H&N
zV~Ne2^2V>T=!W;YiE!)Jvd@0~(bDgv8`5^+PCwld>e8YA4YWyd31P%7lsiy-VpwU2
znLD1go1Wdan09TxT!{uOpm1LX_8;KOuCR5tNbWlmGP@hQ73$AE`fF`8uz8^gSU0-H
zCCm=1u*_av&EI&RjVuNeB_d~me;ZHc>OJ>EjTmDhNHA9!H)k33-Y2s)h~*0xKaHk>
zrSt2P=J`fE*S53k5b5bm$l_%W#9%*;*V7vt{(M-S|G&RWRTLQ0;y6#>PVloS0z|7`
zbx0m~yW)ciEpXtV4likPm>H-dQD4b>hLQGfxYt04c6DyCep7$?H<V<-^G~7STk?H5
zY{Nla#h_$i3Ke!2{}$Jirjte~`jPRb<EmM?%QiV`bZQc*b(WaGArG%p073ZfS-M=p
znhxG0TGYt03`=h_>Fqn)*L96VYiHDKc6x4H?BF;{Nx5y1nV~VhBU;kRmsD%fY62VS
zr|sPFP@}6&?Sv?lQ1Q>h*zsi!+aQ*?*$uecqgDPJ{5~19vUn_ioi*5XOxVo~Am4;b
zZsg#|-0}pxnZsDKJ^mYh{f{Sr^#XPBn}mg$osY1GDciEZc)!#hMs$b8pZuS*KpuH3
zonSPxebv#Jeq?}DJ{KRi;~QBp{VKtydeIWjZ*QB*5z!}e7q*;fVPa*v>8T6AOe1>d
zcg%Xj81S--`O-q?L3N@~D*zX}#wqBbYRxlK{ZDpKXBsI}jd-<kYoZZ<umu*#dAz2l
z=f-kXAr%D2{moZ9b|ktZ@81JBK;P0E^MlOC{EYf&#gFSn>(5%p?(18>LciDITj&;W
zPqC@qaGhugZqKCxB>2`DxK8E*hVg1-jo&S2Yd37@%lX>{H+Ty(LN!8jf|#NIgmyg~
zUm#5U>x?Ua-BAs>Mi|eoYfZgNeyZaOkEVk(EF=9570IA-$JKyaljc-Qi0t7v_zeDp
z-E08X)?~0A&q8nFYZ`K=UB(R<beKEPtMmWMFobN#(J*_RNB6D5Hr<M)4^wXsd>2jx
zU|jsKp5Mjv8~mexNdO?>nyC+k3;?Eu&7z?`0ip_s{M|(GSTx#aidS~Db0Ad1?&dKx
zE5UXCd`$2`v7D>aPUX(+mOM@ImD)=jZ`<x^R_0>)?x3%%9QtoOFqV*&fqfW4iLD%k
zuQ<)4h0yhQ3<$!+;DR^rn`tJu8Hd?dDok%-5Xx_iDB&TGi|P3$(=VBQYpG7~;rQK#
zgMpPTU366p3*J7PckwC#RbcO+$AHrpuKT{sxTug=@xQ|*k790HOkc$2OXprJvE1m$
ziwK2}`<`KpzVu`JZCxuAdHc6l5{wMjb7fYU4>JjArvB+BoG+f8yOGx8OJcVzbD3e*
ziLZs8)b`uprQuhlK1YS*nYVOSWONza@vh78uNVIR63CQ7cGOQT_7D1A9|-rLyC}RC
zz$;biF)&@}Y?GU-6YTZQ{B<#+>CZE#fB577U%VK<_8(=0E5`3T+C_ISaS{g`a{0dA
z830TY;!4=JLO1u1*I_oxtjxvapg{h!iRGj5=Ibg{{nP!{;q<13TY@|$e*NQ(yDqnk
zxxOZ?7F?uCIDt_&{3skZ*j|ncy|OYZ=mYHLk9?fw|8S5i#hQ_I@5e;gaV{X$mzc8N
ze5m}=+IWNGQ<u)}W?`uSD(1$<&T~2oc#S8Lh93`>ol%rs9F_XcUX99KX`bNKR^^EB
zT<|a1e>#`retaEwjNH|R2A26^qRW*#!^=^HssVr3-H-Z@dz)PZmTO$KP}HsAr^G%h
z3^$yzK>podlRc@;3cA(gXDixNk8ScysvIIvJHac8tWSPMdKaNy(r<UkUGLBG+xmpw
z-SwmJGXB|Y!AnXh_^F44UxFSnjBNH>W4Yc7nZ+0$mlGGCItozqJ%sTfGO+k!*n5B*
zqnjh6js{T1(7P0e98qsWnENt#dGrzfSk?#_&n$lt`Rth0$ri#m!o-m5)qu>SeX=(F
z|Kh5DPIkkQ^)Z*%lK-F66;7t+El&^Hn*{8K=5se7M)TH-eijhl7Fg`&y!1v-^uur_
zZVh0*fbG%naU32Pi5RIHXa^dX%)0p+BTC$O_Wkx+i0=pZ52T36sOPBr!4!AB)-DKn
zE=wIU`NGX_ai}GH2J$}^@uQOUQFQyA68XpnF=t)T|Kf7IVf6`fs0TQcG*<TLy9WO%
z3D$G|;x=W@H=n%#mUoYqk_Npjh&3=TtS*O!aEAAd&q<6<6@l%dWS|<+2H-cYdobZ&
zgwhMZZ#D)EATmKRk*`vLTF0SAm+yf^)&)q*VPmJP@J|Sr9k0T)`Vi}bDA4+-nPOcC
z^G5`*ua6ZGI}CZ50{HG5!y?*Qr3&%wT76tQ!RPL>k(==1N1}59y8sqnBylZd1>8ff
z_<bn6%k@Tpd=TqW>Uq!SBcz-`r}Ojb|IT5x;=$DJ$lEDMj$o!Bm$Uj0(lHJPviuxs
z^$4fw5V^}mP#BT`$TJ1cXBPrz-n$j+C%lm4{YajSPlJV&tZAlZDME}w(@!eM6-WNf
zufcOd*6!7Mc==P431$k>K65tZ+0w@2^Ia7=$;OLaH!))V{Z@cuesK7naYd#$fIjLR
zAFkwkuJ9U7?)<!9p8Y2)as+iE^V75{H|9?}#lC!psEcTV^38eVR+|^e?A8-GbHL<&
z=r(exqKkhzL)yqQn&9}ee`PP|_(@RAZ4`cx6nT>*e=9MgPsL}8JO!)1VK|mf{yKo=
z(zvTrjH#HP?0Sj$<d>tEpF;NS{J6Yl@Gk1W9wOs3`MG*K?=AgjR0EX(qusH*RXZc^
zJqN6p?10WdFI(EOd-r{RU*WHSo7bIKpObp?@~Dkk&y0<s-%e91|IdY3MSwfGZr^t^
z6{l+|5nrO7dg#Oj7T<c|L7!I91r%?~m8mcH{@skZkDt=uw|fXN33;XYrt)sek8D7n
zwf_9sfSarJdn6rF6Sx}W!1YsI-`d8HE%`M!3m{NLVn^P{pxPRVh^--$uja!|OZeC^
zV~%}^GEYJr@t4yLZ8eXRQmBOBZgwfYhf(n7?s%Z=8X=h|hwc4wF5W$W(y-h0*&59O
zA>dD^xGP2w?{(|Nn)btI>*ud_9p6L9>Ks9BsE1MSz~;oGQ{@tPnN><RA!W|utv5gu
zJ(JxoldiruOL$+Q;Snz?Wr2!wjR!9ew_1OL^v(fK`;3KU<lh?Za;G^v{^S<>W&+yB
zJDJ)EOYmmp^+wJ`Ah-0loMPLp7?D7>s7f*<U-;*aTQu)pW|4z2t-^0jLW@$ZbCY~0
zW)SgRi((fp4GXqD2Pp}jU`!C%j?ofYvL7fcZ{&(K(hL{8Ef99<q0SxQo`iM&t15z|
z!bc@ba2E~PKIl~(aVbnobwz@ToBZHKZ&D=|W=PIE@4RKo1ucT<IMc2<roPi(*Gnp|
z6t5Tr?yw1dAKzj3Rr#cl*r1Y1n&NPALfr3|g}rOqE+-#xe6VBZ>q)H8cANHR&#h<!
z7%9M<Vf>4-W3Y%8w1QW;VBjX9`Q6;rMYFF&WzRUxLiN>gikk}Ke&vHbP}j3xthvc-
zu}Pp(caK?@@es;M4#4((6Y{;9AxDbs=&irRghCh3Ar~LW*H8Lj{$!8kla1dd;X%#*
zUa8~yz}tjG$s3^Pk-}MYm|14+Ek<?WR1UTbnd6CUzzfzirqUDmit#RpCqL~_y9pQf
z`Grcwdl64#!Xh}n0MBi!xaQGeqKin45YhyM3$v8YMtn>9+Kp8+I)8mqRq9<FOVK|W
z6@5(IWF7yQUVJUK3M*U`8K3w(NqleAV&roOO`klZnJ|V%I_AWA$~f;2zJe?qY(+tM
zXmpj{H;k<iJmA*vX2X4zUe~A&Vx!^VNR0iwl{8b;qMORlok}Dkc%0OYd69NcC_-Aa
z*7E#Wi>B0>&@HO_>SmTBx*-fl`Z^BzBdxtEbi=z(3;t}B!?axYTTh{B!rv*35AZjf
zx9*h-BTvxhdzfdTC7&uGD(zVY21MBM*E4HdFieOAjby%(Ra(<!xIx6@Mtnpyd4*}d
zR6}Y{#sAc->wiLCL{1Jvt!!|?UzXXZqph>)F5ZMQzw{YRnfuL8%KtqaDftJ+V8=lP
z(g?5=tQW^k<$7-EXXuVRoMpYXsh-T!j1FZ^UgIs%p~hS%gczHN)r<cnmxcXpj0n+6
zBW;BKytF|tq5fz${Jl5pKfy>iQQpC6mcSo0K!}pY20}01=^atejP#y(tZ~cj;w8t=
z9&fp?E3xRwg2`C3L-JA}@tH0L4juP6z4F#fkU2_-(_U7#_+#`Oae~PoKSv?KZ)Yya
z#5Tu<o;z;`q9B=R$0ij<{@zIYB#4y7(I+keZlV>o>pLU8m!DLmvnqq|oiOSz@ade<
zz<2nRh_(0Nq2-kFCUojQ7b!ym_*~Hbxlb~BZA9GHduG+rID!wfiW0>2deTT(H)Af(
z4nkW2-P9qSF??o<%Bz6>q&z5s#?R^n+1jF72n!u7;`MUQ_FanbzS-2?HlwL^bqOdP
zO%U5!_v<q=#*M6wS@$RQnA?rLR-msY+-kn&bKe49fAMc^N@i&f{!fT;>yX|wcm)%g
zN*HUiZPB@A#tA<ISS+d9E@%m?0J2s(7Fig}%HhcfmS;<58(A5z2i$M*HRC;-AWNO1
z*twn1_hi1G$9Od!gb^PK)9*Q_cK%==Zs0PmR_%K&S8)q4fRpr-n1zZMA?+%MXM{X|
z2@y>H9g-Iai|~vAgn?65NXN%vIlgo3Nzo_s*RD2<rmk>c55Av`15xA(1DII6HL?F_
zVnU}&G-(5%prEPt33LO4d({evEdYH}g3Ivp4VrbK>q(Y#z+R}}%XE{7J%^D_6}j`_
zT@wmV9bif2(lmjPt0aM?ZkRmU%0J_NGnVuby8c3l|MMj=Cx{_2m)OnWpFT)RWpXn1
z6QS%g8~YwVc;d21lucQ$>ECl>y1_(ee9MZ*mI@S8R%>YruVtq?vz}?kkNZUaeaqB*
zWy^?Q)TtNG#74)(AK17G6uwk=u%MXNQQ27Z{PAM>S4r-jW1py7tx4~uMc$W!jbX=M
zl{)VhzSO!zy>pC!Js3rqt=bEEEs}&@!jgE^jn86*ye}eeP9s6v-THt#tO*qMs>dP<
z;631W4<miJ9W|LO{MmQEh**7MM#9X=-jtX`(T9cJ2$sB0iG0mTO)-K8a>8zpLTXOc
zwMGXd#}1zfeth+{hl>YVg%;A@6x!{zB$dE61pRz<U0KdTh;{Pf@ykD>82lY_Ug7vM
zR)f8>$3(SPQ@7XxpZoG>UmLxFDZ~M}zPd7~1v`|S6+a^6LgQd}M`(#fDkM;JiQs}h
zEhM29gvata-nZn}-*Ui@e1eH{E9ZfX4pQhm`7XHs;ERu#7roaj+ZgruAjo3huYoVQ
zwKiGoWH2J4cM(xC3n=jI=XgM%`CTu;axP#yA2Tq)mm(Sf&Z45d`vrFI?wjMKRgvpE
zc?6<Ox}qG=k}qD(_<ZYLa^goo=34qi{euRCO_DkQM*xyUsI-F>L;4Gdl>=y{%v<k#
zx-~@Hh9__GJNN=bL5+P1LlmcZtNO_!Za;`yl2%@@{gCceSXyATpaLZCYItvI21P;@
zs?-#a^0C#<wQ+aqT<ZP<dZNR-fLF<2iyp9XTv)H_6S*aSst`bOcBE__%DB)2*1p|b
zHr_J+X2*$@AxD*jYyz|ZyU6Kj@DID?xWmg<6DD^Y8CAF(=cXmsk?jy?3F1NDO&eK^
z?!*cG&G=;|EplgJ_5%z3nOY=Fxin7EN1&Vr4VhbM8BE)DrkQ^dw=Dwy%<dD6?;v&A
zv;BQUk-aXk=FU7Vq1g|Hay|NGxocXM29-j0z~-E%AQ2}<rq|QudBmEIAM@f+%E~hh
zbt*$T-fg=q)Okk6m4@3gLnNPkW2ug+EN5v>fbD?Y#8RTEEHzc`MZ6uI^!Y+SJ(a0f
z_F2~fK038X0rTF9k0A<wy<|o~0=;W1nFz0VWIK=={=VARBd6k3-`|?Z94%_{Q6T1_
zMoH7hSEydz7b;5H=iozh8XQ|OCb}!3;4caya?xGgAHD+u+ONo7??)!EkN-<2T?T}X
znY({~oyWyzx3-&<I#$~Uug%lgj;OM|C+_=xAD$zm53zMp-H2B6VOco4V7tV=9&oWp
zS$k&|!F8%T_)#mB&HKa2&Gq~Z?<(WNm$PwCwic%-15LllaI*s6=s8CahbsWCD%bmv
zuUS0=nF0n|X~T$gK{4#;5jvuM$BeQXNM0JKm5leGlkIt0U`tNWLM3T0r(mzr#eeE2
z;Et#UHWIIyo<{~d-6592J>!jS1byvkjM+S_T>x(3Ph$z?tZ9d-=t|bUg(4qa;_RGE
zGxvWC=(6aUC6y={QgSi%{NSHSb5eN9r@k8eBP^VO301xR`We7s!{cEjMQ`_l)G^9y
zM@l}nf#AW4dSOb0YuaT;MU$p0D!pN#@qre<Iv`BN``J^u>oQCEiRI-_>=Emo@1^aj
zzdsI|fv>#85&EVf-b(G0lfV2pq(B(wpjkWgS+3VIEVEI=QrPVMH?P(f60^pi17^x;
zPTpvnd+2tKE<%&A&m&?cf0w(Ef}I;Ggz9Kq?_Ms)@9QVzuol0!Aj~8X1y7S#TB&&i
z?=sc)D)p49#7CeksN?&<BAgoEh~a&YVxshrl@L;l2_B>jV(Vsn>}2jdaPZg7Yge)o
z6X-u+tE@((Ghljm@#*cn`;zST1+WPD3hCT{(MK0J#+EA9z+ZIkw;9uthTwi!k5GP5
z!8FG3Cw9vk2--KxYi_scD?YSho(7Hu4Nbbudt>$;;zfvM&Tcj|eEI0_r2zaq6+5N&
zhj+4$PTx%M&Px)A@Q3>asRox{^pZ{a9a6hL3>yknMrIA8Eza&x@Qp7<LWzv@%p1zA
zH^n6npO<1qiBWx%3!lUwl2B;b%-S1#v8|4qguKK1BxW>0U^lU2%YneRaDsPf`?ezk
zl`ZW_ea^$OmW)QATh2Q_Gdnm;;lu~GRbpS;M+F_n0%Fa+{9LTtDiL%o+SYqWwagxV
zZ{`K*D>JsFXKKaL53_p&9cMd=<R>+c`E?z=!vq7=$DluYJIoyF0TT&9y5Pwk=(FU`
zZ;UK6J=(lg1G8Of<z6N{{CG8YUc3CL^Q`h$i{43SfKxlqd2X7A<wvb|#qRW$%ck$d
zA9Si(cmkUCKlyifIsi>>Kj0-;mMgOgQaB4!fEk3DqG}(T@6SVcDS9IyywM|%Hz*0k
zJ9&=~eb0C;VNlV!qNvvc6M<NEohia(m~lCIxip^2Df_{w!&#P^v{tUt+_rMDG1p;K
zzFfEdvgUS6r3=xB)Gb7lT3=CV>Uv*gZ;B0lJ`ap-4`9xEv0Xva87z}`M~q_egI4p*
zwQdOL6VeH(i{v1(%8Wt*t`R<ylf!kJdy<m&ybYX9GrtwfuGUrL9wj50lG$e_+=0oE
zz&h}S`T`v#>TT<1R+zr**%I$JliIJ4V3e?C^EM9Ci=-Mb<a$oT28!G}3WF;uGY2w$
z9C;V4oceMN<&^BGmWWd&llPFgj@<j3STKagbDnPjpj0~RZ^*&%j+BWwjOgQZ7~Q*}
zXTOqZDL+7l;;Otc&i^Ifcm4uiLim7jfCt9kGh*_It$TFfv@~bkUrmV_ADSTE_Ap<!
zIxL4$`6kAxQqab*5Sm5jnuQAfh@P(e2EWpMn~?eVfK9Mx(ixh&%uvf)6pHgt&3$Ri
zPFC>6loUvrl-6)mY{zf@{H!n)IuwD-ee#5hk68BFV`g{Sp_rPvr>)Po{GyYsYuFFs
zV$#qmMMdj;oF-gAIAwzcnnlQ|92aWS)P;v?>8V=}ah5n>3yrQmyc+tnR9FLJ&aHV>
zM9-VD-{l7J3XyN54^0~~$vx4Mn*TBFSjZpRSow#D0h?AH$TIadLR~a68FrSAe)u>E
z)Exsq6CD>9Vqi?XS0>F6$fwa(VyXfnBUs0$gp6H9-t~Q7jy8&G=A==Z0bdpv$9hDV
zOk8Lg2;8QSDeE(8UxFp(*9`K(i7xh1Ru}LPjxayCv0*Ynxh}s{UDN1d&@EX%T^cb`
z>KAI<ZvI4KqM}-rG%hNHk}LQNqGXB=MoQWWDC&DG-kLKez05bW?<C4M2KTCbVLD+(
z$Uk!NJ70E|>9hchF;n!qb`SB1A<iIJ%i(PH(F=SiWakeox*!#`G=3hgvX8*?!t{h=
zy5xbM_;6n@hu4m5aM3d5pJn%mp6e1XS;tmS(u%*ABO%HIJNLNvf+C9EZ>l)0Zxx}r
zv@sOTD^|oT3pq)g&39o5M1^~TU5qCUo694EOi^!a^VqcnkRSX^R~b*ym&^ZATYJWS
z1%a;Qi~p#hM+n-wO1d?_&?OseNdLnksXj?!dwkZOf^WiHxLBbFosS(Gu&~!dyDwBi
zDL(zJ|D$!7+zyyMZe6I75sG-+j~m{_OcVC<yvEOqEKQKic?HQsex3dE<bd8nOp77s
zEH0+$b?04Zxq7~zRw>tQF6~Y_n=L#J=+NUiD1+5{UIjvx{JXGYz_<9eK1rTTExi{}
zB2v;bW1*fjPtb=T17kEFKv*7Z1pJiUiEx{Cj|mTrsy)`zBQ|gNhD5oeGH_e5k|sDs
zZZRu}j}@LIf1#FX`X!PXrKz)j2}vcRCph8}`k_h1C@Ir#wVHOON<%gxj2UbodV77w
z$GphNq!%j5gl9G&l48~FgY)PhNOOq9*-(6{@AbxPP199zc|bA%N{kkSCKAySk)d!K
z`Q}5cJY=qcGQ|*7F-*OHZ0X~H6{C)r1m*i&eOlfRN3~epyP}QqcTnwoEp{<(_z`4r
zaWaLLT6M6ZB;;3ft&47AG@0=Ot8PtU_e6FuPyrXKMz&m5RyZ1I4cYE~kw-;++atc&
zs~9)QUBTK%h-gOY>}*g5rxGM5(LU#9+WBEBr_T3o#=a-*G311xor~T~u6FRq{D{?A
z8+U6}(-Zc%?XZJj8O(Aj|B#{%@UEBH1ZaO@HzHvZ08)`CmK=G&AeacHKY$TTd>1iz
zERaO{vT0~2g~#lQUg=-WC+-@LO&RGnK3VN%aj*G0B5q#gr>V8_qYIt$9nS>g5x)cD
z90E9RO1E_fJHqA4s^oJ7qx04NWoYa5Mjji?Ewr;)n#O`oQv!)^0VfuC%%WthdzZkT
zCS?8#3u%w@p8T3~E+FYg#UD^UixxdW9lP5vn8*P}$`@oNoPgw9*j>X%1Nt$8M+Wqe
zRC?OT7x@uuHI8_v_a!j4B8lwjcDJLd^&5#5HTR#UrcG=bt`mW&^P{=nG&J#-;eT@*
zLGX`Ak8RVsE1DgnSjf3t*^e8!1>lKb`M^lSiYu>$Ru+N}$c^5!__=9To6hG{M<DWK
zm56KXGLg*sj-D=#yQ-s#bYH5fU|DOmIZq-8B0tHcv|{!MKyabn()##enM4$><)=sA
z3-RNcRvlFWqDfQU5UQxe(VwF(B~VV~$x9k6m(yQR%!nE2uiGP3gPOJv;mr(iCb{&K
zT%4D1^yv{~LjO+Yt33X}Y%>wO@JIX`*mei}-Vu0dMFPEf2Y=7=3Km$I#vUP_6(&X;
z8>BhTr42a7r`R5Gl3L`>ubOC0hq{>4A7+(*oX7WSuy!yuJPfbuCW8qHH0)hcf_%5(
z7sKjx6$95!eUf5y83q)Ru78?UMoQYIw;lF7LbECisHY-C*qM&aHEDj`zsoLCVAu!s
zy64g<XUSfgl*cA5uTgJ2ITTC>O3g!|)QUUGS_=pR7<axpBXqX|^W&KFf|%o#@n;{u
z;};Tu)FDb)d<Tk0C^g^l8z2q(-onrCrLs4Pmt_w+2?mbvtqK|u(OsRLw^_|v<##6p
zzfv7+foOGsFeyuqoCA@Sl**+=WuQ8)`c85+wYNvst!sdjs#FXFKNn~P5sMt?QSSOZ
z{2UzG`?Lj3A?WuMFkO4*au!2zRbMyBg%X}N#nIZlE3OjoBGH>gwjkZtI$rF~gs<KY
zm+co0FO}i8&Zzxaz->JK!k_AS^a%pwp5%3!COSwhOUH%njWlvMb8LUrJtU05v@1;p
zsiFAQ_xJA%X^~@JkESlZc>fPQ<g?FAH0e{6tcVYU3%Tt!==e)LjNjO$ZgtywJ}rjL
zht%@kRX_=l?d-n&R&}aQl);-VV#Ca2eHK0TWpR4cjFC0*cer2ZODIv9uNqlL!LPtX
zb123wetjY}_e}W%O1Z=4`X4^FMNWt~hW%htg;0Xz&*kJ+srw!wqMWj}nZh{$&zwl#
zROq@4myGC1wuF3!Fc{+6d<c<Wm6m(SX5~X~dx2uvDtkXnk+l^YX2ja`DWjzG$sLfc
zdE1N&h0?9V=UFL@g2k0(NfBiui$#BlrS8keu_xp&tv<UV+WIldbU#5+$@_@Oe!wU3
ztX+Q&7q3`){(rbS%eW}JZ|~1AFi4{)U4jzQ-7pr2q|#DD4oG*yAX1Vl-AIYjgLDin
zjevB+(A~{*ao^{Eo^#G;znIt8wfD7VueE-^?}DuR5HNOxh6DcY*4>&eRfvR}O^a*;
zqV=QY<e1zeZglFN)M!y(_YM%sHCb`v0x-X_ODzx4`!1tgkxuj~`2LkX9+3u=Z;i|g
zqDQ{Hq`;k<DFtH^OKmMIE+3f^xnfu7Tsa5c@0D$Te3^T1<T;*2+CPOtE?guPGIHy^
z&$h!oN%FZ!F$&}>TM$YxA6E9*le%9}4emG>hGZFyJK?(cD$#eH<B#1#K-t&&Qv&JI
zt-GxU();jd{fPQ35l*?<MgdAtK*zgXm-iz1wm7)*J8}H@%Y+}lN@S<Ke!QEe?B5z|
zn^cy~A~Cd?XEY=MB8=%Kh=?R@^CP2qXHHyf>5yu>WTNgnYVu)rAN0}kQz7?Z>d8ce
zxOrt?(Zmlkddt_z#0jjF{ip5;-hF}}+tLsFOaALhN*tFpU&v)U(6rp{ILxKck-X~7
z!RJAnZ3HnKV(XW^y7x>FZ?n&wDf*5ugmyj&(q=s{G-&Z}D1#}iw?Z>;?hMX$+M`L_
za~z-(AmQ$<^0r_)S8WfTa8bp(itXdS`JYFV5Ajs=3Gd)75}I|y${QxpQZe^sG58dh
zH8!^!Q@;iEo0l(yGcUHJ?ozq!I>OuE1PmXhcj|ldfARQm2!{2wqMerW^^k1Q*2Z%j
zMedOAo^l(Uo2`_TmIH%NWDM+&Y8UvH(jAik<3@?1K=d02wLXsE*(G7tBGGn`a#9S#
zU<-l+N0Dcc=cJ4`bImGVz|I@1B9%LbOOy{HTHzT@#^h{z`o-Z=ZRa$ajKH}p%Y2ga
z=HI`6K#np?iV*l3D^DQR9amW6e{G#z%70kg?*MfXI7sYPL?4~^G-_6~`yVAjkV+pO
z!*h4)aOqWmZuEZFvP?yn@cB_{uMvoBAeMDK#eHGrla#>jWm$avCX}W-dvA$VrWz!{
zYA34G5=y;>?`|j_ZD<{2>33m!eJWelaO0fbDSnJ9FSYhdeX-O^kbLSLd;CQKO4E1}
z%0q*dMzDx|cY81cN2$D|3w`*}hi{HERjYnoBXet-g$28jr(*y-s}?am!z!wxbi(5B
z_P)py?r36k?fVYFT<E&{Mvd35)>%ULfV+ZL>e&FrZjbkKD$%3<%+y*}+K^<%%pub-
z0gqQ(VsleGKRt*0${~!>TO|rtve!Tfx`*Yqd}YltG58)h5VvcrL=?nWBMUBB3Od32
zVEqUc+AU8x+4ki|Wbxyj2?TM7>m_CMl9fG@b)fq`QolTFHSK&jFD}9_QXi54vSMJ)
zl!q=LMdXHaa^K9Lshz+b!_)h5m3Q97K|C!78U~%8D9n|zsl1iGOv4n-b_KV`2v6oe
z?IG~?AZ5f3#{~E;6I!?pl16+lli&*J?0n8}9_{!c`e08i`KJ%z#(wwBJ82Q6i_I}X
z52CEhT-MPD|5-t`Jp(CF{2D)<@ZxFIi3JW^NzWC};QGm_=kOc3SRaladhgvpyuiQU
z%aeyi5hf-X{3T-X!FV8p-`!mxRcowL#>ifUfdT`YcdcY!v2w*U8N44vGt^kli>-Zs
zPR3^Q(R|XQSMS5#{s2%4=(z{HGRJ8nbM~z`#s4VvJp24<B{+j23djMF1vjpd4>@2K
zEp&?Wr_bZqybId$&$PsG9hCgARYnGIQUmj-aGF7{=ZVEv(O3&en|>r+Z=Sty=2;aE
z=_h((WNbQ_=y`e*RJ<Ni1L765&qBxV?yGGJTD>wbm83RiSOT3}==j4bS}gN6e-^`b
zfr>D|Y-b)KVx0Z#xamwM6YT53>tz2vWbtIo57K=au_F}C`BCephzQ+vzgf#TXC>w?
z8Ht%$dI6_7&LEt7p7}{vdnZi@g7~0Cn@IG0H7l$dTSj<U`c-oURUzo$>!KBEnZn&)
zTJHB5WtgWL)KE)u7Y$LU7lo3LAZ-z^CMECiUaaCbWLX(0a$Ac!H<SyCmOt+Q%aat#
zwb6+E9!NpVKLe^TG0!eemdP*wIcwUpVxS&gW>A?0rT-gN8FzXd{ypqytOUzP{_GS;
zd~cl!6{PEH?}h~P2dd--lJAWBH)B)J{*h)NMRqI#xw<9tgO7)B1qX1nv0`9U6UZkX
zFYZ%1G=tMDJ?E|fu3$;e1CSPDe2^qK&D|YR1#y>dou9HmMu~lJ6RrghDiVrXe(J~m
zxSY~Ho;V~u@sP(HYIxdA!4f%xU6Y6!nDCuHNZ;ubJqZ5>PU|@gZ1*;@uE?@c;gTxh
z+)>Kf-c7EkNRY*L+Kn;SP8}qapqO~$Ah=}lGGPB~pJ_mWK#_n;%2`a|JWuAzGN0!t
zmlo8BLixM)3;rH_n+FsBnj&>F#VpF72XZ!(t?Y+Wh(qjobZWA9pVM9%{j`4ja*|sS
z=-i@u{l!X6e}&up0r<3Z0!v))p6k9O9?DTKb7T7T=9&yV5%sUm%hDb+@EW&g301p-
z9RXt6UC$!Qf86Vi@`&ddfS5YO?O0xYDeBz67bHyK15=v?n<0xyqS>^>_hN{mH~hE;
z61RCgIu*Lcw_)^L<vc-H3oZM<1vezn;&ix6;6PfCIN|rq*yV#wRR5>YwomCsP(dZ(
z_XdwurY`d2ruflwao`H41<)a6(?f8Yjd~z2(jwTh_Etj?CtBVV32rmA9H$lQ`jY`U
zhVj7Cj{KE(tdAidt>ltzzF?^<7-~BwL}y2o?yj~g82uWZ0HYz-srq$3lnNL3wuOp4
zlum~8q=3Op0Ua^?;QrI`sh}3{Rx~ZILwTvT-+;7LBCDdo1iWH;>Ftf!)y4(3wkvT_
zkaz)V^zOvYA6mvPk<jkxnR(hlPV+PKyWLeI5dnBW1O(K+g1C1soIiR?uP~ycf?SmR
z&B}i#x2w;b-Hph05O;%pavjl#hp?p(UQ&`;eiAc@KUL&GmipbC`0=nnrK>r8C^F*a
z<^JH5&(Aui>{E+OAB26#T1dPP@>sn;Ll@F>zR~fVhqUXl$}WWWRR;sf?u^8myjKF5
zrl+t}1BS~kf+SqBAjR@(+pV!SA?Le@S*Q4K!PXWs(2JS0V6i$Oe|c8gr1K=(>rMir
z9Ckf%%M7sJE-dj<Ho2-tCc#Y<(9JJKaxh-a1u&>>_6Jf_R1*b5CN2Ow44FA)miSmu
z%f1E&``%JXQcC;|ZDT0WwN~p<ZB><SN8nmZTLkGpF9CQBy0pB$AYG0P5G@jrH4MoU
zgmioV0lnhm$oMRMx!a;}uRIxcKf_Gbr8n-Y`Lc{g670ql-N?Y8lKWaWF)-^dhJ~i%
ztBj(d!Iyw7f&Z`o&bqWdR(EKh439Cc#SrBZpMLb?*g!7iuf__Cv;4$OveKHxtbf>_
zpgoOrtII<Ab@b@_UAdSs@edsj^=APV3X61ZpX6?d9E8K#=YE=Xy01Oaz1DeNHm_;!
zjdCrVM-9+>vu#hl6o-{DkL^%5su13|y{K7Zp-iX$FYz@X;vA&?%|~c)kQ^EiCfV=C
zk$UQR@6W0Eho+Q;=;y@j9VoE|;#bPiCBhUM`rP3}ez(>(GA7pzX@hTR!Qjnb)tnI(
zfbHQNiC5T}7n(kMS@mIN-)M{3r}yng5^-kP@xauHkk0Su_Clr^Lz9Y&)v>$Yl_jIK
z!q`U&EjLOJ%Y9Z>J-}&hA-t90<^5r9a=|5Kd2VOTYLfpr5^r^;yjHXsX0!||=3Ko;
z4<9D!ET%*_^n1-5e3DHpT&c;36}tNk>=u&|5df&7`n&U~d(6W}fql!yi^AJiEa7ru
zxi|ri&&31OBiOh!A!}(#A`iT}w+5GpkYUU=`PVj}BOR*n8GKm`E;sSmSuep&Hd&^x
zuq-C_gLz(5jd2*>d$zt=McZrOXKVHYzi=aup~9D<li1}-6ibP9W}vlQN}yLm2~j3F
zQTuPG(U^yY94-ghBdM?@5J+^coH@tF2TnO=-d1ip`-;pc%{nmVVQihhhb7H~zsgUE
zE>d)=eDX+9%F)(uSwxAI7E7%3_r=u?yjmo-3=O59f<r9b*R4Jm$%rfm-hA^z^~+2n
zXb4X@-Kt2KiT5{Fx5_ZVo`o|*>IY|;q^gEtUWFQQ+v=7ovccn|?=a6nBSs4I?KejU
zr2TD5T3L)XH0s%ALpTTlS#}e^qN7ZmNS-N@?D|n4Gb_;M-+Ru0DD3)6Z9CEhhYdl8
z5jEY+kMBJ2skKX>1-a_rh-OXVhSIuxk2vJJTM+O5yVl!qLgQn9Z^1dPbyn0J8Ka=j
zcSl@>v&ckSKVIJz=1`CrFn8UmdWdj-x9mVDzr}0wmL5lcN|wae-c2W^vYM@7#JRBF
z9*Wezw<Apze)BrpVFg}OND2Re52tv3RBS9O)@|mBMMfBThuSRJ?4;K1i3Cl6pb{2$
z?Pl5ML)1wUJ}-w1^=9_6WBzl4Re=L)PA}q3uh$uOZv-_Z`^&MNWG%N{>F*Z)x9qit
z373U#$eb^ITp52FaD$+F!{TO;5Lls7#=+v4+=^|Ba|txO`HZL%%|7m$($)O<`W?Aw
zo~yk&*0xI*;d3z9?444@qrO>ncbvi|BmJ?pOJ$;;RKn<GS~<c#ouA(R65&cLBnoa>
z8CyRRdiCz(mhupwrFa&&h$fbUZk}f`^+&Ft7AC})cp?ynDxO<bhPr)Fb?#Ul3A1Ox
zJoIOSpH))n0iyHc5Jz0T=~$zmI55=o`6fbUG9n@(Hc|Dx7uU-Y1*d^V$uBC_b+pAx
zC2ol5iHE6}Ld#v<L^3u&@E5hS?X%+*@5Faz6-_)Kb2O~Rs>D3hWK|CCYS7Cew%n&1
zySWtz(&8@p{I>+^UnS)b2ILLy;LY6qoF*~5)<?Ed1?lXuP8Ha`^HO{D@}Qr`y))SP
zoZBG&f!&yC<JIxcUf%PkqYVgnf4fBb6QB3A9*f<|>RZCB@PV!xYyck)3lBw$vXpK(
z{uV-3Z4^~Tc?Urb#NNn<G4<I!&$_HU-5+eX&j04P3<b?{F6`VZmysFtv9n0xxf5Nj
z^bz4%g798=plTK%WaRZ=XDy$MbEP_i_`;C%c$h-Z{^?oD&y&h<W@q|cByMY-`U#I=
zuqU7*HDDn{OK}OLO#{|J&Ll^o#q-}z%1B3q`gy^3m69Y{T0kIemh~b@Yq%~(#{MFq
zLo(M3kg^&W%uAr@8Gf-J&CmH6+7GTe#%bowi@b~Zv$+GjP{UG!4lg;1RFCDvKm)V)
z|1p02m;J*`6f`-tVQ})~b?dFp4Cm*7XiEf;Dyew{2^DNkqTOD5SKn*+p%43dZ)63d
zL!&sxi7WWCr7*S;%mLc~oZ(ya0N0V+{$yRNu_l3vcQvhu3jMtqQ}9AMa>U30Hkr(F
z#~pjup|fyG<}Kw7D%~Yaqi0N8gcY{w0sg2$u(;bHmm~V_nt`dXe!)`(xi7d68c3A)
z1|*K0)CP>g{XH*mVXqImF!P&$UN7po?&T$x`-&U{RKWmrRotS&i}~1FI1JCa9El%K
zfXxqe<90j$4k=3%wq`lFnhqER(`mwZv)t2DwvtU>?c9pd|Iya>`)oTYcuM~{2Sk*)
z1CNRkl8aOrwO`T~>z4}etjb4~#bM<Fsy@^%QBucjM8mAFdyf-BEuv5V==~4t2H+Ix
zvIlX0ldAAkUOQW$Xsq%!pi>QcDe5K~SVp?-I3j9h_++#0;IGOW`YlJ%MKPg<6|XY+
zAgd4<He2C$kUXoW_z2Wj&Xve6kGI*wZy|lN8+@Q}p77%N25~F66kW6NY44|G@Ur{o
z)UUNWGrc|o0kt`9b!u)$WN8EXcNtHz_T>A>u;4uS?dkNEm%OXyL7&OHT-pZS3&ev&
z_0i0_Gk8e)3@^|OE=*lJ{hieH>0(&W$;uzL1WQn#^w*@zdva7#vrHCP+SMdJtIwzX
zf;&SHUm?n46QR!!6q0woX3vroie-eKAb&yTeO&LuWmYo+YHo%6ICG<xrx8&Ei{6Sx
z-jQ*gA^LfFt>KYDK2ONveLc6T|I1$V?<vdZ2cHHT53Ed{Ojs2=*5ELD9|>tu)a{>%
zer);^aNkR_udr|O0Mi{E+Bs#!^GPz#R6Pmf>uNPC(EAA4ZVGz}NGLlV2ta46E5%eY
zEfNs#zdU8`jaj6bJv9eM#v6D#fbH<!ekJQ{^){HNhdV2Snmttf-n+Sg*20P#en=cm
z&Te0G3pe;YR(#QL7bez7^ULK$L7`&~K@1jVzre<IV>Z!na9;VjqC&TMqK$x8%B>u=
z?OLP-+~up_wFp|;ww!o+P-m@^GIqBP<G2v*fjQu^bqH(LdS_m=yr<&3|JB%Ulae7)
zxXzaZnLIzuz8PF_XW&uex<>I6qjB9@i~d*~d*vDh<T0T8{T~ZXO^akm(DdGRO5d0x
z&n+s!ffIVwttr_(p$xIiuZPFD3HFu$S$kV;@$woFX6u5dH|}d|g3zv&)2<scfM}Im
z)oh5yyiPz7VsJbd{~+01AS97<1(Ho;S0`^>CBdw|XBeT=-e9y?YjS!N71i<@N-0=t
z8Pa5T>9O|BR$hJBu(+y5;)+6MTlspOqPDbDzs3w4BM=uYq{>~Ir6)LCzF0KD9`=cL
zd7v=G`UhAeX(50_y2`>MP$i>q?-cNM=QcaXQQqq9TdmhWU{&~A7+J0k{hhG%6^ibi
zwSYzo{Wc=jHn(bE+$^*NQl~W)3RJ``HA0cpq9_r`+o>9<A(TfY`~08s@V{jXpiF!t
z27f#`503dz(vb(qpFhO1T@-vlsh9^PQFcl_2+8E*6b(+Vw<3ND`p$}Wd`~)xBV0C}
z!|&HZGo#uAO`zNK1q>~AQB>&9cH(7}HV}^?t|3{P-UyuzGY9Lb54=2MtdUPArP2Ep
zX2*P>W`Viayq>m|mX(uqC+oIlXCu?2jlPOwO`8*3`uqbNB!p~nd3n!}YG%6+?`H_C
zxmH?6`k$LBi^AfCDcqsPdn*eAW8#BcHi3pGHKPxbP3Hc#zkIi9RircZr{{v{9%Hxq
z2lm&qmiE+)LnM*oFWzT?Jq5Gz<OXL|p6j6`Xo#ui`co-fdq(vc$Uc=~eZll6(1+yh
z0WA3cby!$v?Xgod-s4Nk9f<!5!&|)tdwvL=qi{FNs)mqhSmy2X@KMu3(wn$S{$gvV
z;XSl^u8mAQYq~2(`v%D{6fk`<R`0bekUn0&8_1J#cP>f7ZE+0bCQnOJrVE-(c2#k2
z4rtbN4+f=)41i56^%j$snnO&tkQ|f^?t8y7Gp`NQ2ixB0OcJ8)PDvo2FG2dkjR!0J
z>EC(RKn>+h$aQsYA@mb1y^guk#!mTw_J=+@Vn%{-ZDGaiAkBb#&=4~YqB{hO=X+6p
zdYj$@3u@89w2rS5^W{6%D5*1d^Lr@}2_{Sd^yP_brEbe<2PrGg{ZVQ!EZQ0YhH$(r
zw_dIYXW{a#aOM9m-f)Qh9d8VAo+urpz0^_368A<G^j0;}ae;*#$eOZ1ecxZ$>fM;V
zSyc*KLjx74f$gG94Oy8<EeVG4>m-eyVSTSH7b8@ihMq32sH8}wz=cotFCB{?-~)XV
zvMJDu*OmRnU{dJ4cv&24+6sP&7YPx~LFXfP{obgD(<N|VS*?KrkvF9s^twHyfTN@_
ztV>5(f{Q1DLpQlo4@-dv#3ju9p3=iR1%rza_X9Ni9C_Xe4r0VR>?$6wSE|HV^=JXB
z3+7P-Zbz`j5(gLN5{)Z8AV$5N#c*Yz_`+bIe&Ine8`^baK-rEa8ItHa_U2vs!kZ!S
zIVG*lrksDowIDNU(;bVie;@XqX9i1G*P+zEJr(&s@5zQ3yYH1X4ni~<G*aT|`)*7i
zohHu@+;pru4ifEp!=3A~j;&4qz}@CR3l2|ksMv9nsOedjT)EHS)We4{z4Pwf`vd8W
zRArskaSP^jCj(kmB|Tb@U6`o2%^Qm!9iJKngK}!8>@p&H5#bg7w!6Iz^Y=kDo4$0j
zEOm)0;%kaygV~53;^8D((BFlh@XMz7VZm<5jzz>!#h4uIRO~G=3>s&1&$(H4U*(#G
zano<?1?11I^Qg9zH?=CHaIZtgK#^?>BzBXiFqdY^!gI=@YkO}v0adU+=67?&x`~R-
z2S~jCb0yk?w!uNu^NeEw<l~kGa&#{0m5j$Kd=9^6x%T99(>E4qaE|YGSQ-lB7dgQb
zeeAF>fa~I~L+eE0r+lmo!pj`lvVNp#tEn5!IdFCV1S$$^_B}gx*rIMyqmg6<EujS;
z?wawsd%RAIuQda+Q3S8G=FDRPXb`wnjb`fa=*cT3O|PGEL|fg1(dgA;SN}4+5!ofM
zruRLaZ)=dnICesil+|fDd0=psat6rPa%mh>VpMTfv}4U{y14o1OBAlCtK|zkXJD-3
zk}<^#D=8U8DV8{{Z;HNoCgckW$ZDgz+RDN0{@q>;|FPKq=lRzh7)fZ69B}%I&TV2+
z`?{i8Mb{nFsL!Wn)gNS(kDBzSEOXdR{m5qrw29+b(Orij)qKyuG0MvD>?`0Z^W8$e
zU&b%v4K&8)y>4QT7tA#;wSo{?%j+uNM}l^LZDDC=(8C_bMaQ^^C#(F%e*XG$MF9(a
z^H{m6N))}S0sipw6D76ZZt8{6ggVkOq0w}oE~Dp+nt_y{&QYir=YuRpq5Cnn67Pi(
z&0&hd>bKaA6>)AZ0VENvm89>YfK3DQ9LO}i&OFj#MPjzPE^E!TJyS>jgE2g@5rP(L
zbaDiRK(;CL5B)Hy?Nk5fR^}`Qs@1+SH(%#8%hTZ<O|3nfvOPH^hnmqT3XuO?)Z9AY
z1y=<tY(fH5nWP^!BpMZuIF{&HzRpt^P9n}D75)b9HZeH}8*je727G(tnnDYTpBPRY
zs4(q30#n~`Q(okN>=mB1)adp+^1X*5Stg@|yjSkaAbh;3scS=@v7<7bpXd8f`EQke
zHfjo5trE}Q8C+i+^(|Yoia37mtv2kz@1>7Ne0L4!y)G9S44>R2&t97I<z+kuN>Je^
z!5|dKRy_TO?*du6wtL(e)}ZzG3uS8RulhN{>!slRqZh#*ka2TEWQC;Ai+5J${C$3!
z2<s%DkQdX_fVql&#kdi01agi`GBrq^X5enAp=+6!J}MQuq(>f4{g2QI1kn{x3RVl6
zL35oVC}Q8QO)JL7e~hpCzMJA}BPw_T7KwWh&6$%gt9@<?PJ(4Nf%Y-~zBViEI~A#;
z;pRKk>W0N8o?r{lN`70_>&Hgv-jgNM^$5PL1e*63{xoQ~QEqa>>#D=S#xN@*(799h
zAA6YX7C%?49I89A-DrHRcu-%kSep5E2vqqPwbh-Atx7|1=BH#<*N_u{NL%ea!q?c&
zsv?kQ%~;-ucln3Sr~85M)c6uEoRzfL@+djKV=XUz=GHOG1*b^(OF4eEd(igO68{9S
zm=vW1*tp_e-l|P_-uZQmm3kdhIe^k5%A8w;YE7^fHp0tC#U?j~{-phH(#CsYGy`uC
z>NC5tR639{VZu!*gTF<;jlJRv%&^yNq%$MXdZT^r<LMnpDg5n}j3J@I(*RvY!4WE8
z^-k-;E|7tSW<z=}RK;1aOE87>rt5voS9mUgU@nh)6TveH&tU!*5S)*fZf+d6?yRT*
zQn*?wzkN5#-CeBAl=4)Kysw9~_x`%`r7~|a!;@0J?VgN-^AHYVPw!u(qDQ}|mnok-
zn6?fK{2V1a-|~3vi>zFek3<9iofl!O1(LzloVCtl;pr|TI(vA((_L@9F_wz!SOd8l
z%ezD2J?!+GG5&_>+asqSvm^^@)30EozX;!$7tj0TTX^67FIPI?Om_rbXB1p?X*Imv
zh0>Zv(OiO6PUAktZnu(`5N{&PQnHjPL^k5@ZkMZKHLJvg_J~%AmELdc;Xe~w84Ias
zD+d{cdN5zNV8=JJtm-{*w0M>H@bpOr>U6ATz<p4Ybxs{Gfmo0Q6^sdGDgV=aJ%=m9
z#&G%DU5NBZ7XvCAaxi~^MARD<MXtmU5M@E@RuA?3eicV9p13+3CMOQDMK}h@@xXN%
zj1bSjkG$gHH4MbFNYkBqh3K87sEI$qR^LYj`0#3yZ$$@`ec&s$ROz(-?KFLs&13s$
zJkw-fU~I)d{`>QG@IJBcxbMYQH$A)Ib7iy4vM*u0I$g59zD_S)+xw%F$oi?cM~=In
zc?ap+qVzr#(cFNFu@NYFzCtz_n@y4twK|O2;uw5?nFvqwtACYFgnl6HPLDRyhy~if
zvt126ZhqB`6#knzCRhk<Jj=Yok#@3=NfgWpIL_ws_!7~YTYC-952vzwlEEo;*cA|`
zSKWHIkz0)}vV9g7u}#QKbXFsf+KCs1P@oUIKArwQ!A?;Obg~rdVAZoE(!)2uO26K*
zcX}qhSo9SxM!=_gVoFPTrvw}qUf-*J2|c!u@|Q5mbzB%w42w5xR|pz)AbT|8o8{Y0
zV`KS+@5vOeAKXuv)-%sUfs+=#MZLU>6{6fgve;YV-ur(N7bPe7`=!cU_L{r<3S2^<
z4wm>(P=>V=Eu-8d;VBqB<RI8YVd(7;+LAU_YLSIpbRN_-Y!QsEYZ$TS7!B$Jlg+0P
zE(SI<G#s7Ocn{_82x<5_7v|UHs%?|!I>3GAU^sCcQitcNWmGZ#70%Yy1+;v|YDoxK
zBDq*#pCUGMi6Z1Ob;mm|#rY|7%32SyfV}*l%Q8H55g99F{_f~cY|p^kv*@l+mm;{-
zhX^uFl00gf-@cNW&WTT~dBUh<x(M|5lY8py+VLvyL_lanaq+ch1`yw{2?cOj$U5k~
ztk0|kpMI^V5U^xsCrq7PiNQ^t)MQCbTpDi{{)a3wHAc&Lp+}+b{N}Tl#{|(CqODKX
zgyAVx3Ongr&6zRhV#Vt>J^Kzh?=qR_7&WS6c=V+w-OFoO@b^ph*A%Ziq>oE6J)U{A
znZZ_FNd*zEcC^}J#6ad7s{r>2eHk(?*>S%Gk?fDT>7VgIk87y=ff^rX;^boue$2_j
z`gR}Z>4%U{_)lC*kW8-DtA?edwZ>Zau?fhn+1NgPz<+_w{tbDD90nP*LW0;Iou%(s
z_bo5)xuR;>H@}Fb_j{exd*!8ht@POWI+<_VM~G?Sgc%11<Hs;?tGp_d`wROE^P`4y
zfcZC=kH<`+7ChUpA8Vt6+2aL^BYw?|`+m>*EBr*{q5&8x88eNX0Er^*u9VhjV;szK
z_W+Bs%dGK^Ys$5=`0#=Jxwf_q>@9d-RY<!<i|DY}A1lr(Ykhjl|8DF3v3oW~fy#1L
zh>{YQ;=P~HAJ8~yB1Y;oz<C{?YC9%PbM4dyN&q7y@Wm!n=-^OMGC}-Bx5@^K3@ccT
z&Qm5^--(I-jluq1sy?Ac6zx^phGentSCc63+Q*?PF-})UqdeQ>>uJY^^oM9Erh{%r
z)0(TlQpFOVIOx|j%}4jWE6-y>j()z+cn{a6UNwnB-6iIT4Sw^eoh4$n<@>u|Pc$I6
zE9@l%M*GhU3FC2mGG0kQ2Hb6aT{+`vl~_7y-$F#NSl33b8&kijB8G`EMjT1N9#i00
zTd*?YA6B=|j{d3$CunzV@1cs&8Z>sUc3&!biKm`J(yGwmg7Vc{>S4m#=z5}WZ9Tb-
zkX#FovhVJ3K}7q-jnk<8)g3QT<0BOX>MmUc*;<>PYhTM_m3)uOalfxA)R6mk&kAAU
zlqY?dH=Z;Om&U6a75;tf?}^i%pYK^ft?f<yUAj9=rBVp<!~b>#*F!;Kw&ZAjxSLKL
z_c1W~*r$%jB@By{9h8BYf%5K~%{UJ!b?d^w(&=g1aH3)ScwaP{gEV;*WCtJe=$N!^
zEIgG3yfb~6M*iI}DE+}pRrE@GsZ70Ky~{AS957Lt%|qv7A&?hH7`ps+-!F}OIX;Zy
zGH0wGkazdMYWKZx*CA8okbYwh^4J_R!#~yHId_ba$<?PC3CCGRF%{mo4E?$7s?prX
zkz85*<ELj=9@g@(wv;9jCq2<&wUI@P#t-0({JWq({Y@p^fXSU$Q^+p)uPhH>gu`IZ
zR_^BpA{?~Qp_WhsoBTC16&1hpA%fF?=0^S|AN?T2<Kj7jO4Bg7cLdmUGmvU)MrP^z
zF?oWMwzW1o!_b)H4}CO?z4<E-jwyA!>5KvQK2HHx#-`GDz~gA3142}O0~)<3<mfF8
zB8Fh~ut~f&*YNVJ-;cX{Ut(j?uWZzL?nF`slbii{RG@F{j)+;8exT1uoVF(@u5=Jo
zjWgf%LaU3>PHwGk(~QTeF2^NSL(9@!YM>Ur59sST=G!`6YvogazumqB5%n~yVRA#w
z|Lh>JhhL#c^;$zv1}IsdrzGvsQ{#)u4P=S_2fdTeQ2PnIQ$5HF@as|Yz62dg<DxqN
z8^H(Mt-W^8Cs8bR&?68w`CO&H9mic4_8apddlC!z>FVfw=VwvP51^EM{dOPsTm73D
zg^wl3Dv?;M+{<u2%)Z@d-lM6LzY>hAb=!Vv5bvF+@{%bi6jUnGn&!|>)uxYAG7E4e
zl5hDYgw!$5X#=8eJ^ne8>pmli2qAz6U<*E-xvl}GOdeNz9zMvs{(k#(OVq0eI+1bJ
zzsU?I?qxSUSXgxT^Y&D-;Oq&RU0gH~$h6$ce=DR4tX=y7SXug|t-nDL5%T?q)&l0B
z`)oLIrJc<ZavzUs1(Xe(W)Rhwc#gRT9QEDYwfA`~y~+U+LplzxF#?!FJcs4&KYh?I
z(-?y%&`ks(y8wuH<=Hs}UA|ktM#&kw+U8T7`q&G2f~do~S*a(x|1x#I!<X#gIg<il
z5S(UhjOoBEqreE<-_@qTNG%>VvvJ$ntu7?Q!f)mvZPdCN6W4od99+J|>TGkb8<RTB
z`Qws9XVLQosJ<s_#3&1)cR)ZzV+ry`=@`J!o*r-_&~Nu}js+*NMFzPpOzCn?e|*~t
z!~cKaKOoR6-U<+{>qu!b98paODqfqN<kG8j+6Uh|JH~3(qXf7=UzWdxaX(qX;HgR=
zp3b!=TkCZ-#X@-Fcy<XBj7#|{(Gqbw6W;k-rVhX%exOC9$fN3qiPehR1tun8`qOXg
zFy2(Jc9ozpXU--|)tPL#aNBwM(R+5E+nzZ+Z;Cc)ibdt+<$*k0ssM0I*alvZ7%sJk
zOwC$J+D~8yDI1{6eBCW7i$)XzI>Akvoc{aFOw9;@t4JYx;l%ehM7}{lTDPM*Dme4T
zu7uU_Q>1Z(D6S&w0j<nWb)wr9E>8656$E(&{cxa%Fa!0OzMQ=7Nu58x;2|EN=HMa$
z-KGH^45DttjJT9q`euI}XT)v-lDRt_*X)&bK;{xAaC<N!<Djzf%4S?<-0$KUq#C)_
ze21}L2xnI#PPf_Sad)P2AGlN7mXnX}-jS}&(ce!pD8~?H$x>vr*YA&bWS^u7=}XT4
zi7Mn#&?nm40~{vZD&h0sB&rdAY*mAY;nTf;bn2KjS$3$^Tr~w4=vRnIWamm9yxk}<
zL<?0q*=|nRC%>v1G+L9TRhy4)HyYULJEO1(xp00E{-Kc_7+rB1wdX?j3OK5Y65f@w
z<Q0Wg?~3hEb;1)CS;px(YH0g}_l^E)qyF77V_DxWd-l&;8c+vgi?^juv&@Wx%g}0X
z#YmqRzQJl#kX6g)0@i`86RG*-KZ&`H7!VU!MvAL(YCo{B!;#e_-DPfYq4EGJ)GmHN
ztt@7havS)sg$8irP~c;R!+F2JKc&ySfJw)kYUYHtrKP+4x|0~nieep>zF9h%xUe@j
z;k+eIOsO4#53gUm(BbMUreJ93I+67h>BE_=pYe1kd;RYtvi$|oga)?tIZ~i6v0PI#
zB5ZIZt3^Qmmtka=E<rXwzxmiCj=3t)OCz~QKTdUvUhv2{eA-G&RxRt=az3am(UU;>
zTs%6^H*lMFNuIQ;t=~-WZ!^&DEPH4aqj1Hyw^h>#*--vS(Vh`N6FTesn7Gs3d989c
z(O_8vYoz%0sb1##OPAFBeoLE!$ESYTdcAXVU91?-r&=GBNAWn%f4$iASt4Vtw5Dh=
znJ#Uhnm)>f@^IYf_bLA@O~(#Sg0xs<ROn6hK-AsMxC$rfaQNgdpmdX6mCgHpEq(ae
z+D}=|^-0UoruI~0IJ2*-@Rn%)jqT{fJoJ2P{IiO3{*&irFCcB*RyrzX7V#dI4JY}@
zp0wlC14SiC6@jQ(KKsxd9MdiLd8!d%kVV+?2w<%ql&+?YwiY>?eB<>y%AMW1>?#QS
zYSiDnxPSR1`OHE_k9_lse;fU)j}L-saoh+olfX=N1**?1Q?#dKCkQL(>sp_PNJ6G6
z<KJHmcqh=+H|tD<TKJ8BRqA(YPa2xhG~wT)z)-q@MBd|&V?#Yp`I89OnIpH`6Z!2A
zj6r(@Bp1NTjlR=@hG&1)ODIb&LRBpk+WA;{)ZSn0W-Z_%{8C5psJpcSc5>JXz1Z<a
z2skC%B=Lcx5ijc)+V|xCIP4lWu-+@h4(d}%P5iQ{q9~Nqup#_w+%RQ64H1nOhsnI}
zDf}S6PrOXop*M^uMj&0+VM=b2W4!B!nzO1n-KJ(cpz&$!Q_T}ixR_Mda_`TK{G}EX
z<t}|ew&&t1er0<!B}#s3DmP(BedPTY{X8GsUxJ7sLeVA1n~y0_?ICSgJf{1IFI|CQ
z<n88;J!s3~iQsA0>@59B4<<wDX5nq17MoLF(+5R$C%`!iahyP0q@A+w<tFxlsI9pl
z*9ZHuMWRYhuC3{M^@*QlNJ5o5pgMO7djFiV)_{^%^cui!@NhHi59N(Rl6qU>Abq2H
zUP|ooyG8%_xEx{?5?Mbs@{=m>Y#N+9lH@81Dc-){0YTss3nt&n#Otl%dxFOeq74f0
zR|E;Be3AdkJM7(A@YZ}zK>w_ZwZ)~Exj7tfPJjzNs$a_FrHm9v9_SD4gVpITI2lm(
zCNu4??<LaR*b!&_!)z*Oj%$#_Tl@im3#!Om9hM1wc`%1I3StLS%*Q(y{$`N^A5+Mt
z6R2_4j99J%Ozs`PpV_tU20tl+n_NH8Wzzwx@Hl^&qgX8ujIoI~xR@A?vl3_XEKgs%
z?f5pkCYt{h%TKRkQBKhopXm2JMqyT`;4egBRKKSY={{X)#oFw2jT-B-0ELP`6kv)f
z3`uGErk~WUNSSqWAn75uKp5fKi<y%TXYV|C+wzTmK<W93Ky~QUt$}j2+Sl%(P%o?(
zUVSzvxjybATiTgEUL&ExpDZ!gb2yKxA%RzcZGU{d$9&c%)e<8HuMPLV#0%bb$({Vh
z+Ra*Q$9Qxa8A*_3<&ER@u-fDgF?6rYB?#@$IB2XP^Xq&AaFHRaWI~K-<K#k$<9C#+
zP2&ne=3@LYk8g){yi@1EWOF3<*u9==amb#vGw}~rY}E>@AaG~4J04+>WOvf}`}oZ3
zqTBn3C{g&6lAbxrrvk=y01G7fwu`J-4c0(z*#|m290VbkObiv&!eloHCzMqt^2fbV
zy(T7?3FL$sLL`d(OAb#K6vKQZi^VT@mm9t+zmFrzlHyv32rG*qAU92}x-R;?*lo1C
z)g&o>Ef91}@GFYN+~nMu04Sgd#A)FkrmRTjA#>9&msoS0(306~5J*xx-^S<BNjamH
z*lLRC6_*tkV+H`T^eM9ge#)~|F>jam*~2_3(JkmMkDnT;TTG0k9e2yPD?PHT@3q|N
z%*nOk+NE=DWgy9X5?{hNcf!xB<H=%PPIR`t_?vT-%3AWwVJ?(8jH+4s=tbVTlA(&%
z#1KC6>b5zfO+Az{I1Rw*2qX@Q-0FWi$8~*i>D+gfFfQYLiA!q_bC~{Ypp2=>6Swhd
zSl_IbN_HkF=ePj!zN5Ff8^w(cG2;hUO8}Cu#JSiT!_hsbR0Skb%o>o1a@PaE(f6aI
z3G_YQF55y2O{>~vi}IKtWGqab7>T$DI%3k+5~dswKFH!KC1_T7egPOgXOVjc={J{y
zaY*IkKZ^agj(7gk2SG|Ff0o5xR+pP)3@bc6e0)x6cl|txFn2m%!a-fx<5&NmFz*s{
zS58WTaR68t=8iE}S&f?3(!wkhEeOr4;CsPDT)U$yYT#o;sz`fFj-LmEYLWlsdtu6u
zEPT$N!bkzWG1!okcIz!*t1Ugu9}XXUMI`r<P>EU&I*x@eOEab;Rk3Sy7#DhTKtM_z
z#ILN3mnAHO+;{wQHym%#Mah{wzQcU)qFv~duW{=%NBFW<Gty2#<gO*w;w^HB8cA8(
zgx;`D+Y3kBAKAYZu%)&yCDgPsKKhPZ0Tz^fz+wCDD{*$>GY02?Sm?7Ht^()b*t>|5
z9Mq_RS8Tbz8Qp{27MEu9MK5ny@K&^8(eLAAw&cTAWijN)-l7(vNyEENUGW#<`_al}
zOkFGuWdMN3F1#?MB2szJEeCQ2fKT)n>cxc@WOn}++s**8#rP7S=1tQ5jW%^EGnoF}
zAmH`$)m+$39^Rw22Mtmp0vJ;>_m{8wybSm$TjPmm1O<4JXAJ^roy;-^i4F0Dz;+w5
zt2Nyo<mB7#O%4k8&IFU40B&=VGL*3jobwMa&3Y(U`ZRNync?bp0Q5Cg5&ci7><4JM
zi_IkCB&xQXTLM?2#sJ)crwukuk8e24=^aO;>u-`Lf1n)D{B?J(a%?J*<h}?tIzClk
z66-}7iFK0u?9KHF!8ls!sh7FP7>!LzZ?XWw)ySgvkd4OB+@{ioVNF^0k#!!)z^8GI
z?WT~!m{7VV3si@7hV!JyS)ramx(zA1oq&S@JsM6W5$BMCkmEaq4pvk^K4D(6{-zZk
z7Bl+$=j?z-RK|RM+f(&AAYXw<4M<J~^dUZQF&c{#IP;=4wGi~fpC(GIL`unq`aU9D
zUc@w&DD)(V#+Ea~>hd)9+d_Si{Yb%h4)bbY8{PRG=Bl2u#iR#V30#%aWXWPt+WCpc
zpR@$s`V(fn0aBzj{T*_nM&9k4F#GuSy*GEIdU;z|{m#zel*3Kxw4lI;Xc$~yQG`EN
z912Y>Z43Y8G#^Mo9uV4TDvDATr#Et8%iX`k4d;`j)V|5dYZ?5r7GCv@caUA2a&AOD
zf9=@``1v#B8xL^C3vm!H<97(U?Df~u_~n>8ZfZzZPP~yB-CxcjI^<`M0=|VO7=Oze
zpz>ZhT}&3jYQ3c$^0;)g-T``-9kGGZjQ|l5f9NMl;OOUKwt}aynHS*Hf1pZ~ac{*Z
zh^cv~+EUdF+*fZ3&r5ZE!gvlG47)5^XOnkY+Mce4Z}+d+aObW7)LTZ(sLw*c9sA9a
zmgC+?i7oAK?iD#|Iq%`w@6iHVVu*O|`a`>UZif+X;l$c|LBqijog!o420i|g>dv}l
zBrPfSr*YzdOKTBp(i=p${RF+IJQJ)6*Z8N{@#@l774E$;2&P-`BVuw)f3IAlB7Ty5
zGFva;vtm^0?Fc-b2@e$&6|Gt(PNpD<z){Vg!QNvo0sa*c(Un%tj5c;0J#~6tgU_qm
zS>(frWacke?~~esjbi_~ie}wjMJ>MQ*5&g)N(coiD_3nYHnY49Xv!Paf`^M>J>pn)
z>@QR$@?Wn93g~1Hwrlh5!$-QGeOKdw)03(@w1w1*b<`aUn0xX*QfucLy2OyI2wA=K
zP`=YX-~Z;gmMJH>S-Xg;!=oghq9lSSt9KXtk&tO1>@JuelYH&7-jN;|wJ`(~CdS#;
z3obzvjZ?*RKF&jAkYLV@C3qHz&tztAn#v?9drcCFugBoES^9XUvf-$(*%!;Sh{0v}
zO<<<`)rO(r^+tGs^Gfg?#wX0?OSq*Q9Ss-TKm<|C6sJ^_@sk|N)^-#CQASe$oK>@<
z<MTgFK9^+a7HO2*_c>&JN~fV<K$9TXwQe6|D7N&OF4$5VgGKHSR}70J56k{qdvk3W
z_<3;6XHCIyUH9>}*Z_EtRkfGlo)eC{N$d3N{43XQ>uy%3goE`L#-uCK;2ZKCcTFO5
z<xk_#MwImaq1Pg1!L1A~2SwhW@v>Sn3_uVJ@E1!G=hX=*|3!Zp1ZEBrCC7GEP$-E^
zz}2j=bd7m?e6u6o3UB#e&7Ct6jY=L!_lZ?Zsw^`{VgI3GZNd0$4clSv@w8QYkK;~e
z5E)kq_y*BzzVX})TZH*UJC<)e@xiR~7_Q{x)7v<t8R#j16KdBuibqXuFMYd$1Ht4I
zM7HkoT-Vx!_{`-PO<m!gP)m0fEZsLCCs4y^!?F;L1&A*EH{9%ab8J&Ow}rcwP-60<
z-_JG*D;&^!mGNGIS68_-7*xl8Os%;f#f`^Xr!F29PLPXh%-K1wMa<RjQ&87|gwu-^
z(iPB)lcqd<-<zRRtS;?W4P{6{Rs2JpDs$>|g%(z<@O?~MRRe&ovoP@cy`hkYZd7^~
z&OP_@dCSy#6)*R~K&d<Bryh#Q&Mj~VWX{E1n*co~6fOXs;Cn>Lum*|hBAB`d+Xc!%
zj;N+A5sPcbKZac{ocGZY5xy=}T9l7K$z%2|=K%C+wobs6{9yvcQ42Zi;$~f)vvh(r
zT7$al8EvUHlxP85h!&YO!_Y>W23y%LN*iT);%Xj<8^h?osvti4)^>WVq>hS+sv`P}
zo;KY|g7zhMF^@cMYIEN7YY>GC5`i33=lZ#yn=45kY(kThZRF2t+Z=o|5RHwZ3pt>?
zR4jEz9p2x-AEcQpk+wNc5XbcXdfW)SYdTU+B|yoG(dXAtLE~*L*;6RPr%3`L&!BBf
zQ|QkmIXoKU)P6{XGX}N~r)P0mu_r<EPO?%7h~3vQr>ecDNHpSHsSPVdWLq|V+B5pS
z;*UX=JO%SGYK$Uq;hu1F)ET)7zRdVulct{x@`R<=5#>qbDsqQG;|c6u_x#syPJCu~
z;SMT{ddi&k0ud`B$X6pei0S3i#YTOD8~lO&)GUrkA+X`CD<z3cMY8l`o5eeI^QU2f
zEVn$%?lbw)ALss{V;ILcOGN{UUtc?%yU|FxhJE2yu(K(!fcC}e(9Nn#znWS}y8XYS
zsyhSN0UCNloINeybJ^m#@=p2Rtre-w1=#~-Q6aCLdN-Zn=5!JXV9#!<ogKSaWQIz_
z4H&<A;jMYcfpy@Cwn{5WBahNj=U=s7s7yg1Le}>*YpW7_=tMz-W9BQb+Sh<VjY^31
z-5!KAs)rkNK)zqaa7zw+eU5i6u{e680m*s^fyRLxfyfDNPu+5sA9>#KTaMZY4zi8z
z<!TnYl1nbo{(|}8p>bRAQ6xI_$KW8>?`nC@`8Ve26CzoLEG{k2!mxCzUyi}?rCm46
zng(a?hwpcPnAdCc*b8$bxf%7ic2F&AV+!Eg4&U`TQL<7N!%TtDZn1rtF%SFP!ggp?
ze<7;WLGqp45S?|DEpHX*QKN+M8)jr11+^;lM{5%d-wn=*L>)lVb(&WpVR)peLwulq
ztAanZNRq5@dFU!992->1J#GXVzGiS8tL?s@-iHH{SqNe7ViGwcJ9$C9pigQ`kK}jN
z(6jzk)>TUs(<ULVCnrsTepk)cuzu&hNtC~nXK4Ze*iNGf_;_=FfY9C~3y<X$)zXmC
zm%ke3jcX=GkK{76pbEJ~P&(EW`)BMZXRdW8nOIg_nf&fP?;NweFZq@MI45)xBvZPV
z2oRDeZ?dOSAmY67J-plkCb3$~#n~wicjfDXu5bG5@K$7EVIF%>yf*;a69$kHq;M*B
ztgnDfqAtR4;!LLHR}?`o^#nWD{A`SoE*&HDRjc9wgz6(7?GMRaWFQL%ZWuL9v!Rm-
zsCFZuRIlN*)wUWVTWW8X3YR*IlCSn|bC?;fMQJZ+XzH*x7d`ly+=0D2&Wm>9A>AV6
zsB`2W@b<cL9dc$tbHpuXgE}d78a%L7+l-TzPgFrB^!PnI!sE6Nlc7WMRa}>VrJGAa
zVXU9(PG5a8nW7g#%;l=mc<3RSJ64r5kwqWAD{V=<oOJY7FyZcrOw?fWz2uqlAt)Hz
zA4aI=nly;(PImd4S!ZJOqZJVaK>$-mHLEsz*ahgfNu*eAc4%Ubgte_mr+3VF2J4L*
zfkcASx+$+YD>0#n2q~Ou(oPtpiv!y5o@PB-+wn*t6S%wmb<L7cTIxHEA>w)zibF0+
z<Vy3iDW);#w(P$87wOt*)6}C*eE8G$w$mV63_aYDmRDZ)JNWu*zfr9w)hgK1AA>7r
zi%ZMi$c{9s<)f@r!dmqKK)qbB56M`ndw+|4h0yKfO|3*eG-8%fbdwT7eh0mk9o+cw
zxY0U~DW}+*o)yq@V{f!8?Y2LuNn&`^KcuqL&^>769dGE{h9&6~Bfz7#!-K>Z{bfTN
zj|;~;ZJ|EkV?lm#y7bZ_Dj{SH`#Psu4St$2{JhMQw;%fs>W&Ixu22(6hYmlgTTbdM
zjo$hBxZk7TpibPw9%RZmZ3nrF#de-fVk#zvjxQnK%MWnGY63oSwQRGe$@^qSD1Q3g
z*7qEKHJ`??w$bqZ>KRH-ooeC)YQ0Beea;7LzJK(q3@NK9KSm$V^i#R=${qa{+-iR&
zGWF{8!_S{yp?L9m{6B)lT|YS&)n3;)_Uof8KC{gNdD{odM?PhnbMw{0uQI(He%#i5
zIjM<Cx-FAyfBkv+RY57|w)-Y;36oia=;okl&i({f>;?0t-Ut|6jN!(~DX@kI3gy`8
zaubYmE@P?QV>4m!k7!bFD7@1M!1VMuHIv^ZENxZ#S%WePJp-_%sc33-;jv_jZtbZj
zv&MC}3y-PYD98^gCO2c?azWdQm5#<D*L(ebf_aw<F%705eGu6zEbPCN&6Qrp@BI!$
zN!TE$kEI>hkWB4&oP3{)c*o=!#J{r0z$a6bQbbEnS>4Lgy0RCegUc@sJTMxsf#W%a
z!OP%zC8?EQ6hKA7V;>fZGecJXT8<I|;$|7MZW!4{i5OIy<Ay!Z(#x#M0-bD2Fe+{4
zf?<#xC{4b=Xc@Qn2OA!XH;>3in`?FcWCU?IvoIXBT#{kl$SmZDK_$HlW2dFm{X8M%
zZCMJ^Yll|BU-axlTmbu!iY>9srB9A@7gs}7>d6mN&Bp(9$8LXLrx(wj$amg&a7S%z
zoYgj(fV)%gUJzWWrsE2ixaWR93&iqGg;C8>{}>}Oi4bbXdG7JNBq_PQq1rE`oPiGX
z%Z)~44J@LKxpv0XSVfK+`ssqoXt3s{=rHxn+G|1zQ`cROXS$-at3fZ3c$7F9pe*bd
zBvn%lmfA5PrUQSV2KowO1*^Cc#Unof_}lJ#9gtN}k$kB|kAmDO>_DSkSohINuYWye
zC$#}R195Uifwq?*_R8tfg}?;WONvM9{;3tK1E_AIfZa9?84zjM6#3l#?G)lYrDblc
zu><z<Sn5nN@wY72Mf#7j5xnpfLKKlN4ch?GNlZMz>o>zC@g3G&oWzO>dx3xRa;@4=
zn!W3lUFylSpNrFy36~ysbB`8cNa$`PTh!ACFnF(E;s{H%LUoYw>2&xf`QpjnDP_8$
zUO9dLqwfgxs0*Oy37E&pTf0sW`?@$PUTpr;PmcAw45Vw=LIItYBL#``hzYVu=+zTs
zX63LAIXC6XiNAm)$n)Sb<|@rlPdVh*;Op*S!yPX0Gd~Kn#p0{H8?6VdqL7MHtP`w3
z+yGS=-YzPhe|J^rxA1OdFdw*_(=jGUDuyo)RzmkI#J%F>Yw*W4{8gbl^W6k>d!g-1
zSP4kM&rw`)AiK%79BtD(r;lI77>uyCoRS<GIq_7@H8->A_H^KiwKWUF@A6g<1XX&)
z(kUC;A*8#H{cQ=%X;+skn5NUx(%!0Aqnru9pI+qFZQ0ma8C-s$z@7Bdoed*hm3Ugf
zEJB)YixmwiN$uAhi72{lp(K$2MCvx27FUl7Kz^f8*|m0EgE%Cab9%_P+Va9HQjIuj
zG?%8ty*+eS>}#~qdMWU||7XGXtTK>hslH7g!ekm>ehJ9;P|T1D0uw4ek}V?ZArwZ<
zxL?L<g<0-#;eWTx3$!?F^s&t-Ujx2oO``V0Z@Vq2_h5+YO4(nFSYM<mfsTzf6k7j8
z!>5{`*6(u9r=Y;9^;;!s;lX6Hy;#Xnf>dHX5?i!oAZcW!3(ZP>VfmB_-5rRY#H!Ct
zEanoSF!Gn)=5qBRrAKG^VU*GAb|7_qe@~EPpmfzM_!~NZ{T^<{)9-SH`W5w%eN1P6
z`~?ooCdvZlcH1Qe2F#T=3gk|}kXD^RZ=^H!!v*@-T%>rX_^k7B1!*LYwz=ntv{6Y}
z4UXzY)0iy}`FhBVU$|Cm<&Hmpw@PB&8A*mviA7jB-;T3&Q@WSwE@*SornOmZrD{O?
z@+8syaYfx)Q*r|*wzJ{p+yV~oWeV6eObBds(rx@ooT@KezP8|>TK{ba>YpwYke+mK
zvT}&mnZ_w{!U^3E-ka1)f_!0wjC|URlZDx6I;8o}GMh>tZzD5snL+!n(RwVl!_O*I
zdaZnIH}{bW)j;OL9z<F@)`@RUJNGJSy=3q-_WzOf7En=j?fd@>14EY}42>csHMBG)
zAT3Hr4J{4QJxHmfO1IL2Fm%HJ(%l^@-QDp&<MVxf@B6O*I*S?Bti@u^nLYdLeczw!
zx|Shn3FeGoNi<app*Oe*8GU+ba%SsPET8gVnaXJ{J!BMn04aT*^uW;=?0iTNIQ7gD
z;4rK`Jw<p!mr7D)zoIbMH@LUi*m7$w-B*?!Ou19DvHikr`|iCX5nt~eLcHjf9?*>y
zD2*$`c8AClRjjRNOej{!3dI4LpC4eQt*<Sy9hUFk=c1m)%Ab>bzjP!b=PAIfhAX|e
z&5Bg53&de|iI}@Ju_DFk|2zM{FSXy~LfnlRoluKE`#kMNXtqY?ClW2&B6ZR;NF7H8
z!Rk+~@!FPr3>Byt5qz&sy7m&Y5cv1d-lv683~x9&|DLnUcCr@?Qfzn-&`ll>Vubs3
zO+$GC6pgOcykCKZ8wxAFl{OY1I;qD<1~!qAu<<S6IbdOB;ZrKuUsuI%I<|((T7uL(
zI=GrfFSC+QNCB-cmSknn1$I=dbWtI=q#0{B1uK~q?+ZI~;_!9zekj$=HmJd1V}|qc
zU8MB6buq_&;r=7y&C-W*%cMk*Wu3G-dn#gA0(jUR6*t_o?@X?BfWtqZ=GPD+zOWU4
zLg>O2)pb8E^p6d~u}^G8$Q1>jNawSoC;aR`14kOzvbPG}W%^v>GCvwJjn`C|pMS8P
zo@#ruc8jAy+~xDihU40p>~zE%-Lv^YKc@cZN!EUv=~zf}mabFzF$Rkv6(vTwIY5(f
zO3@&Phttbh`p!xclVbq~grB9&J>dS-(G#C*NYvPNUq^eqsOk#>Ia5V|QP~H!#OAN-
ziTj{k(|08oh;t!x$XsmI`n|U3GF0FCI}b)8H7YG}*<ztq$Ac{J=6yrm5&Vo9s6*FM
zo$5y+kjzqNh=ONVpY1y?tYfzqRYnML{`Q%B0D60*{eHZ5i6&OtXHCr~bKbYG#8=zU
zOpTPZETfKIu&!!7gaKEmH1#+BhNncGXKpPxO<ca+&+H74+v>WGqOR!888(Uv*E`4c
zX)d>;l`^KWWQ_E+s0u``fUl?b)ZOHL^ZKl~GyDym&J|hOyd;&Bvj5v@{(IMr4TGMe
z_v@A{71{m-^|Cg#HD|L(!yn&5LR6_bj2H>y3H`=jX>IsCExDm-c(T49gT77Hyo%*D
z+r^clauUYd=_19tRdJzEc_?@{eG=*|t1bE|c;EDjK8{q4Q_^Q*sj2U_9t5eK@u1*#
zC0=8U0xgvK-tbxvAZ9BheQ7t2R7z8_ekkEkw!utt1^KD1FJV^YXV8N+0?9rsVeYJ}
z4RW%5Xm(4rs=&=cTxZ#}st<nT_kYvH-znp9hCh|I0i5`1fYNbqg+S>R0$L?-WIss#
zS_UWG(Uy53+6b)DkcWmfPU~I9j8iYES3|i1h?9QN*DovrQ65~N1j8THeh7=TrtRAX
za>VXz7ZMXCcyVV$Y<+6Y=2JB7=~$&CFi3@zl+*!uw`s94v)MEu?xnAA8m5l+@8K^z
zfYlAb^?qQ8laA!9wRX?}B`UADnFRX(#Cr2Pz9m!z2}xE?5Xh?IZqc;qtcrNXa9?76
z()z~DcCt`~f%}mljQP@oSmZ5QT_pllWa?5aT9vad6#uXvFaH^j%Kw~kx<5he<258B
zlO``zk6;MbB{!Ym4Yb*tdqNxo%%nL@hcDczY9~x#y(&Om5|{xESN;{Myfa$_{PoYP
zHTsFL*pl(LntzFgf4BxoA=+GoN8udUBrLDh&_F#*XW2{gB{=#=TNxh7Mq)$tV`YoX
zAl$HF;vj>9iXyaA=4{sM)PK(%^ZfJ&rk+>^VPcMpEKb3<@u+~GFN||tzp;p}m9kkk
zL#Sg`&Hp(NmIFY0*MRoEM7+4Mn$O==_CN3C-^ar<8ieNmaTou-_Rn+AFz~0TZr`uJ
z|Gz2k->EN`7ISenoG=uQn(&*C<Uap;0sQmIKaT@{!3jD37O~z>X04}Tk*d>qL7$n(
z)8?ox+av!Eq5B7<!#rj@g7^?#QkkEGsH+dR>d7xml%Tm5DI}iRh>zn+_8TsHcVzDs
z$33A_k}&+wSt1nPFpqP%Y@FyHIR2PEVpVTQlp96MW8OQXC5{(I_m?(flo^^{hKz|X
zRr>BRvw=uh54(w1dHL@~E!P6Z;FWxnc9EO#1H-Tbx^^+7$1dOZ2=xCg>z?^TH(R7d
zHubRzXN=w$`NuhD-r34}Smzi`GW}T`_NJZf+>z8KXe!Uia%yNKG%K^XnSd)Am8W&)
zk?|w4GR0Fz>u(u2dkxZ^68_fm6$zwCZ3d8~kP5uKS_>3AGlcCujx%iVSpL4}xiRUK
zxMvhKN7H8YrRul|u9g%6_VNy_=8|p?`ZOib*T2fw<k|4|!$nY9Audn%mX@As8Tz;w
zu4(DomYW0667LQ5GOIHFX9+OE@EK_-lNPWO39wo;)3PqCHutcMmHtj41nC4sg1Ulc
zUD4((#G*FHKO=F{28r7t)aKwW(RpttaDTJH&iO`>y~wQduz5zf$bEZ@dQ1e*EU9!Z
z>gdTRx<&qPYh$D(*Y5H6kLQpspybq;)NXrKW&S5z)HmwRI^RP{+++7vP<v^MS}y^j
z?lCN_zr9-c_f)nKdOP&cqHQP7vEW~bYZ$%%kV?<@Y^l|?0Z8ex($q1Fc_azyTS@ct
z1zT<u)^10=$6FxnND_CkIslsRjo`MEIj<co*yLu2Nn@4@6p9fDtbHMZC$~_}14YDM
z;79A6jj#U}FD`Rl&Q`^Ap^kn1Q6k1yVd=F%uk0b9Y_3_xFhr%-=Nr^;?;!<tVT^D%
ziKk-XTV2!!#$B`&AjX6u-G8z?H$27Ib_7DQH@b5f?RYB2EI4RaA>Briu~y*d@EX9y
zxl#z2w#?2y_|p>nk(OvS^y*~o6$i}Shb5Q!dn1fGGW{Pyqg9D2&O-KX`1ib~^lSx9
zXZOh>7t5w+78FPQ4N6K6lT`MHJ99IQ&qIgP7&UIhzy10sU@kVj)a~^k+F6j{Xh4jZ
zJ^bsURto?<7C<F4Hi6pRSwFOD%C>Sg@khnfcX-^?Xt?Oygr3XjtKLYz%RkE);8t&1
zU<Q=!R_>KzHc0Yb66t93#?Q7<aQn?=QG>Y%rYbLjAp>ZY-oDeXsROR|N9m%f-yfGT
zfiR9aXl6(ccDyejpB#`p>r}OC01A#mhCuFGB4CSJ1H{N#C+0|PS@r^w+qTb)FIHo9
z?JU_;Q}v+y*Mt|C-gUB5BLLjpM3<lxMoGfka`Iw5)UDD<xg*(dUx&vzE_;=85V5oL
z3^2XzxYG-48fc61+djg{Y)zzK0sQ9uQc0GB>N7VDCnBVhb{pnOum{YvYRkTRRaIUZ
ze_Hy1(vQBIKEM0b?1-|+WM-s(N68_zt5N^P`;kw@z8p_!W(*OZ2Dd3sERIIC_&lvQ
zp3pbA11(Zpi)aDXJm1b{Q{cv!itFSjXu!B+`TdslFcr|@rrSJ7VEAS^0Mtn<?*%b*
zc@3%50xSSbffgZi1GGkk0kvRABH#>WmPMTEd%m_LHYQ!%sp>iOrE8?Y)vFnwof1A<
zAsDY{tKh!H2;VdnD9^G{oeF)>ERmzXQm!()%6B>^PQYTDM!6+)&@aFl>eRepQNq3N
zq<sCe-1T)rb_Qywqk<>A=~$<EDF4q>YW<gbx+DJA6I7dfnB17<+>8h--s=s+B)K1@
zDhks_m@i<f-3$Qf`m|O9U?l-^`JI1)G+;8{C9EV>8G%WXz(^UAfMBKCvnEpC0eYa*
zvs6Q)DL_B1eHVjG0ZxF+{!4ErG9G#o&lP|wwWu?i$oMshh8=<)vPAkGW^^A?Xa;_@
zqBC40jhBPXm^Hue!(&3_V-@u3c*GdrTfyF?r+DVseOf>s?Dl-o#H(6tkBJcRTFK%w
z^pzM)exdtt$zJ6`S#ZN&r!_K6HQ}6(M7<IirA(}A!0yt2qvintTvYj)j)mz|42i+f
zcP(KIc{@n%1LUBY^#)NJOz3&<wLYAa$+mw!E=B1(xvFMxb3QJL8R<#FW7-+j0LYM}
z$Xi_{wpBKq)Y<e6e%;xedjO;(%?%a*6;q~?R%np*3BK*_trSYKFZMW?8gHloOg@=(
z#f3Hcvctf;I3Jvy--)ZEuP`c1@NMxY!?~DPur5KdiMKo)jh^*Z2z4vuEEc>tuHSoE
zuzLq%pWllSdY_ee0E#pnm@49Y#;Kpj7H)g;oa@KSDc+mO=)=4i*QvU)#tF>|n%cx>
zb9Pv-!{jrD;R^izzM{JQuGV^4?Ii^J1hwrLs60g^sfn#~co5Be5$uAMSt58c>t>kN
z8_ndEsc&LG4O!!<EPI{B>Dl!*mV&`>GKc1YAMlSYfkuJMVGx34;=%T<_}`eUG_JKy
zjk7r*z3(U}Ce4%Fw`22u(xVx{Gv<#X6NrFEw=g+Ee6k)t%E#_ACtl}oajt(iRIJ9V
zQ{TKH3(F=K@cVvsGT-=@4pujwfpz_QKE{CfM8(q18qj3gK@-mo2%1`>2!<^ee==nZ
zR~?Nl%cPw?aZ&{pIf8cq&jDI$ma}5;TQ^$K3J*Wna{p6r5~}VXqZavX8YQ8}_79&)
z*vb;sUVV<M%RF<fa=ARNZ1f?c%V_BOyu_q*bwL>UNeXEAK4(XKAMrb9d_EP>*~pNs
zs{`}e3?^9>OgmF51u~c@gS*56KF+$$*X!LpSv?!kP~}0=oQ~#!I_&)}rn|*z%vQay
zPG$bk^uJ$gT@jIE@=<aEx-YR8xnBl8?D~zIsQ|@0q6X)80eJ@>ft(fb1q`Izi_u1>
zwg8kgPiorjBuqCdYo_a4>2rs<!rJ-$y@G^nHVki)gkg%7D$fxe_Td&?PAGW4n*z%B
z6)`uI_)QVi!ya#-P1DK^Dd3fG+*68y!5fg4XeS_T(-O$aDT;QzFD<hI#4=W+hBo<-
z9$lO{l%P;4v(S&IQlp)oHXXP-#@L<(e%@>ETYA}7@r^-|5XA~Dg}pQ)t{|?N)VI}0
zd-n>54NzNb8lRjIa&b-jwb58aix9|S%}(W3?N=?lBP7u1_KQ~@%=Xu;2r+O4B7g)Y
z#x0CIF-euN;xM92-{)Y7hLJB1x~Ms{ECM^{ua7Gq-Nn@AZC$4<bCz-V+#fntM=h6p
z64m<1oxi^g>`q%5jbdUFB7UkHEc}flC_P)&jV_^kPzMOIc|5op&uirZia)TvxcW}(
z9&eS7T(XI0sgLODjM@){2q<sW0|g|mg8XL<C?wVcQ`yCX4tN2Pa7%kGYto>yR$n+i
zi-#BTL;}LWN3HSN1PCAo|6~g>niDJxnzVL}5ZI<pzs`kgPxrj4s1pBzF*E7?%l`DX
z!F7;L?L-euXPn8xJXL!65nYKrgaa{3$~i{eC~@d`V6W5l#S9?K2!ARzB>5*yP%%Lu
z?A!CCd&BAUPYs=#{B-$-DCWd|F<iO%&P>FM>t~<TU9gfaCEPxHt3?iNIs6pqovB1;
zY)MS%jntK1!ep2vv9K|!4~^s*I~VVYEA<TMSfq?%k{LO}KBy4?!9fGfbo&nxyZige
zrasP$(vQg<W5`<q5;RGNzrvWAo5UCfaAi)LO5EF=0zK9#T}1KFyMMjX8ID<h9YmZB
zb{?>7;-eZ-{Vo;_z@7~KZ47y=IDu`vTa<FTgXg}lQxU~Io0*I|#^!t4(hKBySUJWF
zv7Ihi{b5gaH@4K6A|0R#&Md<zRqnWD!$Ec*NJE>-=SM=vvYP5aYTm%z*-(#U0?$T(
zt}C{L)Z5qJw4oZrMh7;vifneWL?nR~ZKoIX7)Ee*&ABjmpD-}u`w8d>Z7gPEeywIi
z@>+tckr&Y@L+JR78bA)t-=^aW$N6wvG!JpTij_fo0~H2JpA!4aFKg$0xoP70<CwTF
ztmUN-l!%+PWILZ#T$+sJ%hVjzG|kNwT<KkZ<Dv!t8+lS6vGII}JGbY^6IgO8LwtJn
z-{fjz2@o^7<FElGTs~1uB%Kis#e{j)*Rc=3u&iKgzQut3Khb8}Giuo-Pla0Qi(^*O
z1s;k8_bkL0Ep4xQa}`99Ws$FolNPKflHN&4kcDW+>26OrxU2BvpLKG<UkQgW*@aMR
z@MAm#mUs3(jpPw_14<Ch^tfk$T;pTcCBSbKU5?Xm<_M6BgKO|Iwq(*oj6<2BA~`a}
zRKMpO+qYPyZ1BI@r`$Gw!v4_tLExv`xbAGooby#v)HiW@grP??onmIecG|(07U6e@
zr)bBX$W~72i7QNi(~@``p@$#f`N8D^;&r)&IY&Z@z&xyIWv#?-dXBAoUz3Qt-hBg*
zx0RsIW;_}_qk-aq79W*WrJS%Mk=&-s4J8*f!1lxv+$sKQI5W`q=Nk6X;lmsZwn$iN
zZgyTfcT{+*-AN4t&RBy$CQeoSM)$yNMSfQsS;VM}z*!^JMqsqY+?bo4b{M;nGx0?{
z6i0FsR}`>A-<t<i!BDtg*p%;EzL7)kVKBjx)=5$z0|Qaoj_XycYotvows^!J@9PAv
z`E8jtgkS;dGp7)P8NqhPeV`;zX}lxzXQ@k|2lh(#frOEo&EQN^kyMqA`KCZ?Hf*sZ
z5|9bKF<_`jl`?MxzYRSAxuqvbAu`IYOx?j}80vB&&Cc~JW$vHQs~%E@;#qSL*rPyj
zI%MP%>D3TLt@5elFd)y{REI)jMJ{ZkntVB#Qg(m^kJ+6Crkm4t<I=*q{qLVEoPo_Q
z_ZBS&LWhN(*FpO;fhiu0<Jz7G%QXQkkM4N`VGdhY!+xM|ks^27eEi$@i|yJ<REkLp
zystI+sf-Dh&<USOB7b*~;WRs&h+qred})_euNinoGaRq|3D8lAWJSb1dAHGCtpBK{
zy->h`h*LK7>!mgK3_4z#MVkT|j~DW4VT0%roG`qdHg<W@<wyMoKa=0vnN|PUUQCg<
znGqF8rR^-ynyuaW4^z^gNSOwhdJh&Gj=Kv(H!;0#xU%zo^z;SL=N|%d25^d}Fa_hP
zEr;TPx)tR@s*MJ&M0%}i@1Et;4cJe)0Bo7D=RvT*QJ&MU5|Gkx)9D^pY=p+OEJwgr
zz**BX8YTGgz8X~ko};Z#X3N-Kbx|sH3e$0W>F>q}ocR8}CybBDYgqTk@T=tlQ)ft}
zk?VDxY;@Gi3UWN$h)<9DyUb{Bb1kQ`sZq5dgByN!UJBR&qO34VVs{a#?#;r7fEUkU
zn{iy)ZXi452{v*fr1o7!I}omjW_1Y08KojNK3mN}h*qm0q|2Eg4$Z!xELn$-@R0fo
z6iRtIPNNH3?XG&63-e_MOJvVNR(;};5owjcu2!E&8|(AxDXeI^I_nMdiV@bJdYpG)
zlWp2So~^aX+*5O>+m?jP1a<k-nAGB1v9qv`t3{It@t%eVAEU>sa{Bu$`X0umN1W&6
zb{x=?CuyDLCB;b5TWHO<PYgS#a_qV~&tD0nqOH;+bpSTL#x%nW2J1F?SKeAf6)YCt
z`Z&PWl%8gX2&k&`CI%I2i-lb<HAnU1nKZh=V#=GDUCynD17la#?Kk&(Q%>gQFOPaO
zlD?>1E37duV=stFAUB??#~=M}**u9jD|N0f@F%%586fm-$q&2x9R6M$Ea5ieG9GQr
zJgQaCv$?R*eF{$1)-Aj(8-F<D*MFFGip*)fgXCYpN8E?F;W8xFEp6mFfw7D0vjvt|
zc*i>Yz6~E3KClUu1UJ*!RW;~Y%($o^f0W=wI%1(>@J$xyus&+(ySU(={EGj!M4{wq
zOvY@8(4l8$Kx)dRpz7da;-HkQrgsq?!ZlIsQfordkbD99ucXGWUtX`@A+71YFx4U?
zq*!`Lnu4B@8dlg?oyFaZutYGFTWiA^BxSayjEGlwM;|CYhfE=xgk;S_OEBg@m+cGZ
zupR@))+O*jgYFdbK!NgN^DJiDjl%&+4wP!zw922N9mr;Yyo2diq@|#t6w*U5vr+|U
z7qkePK641#5K*H_orgyi_RP%mtiEyDe2QgI$TY<ON+Vq4C86e&rQzbWAMZ)EJelG&
zN+YAhWxA}vD(vnYi%a3CvRmx=Bu@Nl_1>RO-AVG>Hgg}<msP+~lV8dn+T2zrb&R^V
z8SNa@^fENSCd&73)n<(D@>!?=lKdGlvw*O97wKb^oKgsD3sC{_)3&hUZx`3Q>b@^v
zyE!=S^h{8^X>0P>=(Z=RgwKmb(aDpgSU)2yMcfZ5nn~>vCc<v0e|<zfEHwwcRmi${
zDk1Cve=Qz(eBZ{%hWsZ2tcm@&Te#^^$|2c?Xu0LSvl5g|4wqF55r&9#>iXn`M8#X$
zMCGXoaAr%mc*CII4nC92OEbi6$hr~)$9uhhfIaPxZ`QH2HMfd4EbkNpipDsDU^NIb
z$PT{D36hy`-h{f+l@jBbNR4P%5bdt#I-Bo<BWT<NiDCMm`{lFwl09K$t1qj9qs*37
zG|a1-7+qAbbK8kdu-}U=4B(61a?w;lCYmPi=N#eS#lO>(V{mshO?4dZfD)o1%e?;X
zT%K1t!n;w{=u(0=U_)pYCjA`P5);dqx&{yny3acg_kN_iEvsA>?l`DY5XTG>LS}Eh
z$uIKgwf^|SqThd!vXFA0QnQxXCf8{wTKWWj1Aa(oG0A3jZ|ajPTS1ej?k!}g2@nt8
zQSQ_oE-ybQ5+m`)as}FdnNCaqw7Pe***77(c?L5=@>4&REOOhii}yA7u5kAeDkDEM
zhV05V_`=@i)6E`VZ-;j>a#{rMC>327(Q4BQ4~P~h2f%5g)5!&?!US(#dOcFXLlFu2
z?SDz*W(J@FC0v$2Z9H^sTkFetsy;?27#+?VkLU1|13Go61-vbQF=x)p&}qF0V}D`~
z(}Rj1V}+~6AL8DYOAHf0Wl|t^Gr=Q9QgDt5JUimR3oN$Je1af+wGVt@Pg%V8s-%?&
z5Q>>Oo1NF|_qgu~;pApS#jW|)7`xLrqFvTUydJgJ2UAmUT?3IPd)e$nekFhv8uD=S
zr8E4DelHXfJ*v0@?s%>x7o24mTB8JPWkB}mgf!;hkbV}2Lho$eGYaF1;^raONc@&U
zK^wQ+t;152p|7VYOIur5(|2%BBsShRVf|b~F2*WB9kq>*RCbdYG%ZNPZHTC{JLk&0
z3r8VpyGo5fvLz>Xy?^K-P(coRLJSJA5%3D)SJC1ueKl1NZb-RPAUu#wY&ZEJ)RW@W
ztbXE2g}nHaTHDa3YWS2<j&h%CwmujMGjuIaLTTZ@J@B;f^qAw{3ZA!wM3?H59JkVv
zhkAb^x#r^A2X$!f1l{&{J}et}rEb0<yDGkQ*}TXfMMA|kOIvA$5VFQpk1C$SVb9Rn
zJIX%%+8{%fgsee&y?Rfh;bgHr&vju<64@#PP`Sjry((eZiIPv-VTk)<_|Rd3Rh>_9
zFQ?V4eaR$!FA4a8aGi;HHzia&-R<!RgMjmep;Zo;jfRtN&aYS0Q1UlrL9fSfHGWSm
zA{;<QL_`5Zr&9`duHu)lVM%@1b*OgP6nEEHkjRHV<tekl`57ya*~yGxdGyneR_1Ps
z0b$u+wYbS$l{`c0*OTgzLRIV7m*DH|guZvWILM@w%(CS6l3Tx=U8%A!f$|NX9fi2A
zP02pibQjo^!t=A6MY|Snn^vsZOw}BN*o!z1pIl&WP9PqxhC=k%R}+#xSR(o}Bh;&A
zsCYM~65{+r_V>CMb3Pm$6HSLwIkbJJ!QS`Jrf~W3LKyy8XyL3p30uO(T;A)1zEoif
z>?Ozv-JvQ6yPK;OxXA}s3`dyGRwaMxOK7&~rzxCPpGOyRkYWYRuG&c0#OQDf#0%k4
z1nWX|?Rapd+__TYyfd|vj4Eu50%t8qPo+vT_W6_EcW(FhaVz->+W}n^G>3Bw0tIWz
zYjQSbt)fQUrI8A)I?VwK*v2}+MQK6MZz$aTs`K@YM8nJ9m+;g4VA3guripDGw1COa
z4w8H1QbRP<>HRM+yPELk=#fs<?*(LXV}m0e<$$@3a6!^$D}IER#x^idv*to9B{ZdM
z5`aC?s5wTH9w;G23ONf+TtJ#Bv<@L(%{sDTG;V&0>Hj`^A!qYGg227^;d_$ya&Y)t
zJyiy=MDx*y-vib<j<FJ}=q-DBiEIRNCbZG?T-ZwMNYq52%)Rkj+=5z^M@~CyY7=(f
zdWK$`#k^8{aCEmzke)nJrP|Ly_><@|bwD<EMV-LW3<Y{pDyDLG_NNa;`@5%WV0u|7
z+Z+P?*cP!M9$Zk`vJ-1Ar6r8ICzNhm`cSXk=I9OL3XoD%Z2mSuSfe^pt>`v;7h$=j
z4>xZO+D*tHBQv*-=#p$=dxV+2jyIdiM{R~|?$oxXkf5TelVY~ul||DcQ)7=5<ci7g
zXJ*Pa0F}ljR&=#hu^7m9Dp`_*&He~M{dw}4UKBq6!J>DcxcIm_ea=6$6&4`0HK$QC
zkAkgbw8S9&Rno&AqHZM^Jx7UXGw_$dMu5e0C8}Lw>#z#+OE=mXR<RVfb41gs!Ydz`
zCSYa-GY?(5rhXQ2qveLmOa={jtfWyF(&Zep_D;NZ{yJ>5O7ncPNCms9^(WTo6WV5w
znK)Bu_xrw&6Of5^gCyuJZ+xDQl#Cn64D$H&hC@yfUdYz_zU=9-4c;^kC*Nc``_O~+
zSQV`}SX<w}8dx5tXr-BEo{FwJj8MPHCj7-v+}UL@c$ZA!n##8u>B>8yQHcGsdHo((
zEr3{QXK}UcO7-ecE5yGq)Ot#zflB;79d&|2Q#$#@;{!prL!}xS=j=jTv^6tW(uUp+
zW=;-&t5fJq_en%O4(Lp=JcUeEtR$d1kvwA~v2h?P-KrOs<L1p}GR?1AWZjE$c3vIh
zL)oPM3<-bvY1V=zMHuTemiL5yAv8sJwd@&S<Y`yS9v##&(>G=8k2;=)CT?vI9_V_F
zj*aV;y5X|as*;te%q))#x(pd6We1Glq!hDO+dY-keKQsGXFb2@KA(e*=z5Qe7U4q)
zpch3|4}Er9+dMu8hYb3W+uI6aMmTm$o8*<U({c~N*x>!m>E`l3sS^nc$?#1&D9DPB
zV9ku;R}9Jo(seXGPwQ(vj<Z@VLp0NCRCm^Y)c8GKUC(xOlt7RGjimufRXyJT7h<Pl
z>$%{8zRsiX$cQoAS{}Pj3hWM+3IdB0E(Z>ZA)?Qq8+GvXY>AjV;ew9~S?-7nEfB}E
zHp|EH$NAA7y)EvhhD5AYkdbz?=%>UVz)TqwOC)LZ*%4ggg~YP_WZ&nWsyZdOc&d{u
z+<bHYfO}(3L<OB{eryTKb#94+C2dvznp%LoG0D~dX|8c<>5k}&EzMHh1RW`@gMzwS
z6DV44UQ5L^@_5K-#1(=`yn9?Su@~gw#Im(+c}#o2o-XVj@tY9yG|7WhEs=!qV&7&^
zg3qo}(jb<5y-Uo+XAzSN0o&<={#U;izxXj8Z_f$13pxE<)-iloCb;#Z)F+#FKk*V^
z1xAgBeF2G0^p80MY6%SlVlu_FCMINh#DhOxn3<YyxI^e*!pk?+I^m%C%Oto@zyD^P
z;BXo;ckEGNBv|`XCMlF&m*ess6uo|dF2E)5F9oXDw<XwZOBKhWP}I<CR~Wc$+S<8<
zS10?$!0Gyqw}EI&j!jAhFGf0m9xCux$B7mGZQZg<PbZxp_9IWEkQynF9=~9lD|+aU
zYaUEKB_um)k98P^&r)WD@?L>z3)k%6v?J%<h07O#msY%iaxrv3k}K@+*{43VZ*~}r
z8GDz1y|b!f0~|(9xMK6c84bpzgoflpo8|-toYAV0>TO-S#Mlj0`HRMazp~ny*;{@k
zdxOQyz@MEyz7Q7|sx@{Ga{3qnqWJjg?qLS6Ez4GA1UTw)dY+eyLEcN^!CodY{f2z;
zi!hl=V(Bs04ggOwz8{wgQigyaL@8S#(uZF^lT>sqFt>`hu04KV&)St`!W;o}27oc5
z0j-rQ>d3ijMX~_l3zYFV>NiHrcrMOgGirpjq-VXFuw7^1)~Jn_se<+`QLC8wZIG#S
z{C1Rv?ftf9n`fcb!q)+$2s#*4K~=63^}Sx(Jtefi%nu#0Q!*(dORC#d-@{Ge)uO!F
z!j!7r0Y+-N9|PQdB;VHaq%rfwVMZbIB<H#I8_VJBxJi1Ok_R^LY044=d*4r<z40_^
z;2%3_MMT41(k+N*n@&xgp6(qOD%R%N?YrEwAuquqH@Xn72#J`8?B=`iD$X~^>h=9p
z#+4$XA*QMA8)PiF>2OcRh^MXr=s+sUAlO-sGl-+to_UP2&WbD-wV&dqXp#8%Klt4j
z=KXg<?kNJA`!jY02e>q1Hzi?6yeQK>Ei5zc-_3Y%Ntg8kxMU;|OM@LU&mbxpG07j^
zCwumu{YR3$0h?=nRS~ROK5w2QEV}>QkfscRC|>AC|ANX#PCq+h?15%UczQgLT?ntR
zEWJPduDBD-`y;juWJ|_v&70oRhgIj?g&yW)aGFKod{I&Kl;x>-Src!|eLNwMGNCII
zoTxsoU~civW}D8>nDBOe>}~77$=3Miavq?EW=BjD<AV&&1O7q9B~h)ik7_22Qhs<&
z-+sJ;?flUiZE7vGDX?qn5XD_r<!o{xwn^RQs^{DlIOpt;V&-aCRkm92)_&ra(RN&!
zvMAmAReJp69#HUhmCx#ev$ty>Twcw-M^x%Nu4p*ZPesx?)8L!Z!)TWz+X`NBewfnW
znr0p?%#wCj59>7$a@f_YNT&<f27FTv=YhEQms{xQsxGuI)5v-Tu-=$1&{UZjp01Xv
z+Ati`z8{_|XWdFs-urbc*tXYNL5P`n0<uluO5BVnBHuF)Olg821ein09yZ5zQS+mr
z#b$*RW)FK{9m~RILn{39n_=h0j?P~Tpv0TO{sEqEzp7CkAEtV3lZaeQ8FNLK@~me@
z42jA^n`55R+GGkC7jB&taBq^-Tih5ahd#vDjo95ae0|unjGENZtkEzK2~81%H@%a&
zzka9xFBowk1ZRWQiFx}Lg|!Jw6V1tQM-3wotVn9FZL3vU5f(u`qbMX_XghbVaUd*4
zW%r3_7jw~rLj?(I$10+kx7|N}c{(Ueo_&?t@0WjeMU<$|Ifj2TnelGv!BVuwbBoUn
z9W)}5`>!;QD)<|N>_ABZ{1bCRI1a3+Zppy%N4hC5;3M&>vg!{svc(^G(QU|%fF&|p
zq8cKIBr+i1LO3<H!`4Q2Vr<h#bSyHt#T$TR`Bt2|DJzoqanJ=$Myj^y8YT7fow+@}
zGTbr}LI<}wu@fv*Y)+rHSYUfLeDe$B64HMd<H-+4-&Mp_dnIx-JUFpJGaTWPL+FC-
z?Em`iRRu>W=j)zmmAr$70S0QSltiK874f^4LpaPuL|uh{N?Pw!Oc-;Vk9Tr0QT67(
z^MR{$eRUGi-#UvDB^%IbaMjt^$&!QE>aHYo+|;{TDtV}si9z(xy@G2x1~Yd_&pcfH
zYgG8vuxHA4D3>fK$|5UJ8^~18H!RHwpYFJhycySNfM#R@J|{&fco__|Z!XGk-p3TW
zwz{HPpSW+(M5}wFg^N1n&OO5Q!F3uF^2Z7_vNH9RLCSBXx~B@|B$DU%&F5?IYn$gl
zQ=6}+dCQJW)tdT>A0nlao=?EWqo2AnRq$AhLGNo-?vFSD&|DT&vT@3PWeV}KaXZ0&
zy3V_gp`53^!ui_XuzUUh{Z`2HS-x$Dz<|8Cc@~X2;%R`^SrGY=`9#%ihn<CGW+v!Q
z{&2QG58~^7g1^DZvuVKMqD6v*4wGPzO@M+SeVS0!Z&s%@$$*r$WR=W>HeVngGjt>A
zuy|0L(J{K4{IO9Jjfv$3E3>M1<M1dJy5&WOq4zfFHVz`+iAu%dgIVVVi|y}UIP1e&
z6U=uL97)AnQrir1vjYU9SfmCOIN5ifJ7<em)XDV?LVTVFtR@%3sR)dcUC7K?kZPb;
zjCt+1zNQt8Sgx2YS-L&)NV#79LG0j?o)A|8xt-^BKFIGGtFPgUcuea&Q)sfR9;sLa
zl@#Ti^u4l|Q6<IE)`Tt%vU!)-r26!ityCr9<?s;1-Q`Z2qyoLvM%MDI_XfMwvL(AN
zerc9|E^{HiH%Vd!k}YqEJ{CSM)@K{f%;&M*5VZI{U#BwR;c`o5@+W)Ob0*toReGzZ
zUE<}cTuB0D-GdF=l{Kfip$_|+&~uZ3l*-dOeNCeYuca55H6b8qO4aY*`VH;&v4dqi
z<)^KW43>&&f~oj$ND>na;B@e7i!&B*EqrdXNIx9jg)4#XEVQ_nhoer{KMgw<o;5Oe
z!aKt_N~<PJ$HfmEq*`j))Cd%(JU(_;)v}Su7BHgk`@JSytg-;j;V1L|1aTOe+)cgs
zO!To&o|bdpNviuhw~n9Dbd4G63k|tUk=bNWoS}pd1GDCg*toy<c{@jK+;L)Tn)j$y
z)rj(Sf621Cc#3$h_3zqPmyUxzPQ_ZAp-zXw?#Kt{?iGPrswWR;Ye)GHa@)WAf64{-
zm$<G8YLm13FUmTWP1}8&J#<q(#fg!-yl&=RO+5YxT8;6j=)1XIkN%Y<73EAq0411i
zXgfZQ>S=Mj-tS4P^om-t%6a9d1>kOnR)`V*r8-CC&u>)RNM{CRCoy9Z*o%drvb?M7
zeQH&D=zDVN_8q$+CbA7Gk$we5Nv3B5A%okhQ${gaji@0P<ui?+t+yPR77hrVjU)Wk
zw#i}Yp=*o`gyTPBf@@CL50g$*bTa4D%387qcZxO>o@M87IqV?q!rTh`-1?&VWYd;<
z9wfA>MFxb+s8!X)9`%$Emvaky|2N+EZ4{l0(;ccwT%QN#ra~LNvt=3E=q6Y^Rxu&|
zX;9W}@-p(14|7H6pLPQ6W%))1JN3(L(m*#wFO-pBGK(8Qs1Z^{dRCS#m~yqODrmmc
zp}UpR{M~|`hnqy)nRD%!haHDetIPOu4})3)4QP|c*pX?ZiQnJS!hm$?=IhwOS8nUx
z+W$xDA?{hqG9{*Q$2CY_j8#n$lI{Oyjs*1M6tt#wA+O-F1K;oo+qt(}46wREM(buA
zXo7_byghrr+OkaW6LawlWk)C(s1(PtIw(m?a=JF&!3!-(dYgk!L8{6vo4Fc!im(lN
zD-&m`V-3i{{&TbpBWbL!y!xUpQqq))b#Lak^n%?sA>CVF6sPTxWbaFuBb#ls7UMPk
zJRS^jxBHA^3Ydq!Ffx+6A1XHC2|iC=;gQauknWCuZJf^k+5c^AL`!wr*6IJ!<{hIT
z6j8t#+T={#xN*9D-(p+Kz&g$PW*gE?NH7s`=x`aXeB6w8UGT-2Q1HCtQ|H2l^`Q37
z^4{;T#kK3E@jTIcvNlcl^_hITZ_K(wUZ2qZ1Ht`6IU*LV(LMZ<aYTa2pS5`%3o{P3
zOs*@wD$8yf*ds3)3h98WSQzHb!`*i41tre(^e~k<Ap~1vjkJBu*E5f3%h;RDdgwn_
z<Q0T4%U>ke8uG{W8x33J(rZV{)X)&!MnLmv;98T?_u`C>tN`JVS9etYKYv9EA!g>0
zVExczw<6K+a=kOnV#CQED{=JV2J?;h-$Td;QB6lsbpGEk`9EZ(b|S`*Y2{!N_~pfh
z!C$)azlln?77%l+rRgy!Nh)co`M&?-o~2i}+WzS&H&fc*Wy61;NQNBbfa)|nRUoqC
zGuwk}InLQ+^H5~Bf$UaY|I(88unkqaq|C`nssDX*z(z`qm=cvdZ51{kz`JKm9Ak+a
zY|*|lcUs3H(rh3SA=g$&o7Cp$>22P&La`TH+gYr&SG+eVc@63LA2G~diChIn5VKx7
z<CRfYGwIv?c#?(Y!L_{&`+l3d)Uj_j-+T|gY~6Dk-F<)gkavw#E0v*@T{F~1+3mrT
z^B*>J+s<g}b;fr7n}EgqPW~NOC`&%-uKfAY47Jef3~+FMiQytsxgH}KjKZtbU&6v)
z7{_SglSv+5UnJ3d>MPv4$=K83l06V<5>ZX56*a7}{+advyI?GO0N3b|TZqe2XYiPp
zG2I(5MH9hPvP&nklZ3ensvd#61BM8h>C<5u-dkxmGm`5+DU$djeQZj-P$P3;@kIN4
z0hZFz%{I5Q{-i$Kms+mBS@!X&FY6!bJM~g#WjGta9h-M#CT}P5|MTuQ-U?%qf;Q#1
z<n2jWGn=@6LWdDc%f|lDM<>GJ|2gB<uNdO@!7W2QODs`Y{PbcD*|xXcJmZ%ehBsD!
zF)56kw{+~awJ-)&434cBzYDdMG>?=@)S0#!?l~RFNz_TQ843e$KO%2@|0nKS9df_y
z6cIoA2LpL-lZw<NAu2JT=v(}BT1tnV*a7B#8hF%G9D3XY+i?Ua>l|onGc0}aZ;ND_
zF96^HGb*IY)MweF>?Av@?Rx6*c`j#;h(q!DzBkAxB6IG4=FpEXW7*Kkt6P9=p*4o)
zEbNa&t-An}rl{MThlQcaMgdU#SdqhilRD~F_}BICU$7WPLkn|3&@3=xAidIG!E{tm
zQb6V2qHg`}XRqjd9dfu`YTJ=mZ4CdX#7%#k7V3iumQ7!xKvuQY`iS{!P);%U+wxEK
z$+37{JK2Qkwq%g9#!hvP2PO{(Ek?HVcw}Wc$=(h~74j3p@TJuaZR`1>!xlZ-xt_5<
zFV0@H`Q2R1FIlOo_8WKSq-|cP4D;{eyBj$53Y+bg0JxD5U}NJ8PQXB6i5N$er*cq=
z;T%;yGn{B*aUy90K*B8|v0Y_y&><&XQVneU5(#;$($9baY5+R0%KtGY3QOM+1#B^T
z_kUUV8uvi&t!{DkfMlXIQh&qVWC0XF(VOiL7oKw-D^hsy;k{Q{`lFa&bvsw!mA8gc
z?SS`^>jA(c<$;d<VQW1ZfJMr`A_G8xmW-(rK}E8alQfY-j7<wzpREgupUqQVIgG|K
z!(??GTW@!V><Ekv-T-awqDjw<AEA7u@Gkx|YzKmok)E21ZS(!O#+ezP#ZSFe?J^As
zw>N)HAZXgLJ5tEdA4w0|-x1HkBanwYl`}(<C)NG76~JDjIgo8t70qGKybfTX&zw40
z<0#?6EJLs9@6KY{uV%ZB+tn)~*N`uHNv)qODuw)2K`?9Y9{zSARgW$Wf-0AJu)=xG
z(U@)$Y26K^*O2epx>Nym(sf_*`1CL4HS0Qkv__HcgRxbtJ8k8&YoI@A^Ev7nIMR2U
zeT6*wo?keG0a@%trfo_;w<Fe*7cK#B6%M2?##RIbdwd0iCgh&A^7#%HFhY{+48^?m
zfDuqP={E0^l*ga`!W`m{aX~s8t85s>kb*u(YuQOaap9j^4CWEhX^nX4Z?-`E;A~Y+
zW=isE%}c~0ML16kNX;VzXdGO~Tj&dZvg95{a~dc7MUeeOd)*jM8b5f^?rL@?QCIqE
z&HM~xZ300nr^3HhpY3-ir3CCH-!3=^1ic%Vt1|gr+B@?O6apH>_>wM{bn|YQu<+;A
zZdK@x9IOT1@#)r`dm+ohz=4a(uEU>+vFuBp1Y<F6_D@UM6dC?-AHoK@^MIq}0zhvy
z-WCP#4UImOPKfvxnnVBlbDu-uhc8PwDhid(0z7i#H-HU^Fi>}=R-EM{y;4pT$~yx@
znA)K2P=mv7%R2p@nof%r5jJeT?#50{XVgMcO@V|bL44j{`MHoj7#lQ0s00YkAibub
zYK8Fz68&wGT&fq*%^k48RQEohbq*0gocMu)ohpi3B#!(<gF&8=*s~A=6$8OgJhC49
zi=Dj~$nHfEgyccG2fzqS)GZ4aSteuP+F6_8Rw|!OH-%gPqx;XTNz#-S_6i}^gxh8Z
z5Nuq-lR|Mw8ib;&YZYzlU5FHV9r%P-8%&WhvXqF;Xsid2ds25{#`Zhbb~RZE*AbP%
zZqNnaez%5UZ*HoKEgIR~h|?L$xcbf_VoR{k@BzlBCJ`8cMIe6ZAAk8~OrAQZ-t<}J
zlvO^~OE4F60}tSaYGtHFQB?!2n|1#a9@J?Qazq#P@;JY!p++xJ+SXI>z&`=UM!bn9
z2o%!wKE^imBC4ShX7G+5r*2&D3*pZ#pC(ZNs^3py99FH`F}{q7v%d7GR+Bu+Q{`FM
zBer*c%-L9Sza7JNyx76GX7wH%`xrPa(^ycYdz+%pB7HVZ5()Y0P`?NsqU!YMQ5Diq
zrg(izN$GgM{x9bjL{Fnz(!;reQZ#xTk^u|Wpxc^r^e}l1#%2m`vA8r0rfSv(f^1&{
zOnpr&gDIes=0sFu7aIQevVr9hu*P7210!dpO(#QBsvUnN^~nVj`QN@y!$$bpAYX9X
z(iIRz>CLk`D)kyV4?e|V?oSrWfOpn2<HoP!Na2rN+&#WRzYp$y1X@clym~HZeIB+v
z=Q3t{?bBCnmbS!)o$vVybe44Y>wGJ2feoMXmu&*Bf`J11P=c7p9-w;Qyo-7<HWpa>
zRWLFo(dF@xD?)?acg^2T#Lh$yx^YOrK1iLjYHrYne!$H&$=3MSS0~w>op(4l7?ZMV
zr-us!CC{r^IJ)z4QeVsNV34xU>^_BML(h9L=GxG7jbMxmY_GZ;!z(1y*j0J}$$hi-
z8DNr1?Je>>%71}-A~%7_B3dNnsPzMyAYMj;#U04yK{=*b7#?VvYViyv3p&@MuQJO0
z((1I{PfCNtEy==n?~CUz&4hRxN3P)v+YHWP*eLTAeOEiigZOqzL!<E;V(;fc)Vo>q
zmrHAxm<+aR)o-V>ocjwc1$LKN{x-f{sU|LO8_z!G=Xj}P{+GxFn14*)AoLI!%>_rK
z*mBPv#$ahfr2$AAph$Z$rb5e|s=jZ*Jzb;)AfIO9ARcTLWUOG{1D?w-JN9f!6I|%A
zL>x+U@k5~~yc{BvwxYoq{;j^{-x?~mzWW&ziOQnWbqRtdo=)C^*&e3%1}K=+-c+CV
zd@*o!dJS(y=BZ+_t(i|XLq1|IPZD6Oy2Tn6gxp`cAb4q<;lBXz+iitp7^Aq42A_>$
zp|Mm|*x$hjL|i`T6Ez%YwSIgW*#~|L8?c4g%#$_lkj&e7UOQJMPjrImR8K)p%AhW=
zrpI%>A}7H!75G+{)t%H5I&5uIT#g1z<5_MT^xT8qb;76@L)(6CxS6<C<f|_uqFOWq
zr}-mi72#8tKdSjbvxiueki0JeA8y8FZeGb2Hnk|Qr@UM@yv5iSSHl{59mp>EwHk1&
zRrF0!;DprM(2B22J&xNB^{ndevb~crD>0_$)GGjUm~&Eb`=6yO<7?tDI@>FLX7CJH
zD|>nxNmGS}la8)XaE0~GzU^+u{ZnazEOeiq^AR-eqF=ScS`PlHwUFw|+R~dU#e-fv
z)SfASTDoG;Pl|9eFYW5G7ES7nu-(4vI(>DQf+9{4C!6xL<%uzaLXCcAZ41Ei4%cnF
z6mczdIZIQ;YyUh3AnwZ3M&q~sC7i{AxD12im`~vMaFWs5S{9#=C3p;dKY_BLN%kDD
z5`A@TVs?hrjSFgkA4jQB<AO0!7u2HIXJlssEX??u)uJ#HZoadZHaWN)H^9BZc5W}i
zE!qhwM)f+C$`)uu-|#5qKYeTOv!UDV>Wk($A%K9J<B|;)1B91ru-+Sg`_ObNDzW+K
zVa<&7NDKOXrq`2Tx~{>}><IG*BMHus%Kh}Tax6T$C{U~OX5H?3x}F#UvUwHj3LrIu
zxnSF(*$T;(Gn()t_2V+mEl(aL{owB`R|Xcz{`>uJ@4Nj4Z-U0rx%)bO>jLy);B0dD
z3qXD|-42KFQkV?JSmPTD82Gh2{;8|pS>NTHWrsEPnz#ip1o-Raz}SO7e=>IVB<`0a
z8{?6JZ2<*YTNRnBZy+f_Ebg28YR3Y-1z2C0dMKYWA$|}46{w(=hj3Ow9e{|Y0u^hK
z>S5j)5ej)WVJsr+0W4Vg_O=>!f3iy#PXeMX!r|**q<&R_s_=F*qyrNf)j~80Grqeq
zVr?WO9|xV<JlpC=#5YjsSVgwWvn*;;8L@Pi_|d%cQ=6UR@*<xf@QEQ2Jk&tM^iwP|
zL2UFN0L`yo2Eqy~z?U#57l7FLqL^w<b_#bYF78dWoeHc(lE$;^2_m<#x0Xyd2zRk%
zm!6I{f9AI4T8;AaWSeQh!I$EavzYL%NOnuPmYN5~?6VAL86U*2l+!Y&+zIlu|M(5W
z-ZHJ+P~@kDQBVXKi<o?bk?Ta}Qa2HdZea3y5>Gs{w&~EaIqB%u*n*dW!ql(|U1jEe
z(HX!<su1@;x&u~ssVyD`CsqUlCY(Dqxh;Zi^&tBMvshv(=cQfi*#}`)BfBT{g6MlK
z$Fj(7K;mUZ2<nm5*vzYI``+YTL{Y1&$4KO)3gh9U1UxRQVoTpSj(wWA?f<FAlfTRN
zMr=Y)y45=pAJH*@75;lI8m6srS`i09@oyY5ORI6(hEAbss1CqInBWBkQhDlFF4?aQ
zf4D30+hWymGyN5Vwa$^;3*GIBRk$YKDDEZXc$(&XBa*%EM#B(sL)An>WC}ZqGT_ba
zIY-1{Y*Ml2s$YZJq1aR_j>7!%clW<k9@Z*Ivkx6f01h!1YRTREVLwZxD9>{}B2<V$
zE#?kY9($eRh2@SA>q5Cy`*c3rY55{nuV#Z1DZQD?Ym5sbh{H>e-YB3dt$5tLXDFiN
zlX)AF(8M#5RA~lsy5k5r=wI){d$>t)t{DL967$2Abi($erJD6l{js5nB3mP?dJdpj
zl(j-IY8yNvzAwmlO%4$)gz5R_dRv0|d)Tv&fJ8U>(x=?#v^{ur`p{9o1u!pT_w5Cj
zNi!`GApf%3DE_o|ZjSzKhhPgL@vUf(G>YFrUmU#*C{U;t4wpf1yIq9sOiZQ)ptmUU
zAOGq?%L?RH(6!7QA0AS+gy5UY^WO@ye)ss<M>?!AO}U>{w>HJ837%2w+U%tq@|S7p
zk?a0wJ+?uXs)S>QanJjPvXEXVUht?sDhewS_--ircvJ5}QVairg^N87UpK3~)nkp#
zU6buhr;eRzx-F~r!`A$!#^pyXdNtSIDC$y`K$3co;w1TT;ZSH$tzTiNVr5^p?q!fz
zoCge<Yf>`RH=M7c8nRXiU*BeY1vGe+X$R&e5$G4S<y8JY0~J3U;phtF)H^fVK_?m7
zCuil#%;Wsi2M%4l(zWKjfe8W|QbUYyPR6XX$Bo<=Dx_VWR3<d;AF?+WyWrinesy?T
z?^o4gF+ZWkF;KZYSYP(-4(Kg>0oci7M56}D#Fpy!iPe_-36cER$NkFbVNy6`A;a1k
z;kc*t)Rwba$him!I|iujF#H9mcT@YlS<`g#E%S#*MrGM5^^LGXPPbXgXMtbW?G^)5
z$U)l}@w0Aw`EUiYcbj;fh2G@*Hkya!0<D+vatMz(_y>&c*~T*BEndr7;?@ve9JD~N
zGMKs!(df`Q!J)@FH_&buE!#x!zJ;S3HzTD{-=d5H&aS-^E_&l8tr`)=vCx}7b@mGr
z6t%{2i@w`FXi4jhUE`l)<5jR#kNmm*hWoJDPenQ8^KDv~d2{QN^TVgn`LlxqX%T=%
z{LXl5`a33<V9rle!_>2#)4Z^*Toy%?EZ;V}E0gSUoG*}V5X5vE99nLotMuweCvO%l
zf&yuDk(N|1z+Ap?8+30f@z^F`L8O)F_6gGU!i3Iy==hDO<zw;D`$|B}x^|k1I`3Vk
zUsor!44SX|B)W<Oe@Ld8b=GCcCEJf@ByaAsN~ZVRw!L6zcHuqeS1NZZEOxB;>TEjQ
zA1R6~WXO~|HcL6H>>lkie7*U-0qX<0;okdR<MNGxAAK~ukwb@_l1p(*j;Vb!x-P?_
z4qpyrx~1ct1(YxhGEj&1U;6YK?OH9QL>$9E#{5P7_%5!jSY<?a@JxinfW0hLwdc*1
zTabS>d-iod=|H_YDBi<nxBjFp^eL7QpFDCKNXz7r{pDh$W-d}W_f{X7#nXa3>d$mA
z8Tg6_+`8Me0GAD8G-;PNiolPBE?|Z2g!XmV5rlD(5oi}xw5|8ro9I4xr%;}iq(UfR
z9V+6<a_n5e(ngVr(x05_triLvCtVxLP_cI%@yd$vJivY8GefvWz+&L{jS>A#UosQO
zhQ%S9b7%?A;?1_4Hr5r>{iAbg5kgT=<(Z#T1~S-YcZOc3IrWKU4fCu0mb3l!73{zA
zggz{`l45_nZNy2rDPEDiRrq?gYnti=jj%}<uV`_*&Sp9x)Wu$eY<kGdYMk)sFzYUO
zP`TJ`k)Q;7F`i<XZ_wPdYNqLl$66Q1HE#V4k*=ijUVZ+S60;~roA(>3Znn3<->$$z
z=veoZE#`i3f^=Z7Y0=x=lp6li=nz-ibgSJIL8bjqv6sE8mVcT7-?sH0(P2H;ZIG5u
z>+RH(ExtPUA+z@Cvf^sC-9GV+f^QjRJNwCSqeqS>D3aC%+KH_)2`Js~4#U*Vua~3x
z9*eEKx(8pc^`<BE#@`<XDqIapAyc>cS=BbWU1~HK@A8TFT*yY63&qU)I5ClP|IP~i
z;NFEU@0U`es!(m{bDI<Wh2cYlFax6Rnb;7)cS+jn!Befq^HG5qVb-vRSW7=DX1)u(
zgqr5M6qDJfxQKkXdh6e_^l?w}>d<M0Hr{|aR|BS3gJz))t_|3eln86!X@;i88cV{6
z7L?hW7Rp+Wbeta2FIYtFmc-R_&ph#cp`A!%Z7Rb)VXvDHesdXBANJ=OWO+<ur+9u(
zuwg%YIzey?RH6sYmZiTjecLKi$iX+#LG5WOUg7eEG-ED}Ln0$j37yV4b?oX;&v$2%
z^YZ%%-*iKY`|l4p+Kr2>e4Ixk)mT-w;6P%kP0k<5L{&fjKd#<7EUM^V``$AHLpOqy
zAP7<e2m?ru3ZjIdARU8rNh2fSAR;Q#-AE(dAT`q64bmY<cZtvDob!91^Su9Z!NtDT
zUVE)?-Jg3t!}e$PThk4VYJ2pk8#`9icZcRCUpo0rb^^Nfx0U0`yDM7h5Q%}XhI3E-
zl%xkQuC-t<2qf7jsaB3aTbP@<j5=I19os+t1eYeGYuM<wYc7(9f+5Z2t+?_ko2k!j
zfHsqmV}Bf*zAR(@{sMmT1daP_NiVAGIlL3gGSI2j1)ES^n7scV7C=<PVfi3llST67
z>J(eQVM?j3OLsvP?Ht-YgbbN(D%2Oub5|&UO(=)c?$MVyasMETi2NjVt%aIy$a2>>
zdCDH3s3O>CT8ZT&t`as^3afe`UHkaW6Cm)%WMw5#vl({Yt(Ica&MrVNe?<s217rr%
z%hwe={Am5$_kNLhll_fLig=^{;f*S$XTDS!eq*c~SUl{nTuVN4MZ6P?d|`PU{EJpi
z;`i5`H&9F2sV)j+ZOC;DRSIe#of)=+m%|@V4pBmMzJ?6e&|9KuE%63iyzgTlSF{J|
zbD_o%Ke0VTk1A}CMvtA7zm;1-aC)KgRO|&MCi2;0*@@1WoA2E&P`Xvs)-80J+t!dn
ze#bJQ{=sh9n+7b9!NK4B*jIvgP52qiCEvD*BtIv;hyMIcbn9PiyWPvLb<gs^&a)8N
zb!EGoZJ7qtRYEFf3^J^r6OBzByEbjiR4dtmp!>`+YrnpG-#FaX^C_Bb2q+w;U<RX*
zoL1s{ZC?e{`4iI%wn+)=PCqzB-%StXnSA@&pr>rN>s1M>MPUD(MmG#vUg%a=zR01H
z)A_J9tdI1E<>U6VYyX>!l#>q3**a-`mR@_?F2x<)oxUG`5+kQ^3WjI;`hb5ySm85y
zf-Rr;F9j^^D80h*$KmjDnysAjpknVSQq=FbH@D{Z2ixkN5DGO(+f+>v30VZB%nUvE
zvX79VF`6F#NK{KvZery71Rc5sNv-g%R56+gxg>q)`$){LtXDiR$!m=Fcqmo#rv1P(
zxe484MHaxyx+K9GHg#U96OV|j+J}W~ruuqX*3zqCfEP{^Y%9+N#hx-OKLDN_S<plU
z)>AeNuTE?|Ih#6jC|RNFUC&N3>LXGM0KEH}AQ{KKDPs0-pVDC1yicAo91;!TjX}2Z
z#oKOLL#l`0%rc=8_<~x;El7G8&17a=rV~o*J70U!U6<RVB=aJKHoCSkd(rj}$i9@a
z@(|~O^%D*i7@}CZNog$eJ|hhp4`o8AYA?c1DlaxBFi7X|#TOk3$p_1r^*3GH62B>j
zU7`1Js5zER;w-b7>Xk2zLfDZ`I?Eqjua}En?=x{zJSNC<Y@t$&q>@N)SHCxuwOY5k
z<Wk}S7vkq<vrrZ*B)u;BuS+jC|2A~I!tb?w#djb5vSGtkS>k-eiAS!ur`W`!;btI&
zK{{yyR+gqwV`*brMH~oU4-q=0kQT}t383QISQ4i*b>{C_7BEe*YLoU3zDGIpC?6@l
z`;8`5&%-T4&O}4bGC-Ng(e`=9E~$v$>lAC!kK#;9#_buGhv_tUPl((f6R1!$Q6Aa6
zaqmJ1a6Fspe<(4yqAZg+URa9;iNRz>zxQw+3E!Sgd27Ry{13W5-F9wJ8pT-+0G{t(
zwiepBWc{v35>4PWNe>g*mBjRwE%fcVjFAKAEqDa6JfsSKLDPhIz=$dpTX5T>YqwUL
z`B82<udKt0i&7mJE9bM<@_aR&;k58hfd39jXinnI=XShJkh3PA5^uX8Y3zd@k=oQ`
z)IF*0HsBJ+?a41)Md(c!I$OD5?K$ysd_+SxvV^72LDIx_Qe-8f%IA^HguGiA9A%%n
zRaIB@i^~Flxs?6uim2q<D*ZP$eV;KlC!q9gM4lw9aoVm{HJ77Q;omo(4yy6u4xr&j
zUYYbSaq~=Z?~-%EKeFpFqxy!B*Ja*^ymc2GEa;?O_mHEPT@ijMgS#{1!UEpc2#LYq
z$8}bljGTK}Vvl2}OedyLmN_>dUkDvLcSYd!IEPyi9jE7{k0T@QS?)%5|C6@x`j~Nd
z0>9_JX$Km8BZ>9NNX%f%)fCbDybsQQIVAZU#!Y{Jl4j6xE9LmOwKhU>T9!l^LzqPE
z*MnPEul4{+yE2D|1_#NO$T~KD1KN-E+5>JtqjyrqYC{9Qtv>eMyJ0N3NPY6eXqyR6
zSjPXZO;b^s;H#xOdF)MVC()<Jx=E3SmL)c>;n>n$*Sx|mcaZXpzkB6#Ia_*41I@Xt
zjBpye2RobK?x!9n!~BW7ph@aRopAo?x*<>S$LPDK6gdkMcK3!HID^zxKfjZ6C4s-u
z@C7^-o!`0TtmVP!0^sFOn*<=LG|)?{c3fyBu?oaJ_Q}>0rctd)e0#j#;cz-<XVTzF
zI?}t?sEa%`uyzfYZV?QGQw+3TmEpG>%6j4u6gRoLTEt3Qr<iv;;1Yt;^OlGJhP!?k
zbb=u=y;Vy|U-m;#s5mM_!6KqZ(kT~;C+=|wHy7gH8R`62_J$SfenWv3CobblNo|AG
zd`QTW@g|Khhg&t1ka&VpUV+y0r@;F(HZMALP4(w^^0W%_8E+`p5xxV^_1pE{2h$0v
z&jfZj1@WKEt2obD>swg%PyXH6+|2iAFgJHIPJw=?lwX`zOOQgidvOvhDC-RkezZxC
z^8aX*fS;j3{#$AnGC_AMk|qq2Y9mH%H9l)|H!j{v4l<hl3Yd#^nz^5#_FJ3OhxEw^
zSp*R=d^{q}+tUU6dS2&ZGwxWA*)5N}gYI;cApFMcC|?BCNnGb%mwYXMeo(oRu70?h
zcTqGh58;bJV-(g?z12NN)z5+Mqf*L@L$3}-1X<O`GJSE4FA>7k!)(^1bew!-d_e(^
zmHZw?sN0_s7Y#wCkT&}Unm-nK93auC_+VW9_Al)|Ty;mr^1=_SdJ_FW)@`_5*xD1u
zuI-v&vK=JL>2S&JoSjJ6_rF3+7Hmv_{Ls+phHE52%1d^sq#Q@Hv~T0Zwz!qM4#K#=
zV4@H+4pnIkeE!Ey9Wj5aQ$c>Pq_A5KY2{%S+4*n9kZyB`O=j-icuhz8vi{1rM8n9h
zw4B}aP08ieQqMv!7?ds4&li3bX?%Co!w9yb&{^ZtaQPHhm8}Z#!19RUaEXwT6o;hs
z4-B;E=hK8JkqF=gS*rJ3!^=6DSG*>v6l@n_fE4cK^lgecb6r!M*HhUkco+FxS&9%Y
zTkM7B9pkxrA%L*~Q1ElVWXiYM=>hds-Bn5+@WQ>73pi>ot$w}6rvK7gyICscqq|-L
zmUV?g@Pvg#;>2J=_ny=mW?e){xBMlx^Z`VIn_@oCo9nJU>wJI4!^{1M%6(6A^gowv
zsAK7asmF3y?P(>W4S$u9K<VYr6kDT9RL9>!88U&m+^Q&TBWoj{rpUMIx4gI$8s2-!
z+;w5}=3+k$)qZ(PLExw)8n@5>U+?(s^F3n6I_5j}tW_Tgi-$X`NCSTvSY!3NYg^il
z7s?p!zg)7R%;d4t&vk{r6oEMDhkthUMM_(Z5L??NJpC~=lJog)F#LIQyO=6Ro-gbW
zna^ll*`mTtYNRAfVtYy)!l)vrxjfRNMwCZ>NnFuVYnhq9OmvzjVm^e4H9~Iju}m=p
zHNJI2c-h|Rt)#~A3^y%C3NQ3iER;MbIJhT{^3LHbo>4;8niN|Z0=@jI!s<$$#jVl$
zW(bbn{A0hi!Hb<=^lh7J)_1+-rf$pGM>~wjSi=&KIYY<ZF>#OW$=UerD!fBwQ@Ie<
zr>nic=SR^u&~)0&{h35Lu+>xEJwii0l-Ze4#jgg-y~LP{QR014^)a!x+jW`8Z8H6P
zYUC!!z3^j$*rBYby4`2@&^W`XVVkSIC|%>n<U^y;+L%zffk1J4nHSHbZU2!tbbXP-
z#&ib!pi;b?EL*FJ*!Z@4x9~yaVcY<)i9EI#=2j;4IILLK)<F2K=t3FzwdE35;wH7<
zi>Dg|L0tTyjGc<<*;G~})*jXnW?yBTO7k$|Q_rW?PK%YC`9hq`SHAOnMRmgBU$P!g
zlGz|dhg#uPuJ<#2`S<9xvMN9D?9tz~6MgnM`zJx{)<-KPP4ArU{n;2t&g~)Q>3A*u
zW(1j_+l(HxC=#zc0n4wBM>$vxeQF0vV^`@KYJa)UAq<`OI2o94q$-dgRFpFcAfGZR
zG+99Qjzs>>c-cNnjDs%Y=s~!}*(@{U8CLV+@qsSO{M%r`c)PVG+VI!bOEU*`%PV!9
z&U2|KrVI*h;=t%8ScSQxkV{(+sdG1wmSMQkE^`?QgKj1ez1x3jfvR!wkP?m<S2@i+
zc0h^vbhKj@#;Mfc)E+!13BxWyf^NzZ->&jWc-#zW5y@mB4@hL`qqUUR$4_jC>cXiz
zjK}}{<s9X<8bQ1ocw&Ranx`9<=8An<sjCV9E}Q{@L}OA=$uCpH+YOV8L_aa^f_{dA
z|5P5FGvF0hjh<qRw&bI$_H#s%ZWujZN5_cE+WOcK<>ycjZ~^{Ee}Inc&M>e=pjz76
zyy-cv;~kWbFRGmRD|2g^3Q{Zv6jeqv=x-@KTbf+k{{cHLDi7a$<?Dj6&O6g4pz}AR
zHP`qA1fy8lW)riIeLMZ@;(u-^54~pK=qKT_cfOa$ITzJr0Qs$b%-b3884t}{#~{U4
zCGju1Fi@*9v$T881zq7?jdU~nemi7UOn)jfi8eT`1@{x<Cd8piOuayIS`?jm7#7?`
zgcRB0{>#_eiWO2!Us%iiESzPsUyc5&J)GZfOH?;S9V<?Y5IoK69mor742h$gT;wM!
z3}LWViIx{&q+*fRO{x<r*w1@D+u9pJI#Ielf%HL^Gd^X!L+0v|UR%B1NWBpCZKOGT
zWS#G)X_6ws_r_Cb1BX2eo0XKOdk&pb$r+-|d5YBDpMhn{Lg};cC`II#qF!?mecBsl
zsfIkq1;7^Wh+wrEw<ocd7(uX!TI-1uS*)_c8Z3WdwN^=((kTP1Y6Y+~srcd6O$B?n
z@uASlK{o7`-~qvzZgt0S=yBQMJ%D?*1BKyXkCe0hu*5+9k=dV5{$nI?F0^9xnbaWG
zCQ`a%42_b_+=7R<ii@x%*0na*manWg>~8ctv_9!<|NF3fd}BC-Kh6bcjZ~ba!Auvo
zrTt8Q_58MdnL>(Pd)S-r9T^$A!TVuvL>u>2>Y}$})~=7rAtiJ&L))Lf3a|_-MGvp}
zUK8EWHp*%*1Xd&{F{SkPCejMuOMpao)Ov&(Jgr_mO~ula{JK=xfyqhVDpo{n-J-OB
zB<Fgje$}Ghi+qsK1!vF^*2h<Y>LTNDoY*afApR#>*!b4>K+Rg6_CTZ(Q_k?S3i(rf
zN(8up$7O8~5b>~$-Sry$FUZ`}N14os%*klaQ^?K9hp<ZAw;-ulwkJ%+J_eHuPvffH
znn_+*Sl?vcEbEum%}w6~xE-j0%1IR?9#Wm}D=~%A9khTYv8l-l*vm{HV4ZS0oBXXL
z=^;-y`?-163q27qd<h*gQ)J429lOBuC{DKrllj;PxrD2H8(HZSy5qI;*;VP*Hi?EA
z>1A#5J((FBcf0C;8n>+T^cT8uZGWNpGBGKpsug%f<U}JDH(fF}O!2SA0&}y;@9`c}
z3GhV0cPpTgdCmhjUotIil%3Z_qY%F1F?d$=zRR{v^-Kl#9L-B^l@aTyZ{cs<DYgqG
zdjd0~BXs%Mrs>ztb~Tceuul+;)fsPs2CK>LnK81Wl+UqTySYJhZ4@_fc*vMP7Q1*J
zP&2HAqZJwa3M<vWE6S#V2RuMC2o7;KLN_u}rq8gu2$^oup1*!-*!|<_*Zt_RdF(r{
zGoWq=GS>Z-D+1rSi51wXL1G`^XhI3}3?o>se05j(m&XiN!{v%N;QSkl&8%0B(R_4}
z9YocXuxg5!3<bMI3*1=65Nk#vT9egGv6~-E_UX{Rm5FGV*s(wU*X~^h4w@BqIbe3a
zqvwvNi(9TrD}oI$7<w)Ur-lQI!lU;*oc{$mc$uyy@el;b^;Y~Su`Nh{LxdANdKvZ3
z+ejI$`y}<%#}fW<{k`E>s-Q+=aFuO{{%gxQ5&;&t#5v=u{TL+jl3&C$H3|PiC`S<c
zyzOf6M_K^t1!2c}g6O?2904Kh17HuTT+pPcunudawHoG4=v~L&76^d%1Y$YWX9Ovg
ze6vjpyTJeT5X?Z(IJREIK-+SY_xb`!ipsuKp5YR!P^<RK=juH)(#@tvx@9BM`rbjK
zW$#STVIO0pWB?Wn`6eXO&g0@SL#8pdTHzDGlS-K1rDgzVF*`3)`85&9y$t{8xyTpu
z1ES>Xf|_#i!(XLpHZ5T}Ybn_5*OT;ksXfHSu}Uj;>$c^*KI6toi6U!vL$r0FfBkL~
ziHlC5g0J5EG)_r(PmPIuo{2eB6s!6tpL|cVe4xoQd!**U&6@dUPczg5F%K>#7{P+=
zch2H`&H({2+t?)zVd0}8%pUk7b>-CS&9|Zf#me7K{bnHb;}|9ed4i>k<;7LB=#MF4
zHl!w+ps&hPfUjN<Nfc!@uikukqsJnET?C|%%}p-%R(}9W>%Y^j-bDo#?01Cqo6qg2
zz@$xW*j`t8yk`0h1^{OES=B61gK%aENJDuUR-COv>?UDzU;`y3ADUL3=9wIk3NK9q
z<YBxP8@Uxd1tI^@^DZ43C5>A>i1U*j`uKr1=p!KhuV4@_poh&Zw^A0L@<^|<{Z5wj
zu?_oyi;==Ekc<wiYE2SCP`k5`ps)7F@(Z&+z1CG1H(9*#88mwtuv6-$!e$z3i4Wa)
zTpyYQQGpb8S*51m%2b=BnE8i_zolm*FS|i@Q|nFB_q#B5;g*0CMO|N)^=`$ax2%A@
zlkW;U6NZWHlLp=JTF-`D5g$>cLkVeltUE^hyM40I${LfCQReEOjWTB=zZLe+=Q{tr
zt~XH7mqJ-#g5#MqjyqBC?iQ{&XmFg03K0%3a;UF#6u-~)mH!;OjftycYxDax9NWN3
z-3LK{e1eu>e&_+zp04<*AK2Q3)?wwPJN0KQc<UhcO)*}9WQCrK5TAX#n=*WtPnal@
z8Eztxr3VDUy=PIjXVCV38F69T#!T(<Y$VQ1lhX?b?)prC3fGFxk9v9bf#;65RJ8ER
zlF(wT`PnB9!FaQ}T7uB<bdTg4yhqldz@6G?R!5Ti+Ra~<YFvM{Qw*s2Y)dJ@blPFK
zyx_Q1LSr-D<R6+^M>~23J0kOaj{**f!~9N2)I{rLIp@81Wk=CxN4o#qa&7<XyBtWv
zBQD-mSA1T`Vt7%{h^`UR2VT^)Q4B1NGk#vuMkp&UWa8UJl}bYOw=r7yM%%Yf^wKMr
z_4n;^Nl84%^pdy5*QR?sT?|l_dSe?0FJ!HUo|WyGA7hQDpTpu%9$^J_9}2>YS1?Bn
z2kh<6jTObc>vRoDbvBYs0>RROb@2q$oV}}cO36oi6@rkRAwEd-+9ZGDvBLR&%z#JL
z<|8wb@HA7$M&(Q7WPyV!HO2pY6*yu62%D8tF6aEn3r4_D1WjGYSv)dSzlxj=cd*4M
z*_!mnAAC2e;+(TNwTVmU#^?8V#&k_JT;^~gp4J?GILxf=TYRvJ{EiV#sS@2x8?slH
zEa)r~#Z-XLvp+Ikffp?g1qCZdrh4HYHtv60A-avMQ^+beNrbhv?Hn>uwDcd4Ev_{j
z#Q*mJcm1h?*D!#FGf%=e0%;LVwnm#(<!2*%V02@|DMZ2FXoO$P-$iyh#NJ5Rc+!4I
zx3#bKs8;xXaDIRC*E!2qO1qsm2mduV%e@}g{O|p#2L+!(2TE($LpuRGFyE{L)?PJ~
zw0s_?x_)^b)UgE7K`OR36P9uNy3DFly?dsEXciWCbHxw#I<@zAZot>(l5F`-nyVXK
zF5BAw3Ke!@Ypg)k=QtPx{Lj&n8HJTi?8N8&d$xFJs+{nSr7;@!g%>jS^vpt!uUWcy
zMh`pQ?cG$`G~Q)J_RMYcAk7T*DgQ9PeTxpj*kqKw$xxiGb4Q}3K4_h_R$ElfaQImL
zT)7eCc{F$Z^#61Cms96F*dJ0V4mMUsKOh<b@xju7xsUMNQQ;eNxsX=-!S{<cXS@j}
zc-*g9Q5gCA?#4?F@07Qi+t>9usx75ehh&Wz0)>3&^#0s-*=fC9`{$m$7AKjZ?!fL_
zhr^CG&9s;OX0Jx`mYSYSP`A4-H!bG8xzkh1hKV`X*L?f9^wdBLBgor$jzReT=b=0h
z%BYk=V??!*oW4)yOt0SZ>L2RDw}}+du+)Ml@|1y4ReJ=*!oKM>KU>OStMebnR_Wn1
zdrLS4QDtC(j?@R569&1z*2G1-*3Yn_Cq=}mmj(AN+exEWil2Y>Lhs+0RB0v1R3bPv
zA{wZ>k1C3ri&@gEr?vdc>74*`EG~K-|Hs%cjGo}sD}`>+b9BD_%btbA)De*m%Y8>Q
zQNx7dPFh`O$gfmsJtjLM?WQH;t1eA2A^XqsgF&1tHTOj7;nDfbJ|9nQ;fn*eBVCCU
zis%IP7@&K)<oWNmU{vCaAPJjwt5Ex@zFmoedw9d7MS?lO`Dkejv6X5LZ<frK<^AG!
z(v?<8bip&z?UhNs14D_S_JjJ-w?DhyuYLDNe=a`BTD)sCM>Catq81!w-Y<Oa{;9N!
zA;%W+kGDwKS>V?~iPR0Y@y%23r$hSj_Z8^e%}Y6G2`+$4d#$3ztMfX9?c{2CM+Rwf
z%Op6TG8CqGD=uj^5X7lo-fb`OjQw%k$L2&XwOQ=d?_N?!AFxZ5IIZ%NVhfB7&#WxJ
z7rL)?HK%<H<iSi6&hNFe_M6-vifI&%qL7ly`F9;y{Lentg9aiXr=21D-_?K82A}J-
z^NJd4r$il)Mk_;CR`=hw+;x-(>+H|;ji-iOtRXHC-XVeGE|4%|1`k2;Ze?8p$f$vE
z^fdlJJj+6|<jD;3YB@sVVnCohS|Qil3OTKiSQSf0_*3t&os@$#L&S>Lf)yu;GTLZ*
zZVr2UJ<lvq_A7Y#pED)HHaKi|rT|(%5tJtSwzDV1aP&tH@u$XIs>vLUY@+96E_=a>
z``h2&*1^#}rE98JS(!JZ2M}5J;mq3V@D1p0g};2K51dX8e<rn6E{%Gg-DTch#1VX-
zo#HFVp-ZfD`+i~1Ba%GAFmEfRlX{}+@K%FS+Qae3@3g=n5U~<s*Qep$nZ`-5EakS5
zSe5q6wy1una{6_`SvltxI4}Q?S{0+bpSv^qzn2f84A5~mQl}Y6r8(!z3a%Bfi0Ht{
z=~^ZW@ZY)Zz_>Xce|>TdZKEl68hxpqdCjH7^kej<GC86As7{Gu-hSbS)?`lx>8dDF
zFT8dSRCdSA{}gDn3l-dK_<L;q(8{)o6mgIUC<6yMp+^!_?guqJbd9mslj;ZC$}3ZB
z*Y1g37Pl)A_#0UBOImeRji+Uw1=$!U1TVGCzwzVZS$Rz|{bsU#|AJIU7OacKIcVFJ
zP{oB<Uq$UH8tuyu0eJTBz5t5yT0;k<Mad+2K3ybwLr!G##QGjoa{`(hZlIBc8tMSV
z3&;Kx@B!Y&FQxq5v|PXTgcCC@{`Cj+gpKjJn4Yr$&cPYql?QOP?z&gM2fkVNgI)?*
zRLj-Y6A=-kJ#l5i?+n+XA##XLLHhiC#hP6e5jz?{%7O>1V6D=31t?)gbA5k-dV`qj
zu{1NZ-5+g}PSs>iJI;jj^6Pl+KOeCU`JI8^qxVXosVh)!IO)yM3T%&%I;02RV>v;2
zSMeO=)b%kc#y60GtkYYekkw0K9Rs#ARQHyo`;%W6hpNA%s}K5+GUeUr+WH7@_DUuh
z?+DeQKFBAomUQ~H$NZ}|1+wu&>qHg}-mYgdP!1>3{{SZkhmRpYAPB})P;0^sQ_&j~
zPBLy1PDy1TK#@RFBJQgBJe^3E@w6x=$Qkrt-vc`I9qL7mhr`p@-;l87wd6wx<^AAf
zU8SX_v{#U)KwW4#*5VSG4MQ#(UYWi^m$;FN*^Qrrxt)d3+nxH8zOp}m_4$)E=M-7o
zG$ofq9}Qg_zt<^`cHZ780J{~hu6Fz0G>BN*;vV>1&&v*jkla{bB=#?uXK*CUlsm}1
z=^hRJxky=TH}Kf6zE^D8%(36>qssN~t~rYh*=Fd&X=^vZ)@VnUBiIYhyvF=a;#oTF
z7dDUm?+sp*kGJZ#qAfPZ*+o_i8|b^g^tBvBKd-Lu_>oI;XXB$vL@k7$mq*(7eu#Dg
zMKfI}TeKBBXx>o>B>h_TZFwxIc~Ou-$p3~g!vCg|itN@1QVO*Y>H8;pp$dsw%Y{HG
zKF^8#{0Ac7VibHhMY)(!0s|dlF<B$-nWxpDh(fpnc1c-)!2a;$zjL{v-56i7(M5Xa
zTE)?W()7a7=D-X(H(O}bdVmtE*Mg0g`*`IL4_vyhuQV0fI&9_*$U5~R<A<$XtJlUh
z7=;FweL$;8C6K#Gu@5YQJb->TXYkOmm<3a;#*C}K7unYnmT}ppAu?j)F-e)=)Nn{<
z{cN4~MuXBxzC^>~7e41?a5}`Pk3cQ26}5Cc?VyG&{RzbtUB#h8NkWzUNIt;ku5}>r
zb7WuFJvO-J^20!t;Y$!K&U<Ya-X*Ng?e<Jo`5~(Q?c2ja#j>xl2C4lZ`%w^MIdfOp
z?LEQe^hY{Kx9I<K&~#VfX>k{mX2cHpyk2%$zn%&^2M2%msd05rt(<%_T5sd5libEs
zwGEswV)PT{F~2m5jPh1;k0e}TdCNbB^VJMI`<PYwXh-%N3roWG*@fJY`MXndMrrQy
z;d|!q-r`kIt>aEhBwybYY3Ve8;#s!^!fOGalO$LTA-6>`j@G}8`V)RBf`8g=+^~%9
z$oSv6cI8Ut?;fbcl%}4C36;JsFoFZH8KZ6j6u6s|{C?!)J?uW9f9N%YT_D?64P$s3
zK%$XyblxNKGc?83${-U`z8FMD2kEj*a?_du*Sj>1pa#|f^6Xz$5)pu)qA6=VbJXc|
zLM~QA$-4W?>!4ReN9*4ZE5i<SnAE4lx-_sr2>a#Din^@PT~cAdWB&qFM#aZg@e}3J
zz~E<)1LT4Qob;_8`wrr&5R@;G#`{|uz4(9QflFnyKeW50Q_J;eRI7hV614%s)iLlM
z^NpmBldq%~u$h&ij>r-i+>VkB<LAgB&W9a{99VotVQ<0VA05HF-cLsRz_LG{r7|x<
zqy4yk*kXE<hKsx^bDQr(>5)Z$7gJ1mxirOTcq1#@hPKL0tlH&`;jiCJ-d%iF^J2GE
z00+fcE$lhT<#v53%v3Y|9gqb$_5lpIF)R^?0uc@T7ELVIga{+rDXjGaz)wSnmq<q@
z?D!W4JF)b%Sf{ut#O8gFFsH)jP`xib{su1Gg<4YnFLy@?L+UKf;dJRwT#Wxz=tfwe
z%+}eMx>S=}Qto!QC_$oj3VYAJ^;py3&LhwO*MbgGhy7cgvqVJ0#WnlTYIW}mKVJTr
zjQ!<qG0R<z`NYqJvN4)v{2|cT(U5cAll`Z|taU)oX=L^flQM(<|C**kqe*u48{**7
zfFz?b+wW@A5M|3mOq(>Bh`KY#IyS@c8|dde3h4W`?kQwvC`VmcmC*LSpx|Niq!cy?
z-<Suhjh&w)Bil(EYM%Q*B$x#XEu`49Vx2>H&fOPEZueGk6lOtOAwG4I1M$Lgs2-JA
zA)V!RDSYf_eo7`GH0t;qkRIxSX0LsuC(okwQrM}Q^H~RZ;6~*AUZ(pQPe0ot&DcQL
z%OyJ;zh3zFa+ywD+GqS#z%+1_IJO*XzrXx+{c!kQtnd9^r2V~tXOHr3QDXQ)JjM-N
zRL?=JP?Xg<iDRo&kQ1Z}#}Ty2+Eh3#Bi5lJ6FUq7fY;iwmXBxeeDsu&t_K~jd#6mY
z=uT!_)S_d&5MCMU_~jzG#l&G0WCt0cFrz>+r-eLf*OF)5Y}t|TOu|-P0&n9ub#zY8
zb^q_32L`TQPuTp-S!#mcDX?b|WmWEYFU|r_mxS41@82Hkh|;G6^_7vi5VHx`8<OHF
z4i);3A1WQ+GK#yu+Mpyk;eY#QG*2<3e&4|Jw>twWraUjrZ+Oh`O)ofN!OC{>^OHE6
z?G62i5@#U)ns8s*R`tOpB`dlfK_+Z3urcW}+5?M#?_mwlp>g>7M!4wXa#GsUUGwqY
zhBHvKr17l%y=>rYs6S@ERHDlu2B*u{?}<-o^)212!;b-CJko=}dRA7!?<$O~Fmv-~
z32oqo^gPJm5GW&heM(#nzqKOD28VP=Yzan?kt|Hy1uwwa8iOu^{FHZBXAEW}#$F6n
z@Q2;ChGzPOtp&ONI~V{LMu<og*-b)H=_Lbu3m}iv%D+Ae*bcJ~Drz|2I0S`Xw{4ZW
zM?CZ;2%LSZUjO=GhS&!U4Cuvb#<P#cwr(63rVo|0H*l6GBv=k`|H~J9eQ)oh#Y;)l
zCU0K;t>J$h8ri`~Yra2hkk*|iV368}qE^QfyM8dzNI~!hCFS=uG0`TWp~Xf-Yn~H6
zF+au$#GF0V1yR%;p?2qNs_rdxkx%`8i4@y^yCZRff|YDw@+LB@NILe_eL+3__1d;F
zSEkaO=ucb?&*iqES(`4Cntb#L%R63cQY7-gSSycpCu|}s>XwAF**WN25%;cqyUrNs
zQ&HSqn>=+|a*+Tw!!1Q&XG0lG1`D-yOrlnWO1ZK{|2M?1z|#vyJ=W)=wgN^dRrAQW
ztr&e-QE|F}>hExHXz%7}qBO>aS?YtB%hJG)<IXjOGL?YIT(Aq>U7!)L`}LlAS2-#9
z-Dk`!*5#y;nW@qS?Ik>`wlzvP6Q{W>6_ju>!OY@~Cy!BC7p)X7ld{t;jPw0I$7Ku?
z(C!`~03C0%N^dq+`({U}GN`n(C{_#<tE<zWX+xYi_v?mjSO`gqhc5N_tpK2o?n)tC
z7Oj#%KB8CGUZ@@SB@nd-(nSO<B)CaDEzxn>#JIRhM#vsMWjE7lWk)|-6Wa%#PsqHp
zwNFPW{|OKOC%K8hTeXh%{j!n-h<ZU4rA;R81=XM+U0AkIcr1eaGtDV4uogLx`s@k#
zMJr;vt|q;iQwhC5MI0yHr0SPT`ef%jH@L{sO-<%BsG>2=#X$O__u1<OkCzo7IV(n_
zIk0U&LeBiT1<3^PisWzXtART%*=_Dj17><A;;8xkxsqRE(EHYwnQLcpmdSC$%Xw!Y
z$I)pD^d~9n6#)X5AJJi}FB4r172!h<dw4rwj`&afbth^$3WWzP0+-^wD@vh-2r2~9
z)4p&kHpG#{5&)jSj@6|1<i}hOEWY(&{+%x0m5U=#3Sjl|_yMxsOLO5@9jn1o+fQ~d
z{hmWu2&|OCnuLh#CO?+H#ghOCYUB-jSF%<(TLgBF{#On-9)KsTBfw^j5fm;~N$>G|
zpX)Kz0%D;zCaM={bYUdbkVq1k10u?4EPwr56!Xn2B5eZ7O*+Ot`k^T8Sz45%k5%B`
z%c+MV7Cpqh`x(W$4YzT5y<&9avwLJWVIk$63VeF|`*qm+w^*?TvvLA8%i(s<o;Q(^
zsnKBh4`>x<Sv^P~$5!)H8u$VuR=IKVz&H-creEHOx`XPHWthDDKzHJ@pjdrs<UW@s
z&Gy5p^p`DH9jwNSOP}`1L4UKqE(E1DTfT-8Q16x^*nM_DdMD8HpjTWlbQ6>*N3WP!
zHkN)P2JDui(_fWQuf!PNPVlV*$?@Ggk0%{lYr(U_WBK1i5oemOpkH)!@^$y|f341n
zF?9Fam2u<FxK<Zh_d_dwtbH$9_ah%Z%wY4-VvjzEU1*76x9rXeWeleE5rqtOWqtZ1
zSj}r}x~}T`@|7p*wjOakOAM25wr6;-<ENla$2gvYA3ag@G&_e_UHLb<i#<BX<rOHt
z>7TvRVi~bnV+h#uE;1Kekko^YEXx<DJ7{H)Nnw}h@MAqIe-xZssnn4yuc2sLY-zmO
zD$<Qm4t#gMo}CT;Z{&p<d?QZUu4W}#x2&F9+-l=PR=ik3tpr<wj3}xP`CgHN?bZ``
za4)S+Mn@h&V`mpm9+tW$MjqlZztEhD(xZb7r41`}D>4g56kQ;PdJImZxEgc!RNh`%
z!L}Bw3&SatWM`;&9U$YQLP!6rEOgx)djk0Iujco9Uo|NS^^<a>*ZKP!kS9YbvUdLM
z{JRqLlONuh3Hg=@5eDez+qR}axf0Fm>9Gz*ZFH_WET><gWyNCn`AsKa=z$;nW9P#v
zSI~gKLP*hXiaP4~GkuiouDIhoj`Thmoz=MSE2pTGDiVPuKxvf+bx)9~{HN!3jis1w
z>dN*|rtNVe!~>SyBVhF@PG(@AoQzDA?XrsRDmn#Lg8Ui4;;!=+6x4=S{2W>n3s$p0
zmr)vZ70om=X^_5N<ljzTS)qD_smqsk0+z3pp~9c;@>O;s2WQ$QTjcMTx-B31)k^4D
zrOuK1fw`PTN|53@y$I>iLr^63L3?dTxO#o8z_u^DhFn@a6?a$acx<+Wx+t>NAZEYH
zwI#xF^i6)I<5B(pKC95{oam3YK4xT;xp(qQUJldQ&?h|Tf!v7|A83kNzp9k?5p4qK
zJ@8%uQmLla*&R^{bjP;F7kXmi^YNsgA}LTBC`Wx1W!$HB3Zbo4qPvNqKTE^Dx)ML_
zmN5?<-<?3hKG_1*XA4TF&YC`ZR=#mOLbi?}(x<QBS(y*Gwl7Ndvg(g|79|9Uwh$2%
z7B^9BKC!mN5O^g-eqPI~au7fOhNp<LP7Nafv^LQlYLW#l&?Ly&47<oug%fma3o4qk
zJQ6mQ<J)2rGXxz_y2)lQD*Y?<*^)Cjm}kQ-ce$jmGW$nw^_G+hub}lH(!=**{eZ}p
zXD$VszERh-$`F#9%@$MsxM^Wp@srwub;h1X*DUk6R9fA##%4`I^L14jyupr=_P3*K
z6~}$1sA1MSm6fUq>i-jU8rf10%&zw@Fl1#4J+P)RNf;8?2r&WveCyHEAWsIl1DHw!
zIl-idfUC7g=EAtx6T=re<iRNT{KIs@RN4ppBx4z>&3ctq7J2&E$Xp-2&A8`0w@3Xg
z6bG=3vJe#u;_WD6+R2(OQ+;I`#FhfYd~cT!y`XqkXA`qW=9N1l>=7D}Qp^FxK{EZZ
zcG6+rV&w0W%-CU@#6_sv0<(wBE$xJUt{B{&GA1G0x(vvGd@7R>b6(P(tbb@^bp(%n
z`<#SF>Q-Kz2gd)%IpX;OQIXf9B|}O4mM+C}z;*JY-nkjE0n=Az@54cc`^qFaT8e%8
z&@O-Ro%jA9Mx7%qSANGyLN3XKtOo1FNdo<L!o?*7`RzKhWyh#J>XmVCmh^Rv8tAv4
zTg%1JCr7Wc@T~Ay^Q)B#NRPJbK@m@Jwcou{^V2T<@$I%(liXR!{W!V%@AG0KxWA*b
z)41uLdD#AlEg)|G8o_So59|JbCj@=o9sfOuWfvwb>AtZ%K0y86ha{kjY=E#_OkBG6
zvP;eUJK@5#Qq%cof{xqPkiaJm{vE`GTMW2j?XPvjHG*EE`AA=5w$jiT_^x?c(=TQ=
zQrfpv7!JrGCIuJZg_WPuTi0IE9nx?B@`e0~Lsq7q8<^}VY8bAReJGmcbHdsIRq+i!
zq%JngL_TSylrP{X!YX^$kq5UM6{vi?u_Sz+E{vQzt+^Mg$c;aG(C$DyFMa%;Xos#h
z3m1FARVz|@nz}s`r+q!4^-~#N;Zu?(vtP?a>^bexqSBx_cZ~nnsjf$&iKX-H{0E>j
zmGea&Vw^zhEWb@RtiLm%Nnx_1{<WX>@|4|fp#X;DVxB-Q_8zH7Us~wCAsN}h5J!l#
z@DjsB6Mv1U%5D$Hafm9RAYE#2Il8V>=(P5L{<TImuimf3<mri`k-0utZZ`cVrmrG>
zy{t$$Sd-x+VPf<`e5gu^*&$?bAWc<)NkVhn*!-7Zeqa?8C$p*0WUV}oOcKA?TliKX
zD#_<WKe`(_m)1lpK~&3)i78&uIprST2y#ypw6(smRT*3_VfVT0PJ1g)%wdfAta6hB
zOLjD_G#q<8Xs4<yZ)=LPr_@hkx98bR+n(&zu(W{x8NIX88UPXOrJ<xSv(cbaSbor%
zN>do_TRC}OIQ)uFfm86P{ZCi}g}MdEaLP^^5*K(ab*Z%1nB%n@{M|d)bLo{x-t%;$
z4)27Y<6ra|6r%ne?HeQs%lYY6zZV_uV*tv!LGjAn{$N`<^u0L&4b`#{i*5<!)H`_9
za{FN+W*U9(DdxrZRwwz(I7egaZ%H|Fs08hRmqwJmF7W7B5Xq^$4`KLq^V<RPXQ2Gx
ztHMu$1s`cAMy!T@Z#G<P*Z2XEMW98QR|tbb#cjP?-MP2ifSgHLYs_-hDwsdmQs-1Y
zZRmI2`aQK1RjwP&sv4xw0`HYfYYKGem4u1Bkly}{)6-xs*D_kS^>Z~6Lx$f9k(5;I
zHwvn3*Q59nn$p^|CSw|QfHAo^y)L=g=6!jQnYnNEsAe09UK{*Wx9b4!e{cTxu^ZyC
zvNeCV=W=%82wDG&tQ-v2BIhSXZeR-P#P#{5e@E%^!iq{>UBIYxo#L$WALV>CVbLNv
z4e_S&@>frBQu(SpV%-*=UMUSl*L9S48nY%acDH^WNIRswmEPFPN$c{b9lVzH6nF6`
zuTITf04G{>0!^j!@kci6jJ?ctN<U*`2I8^+(RcTG&2NcLo3^<9My<JNX<k$=W+4VJ
z`8o1%I87FR<fH79qP(jpEq(6_Y2gDqlceVT7q8v2A1RWIEbTX;d#{Is)S(TW_FO{d
zUm`kbZRP}!`GW>FBChgdRK;sm+a^vbQSl1wjVl`$WInDq``h-Msn@<ovVxz+h?sD;
zrijAe*5k=~&i+S0*|UEu0(lUEi@s|wt@TeF!5xgw0=iU=U&W8|wp{Dksb;N-edl${
zEd6T-a^t*L<`+H(YLYZw7x*@xe(v%89j~QAl;eQ(ZaXA(w~p|3DQ3av_RnER+BeL#
zy$~3XZ5D#7O@lth@NsDuL(i=WU1fWVU#U*FbbM;$x>gJ?A9De>W6TtOD|eS2X4Iy2
zM@!eKNaBn2K6bQV>-r0VqrsjYSaiOj4bAi(zSm3W=;h`rP>#gvw4WB-_`{%L3gxi#
zylxv<mT@O(S=&}1P(jFY1j=2R@i%n?r*)?qV=#$wdP~$@p_PDgCzOdTW}eJ3vcdG*
zSd(@NtQEU&ot+e2q1n}bltpgfrO`fyJq*;9#1qn(3VnY2jE}X!Iz4kRJnbRo13r9&
z%*e1?@$9=(Mu1hMf3`i0on#Q(-B0Uwkna+vxRA}w5m~Xz)z5Bv^1Td5jzW&O=}H@K
zl#KWvM*8s+Q#3_7FTV6zSEj*m@dK`)<Kap*oP%zLB!GV&nuxGbd|6Y?RrR7@VfN*f
z|AW&<rx8W>Pidl6Ncttz|E`%wVNcA?%h%6jv<YZaHv+69-a2i2D+CvReM9-_m~2Sa
zlNDHAM5Au{O=8ez=7^ufq4#fJ=l}*y2WbK19JYbeT@6UDeBPgf?c1}qpCj`!;Y$^o
zZ9n+0`<&&5Q2f;8VBT`cYxKhbsir7C%KwB}BmG+RYxD;o-DoMV@@ajU;emW$XF2_9
ziT_=y+C}dp_1i#*s?&`~Ppu{?0(734y`OvSR2xxIL=-uK|5fRysiB4?RaxYY%3s&I
z%LV$z9f@zJ2PGli{4Agc_&UpuhvKnwOLC=tRg`nha({W&vLHF4Vco*(Mw8m)s4ET&
znS}qq{-kbClX1r90v_LC$zoG^N~x|Jb$37)1>bGo)?<9>)1^o0#zwKqycpXBS04>v
z#hiD(8zD&_s@_`?PTA=47NOeA9F<Fbu`%LO%I{`~piizLZKVmH+tpD{Pv)1sE49p$
zZr$>S!7?%I-L^PiWn{=P!vw;N3pHy_xhU&H!kW-pD<TX3{4!4H=b=EDx&CZaxVE=}
z7ZK1r%VL}7)x0tFHRcF!R&gicjds#)MY*F_#Vg*A8t(4Zad4^xOjv${ck4<Y{G*JY
z8>*YA;a%10xQzT$_TRxL|0AMuVajoLgz80wD|2Oc5_#%lTY@{k9r;Tq!6bF~b^vpD
zh4(&=Lp727Spb}0FSgm|81#7ToMK_iA~s0CL{vT-LgrR$6;BsLfQ6fTwO(|_hneYk
z9v>91Q_{+G_!y%4;<{o1sq}Xr-NkK#_@!j9i=k#td3rdkwq_{D#Fi76cQ&rci4_n=
zhi>1{HVE_Gr_;9!TY;%>q+WwM`pe3gC0(tIa*LYBI=kl<rLw3kPCEXa|8XFc_?75;
ziy_Rv;g8|YTkS&Fa0gCk2QUMKraA&^pRW_=$zm1VZnK)~HJib8@ODR+L`!7xJLsP=
z0P_3jHBz%(Y1~q%a2Qo;6M}xXYc^smxaSv*@huBh_X($f9yye~l7S&(F*jd=<7+w4
z11{oyKvY@nbGCSX(yU;~jU2n7^qK9wE~F5hJx`1;p1p)_u3`rNtoVxd_(t<vrZur2
z(9rG+ywro%?$sy*z@fG?oM`d}ZnM5*FJ?cMtT^T8PXgA&GgEzsCBZtVt$#?5%3sSk
zWnAsL=Vs-LD!ahfI|N7Om3XHwwF|;_+TVN+1}9`{|H5<VEc-TN@%NmU=L}l5>ayB$
z(xV^!ccC!)F3~cE*WO*oe71Ye3b$68gGkA{7e_*AL^i7&06YC%N34VQp5!Kv*S$x;
zk89Mm8Kq%)GM4z?mN5vg+J`c+n20=8p29K=5J(SVhq$2DxPhySos<U9+s!<P3zgoC
zHw8B5{z8|%gkYxFE|FVb0sh*rL#0qHELg#lAJRG6n!bxOdX)DAG;Lb(C`;$C|15Xu
z{^=5^1Fal64*)aWZfG4eC9|=WUKf%%v`@OAd}fvCi-tka!v|n!BSgX70D50p;sj+W
z$r7Oji`N|l3X}wQR*a{aeS$)4R#w0CK~KJnRu;$v<F|b!^~Oka4R+r#7hkiBCKm2Y
zhWe5flfU(wI5J$Et?!B+Cv!OP=%9(m4=SJV+LY%EDo|d~MbfbeHg@BTakEfGoTec(
z6_@LuXb?R_3#$M`2lyx$P2Chf&LXxOCR(OHb&-Dj8S^GgdX&?J)Ewv`WB*VBDtd&C
z;)sZL{;FSr7JfV%b`?D|=y&QJ7ikkCUl9C=N@3+`;N#}rLSin}{NGn9TQIx3DPGQf
z^c0y5W#|pLZcXSc)m*#zy9WMW-s8U}54-1Er7l469eTD_T^KQ!FFB~CtG$r0CmZ8p
z;(zdGLe}V6Bl&{zM8Gcr*~|ZLb_R_J$6dNhOdYemLoOZ=90y$hT2@5qGVdw~DTNCt
zga9LRn?yQ_ICcd|9_$*Q@tM+?bm>ASSynEd>)cu28;gOizH!>>^6#3G_t9Ui2|^$G
zkrBpiznh+(jfT+T{+!_kB%w+@%nfHjMV3URs(8Dup;+M^Lez~Qk<hjRTBB==N%Mve
z1nh2I$Q3{6;j;uWQP_80hm}PBO$%OoM!iyCwd-LAHTguEcZFoi$1w>quGCBLuf$ny
z%tzM6R!dXq^|>|Oc_4w+bw1s+luLNPjp9=CBX@c%Ey|ws?h0SR7<)~R>z_XYfj=${
z?X(}}Fe?etH47rFXh0>byc^vv5md@DfYqH6XNwuXyAPK>nciWMcxOTq^?;y(_(tkt
z@}d8O4IOWcEVBF$9KU>_?q2R)FJ8V>VvjsqubXV#DgIv!-Vwb6ogr6FLbIx@wpU;}
z>A^{i82ScgGUC_{k2f9ji7tJ;n0pK_wm~;!0T?gr7Ng^3c+9yM*oRM9X(o$1Vf7HF
zEdLhcu~Alc5$Ai}-^~t5o$UFf`}vxtVhvs>7`El)AH2(+uhR2p|B@ofqGt}aF1W~4
zSjb8xk9Er4#E+KP>Urzsd|Sd#G1Qw0f90M3pAxRNF0>bok(FZni+TaMV*Zs9@uN5K
z2KH=p&<w)c`kGE0DYY4eK*MN#Rk>)e^Oyzapj`X|0+xhgNiID_Mh(<aTHsaWPjbqa
zPqMRTRPM{}hneoXo?pX*NRi4n(Vxd0t*`=&jUZl1$d4)2+Xiq)E8oHv@wg=MH13rT
zV}-U#`)IiFjSyGxHe!e?PJ(TebXhreNCFmNSnK|@`J+riMaJUlTRzCrZ#@RL?LG(}
zKtc%P#tf!<BU)PU8j(NBi;?q93;rLYxA?alZle+tqe4DTO1Mx1$zE7e6iX+4Z=8r!
zH%>zLbg<*QT-|^NJ^Q<cO~fi~VQ6Wj@lmqNiN71arrEkoDvubd<le;B;s9-W0Etr4
zw?gADlQN0%*H(+LrQH_e78ZF>W;M`?e1sV#2n|#z&_1wuYZ9Z)=($rgi6_G99~+<O
zv3OTRsGUZZF^h@p>X(KhP;)sFpi6c<_hc3^>iM)$Rv-zl?va@tSNr>Vc3Z`x=Y{pg
zO^gG%E+-X`4Fi@7S#pWx0V}44NZ&GtPQdO;y{NoQx!r-K_CK8oBQ7FMA^eO7HPR`o
zOF?HRMn6SxFt!XHc%AFRPh(>vQe=F!FZ5LBBN{bU33249Ux7P^VA~mCOJ(ixk#thX
zR<0Y$-0$X!`}E8XwBhbs%Q_>#8^F77{lSXeTJ=}@Bz})Cs&LSU3TM4B<L`tOhAz65
zV-Y9r;<Fy6V_MLUC<(_Wf8+yydw?PEim-i2>naJhK5=43P63Xx3m|6^5jx6oof$3e
zb6ZRfo0K`3iJ+gk=QmHHbA^>q9al1m!JPd1*K0w9j3r=kRfiW!o<A&aAk=}?b#}9T
zkdC4XdzW6wC_U&Cp}jCoqSfd72*%`Iw=AFj)k<wowOe_%e7tb_;gCQh^{i(GdEhU}
zE9>w~>)mFRtk5?EnCu?H(1ah&0UVwtnq4@rH1*CZ>4>{7aXJ2%0zel|Y?wh<e1ee?
zCRj!>69gUtX9wkHDjvX!Dp}(Dch+xN_waCohcOOm1*JS*W9^ksvF;N%hdJ+)UO(<F
z|2LS^-G#~WHgPMh2TbX*^;H%&z_PMH{T;XU8P0^In?lzPq(N~x5DY3~yL4TBdcvdr
zqfK^!mHO2&9~mH*c91heKjE<L_FAZ`4CDJJ;(x*=CL(^tUJ}ZI64UJbNf@00j2K%$
z9!N)zgJKamX`&V`#Gm5F1nvY|A1tyw2vBrUy3oi0m^F5>d~Ad>NHLkXWYLev4(z>J
zb1eNJ^`IoAOXcQ7PnTlArwm0BPUi5t_Ts5v_!_h3^MoKN;mqr3NDlwzdQ0n|NxE~R
z#7D2ryhybGLGt+!Kp?(^-Z(MITrs&v{mW+(pD&xfa(9g90Z7_b+7A1Yb5ghPi463U
zA${2=W~*&hH|SU4H}^bK$qC4rWB+{b=w>t5r97j(wOiQZA;3ke0-A2XKEM3YzU{fE
z_Ny2{_l$W(eU|rW_O4$2PGa-~8ofE;q^q%YE7dO5g!0?fRtlS}NZ`Ybly#bTs<W=L
zj&Yfz1s0o*2CBZl@zDi%br*01TwB?QR`fqCfGN_WRTj|>{-eTKQfdD|a)wi3M5*=X
zN-RU{3C=EPtpnA||E#@Dv4**#x?9UfIa;r7hGD0V$n9^wmD%DC!&>zwSclI&QBg~a
z>d4P)IfkCcT6;Bp#P(l8xEhjwbG@h~AJnM`@t|tR`tNsD7tIOC|JHd1VwFh6T#Zn0
zRT1?^-HHcsKXnPADE!~9&&s9o+2|M`Dk`@Dq^7qKE=xKI7RE`syLbx+m6m8Hfu;dX
zF5tki?USTGnh>jY3)PIimkjw?F<NV}uLLp5MQ^u%#JLWAIwP8--SSZ0+a=khCoA;m
zA~l29uSlk}urB!SuI@*zAy%FzBetnn&9VhLW+Z6HSHjeC6U^f*MG=_qrZ57oo5)Sf
z0FATLowcS%5(2LoIyDR<a`BDu=e34;q#2eG<Tr{d?>lW22i}G35bSo(bX>fmEWAbb
zqg=$CGX3uY=COW;p^$RZ#g|hbu{-zfzx+3}H}h2`9bZ>E*=Xq-Y!m+5e(v_;Im5Rt
z4pF2&mZ}M%m#ZIsX|@ae(g?Wq_eJe9K65r{&$szDS<km;I37peW8c0>!ZqEiRK_Kf
zV)5+lZM}*CE;ChE8E#BaqqN%|D9kG41XKV)I;FTD8IvZ3IF<Pv9mmxi(}zem$-696
zMP$8tPv`L=g2-k-?;G?J@h5(CHI|{@?MrzoCyNteO4zXB;#O_;v_q|o=QMgpuLIer
z5Fn`~uYq3&{d}5kSi#m%fOqGfgo)f&?MrUug~r{$ci8ys0MO+bL04gzw8ZUKtkA8u
zk61}pec2G6tZ*(!un^HUjeQ^kP?hiYP7O6FMg=$*MOK{WBi0r#1}#$FZscM@P4}V|
z5=P%FZsh%AN#!0hRQMGoJss{tl>QpRfto-C)74@eHD)<sd9AlEx&MXlR@^_UOK$%D
zW+(GO;`v_h&HqEyTgF8dwQb)+OQR^=NOyOM0#c(QUBXCrcZrmwbc0eVE#2KcLwCc_
z%m4!n@r>7XKks`#UuJ!q{absTd+oK?I*$JlndIZcMx$o9k@b<SBE%+C-{f<8L=H;I
zu&@<{>;dV-c;z;k>Hyj@U!k81M$|WM*@l99dD|eP6339ExavP*{ElfSLLcHa&;4%;
zg&jQ`giE#VtdkYzX`3~HE0S-vrfPHzK$p2T+v!oz^SyyW#~jeNUjtvQUFbE0O2Xq+
z4J@N({zu?E_X{)lkGY@%#^8MxhueCF=_&*$Cu8SfZ5Q%>ks<m%SS9}>&aSRMBLslP
zaq@z54<P0|e)mO(1j>MBm}7QMYD7kZUfC)dLn|c8r-YG=qMi;Ae6~r#qu_)Jb>y$~
zQ#(hpSyK09zw*Uro<QTXQHuy)`63gFaaDyyAcbz{^zBW;k>zPCydt{{2EF#!RB8IE
zt+WH8kFf%vjm6#Jo!;~d-W7~u69HKCDK7LTt(u#+ZO$O-!#h5d1RJ!!6ox-+iVl>T
zB%v+*=JI%j#F>UAqIXg|ztD=bZQXUVNU&1->eZ=2YfrLEaShW%(>j>)Bb1gZseUbT
z?eI3SavX&qLQ4!FEgE|lUzDp#F#wY#bDZf2Yg^=WAOec7dYHTmCkg-s@2CuR_|!MC
z>>i#_6wC=rd7Pjmqf0Jz?vuP(CFKqC41@<YI#iFF$rop5RuGHFb|IPD<^78|TCuk+
z_BAdB9eEtT=CKZ{OCY9|?K1ZV9q}beqDFi<-rI(XzHVR*FWF>X<iv`N(VVtc$=>N(
zp^~p7RJ$}UI+qza>&%*~^E-W5-VZt0sF20nEH=YF*y$}z&}P{EBHO9%Q+`!J1(bbf
zH5MoCVjorL@Jn0>Y)tmjiLbBQy9_3VAM_n@*p{0Xc62D5N{s8BX5)M}>=%FvZm>Y;
zxALbe;V_`2d>vM&7_Dsc=1t9Ge-r)JG3W=iek^A}2k|;#qji10dwoA;uEOj|n*3@6
zUZ-5Y!uGtL!txK6k(R)LsV^AJN5tWciOFND-ze!C*D2Rm*8`qV%-I-R;9QWQX9si?
z3GpIE-kW%*<YJkFyZ9z>kA9c-_EEemOKNAm<JsClY3qzlK0iq}C{(cwo1ZhVSAvgo
z;gCM-Jl|mw6lz>QOy~P7n%ntzA@mj5;|m^>CS_)IrRz5{XJpH0KQ_6)0gPd_;_sVy
zK5^$?ekIjZvBM6gCtdt>8g)0AeKaD)9w7RA=1t&?w9RiGPR!JXc-O&*06WH$H3DZk
z@AU^G>`>{O>Ds%u`38ICE^{>f>m#Fy3sj+k4&S^~kc{@qB<Sj8>kYHuz~fb7(kKZb
z)*?+ir_^E(L#}|!0A!(Yy<J%*OQFZyaZ0gzPU=bELD)qs;y7isb-+{KI~LnjbJ1c+
z8?sAHsABkltarc4b5h~*fF`ec4H|;GPUl%1>V`Tmj`JQ_VsWYWt|peVEfp=@T(ThK
zY{0jWEoP56X>@{?KKBoEys=nRBY1;51Y|I_zl6TO)e6F1`{>hq5V)o43t1JBzrw#b
z>a9W;HW?b!SP@8X?$jmxWP#cHx_bgU_&H_7Y*Y=bc2Yi^&iL+fWTf@tngJunNfS(1
zx_JnH3(>zw`*;xT08%SdhnSz<mJDd96qKlI9A56{>cnd<OjmgC$XIhY{&WAsxX~Oe
z+;A|x!4LN+?ZD8<aN{Mqs*i9L`<ShJFzGe=mG{SdO7mtwZ8{!~wOTVOKpT%eQI>)G
zPFe1Ds_ZGcBN{*Tt4Vvqbr2fknCKXP6;9(6e-KK2HVUcq29#;EplbwgT%VKvouwwh
z8g)?pjs~)(*To~``!u+P4*$lP;8ejJOsIm*eO_qfe<R59PWJxECwm43e7jF*g=p|#
z7ILruXcvaq^0F0}9E6U!&qm8aQ&Zw?eNa}=LF)(kqTzU}83lEp*>~fu&#QELwvu-9
z)<BC+H*O-zrKn}+^0q>t#hLsrnKDW@Fxr%+C3lUZa;9!))V)<QT@7kVl_jNuRq=mZ
zJsRrMM%0FUS8)tIw|*!5sWX@$@EqjazlC>7Ir>GlSzG@X=(M1VT5iN>%$PKk%*R_!
zy|1(qWyEWh&OhfR=U=6o&jWQ*_|Mdut8|uyIYC-F`|?kt8)z`*n=C1~loasNWXqI5
zl$OuRtqIiTMQOJRjwXMrWiGcX`)XMyd94K2WLHRUi=6jmKzF51)UvKlGFEGsM16$y
zWk0V!>pgCFopaxR@GBJ2F%)S-Ttq{B56f~_+vhZGdK3<enOEyUx8qF{MJL9fH%G}X
zPg!a+j(1-d2y!{ppNFGOo8P|cA@O-jXzj~e>~rEPUYz=ht9kXHbjJz~x7YejCN+6M
zNeIAmZeM&YbT<fLh6H=es`?$bs~xn>X4<%yeQ3Wtc`TBOh*!y~Y|x3cdzdcsWonTM
zmrJRqm*%H^*1~srw7^{KGY}E}c;Y@$#Rg$L6w!f@OVppv%Q{dy<^?Z5%ABn~d$BO6
z6+n5BZsrZISSn0;g(1j9cEGO4csHb*QBU_*p;fu1kWS!Bfahm>LqDYPlvzB`?(!gG
zg(yY*pF{T>1KO!5y0FcoKdJWFIuc#H5dp?M*Hj1{xIiB)=mL$5Vo^;HwUaXRy3y+D
z+wZhr?1Tc;XfykKVcYa`<BkB~PK_-*_8K|NUuT&4k0|}{u;);xfDj=f!xd2JO-U6@
zwy!A9O&7wFWe89&x^LWyTdFC}STnn+Q`#=L>tyQawJ%1j`c;mWS~U^k$`9;ueX{?A
zwvEx(Ssa2zSR5;6y%gf6HMsps?eW+t$d69tMFsvFwK+$)ccSud=6tPX%fO+O(f1<K
z`d){#zqD?MP<l=HAWg{8*-Pn+^}JnU88XVDh<iyf+k+f}9gy>nz<>6SGKsVxMwhcl
z-H+Z@w_TU{l7jEfd53U<+YbJe3OWI#yu1hf*!ZZdA2MzduQboPVhZ`znDB4-=_R*f
zgj}UVGvkBqw$5cWh%-FL0=;h*MImMiobnYXh3~y%UXtbWo~u*%r}E=t{^Coe#{E@b
zo@oZK{?s3rQM~Yp>)rd-{dtE!+dIXW8ZqpX(LcT)lF^?h4{2dohaaDnrNu>N{p8se
z#G_l~l=L86f9B9Pn?;nJM%Uy{WVro(iv9lVzz@O~w<ag+$|q}Ymnope`>IcMW4-Hg
z)z3bqoi=!XG`bRK=qM?ULb%7)UKy04YWP(OJ%fZ_zcoERU<+~4SPgYMofmW9ulmmB
zMv*Y_9>ejq|1qIh@tO%NZJI?mk+vX2fBxd(6<*Vz@-|+AFJ*r}C)n1iVQ_GSU*6`O
z63|~D0Jh%)p$7elKh??9%~{{T>EI%a??2h5zZ3U3CV3DqFdGZx35_6E1o<tN!~v!3
z8yp<jN8FbgacC19o9^Q-AZvG`M}ty({dS%NuNL0~s8sqPQXm3(w??^7-!(We#{NV&
zezuNm!3k<{>~Oe+mB@V$f6eCCC-<1**s=a&+ADTu_h$L!1oY{{HjpN*er=b~r$IgT
z7c!z9-suiC<priaz}NKgiTqK<wNGynf;}-9&;;%E3B4yB!6zvkwre~Iss;Fs;Mx7J
zB%M8`$09$vK)C=C8-)4_q}RZHkB!(NG*&4%8LX)i5k7I?3B`CXJk3H_OdKru=_~O%
z@qSILU=^E#f9jpJx=n+PfQ=lQfV66!pCsh$q^1sgIaq(ADG&XZT87~tsfj|YJM>+3
zUVt2;XrMvZi6Z!~s||gyy$^*j;HP}1_;9eYfpw>e)KA{vc{RR!w|bvq1r~fW8IULg
z@wqg!9h5mMD?wn%-jzwt#il$2i%LJAWWG0El3LW>+uE#Q9MBVBXq|^5*ip)lkaAET
z3p|8?Ttf7AnXs|1eUVED!khTP)>5{Uvoi+icua6&oEt+wZ=fiFOY8&_4h9dE&%<w<
z9Kv9LmDEFZJo#!1bL(FU%pt`#-yp*FU>4;az{%LR#t2jYx2E?hOHz?Rr{Qjwa-fRt
zw*d(a<<&9}@+RHYCGPCo30F3>%cxq?#c;6lUb7S|eQP%cH+F?oKm^QUGX2cEiR%r2
zFSdt~`T+fPY8yB!{3N%c`8M++bj>u|)2PEVlZ<{Y@o5!J!Fh_#+jx&f{v01L5~8^z
zdKJkQJ)R>~jHL6HZo9e8E8?2CbIzpDLgq+$5X8E4Oqbh%wz*8{(KOB<nT~=STjX*A
z#~#7)#Ppd&63&Q=3A<B`l5A4VO4CNJv1}SmM2}+=DEQ<t)|>TyV-)hC!#cmBZKL?&
z!firnF;;l)Te$tmm}o5a=P~yH|3bFM_0igKqcP_8ZDkB@+DrUTH+4Ee67~Q`%x!_U
z>}DZnzadtI^Z|QzloxrPy9+;No*-?_wlMf!(g>jko0xzZ@I$eRi3dmes3WbsKgTh2
z*tkhanGuMeZ8fF6n-@GgJ6aIf0!I)9==vf;a9&%9@UGBiMm??|<i7%K=5o4It>I(f
zo_N{RvzyJrApw>}k(I{_H)w>ZILC2qk0*3tPpR0jNAwtKm8W*7#N60Zzw}yhR%*o=
z!UHWlePAHe_bT6~__7w4114^N*g1nN$k5(yY(Y3znn#mxWep2ZTAGZ8<2ozAt#N@O
zG}ofaU|#0_JW)<L;E|K?q|MTC8!b{Q&ztjpy%1O^*5P99yT73f-g#^kjLqX0aCl+i
zv$X1@nFIoO_X7hn9Xs~gr@6p?hTBAB50I5?xWZKDO%6T<>u!9oByqmAny05R*3rI*
zn7+5?GU%B2LZo_RA1+of1fPh{XnyqJSsOj$H<K5xmuDlvi~%?RG*Yb1`?%y6YRr1V
zcNj2mh_cB)HWgt_0uHp%HPQHPRMhl7jfvr|>qMny%D65RzJAzbg2Jl}>vXYu&sc%M
z&)&`C^2D40eof(}5sIjKL%(C?a~q}Dzk(Un+Rfa_h`nQI`GDAbA%Wf^Y+iIUV};Fa
zFFaDiq${m5G9jgPF#UyXZu>_WfFGW0DHxo;VsX{&hLyode1le`eIvY@6bHY?Qs1##
zmoKe|+r}r^S`k9D+F6`i4dv1P^(7&n6cFb+@8!Uk4nwHZ>M=x}?FRH_Nw?C=x11KM
z0_sBW_>If+EEiJ5wS9Eg=3uR|ywtb}H3;yhL8&6zcZeBLU^+}|V7zqN-#9>LoG~X@
zQX#f}e!*4kegCH#<D<kHmqm7}zqv9xWA=~x-O&(F3?#Om%|cuq4_2aQ1HiVE-;4=8
zTL9!qCAt|_Yu2F+UNuE(NPZfWgoe5B6_?{6-m>|h1rv~|UE4X{I!WFhjX?bBkFx4b
z9Cj!IG{5z;7g;IAy-iX)T#zst73gB`&ZWGGloC1m;naFr@7}eeTig}kTVnHm3K&P1
zSHJp6{&t*PF3Xd^VJOgPQO4N2uLFFG*6Bapd9VVMO|m3_tRqzH!p7X!M06*#9<`5a
z1P8Z%l;mlE=wRo{pj9vD#XoD3l!K~v*KQLfdvw=M!mp|mc<JPxF+5BS<f=>A3%u+W
zi_|#5M>C>tF^sq}HvkQW+uZYiZ{+h%f7WWh;I%^I+#Q_+4xNzBtKaW%%zS1MxIJ#D
z)q<u7zQX9f)cT6iIH2h*Ambkq&Pg_0CdD2hq7|IRp;c0X);2es?`mY-*l~GJUp(>%
zJFOi`rQQy|FQb1D&hfdjf#%<@ekWQ+@IYfsbMut?23+pUPSsI6E*?~(cTpENPC1Dq
zOLEdlF%&Yq*R9+mF374k$iXh0!kR$8_lqyDbDqu+432np0olk=$Jd_)IESl7W<$Y~
zfMHUT>~t%DfA*=Y^W)tQ*M`_-YSh6v^0?M`(YKTbq6L&oin|?6`+(p_gHlo*uRR`o
zN!H9sBJx8>ft+jgn|JG5(7DAnXM^l;%h;ct5uz183Fby+IIM{zFvp1Ec8;tWXG3UG
zt!B<7Tb~s#;}ESRDKkRR_yO-Wx`celOuj0_0nAfO5n(CVS)Vf%b1F@v_A<sP06g0g
zpTgPpz{by0{H<k+bXjaBCsU<MCs-pg(#`-)!U=-U2_10{DHDhp5?#=Ga`}!Zn|w^R
zzu`b3n5EP=fbYTL<-B9kq%qOF&FoncfQf&uyLv_JZyB6`Rqq6{o2g(s;+?Hrm?WE=
z$8iMUL+5k8lNUbX&5lrGw80s|V@Ee>mp`XrdoWfui$AkD(u3+gY70UgU1<*^_uW8C
z(TC*PlseVTx~np(3RzQumkC|24;N%OJgur0@I(V?M1&gO2rEYDs}?|ZFL~Pdbq|Y8
z%O%o^aM!$syuK18f<ZROf1AKknNb-<GQ8rY#h8zIGU-1Rg;P|b3{(e7-@j_UC`N(}
z>3jqo>h#q^`jod7Zx1gKg}|d~mqm*R9tgCfiOEh+Q6MMR=jvvXMpISBN+W7k(!Qqq
zYXM0$JbX$+am^{G)|dNJ!4JAgzhn2~(D>pkb6b}!K=I)l=HL<{%1K~cc#YNV3GP66
zxZnMCa7hu89?xM%TeswG5?fJ<qSX6g`GO?@s&OFg{c7!ylA`O~hQN+TU&liZ9qq&C
zgQqz?0ul7tw-tz?{x9A9ICtOy*=G>#B(T%Nb;&3z-GDOa{z|Na<M`qxiK^fvf=<)w
z@roD<AE2SlZ*h~{YakCND>YuUKstcg(4RlRGam~*ewxW$mYS;ffK)FJt#Xn?kC&tf
z{Z7JaPbZBbbF%QED)>pR($|rKAQLx-=B;)dh_6{azkqOAY51;r?4<u)n$perhRyz@
z10*JaFZ1t>613uRm9*2XRC;E%W$q6&)eKl<>=lDWr_h0f^qDP5i#j;eGu93m66mqW
z2-&*d1}r}w?8%ZEK*vA|D{?;-Vw4&cOA>72>h*#K>y^_VtHd7qDnWQRaV=m_!%BMl
z#Z2WJ<M9Tq)L-HEKLAI_OPix-SEq-LDl#A?^YW?^QE`19$&Bw4@uO6(1~!&VGhO56
z0y;PqEN7gm`IOwkHR#f{Wc^|@i#4{AW9wD71cNsCpI(%RnDpWtO}5H1m}2SSP43L8
z<8S?zuy1nYDTlQdfeg1k_VAPu%vhBVwFg_>B@m9$E`2tbLnSDQWF_)D0LIa@4Rk~|
z<V8q~QV8E2%&E`t=lYNvl!n4uSpp5Yywp6(k7mxsq@%QW{NV5d54G0hJ$#h(W_sX-
zB8qfY`NY6t^Wy20yzIq%)kT}oBVWKSXrSm4=L&dAl=YGCQ9r0vxQ$UbUH-$;&^tz@
zDWT#*-s8POwp_{->JJP9IH5FiF&wuV;RNbSmD3_*Yq3BOIzUG7F5@D6Ol)woz(M%3
z>HPLE+$$y)93OZ;M**!!4VROVUAf;EvKbSW1>-Wjz(*Ps^ncrCx7yw_Z5TJ}Cb8iZ
zlW(@&mXWmojH8?(cV8Xf|D@F_ldeFY!?AH=y>@9_s<>w2{*CY1)PNQOFsik=;EUEA
zX6!cBFIoYkBhfOHa_lgcJiS{hS_{kJ=DF`jD-?2$ceSV6rKjThw9r=l!{KrHeBf)i
z-_r6Y!7K{?{2=VL0AyL3Ww_F#pPU@uWn{?c`XuX7{mA%l(>2-Oy1^YYiqz;;@v)LV
z7a8B7g~aqZb^YLX^|DWcmde)>c)y`dz6rYb3!Y37blyh)Wt!Ix9YbqJ`KaS<3V3k(
z<bNt3G+bpi`J2k^OdIWy_7H5Xv>d0GP-ny$1;CHdnsp~u)mlkm&=(kAHkfl&<0E2?
z*VgS0V@1`yBJ^=qQ@;*o`3&t(`pdcYKzyEV_G;7*8zk*sY(IwU>3J_1BMM7$Z%n9e
zx_?az4euL6!A${FLgfPGO|HRC3_+@ce*#+gd(x37A|<+}|Ak?!&m;r~MzZF#2_cQ~
zcjt{E43Hz3YPS}4iwTvsf$P2XKVB66vnN$F&en_oM<1@2geO!#0xaTh+l0nd^KPz{
zA^DezJv70Tk!C$c#dk}iQe&`-bjwUy&7nLWMq!%lcCjNrHL8iR^c05=EuP18CImWo
zRnK`l|Kv*tFQjhVY@S5qsXEb785~5)@)X<C1>F61p8+vL9BtGy6UnbdLUtk}TnOKL
z3T;tj?%|S}s%y~&a4Q`ies<Wo#@+CiL7CPy#MB3Z_AwT4_D>(2-%H+mkr#<{=N|8S
z(I#+zmfHQr4AE_ew*jhzz*Xe^g-NoW_6A-#tI)j1cGiHcvb>TRjN~@B1G2DZ)#IJ-
zBa#T%u<GG;yGuN-G7*!P&MUQ7MiAa{m!k!#ndnGp6LRjlYFF_}n_LE?Kdv?H6&aoe
zFgSE9utEoWh%`&XHE0Ya>%UVeE#efD9bTER-S6E}gD)GFQyX$<o?j)wR{SPpda&<8
z+=t^I`R@7D#aHW)no!aKx};T)&Om7K(&?z6A1AC`&=VxNosR*Di1RgFbPm0QtRPnN
z0=>p!cfBE=)EB@BEK?XIE!CL^hJ4MX-$nI+R>@@R9#+t{WSaHXK!><Q8_8891`?rG
zinT8a&;woGn5oX!(-G#+8&^_eFx|+=nSooov_%Lv=AGiAu^55jO(TC8gZ%yQxv}+`
zD;l1_qjAkT?m8yt-J`733QsC54f6h{Xe<%{V`rTq7;c7E-%W)siFOF!Sc{uf>|$yq
z?Izz@NP1*-Ite@Le?I?OU!gqjmx(RMBcFz)CDWsO++~({{#%h)wV+$6_MqNwY6q_-
zl4!%lY%yJ!SAL`bC`(T7+cTSH4_FYZY%r*I+5~{i?LWZoyzxh<cw?wKe=9D6A~Ybt
zie|amhyqB$LmOlaA)Q+h-xo+-OPy8>+~5vWaAtLI$uOg+ZaAcIv^1w`S8GU7L@x2=
z+$RZv=~_+_bDs!>`<(<ajNu`-1A3mDhbkPFbUecUT;$N_B&|+5wM_?=&p^c5VX^L)
zK^24=$l%(&lNL+2a9mQhy}nR&&IjL}nd)dnZQ0D-EMHI-FN&T}v&`*SrQ&p~t&_{f
ziZA2$l`M-OH&alijRP!{b1{M+nD^j@T(Oyyv@2;jX_33%FWF=D?4xCtl|rrKL1~_f
z;<s{)!i(_(UvdSi_rHu?1tQx;visxTn#vq2qZthpmLn_E0uiOAg&kq^nmcQJWR8D(
zOqdT~z@R23V~S$Z*Pbc>B#;KVaj_@Vp4Lvj%4^xTZfRRMu>ARR@Tcg*Gj(biDb8P<
zJEOqh>!=?bCHMQ!H=4t#^M9iqq@@;)eeQQL+x96*7@|T0!@EnK5LmCBZ$qF-%I$2O
zuwrO4wUcU4^GRy$I92S-IlfwDpw543J-UkMef|o0gV-4>PL~a?>9Yc+Bo(NG+)5VQ
z&trc%9<fOJ@!q|nx2vQpE#z{#caq#c2I2(Mq_4cVJch8v#{Iq#+4GIF)_NbDb7j^c
z>G5&)BkDC2Sv$6Sh(j{0x&}~W%)Pz}>3sLhl9(_}_QFW=g#Y0swZtfH!mL>FQvAHn
zyXK?3hQcef2giW*>gl=w>uxLAoRXESh87cvTF7vh$<41GVhv>)*olwoo7h<Gfr+rx
z%e1{mQFS04u#~{2kqW)tv1RL|b}He4uo4%IPRzR}6}pO~CvYNJiim};3-4@>n0J|0
zx=*wrENUXQ<h(!5`#ws@JY(e!HQ!hw*OcNaUoKT%bk7kn{fjdB=UYGZq?zX{r@<i2
z{IYhxm04@p*aKRv)=Za-iFq+{)P81562iAvJF>+V1N@D+-LPRIlf>4eU#<jRNp`)N
z{9_hgHO8vwTCliR#SDfEH1ao6PV$l2^atm|6E16vG;jK_pm8k^S)yz1N%o?GFV!`$
zo%q?wU=B$k7ak4Ebi6l`d(v(^zY290tr?o%>vGyF$gdQ8edfT}F)FBd>gCn*YUJ)a
z#+3%L?U+ZOIZ%_}^)wdw*Z(0FeDX;Rt~Ze~MY(h4qA~xDx%QL$!e4}&|1h+cIi)<e
zmxPbx5gi|n>-Tsq<#@5=gWh>-<p-E><8?|{S#lqxOEP9@s{6Yb1XDdEEESoQdJ^Zw
z5EoCh2dNvh&8b4C%zz~irS7rE6@FI1PksmxR|^bvIjwNe`t|35`=2^qrbw080N0X=
z+r&BR4ySqe7r)34>I`5R#d#k<rC$Ky>^uhG4PcCl*w>(S{r6;|gVg;_bu+#e4kyz#
z)ttI$1yh-{fKtD7^Oz@)=Tz$+vj$QcF>iuGdkp&|$c@tL>TA>T9<I+Rmmd(heh}l0
zXjtCdN;=%!X+`~dQ`0f@@^%|4+@fDZ6zhsd_!1+ao6?R)-X)qIs+W>>lSL7Y;f0&#
zIIIAAsDX4e$e)$@#Mb^@YSnD3A*@yCP2G6E)up%Y1!*I;^xH)Xm{r4R^~gJ-JK0Cj
z<+kN5BbU_v#tP{=lMQmHrQ~q0sYKr>dewKE-FAj&HuaY()Lu`7Ib6~$IpoNaSWu9=
z%CH!%PxZSK^K>)^**LUPWzYKjFTTeMHT1LBH!sFF00=zoiIKK9v>4oKpZcJ=FC@?G
zn%P7jt{v^qs^+r7Eg1pBYY!Xx)qV!{l26UZmI{Ku!?KBNj-9Qp8vK+C8>FSBj~mAl
z0D0BcPCXA$jMD{4|Gftm+E#=o)a$WXDBygh#iEi#-uN?44K`VB5;l<@-*Jonqx;Bx
z512D4ya)=S!_RNc$BFsCkp#laGfv}4^trxPw6AMA2+t}!N6Vg#jOF#k2An(veA}g*
z#4NB@S;DC@4Nexj{`74<<3iB7_oIFL`H)jyYW<S6^P<!!$83C<PnKir`_)EJ&m=ha
zGTOAEYQ_!28GMDlW>RJ!M0U6PS84ZV2j9fNF92r$=4^ZA1NkOoRPKf6gxH#|-<3m@
z)l2&UBHA9VUbsyU4^Hv;j}&6Ruxzgh{%Spuz){*<e7TYV|NTaHm{>>VDk4`AGHdAg
zeY|b+&xN|R4O>LUn^R{d*;w_^p#yXYsswHGe6#Oc^ZdA!)RvN^Sl%Xy#H>QCUxVg3
z<8haq@r8lnC+X7pQaj34{YPE!4PM8TqjON-&9k(3PdsY>t8MvbO+6EQ3mBK*c~Y8e
zIt2C*s&lWTVzo<!$ENj{ha2*azrZG;qQjqSho6H$)$`OsDy^4sQV_AA>#ga6ta2`?
z{)@>kRLk`O^qujZKEuCAVCn7<V`3~7I+De9-i2|G@)=!?xfL<#9M>*w=y{YDSir2(
zenZcL6K@}bpXVV<fZ5+DE<kuxDn^;<nC!_uLcOU`ZOI);`$}rjnHFadEd#(Z=bnR#
z3#09^$z%JBw11H2;dY~c;&-?3-DYBCcBEx$g{Jg-lgl9)Y~4SXT2ym&;%??<1MXul
z>3k{!X6wPej%_(jeSpQ6{{5|7l@OsWt{wi@W{?>un<6qNdJ>80W)jRds~n$`fM&JD
zV%HQ?qnOq13V0moeymO-|0RQp=v5DGSY?cjc@slc+eQ+7431O=b5h%9&gy%l)b7!>
z6#uABn$@mmKi?J#OkJ&AA@c!Da@4}JzIw$d_wYQOY;l~|JSBOk<GY(6gzoc$%)Y>j
zX&cn$`hKDk1}49z&KC2;$I@l3KF9d_uo3eRWM&sI!5m*S^J;YlZAP^VG)H0oIl=Td
zS7_4T4b`11^PE3{Cpc_heI}`@J#Nx8?_ReuS2GUl%SDX^=W4d~6owVAB45LeckHSK
z|6u$t(%f7%<~jid%T_W#^z1E0fpD__Ypse>b6cp%r4K_B)(m7OVq~eQJLVgfcizq9
zduX{|hXe+J{Ed`VHm&?ZAc7X&_U1+NrE6Ht-EXZAYjg#WjK>Gl)mz^z9x>H46PJMI
z{boOKGbEzKQ)sbBWG?Plo3BZ>Q}<N3YHc|ui0M6po4>t|z-HKawVCP!KyIms61YN#
zB2WZEtqbw^LN;yCk{h36WdC`Y-4}e!On|VecU!fZ5G%%i^!4!eNY6&wz$cDZm+CF1
z2EY{Kr89MQJ$ab|cZAq1gWD!naZ1pts|RKku?y7#k%#X4AxI0;nbHUcgjRK*?QFl&
ztuTbtoN;-KSUS@aKd+y-Z`^xA8evcM3|~U?TVGO1Ad>p`8rf1I+i4SX+vEI}R>Nc<
zuwOB`jRpO-1(Ppc`uy`eYdl`d_5)Or{@(lchMrf=kl-MT&O7j9Bl0loN&;4OA<sSC
zy7drYZdLleT6@3Qrp2LN)2@$|TX*fD<8#%Q-1spqBHtxh#x*)<1-}(QelDsnQf%2(
z%@;T?P47AR06oE>Q=NN2bO8|6)SKzJHYI>19A%%U)F&lMu^L$e-Gh|xj+PORadwX{
zHvA%3WgWw4Htp~xsNWOc&k>w*9`d{h#+pB#v=Z1sRfac#b913q;KkMj5<af60t!Cs
zpupTg)81~<PtSG7Uw=@wYa1&5AF12F>7a^9t<#`19LC{EJsXcBkqURsq3@*+aDc;M
zWxn?5X06W$w0pS4_VC_B+a3ZvOBy1eeO^6lu;J>#QY~w@nzlWo4Q@&ZTJ9@SX`AV)
zTBv~x__VTBW+m{n>LT8dUcD3;$fV(a6*uj(a;&AkUh=fs7}^)q!5DBg?^R;+&gL#n
zgpaVml%PQZ(qD8XGy8T$beV08;zmAG;^DVaFdpclW}OO7I1n~<0hlz}yg!OhE7W+U
z*6epJD2qUv#$!2qy{YxI8JKX&S|!N}F}lw?1lLucIUH9xwBJ{6M4=!EJ8KUQCDlU%
zZ3~E<r#Kx#%hiN<H4)_C9<+8F?SZfe;yHC;BI3@bnSMp{!;=Vbalou5xrwX(ZFh;L
z3eLd2$;R)^Fm|M`a+}z3D}=~riq63+jX&#&=$D_|!v*qilj+I%i2BDb&K`)N_`sKK
za`qm`-YW=D25!G7c8&RfL>#9Do@c>PuVuN^ijK?r+H-B{Vws;Y9XDNG;PQr*T%|As
z!K%b9EwW2kSa_4P=jlUi!*b?v>RfzSid?iYO@w`wg2}q~?Oc1dW0bfSXdO~#*HAk~
zU9WnNp|a);=Yig-@d2|gqm6SnLv81(wbnN$WpPf|?#8`pc3Zj{U4=!TZwzf!J~p!=
z5hm=xV;0&c&iCYx!)!auqx7KGhCJDmo`nIC)!T5LyVA95%Up?sw6kuP?*muamO(#m
zqW)hF;@LA?Zq3Jq)GD{9n$Shl#5Gs1p6)XI2X7bO>!|@Sp&4>fLjK98t_$;p<S+M5
z^Sg0=!ZMdC5f_u8wBSEA1I0E4^y;*J7iu|kG})FheyrusrC_oCKTN5l0zYum9L@p`
zei-FEqv}=e2fn3_Ym?K6UAdLKIv~&I7S5(5;u~Z{Sa`}F(0t0%F$m+KFmJz>0eM!>
za&ndAWh1iOUt0%xeT#kL`DB6wkg>8}(R6Zq0WmdA2ss>m(xT6OhTMf(700(d4%YTu
zE$tegT8?ik`W8*f$|a6R8zbgl8cNR#kewR4tq?9)T`sNt1zu~f3gn!H@mWE>A{Dnr
zVwVD){Ond!Gc<&K+=vn3Jfah<SXvmPUQx8?^K@<)RzJ)$ZQattWiJ10yx7{6I@R2}
zI}o#Z3|LEDbsOwjNHN^w5BT)qyhP44mG@z9#%IK__(`73Wdt<Ite{mn9Yo{a`9K+r
zG14tZlL;Sr476z8yv>3HJ7*27dF0JcO%n9r5K*Ui;*tctz7DRhVKhk}jv*3ChVwnR
zT^j}plv5Vd{W4Qt5fByDXX&QT+)1b3mLrt1Z6VIRk5B_4x;)Hlsqo1R3xCyl&nhe^
z+Nom;Ex6$blv7YzGAM#Vw$>FwVV@?#`CE=!L0c*5S#)J%+aRT*C*ErX@g*WXG$poP
zGGcnD42J)Y1X+hk#u)O4wF#4FxYX4+jwg&~Vz_$c`+&du`21Obl(fB83#PRlemC!T
z(^zIVG<oOOjnvdtvs6Akaev?0XPjd+^?D8-E5hd)gL&zPj(be%4}*<+u4~mYMUR?=
zOW=Qg@8usu_Tqf37QI8~MH1H5&H`N^<%p8|j{BBc<z_hzDumIeK0xe7YDLD!@e4qh
zVQ+U!3VN9=1@DTr+QJfd84*DGlZR0-%(!8h`x4g;OFkp@>S|Ke6JP83Rn_NY4K8%{
zxJ+>lhYqNcP1}4n<~zC<S#EcTkO<ILQq+Q}$9H;%!`<p6(=`<cQJ`2qD`S_sNu(!Y
zjJWuIt<H){m;svrO)rn;{9`jTL>Y`FCn*v-wL&B=eOz_3UaM4TVwMROBlL59J)2<Q
zt~U&lKl8TtYO`r9So(aHKP}X%8$%}~*%~dKK}Rq_A7I{MSA#*>t2ED65Qi*p)1g}K
z0Iur2kt|T`@!tzD`|}jgVmci(OA^671d-p$oo8`A6|+yhtsDq!@uPad;4?t+ZqmeX
z-s^qiL<_Glm{!qp{m4=g+bU?xk~8ydW|BGiA0)kxw7esMWhTaG8=0fQpyP_jT;vJ~
zPLXnV=m2B`qcsUl(HW}@j@xEtp9@KedNZw2V=TB@^k_Zr8ILPFl#hCgz*#1}k(;FH
zK-AG^IqK*$Lo7-{_jLYAq)&2r)QEZ7&G-N77%aPfHu)&nrpM#CT}RuJabh0+UN!9;
zErvwyxDb?*Sy?(U>=V4Rh0Yz1UnOlG1{k5x<zM`Kva#z$Qlv6+ptl}f!A`)6ZscJE
za?TXl$Po4e4^IEy>r9?q;0)MM#3^*>A)BuVqWx0RaStzcAI%^yUXdciPl|Zk7;9P=
zku{O$8iO}ymZT`u>{zK?Gh4lr0N)bFkn9T(6;1`A3rn58Fp*C;$!`rcmbJ46hU}7~
z2gl|}i`a3sU`HDA30G5o#7W?Kxty-&E+$E~>=Ef^V7OlA72G-2BfT}9XPN;1wZU;o
zn@zqQ@W91Z(nB1m+brXWc6X-Rky4Mlv=xQMs~kg_cdO)M@V6~xFZ${3?<Ybc@*u>z
zMfv1K#WRNXgA-sz`tli6np0XOhL|!W-utx1x6&TRq3S)03*aLin@QxDYU91)rwiqH
z@t3q`aRD_;ZKwBVqr%*svH;Yibp0Cw|1!u)5>@yr&JFyhI>D`c62^NVlZ2QCEECJf
zNjfy{+Ty1>cq_#*55xhrU{Xl1*cT{vO?Kcg8Afh>E6&W{xxGpcT;bKo11Ty#3tsmJ
z>OJ_{6cu;J>{@uU|3A;I@XP$50G3YIbh9$=LM=T5VytLhj}R`xDk-b0QQ`ZA77XEt
zw^$ki!ZV%bO%p$Hv!64-f3W2Ov)r>%EY&ka#iA3()!aT3$*WsHWb5f%yBaA8l(Sc>
zn^f$>bLi0xV`Ih0gm>~qa!D1AzFFCt(wR3BcWOt~yIu0XCDHM9$zbgZXIdVk_38EN
zX7!DB-&=Vkq@UaZE$tH*H=NX2VK)Z-!xM(Pg?KdZ`^}5nN1ls!z;pAWeGjS3M2)<T
zZ(3g~Y3Fm-HlBFIp$+=lRpj1|0+~uy2$I!k5E=f?5+ww|e{0)aXC?Ft91}c70*Eb5
zmxntv3HWEV)5;SXhySuaixZ1=xUD32HLg0!rCh%dA^jWq)gWn!>E}%R|3gPgdyCHX
zQZF#$bM@foB@cq2A@<IRY|12z(Xrutp)+04FbWw<)!Vtp@Dh>cIyJ3+96d+nR{V%g
z2Q+huiDEg*UVXiJY&=iJf>!HJw%?Y4fC;J7CNX2WCD1A9x_45n=rAjlI(u$BR!B$7
zJ`lRW&xn?I{xws<yIubV<5xp$7T_}D21_A;<u@5HYlLBPoVq-Zw{FL4@Q1xY5)Ow0
zpqs}M+^w;L(5zL`77Hy8`+fSqz8+BMi!@Bzs#ft!0dj(H#@DuTAb%=K$D?qW8}<2{
zs|neN$MZZX$kFd4$mmc3#_Itl1@>kKZ%>y-?>9Z@$@R?-Q<c0by5VbEgxExbfmuG|
z-s`B<flz^x)v<TAU*MYz!<bR)Y@1*2tKCdu_B|&5|BuvnYU>`HA#t6Pc=7ut=flXL
zs}l^(%AW`H*BVdS5Jb@zCRkY0!L(@AKg<=m^O>$pO#Ck^znBkvA$;$n(8sGWt@jK3
zw2)N(+r>K!+@YZM8i|py9{7>tt7o1`LdYiM^4=<kRiKdDu9($$8?jh|&6q(Fo9IBU
zzopxzgl>v%rOdo~V7@dzVsdP3`>j~o-tBPZBw@m#5AQk+S3=!1wbU%nYltCjMa#|X
zfn}BRIh#pwYqwJ!EO++@_mG=<I$QetM&Ap>4O_ZCD-iQp$ZLkDDyRkvJ%loK=Z7>0
z`4eu-^2D71sbcl!YJKm;<lXkSTq5}7PX=VY{e+sN0eVp|YcY<7N%{1r=BJ=5JO3He
z79)@_J<sbV?Hp;1|MiyuG$(X(2EU&zYeIA_^gHe7zz?DE9H%dGT}^K;TaXW0v4fBi
zyUqR>!&bfIh{Ny5m$<T7eN1C@CCL*6QSwX)PhO(`r-^xudG><Oq_MPB*3)3)Ggo;d
zxYJF$hS|yEPx&-k>_|<VsSSb7c7EI?;(Ax>r}W|a=WqYhum3c=DBsXudgCP&)A!Ix
zG25k|a;E5cRBjHx&fi-%qMEco&*AJ2Fv9?b@)z+S5yx59rxf~6MlVtoO&7_*>jHnN
zxQgDQ`o)HY=19KG_h1-^<$ZU3J_gT4wC+Ao%H4`)Tc!3Y)Nh>ygip98wz3tyshRxG
zg)PxSGGds70yr|hQpHc`4~iAA{_7Ec2ScYErNot5V0<z?K3s|K>s%%B<^^c4jeB%!
z*l@IPuf0o<R(4|Rr0ssz^1}`8hLmG#g(d8DPW~QwRSn&LZ;CqRa1BNn33-6&D?=!v
zX1jW410)A&hb2;r;q!@Zt(-B}FmY)A=PtStpuN=V1eu<FAs7C~aIHZJE_D#mJw#Gv
zD1@|Irk18ekwWAWnoH_zR>uiSEqWUr+;Z~Q4$@#^T5|{6(e)TPRf);cS#{-aYkaDn
zC0UelWqotAFLBLG=wL>c?5433seGqy+K&8fxpxoIml*ob*mc@7$XDyOeMpvCc}A9q
zw(=qSa378uSqA=e7M{(R=?Mn;?dW#d4;C6txzd<Foutn?F~$Os$8*y6P@vNZD)D9a
z8&}1zljkUAwI_-Jjub{kNx8x=D}&k+_pg8O2gG3ApkQdWxtC>D+6}QK(mNbus4<?C
z)*~Q><(}v6d{Fq-Km!^1Zgxc?AIX*ivX#)uJ%=v7+G(t(DNP0qxi;pplamOd%B<6#
zak5fw__3ZT!;JQKbL;ie*dfVMO3qHEH4T1ug@t-^8~+n-$<vAQ)9vaP4pJE&>eR8t
zomSIi&5}>r4oDggK`XZl?+`s=9-a`KV#O5FbC}yWb3S2-dIs3Oc1j7wDz=9#qdGSx
zASYWav2`JIaEanUw)jA@R;TS-j_YSO{ZTdu5jEbX&&P(`V_vHsR&a1yd#%sHh>4Cd
z|3AmL*grCg8!EwCROK?5$AH-?JpeNwvF3WD=Pay|qr(~zJHlo+k+L&iBD@_mQU@QY
z_Pkj|Dt{jt`|sm~`mN)Wlhv6LP+4dtVrA1w4}3*d!2~+^T8lzKi^Z9I{%kTLDK;z=
z!BljqtsPc-Q$ee~dH0f>i&sF_7(aS;IiVn@#5L8x_P1rM$gDN1M&`6M%80IA;hFv2
zmq<)7DF6j&D-~b$Tym(3ue<r?_I0rhg+HjCZO}+xQLe9SIcd%$?_Qy!AD(h5GPNm6
zu?=!qi-^BNArT&hM|e^0lu^Nvi<jGrYvLpWQyCK~eZGMSYEm%Z$>CvXz)m=|qqU~w
zdEsuxgumr6yaUBh<b1n&N!cQbLZfTJk!z3biMIDWp}{CHiY^=lK5kX`Ni27F79Qq1
zCNftBBEzL;7=dHxx&0&xKD1zjrgYTZuIzX#yln}xsd9NkS)t!~KShw1N}M)xw`#HD
zYS;8|?0UZpgGQtw=Z4!{#}5Dd<oRRns~5%uF}#{*{W6HoWG;2_r?lcvA&w21a`O$#
zuV`G4x*45P(kfp@y$T%cdUprh8cUwG3$QWnTy}5hBZ?<&ve0_sQCaE$N4b^TP}_PB
zA4ce)FNw~ltWdYE!4fsZ6}?({?;}tSr~rW6HB-0B7z&I3j+_&PbsX!2>rV0BX*Mi5
zwlt58e|SPo!9IX)j>26#<lat~=mcpOHadimJAHpcW|ND8w9n!6ezKi{yd5mKPbnzx
z6QWa+oOSy<A(P?Lrw3vQZ@T(nmu=W<U%y~EhQbK0mZ5~&9%Z%=J$8r2jqouPOLo(8
zvo~tYZxx<v3DFQM2Q8rEp_v9;&LnX+P?I~GQRc5lP^a=fJ>?p>Ei%(FvC6S@wJFoJ
zDHDvGV-NM2fZcDn23;mTvhE;%@2vjW@k`u6e-)0JA1Ugdr03Ic`vLtHAqPGDtZdD-
zzB=R>4MX9wZK%|<ER<ETK~tqH$KkJlEm}IGxNDyz7DnNimof<p1%m~umh9Z7-jIu=
znfTh&eHiB=7<~FS#=R`G)3LgbETuCss}4xte6yQn#gu=WE0INiaJ|wmHV15N|A(x6
z->_+RD7*Q`IQKlpN;u8P^=%zH)5sUmM7C0<FWbhgWFBTRo_R&{J?3TK2T7w@GPY^c
zzwOb<>7QS>Yo_!6Sn%G8wR@z8rcV&V^wk+V=S+hF9J1QY&FX_Yt`_aGv~~20uCh?p
z^QtT27W^lFWq-D<!BQKh+nrGeWHD;gu8Fa_4PsAvPhv(e*1g2SM~N>=!R)enFV{~8
zUxlEaQR)MwIApj}zg2iPXk^$cqh`V}b=e=jE3%Wx2sM+F&(j)&^Qmr?nU2$QMC2O{
z{}5tddKy{{fA|8U71jCXEJ&gEbX`y{Azbi+qvAzSr7*1cqBnyyBzv(;*Jqf7Z8%nv
zXa885t!hFVHTPa1D3l}fc}6GgSXqhZ(!c8HnT4q`>8<GLUIr-`Y;~9PTsF>CX!p8Q
zx{VTe#7o0cHE)0P|GG2hj$YC?F|2ryypRhnCeV5R5XT+;<*k2t-K?#&aPRQjR1|X4
zG=;z6@b_qfR>sP~TdybXKN{bknw;Bh(>)Gy#&-?Jz?z4c+K`GHlzk05$1_CkVu$?n
zT0T;bC=|Tb;gIW^XF&pvy%Q=MdUxt~ypGx?YnJ^7awq2y+&SD-1@D_}TNlKN*POo*
zgm;53bUQ9<>g2PIoJ(!i-`W)&Lx-7c6dGuT>ez(P;yrtXcpL$oE@U5H*EGPR?!eIg
zUsB+hzEzI)+LsL;@-Lz>0?I)BWoy%|r!KR~y>*SgC>@qDx!MVfKJPl^$JHS#<hDqq
zkH)3nH;2q`jyF~e;@J4?%kzIzgo;};x2Lp#4yo*+?vh2O6{beAk0k`$#MeVC{;48l
zrHb3-T|*!XyB4CT8rNLi5PN2`Up-x~G05>okxx0^=45ssTi&FFgM~=!8(!y2Gi$6L
z<zD-5`u}y8`OXkzVaMg58sdeo^J`IR8}zjLASG_oVPuX6m9vGZ#Dw0T@ac##id&qO
zC4g$<2hjB5C%HB`*3v<loPZgnlnS95Q6dM!4AC63)0~DmxQWeJib0-x`A#Q=5}FM;
zZCG|4k$2zD38Z9@5;~y>f~AnFH8RM_*1X!*?{L4%LQ|maxq$pjdARMBi5AS^H6>Fg
zreHL3557x=YGqgD4rglqq&Fg7Vc^BDUr*74?TRu)o@Vl=XN$bLA;0dDj_iH*My}k%
z|7!|{AKKHIz!iQra<x*wVfr$oOa45@jxU1O%n^o~Mg{a?EU8C`Q%h~KS&o+a&qPf|
z_{)0nGd-;wz<XfJklGUC!Z0iI-%-4>`;Brw6=kOp&=0UFCJZLGW|3xmU{ofz4;lQZ
zmuvU>5xWE%V+!{9ggHO{4iysNU~)68E1E@Kz|yv*{FY=DHNjNU-M)@tnFR%OV+1T_
z2Tsiu&Nci?5}3R3|Cng;Nt_`0T_dm%H-W$OJ1Q067bo?sMJRpx@Y!#g2)N^qelEeL
zAjS74h`V*1v06brwV$^7?N#h_kWQ+d^>u|YAP>SG3$u$W&DJ+G(}_9*6X?|}+R!7v
zqMDO83Q%)+_Vt5R!)?iWAgaQ&r<xs{-jaU1)UNc^)=u?W4per#n}|Ej?C-3)y`a>a
zux%@vA=l_<MbjbJ&Nj_HJpR<pNN@3QJJ->!`E2+elK1e@VrH)vE-zI}y63~h-~BW)
zF#78mTHUAD_AwaIA29np?t^wxbQ~SqcXm}@k<f;tk<o3x<DZ@2m2y{kyUonE1ntj`
zs7s*Uy9o1BVc!&~zNXdWEVMGBbo$a*4;qN4H-#sjWR_Oi@OEs%IMovPU{cD-O&=KE
zxXZfQqRA6Qz{2qauD)|&YOK0rialStKj@oC#YgRO>JkO?0(E^~#}a+bxgLJ=(C8W&
z1RG+T>x(E4@?mh>{)p4;%rCJMZyg=lIM8A}V=TqkwabzhiA~dNrfJosx^U7!&fySK
zOUm>oTeo%d1;%mQK8jEBSaA!?NyZ>|TQ!fqLL$NUWRwJ~)qShuhQ<jdN-qKcZ^LQP
zU*`?S8{Iyq*}-9h4sMU(4w4#|@qr;<kOzJ81t<c;L{P;8<hF`=(UCuU$ra^mQI<E{
zw_99s{Q6LZDv-G=LCso``z<rMyv6xfsvUC;F}kxmC^9&t?vcKI`y<!?WdWe*TPgU9
zSkw$71;4vIK48!ayr0sGlAS6J4pFEc=Hw#h8las4o2>(KH-(?HJljpI$X|`&P(7Gk
zyRT?M1f1ISlNE^-6RZmqZA=~psL4XqWR=szvyx9C!w9=**PFG+`?Y47x1PhV7$O8w
zp&Y;1d$lqvQI#{pv2xk8pjnpnnd0Q@yRe*|$7Eu+Xe>i^zoTkp2dm*c|9`;k!?p$#
z9%9V*uv`}>T$Hg!IPY$oE$iIk!*pB)lp2T5{gcp->-a9oyX44n;-Lw7?+tuYJ>8_9
zKJn)*xUamgYVub6FAC_(NhhM%a_9X~tF=6v?~3|MzM@YwJXzm`8stpx{3?jE{g+U~
zxt4t}p<Q*C_GA=<8N&#AX5)5U(LwDr_(W~>XEcvN(JLLj%<rFE5@Z#O3c(mQk-!*>
z-ch~8aSxm1H>Se_pUG$SZ*Oy3PHk4N`^9F5p4~)8Jy+Q7u>HZQF?iHoK36xV-=gnd
z{SXnVSE~Q3m!(5|lbG%GeP2W5*<0DYZGl-RXR0wVg#h|5()(9p2@nhiR%hQ~rsYuU
zFE>Dcs2P*2BJqa^iso4!h9_hMyR|3_ep@0M?3eB|>bv6Ju1*ig0rO!{HQKpDfqP1Q
z38Q9}BJWXzF#Y?gBB<s3cRn9`JHy&Rwq0$Xgp3nNe>>vxa>m%?7>|!4A){g^Xi=X}
zuj_fW2NBzA{YhYg@jZq@J%gfq3bT_1(<Cg}B(Iy}XU+wO597gNmkewubVi_OP(eP+
zCJ3bJXE-RJd5_8fDZ3wUJ)|AJo2U~(5P$~Fj1IYOSt>$Q2GC8j4o_E<A%njk)e|Y)
zb%LA%;aP{aX={_jsKkY4ss>w}X;NIYt6Ccfm-Fz?Np`ZlPO;#Yl!9%k=nj}iUo6Oo
zav7ie%!wz|-S)fPF_=F(P08Crf{ruR+do6TKAn*(OjAGaJ@#gK-{1UdOhY&}CzC~0
z2MR{^M>R|kUxGtCbOoVI=hMhOqI}>pmVX)FDjD23j*PnAmi!*IOLy1)cz-%~%b1cJ
z>U}`1;OnyULot!1jEUbh2mEwE29L-Q7KMa;Q2yI;O2<OK(-?8lj*1c}Ps&EpMG90$
zRrY924$!!%uh4z(=*hnx)@}cgr#CyKU!+In?n_#omfS-Xmn?Nd!&P2uPRTu@Eip(u
z^5cuQ#apfO*ZYWN_#2kI6ubM&r%5^TCSBW~@b`uCZq(t4X|08hcDc^oxOM)2r4daN
z4yzAW4Ra3WTt@SlbRwasVvS+Ke1$VfKKRq+6O$k>O=PS~Y<hZYjMdi37ku7dvyxk3
zSdpuwb6mNYF54D#`}Cngq2Trs`>i!^#pYNp;=n1lNFvw>_%+|ui+-M*J=#+LQfMIA
ztN>_0c*(v^gC&Nn7iBh%|3gPvksFMnLXUTXu`nz$@^i8pciJvR4aK}xU94Dk+?f(>
zi6~6T9yb$G0+aJ_>4si2(1OURmh2mjJ!fof4Hq`4<8sg(Sp!o)o+cNS>Q~Op$=pUh
zHTSnk0|nlJ$g+Jao!Z)MFVi%$@D>%Q8FNXaMb@%kAZ)+FfVtcCgFjkU5G1r|6fge|
zS7#j+<@auJ>7l!%yM~tTMjBMQQ@X*SyStH68fm1v8M;AAx_bZ#i93AnFYda3u@)@e
zJnxC;?9bk>_EXgsHtcEQzx0S|AR^nDlcm}(SK0mx10gOOORU|YzX`*07juu^r`K7|
zmXr`I%0G?x*k<KCGX&o~6!0Q<C^}>$t9G0Kz?c$^t_M?jTrs5Z^_kB_r#Z)%g8|N_
zwR?n**A%GIs1s0Ia_>(_2XGIum!E|{yJkz~EwGzCVq6Pn#;0{xID`@fzj1~I3_M65
z!N`NuKH^mrknI>Cu}I>7Np-!B$~P?3-!2m@t}rg?+$I}ml{xhJ)?R&H%0<M-c1ytQ
z+#w(ZsOMorcwRA0d^QkRHffvrEa!6>-Qc`_5ytmXW<1H*_`}Cd7cA?FBlJIwz0^Mu
zo95>+@M?wo(LIsK6o1oW2IBL=T9}W<Y(>AhN|5jq#HTA2mH(lNB2U?b5viX=d(R+y
z09}D5zgZecuMQVt<WAG>^vCYhzPQ`t>(V*zDlmQ&d$|&8ASb}5M{dLLiBW3DR*I>(
zq9?PC6NZ3)d}~-rVftX3Lv!XNx+(iT%kB@f*9k-pXs6dBLb(XY3OrhiqnC!88EGVo
z<KK$-iaB%9Q0-gEyrs5$`UR8=h(UypIlWLs2VrA`3`-9R$|DgmRL!=40mu2Qu7xwu
zm*)WJkWMH5zzLH1eYw<W^_T&_%U;uH2+hVGcNt~ZdXMoG1f)@+mu16RML!TurX>sh
zI2&K`vVFY=M{y^fioR5rkzQPBB^7q(7B37C%86X9`vLJU!kxpWD#XP8Nc-^o_sr2x
zAHck%ylj;VvdnQzc^?k4*PSzX1{MK3+*qkShh+%)9NAQFeum7rL#K-CHlkF?szgz!
zgov2-m%&?H0IS7Ap21QJRHowDREhIs<+onhCvM;Vf*Cc+Dpbnr>WJ{?=zhD8j_`dy
zfmmBz1%^wkfAnLNyuUVUmirZIw!^53GB1F@nTqI<14B<hb`8{NhIH$Zuj-C1ajuu5
z_Cn`#Br{_+4xA;J2YHZScAQGg?%{S=EwOYZwpFPo6BEDjiyfM8Wc61PjzXn6mSsg*
zlc{S4ZD@Dd&X$2@Fm`s$Re1+jgCuO<9Er<;!&}FS4^IAKXa4W|l8r`96vRL0WYRR^
zSDp&P>FpPrqs8!Ml2|t4b2wK{p;N<U<fA8qjg_Q`6{CUWMvcEd_F!sKi?k@AHKqE{
zr^EP26T3MAM_vYT&aEu49MrhbFwHGuSQk)(b6^dtvFw6BnB^E{Puo9{ec1?9Hd3b#
z3XFH6Dte7AvB^>973^v1ys2ECg3KT@z9S2j+;I@6I>w`~D~K0`;yUVh0CPs_dz!)#
z{y)FWkVXo>wAZZsP%06AdAvFfkwnZv8|E&nP14P*efUu2GtP)tn3funnlT#87k5xY
zPyZ~HQaEAfayeW*1|P+ktS17VkhI0&ygZu2OM7ryR5MDWkY3uMMqjFDD8IK7`@3}1
z6#_iwu8A+ubjx@_V~a|537dwdHYF=S#I%=l(Xe-v4{h@32#oSaobPvEs&L;~l*bO+
zsEs5C5f(yAgE92*G0J99&*FltkEV7lvQ5O*6(Z0|g;=@Y_deD!Y*sV)GOp*{;MEx#
zPL&u7iQEp!zvLj`LM)x8)<Zw9;4S7(QeePwun)GVVAQ8s{zvF^P&3*%HttgCh4||F
zDn#-RR-fVaoIC9*n`UA9ciTZ>GI;`5;^?Z|+nJ?^!iOyH{LUC`H&P8b-f&^ov3ZzG
zRM_{1ve^A8q9s~8D;TrUcGrBK7_B(6*KrTY<DUKM-id^90DwsBoGs@5%<MLYocQp!
zwdKHUx1Bplm7VaI-U(7$&O+g6`nE9hMm5fLCaH)&DNVeyVyz}s`tDr*+>NC|b~iky
zv>kt3$0dih3aZCSnqjxlXiy1nG^{K#f`?%|-Fb#0$_@H?nudq;-)S3t-cH<iC4_lG
zIOkks(^|%+m=j%A@c)Tbm~}w2elxC(b{JiSx@?p;<5=G$Oa_;>+oBgMkSrAVi8OF#
zTI@1X^<(b|87RQiB$uq$&R9+UiD2wdhRN<z#44AClc;47yOigJf)abR3bQf0zWl0)
zjJ1Idec%WG+bqit_rG7gQ8&(WzsoPMv^d#)iP0Et6mxX>T-qoJKzRQhH6<FqniU@R
zjRn1^qEPhizUXa>-~p39E*8RNEKS$+HNHSTH)UQ0?>cl2_w_X?aJ*_@x%LxP-AGUY
z1|2I7qkql`s?nXK!F_lyS7L378lE5lA)I}07n%g`Wd^CcY@rs%d!G|CigLYzlq{^3
zm<o~+ZmQw%{10L%#FuI5sg&hELt&!1L5W@?8NK1LqT<A(QU+kz>91~#?a(N%5)~DC
zYZM=kAmLQ2e6!048S#yk3GRoA$njnkp&#kI(a6){p+5ytcP9R6jiwb;@`FBYn8zy>
z5fRz7(HT07ByjYs&e)iOaL&jER+sjV8TFPtL<Nw#=3;i%s>3fU2U>=pPn^7~`tRSm
zNLxye-_aejwVmizKvxaa!?G%^K@*Z0As$ahp~NrxTD&5|SlE{-RE}QZ6EeLiawTQe
zTwvpHrLSN)Qqc7N3@XHvjVy;jB_;CLup$Ud-n)u%P|-fl187?NAgJGQKqX<Y%aH4H
zpe?PXkH{Q`ZZD<9G8&W@R}{Yz7~}R<U?(`cH2e!BU6YK+&u4Ms+Qv#0g6CNyuKAEs
zF@v<p`_eLGTqyS0-*>v@q1R|>Pe{8g`8+UIup19sOAZ98Ntzgvxh^X!!W`-=3?9z7
z-D87YHhB4N<-wBO&HZLs@df9RAJZ(a@kSF3ktbTpcTRhraCKJBXDg{{S^|mGsr!I>
zl(_;2kc?j%!0|yC@Ds~?xEp59sjuF8K*sctZZrT?&p3+|#dX1^j|p?VPgzcN#RB@$
zHvsiU{iwO0oE1u-*O>V*RXLu&>v&a1CX@PwX=3d7+;6u8FG`3W@dgjg15UF51&<-W
zbmGzQ9&|`q?R#oluJ=aqTnIz78N3FaxquJpNgOpQ`N##i-`8RZ{eC+0<ij0Nc&XW9
zmL#T{6oiV?LLFSDE`LLVt~5tkQTtvK@qPe1EGJ1A+=>rkwm!TwFVwy-zRW4GgI}><
zC1509IJT{7X-(J^`O#JNXFIEut+7>wsd^oE@ehMVm1}rB(J1%mtcFE-C~RYq0*IzB
zXoAdMh8$(-O--t$I`)b~O~x8W<wl{>4ccy1g+q^fG6Ie&TN+75#tznJP5uSPFY4Wi
zMosMyU1|;-?2JF3U%b;2IWTvL)7^+Wg0lIsa9V-j4DX3k6e?;rQV1~D+vL<bzT8U`
ztw9B&HS$^VTY?4r$QPNhM5X>UUkl>V!D6Y_iEsL-7jjWPl6u7+`irsdJ4tceTGNWq
zPytmQwu;sxX7`xBuv`tf{h8^PH3$zOe}61O!<V(Kuro?HyWwe8@T6YYfyVxxVxCh$
zR}mrjbM1Ewa4={{glHtsJ=YK)DQ-=YCnkk=wu)0uTG*ZPrz$_?X$K_o-I{38cOjiU
z6O|!b+ro^hP?E=#KCYOZAHjYl6Gs7Hxuu6d{)d82ld6Jhgp7Xot8Y2#{FYx_u&3CT
zN%-an>$~`}4;LTm|CEFSwJ%X00;s08*7`~wU>&x;k^vTpkZ)9d&AaPX?KebPKAju3
zs@P2(W{Yz=+5409M}%Y8+peMzed$Bq9%R)3tm6+XKZMmS|0+YvM^||GWb@mJNhVDK
zZ=@`}_>4i}?6>cvZ|JJQ8c_4?{$kg&<j;dB5+2Od;X<L*BZf^x3a%q8ZJk$7XMC1(
z*K$~6D(nOWg;AEdX5N}DH8*+AeCsU`=rU{9gHl^W`Kz0%dvZ-{SQbK9oD}f^M?~SU
zlmQd!iVa>&J3>^hPXq*-{;Bnzg5{#W&i)4K91Rk$RXCoaZzL9}w=9aQKml|_9v4tN
zY1dvG>RuuH3zUmris(mt)P+~8h$zg<n~O{xlB|Fm^^E1wWKZs?bWh?Wf)(;DB)dk|
zOQAQbD{Y%1uFkOpUulH3zKuv+SF_%*#d0a%45RMW?lAT2H-|Y!i|qa^*_})>m@KN2
zPRTkL%DE+&L>e;3(+^%~_EXhb0ezp1F}aO_LA6NEy~94rIL((A8mc>&usOhRFazY|
zRNq9ggx;I_)QTo9ig*pTxajyPCqSH(oyb9dZf?*8WNC69PoggQ_B>`5n+$ztgORg@
zV{qtA?>G>DRidme@Ad{5+M8kD`l9Rv=X^W6Ht?w?92EmmK6xM}Dwuyw?9G?>+wAGY
z+4vdPU5z})nsf3~uVm1K21CEJh#<043O-S(*`skpYZ7<Rl|u0-f<@+NSh*?<X5I{2
z$F&B&7;QLJKk10vTDF90d7g3S6-N=7sQtItYwT$Jz;*(y9m>4tnKT{Jr{Gn25Z2=a
z|CU9@E#Nbf{=k`l6iH{{6KmWhql3|1ut$l}wQm~=n)T%>{BxkyTciiL>R^~U;q&r$
zf9YWRzWwC74q?e-hx;YIr-eWSZ{2JT8Y4<uDMsT^oo3TpMbFhm?CnLUc;*u%iil=E
zv&V_Q9X+Z*SnBUO?}UV0xG$!`G+RCy%96NBTU`qtR7~CD=^+dR6wJM&Who5%+eh)N
zHv6N%8#hWuTOW=WkJ=Lnlfv#pV+5l}V3HKS*yARqR_~Y%%NKykH?;&i-0Vlv6!>V~
z7$&Td034~5O%_MmY!^%!cJ`e3nG$*JG<cNvWQ?R_DWS0Hf1F~Gp#?gW^e;9BZ@+XW
z#2BJY*oQzMJMAUfO!m<*xCw7CcNJz?;fr^0w!E8~U9aBWr&JpCCXYQZ4|K{o^WB?V
z(pas5q2r|`{DEP#R_psb%$c28Y_o1@=}DsW#>QAU!O6RektT=jl(@udt{95EtpU?@
z0p`IVa}^Ht8L>?*Thn(|Ulz|N+D`Ou@(_R>(ip8F6S$a(F3P!Xxx=^;AN}Uaw1h%W
zL<jhYY3zRkOi<VRmHif_!heWCM)rB#5JXJsijz|f`p~L~9~xs}w!?jf?Ke3SEW^HS
z^}<GCA%SYNOBPeDI}=2MyrSehX&?l|6=l~1OWM0TORQkbu$=_Vph~vQiEpI0bBis)
z#MXtG^OP^n+rlA!_V(UiZf<TqC1K2d#<cHwdlo3;q7CRa>S*Z+QM$lhlteK+(q3t=
zXXtWtWpgP~c_6a05pn}miMc~nW**Yx)vj+~e%aV&51d`4Lyg5PB{vn^-uPKi$qXIL
zZoPH&sBDQCEZ=?pICF!)wn=5QZTMnrPI|CAow*m#enpEK9M~%W-AOHvXGJJC^S^Cd
zuMF-N&rMaksQd<ONSQbP5b^6i^jq$S0E0&D_h)QfCrx@fv5uN}(k~<0*$&?~j1X5d
zB)!srm}$U|5eGIhRKE?8TuesSlICO!q_ttufbQR=nK;j@3Y!yk^<?M?H8qk0k>3Y@
z_?kj=j27CdnHd5fY-IJFBXPwsb<n?*k#^+?z-(k}A+wS!VqW+T{DA@mnA+hPCT8Ei
z7+5b+m|9217zuTNO)zw+tNPNtU+YFc<#&s7kDO9*O(126a%PM$ZPKEzrcp6&4s|~F
z*LmOcCoJ|&vIphQ_H^AJ>qto_l2+{=Uj;x_q$Bgx-CF^4NK0CB{p-Qv6wJ}YevS{-
z{8Zc7DKu9K@OucboK-%9pe7e7B%&ce_-%6d^EN$!`8+?imLa`Jf9y0Ry@cQ-?dQj6
z?&2Lnb6ie?&#RK-&M%(&^YPzl4yKsmue(0UzZIOBScwxl)kepNs5}R!$aKgEKJ^)C
z>AGNOHhK6SQWQqXjQ*1S9P7QnJP5C;{E*Wr)vB~g@4U;!^($0TVW2>+Se2#9K@q4s
z>jV?gy!XZ{_l(1naaMSSwOfvC!O*)>FkKr6A6J8)@7pgUdT{y$H>8yX4!cON&4h|f
z3T=!?s6Gp+TLetRl~r)yVPWJxKhG2A_7fK@KJ=9#6#;W6D`v#i$ea3L>l&Y{5}0P`
zTJ}IKS8+z5<Yb;ui)G86utAS`deA~vxU$gkXtozA$S9YGpO1NL8+ds#$32S{`-V%&
z|I6Q)0Sq>?L@UppeBeW4tu>lgc?>6*FSGM|G*Q(xjhV^|Ddp&z;NK}~5dls#6&48x
z01#fVdLG8#AV(zSq(WZn0fb;Zl2T@24Ac+MYrA_x=(sH-f_*O!GZ(eSOQ<-wA&_i!
zG-vI81G(tKOmU0H9-2sbD=Sq)KJ-_5#Tkt`)_UV@&D$mMIpV_DjW${Lbr5_`pjq1@
z<m73qBkLxw&d=TD7Ar5ZpM-j6odWIVdE^iiBIjg~gZM3ugXnwovoyK1W)?KSJztoq
zGNM5A>~JpVE~3k$@Ntb#g6bB`sfFGZFeG@|=EhN251;JFSk9QYr4QQuWFtzS&|OQP
z5&bf!-j<<l%tVxeSNvyZeV8naE_h2OtwASD+PI$TTlG)|xzZmZTpzha480{VV~}YK
zG&5#Gvftf7i6(Y%q&Ul7_ep+$52n>JJ2Vmgz0}78#41Al;S?)B@zNN9%k8(O*1$TK
z8GL%>{!}&|O>7G<nfuN7H61O%fd>9pBQ!wfnpl;~h+N39S$G`2@Q!pTvDAV5<$(mQ
zu%xX+qL>a5SAzc_V7&;JuuOJrKD5(*RH~_)q$SwdXx;0^_s@=+Di@Ph$D!Tg%1uyu
zsPch}Hb;Qltj<WPreO^C9%Wm$JU#6D7pjqwhHVhk<Xw}D{EF~sDNUs2<c5h%IKk-t
zN4U!g=>f$9%40JiQ}w{4+2(_9e8oew)~qgRMldY9i?o{Ox(O=9&5+og%&3&!adPu}
zqWZ#ASzYU~z#ViunsaE7BS6~Qo2R^1h2itLM+EP8zDJe59;B{<)-b9i4}%!iFr{tN
z0AM;V`K81VS9it3lLoYb52j9(6m(WU+T^N?^otTj9vco50cJ-Od^8ThT0FkKws>4i
zFU3f|lyV+E>zMr36Y@M4en{Ol@Kk1w`cursF^CuH3sQe3Nxyzt7;~_mw>_+j`u>h_
zyz%j9M`&PR#zb5Lu=UpMVhWp4%rTBb{yq^I@y7)A$fZGed%0nFR`}m$(F<I(^hly+
z#Cl;S5*AyogU^X2s<-GKIm)eu61uq9$IU)W)lM*nX|ldbc0hKY8Fx1p$z8QNLvHD5
z%6595oIAd*d*vHXUV$3@F9u3RMn<39QVQM=!poE$3PFm5&vR?H7{VXQ*g-22WGkoB
zoqXA@H=9|9FxZYP0;f<ZdP%mI0v-ItR2p6rj5QA79FG(=hb|VN!=z#w_0pH)J`u~@
zUUG?A<~l)LNOnf|jyiR)9HA!o%#7@vU!pbUIVI0vIj7gauGYtwk7<;k3`T6ZGqMTW
zXVsOmOG;{i^N#c13L7UXZ#^O3&05-~MUEY7{CKDnKKNB61IsHq2klC7)wEnf&OXWt
z5zRv6x{2O^&74ox9<DQx;;_tVCp|baHzkc`tUQQPy|t#jt7eboDMx`ousl6HMX^1x
z6n);2)Z$VozTEOu^+;jKa8z@jP7bwW8ZSJoPVvtK7gt3-VE!2-sM>8rD=idT;2Pfx
zvr6A=47X}Fv$r{PaK2Gvee*!tc_(rzIrD_T3=(}UI<MzVEx(Mc!>je+;G8d_uO+rv
zuh$kgVe*-+j)bza6UEz|mi=U|ge-;C$bmBb`FIA#PO8ykRXC3u(5<O=h&i$SGpFrO
zOz6Bxxc~PP!}EE&ProDfJn^onuDV3uapWtC(uf{>P8o;lJ1!rR3z_}S(4y;5!W}D*
zf8rFY<Y+V%uysA2n0gu23U4_36RQox=3~q}XKSaDNg?p7e7!cNs=MXGWiZru+w-9}
zUdOAgXffjPn;rgVQj`L2>70tMYjP;|_!+|Q>W!n7hMbhKCRZdF_4|K`gv_J`pW~&U
z<3`WVQigwbL9;{&@5Sr&!V-(g7asXq{e>~}Z7p=ZtC1$phhWRO!DN?=ldnj{w8DNu
z)u1nJC#C_WR}M6FL{j*iX^~ci8om<6g{Q=*FCxrgo)z!nfVAKqHFu-UBq|7Jb*C4?
z-->|pQN)s=G)sJQIqKbkA7nP~BV84F<6QzGZX2@t)TFXLF-~A&TtKaql}`H=_T2i7
zwV8blCk@#XGpmSYEj#8qYX~;uPNqspd<;eFa5L7+k!_Vj8dLS{$1rEbec}>e2yi5#
z!P_nM&VxFUwiUd?p!y*DEHMaH+2^3F5u8aMEPt2^yw=DHX<P|g1>nFcP7V*n8R(@a
zum7^_X$&Y12Q#q>9QJ>qxY$wz{$BMw_Z>fNN)7KkZ|)e$Z<jm#&V}9+uil>@q(awr
zA1s<m(UPj%MClHuQe-qk(cds;!0q|K&?Ag3<OQsV;XH!Y<<|t-!Dp$?ea^%*<q+-o
zah7tzj;4=gP3`$)%gwD-`UIYb^$b3U$Eppm+|P;gq?GcuwfLuRNKS1gX4y9ibElDf
zj=Txf<?BV4bgCWz99BJ0;90^l8Xevsd%|rd0Uah!gFk$VRiz{GWseA!Bdo1JD}s~p
zEIsZ{gX{&(=Ao$5ib_a44QaGg3+C#f6$KfPE3W>}#weVLM`WE(v1&=hqj<l7MNzv=
zEu*6rULl59IeeM_P2EnC-_!1qDeK)Qo%<E2yCt%*g)B$u))XQq*0!II4KV6(N(!@*
zmSD5+y2D)(&Kr^}(+ic~8*_3vF@4#GhSD#VyA<^o@zkmvZFR@xzuV9ewv*5x!eh7C
z94FK_#8My0;rd3jW9E|oF+`1j$9geX<8lpi=#JR7?ai{9U}socx+ewo(7MP`TPiT?
z-CeBn&yD0E93|d+y&jqeeKWgL5jA>%^=7YWaKgj%+q5Wc?6by|yN5G7cN|ReixdhS
zU#~8vfu*z+_vRWE_2pCVX|_|<+ZFfQoUQP(Jc}muGL=WLaz=9WOug4`URe$h4=SoG
zz=koSYfLj!^e*)xqHu$QwZ>NLYO{3VQs+dY^n(0k<ZJAg>1S`du7iPv?oV=YMYzpc
zZ4F1O@N7~=UuW846smunxKu#m*RD%^>%6OqiI{n=$$ps<d7v1*8h!2+5)u5Fx=fy+
z1E*(esgWIroy`s^O&mTFB6e9gG)&u-7D)}oTDU7he}s?=^b>-s&aT@LTF!&+jxcd=
zH)zQ!4uON{MANrht?X>U$Xk(iNn#^qnHUgN;nRSOT)w_LDx(`uk-a|&$|Ro^y_S8S
zY?~!Su4MvwvQKgXg$cCx0L_4{vNqBE*_(_u!P#U3v3WVOrt~pz7w;i{3JaM&_v?;W
zN8@Fr90#KA>U|7{cpA^MJSKDg)!$tzmX9n_BgoF)JBd2p)h=ySsHvy9-sd?V!DFr{
z*xt^csG&+wX<s#3;XjJgH`kYaRbnMkhWA4cN>p~8_hB+7Y`Xr!w2wv07C)kmH`FQ+
zzc3bgwDT_};6=fVH6gZKwKm)xnu93y!qXRj4D0D@B4EZ}Udqg2+2FpRle@e(N!G?z
z4DP1d!K0>be|i3^WjjoPG9j3Nq>Qzu9eJ#TC_+c2mY>3jK(r`Hu(KNMwR2lQXNbyU
zon#cHTc;~+C*`+adj8S0ESUP_H>y3%#YFJBj@A}lx|fajf^&6_luuujRAao)4vo9_
z?24E^11fNCmIV=kzYlj0mGH%l%Xf!{f~{E{{KTEefA+ygF1_g^WqZvrK|bqz%g?hB
z=Zr647Naw+Wl52SP~@a)E>D~rYs@K!-Q5OhV_NEf&&Usdoq{hn#2=Sobae8ywfb<F
z<EB_TIpfr3OGX@rJmY^m)dwHvP??u3E{Dkat!*{UMoS?%5xSCt+y}pFjp^jL%;a5%
z(@0Lbppwp%<DTSKOt|=lqi##L3E!8i0%7xoov}VF{PHlY%ETSRyza^oHWvamCi>N=
z?v}N=olc=^S@f;@te^S``R=#W_Z>#NRb%}UC>bq^1t}VK1i4)}-m0HEhD$s+SZ{l^
zjTzqW-+<x+cz*`;@(BL5rW<|h^bQ^_S(PiAmU@11QOmbDA%j5!X=LZ9+>u4B^YR)6
z>o!<B5%#<m<E))e13Nvx>2zp|N$p*tTp__w)DoOc3albr=$=>gw`at<PgmtePe%`(
zh9TO&8^;p_T|VTRd}`p@4+?m5Rms(C&$7(5`@4HzSziz2w<CRjjDHI_B!w8ZF!F_D
zA;4w^6ZRe<$=RjK)VL2XvvftXwU;tugSrPya4u1U8!_!`H8cr?j)H+haD;+C5D<Gu
ztK%E^Q}}G}B6lUaMy<d&TuJYV39x<Y=0^+rxK1Qw*%$y!y(4QdvUn?#aW6U|=L_NW
zBo)^!J<Bq>&3eLj!_Ik#x`lyA_opG<IiaGBD)Vw{_mW`)Bzw?-YdWkOm+H;hj7nBm
zsc`O8Z;{^P6!)6bF+rDJdoyqOB@G#I7`12c0PzofOx;;U42eg6$*_q@9ai?OSt)|E
zJt-kmeW~`yK8&@KBSw%=7;advX^n7La-&wZ;bL1Vq4q$BPMJ~R@ML1RxK&${lM*Py
zrWHA>`cp-MZ0<q)`$8Pe5^!Rm66g3?cdULQ^UgwifD`J)8(77{Q`Qg^V##-j#ozIu
zumo49l|FSlX;yZXJBDN-)_VeB#z63ob>kjiuHkrp9U;mH*d#<;XC1H9Sz^y|$=|{s
z<r}-JS>t^kMoguB=e@U;c^%@O4r|#k;l-*p!=)1pLRR~jfD3>M7i>v*F-W=^#m`^X
zf01kz)2t4u<@*#ulvZS+;FU>WPcJs8oaNr+*I_mAbaPh=MW^0={sBQ66@lQ5p05-_
zoqMB!P;A}Jd(agLt*5pNwP8I8F{|LRg#M1fat8d$?UgY0XPR&9GE*<xZK~^JPi=Zx
zi=FaKhn~c;e6Y*&4w+Um^$ar#@iQXRNPFh!sd5Y}pRPULoY4^6T(dk0WvFB)yO<kB
zb{hi@O87CiX&k=gZIRhS_b^DmGpvAG`97AW?K(t;E8Ll{X)(da&0vLn7~ULVHZrG!
zG)0K}ko#PGS0G|Sx(#FIzL?Vne~&C*bE1kzZ0M*~Ds<;ZQC$)Ydk0LUimnG{n8(<P
zrf%vARY7*At(EcFcM|jXfncAg`?u$HS8Vh1!A1n@CS71T48MVjeu&g#f>E73MV)kx
zNl&jG3D=S0Ag?;XqR67Q9eR+5C}jTm)OKR{+^Y>^hlY?44VAL4_G~bi$qBneYw9<q
zD%%-ha15PAIb5F9lZ@WOZzhTsgYyM~9de~OL&)w8RJN?mf%OfS*rQ!?wxwmD9mmT}
zrGV0C5Gkx48JB*})q&)F%Kp2V%=ORW#vkv2ldR&wbK2jLtWQ}qKZUSKCKxz};R@G;
z64i3hs80w5yI{90AxBW@gyV*hq`TOSN{KF*RPSxKZjfa*ZqK1_He_tvj^PKd1iFNL
zC*YDVFyn`DSgScsZTyLWjT!j7McAd?<#MT}dP71G7L2tEHZqK87zo(#ZW8Y_NnK)f
zhRQ>saL-$q2RI#k$@K|k@f54{n(DFe39_sF)fSzSF(K>>GWf8eM@xo%^%VLD5<*zL
zv&Mr&u``SmsgOS){o_B@wqqnT%~-#10RAfu&T<f*n+AEcbSVsh!e=jXElf5zXcV<v
z&tcG!P46O+I_WTsgvB(zc7=E1Qlfr%3hO_35lC5c9FE4I%c@!)evcOx&Kx8`kExHC
zAYOf2H;%t@m$QK++mqM#<=4v-rv@uo&^=VqST71>c$t37XsPGOQc>gc1X}PAX_mkE
zaOU>?^AIu9{xTb|bvlklrZI))pL6^}+{m)M9(*T?-;ws`{NxXxokY0>*gkht&4^Fh
zrrUw<^t5I$7pX-YZ3K^tD93)=j`>Qc<&`derX2ZcxUH1<Z{mm+78Mq@#~QKRHffhY
zP@YQiK!Rllq#5C24(H~8()+oQQO<YkLr1RxUDdADe?cW$*efB}_h~}9{D939=-WU!
zlx5@o7sT|hA7do&!U;z*XqO&L`fPCt-;&qe{o=ozPSTFrzti1+@1bYBWBq>*NJ9!U
zIMUd|72%SF)in93<jT8=nO^5COyQq5`_Dc9191_30`wnSZo7AdIO1A{O{uu7-goGQ
zvgi<SvX-rF4BP%gF8t?G3Sa_xIWa&&)$U2#6X%IlPXdh>JAq9k^^QBB|9f`mf7N`W
z;o!}a(wk}%Ul9B6gNB~;8zHQj_Zs+rp@{z+I<h+`PCOd8Up_%_J&|zpe;709#byu(
z66ml^j6ys4|6ckle<p4GCJ?4B+p&+Rn^yJz|1qljjgE@&|NpJDu_Zhr7~=Gso6mLT
zG3~#v?w?y7TL+*e>_QrM@7s!X+W!B^2(UjV?&>IIPUHT+>$oR<y$mrGuDm8UP4@qL
zy9h)uY(r*4arTz;H(&IPdCQS$4E+AVx&D`RdW;vp2${b71FUP>rHFOUc=7(VTD>_}
z_JL%m7nOY#SU)A%$L16Ov>GDjwIt^J-$Q?cgTYlzNc_X<ItrESea$voE=BVdby)4b
z7XGlqfU0W$w;K*~&O_fclCHJ!Mky%n8#^!(paJdzQ%ApxW^L5gLWc9aYzsZu?>JMe
zjwOd?sXGj_NCX%C4UUcczH{&uWJrn!<Mlc9lcu$%f&2X4f}W%OE8s=%ME=gCMMutz
z4}tGvZ+qUqpB_9cecs>muCAm&N*JhZ?B}1?Gm3m*{2(rik(7wsJSj@2K6Ji!Pyhg|
zREXE3XH!;`izl4ecC(;Y?O?JFg;zv|H?Zcv?l)oY4kt5cjV(akI4v&+2p!Mb&O7&@
zu+|TE<iMbAm2CdnX-6$x>!QpWLe=aQ$F7c~Gxr6Z5|*XZ+<6?P<H5>*@UID>bGt&h
zcC(5QQc;7p=Z9mKL_N@Ms#VfYGWJP|_%{#|g6%&+{Ws8P*5)PXHd|K5pXG9a!@}gR
zufiA|+sX!;m(NX~tjHl{<}G?=B8DODN&mjpu^91$7%Smz;?#%?ZEDJ)2xJ#`D4N6T
z>+9>xBIZqLEXuni1`X~gH;?22!a~p{Uz2I@CtoQugJI47ybpOhP})iFD__T<aw_1p
zD=xLSftgElR7vG4flTvZ)28*m3M0mC$}2T@yPzaW7EK&~KF$K=M^WrU!p@7(c@!u`
zqcvHt9qIR6Um{YeTg2YH5d@<_0ExmqtZqH}(aP^uN!GY*Q*H@G!|b8O3y4B1_D^0U
z*Ry3*!;7F+%9dBw1c}0@hN0GBzk@QbZ@d>wjr%9dq1D>#JB<G#tHuO01uv>xrX(lu
zl`J#9ETfRqkIsChGVouZOj^Yrcg^JN(l=DD1D)G{eI?(qIUM;DnoFP?ps(VwMWwt2
zG3)oS0X0XjsiW>Vf1z?4Lv9{W19I;a9V<Vl(lRhhVg%L<kg<^{_NC7Fd7I*;wEMbF
zZQ}jhU>vdDitD=uGN8#-_P%h54)l)88`3Pk%oM&KM`5Yp*dT{Db55LNZTyw5<9EMn
zON!cVk)~7J3-C1md#LK~MK>>h(m|IOs_?dlNZTxy=PR^9HL!i25PNyF9HvVrJ=h<F
zA%2CXybK<>Cxw5e;hP1L5@dLodi)0MFE2!_K$UhP9}FA1ANg=$EAE%)gH-;mLE#;D
zpKgN{(PN!S8^hby#d+SDv{xwS3c6L%!uIeC1qOIVS)26jrOXulL6hFUKfG_0nWcES
z8yZ^W$gj0z7U}v=hbKj8%!NY^x=Y;Kie|4mBa+9@H{CLYS%b2EEXa3Ijk#f@!U}9G
zEhV$)xD3R0-I0(z&S#fhdi4(}!Tmsohu1#+!k-TC2lA2FM}u2~RdAOtJ0!w8XBQq3
z64_ov%q&fc`&5)}s5_kQVgf&TvuM<{<QINgZaZ35lB>IGzfXKaQL!3<dz0*GeDt+|
ztoSc$m<HxyD}wd5Qx|tUBRj|O7>!c{<w2;GQ0yHB6~wM2x|OC`pZc!k85-_k3;o90
zZI%q22k>nL4~xv`tVHCBizIUM$x@(H-eU=lg#(BAD)h6@dd;$K5ZMVVrJ5OWpJ26y
zMmWB$VN;yd^3cRGxwq+i?JvHef$HHh^B)Z}nzq>w_Ln161+}so77g28fvKz<kL9v^
zsLXopHDS~dL-63+k6@rI@Z$k($UXGo*~E!G-z~=tb_XJn|FVOATn+5D!O%upzhn|l
zHiK>^ac->h@=qhpWrU^2$88;cg7O-kuEPWAA6dA2@%pz0*!`U8hyVkxlA|M*1H*)`
zPyvT!z_;4&+7Wl0MoQO5WqW1REh;|sPTQH<_BwJ%rUMdJ9RZb8V_y*sl8YG$IWf8x
z(%}wO)fWt0E)6<LQFDCbDGYi?0w4if&n?fQ{?DYk39p7(0Zd`#lZvdy`1`3=2cgXQ
zM7<tp5VYa3=}IQ>tWTcI05wxvcrD(gV4|YntOqO8yaz8qkzhW;h#gvBSi{0P;{|jY
zqmnvI57wyV9s{g|6689-0SA<<!3euDK9_T`V>3+b98*Zm#&>bu)FaE?ygpddjB>dZ
z&6ik|T&!Y5QRQg9QdsGewRc;IMtOlnuKl{J9>f!TOXkU~3A8juI@af{$5pvEsaj#1
zRNwrqlPRE}io5>L4Vo5q|NGHn?YsGEzxl^MO<nf6PbXGdT4>Qq(qH|=YZ`W8kVw^h
zzc%FE=?emFn)}hN!FI`;Jo1AIuLCtD_Cf3$!XTan{eo5;c%A06)??;FvqOn*Smlz)
zERhmbg`i<YLydE)9(pE%BT8xsSZrc=M0GSsgz*wY_5|xKJT9>}lxba9b-fiC|D<Ka
zBkq=n=e#PFi{*BS-Dlsl*4WBdBbvnR6L#NZ2yK--xz`oy(9y%2PJcwU8$NBAvILBW
zTGZU=pUAy~5%{Ue38oY|{EopMOZQ7}h!ASt*f{Tc#g@3JM2kELYyfTdL*QSE&-8|3
zwJj%gqs)O)-E+j5Kb<7@Hu?M>?^+Mk5Q*8_FM0#-f+Hg$Am6JN&g#6sIXFr3PY51Y
zC}=h`K}`e0QD;a4g|{4kj`Q+Vwo;xR%@Fs8a+;czz}9+<d;Zex@0J5`e3_0m{P@29
z-SS#cZ2M!VeUl=IM2AVx#jzE*q8XMtOpWScr>S(tDuMe+MR-@&4UF`D5h;fySQt3H
z4A;o<N-%w`Z2H|Quo;4T6lB|snw-EVW+h8GnA;e135_J~_`w3SWG%do^*-<L?0!%^
z&-Qybbl*hwK0V$Pi%x&-oyJ3uac%zQYU;ncPKT+}|D$EeCeTIq%ACJWQho-$N!s8D
zq!Ix;X_K~yU+Z}f;jygvx+h60>44UxvU%4{ub@`Zz6huSva$)EL+pI0+#^t2m?^1&
z70@PQ#Eh(7+<y1?^&R`)TZ@KAN>*U(S*;2U&+m;uS}LOv@$M9<J*eV+?o@wWRbV$o
zA?fdkW^3KBjcMcj*{~NbC$*}kBbWGC0u?Pf;-?9XYE*V;HE||l)(MdG0G}3E;?*|D
zE&1$B2D*K-1QqU&MX7H@ex$Lzz%$Ajjs=zrp^|dxA^Q*GVar{sLQ^okDwUa2S(}Ti
zz%-*IMn?UH<g>-Mdg`e?K}Za{HVk#tg#hPkRD09Fe50C&KDvt5r=pv523G2}b-%y!
z9vYhU<z9Ntl=oFVp5a?^UDs$$$mVHcmwlM3RrZ*0ci;~JCGVCeM11ANW*r_v?Y+%)
zp1107gnZ<33noj;J45+L^@s_OUf;!2)#MV>#&$KkyB?l&&Xwx|*3{XBXLqW*cHW%T
zHU4SgB#LN5iC=LCtIxHVkQp=q-bi7^LH|mp7WfPl*E0t#gpB<9*E@<7XMm*#!uQaI
ze9UN0pjjZ>>G9MQ2?4y9Owrk#fYSOlWYXGL41U4%OteJS5*34l`C~4_Gkp*{YUvp)
zq5B#D0uvu`5*-*zU|aYs^kkqX|2H@2tNC!RZWKo%g1Q%U<Ttu93zZ2|Y6lnF`%3?X
zBFMg}=+=J%u(-^VL@)bs%NwGKaNc|7e9B_4dkm)@Ge;L5NZtRX!M^k1$(R;HKTpH(
zl(*9uo)9yh%GyLC40mSVgx<a&7xIBm(@~SxTraB>^D!}E{c(@aU811EBO$jT?j|i2
z&+t{^d&~o>nY$vP%M(s8UVK22Fh4~_Wi7vej^IX-(fkhzbf?_%6<h^&?yFXLzBb-8
z4I@&PyDe)TE1y_81wj|;IVw!%Mt>7jvueS8gCY<)f3+}IephexxW6-XZbI?Tqma_7
z5!ZFoH-nwFxNVH?RNPVynm*FYDiN+vnmO|nD&}T^a(gsnAg-~uu*(z8%bx4L<ro~D
z^`VXVV)ax$1>?Sg*Q~zaUxWwoP}_mxq}_<0Q_YZ={)))t+W)K;egi0b>6!G#9|LrL
zX~XL9o;P2`DMZ{8(a1!QB{>ZeTfHNH<X!^N5wcXdE=cZZ=K=_*?IBm)82QE7H1Wc9
zCY9W^RO|qg1eV3t(1~Mm!(>aBT0v;*YBs8=s3WB|j!4i_UgBjC!ile^5wFmo*WZ`N
z#yJ(r_xZDArN#0?(D~B1!_-8^OKQS_YmnzAa2I`XT@9H)_||`$B&$;rE0L{=HbMxe
zNzWOx_99^awa2$PrRO$MCh#WMcES&UNs3*4IrHqYePy<EF~n3bs}hZ}1h4?kD=_rS
zh?laD2~J-Uk$DM7N5m!T$?8z}TqviH*eSVQ$(!-K<1jBu-qSY>PcT%WIb^}FJQ-XS
z;R8nIaQ-AC=CoV}n7$M<6Wa9O5&a=RH(#te3XZ7MBA}M%O`2e?Qq?`thQG%^MHO_9
zXdk8#CB!|gvO7h_Jq>EstB_xhbZmQu#+t)k%r?b*5CXh%r^iyhhEIE5_3xXquPw{~
znG2$uTlmf$n+&X@fwKQzg^dxw(lg_tYnUkJTJX@9gc9mB>o|wvvkc2@CD7Bt9!jJn
zQkqZDhX11U1~6;E`h~DmG)u+?*HCesU9p<SZVLtwfsCij!vm;*TgX&WRz<A_p5rUR
z2}IH#$@RIg{L*CI&3!Ef2*6<#t_^DRILx`j#F3C(&6U&g%2r)Eeel;NiVX0)gcmNi
zDG?+rJCK2EKy0N?fr`7F#nf{8+izgg8Pzv>&==}10I`b#Zyn|L9m$6T4+()Se&9QB
zV0-OFopf|L@Dyh^JZ5Wz1g3!zt3I$ff;Q-Umgi<lvxcr@07qw&&R;uW5*7h;)-Sb=
zVj6jupxRL+<p#F<yK36aL!cK8xS3yshX{cSSX&W5hpM=!WvPS$H$u_xzVzyoFiVMP
z#(7cgJyc(VdG1qX9ISWC*0d{Qv73A3$TqssW!H9J-7=<%m!sLfi=D&~Wj&;8^;<`K
zP{g^~7uf?7nhl7DCSqd&6G&hetNj@H`^<l@r_hjKl2Pi+sJTk+9H=EJwSmf#U>L4m
z*obB&wveL)DGXw;p>CR(w61tPgCSq7ZW1=Nd5T!gsjUMdfJKrewr(YPRlNA8Q;;#0
zh&ocT9eiQLSkPaI4PUvD1hE^b1FSO7_HD9VL9W%Vadz}Nb4hv@MY^ClftM(TJKA`(
zDSvmV`i(Dh>T>fwg|}oashApNtBvlOWZJw92<d^~6^52!yqlCb_m2h$H|U_F&^UjS
z$nD0S5gRH>F)GoVWK^9v3Z&`hRc_%ok!sZ49{3L<k_djM;=G`qg&=^#Of&iIH3C<1
zDw-riRi~$+ZTfcZ!(f&UxPmOvY!@mO%i|$;{#}aY|CFLHPuzR{UBek{vKiz?GY95L
z$5^b-<TSAg%8Gw%vAP?(=*QwfWYsuz@Y&<eE6aeeE;cQ<O6ZZ`K6Ld3B_b^G2*J1o
zbbe#ES%j&3?C&3)``6%r$_yJ35($>J_`ANq?P6B9DHWksQ$;06&vc1}l05fIaw4d^
z;gVaY!B;U+u?kHdrM&*!C!j-?^--(E(haB0RMpN(Xs5-+J9J{W@h6bK^r!00hw};k
ziprz-l&D441PPrj7vxKN)SJ*nlHV6$mXUPnrMRsFQX5tJ7PWEiEQ^H{nx8Ei-<$ni
z713;ME+$`-Oo;}FzT8h%(@H%bg(<Z<s$)syXg`C2=(aW88r8z6<X_yj@DB|ZON_Ui
z$hl;*??l@ObPpR)HDczdcPfrCAT({|>4L&)9`HX9d<WA+lBzJvp$6J(0yS?mC<weE
z2cwTiwj`;opE2)QW--FPRNegWpW_s3qj@9eJJG8y7UFwd(*23_^x(tGW-$%AKNN~w
z@Iy`0>V%|@Gl*VBwyL?Wx22EjZTv-@Ks@^W2E_Bfr5EEn03``9qrw}E5KRRcbnjh3
z(YNZ5$kqu~cBq)3ul4|Fn7Bys_VXQH!Ze;v_MX_I`VQbkjsZKyX2y}b_`l;+XG|(Z
zZN>x7!9NWq)b=3}Q=;*<r>eN+k#7+zlI19T-BNLh(K7q7=L|ZO4uTOtwNBK11aJ}D
z<*lriE92&p3fLb_W<-*|_CZZboOfl{28^n-%U9fymn1Rl3-w_*PtmsIyq=dTevmU>
zbN_NCL;mgm@?_f)++6AiuEzW<B&|*i^!EvAaJGUjA!<TH`#kf4xDp?_34Z@1*^%M(
zo30o!hnC;TkJ&Za+<FG%5Tj`_v287E;h?JGra!4{6N%RRGHMLXzjA860B+;EMYeYL
zFR*G7>PI*C2V2IZS9IiOr5;e$FWSyq+Zu~<(6@0V_F5&ZE?fM~K;+$0<;!c-@+5Ui
z>3j~DstGZv|Lq9^Dfs}&i>deK9kmFPf+wrI^~30i1PQ3PX#vt1rC8>-IxO~9G@SH&
zxI{Rol}HhP!bPvYx8k#@w0B5|0%C-f3(Z}Gv8m}M4Pk~gFkp*TYkvGtOyCb0-Rkb8
zJi8sK_BHUjUpZ?UhzW288GqVGii=p1)g;guH!aJJNO!CHY1cc}!O0Ez5axY>4gyEm
zb?YuSmcQ4dw+~mN1dTLeK^Bm9Y2qQlO;gV)7}Il_KDEOD?r78-4L>V2f0qO92vpMg
z4uoXEL!k>bzV%f01b@xocgvg}OgrTr&FTqohMlf|#eeI7vHfl|FooX0KHhjg5eDut
z#7&K^fB!vmrL{LydG;H>^29^U@_Ms0UNxhaxvF6n7_sjp71pA5kbcpWvD5W(F!yY<
zTgW#da=vPLY~NUQ3G_KZ)YkVxYOb}Auqp|e<c>M~_JEj)fIU~?`oD$Q?p3*N={U-o
zx6~u@ft9Ms!nT-vDDb0wK0{=l`rPgc_cslp4|z80(8<dW{AGAc9O)2kPMsf6*1?f4
znm}<n$-)#D3*Ul@z_2{*vBlB_Ey#KcH=GnZsDI#=0m9@+8`Z^bI<nO~MDG2Og&z&v
zzidHGpM`{nt+8X<4AT=7iu4Cd*?iiZy(WZu3-BiIjN<7)F4eq8mpG6CwZ;qSQYyw?
zq;IJ&;{$o7#w<-FfF?iuP55r>hXu-wiof!q0qy68zsIP^>b?W-q)C*rFW=-mcS9zZ
z$7Bi!31-TWf^7JD0`(QbX<PQ?w6Q$Xr293OIP!8RRqerB=oGuhp0xp#`&<?bQhI%D
z)d}3vOP=n8d0Al;%YpI7%X+H`(0xc^(M0?0Zjewn+SyUz>FzuRa0Xbs#d-iE5LWHU
z(ud-3!9yP_W?xL9tL^(LwY4X(-(Y2_5{eVp%Xq*lF?e(Td8jpl_ziy#c>wjltI?L|
zfeyHh$Wfuwe|Sv8#p@oSVr>6XTHcEMs@hmy>dk+90f0d?0mviLp~95F-;EpOru{#_
zx}Fz3NLr>5!VxS+$puKo3#|R2M%<9*fi%63)NJhcbr7n+4tbsGx1QyCR{GA`Z&JrU
z!Rwe;N+!(rg~YB>$^s1m^TywQDy@?dy!j0d0RCt?HLq3<o(_SOn_ZeQ8s>x^$aV~1
z9+$eLVj{si#S@;YvvyS6uj=rwna?VW8M9$ZH;!;iA?^d6&W4krzNzSST$QVOMOaGK
z378p_K#A+ZHmH*piwd~XLrONG)9^H3_~z%-jGw;RBMJ>9hLNV!TwL2EFoC&bL>O-8
z&%IhRjrz_^8UYUA#lGpO$&{(GwW4`TVSe({`fg*8cJd^wc*ig@9Ic9Xt+*{Jt!NO!
zx6UmpxoE+{ah6B@aD)>emVw+gbtx(_E5FXpuE6Sp4EfaxL;Hs9{`<duDijfZ<axD}
z-&u?a%yrjq6Dpj&f0=~OyPA2J>ioKw$Q(-JltNp*NB>o!`mc{7TcW$rEZ-#~Wf`~W
zyp}GC6l4pV6#Q90o5mhQjVoVSzm-+kY?pDTqzgt(iVdKSl>gZbk&Af}N6?7MrXi4z
zaNT+Ln`@(!0{^m)5_P<0ONQLslYAYH_+D;p^%%{0(jAvq!^)YGQXnGd7*czx!geDW
z(YmXJo90gy??#pEqx1)u8iB)AjJCgur`@x2ijI0Akx&#`!mn>yta{#LuI0j6m8W0h
zmW=B#63QdoqDkqzMIE88#U%ibO1`L*)=&-6?$W8z31G#V!!MIEtl!<$(l_)oa12*q
zY~belQR%gbeIsWVghs==s%9gia4(<4wJT={k!?+ALlKVg=deuO`2!_&9t}KyfAZv(
zly$~pqg~?3K(6Y0fU?B)bkjSgPm4|1e<y07ZZDeUJSSLwzQQ{)cXQk|arGmvm_5P%
z)$KITK^Mf^@N5^e>6<%%N9s6L-&(R5>`7Q6q3dXbxSX%hYVyyQ`Pkh>r{d#ZZ?&xE
zFJIl$UdszHO7M&?fbWmK@$Y+hcKS$Yw2!shl*nDV8M8i3!-u~4S&>K+^jAKF)jk=|
zmNqHykurgv{}5X_q&K^NM9J@POc5fRokL>`tT>}W+oJXX`bZr4r2Cz^FE|hwRro8C
z!%$P$DaC<{9#bf~rotka6#*@Y8aEOn+qr+Ms06C0WYn$Ju~`r2mR5gsN_2yn&U+-a
zyNBf$z(OObhR@)Vhv<Tw&9dJY<~(8H?~OWiC{6a-5Ky9tsfQ{<Eiyt0o;NkH9FRsr
za5Lv(y~DnYNX-m~0Y~#lO_r=IQcLb03h!$6ex9&0J-Xj#(9oMGlcC}6CP<O72AwdM
zcD3Iy<<-z-HFLNak+jIM-B6%-i+I}fDErT`Z{TBIhWbFXRO+k$ED-Ki=P@S(t7vAn
zZc)z4;++e~AyY#Ji+*d8*PJ&lo!=0NdMZ2m@O-&Buo*Dy&)dnia&t<wI*vZM2TJ=l
ztH>dnC0M}q*>WcVn>I(U{wapalEa=x=5ocKb0Rle!seu#6Dy2Jn`6OqxuI@RY5_hf
zT>$VT13trZikB|yl_sXYJ7S{1&39c)i8Pk>x-_^YtHtS0WuPAJ1^U@VCJWKaT^S2W
zgG3XDCdAJiZiC(>&iiICVuG&LIJGI8-t7>hsqWxS$MCORd@ODaC-uaKZStl1@t8q8
z^7xT2h%h=kVtw$#^U<<{**()FgCvo=hANWMe6Y{faG&R?cQ*{u+@H(n2m+josO#WO
zYD{|;N8k5O$}4VvU~a*Ryr(L~n<?0!BQtrfnV5I(#h=)SjZ1R!F{;XwgZ0;Dm<z~K
zXgWHT_PTWq*CgxvoFHduets>8c>*$NH%#_py{i6$eVGKVa1KNw%VvH(+{gdg)8!z<
z22fk$oa6U9*Kbpr(+h{t1|hS=HSc{8bjFVIz-m%Hp=Q$vEtQG*QZaM-I1mk4se8Ye
zR(X~Cw_}D%7p!V^zXnNAwW2KG(0+8txb5YJsOPDCWgDMCm~AHKZ?JHw{3#3?UbF(U
z#5NzryU~<E?Jo3IE0!YwT9{|V6*Ewmk`OxyKN@BI`18v$dmXYhPc*)W@~39EYlUMk
z@O0cZDQ7%F)VUM_Di~aVJ85W5<5&F`<a-C`*6>D-8PZPxy4`@xd;)-&VxuwtS#`bc
zV%26=Pdrv?W$R>K?@O;bxVW_u%uJqj=p^!tL{0XLkTOp=jmnHrf8kI~Xw*8O`%n#`
zuC9T1{rl=^kY;g)_}J9q;l}3XmAc;fyL`+eoBy27bM^d2Ae+l;;LyE8ODBiR!|yzm
zt$I=b>hNF;6T*MowA_<u4w~4^7Whwfk>)K-NWkbDExhNG$DBT2V+TN$a3Lwx9+zo(
zR^Ge(vCzO9fym8OanY-61Ndv5r-qIQ?-<~%q0)o{D3k5KTdlHKuo2z)(QFzN4#H5H
zy<8Dhad{OD%&|x;M!CJIT*b7?d&kD0o|^@>`t6DmI0SaF6|z*Z$i4s1j!a}XSn}J&
zZtK7a*%X)=R-`GI>keb6{9x}>i)))<=1WkZINfNY{N8}E4hQA9?teCMX($5!@Lshi
z5J;#fLfXXzM>A#tz-IRStXcX0A?qukqG<cR6-lWD6i}oE6qXPqq*GL+q;}~>TDn;}
zBn6fZ1qGzLJETFnLz<<R?r&Cop69;b@0>l#f!*1eYv!t7{f#~Ui_iU@aSkZa;NUD3
zmj?6kJcU1V(BHt)rbnW>fKAcUzxPomZ|QGt`%lE`pS~)DwoxjGNaA4mZ@TI4({56t
z3m45esIHsb&&)Q2wv>Uf^8UBA{{0q?DbQXiLfn0^qS;zNWZEIbZQFeNphKIImr$E>
zn2m4Xzv$HOZzA@7;eRV?EAHfxSd1^WlV?Rw=${XC+BTR}hsmTe{RbBQGknvbXTD8%
z2XkTX<Q(*UF3nv-v}83-*DwII?}gd_c{8Bx#PgO*TX{iy-89XyDruY`{jW9<rQ0*4
z``PzyX8Yj-H!bU)G{fq!m;c`}SW)!-R^6KnxP0n=@4??@2HF?UaWv#YRiFIt$@tAa
zIQyW8{a>dRg3TqI|5vQQkpm(JLYUql?(zJekHuqQKZd4a(U=hZ`$lGvct7sRD4l(W
z_}glK|8wyIL<jwqdcAkbN`wCWCq;kY@iBM_?|f?Uf3BLt8kBA5;`)?jKH!=4t$}xc
zB?|$8O(+QfUjUcLBqgPQqeUq|-;WIZf*0v_+;u0jxL0x<-1HMWG~~%f0MV=Ezk-q`
z5~*9J4uY3^t$hGw$O&$lW+U0JM|QJpenSyzQLEYqF`G+2!pyB2ua1pTd@8bsT_-|&
z->7CnKV<Ydq0phi!FonSMF<t2^bimox__=!*Nmii_57~fh)l|zdB7)M34Q;?zh;cR
z$X~+bDoZv=^&o-Y!E8yeb&1HUykQJqC%(CVFnD{(?%{cNlnfhm`d2d+b@IwSkNpm=
zV<^BdOmRv4rw#V}h(zrR8_sjYzh<hmgoer{a2idJR2>50d^!h-<8_(p!6<tByq@A0
z4LIE$_%$!U`+JoB3ZS@0?5y(i1|f!X+z7-6sSlu(0GYdwSzZxD!M4lC$DDnMx*zJr
zT;isOHr1bx78Y3A0_-k#G!TXL=nHQ8CBOn!F3#tF%o|3Lxb;S2v^Oq9hZwhiZCTU;
zPLdDZUKn(!bk(EKhQ*I8Jh}N5>f7d}oG<ygl*dr4rmG8}YDoUJKh`fJT;y-g=0zo8
z>;)Ead^+%7(aEGllOals@%&=zAPN=GX$6`E6qjm!FDWdQnf87yf9wQmY;yP2&K(uJ
zsSp9Y!`xY^u4biU>gFo%1{1JC9@^H8YrAn@?9^J@Z54O$P@gto-L;u3ih>8p^LVQq
zE%*{zscO5dtOAB)2fMWtr+&%!PY%mAqbh2a$3R29nLybBxliWYc0Z#Fc0cG!3j*QR
z`L_$qpY^}75;^=r2yhzn74TWQWq^pZ`Vm1rzg0FYcSNOsS31oJj?pc9b0*)ekit9X
zyi~Bw#k;2~#L)W6q1KxSSqrQPxdEkv8-i&OToo8Jr#kg(YG^<nfQF4XzQqBIo+EbY
zC3s61h~?!ynX!|%Ya^2G9db6Wj5y}?WcAS%ct=KOnXuOG5&|Ab8eOQ%R*wBU?d~np
z=tk88@{puE1bm+-ElT?mQPG%DD^g@y_7jFL7~i*viGo2B+O&)G^sgj94OLVd%fAwx
z*`1qlbKK=!x|I^g>vtUbfJ>UA(M1z?k)aI+a!)O3uP#P*VE~JqbaPL?YUmA1m>Jra
z>knQ}^U$KLPR+RDA%{ict@z&Ix?<jt`lEbnOF4isS~b_Xm|7xzLgXapX{OVrDL{K*
z_+f5x&aR{v+7}||C;*-~p0OJUU>Q90Ig5XA6`u#*KbeQY4q_|ozMTz5c#b4HF9vg8
z=Yfp3ZGb|v@b=zeg!rI1HdIwO*|?n_%x2qoj>uJW%A~Nadxmom8bG~%ME^ay&n&C=
z^zXPMFO0^x1B5VV{0{cbFJbgB{53h?>1YQCUQ`z!jRA$&zy^7c&IC|fpM!Me=e#|P
zFnizj-QGK&XnIh2mPL6~juU!)KqT3V1uL(Scwk|3#=jebL91AS;p62_7nySK^u;L7
zizvqB0K&8#niIrhk+g!YTng>(C_)kaG()`k4=4P0s#i8YPzmSv3v7-gjGfSE0+*x3
zVE@S~m?1V>(lwCM@%`@rw)UT>;F%60W6RwBq3?uHx6xeIEL%NL2xG~F)PmLC?5=0!
zaRQ3dcmYHVu#h6dZdn_dQEY#)e56RWuNlbwD1$OtrWHRZ)H}j_2S1B|)>nQ->P+OU
zOFm~sO&bX{PB2Q$652M!zXU0BYPxQG>w71|%KeimAScihEjr1%;d}8#bIF#QZf029
zr%Kxl_MD_^a%6RQ)wGy%hrpa-$7a&pVJ34@N*soea>=6<Juxi$&A)mkjtguW62>u9
z&hp#dB}Cf*bC>u<mdMq2VjsCE!|P|kI)LQl4hFqiJ=)?gVe>^5H7#zXvS0m1i!YY_
z9~W_^0R(GbJDHBAk$wG4^3&a8vXf8zlHnK90v07*jPRIILE{<hoA<a_1&=JNp^v&~
zXx?wT&B%eMSK83T8}`J#*s7PK9xyytNks{yqSC!XRvz!+KUkatgisH&TF;e*=>n1+
z10)EA%3MZswN+S?I&C98B;U?j)of&XO9ho7LfdFRZ1W7m_^;g5fK1k!Js<DO7IrmP
z%g>F)UV!ypCA3Yk!JTNp(W`M&%!l<k1XfP#^RejVb+<!MF2Q9*dl=15Ne`RGbf#8d
z)%@A(0zjnt+$6<8buE7t7&+v$6sUl_q5BdcJZ*4yaTB4c=Tbs5YV#Ua)!$rz-nDC9
z3W%=M^1uXDTsYwUy#BnOL~Tj|!bZHWF4SMy-~>PGG?~9sx~vn~>Sg32hDp1b`UeC=
zA>12@?}-EnTW4W6cluEDbwJ~@%?B;sdu74?cF}u4F7#j>F!mPiFZ-f<E>X;9M>`8N
zyq<l$!%9%QRU&f$C==?TfZ~T)@pN5U<eU#Vn)?!I8W;AnG_>Ta%R~<4)Jlf~XXGTE
zmzxjP%!u#IZ=cND&PSV6bgjJP8&?3^IFCwu%g1sekX(*{T^f{!c3-?0aFILu7C>uz
zoHTz41aXIQJw$)xi1vsT9CLPaJ%5wyOfQN`xH>3JyUP2eN*5_TnHSit$2w!2WXb&L
z2Jn^*CfoJDxIh2UCH@9vT;lJq!fEtKy|cvi`w}2>)9#|A!x1R4HL{^*M1=w$1d3dK
zIa?FCfnJ#r@$WwhDhcFI1N22|Eyi(+1F&nmu!xE80wRts5iGcv9xEsT%Qo(ZcckX5
zi|?Q97e{#HsaGG#xWINV=FO=9!=!=YFJWXA5KhUv6e7<<EW_s6*m=3%L9Nphkmdg)
zMEfv()t}v6FQ4AlYX1b7O3I^t$_>rq%N<GZf3hWKp6A|nJ^d9p-cTq{a~M=olY`Ye
zD&ZCq!UsD@n$J7idnUa~*(p%M%9<<Sbk_sgI2ISqkH|(07Z#A-CSj7Z@Vs22Rztoe
z*!KNumo#MEe%2{1{O)1^m5KRr)8}nG3pA7OKZpPzI0*6TN>SM%NjsHH`Fd7FN6om2
z5_-8Hl+x5+V{ww$5zsYpc9v8ug$t+>ucqcNY*)?~5Es)_2*aDtLmrnJx<=n(VQKNN
za<zQ4NHgCoE+Fsc&44c^!P8kXxthd1?AjZmhXLDlo7b3?1&IcJCV16>GXI&0sS<E@
z;bSBKwW++eXlEAbuiQPf<_#i*m@$z`OeYqzsDQEpKd2}6FVvKPSj)Laidm(e^_uVm
zfjA#n?}*00+XLY@d@|scgOQSL*l1{_Ke{OeUg5Ej(NmIUIzl8<Cz*@X0+1uvI4W=X
zZOcSx6ACx1X>28!Rul9DA~MHaqh(UTh)YMJigvOS^~P&Ql`Me9&R3T`!iCWFFOT&%
znA@Qr0}I1E;ohM9KtyMH{~}%cp8q#2M5L~&X9MD5=i=je5!3vy2K_GqjVYLq$rUS}
z3>KUR^H&vU5*B#whv?*4E=?)ie%T3j>3R%trfJ{VU<s<@Jk#H#K7W8DurobWIx3C#
zD|I84=`5BC#`uAXCQ!G=eI0_c!^PqI4Fmt}dB?;t9AY;=VO6`G7+1H<P;NCP(LiNo
z<ZuI|FP1cE#0{4SD(?abkAL<zzI0xEw71ZD;$MqYBz>ZZ9Yh@x-bCXZ^cja@-#|qo
z)8Y<2C!>iUPO;dnNYk&_il5?euDCDiGoe;zD+mcA)C!N~sVk5su6D&DdnoZ~g~l}~
z0x1YN0<!d~CwI9oxJei<%M<vGR<S12k=VGvPJHgT!j<L)D*l4ywL~wZqnfu4$P_dO
z7%JWo*JzCIhTkPT!E|*w`1{3?qVI%(xkYv8Ca&@FTf@<v*r2;UtGXV>D)y(IKgF<A
z#Iv?=jLg%%4M{k@`c?;qfE5;wu6ALK#Pp=E4P$ZxIfd+hM0H7tyW#V`#|j}8n?*?t
z&F)K`kGxKzOAq1<d1AiRrr*At`X%g>>I7tqrV0=$sL}>hD!<!KJ?1-K&tQQ{;t`2@
z1Uej|BCfXSNpFLj&VN4Zc%(EfDYCEiQ1XFd8RP;LiV(cYqP_p|<1CiQY4byo^V}M@
z_AmB9jEl~|a&&|b@r2!vL=Mowm@pTQh9jEp77*n9Y;_?Cx?WQ8=fJbgV}FwL$gpNT
zJ;Y3iXX^cudWAn>!Xr{MLl>ZNH7>{>edU!yznUbXopGp`u?;asW#EUP3xLjX)t+9T
zpNH0k-Cmy7csJ6gVF4!oN^iGt--Z2sS}Qdz?n6%K{NFu~9<6S=bky5rM%^9kwYaV^
z$%xaU7Fu#NpZjAk(C;W#$X-_ucoYC?A0<SaMaV^-czVNid7&DyH{?~|Bbs*e!cs@O
z8JiC7posBC+FK0(=YpF%tI$GU9CT-si40?h4iyfW<DX!Z&xPLgGSqUD{(+|KX(Zjl
z%WR_15B{PYAU-kZ%?a#AZT2}No=E!WWfLUjlXhXPUAP~;YF;YxWmC1>-czHqm*E!W
zFd$1g|8ZFD4-7KxpO;8K9aUs&VsCduZ!ry01I`=rt%S(&aYRHef3p*x7-i(7qo^T~
z1E)=bXh|7P)FrB5K$K<(mQiV96jb+_)Fspe!|yHdgDq5?_3IYtR^!d}sCdCVO>|H$
zk7H4yYyRhB-=vBWM{S(-W?2sf!NR+S&Ev2+V6G!gAk15lniu~uf8%|^yO!dn%}`2u
zAK_(Kim5?kV?s;TXj$?I6+M2cpDz`QwP`nKt-BP)-0AFx&ofaJx#%?Rxyb*bjCzvQ
zc?<mE*^pIt(Py8K_JDm%yM2u9r6AB+G?R#CM}V*ak)C(g%{j_GTD4h-z*IZw>Ul?C
zZqR=kUPrf!v2ACeOwRW|wf&@&*DgCQ^X4Xeg`-(uEz7Kys#-KLnf^r(E(=4H*Atlt
zKN?|^6c^QUQTi^Q;AE+L)lv`ZyJZ!$1@i*l2Z=1VU6ZF}v)$^J9D*=a3-3L9$p~G&
zi}8KsG*EPp(x^{T8DvE3i4)-vKC0>YiaClQUMK6V%a$HXLoQM*IntQ3lnOT}LJHkh
zuoz-!nItfhkc&ariT3a-Nka=t!D1s>B2@I`@O~Vc6+0>Whrq(!DU6MB5Bag?pj7ux
zc7k;0q1Q|*C1D@Z+>x*0Bc>$ic&6c4T`@*v-qvL$D_{CBEVBqM4XX99KS*?+3gYhT
zPCd;^9dbWyr7nn-_v4=tUS9hNQw4i8iAyzlM@R)#CPhl6E=E!sJ5r75z<l2X!7~bj
zd^_p7NuOX>G<A2Ed<><J7VrF)KiW|cEOqPM>(u@Q^_Va2ZHd-r?7#^8aq=XD`lw>s
zO6_2ArwKz6R`Fr@x@hQ{l-?0-1VfL<xHGHYy|5OZ-!~E_6ZjnQ4c28o^wrHA#_Q=$
z2HrY!LB8}{eqbx;pz11oIadM}$po#ox*Eg(?mJhB(O!KGb_c4>zzs|AaJ4rWin2X-
zO4IVE`|{iv-EW^gOQ0V{<Gpj+hS=wQTU(!gur6(TXY4MvSY*AYtwuD#1vMRwd<h)~
zHg($1rErmgs3p4gC8T&&B=i318+!j&k66C3I)2rtHzv3$w6>EK#G3I5I;A=pAv;rI
zKQU--5|UCNed{|>#mJWX+}5`a2fR=e69-zMi=MirNM%KXMORQD?k?Q`1qyoaIH}2G
z^W#jBdP}ZPmAt{CXnT9%4^Q=f@NC7?_X$#DwY#-uLyUhv^5rhG71kN6GEzdbx*(e@
zx5)n%^o|-iUCmCjC9n(02a<AC4=J57=1936vB2(;GgSrdYe40fci($jRCw6fi$i|K
zviG-3Pf#xnUm3!H<}{mgd<x8870eXKyK08eSzx1`{|32&p@u$1uIoZd)-QqK@$!1_
zCoBs{0T?Lvm$<Q^OnpEVA!`0yM4MJn*i{=<-{<#;M<sC!N0b1{Mf7lb_3|yHcqBbx
z@8qHs2lOF^-z_}@?)w3W*+gP~!Q5l5(9YKavKMv6e7&$&{48Gs%OMER_Xzh>`aT?{
zWDX?)#7BT@PGeoBw$Y<B7BjB5i>Q4ad6_^Q$1XOr=&CVCV`(#B(%WrAsBH-35>b!S
z;}eJCy?n7q4=cd2(c)k0-tDDFn!!E>Dzr~CFH-Rm5^~Y4eHbP@Wy9@!fEG{}<*)@I
z9eeP!2WK&JcC^F83fxI6Vl}4zI4LQh!npk?H&pyGyCXCi5hxg`Zd7@pBp{cp!B<pZ
zCPB*)UV&{fGu*iFb>KUUNfmH#spV(58LpGk>3I0Ezo51@GADC>Su`QJ0}W<<^VK(v
zhf-iHJ@dv}lylvB*_L4K7rKj7WMx_S#_$ChbwAhP%g<7=ZqnTX{{`20(IaWw;2J(&
zy3V@ah0YR_W%oKcStw<`HUY*yzjES1G3F^#^R@>!r%--~H4#;t_?i538Y(>_scy)v
zGbp{aWut*%=>23^IjdzuizfP%H}`XF%Zqb`HL;wjeX6C{D--N$=O9L03m}~1AZ;;~
zvjRkE)Y8sm%hW_B{Hhe>a4(DO2e*C%Y^YefN5{4B9zE9h{Scb#sb9nymJsu^5!dy|
zyk)XOB1rcD8up8_bzS`9j{?nv)9cdVS0Mu>o{Ox6zbX{#?92r%#)S%KrUKyQ8nAb<
zP3pbpmWoX1KaP4rVcyZ6vOH{z+7}%jD+RSXY^L288Dv^{&@x?t{73~4BGc`$0PY^T
z3^!7vncxMVI^_NE3Q=_+2NVNqpG@0%=IxkGe8>{5y6qWN?K8`>Ks&Y@PnVDnzJAwy
zS45o%8VLb(ZA)=Ep7Ai&j`xJGW2N12GcSL)vEXa$cs$uLMr#t0bRUj{=d!Vk>d`Di
zztp-3_!h$8TQtgfJ(r@gUpv2p+MZUleT#69WHH25Tt@RQbE#ybRsmp_G85kHz(5k{
zGiadD#0o8QNvE2YFW(-ovD6Wjy64EUaq;rWo4FU1J{EgI0j#!+H2Kr_=5@#0ewEO?
zC%mn?9De#iA46rFCWLzte5piQ^0glgroFwf{g5gLmp7EgU$41*(<{3LOVvHUOWrEh
zP~=7UOesf5Rsr~eO5A<Z+dAK}<@}+g=2m*SkUO%Lfw0k<@W)vJYdKMF`R78H2yRZZ
z=Jsu|Af9}kYZ14T+b2+!d6!F0uERM20xe0=+hUT5L0;Hz6hawr9-0$}1;3t|9k*IE
zF70~RhbZWZ%KoGqMvS2>YD!1PO!Ijt>2S`?<Yt%a`r2-7_n=ph>#d9Ns@sA{Wy*Q=
ziSU}6=ZVw6)lr4HDo2xDGKj1yxM~NH$Tp7a`)M-u#GB4ZlYgz1+emB9Srrtxt|~%$
z6vjLERcM9diGe9uucr-QG$cqf(>0DP`|NYkU!LB8$pD@`9dr30<YKGWR54UIU{bum
z>>tMGfX|-o%C_#_;b~R$Sw{An7K8@8LWFKpJ{3_=lHIu17u0+b!>x#QlW*;ji}PeU
z^Qz_&$&whPNBP+5+LA*FljR{%OZqEpkh^f0rE8gM4B@@O6)AoZeP0Hp$R8Hud1FY1
zW&15V3i~~N4;NHEh2;v!gkgOdN+<eYN~Y5#Z^uYbJb?o1m-sEBOmy*Y3Df6?OC&0J
z#oa@m;NDJMe!jezu%rj<y)mLcvjZPI3u3!-A5BKnrD!p+-RGOKMo>aEK6e!dWr}Ul
z;_i04*d6ktYD*3Qj2nXkvI877`IS=sr1BPf5A=F5(zuZG&QQYG_gSKR!bi)YVxVGG
z?<XDcrz)8SRV?GerIw(r?nC<1n6)Xz`N?43w;Zb!y<}4|fkQQ8%SNxCz>v{t77oYg
z`sw4z{QPO28O_4u@B`N|UB?&zQK`fiZ&S)l`><zDXtjUJMWGBTG*}s@li#D>z&Rss
z9;K3h^TDxUv`<uJ+Qxp?nJAW`pV8ND=h~*;JmX-ALEhA)DysKN=tXl5d(8V*f#owF
z?I-23w14hMw2!F6N9NY~IMHWHK4jsLdHeYLLE3b|dlNQ$QB&G(+oO2_{F>BRG*NSB
z{Z18UaEB_Yj8Y!{{=46o#(tHo+eYu{M?YQcW!6>oTEU`3#`+q7y(E<!4ppwL!6pWm
z@YGX|wbDYuSQS;OQF&t4Kq}Yw2R)4U%HX1p&utVN?7`8S_~4wYGD`!hYg*ycS0u}l
zi3yT*d?rQWWicVR`;uG1<^e=jc<v#6k}X;-&*&1?KV_Y()*7qj5As#uJX!lF5MW0K
zOCMLd!|virI~b^q=iZ$)S>8mvZR%rR5o~aWN~uq;KQ2y$t9d{?&!eq^>7LQbsMQue
zn!Ds`$J%vOF!voymji*5mdxA9pX(6@x&}Lj;^9T9g9T83mgY`kIk4RWezOHkeZ-3~
zE%EtVZzy6060K-_m$q7-H101F@AnS?GvNe6CcCyDNBP_paA}#!b733ZQIIE^p;+>N
z0oUk&hg3Gh-9)E*K^gU#$p^}T6rl%}Uds*bokuGxawj=1<te;79L_GBOLZm3Zpi0@
z=9YC8;O;Al;<_g+pGqWX(8X!cN!iiBFD1j|C6jRD?+@T%=JiQJ99q<+_CCtHgOm&1
zS5jqXirFq882i8c0SsTT2uD6e#Jj06VUH9-9gM9XsWKX(Yn)D_8)Nj56X@H(U^a=d
zkE7nG_(|flgqb)o)65OPM+EQ9Pl**>yh*i}6iL%MBYJ?c86`19axA3&QoOOfL-gg5
z!$VdXO6iEBrBJF?QWHC_(p7V}@-&XMfW2RYH<O}U1A9FT&hD#_$yGeYy;1lrPWJNK
zfz9~0EpME~QkK66-yaZ8|ESyYaiHcPOS^&NRcIoK`XlP77w<o8eHVK%M5Ns>Flham
zL0(*jqV9<qjc6T_Zr*U)Lz{}T!;L=V#wF;xAKmS@Rdb%x+hLVFNpbNIyZjdgbACc`
zM0R!pA|AMin5U(w6b{N{XAhIfo2rHJ(Ti*~>)+CL!n6|Fjbgr3O`JKDjt{ebzr-&C
z0*!}aD>sw(cqc%Qc%L{BR>77x6IH?;&sDNZ%ymWwOTtHmT|h0F@dryKE#*Iyu<ww6
z(KN-=9+8+Fl2Mb_U1q6L#b1DAq{!H?l8qPjE}%L08*pThE|9JL02eUP9uathu)Twc
zv-@S;DU~cWrjF?mkRgbh(2ynNktA-suHXuY2JF#>MU-Vg$-Z6`tQ#vnCaEe!Sytl`
zx?>|`o^46`J^~i3qAzzN3C7KHrWy=kVNZExPKry@!v-_(Oh#~O*A~<5^{9LS=czbZ
z(qjgp`OMe|SD?oV9z`QwO%#ih_#u{a9U8>5s1P(^oIy`zNY&O}HXs%{?lKdu1&i9f
zRcJ7np+Ll!;Jm6E@y>qysJ%R*T>}as)98Sl7d_VAQe$^8Dt~M{A|trHgEc*66-lR~
z?!9X*lFE}^dQMLBKJ9!etDu{XA4j7Ba4YW!5z)jHli+2xF<52Er_IGLc$a1o7d#Vl
z>1NVhG2KfK$Fw>UPi44nkTWUbwrtuS^R7Bd*koPddc{s{bYL1AxEUuSc9TdHxZc_k
z9nMd!DG?J`?a>06dhNPR+)@7|%q_FcT!!z52$DE$fW6Utt=}WlN|OJXOjS+9`DGPI
z@7Iie;ZA{_QBB~o#(2O5w#aR#HJ$6B+Hp;aA-iZB;cpJwF<mJg9#3_}It7@fn8NDH
zD7a3(*cE?1{AN2Fw?hjfNxm?X$z52Wwn3<k%Tt!xTgcJsyU6+33ZgnABhhWx7RxEU
z&h#kGL?uUC3IDn?ygetUbjVxPBPYDPOvfbeV1!nl+P-eodjsOo?H423WMi&-n}PI=
zqyQr|rO<6rbXA(n<+Xjm+h3Ka3)zN1lt_-;cF1D8Fq$`nB&T7Nz>-!p2QNML1H*@r
zq;h=1MdfL{doc`J-#!(d`la#2236>2>~VnBsiRddaL_D)5Y25>6QjFVHN?LC@XuC@
zC40z~{EBj4`kQPlxy6U^uLK^pDefFK9?!yc%0I0u1svYTV@#%|%K}6z4x;WvYWF`J
z(cfh$FyQMZGxv^<(H6p%@-AX0T_nj5H^{2<oK6<Flj!+?HM&`3O4Lse;*H(0w2{@P
zCU}sVw^SZOO;kW-kaF{pw<bo;4U7+-;quumDR8(f69W;##v?b|D=KQFHQ6!WTq$&H
zC0%d24Z6<aI#^CRYJOmU*z`W|5~HKXp;gGdkzX%wj*s=pmppePDKPz~-%AHtj>ifq
zF_iotrwZh{8-M~@xdi-gS2n%Y?gf#4k$l@87g(eAq3$^B$9?G;NB5$F>4K8&Qf<vP
zN|vCtEG268CmC(q?<oUT2p6B^PU)O|)Nv@1zZ?{d(b(_E>DUTaIa4{wk$^)l%%L-u
zC!74*^~@>X_=c9$lP@~f?qyBsnC4tg?Xa)$6r93!8n-=!$2vX^7dqXzA8jga+9?&j
zQR>kb89OWFTVlP~&gNSJU|6_;PI>*%xNY8PxJp8MK0*u6tQPse9JcaITZ?7;K#SQ#
zFKFcyEHcjpKSWK&MfXU45=A(smbO0Ao+*}`fLt)|?srqN-@H+iaT#EP?Z-Te4azq#
zfOD%hl(LxQosxWCa^5a1%jnrh@ISQ9+n%(^J}nL5sy$XaSMRr+*<X~88Q4N-Ig~sq
zO!iFPAM4N;(ViK+BC!m#H-K}EH82~X%FDl?@-04&h?9obSFr}BE<B9=)7=04mm|7K
z0X#4RF9*i3f4pv^2k0lvON(RsiT>l&^cGE`_z`btf<g%?YQgv47dBqIEnZJG4bXG`
z_tI4b-aWHAmv98B_}_1Vcj$g+<WK^4l+`KgV4J%C^Z3@p<R5`XyJ1Y;!uiMPKx%NF
z7bhoh#O{R9<P-ky58pmDNrtvd^dN_@pIH7LhW}myqy#&Z!K-76cTlx*K&yvlY$cdZ
zrtTlt=iT*E7vR#jGi8&;0FJ+v^zHOmA%Z{0NxG6n8#dWiLOCF9bHdf@`j4{{#RglT
z0R>zw*2a0!2Gok{iYQ``|GqF!BIomsEP=-FN?8P@;9`qOvcda$1>hc%V9f_65B}F)
zK*L1`i|UZ8)xSImL(C3tzZutA#b^``%M1Kxdy7Vhw%HQCRQ<C+`1@6#<!SV*<>@#7
z+xVy-e$s=AXM8`6{__$+>m)&to#D=ZU&A5lUadlR6uZp+b!~X4-@pIY?H0xEeWUv%
zmWgv<Chv9W{ePXl43GC0h;~U*!kGU*&$wxZB%bHwbrevE==Y;w%)nteRn|}PCM~f~
zfP-t|ba@9TB2xpX3UaoK=5FwI^UzH!^qzQ<hf6VCi0cl5f*{(@XOw=Q8u%G{P!qsG
z7rQM6Gt~e)l`0K@>5PLEtFeXH5tqi#0Jg>L6Cbj=&%w)pQK1aLPNr9#=g3R~ro#G?
zPkV{P>HM0|Xcn$h;>_)z#M<exdzD6kQEjP<!}NK{W&KNFjW3~al?LF?t<5cLsHwd=
zo~{Mb5Uhep-k!f!)uCjQId{Gtjml;CZT8JC{_$`Ypt}w#ggnj<QHm9cxRA>gHz07q
zv2xCJQ=fO;8L+n1GNrkf;Nz_ticv>s9S1h~JYMLEn+FI?fsQP}E7wq1<%xlj(BB67
zK_hx^)@3bamOx<VXMV#JViq{12`!-b>nxBg@KflZm&@QQM9_(-1iVUNS*B<n#}h#o
zw1SGam<F^j8i~}`dx4a+Pq$I)oG7?|O<EwQ{UZ4_fCF#w05<COfG@}SCEd)kQ|5)U
zh{7v_^5XfqJV49yc;O+CLf}w~vf|^f?*es-Ckb3H94J1nXpVS*p?`W=JO%K;A6Sq$
zqEi<?iNT0{Kc+}DW@MA+v50$Ru*k37@u;v4L5^zyr!Say785+vc%$PI`lHYpEU%Kv
zA2iS|$<)Ky>v|5j<?GuYu&TX4$!ID8^@kIx2C@?neP9oyaJ;Gnqz~L7vF_G&8$Wi^
zaoNr8eDtKqmw^G{1!W~89o8d+npBHW{!Gty-<8^_UsZymipl#vb(iS-2;PT{c^ln%
z$mRS;@?_e`s5pC6jQ}U0q^bjo|1^i4nMbU`w?PmPx@MdMYc0>_b;-O?9Ux$FDs-FO
ztU(ox761f#(_V)F|7bn_VbtU~;Tg~qj3A#%@&1l9!NfH2m*`i)4&obt8+{XqAE~zj
z6fKnJdmmBK7zg0lIp@HaSq4%XwiWEwCV-rQ>0(5ZJp`#=4V1d&t_8}x=0dI8D_I+h
z(P@9Znwhg7mQAl{swo3fG0I(4uMs^Ci{S!0>pZje!=w@Zn(@LP(jv75GFb)kgXKG_
zQb0dPt!&^~lmMe`R7y<J)BP@x|9T=L!U3RM2-T(Y@9bh7(UxEsy(dXCIU`lOs4`t&
z=AE`ERV83~@TsAlRO9lcTX~>Hud{o1rFw!N+HuA{+yj+?Lfax9PJ&x?phwem^y7@}
zgu(}w;xJ~q=A35>hl9`#LcBJIg%)RV3Uq;Ok5;YDY|^pFhnqXIXJpCql=eTxwi_H|
zU0s(<gEq$<+a1`o0Of-v&3QUmeKs^BP~Rm|=RXsOpfwsl(_-WkBRz(%r`rvS_Y2>n
zDc){dLlNlc%--#dm69o^KvAB7#M8y|rl{8zD65CHPm;<yzzSHhlOP^jH=M1a>X^M}
zBg}hqjDrySNt6Wi0vJhtUR}2;wF^n$B8e+Xi*<sMY1LjLd!~gwCyqCjp<jdMzAI(&
zh@A>F9tfn69Roe3q(Zr%f2@JhX{I>%{R#-qzf9bt!oDA@??8^fh;;Bo)w6DUN*W<_
z4AJNi=ig=;g8@XPJ&Fsj1ghIs+`bdCgGpiW6TE=Py^7OzG<9k{;_ao=9EFQ=h)w_$
zZGcbm&qkm?`BYQeElE&>Tj#Gp>N(82CdoE0d(spdR};+>S7uyPP3p!pVD&prm}`h;
z@A5Myk+aw4je^ADx?)5hJcRca?#v3z?T7O?JMN|cbp3XN9c;J!M0-|a{&?(|xAoSj
z?lJZCFY2k!(?UyA4)fKptNha?k?SSL#_9%nfuphpK+eETdlv9}ga*r^V=JWF12>ZL
zZU?2~#22Wmy_sKP|HlcSrkm#oKT}H$6>JI>@#2(~;;7!yO%L(}#8XP8QzfayV{Jus
zZRNYm(ehL^2A~W-M6UKx4r5#JkWnUhSm@x8YZmAgv&G~ou88jvUo=#w$biDu`QR~x
z!<bf9?L|Rt5_x5#Uw&PAAVXYv60T28Zpb-OMjPlHi3?6|XJwiOstAmOT=u1XoiPdB
z(@%iWN>#15;jGV^hv*WeShKl6F<ZfgN5=4ZK*W#;Qi#~NBjXICS(pGu&vDPZ_uULN
zS93sl;^#VM7ni56DV}S(@3+qa<Jz>JORy1Mo`9M&O9(j=XEH@cB1GG%-YNs1*KBN;
zL|)K_^po(^oJC;MCCx&r`{|d!X@`x6o<RM`iS2!)P|cD&U&94Thfxny`LjIvwmE!+
z*o|nsgW0E<GqYQ;M(DnGXI4&NYr?OjcBFn`*7v(Fo`_i+;#nw#?HGlt=W|+@Khr80
z8!baW7hRqNtci&UyR2pb!Eu?_zhX<qN}+9^d&7qh-}^;(9Oc#U(_P{1udMN%V07S^
z9T{LCFHkWTlI0u25HE;hOfxdWmtL@Z7f=b<gcN$TCDlRFphDF|Be;$LOu&-lbsROj
zk(DynmM@q|h|W-XHx_!<qqJs9eFCD}TMS{dQZ*h^9W%Q6>S~I+-;E}Nm)qD-D#_5O
zb@l*zU2O#@iX^O8*uRzr^CW4<ypLWe=&-oRZ;hlo4j#hiohqV_64L)Md`t8iCBdN(
z%x39vs;>AjzpyH{*NsadVs)=uNymy6s6)A_;laWClO~%Q$jS58ovVW9;zeZaM-krE
zPgyw5PO|3AZE&|yHrYOCTlg9+XEu(uS$Ty+TSS9>nzVM#+4ML{NRQ4-sLw{EmI|71
zrG?~ey6Ti_1!_y)oJMT#dN*oZYm@T<aus1;Z-mw?$}G79aLw<>D^DeOLxYwvY#v6N
zpw>9xS#)eJ@!iv<2y6Z5b%ysi8nH?#GeBg()z~Naw*(5nq?koN{NS7@%I_CSC^i<n
zAIwk`Ji*(rA0`X3U0Y!9i5sgqWJ<9|iYBLy`>}oT1PWkRcI35f%IKUAjWx$Es9@ec
z1q5&vqhUS1{0~8S&p?CcZ$ykH3J>nvPoWnRBtdwuD4YmXwOW*)e9G}a#h6T2Tp^?9
zqWBoZ%fo_>=oW;136dG0K-aFQEaxGb#-sx4_#C2DMxq!xiOP=#;V&}X<}c>P5wwKU
zlH5FqADq|LH^<hN9O<mUf@7#@>iU&aCvD*K%@@DIUW6m$MbiYx(UYHp#;0;LH<k@J
z43gHzJ<;l`D!NzFKoC*%8G+daQjR_QdGg)|3)N)!UT3Ei6AzVZUgFDD>yR(kid=2m
zY&8HC^G+fRFf$8a<F;J9BeE4<Q;`;b)}yiFXbfmjOM87k&S!715miAlGL#e{`JyzX
z%gAp=?IR*Y-AKB+(|g2U76mf73@0CJ<9tAabiBf54piCrL1F#AMeaH;otyf(Vn<2e
zP_FiUh&@y{SltIwo!OE!6k<^8S7MK#!&k%D9%4+fAFW4@5ww(QE9b?LuwISGx>E8L
zpVcchj{7}fgPjJ#CZ_tbl5o3F;zG@*IqpV8=aS$rpJm6O?d2*S%lWcNgkUQ_cD*lP
zU$pJV&QKt?0{#?#wLPtq&s-PYDl5Pd*<W3fSHnk!pwSY?2IHai;Ej}QPM7a^9v%kb
z1~k{0kJhV<XMels;bs;t-b!@10d*HxyHv@4qgIb4dnxhm<?rQm(~z`o_s9dK&qQ{k
zP<T*Yc)sL)Z#DhmMY_x-;;rEgczFf#aZ#{z2fB=SxK#WTupSF#53`MBBf+}_m4-5v
zf~xYy*l^s6s~qj)4d*Pv8G)eHQcN~tQ~}PDkzp=j{l%)9kFDw}&)8{utgEOk>{t{l
z>Tpy^jT{&a@#!qg=j{e;tmA2sxt@~Vf?&8bIfdW^Q{#s3`J_BLs2P)UMs6!Q@SF&5
ziY6w=iozGRtoPG5MPWsK%yoO$y0Y_(37r&l`-E3<^Bd$2zdQsF9p4>)d1lEWEZ4_;
zxMH&!GwPUPq*f$&r6zNhL>4?vEB2o`zSjxu&XRs(TCuj+JeO;4!<5cG=BI#Mh7q$s
zxx%(mImPTl$@KonbtO5t5iFl192r0U`E7bK?759u4WAD(!K5Sg0$R=QxDs9=rHx<<
z%E~Z)9ou*c-Um0LH$fbz%+o6Fa{pXV{qjf?8`tQGd7grA#Pu_yd-K=Vz=AfNZehwX
z<v?Xs-%!~8B$$aKRj~R;2ky0FRln9aW@PHCqg||vKx>af!q7Oq<G<UiCOX=mrEAI^
zYFDJcI#^pAgXP5)XtbeF7LW_Sbcz`?5@%4o&^e=rxG3YoQpVgEFILBUzy@kQ9sUXC
zneVTG)lWBebJX*RU2oIU-HL?YR&@;}5r+N<X?=BEiVb~>cQ0oaVXD>8y%H;Ks9e2h
z;QPI)TPHa;d2oA5r1slohrY$U^F^*)X%BCQ_^sO~7m4QilXE7gfL7#WHD{&0ZvJ|E
z-U@cd%uB5dF=fkoLGi0AX3}<sW$a?yu=XX3UhLm(AO{o&@4SrE-iiuN?8^VbM^U=#
z=BH<@nm74lHr^@cj4z;jY1ymB93Bhdx+#rF=k!ve!%f&rjP&P7dgkhvTLAmtr{WV)
zMn)iGaeNS8-SC#=E0X-mG%kE5BFJbZigysv{>l>hF75kNjDR|U;)0r`3YjH*cX&W>
zHg5#Uh#jOa+(o4lVy&P@(|qJR9f+(pjVX$U-pp%mb~N9eUR1Xn4Db}(JPzB5t93L3
zkcGD~x6+JYcRbIB(;U-I+n5riCd=PGpPnacDi}oOI;AA$>{pwZ;N6?mFtT)<Kh@wY
zlR05u2v!B}|J?}d>VbX^ZZuU<$0zoU$loUr*eYUV#t~&NP2fZTiZqLquiwYri<W?(
zz})rOa9<bYGu~41B;$`9;E+R(ch*uJ>MOZ-6kp#XiO%bC_W`yh^J8bJ+<PixY3E^g
zx4Pd^`4z<7>R^uBV=@drcdFmi%J0kc&V@?WH5bZiw?wO9v`mJCxhLZ2dT$2w>tw->
zRMdFohMpwpWS$BuvEJOx{E1wAJTL3;ge;a{c<h}3rW{-T?5VD}U%X<I?n^i9_eUl7
zwoIOObbXepA@0<!vK4-|6Ovrq-QNJpb{pYtou4aTQMaY8ncMU%V=K65?&T_Az4LNd
zbd2V_&)U=OWd3>@W)35ZMA?6Zl)zXHfA{lmRnhnbQszIh<WH<VFlN=4Vr;2;!e<<d
zm);Xf?w80upP<(gW6Ce7`i@k&qxy9`)?|q2Vv$uinSH^`{knVEB*xoEpYEt?P!=S-
zSnlF)7kQWR^#MM=@sTpwM({Ln4-xrtbDf1Qk>y=j>ezNVZAroaxb-D-P5{_@1-8E`
zq(T+^OoWun9-b#~Mzn`<%L)bEK}&#TH3vLBEDI|vza79SyCI!NOlo%*y(mI_&zsR6
zRkNO#%1>Y{GrhH)CQ!c8;gN@Dyw@2J?=p=E>i@)^{hhGb>LxVq0W5kg84<H2LwNfn
zEQ_dsX&jzlF~fuzvwG#|VJn8TlfB4}OyI;`MimX;e(01>=`f<WtqvcXCmY`ZAAs3~
zUJVcZfl0bVy>6wxr{N5)sKunl+l#F&Tqa85f6d-g{FuZzuf&gCvC}ojVEKor0`5=|
z;#?FcX1b1d;p32Z&c{YcE4`i&0hdy(Uez5fCjQ#?!h3B3Lb_C9oB!;zCXK+OOmn(T
zFgK6T3lut(%_R1E`J;h`E2#n91g;l%`~tfyhX7;IapIk7@cv?#uX9sKl@XMYibEB%
z*_y!QtfXeZislQR0|_Cn_~baz751*R`x1racP&Y4eDaaj>Sx%^-8BYzK8q#B25h^2
zpm>toFf44K_?g>m(|}S2Ds5&P7%i&DJ<8gSb}G9Tgsa^-IIbo-gvVAjc$}&?_klIF
zh3_k)M7x>KHVM3SzwiehP+nxvMI|xN{zfKrZHd=$^N5Ab%o;64e0+6S#M+SGGa!*-
zjbh|a13{yTIBl$hZ}28{#Izi&!igkSOtz{FkT!1@*k9!lc}YLAkt|h3>1?gH&AH_8
zhDh?M8jnqavN?+sVyiqQq0o42PBBdp{eEEw2D;!%&!#a?RhA=zt{Trhqaq+mqHZ+8
z=p%;_H|2d7<eITU$D_FU_t^((ctyhvo|>Ee`TXyxZx1Af60tnkEIlX`3NIyQNy9F`
zx2&h7Ve|b(Y6|XtiqghD@pvI7slnMZ0c}hD7iuC$$4cRr+Z}TbdTFQdEazhuHEqQ5
zj9O|&atS3Gc9rT3{Y)5M%q+={(>OsK^=5&<c+$n>JmUqnnap^N`B42YZ4QN5)2ui=
zq(<%)rR@yOhxO7&TmKn=+0n5DxZZ&H`6(&mKa&`w*lTtuH`~y?HOag~AH~e~l4j#8
zI;GZ%$uxf}!Izx3)5sm%m5)qmoM_MPs-$+)t2=!5yq{JCRtr=70uHZ2|LP90FYl>v
zT{jd$s-)UV`??<Mh&~e1p6>o>?2i4)NZDjQLSlqjt@h$J>|#V-s7%6DW-ZIdcI36D
zFOl#>xSGqN40||@FfWPNgN$YyQ&yp=*ti3qazQ-Ky>eFI4`1jyhdpgrwJ5I4ze{zC
z&~gxX*UZiM?r@EVyNL(1q5mffVEAYm!n%3BRI<Wv7xu7|s2el>f?!Ta*Yx;nyNBJC
zE{8h+q`d@3v<lV!Sr;<C63tRV>vqMUj0w+fv_6dA9$XsQ$o_$wC&AFd98O@9r*I*C
zkb8CYye+BUu1xrfFWl6;eEivU8<I)TBrf(=yMf#nBu$<F)K1p0r-;klcn9B`cFGm2
zdB}G8ynNCXb0}FOIlr)K_SF^7SVMPX1&fEx)-H8Eti6vD{RjO*q78m^>P*KD?zHFj
z9QorszE}rq6;I62)z|YL3neQax7Z$GwxeoqP74rk?_}dKEB<#D<wZZ&&q}kZyIOp^
z4B1?FrPOxtWX<m{(wVRrGf`6&nUq`%`|(T&&JinBomP1?SeDUoF<lxW;F@O{(L^3L
zJW$)%z_A#n_G4yecU)kTmV?xLzu>#)%pl)Pq#PhHT_u%#zFT+DFRMurd3PA^C4(6(
z^8Cer(LmB?x37jryhn!(-i=Z1V7cq#3=>&ab(--LeX9G++@W=cP={s7Y_X$;hZ&Pp
z`K*f<J@y`&CSR5A2yV{h=ju;qwOp2aPEY=HVSvSAy&a)kUt|a1r#!rv?E8{<{d`(8
zET=k2fPtlmpus(mX&XnjU0gScXz%2!Cf8eT6JxwxsjA8;8Q<u<hVOEJXOv6K+dc`k
zzH*k}o9X#iMfbLwBm?_R9wy;Ej!lnF%k1YxbC}<&W=g&S_G)K+hwEw23CmVBYNHkZ
zEQyIFbrov_-a3Xp5Pf^h6?4wYh8|=LGe3t}yGFn2kEb%WF@1~pH#&}+2+$I7XD(u7
z@t6NXzjbYBIqvm@$oMM_{0r-bKmf+#g;EDAc=;*QKS_w+@AsXIC5z+FO8pmRUZjA1
z*oG8;%I^O!)VoPvLYL2BMmICm@8915#);2M_Z+=t_2cR__<ZxeiCoVYNcaFUSz*Qb
zZ$qID)MUu8un8Aut+h&M?vOHm8>Y!$8M{c-UvXtNdp!u8{6Tt|G*^$~KRyC%QSYKj
zmay-h!LiwF1Z%d&3&W32j>eN9sY+ixef~`fG#S$GjVQ^Nv+u$osv-|73+*m8Rc?xp
zN1ydD#u}*X(0Bb4@NZgt<&~K-U*pI}@grIJXb~Ii@GqjI20QedX~$GxxAVnCTOx$i
z#xr-%llCwC`yWcE{gWt34^el>(s!AZf8Gt!=iaFlKYZAj&;CVQG%ZR2v_YR#+&>s1
zRLgTji^>CBQ^Nn@n!F1_ApI);e(w@M1W;kUb^O<HMTMPG%>OV<3oZc9V5xr5wpBVH
zJS}u}IBeHDKvwZ}BXzSTE6t@Q+DhB!yZnlQYF2QJ0K3s+S>V15$pU8;XN70#@#nFu
zBc_2A0?_Pn!X#WxyIKQwbz~yobQANm$38;j+Sv&OKhw3xS!riJ^H@zVQJ?H#Z*;HR
z|3NXJM8!OK!_izfVxT?ApamRynTaExv3dRGOZ?@i9RA;7@Xl=ytdJcP@Rtw7AI}2o
z%ULbwU;eYm9@cRofuiGZOwtu;DwnTr&A8e>QI1fn#p3`9tMvjP|JkZqEHU`5%1X)0
z!m^<^vx?G`qe7<(zOxaYhZ$=OHE96MX8bLc-vRNyyp-}cxkxTptNu|VE%Q%{^>W?z
zfx}OOnNrsQHw~Es5TxUH0?hgL0Qhe01Ozra<rdVKmGYe6Mg~CUfZ)Pflm$ZeeJQ~W
zkO93831ni9#hF5}3~s-1up*!i1u!koq_`uy3}PqQVfOWH*Xri^qxsdViL-$BYh)Hk
zuAW7a9KUKpR};2@uEP)_s=cRC(r=<pf})Oa;i3;Bpe}&uxr<Sici#PgF&<~ov#9S%
z|NL-c7Qpm)?sX4^|A2?nFseh7S)t!pKof1Jvb?h+K(edICd$FUIM#Cly(|Hp9Q>M}
zVejE7man4*oL{p*`tJ;)pm*@|<vv2mhDB~v<r<01Jy)K&ewT7?BfSZ=SyAkGIjo#;
zzp^pU^+9CscebIYSqQC_qk|q-YycQFJ_nEM)P4JYWNQBB*>I;-K#SR%0dV?SRGKN&
zG`OdsJpQv|GDF-4#>KDO9pCF9;nfbx6Nb^UiAM=Eq-mc?)>w4T-h`9@aC_NRI8YZ+
zMOLs7V2t{vJODv(Io}Wnp|T1<!(-qs&DW2j*?V|#xr!lTLZc~sg+<Mn6wfOoh}V%Z
z$AC}P`g+)J1Nh#l<JU@Kn;&(~UP)ih12AWwxRr=^PJK5k&*H4zfKcB`+cPnbstD|i
zBU1sao6c63Y5=`8S1V1=ji_U};fJiu0Kt%!WCRpeReHI@?`K(LV`+;Xlf*xb#p2cb
z@3x)wHrmIZj|GE=fX6f^xE-Yj>Lb=TBhvGm4biz=+!>Unwxn}F1ts5A+i#<NgHs1Q
z%Jn!e*>Cn=Hvnn0H7o^H>GWP0E-o)V0Gyb4OVR+RUS&6Pu03iAu5pb5y(@PcE_kRn
z0Jy(6co#5!6~YVg(mijkbhtqg=H-IbQI|Wr*H)!$Hvr0OarBdChXK5bMd_?ii7?CM
zdDb^@4kRm6jY-#6XA~)rYy$RQgWp&eQOF>`U(H_uQP-BF`^4E(GP<Z9J=>#wT*CMU
z9!MWj-7H#v88nHKy1BPflI(WUM_8B!>lxXa=-CurmVer_b`V+rYz6cP>%5>XpiwJV
zSgH3%rG)VHW9Y*~+YFk8{B>N>?OLN?v2<v%;94=n5A}~zshNL3^<FHrQ5Z;3d(7Zy
z2FS{;Ma4(Q*Lnt2&D!>`CRNebLBi_S)i!Vhe3Ev7{3Plba4{#%DnvGzcWh}XLZktj
z6)b9lqb%Gr516nt=GquUj9cWifFkQ->Z+C(azaNV$M0y1>t`L=AJ&EPwW`Yo^$c%O
zA>?&S33dS|$1IiG)*vFC6|iz^n}?k5!Aa$3gKx-o_ZE3xIj^wjOy*55s!bYioesq{
zj7Sz&5Vg8jwlf@#4$BMsT>?3*!{{%FBGmRtq&2V&HpwT)QlsVgzuQDM)=)nObpbR<
z&xZvcUPdG;WOEvmuG?5kO$|*`2*YO7Kj~u)c~M?b%iUJHF*+2W*aA@Wny~EHy^2hi
zKhrF3ke8?5g8n36kS-FeF(G1H4w6EP`9R+ZF$z`}Q}>C07~B`$Dr!yae5?w!3RYN*
zgUq4~TmsF&aQxyPEJOAkm7bg+a~ijr3p#I_p@SQc$vkAdU9}t~Q-ezDoK1DxncN2a
z;j&w4fTcO#Jw1{J*3P0m=!viac-YD~vf$UGmg2LxVSZnEDz5GK76om(wtvMa$!%0|
zO{nsaMFI?H`KYuT+*B2`30|6N_gDfPO)g7M@NvtJ7tBTVgNu2JlS`SGN?XGP%4|Ov
ztQZF~w!lp;dbtL+3V@OChew*nv8fF-Ql9UZAEQ^h$YKzEVkF~7*q$$SnJvyX$}6|>
zjjh|R0pN5@X*uequwb>s|G_U(aX`(I3DTEiI6#?Hx+rqP2aJ&XQUa2UMV#16M_CN%
zGOZ8I7!qGzKlvzcK{5<(tptt-_OV=W5y*22wg!yIX`Zep`PL~D$j8^7fIXzb8A-cZ
z{RmXv4GK~mgIr)7EfR=(mA2UaqCo~v4a*7SS1W*W7-Hb81?QA*Tg82rehb1tC54*b
zApmHyZ7fQ2<R9#4T1M|vtmHDO;l(bZQVejEk3KcpOYSya_B57N=RmU>_x#!Io#q{!
zNQUx$p!3H{mUAxWUm>0fry}0-e6p;V%*4NiZNm1ve-c$YK$T2*ZT|EJueuu)5$vXV
z8DwNauLm^7y&f4E-{Jm0i!2NYugIm;CbHN)qh<z+U;(sH|ELAJhZrq=&o+XTTk`zo
z#~Y5z89SFH;=4ksNObto6l(7F*mJQ8Bk3Secc^&fjBRdgxDLlNX8AEF8{Q%@9J!5U
z1WE>6>INk1nl#u(J0L`-N~`;jUwutyQoBlI9NB)`0kPKTyzu5C?qwkKLxk}8I%90L
z7rDi&R%!LKsV@aSHE(o$)LnO|7nL7wPJP=x{?5K1M)@f`;rUd@V*lNId>=ao*hMna
z9n6lH-DG%Duxl97?7=e79mH{Z-J7j(EOitA=q8FjV1pF=?&m(;<iyR28v~rgyWG@}
zSWW$Y8P}E(Q>DOk8Fdj-ZSk;++v6B$Q5tAOYkXfcY)r<P(-j_~)uHniL(w#-!UcF#
zKO`?0j>55I4yA>WpY%p@Le8N~vGwRCS`Vh4J{jh%$I-l?JjoS}v=a6>uu1~ds@D^F
zV^b`h5;fhqLl9CzmvfctA9&$7ZDp<$97R^+3!?68!48QSK;~26`>ZAg{~j3;&^YG(
zsa)ABp2H<zZxSns#?_AOy?q`v(O>rT4?I8%q8Wj(ouRpThn7b<*aA~{U&(7pw`%$L
zlHT6HB!&j;XAMnMC#3}?{kBRp%uqXCAeTG1T%YElzsr3`6>78+_8fD7(1Z9SHmS)4
zD|cWI-K`(>wn(i`Qy9<mB@oWWXZ)a7Zqy8Cas;;`saOtASPDliBR$}=m9I)&Dg2Z{
zflo||)ncm<I;QQLm2h%3k#sjlhn!1*wr2=#dRsh0vBCBl|E<QK-bTuHTYoYG))>Y!
zmtC*>GR8(^A$%}RpxW$ZJkcmR&p4LdeYgEy`}g;IBlUQK8b0S5kZ6U+IodZ`q7C8t
zFx<O2OS`EKR-Z<*fr{8bwWJRo<g3kVp$DRD@A!0e<XyXvIpkx%dB8Wv9deY6%;RL%
z4%ST9pgD!YH>*6lX+GnNLq6};o;0Xdl%=A7sHMqd!S5+?*a)&ZA{j4apJK7@DL(GW
zK;C1bMJL5V%`_8s`)mYREDpbA2wk$GI^u>z-Q$F-_l+sJef`Ngf+QlYgS(5-OUv?N
z+fokwN=!!~!qtu=TMux3ygZB06s<M1AmwL7ZiC^ufQzU_QGp#T?el6kN9FCnlH-!L
z@gDbXCBRtU_aP*H+C5i9jhB6CUrW{cEVl7EE{|GV9~Qe-V(Db>!?se#|3}tW07bPn
zek&j$BBg*JA*nQqfJlQVQX<kwN=bJ&3J8LLgft={-Q6i2(%qfA)Uqsm&ynl<zjwYF
zXNN)EIQyI@ei?Uj7X-6dDzDnO4oD)DXEv5%1n@%M*B`*F%|=jfUGEGgfA>3{Dr4Cf
z*HIvhLEJD?7^YeNhj>=NP`!o2JtFme%#6^@2nUp7-}~Nn9V5CV%8!nvIJyU0%Hocp
zgH=2YJkC63eVY?$>|0c!NKl8y)iKdol-s+JjVG~fs_ptBF3k7K!6S`UknP`JJCA2+
zyuPZMA$rch9Qo|cL{zU=leAOkqfP(yC7yAo2*Yj4L$#f1n_osb1q&i~ZJoJv_6Hee
ztvAnFQQa@~T=?Sy-|x_9@eDcq-k5g>5g}z26P*`RB{pZjvS(DswP`h;1{nEX7wR9`
z{@n&<+H@RS5{n$BruR9Z^%^>`nLAC@JCi<Rcx`yOXIzj^#vl-tHcs?BNAz6twOZMH
z8SLB<I$S80R@g(^BkN0D;2aE6Qum@l9*1W}$a%KHWUTt+_>SSZMXcNTN#=+`pbH&|
zgoBEf`f7OIQ?Q$;$y95UU0jiN15Es4gU?wC&+iZX1ThQ5<%^|KcToNL(Xf)}Ic{w@
zmJmQuISciN8JX2|tqEI5G1-i}20Tx<$t5h}yT?*Oa(?B^x-~4D7zW=~Q3q)hYQo0f
z>kYXIlT=5vq!+#^xh#4={k(u<zC30rWagaYd4A0|w5HoBP*IcGs&Qz@B@x>SOW_;@
zw@mXP1EdqG2YB8+#bBiKPBEzTM3-;-lrDF<>PJLe0m0iRN(H@5PGDEX+r{AM1*Q7S
zN+<~|^trGF>Wvr)6>BllwQMkmB4WbjG{t0QSfeAAg-{+ju-wz3BI^2)Na;NyA3yrd
z_4GKiiIyz=4Y9eO=s~Qw<&}Xr;^;nr3pHGu)o@l1`8c3I#rcD&El~cuTHR5c<2MGU
z&Y=fAFF82Qn@|F$+ogFu!#g&i6+qRcK3&>(MPj-K=tX|Z3FgXDtFV*%6>(4`f+g-V
z+fiLhrWV*O%f}t7yW_p-w46-VrCHQa92TuRLJ%T1%xLC8!;J~j-ZBs_k1eAI=s_xK
z!FI<EjLq{al>`5*>5NR?b=Y)#?<WV#l0vNso=`=&eib?;^As%!_Il03qBq>ZlOhqk
zuCZZV3u{#n{{E>U>p6Vz>zrPg!&DBLCe>HnB!SkjjIxgQs-m>x-$@;c-%xWgr*EiG
z`WTGfS_aJGZa(=Ft(3ko_A;{_A5zXjhDFs66)Y<6y}7fIg?B`Xi|F!o^&#E1(p9TB
znmaArX>b>Nn@!mooUG!ZZO1Pe%&a}rs`w2?s+yzLoc8#Bm|@AR3iWx%LRQ4$ihmw{
z*ez3&YunZ`l}GbgR7!bOBOcB_<M?72{Tkp5b1wF|$m)i}46R@GC?$dnkGyA_D9);B
zVdYIQTXB7k*~C|;?0)zUd`x&h?7Q;$uTckkv?I3bg_=>43z^hI84?LMb2eCRT1)Xs
z{oXC;B>zc#%ZylG45y#@xd-e^-K^+KmbaeTT{?SxPVGzgJP*S?g>!4ZGMEPnwzn47
zPbit&$i#XOU<D26FDTV5Jnj9?wqxvO(DgiC=+XMuZC)3d^P{fp4Xy3sdg`Th70`jS
z&yw^hp9*H1L!A|pip*w9J>1FYal!7!yE+=~Y9t!8{7vO#?z{Y7sKfalCvz}!D3L>1
z?lJoQGA}tccY=;!S#;iDlyM&S!e^x;<C;&FPiD9b2!4u1j`Cn$e9e5LoJN{)q*Aj#
zu~bo|Jn_kLob*T8vb5Ewd?8d7LDS-g{mwl8-k&>4Ww0eB10_VHe55cH@}<iD`zIsL
zS^8=p8{R>JSbU4lzlc)|E5^$oY~80aKe_{3zD4tgM((O2R~U9*KH^36$WC<%cM+%(
z;he2}@sKhzn7H*HWhPvNM$eflnL+B$taK^PY#0;;zg*|*Gcox0Zv_Y-xh-Q4dM*8b
z<hI{&ZnVOPraQUW|AnN{V61opP%aLQ@h`micOT0Lq@anFET)$e!2cexC0JMa|6bS2
zU7j`gT_`%^KS1%{|9?N~5rriC$N!*hF_8draxS-2zCV8b{{+7T*jF)PRXuhp^SaE)
z{(rf#b#qMQ^Z#g#N%Yb5D@j62<%!!TXD!c5CIVO_!+u?k(Mu#r$C|DH9CREMGvv&L
z?N=WwBoe1~z1P^z-!6<2FBBMQ+`|3$>wC9)H$adR0*AqeZIico+i4`~O^w=dZ`Cky
z7s6*Y$GGU<LfL`}f<KC2;gRL*3}4wQHG@Ab{!#nhY=ud<@toomQ~l@5i}(Pkf)ju$
z_@94w?y^y#8i{;W^xuDneZ#03JLErC4BJ}`=gcK>xly7E=YQY9<qyRK0S3+_cgO$x
zWqiY+jWR0wrT(uG0TjPtkm47{GspU%nDC#s7V*_fs0ZtMy38F1+lZ3%pUM!($;27Y
zZ?V@{-=Q@+#Bq7ghZE7rJpas|PJg)Rd0$8OjkX|_=h^-aP=;*-UpmSH=wuW7naoKg
zry;RK!@~1qrl?2mQwxr#uNR?@qI!T4@EgLVx<BQB;;?CQ)0_b|&=)ohI<X!Z#v>{f
z-zI`{p2gy4-W|{xmcIj}y6YA-`)z7MuQ`Rgq_x1Ol@{_&RMmn}#F6}SK-WfVSyz-7
z9Ijnvvos-@IvvV+z2yl>e?cl!Wi@n^1Zf4yaSsFPX_E9$ZAiV(KB?4v2SP$r6)t;4
zG7bVneKCwIBV0EkG_YA8gKHKYtC;W+diI7h29f)491mCrQ#Ewx(SWp`8HpZQ8ispG
zB7DV+P<at_q#c1|aodU|gRH;u+d5~NEY)Igj!xM6X5oob;9Ll_+chN#`z5^4Wn7{2
zhDnvVfpoPhAo<Iv27q0)$?x>XqyErQ%oWu044H#0GT8=?b!qMQ>_jbQ*S^O+tB_y|
zn-<pEfB&HFjP06F&F(@9d&scmn-~>!gZt9s9%auLvm*3i9NCrb9!iG8ZznuzvMeFi
zBf{6K9%tw6@y1%MP&GLil~eSwZ$Cb{l=m0d5%zno`LTkFakQgSf2#CHscY>FQobBi
zwB7BG%gSqWYt71m@Y(^aosQrP)>XPVSSSO5Rpx>5C0gCt0!VI_bD&h_ovH<?VvYca
zJhF1FiR=u;w?#b82LM8kk_6%`9-*w_nW^XwVtuNiT(L>x)Xx)K&Y+@?F1K!BvJM0|
z`HS&$+zNRvj1<=yAm)rYgyoZl<JmBgf7EmSjze@g1Ze>MBZ2|PXXIDY)86wTwS$7s
zh+~eN$9JK$s_XK4cJLlv%kx$Mn9RJg0=pbU&ug}Nh5agk+S&QvwR!QJo_GQV%EaL6
z0%EQ?A}60%>Y;8t*)Q4-;|9|p@NH-tBymA-<;YnU&U&oP4gew69cJB+M?L~kb5S)I
zm>PE=9V(QU?HH})VnRIqN2j_8j+e%cAiu;;7*q{toa+zMA;I@ef_K$3^hOpcfs4<<
z)3uX3j5FB4F8(hX-skUi^XCPmY>y>)>^=!;!^gD@A|vCT9f5u^V_N6vw+<$>Z-ga=
zTnMc|B;baeFzO&Ba)QeQ9~6^Wj7D$s9|SS}P;;+zb^{4Rn^1!xqXW|XKJRtqG{{7_
zEITv<z8%??VgllZoQ0e@1N-n%#yGRV5Vd*`GZ-89;S{u4IZT88zmad-;*%97`NH-n
z#++qGFzU<om$L@)<wpSEO>)EA<|4e>H6L^0$ThYE+2y!<(|tN+`awqgAOtmRpBtL&
zn9dCdEIqo_g_}On@%VDiFri6S9Gw5kS!(VM;sPx=PSlL9GQP&qAkl0Z&bjRt?+IWH
z9$gu)o$9{2>5)mZ>Dny=j!lb-`Hvq%haG@G*BEK%0tpd`^QZ0uO{$7Lq?e2PZ~{dl
zv5wH%500-BK%rXYMU{bf9jB~iw>mZ7Zt}Y1Ngj9g=`@7DFtRpGU`#I^4*gP=D{fer
zm~e4u>^u%gk{DOC9Yu6=Pn8=^wM>PeBCHHK<biH0pM9fDMbo;~0sjwJDc{&>&@IT8
zSN}YbywY;IYcsFhq6IdU6#nCKwp}CcZ(Pe!eJ4BGmMhv$XVpPt3>kvCy<gssOYw0c
z@wckoYr?G#;;5@o`x+>}L(ZRx$2(P!#$<=1MPh8yD}>zI0bPY2#C5RKQBTz94jnb(
z1^mejXp^e~h>p2xoy+=}$L_I5{^Zez$+F&qxY;wqP0rzz4=x4jU3XmDQ7VapSx6Ax
zg|GmpbaRcmjlip;M8&>e3!<QvT&Iy>ue?1XJ2iwqYuXWWMT_U?xUu#a%1x5BT>lx`
z$fJ@6V#gM@Q8?(9zIN7loyU`o^*iX)CnChXn8)XdEk!jty&5)n&?=c0($F9@+45b^
zKlAW67h#kH3~KZ?{J=ol6W%!3OeFDYGDGpvwS>xV_Uf!cer2Q^Ir*g{>f+g<POQRy
z{JN*9)Tqor1CtL#87&(W05meZS9KT#m_z_e4tJ%Fe0r2=BCXg}#^vo9;3P_k5GU?w
z5ell{S&yl7;L|dYrJ0lf8<`kswDY!#V`w(A_$|w8eq7C@&`#~?=Ge{EZU;s6OcJvn
zuSduWjB6I2;q7~PXUNQ?eQBpg4N%)dif32;<;2G)4#N1YHWo{j0*?YO*WP|?f*%r_
zit<9kXTfUv8^pgc;6SuLrpW-sEgGWs!-(1gb!<7~?ulcq?%&4^<K}1Ai^*iWmvtjb
z1MMqA<|*5LrKywMOFL=PBo}L6g3&V4gYNI5n#2bSf=S6jJ}yJ@bySEfe;#sHV-<kT
zH~7%a3EAcox9!xrAB|@S20nasbiCF=EN^C^aAbR-$HrsDgMCa?6pacYS54CfmJdhZ
zLNN{M<L^OZJAcK>QNc*RdbveN`*7vzOZuX8qHKvD?J1hfkW+#?=%(pS1p#-RK=&R~
zt>1>Fd&7doh6VSfSFhFIR*9Y0ctO(@I=79xr1w5ajlE`Fi*}p~sTQmnU*S+dW}UFd
zSaX(WnOXHlNJ;pR0ahC3BnK_w1sGF7JHocLw$(7dRs8cg{E1o0-%p4drnqnPvdlQv
zBd1p$E_*PP^tdfreyN=6<68_a+s(?(d%r7rqqV5z@6Kh<4SP*GOSq6ev68-^>^cU0
zSLipko1nV0toOqLG%)t~yb(s8M@DRv^Q@mqSL_0EDpN^xk)8Q!YA7J!*D8Ud%|YT^
z!+FRGBXDavw_p20k<!9*R&_J-VvTD(@ST0XNihI-Rcc#D6R*P*j>+G2n|M<8fz6?g
z8QS?xC!%Gc97p2!1>K)C<$YNNdx-iDA`dY(01mR-D**34DhVo$t&XX`CtkQ^2z~ZH
ze^$jsm|8le=ZL(Qc^aEoPVVyXUO)F??GL#CB$laAj~_$W&*F%>QwGY|n?V|Fz>e9^
zUj)-9@n`5*EkR(%JssB{CCX$SnF(3V?}p|09!Q>n0KCJMkQBK-0c7yA?DErMF_jE;
zdt*WmRH(b31&;Q1X^+h^o|^@=P|f#Vn2n4(8}htsa5EFY7R=d4ixCj>YJ>)~(qH1l
zr)LS+)kg7!NR})EkpovI-Ib1G(#(&4@U3W(1ekjYpScsY_tidWo_|lEOCbDrqn}86
z)hA55;7Ooh(~vi?4(R5>?~z$nAC?{23(+b(|3M5tiAY9)*uMb`rqLTsWo}V8Du_<Y
zgwj!y-#z;ZhSy%-B*m}$80ChK6uraWWe}}VhIl|!kRG{E{fpA~_DKpB^?ORj*=Hn{
zhz&DYQ=`OXm#_lZaN~w?Bol|?tDpXI>VhR5cYBWrn>3}DWHUEoSZbZp(;uolGOa>w
zWG{LGj*{=zqLKx)qtPec<85-^(6X^~Re)}G?ds4iN6XKoH^$Twrho4!jl4V7y@vFU
zT5go?{yW?_M=|W)@RO2^K)~bEIWP2&3B>amaKdhneW=76=XtSC!CArDo&k?hp<Gab
zfdT`wnq3yLzWw=rsOMCAG#%%~S>HuXr6EE5AoD8ZQqfZ*7sXnC9<U*SU}K&oJ+65m
zuj)Gf1;11PXAvJPYO)7K*hsPDnvz`Bp2+;Fq9|(X7Q&ug1^1qjd0&Q{&Ix|^xd?MF
z5&AeB392dCE&WE?Hq+z=&(|6OhpCtx<b<ObNXTQs(;u*F`!o&6cH8LZ&KKj(KpSc`
zUR95y1tYHSj=TpfLY&2hfqh@ov;2m|wrzd2C-S)ZFvY-`ARG3-a}cA9h*6VEGg|RX
z)#hVIY_upV`ee0O1YYzQ!!3KW73ng0b@p2r-)rogG#}e(`IVituynBrOK|M2VF)rG
zmhqeRgBI5bH#{8Gx{n*Q+TWFh$`CJ+Cpfq~qP^F<VO{UdXABLBNaEO<!()sdkEC>F
z`<RQ(EUJ@OoQI^hDXREhu^&JX?R6?&5KXyv6$#+Hv(G`5nbwA=RH}iEcCdUy?TV#e
z{ez?vfB6#E-?Mknb&qwluT)bDD%nsYE48;DWggKMxDH;K7Tnrx?k{3}{g>R7`Re7-
zET7SYrAo60rjwG~#e2&35-9ya=gPk4QmWQ!@(60;YQJo`oWYKE9$mL4942mDg8gjb
zclSmJi(V7Qwy=nHKV+%3`I=3|FW+<mW_okV6#h+aS(fK_v;A*|SAQh+RgHCf^-LXY
z^8CFozdIO;#zI3OKjT7_GT0K1eo4pG0cyXj>P2>5=evOweKzX#)>U|S=b10{S+e~Z
zCP5+dQ)!%goI>7J`KlkL{UwTBM`~5OPAPQO>+E(BaSMry3(F|X<H@k+RO6^+?Q;W)
zFG0vW$6C{ms!?ixKW8_KcOgbX-3Nnjd?j)fA(-C>&tZ=ZMa$%|o^wm9xPNuxe<Iwj
z=DQ?otUjS4I<-O1QmfA|Z13W-_dSKbcxgiAkjCK}g0NRi&82nQzf(o+EGg|L>FJiO
z<_yDW+U*RVGwkJaq4pv9Y1T9dD~S>GCVvq}JWfm{Uz(0TmE0Y<CH0l*h2hY?>&m*(
z#1>x?a%weJglD$s0Q2W_Jk4aNp!o5CS;3Z6<T265sO51Ly668$Np#%MQhoBNBjzaN
z560!+5H;M+@G}e?7^pF0$@j}MH#rrZC>#t*jenqMc)KoAE8{@|pHk9586Nz+G@)a^
zt{~Sg^>E#C^wfC9c0#)ya_z-PHMmP-11-3ufmhduPtwue8KODI_quEJuS?~TB#JnH
zJJzR0s=7Yd15zxC8?h=>-6#(c*XRcK9h6ToW>T|--uP$18S2PyN*#ZX$E;*%`Z(QB
zBDpzCR=#E|7I&5Vaa*INiXY|H6-z$~dq@maM>;b&1nn~sduc-Gmhu5LtfnG8Sz8{Z
zJ0`<MLhx@#dFbBTfnV?=35Gn{sgRcFq<Klaq&LvVt1&GoRc>G$_7}xdxX;MHe*F(_
zj=(sGI7<?oDDBOU#phP}1ffIEo_moodemBN3S!E;Ol4!1hYS}b>b$k-VA!TAla-0<
zEK2`+hOECpT7W7gGo<_e@Ae3ALK=9?#qd}2zQiO#v#D8&?F3wskCP0~2l*E-pE)`4
z#Hw6Jl%16AI7eTswa{+%2t5c6QRhMyErQKm<ys^HK!h@>BJ8hM`EZk|_kThoU<~Ki
zrY!oo6R?E6{LKuw!-HbIki{Ow*+G0L9Yacv6Xz7m-P&V|ygMPquYR`!U%33&!^;&D
zJQm`t885nU@x*Q6dACM-F-dA2Ert}Lg35MB)LnB|-W!m21}wK8=A_SD;u)8ZeQ{n_
zIY)0u!#U#aG`sbzi1P}&wZPz#@i+bfmi_=dBt~e<vGc7WO_gr(mFmw}IeLwF?EmE<
zCy24c2v|AC3VA00R}_Qi#=QG4oF<J4&@Fa2JbWOh<gcsw^7#{m!QXhCt1<Zh?}I=;
z0Pp!9hqYFboY|%F<)1gbcLu>~@IK}z|J9p?KLglY2Y-?Y5Gh^4br81TM*rpK;tE~&
zyZ^vR#@LVsP02Twqq1z(Kr9FVZ_zDER)6)2m&e9}`#3TQ{H3?Gr70BCyRE*H?M~N}
zd43aZSydn8y14UcnJd)rk1^_hFUN|B5%6wdEEGF0DJxnv&)~5UfvHtNS(_FB1dJC7
zQ;jVD_0~kNWrWb=1rOgKPqhLK9&h2UOi<+_;<@);v9{ys-+Ej2ABh+fTB=YNJawme
zoD*|o<1fH@xm{At!3j2a0E``yA?5Y>0C>XUAYlC8o4Wh~@~gunz5;XUe{JwOz~XVM
zYhO)kq0gS2>|Y=nXEcBaLzJA^e==N-&xRii4JVI)4IMJ=Zb!X!7?;xMTU9KC#3&lh
z%aKe=mQR$Qkm>poD#M@tn&sBY&MA6X4h*DyyIT=}>3M?&zqqNEIV`Vx`9%iBUeT4f
zbtsIHEC;0l#I<$U$;pFbx7bg^z=qBI`Z~qD0>C$vRk41(-mQNRgGFJSG*4b&U*Z@z
z(E7sZ7DoV{^&7km1M>@jN=!)PJIHefK>76!DsSzTq!(&rlZ4#sxWellK<FstA9YnH
zXhUF|h#qECZ*Rf%?vO|hG$3`z>55n{`N0mos{$v2`?_|(P#vr>4^<*)00TMXL$~q9
zWgK}eh5*6*J4b-L*)bAEsyPBR8xKoPm0TNCqht?-;X4BR!-XW20a+bloaZr-?E4JS
zOnq)u4q-MI`_vZ$gG3X==1DN@Wym4-M{$MP^B3L%8;qoGUdi6Z?egi7ZA7Pv19)YX
zr_><O-?8epvg$nVL^S2S0zLvV^(ZEn2)3J_Us7I<4-$c^k|ZQ85DbTegy|Su*%>Gg
z2qY<H*Mf9%5Oe@wHN&3k>eeI@csQaY%aBNIdiQ*1m&bG);8DXCknqKLWIM1dJNS)?
zmb1YhRgkrIFqQLC7~~dSgW~=jfpLD|)h}`@GXNV*Z-S+$><n;hvu{D1z%;Jbo{yn*
z;)`)jK0lS3h1=6m61zj9oWOnyqV3lcr!{~`L2g;sE{&PN1Q0Sf4KCq$Yg3ajp+{ix
z0U<!p)AH9%tpD5~fF%)O6$XCt=`L^{W865kK%e4N74zII_sDhyY0WdJL+uNDV#AiN
z`na@T=lwJ3`P2-U^l84j8*D)^DfndPd9EM;R?x25Y72N*&3!Js&~L5@fhq=jP&S|d
z#SD~+Vmri81d}-xEGbtr4UXuA;z_FZ^u4m@G7j^6OI+&d5fxb@rlSji`{eWN!D5R4
zSkuCv%~g7PEhe4HUmVC!gJCjSs6{lWVP2|a8#o3~o~rtjp!zir5L8<~3B*isV=VhE
zMp1Kc;(#0*L9(Fm6RLF$B9GhJQyX0`gNc5ibm~i@I%!q{9fiM#oa7{X=z|6qd$#g$
z*kff<<dBiv)g)<-+7bX>AUz!+J7}EoInW{TSq1WCxXyWFk(WbVs6Da^ke?H4YUXhe
z%}Czq4@>Kuht}((QtnxK3&9Vwwig~|I0WRQ#xl_j-5ny642Fw0l%<i`AxBT}d!OSV
zK1CZ~%V2_}5rI3*5&V~P25TZl)SUoovDJ<2{2dRV#jyjor3dk6s$JXLCrzYv{mvah
z)ccV4{LDO%_4_)wG0f{dy1FQJ-v|);xVb{oDvtvT2r67~e#3V}Cnf!LxXao!w^X?t
z6sq6Qwp&!`!B?g7z|aN4ixKR)QH(i|Pci2AR?P+An-d;fvTIq#PWE9ODKhl%_1ew6
z>eyiv5Grj#kqpY1qmj_Tgwlh<Z63E8C_!qcXU}?Oxm7-@U8fkQS=wJhpT?i!4$#=9
z#$&L6O3Qm~eu)^BP{Npk@d8eDONW(Bqjt}AQax+x+40e{6)dKtYwq(aQzF*^od6)i
zP4^mC+Zs2zsCK#t)a9gQE31<hsr=q2)QQ#w^ge&~vhCi&1EJ3j&ohbiMm23^9YHyr
zeZI?Zc5GjcTrmC)bgTUV*hf_LKO0sKH4>_|Y(iqzKg7EQH5J@e;RFJtlra_Vvp#xl
zix&BdF+|NaaADWuxEfM}j=ImGQyY_La-@Jv0kvG2{lHV<(^TR2?Y-d89};7b;y$S{
zJF;E0$v)k|lr-hH2m<m47)MGKCc$Q@kDGcSjQIv{cB;qn+%-PmPmlqI%~GgtVv+Bj
zoCFJLF=XCPYuCx~!k5nFha0v1@>=x9qF(br1Zg`!fFH#u1YDA&coFX-i=u0Do^E8O
zPI$G6NIVSzI-e1Cbn?|soo1ai1`cN_IM%F5MgloY9=+RO{ZVN?Uf+C-{oSp2{>*v-
zsJCRN{(SU;|E}uTF>qcL<CQR`dLmS}JL+0Py^t;PnMf<zTry-{+>6eZzdRZt8pcE2
z)+XZ)pO<e6CuVqJ?#)AI2Ok;#)}j;Wj@Z?@_&Dk)&pZ0zPUtp{mQer2@x}QpBfT15
z>oM(=w);VT6`jXsKvez10F!nwMfdG2QeQX)rM`T;`^-Mz%(aq^z*ti(K#x{qjzkRj
z6-euin-ag|f1}VkTOj4VXZi6n)R)b64q>LOOBlHhcgV0on2I%V=^(*4Ym+9fB)a6F
z@hXHU8wL?z<!5mW<h-3d9VsUlH%Z4&chnEdg)wWJsD4)KzJPn4_f11)WBfjE(Z;e#
zv&n6MBTqwmFuRNM-HREwl(g1^Z=&B?c2oSR`0eDm8VdV%g;5z7Ly$hWrxVO3<&Kak
z=-3~4b#tdDBt<NN=5_mSP`=wLfZ6X;Y`Lw8Q@_`X!yaWn95XAHoqQs&5~Cl>B98%A
z#VFndr$gRm!4|wuuZo@WC(BQ>AC1QAt^SqW2a9{H=}x~haXZ^*!W@}4m<V$BJXG-<
zo?@#YIonXFf3IvXqTe)pVBk1oy(+?eVP6jJ$g=3GeUPSDpl3*=WTRg-8L%<O+$r5K
zsdqtrw4DoGc#E~W?v}P;uLSK0u^-OoRqt4EbZ!Gjv}{5B=G)!(l<E4g{G@G<m_pC=
z0Q=wuI-+vG3&_Qt=w{<?9yR-_(O@gmMnsNsTc(Qo_e^_Lkj%QZ_@FxJ+`3jL!?Af@
z^;Z%PrHbA)057w<IRl#J%LUZ>hC3R(u1y7#d+uR*_G2<{Xp1^a<iQ)8*#8s(8-6&p
zNxAc^LX)7a1?7q0xJau^CHTWHly|XL+x<Cp4bMt{8Z`c`DoTY(&{6|$BFYs&I|IRg
zb%hHVC@7l)&unArbEL}AhXyB%jhS8Q@;;sMH-Vn#tDZCG7EZhk?gGjL^-1!qUHS^0
zb(eeFN?MUMLi3di)Et)Z7(aOe9t)f9iDmnl#&NmlaXDo+OIJuT99EG;fhJnsBjQ#h
zK$O55<ab-xXhHSdaF}LC^#!DmG;Dn5jfxOPM2Oa~X^_*#IAw?AwJc`{9d?9FHY0pZ
zy0JwTT)yj>y;@=wrNmaTCB7I>LaAjlc^i#fUv^&;_nhKie4lEQMYZuPr|9I=x|Ajg
zA#O^?i`(Rs!}(qzk8ki-(yJ(8-anrC&-mqGp>9ibJ=azq=R5a!4f|t$Kk<z$3B2Y@
zj81qynA4=Gb7Bla0Cp|eDKAzp&XSaQk=+@xF>#IP;!*bUSB}VJ#LIs-DEWPunKR&?
zdnVDPU7cX$Y=z6!aM}gNeiZ3V){Q*e%~o^ndNY5KBrn&&(p}3>Nv2uC6?RjKciCkD
z@9})~K_If*MR=(8y$;i7?`&jtpux4VZ-4n6xLEQjp;!!l&i484Fjh@fHDG8a+^Quw
zMI{bKf?QaWT6jbOvvyn>@|l3Hq|%bWhP6;DZ}Fz6-2>@6b^XWR`p%@|Mx&F8U%8VP
zKKr^2sOdimMLT_1k8BFQL^Z^}(1_$BU&>EF(>7DiT1V#%EXLfSv~-=EjNL>NHj7$S
z7+}hUT~lmXpHiz(9jJYGyv*TVIr;9lY;2~oCuN00aTO#a99fBS+6%SAIEJuS9?p4Q
zcc}gempmjy-xV}>l&eYcOj)He`k6M+Qb(EY7x0{LChv=-H{y`uy5YD9&DI~g){lN-
zAHBg&L19s#>)6~NYp~ilHF6Ys`-hRi@jGwnU|XFp;$tj|oTbUO7X1yi>6TZiS^5C^
zPCG|spHKE`q;~x+&S)62y>FJ(da68+YZrHHmp@{r>MCWJ`4^6gq<}3G-$k~?!gI1W
z3`GD0_;bV<C+r`HK^}Xe@-K#`?w(o)3N!`u>pc@h{D`PB$MX61>d0oc4!!&un(XuT
z@KoU<U`}9C$IAE(Zz2~RC4I&JOxOVF)h^}h7HB0(wcxV#au26&#SxGSkLwqRCbk;{
z&J|JVAu58bIKs*-B&-RAJnBcjr$w59eQ1(0#jjOre*RA9;bN0dN@KLLhxzEEXgIu+
zOSOFQNeo1(TD)D>55Sf`vaKbU;r5W|+q18!Zx@I`v{9f_d#-Kj{XC3-6Q$5jTf3iB
zkICkmL<5R7i4ktCYT52m{c~b>S{=BPKx&C9hNcGQaN>8eyQi<hGidT2pmQVLGhbK<
zJ9V~XZ6$mHU_ia4C+`jR%G<+TZI~qh3BDpvp;`Yw@KYPx>5Y86%aEKIp@P=L!#H&B
zrEF_0b^XA{sUM<iYwovibn!+pJm(LEkE)yYr0_*?TzzJT<IeSLE>Z(M`xRxmcKc7_
z$Qf2biJwWRNEK;L>hl3*`(s6XN~htpA{EAgzN)NTR@Du$F=-V&P-3gzJ2lJ@)t+5k
zM9IQp-WnaMU$zWreim+An`Pk)hF%OVYmTG~gz$xtD*|@v&G7A6>=mYd_o%r3n793s
zJCC(mYEBk{CPg}aqj?M`-md`*wmFHF{M{Qar|7BU%W?Ym=G6Cj8<Ml9*kpRvq^@1K
zqwfF<L<-(7yiOeb<D`s-Wq@j12fNSA#-oj%XU$#{5k$LkEk;j9RWG;kZVVzNk(n&}
zE`XCPb1!|H^oud-98!QHq4i5`qoK#ARf*{rOe(%3LWcq`r$47Mq<HQ6NZ@N_1`aZ!
zm7JKC%5T(ncX2ID-cJ@f<FMxQtNi|b=Z2NW{gjD5dH33a7iL5Onlcz>s;h|oqW6TE
z{IKy4M6H<Q;6y1y;S>;hM>LOZL!^S3cthg;0eYKzUTdS!dToJ}>fOgN>b<NCIo6m$
zs0JHerb1Tj?-J9%7DSEb9*3u=dKw=+i%6I?5t}%?m&kuB=-j!nzwD~WHN@nufP^t=
zWSaguKPL?jDtU9}&<+GXmpNhu=qO6K_~;g_o<AfGiMD#%r}<bQ(3+B{Gu@P1hpr0G
z(7mYkSjA}OoR5_<<6iFNy%mFfwMlZdSvV5k4CgLwRLq0pD<qN&Jv`L!qKv3n_rJ&A
z%sRu3{7Fpjf+MvMhI?gzDY2*~6W;4sSBzX@5*`OudKaRuDJ;k&T;5)w`B+s1I%gIJ
zDj8t6L^d49=qTm$E9;d!TSKL?G5jh~B&Yov8AHucxW&L@OBuS7qJ?H!brhG<+{aTW
zI~Mgg`c>;IXZ>r=LD_ImSVsoAt@3y^*7<zSd$K#3I_c*40#+B66&-Ud)Y~)%f!CXE
zYjh)|aWxGJsysNY0M0)z<*lQW`q92_vUf%}4@>bHd4bbb4+@hdv`G!!^oZcDpb||~
zX^?%N3}tHrk?`sioz3Rau!nPD-f^pEKDpXkADjxzsphF~H`X8ueh1VmnT+~uPAJBb
zzpHHDu$0AnRa?+`Y9?nhn&QZER*L}Jl8JKGP<J}^M$O+Pm$MZ@#_J1tLQkWezE%PJ
zR|ElFr<<RT$ZzLw5o6pox4S>iU*k-Ok^B51j1$Hn@;i9n9<u&VV?=VdL`HA4aNw4P
z6r+W`h(U#3><d>xbw<-*w=$V7Rm@KCBS&HCs%qv54=z>x=__o}r_6OjZ;iShw!T#N
z)-J2?yLWT2IQ<Ac%)DT3nFlVe56|#C&6vJGdS2wae@&$(rTAWmfie~>iJ*R{+grN?
z75zPuj@e%X0EUIyy!a2IM582Bb6do)`j`CmnW0fu+S@Yg?FlO&jY{~V;^dtheA=wG
zXk4_Jbm@wiO}94(IKLE$7v`V)Q=L}v1k6<jyI*TBX%`WnoAHh~B^0daNQ#`S9Kd{J
z>BO(gDY}+f?j1=zKU9A+E1or404<Ml)Zcr7()Z{6w|$0V`^U|*6uwS%o%VvN<ZmiN
zr{S87H)=Fp&wHVIlI`8V&CX=&wT}vSSe>zdf4{ucA4I(l`|sBB=N9=9@#b_MIp6Ah
zxo9mY`f{ppr9iKUmDqwc1$J*MfO3-mN#6A&U_pyBh`BaFx_Cm{m6SX<K<J=Jfw8<P
zg0lMvJ7@}3qmr>)wH6Ng8L|&gx^Q#-+1@VY)+*2RGMPEfK<Z-5vrtYA_D<G-VHr)#
zEPL@_{kO(**}Y<B;=NQ+tX%j=AaQ0?jFUun`D?AtQ4hpVCe!HCufKB3@YMNr4z1w!
zD;D2n(9VJF(_HKpwMYMiZqyBSj+Jztx0=hMG%=|Y&JD4AU)sFd5VWzwq%2Ltb{<qp
z($57<k3p&3L~Nk#wN;&sp~fewhHb3qem6!i875o-2vm0UO(D04-m{}0qKFN>o2J%k
z9kM-4A?7>Wd4zhCI)2X(9GH(1oZj^^=dyKXi%JeZ=wgWQ+U&1gTvi;-&v<a&He{bS
z?4Dpc-S_xC=ayF4_Dnt#TV&fgh=zQ)pQdzq^u!JK3X$mV09%&|i5R&6Y&}^a(><Oi
zx=XD>%2EljPa*@wo4%CBT!~1ZG3NEfyb4fk|8KXW@$Y3nR9M=tEy9*3dG@{cIlG%q
zbC*89h;wws8&Y;MEuJ@J(Vi#VS^`$?6(%&2Jq$82gsKztv(V96)~xWM;QmQB$3CGB
zzmfSMiAVeJ3LF#8M||iOJ}h53@tAxl=$C+zPUMJT)Zm{mZBKMuZ|n=ugf)G}sg^HD
zVrZ_!ORI@Ic|g3|x!N?}On>6E)U7VL#E+#7P_7BLUziw!I4zkjb8YrO4Hp<u@8DGU
zg^X=KS=R8W?yw`3;Eu=Ee*1*8!L!x!Da-6KVSa*v&R4>slxp8KD77n9o-!Tje=3LT
z@6ptmT<JPh@eL_r4dU=@iuppKS{JDlb>{I_-S4cpg~$p-qgA}Me)7=k2!7m5Gx2x|
zA7$E%TGX<dofPJ8D6;(4D2?Ce{6iPR<klvm)FrYS6OZvSJ}W_Zq4cfi+BO|$0Bw{1
zZep*Fs6Ua`X~e!yZ?<1D-^Md9LJ_|l7gslC0=<bhVm(z(ep)?gTdkC6fty$gFV?cK
zQqu0eQ8t?Sn+1SaAH7Sgp20gO9<R=1Xdk@M*dwlPPd~DuI5wi@jM`h;(Gk)iVP(G}
zgzBF7nQGWWJEQ7_ctNz)d56PTu{I#Xtua|tYf1^^HRC!H1xF@TWmO-IGjVLYEd;jv
z?~tC%iHKlh<niMS62!p<JeoB3^wMlIg<5!m>;kd&O9qlZEJxo~6TG%xlIBt3mjpM^
znP=kTJ+h4;7{Xb!albdQoGr6|<7P=5z6lPM=1ER9l`0|Ia8HTfFeB{)-43Q#qlKbl
z2aSqk=;EW^>$6j-I~qI6=Y|y)6?D!|hG~W(u6sJ3;mx~RCa<qYh(0>bJV)_>>adEx
z`ff2DEo_2t4+&Y}wQg+sE~2;g@np1e+f4l}_nKPDcPksMrI9FXVS}MX`=-w?irCg}
zw9?((W|})~^zeQW6@9XxX0&V{??k^Bz}CK{*jMP|avdY?W)()YyF^@7H#?tP4N-Wj
zC_m-Xfy}c`@!I!q6ZsB&^;Ox*r(kRx=1tFO8kUvB#)Y<D&lW9=h<wD}E*DR{okQGD
z1rABs{BjFjmXcH7YWBiBg>_6kOG!<m=7e^c6$Q|-oIzQb$d{-7V%yQ_RB5AiB=;^@
zZ)0r4S4ZE_s^qmEop6{WEo)4_TFQ4@Q@W*KQ-R!9eDu5bPf``UiMOstcY=E=ey1gV
zd%hg`S3oSlfyVGXpq%JwWXkqLe)Hgi^_usy$&PVpz7f6qM2Zr`DTdWYN;8XW*+Tqs
zXhl8;Fl8*n_0s%>q1O|q<3?}EfspwvbG=7gq&#+4@dW=sSw}vsC{NC#b-b>y$vAer
zG&N>UD?UE|n|*w7OeSo|RIa9#@compLyxH_z6;iUjCgpJ5w>PhEt4CtLwBsaT-ucu
zv?myC`1CaD>W|HnQ}37~yJni<u0qW1kUJ8{AE^GKv&~KGK&)8IOM(s17;svv6^5R8
zb)jm3O)}j~x?#liqtU`AU>mv!XGzK$jqjuo6dHgrky~<K3~VDJ`;6<xwW_cQY8+?m
zjgAu?>oekn++B)Es)cJ+<`OX31u&haJOx@|;ViR;bw`>%WrEh0wb0^B2~=3t@$T0C
z;=k2(%lR*9>(?*_XqQLgG5Ozcu{=#FIi-~$+0S=6o&M6ZhHHTYM<q?j>pP0Yx_d?r
zyF}e?TeW+u*K|h=AN4p<d);4AZmAy+$}^0d$82F+2i!su!Y3)3gm2hYApG)t$@v85
zfXzDiZmGG+q@_a59Pbm8o(uK)&9p}eMbVp`7vtv;AM-)F!Mz<#ljCGx@F+a#s#&d{
zx+leO@ckpPBvSR-Gov_8#`I-<0yA>4-FsI43yJf-qCG|Nac=X8Q(ynli8>MW?-xlF
za&Bs(2L0I+S09#Y*<e>-O~*+TM+YN!9}b~Rq;9!d=WAg;YY;+<%`YOAhs<_7i?}K*
z)HPhblEhutUtG>y;4$XW)r4%`^$!~XtMSZSkVcaG>Tx=$oY5-7e8nrY$-x}9!I&o>
z>mOR;QrCVH+Vd>q5bDA`?Pj>RT-z@nrJf~Q-e0kq&yGviSaN9mE+gVv*%vM8Z$XBV
zh{$^UQ|3RE7V8zX1CDGM#K$Cn!qjbFh7}85c_ivsm~&6#Txp7v<jV28e`iz_kP+Nh
zVcxk@SM$Ira5Turuv^Dqr&5;{lkMg0e-mJ0I#&s3VgileJjcRSK>LXBn?*}b{1Zcb
zDL@Awj{<G#q2${LBaa=ILK8`5@_(^ez&GzN(gJImkAM9iR#O~}uq$X@N;>l2uSIeb
zFp^Y<eX4w|8DIZ>EeK+2Ks<&sOquKPf7R^I#C2YlcL)2JCRRRE{QUL5uN)ED@O7uM
zL*?ht{r~y^J~XK2wd!w29D~q^<s%R#z59Pu@E-<~RR{y(*(^4OeolY=d6x<E0#AtZ
zHKeTf$lg%(1Tm`Vs#G#f|C71?L#)wx14OzEPW<wU#)xGOPpOk;xDlPN(Whlm!@q~s
ze;7_aqP@!Z{}a`7TWexrbq#FKq|Co3?y`fF^&fv05&h>fMg&00`qKYX)|dTUT<{)v
z9{ztcG<3ycM0NQ3AigpAzq!_f5`dmG+8nRpCX~|nhrlvLo4OAA#z%7NPB$RGHz{v(
z>#12f>|VjzANS|LD8u8+L9KcNhadx@6<vR(U!Z+1A53yy`L+W@Gw(U3S%cFb%pNEJ
z48G?Ty=CQcR5R}qsU+n}*$oc5+=_)y;vN-(h^2_naYyuk-C$J*UQC;v_Ghk)um8}S
ztRFD~o+wXAvsb>Gnt<{KrcVLc@v4P7#SMyis6W)GAKr$n;?Q|u2l76Hh{RH<2Qg}O
z5Y553^Zcp>AQWWxM&GEWw*Lu}u)^-X)%A_vVxB<$!5?zbk6<qkH^mJk2HPc_4rNq9
z)$KTgE?6st?Npn<KOC|H^47NG0K)f2o39K?ehtm@_}~<+KrA;}GzDo@Ar*D5kT#%S
z_<h_T2Fh(4Db#@;_-ZIG?<ufNS3#;*S$%tux?u-Jk2(T?sZ6x(B}?v5Opm2<2M~Dc
z=wWyW+D`>nt};f^7yffQ=wM#e`_|O}ML+<SPjWgnREWReV{CPa>B3hLL0~Vh`a@Vk
z1dH9D+V3ZGiG?&x#eKa_GFfs^{PZ!9RI&!>C8{Jcd{t`@-Vc=L#&tq&jNO`js+v9t
z0v@UakEe>CE`1TNf|OgIAtz*gzouHE%3?SlMwAHJBepJSoyEZ)mv`I;aj&Os5UkGH
z4P?U4%E5=^&4vSJbrN)d=bP&NVc)7Dxh+JpJyl+XwKLq>d{pX3Pi>@E9uit6;<keu
zwGgmtRLeRNrI;>bQt#n{#F3X4i#1j$JA*70YB_zdZ2j9RT1vCbit4@}VULd#{Kl_Y
z=L6RSqaXg$gZ`Z(@56*cBw!(Jq@iY72dEi6RtI$U3Qwb2wa=dEcQI>^SUcZWp=gKW
zI?9l<rWNN+k4a~{>*Fz&;M292JR@&>%`fxA-t0gikS-UtSD2UAsrd^1hjQf^F&gd{
z;Lc$`{mbUZsGv!N*DZm`bAugJd0P15@fho^Lwpxt%W`&r2KYViKZ)t4=RKx*m4?I`
z7}J2B8Odot6{-EKJy2fg=Q0TBll4B?@CT6}C4r6Ohei?<SDgS&S^5KFd2Rb>G(SKV
z2n0`8bLjndsN3B+jXe^Xurwy@UBE_^)t`?;9QlTm{XNd*Qh=k_$>X=2LgL9C+a#nW
z<ee`)?SNW1kE@}W+-b<mNa=AhKMiFpI)G4b`)pE7rF`b!gF(ScjyWe{#Y?V;@K<$^
zqW=IQ)vEz(Fi}-?wE4iY9crA8`WP8^zs)DDZmhJ$*Rx`TPk!OW<mzVp8#mfXhYL4l
zD#+Qz#96{xUHCuGKd9M!7VwY*o(sMzS&`i89e#-4pTb~Jc!uE#%Brca%NHx(1?)9+
zbborw7wG%dj!X01b8*D#+E~L+?~};W?z34sOWSULA-(Fj-%9ETGCD}BH}fx)%6oVw
z%Qixfj9bVR>c$P@9!uw*y01Q+T?aDdiXHj$CHX2aDW^T%Zy~P!EiYWF0SL|5Ylo1a
zRp=lE-yS4qm^yC!%qSzh7T8!061e|(R|bg#wHV`t$grWj{b?vP!tL{LoYNNWzykAU
z(woCc$x0jxYLv^CsFgU&ov$3)=t0+6OONUSuep6wV6Q=0WgUDOTRUs1p;Qln-s)*J
zxH&3ZQJdPc3D#|Qdh*Xe{kmiO1tLa2#H1a29pDb0<m%tJMm|EZbZnNs@qKP9k0>uJ
z#gG@}j!X^Vk;|y|P|jcM0cL2O!7NvAy$WMU#`dddd2uHg7v~=1&rj(A2Fyy5#X8}g
z!qQ6N^@t3aoHu$ostjqY*I#OizKNnq_977d;;#K}_RcxV*(fpbk?d^caj(nn_UzMP
z+g|6<RaD}nyT|JKYRxu<cc}Y;{<N0s?r_Z>bU#<)*xc+{20n^QJq4sABcAM)Dqc6>
z*sZgIkygpOZz%Q%!R4=eBP3|Jy5Q?(ts{R{mSzmM=N-R6W*$*xO<4=0CF9i>_u*bd
zhBYC8MfIF+;@&WI@fl+#!MbZDatu-Qvca`bQ2L?Z4W^xMF?7tIMRh&}3hgzZSO0-@
zwaf!Hkb^|oViMS`5X`azF_ny;1SOboZa+Eb7ysia2y~$`{QhPF<jz!y-+c0;Cw2F;
z;99b8EK}^4;oZST%~HDi5V^=`c-Ylelw!|!5*i)#>QLv$7u+T!SS(DOTNo{roA|&2
z^k>LW68DS|bW)|$f9(m(AnAj2=^v^HTFjJJ+Po4hbev9c?6j<CXA0p9XJ_r6XV2m9
zamB5voQk4Z)drym^PYFS_w_O_U>p}kA4UVDM^~X_qlya<TCQImHrL2_aA<mSrOkHx
zW82v4yS8}Z=W#|D6QSWwbgTGIi3ydUj{q!4w!saOzF0$@sWJpa^7W|6`e_uz6A{~k
zHbPxTFj?@(KNxTXp=V{cSs;7Z%4hnmfDw3~a6R#Y74QI*oNK0HFV7-tXHCVvjeb22
z7a3WBvU`x9W>uAEzih-xlD!n8K0mU&D8qS4^?MdIJ!_tFyYoQaF67h1&(5hEYthL9
zz#=qp_vYQPMq8kT81;lPc@CN}{&*f?MW8nl?tqbng#fe4c`gzNJ`PE~>)jFh9@)>>
ze<)QGbnOBzd;w>C%>gj)wvjX8J#YMywABJ6XdxfmxD)aDlxc?R9KxALW;*HpIIZ(#
zvMThn-sx%ZeMZF4?FaFCpX~zH^>d~5hfsp{cKn6@52^*X9o;rQiaP~T+~So2v!N@C
zDf&u1LCkZEkGf>O@`29p9Ay4DG=Mn*!-)u#1HefJt$^C~M(cZLt-$npWOco%_HSVz
z@9Q}LEpC~_zumx0z$2d@qp8&mjZgC#Eh+=FY(1Y3w+Oy;LL~WPd@cnkn)hAJr;uSC
zr;n)XHXV}J6V5BENn9>bTJ=a49aa9CHf#C@!J!1b<-;&gY3)%oT<r6q;AY?pCiSkH
z&Z>8kj2V1BME;%dCdCA%$o9C2OEw6LB=W6i03BUMfR)0s^2@c0E@YcYXg`qg$Mh{@
z{kw^d%g~Z`W4eWdi)E-)*8kkO&^gEw7}ZEva%=QHLoq-*&|I%U>62KlZB`0z=#r-|
zo`yMYML9K0-#8nfMk!EePzK5_TD(x#J;(KaBBS#`l?ufj(=6Hk4<1|j%*%=n+nE&S
zX}eYnEyv;{R<_Uyzg947AA@(B^aDc`S_kKd5BCUuZ|rayw=1$SMjOu<6x`fD^zFY!
zCEGM8Zrs)%J*KJ$`{<3O#H?Uw>dZ5v^?hHQ`t%hp9@*`J+<~tbpEH-2QMlK_u(irq
zsr+8L0YrBjny-)MlC8o)oKR+~)p4uM_=+T2D5RztU!8vrp4gshi<pr%r%BfL3trQd
z>Y-KA@@WBWck9bVXyWII+930{T4snEQl!2BVzc7bPq_I6Q817qUphRWz{8=J;4b!L
zh?Hkx@{056El>6*ydkZ|(rtEf0hTp~<}&bn=kiYo4vZB-@7usje1}r;a>u(u;(gkg
z<o`Q=<&e1V!EQd*VgO6xyYDftNZwnI&CLtVU-9D#Wh-pOMVyEjBR7&>DH^4E-(O^l
z#Ljp5$zkUm9lI8_wEyM$y}gE%Dlt-l2E%JuTITj6^h&Ng>q#{9FlXaH*F~ZM53_gN
zCZ>4;gJw()&h^eFt?#Pu@SW{7Pkthcd3n0@z`>U0>yI`SLo@67l{9(1%FfSpO7Z0e
zD0=*DoQzkqz99=O<&-(6^P+-U=GHwc$=a*U%^@}2k--nTTPoY_G@DX;$17k<9~#_f
z2nq$LdtaOV;WV7Zy!;0`v8mQ*m7OWsD4v%PwPD@eJ7tW*(MiD&<H-?fM3)vIF0L7%
z(pd}}@#iK-YKXnMlTvj^BjnQM9l)xa86QJ;B%o@%&O2j1qt2og%>FGssWc2*oMR!J
z)Jan>&RN+humICG((ieJB}fjU6gWHajE%8R)oH~StDKmz?VCmqt1?SiCl?psE7YX2
z)ci4_EVvwmrDes-hEaLWpv$g-XQ3)b<rK+4r7K3JsAY<Zqo6o2*&KUMruRK<pitcq
zjAUmyASg{tYKWo!Gh2SXa`joJOQh3sF8vP@HuaU|CEc>639w=24)8^JCQ#3=F=@$(
z9d~3Tn#~v#787~%#0I?BFBd~+7HClQ<G;t`5XI>U5e-e8>=ko9j4<p*kE}WsmA!8q
z^YSOK`?yl~VwY9)i2I5wiL(S6{wOc>LR%3<vs2EiAB^^Baeco8c!(WmHC`v7-f(ux
z-kor{FCY7!%0gsHU@eJlA@PI8o2U4Tx}pA9jMHN=SWh`X^c1;a8ryEA<<)d@#X2}>
za6oJ{$bPWl1%=s)+GZv789xZdzF>Szx}}KnwtTVp@G?%Z;fz+~4WXVuW8Dr%O0m;i
z2feK{fts@HSSzS`7^ku$j=HC%?8e?#QYNuN1FOu<5@ikYU9Mzgbbf-PsPA0R%`v0)
zF(kT-NVii_`j&c__m$y#E3A9iEeUUUl%0Hpvdywg^_`VU%QyUa{4$*Mo5G?sgY(Ij
z>QqNUjz?wv_%^`aMwQguVx{>b(f-Cnd1Q`hcVaD8;dr={PFF8<4l~!f%_|W3y!x^F
zc@h>KgDK}^`9qv)RC2JY{%TuI0o`CvS7_!7ENZt`$aIm+7lJiRNfngQV`g;=dAVx}
zaK+KO8sMQ#$AK-F2T>Qs-$J8+qB1Rw#UFZHa+haJbGi>rkFQe@(3#EJ7*VNK>(8NT
zfzf%wMjwNnP-;w#NNy_6f6?h-pc-v3R(M9F)nT?n6Y-J;^Jk`SnU6wl)8-sCJbJk$
z#Za|H9M{Cos{7ooxK-X##q2TH{j!nQcHthN5qjAWrRQ*PE%6-N4F8r(z%Hb2T7->J
z39CxVE^sma!s#Vigbk|+R9Nr%-tTNxb>$1gx=WF$k!`j%ite@|TCiXTYS2qv7JQu-
zdWLP>O0`P-ujT#{byME3%@oj}9s2C6^s;*zFJSDQ0K>va*OR8e<g)XkBz9r2@@k9)
zSCJvONSl(3?q&>d9qQZTtxCBsDh;jx@PC#DV`;5T=B*U9GMhE=;Ht`Y5uW#<ln&WP
z1;@Ni+r8lbOJw>8YGy4qVw<YF6j@i4wu-Pi07|e;+)kxl+{?+4=1`N0K}?t?d=F3J
z8|T$}Mke}3aTC8s^6Zw3VL7=;{&{0+ixiVVd$c^x%+R7<jPjWUN8(A0iqeok85V`T
zm&i0By^t5HZ<p7HNkg3(e7>wL<D8$g3(qX%IoI|?e6go%Q2t&aP%%8Bti9FR=^NU_
z<tOx}rm*nP-2RItKGhPk+eqlQ1<}}H-~}>przJFLEb4u8L(er1AvxtNprd>AQM~ZC
zs(Xqs>)oxdnG6*lK2(I!1P2<z_336#VuE5UdGFRE;_Aoi?r|m}V6fxS@;t<yuDTPm
z8OsGyI{3S4IP2_d*M;%~TVA}a0*M3)OkM(vGE1sc+G^p@E&qlpMuI+A6=VE4v;yc{
zCBEPIY>nX2r1|j~m<I&)KD{VoETUeYJG|u~DzN`veYp`|o1j<hiqmJoH!CT^O;OKP
z5>F*q_Kzs)_bIlYzra>wF(&AQdUTNXPc}JJ-14nk@rVnF<g-p8j!k0>D@F2*FwHMz
zc^UgrVbv);S)b767Nby)v@iqzxabe~eGPA49qv4T@?|y8m@m6QZRbf|M;6ze{4VzJ
zFA6}*Jhl{-)jfQSH0`!x&G_5Q^f&TQ>!s+07hyX&#dX7{G<(DC{da{x<;_iT1<5-@
zmCPEQ#T>Vqoh0g%p5*v=2c9+=?pfuX+0dkq7&=e|y1<V)SMag4ELNwUJR)6Hc!<fh
z8|TeWE%s(__8rZS&0WbmhA@VOI9a`EhVF1N9dSaZUY)>LBR2v>=P&9K;jMpAfl8@l
z4kssp&9RX}Qfnp&krN+2m6>7tZ^3H9dR)VNX7}6z3tnz5NPTsR!J#W7PCKRlf-TxK
zR2q0fKhx<dqx#8LDb$Hk9Y+GS;eP_dwXN&qkn40}FTEE~8nLP?KpQf*oR*6qi|COk
z@$id0gO2#P$T`YCdabQTyt=o;t4{Cr_vmLykP!uK<w*Du<wi!aY7Ls#7%v+7){Tj)
zUKbDZv##(^8LVrPEXW+Q;ALOT+ikt`oJZeBcKkDi(8K~G;pxVRb0)*K)nFOSw3X0Z
zS7B4I`ax!l)v6*{@X{FqvjLG`kBgwP8FCz_=XiiYkXg^hTU+N2^MI8vSeAwJA7=G+
zFc&9u%qq3mB&i<#8B-y|_XpZ#sA2Y+q*t9cHCT&VTTPTmDUS$Wr~aHERFnu`jEy)i
z`KfO{ydN$(d4L=(6R1w5Eo|F5ev9f<tQUxHRjNBz4p?@?2k~gxt@5}m^LB&z9wpS2
z#dic&>d95Yc-Rlxem*%e&sjn7v=|Ok8`Lmk4o900KdRerW3Uf4ecEYkSGRSi^jXqk
z#b$nQrN@Tm=>IG2s>7n%qpcUmD_m4c1&e0%ij+tXjiNLtIdmf}5<@qPq#%tT1_(oU
zgGfk=beDh(9YYVi-vPZ(-@nh#Z$7@^aOT8s_St*wwb#1dgyZa}{w@pu%R^Y`Y+sQY
z_1}8EG(QZdIx<gkp+4W*C-mm!LKrQyxW27&I$N7cZzEUx{pXq)9Q#JS*62Fr!Mx0l
z7YU~=2ld;Oix$FE_qnWYP=vliDXR>-?`B|gUWnq11R|ZW7fa@;WE<WLg@p=cyL*J<
z_XbJ4&WpZ5&v>zeD)IzXI{(0vD#23YHFtMNUWO1RxO8KJIwxCVKzZ;vUS3sb*xeZE
zQNCuPR87~Ih}KG{AXs<-AR3`}Bmctx12The)^cJ+B`}gsJ2ILD0V9oBP8`(%-$65^
zO_G4<b8MIi3-`&8P^KdRBBP!o&!U-6dKh&}wp8-E+yef&VJ)eeHKel~I)iIOoIcrc
z+hYP)K@?M_lPII)t<G+WD+S`Zmm#$IvZd0=kUtQjj`p+({--KX5~Y81?(P~9{nvfP
zi26J7Us0V;PA=yOnrAEmP}Ys-3+GHfNc{%S*GiC?>htL^$oBAc8ve2UL){<hNqYDv
zf1=uGy07)m#Mt4pt|o6!pyiX-0$LEv?&y9vwii61ii6%QS)f`{=Em#6lcvzg+il+9
zp*lxbqpl$Rho>T%77U$eZMR9t@J1fzj3;*oyvC9LK+hc9YL-d)p#A%y8<K+en`3Q^
ze{UX;5^yqs%=58QI^}O5HM=cP7rD9o%B1f1gXUxcAGxa+5l1gw_1~v~AN)jg;d_o<
zVzH*Pzu1H)e^zwynTLQ?jeJJSJ_?Tq6GGYgHHydIwO<VfF<n;D2|!<^fu<w?r+XQs
zg+0pD`;BHJwy4MLMz^BVGQtmj|1i?n1z0qz)({XRecXB1E|Hx&W;@frm6JX?jXv^^
zEqBFrS0m{pRzH$b3v#D`-N`=R@f?40DdIR8{qMx=l0;UTKANmgjLFP#Zr;ghmowpa
z!k(-sV7{Xd;~6r2clqW(@=NoeoCj4A(E8BTBEOaM3>6|-g3rTbCiC=yA$NIYy4{~U
z&Am;)$`8Tl1-|**V5|fM>5>#@P2=Wc>BbnoDT41(GwteTx4a`H@4TNl@6i|hkAaa8
zjd46!t%dL69KxMXb`>dITQm(g>5F5)mBJB11}W0)1z&m`;kO+Dj)-(@xTN~L({0&q
z*xZd!jj|nNYq{v>+AC132i-K23x8EYXk)?#dENSc4!uIMBJ&O6Nve88nDl4)@M;1Y
zRgRw;sdQg&Dp1nBbpm@er%Z36cCk=vu)lu@@UreIP+~820K9D(0QxIQ+m&<n^^4^X
zEu0}YOh~xY1z6IJjJj^LkAnU%2;^&x3;Ly-V41N?67EzE0`202rc$AV2PH-s2kut|
zmtzKLUd+67c!zs-{pX@HAX>dxp+MFG(d83v#!<#eI)bUeMMzr*t_dmCEdvbKTqkmC
zIzj8>^<iw2`Rx_E8digh>@34Jm*uiFWWM1eXyoP?u?Ko(U{rdui|IqKI`v285M(in
z*4}1qqmgCL3h|+0#fwLSy}_*>;1Vyq5~*6j3YzC0R&S?2L9WQ}YYT}*Q<m`KkNow^
z76e5Ha>DUHmtSmXZGKQY=hE4~e6=mWG?1*!I-?FW9%PO0v*xm1fsE*ufiK;%HW>6T
z!6|5cIS8)>b2@w%lOe0lV__bx?|b^)RIuHu?Xlrv3v!Ajj4Cx#GYL6W&D3R7+zM!5
zz%%^Nq@|6|72UvKN;$v|Fh$+l&}fhq5LJ1q{eygA-D9gDnajFp9oT{9RsaLZ;R7(i
z71Ni)U%4PrUiPq&98=W{PblPP;XDG%IP)>VSdey9>d;Dz>TB(S+tgO7fiudzS5-QH
ziR#P9dXmnJUfP<Vm(UdgaNQ_qfPAg`ai8t!lmlpjSP&>xfltXnB|!yM5qd1(to}x$
z=qLmU5GmkaZA%J6D0T(tca#r<28)JJo(phC<ylz+?+o1l)8s6hK7sI8=yl;8A7NAP
zU7&`bBsoF;&0-qWms}3xzQ$I)GX*UC+|Z}on*_$XBnsIh`az50SXFl_<p_)#e?V3`
z*;4#iL_xDpdp8ps%yfXmBMYqFRoYcvmX!(IO1mf!D7RO}<}&i~m`@~KmMLrm=XD<M
z?box3T7qe?eutV(>6#uqn2>j+D6U_+e0owUoIE8Bh}TjKiSavmkpNwXWiaMsI;Q8X
zDqP3XGgBor^Xf5w-787eBiL=a#fE7anSzGH{ju%pzR**1mb1-50K+Ulo(6+V+Ggix
zZ@_08gcmj-V;o}UE;f>qwIY+x5V%OKea}DP6n&x=YzxQ=4_f@Ni`_TjfYhNbdcmVx
z&uGQ{3jDQLQd&l|Jd%yRpUeNvMNZA8Vj$0M=m=H>x2V(`@=8b>gyJhe!5t}@fP?K*
ziVuh$z$`b9FHyg~u5R+W7t!U*^|IpVFlQkfv;?C)08iMy>AIcFb|X)99_ocW|NQ&e
zUbr^VjAQl2YuPW_z<+f#&LnA20^I18vHH~{m!&~yyyi#YzqYMb-dd$iBw%`J)~k=i
zIzQmj_+~0kkqt37Sh2%nTgA%|2d^0aLsIxDs&^b~BbxxeG3O<9XM@@-d9QIkJE;Z{
zv?7dFc@39Yv||EdN*n+_wh$_OxMKy0?a)6qC3u+*wP&#KyT^#0BD0~ls)|ej?{rM%
zcc!cx)|L%S8=LN60?CS6+rSkB9E;X(qxaNs-Zx_<)wQ&Brh0f`I{^3ZtE@#dRaV#W
zbnxPXXXzX=L5;0&4r7`-{LL<+dgPQQ7*HOC#DI(I{tjC|o|WRtDY#3*Q~ob)<=_W4
zeP<9`t!+Ckq(Q<H>j8^5DHBqdP2SDpJy}!Y6tr;EOO#H-QmFLQ3#gx<QqRo19235|
zdYx?pQo)8X)3Lb6ij0At8gj?yEH)5{Y8l5bJ32xg6wJ+f?}tp^nDmiV?)1;kYLw#G
z-izJPKiIpLZ9V<Z{MRtv=>+TYGGxBfqd7Y9jR-=ku^ABdi;##_xrDTZ)F`2Wk5!j=
zGWQg5=w}9`WA)_$<h@4HN`S3#Kp!4Evuj_iZwX!SHa>zG8#<V|GBHZUo7M`Y2ML_O
z9}4nH9<1{tKY5qnfIFy`ncNV0PW^2!6c|V?QicO4rg9m0<hl`$<~ne$Jw@bo3InWE
zL+ggwxcrh+c$1K}Ze58=7VSC{@@?$b%K}-{ilg$OQG-H!1MAV!^&4yeP~XOIU+ZC*
zYFEC!R;AQ%9Xb{i0ka2r8_Lc=_hc<-GAM{e5;DDLxS+ZRW;aLb$m>ZwHWJ1yrWD=k
zUMkEg7f-=bZj%*n_2%Uy{$R|6W+O^^nVdeLO{s@tfbdegKwI~n=rUik5S`(O&b=O<
zNyKgKeQwgdcQdljN%)`0dn~F->QsKgZ*c{HUPKkq9{IeHd@%?U=E)*%?oT@L(}(U+
z!*WsMIe-a)gRf8;3;$#mq%wT1abIPm2t#}pBMDS{+jrV!i|DDC>PNpzOioVF<=}pa
zk)aPoD<JWtEwF4VBRBWMjbv-vW@w0R_?wN&msMgf_pGqhzHFs&?kN=)F*O~gp<d<A
z2y4VRqM=CY0j_(zycFvrQru~k*B0T1$I9!7-K$p$ddKRO-R3Twr!J5qh0Rmfnr4LJ
zcf4ok`IUt7t{bC{cY2F`pWTq}-G3qfD*Y+ruR}I|=&8m?$|Sr>Cl`0qsd?fPk955o
za5J+ah-r#axV#Nu`2FHoLv1}uwk33<<llMi_4JcZ8;I8$>sSIcFb0Hixf=es1bpV!
zlqe!E{G3>Eg!}Cg@gyoUgVoKeVO8~c&c1wkY-FQcVbNXt@-7ZUr}cbL8lpa`qnfz%
z3wo?i#Dj~!ds}oYQs!jIF>wrvaT8kXV#%AuRBkiA*QpsY0^O3_V9)Jf_J3C*tJR`)
za`b0PlOKfb8*MQ}OQOI3{BHHZ8j1Mcc7=Ir0=043ALMP(FQ)(6Vt?JsSWmrAN5-tF
z7N$0Z1_@+kO|%1pA<n4xANq~GPdNlCT2sXUXH*}Outyb2+hoZ1kf&IX9a+ebj8y^q
z-W4I>=X+sp4`@|jvT9SR709RMqX^Z-25wXJ>C6toof?!?odH}k?0W#Yv|7M(1$UY*
zJCNcU+S@&&gxD436gD32H;AKJ3ZXK{iQCJ$rlJ{_rF>MSELJvV-s_xkaC^m?A$tE_
z{z-DlZce}|=Bw#;MuU<Gsg0b9mIUTz5f=3{qQ|l*C`U>*^%3fI211<Z`}ID^eYV}M
z^)x7Qs13pJClCi~M@r{r%o$l4F<Y6oGPE(6&+|-eLan$8<lhANO|Q9_?Ja@vT{&ct
zkDvsnHQUQ}WY&4Fj?<R+&!J^!`?rP2RvXuYJS2D(7tX32+@?*z1dk$qAf~az4K@Y}
z%#N{<)qXEcB`r28DVn2SZ%i=g9f7I7Qt)8u)^N|W^q;8#F+7UUDS5ArtnYi3(#qh_
z7IRqZLd^E||2a(svGYzIL}~=N5yTP1F*LIi=t~Zwo8%>kI`<Eq{PodV3@Ydrkg9yd
z?*uS`RY#OWuXh2Fi)e#=s1BJ60DTsd>rE2bYfi6mnB~i-*IK3xgF(^ou0hb{hr-U^
zYc0lalT2bwnQGf5=~F{iN<F-cFo%KWYpqr=r+lWh0pWv5k_w1wyM)mj(+?gY{n6wT
z#ERWxXd`;cw!}Ei*Y^OGY=#Lx0*QOleNU0)nj~dCF3u!7;G8PVklmtHLvqgg@PEOP
z6?Mi!ECh~t-De~>h4j^&clVOsFc6@d6!n_m{g=HX2*2yGAY;(e0Z7-JSVNA0`V4o%
zzWC(5Eux40caqHXkzahBVR^Qg>H^8{EuTLLSzFucGbe<|hsUrp6*Bv)(=;;Kpw*^a
zo?9tP9#s=?^GvTL4X+FvS$K~QOoiu#H&MtUD(2bU2S3X1!gxC!q3GTMs}!#CsI<OJ
zlB5oa2oJdohS&+G^TapKg!H9P>sgN_K02ux=yLgCnKpE5i=ps-O8Q8u=nOfun7+an
zf=Mj>&Ei4#qw**F^(MVhP12SE8sof7#ZfT|(JKSIl_L?wEtu+QDQr1uMQ-${vI^3k
zH=&SCz}MqTj)6T+R74u@I#o%1Co``JH+U5^^$5L`$ydkLG!o2iMfV%0&Hqfh@(E>_
z7=yfn`k&ZK(UM1EGSYGY$^gqOe}`|uyr*GHZ_Jv`csz_v3vIGAdD>rEy;r=szq~!z
z*$IH-S|@_BR;xBQ>BlQ3DD8J<nq#J~`Ke#b4BpFV{4YNmqF10SiQD4o-s|p7$aYQL
zdQw$1s)I`aPd@PX_cFI%TYFU!8l!OEGM-ym?hA&1g$p#)ggN(rUZS6@L>fX6!E@%g
z5IVGN8S7Gn{l&A>rPwE9Plf|$(!cx{Uyn;ZZBklyK@s!wjwJP4;z?4sD4LXRbUxQ7
zYvp8$`dO`=?A$K;R9Jq1rQkheU2LA4t>%~^sz`X$7t|Bu^Up(+{*+I(L!V-4eWy8`
z@^DsBn>Dm`>|0e))`9KtCFZ6uX4&8CcOZ7b4w33IR*3vxrvGV2lnhee&ieDC*0H~e
zm7i>{9}xUO+Vb*GB@w!>44{&4Rqg(9$>><>6FR};|L_E`r<=y8{3Fu4`#<ZR<6W6h
zfEoV!JHprGp8dBm_yL{(u${Hr@>?{b#=n=<>`Ap>3lP=3Wq)4pG9ZX?*_&)-{re%A
z;q33fn<hFZ*os!CCb{*;pF~On80IFWsPUgy4Q$=;td70$w3OBF2*-DFaFEUS!{h$A
zI$%YRwN95Y{&}Y5finkWKarPXrl4=_MF4uFor+xi{k(zuQ^)wp?|;3@06@%$S<mqG
z%)f+80>3U?Y%MSn9<eN+PX%LCM2FX6H`Cd$N!?s2i65rnczL>wW2KiOaa~|vgC)##
zcix*%tN0)tvsExVdieH!P<%TOGU-tpj;e?j0vrc}Rvs{*?@*Ps)zG}A>7X_WvdLrp
zjV0i0bnH=-W_g2HD2^`IA9mTkGgFVm?AIkaP2fu}dQgyz&x9mfRrS|_&Oq)ksLqjN
zn&kd7x8ghCGf)~6kB8dx6<4S%?SPK00|Z5s7&b>l&1#>8BvlRG3#Pb&flo-4qcibx
ziu73?K5OUhgmOsiYqWt<XG9D5RE=InT9AFxyva3;rp;aCM$xCnKRSW0GMNeL$04UC
zOTZ)?1$ALxeJ>#VajiBXx&=2U#780311(U+WoeEorj%tb#%JqLKi*o6jkZ}X`B#1o
z%s^Kji#uZW!B}z*dIU<^KWA8xyD#;-XAL_qWL2=a%}ZOl4>|uktt>R@OA+6{3rx7I
z#C8K2LVp0?ofvyiTWD`XN{++8SW19;rz~RNu&0)K${kVw5{uJy(4LEUZRe-Ds8$Md
z*5_lL^>c~mEP(F6nj=g~q53-$+x*z7KhJYWMs*{%FA!;2rd$G~N$ig+Ug$;El&E_k
z+<S09Vx2DF`nSbNoEw;BYjh4CY%yqi*YepJWY+dPBR1mO-jtPZ(36mp)i7}P5!kr-
z22@@BK+QAzTH~$|phC&oJl%(!u@GND*WJKn30Pfa(NNDqf|-669Tp2CLO{>swGG)@
z;eTQ95a3`&;vEzD^V_H!4RewcJmt`%D9M%c&c+W?3`Wr>yYHo2fqQ8FcJoq>(|wBf
zCP^q`jH-SdRd0YqB8o42y`>=Pdq2kL&XGLdUu_F~*|H%i<<F+84{<pwgrA_o1JyXw
zUy2>PNs68Z%cTN62I&i9c8sPW*$!D+if&&HYYvh-U74EWkcHT?#;7EXTVY5@7gxV#
z_pu!kJ|Br!{?LW$M-=6;rFSQrw_ZO`<+;^@(Mm3GZp?ANu3FX7&kdatgmj)~H%k-R
zIA(}&-4yXWMwKA9ak-BKliTU?ZW(A{?Z^7kJ7;p1fF0B*exwtxN!&c4bt(T7@{#X9
zI<#Nv`CF$^S?p&m{hXZU!){&rhxYGsk0p9%lvN1kd>GqW291H4!8w98z-=&fyAt%!
z4anmr0R8-nYmL-H-6eZaalOzzFq9vqI<Vsu*jcP2MlqvLH>>L6Fi`X3ZBRKSz(!=l
z7o;moid&fHo300&P>Vfav>#x2RUZ^0fry^fm{QZSY%g1HZ@|z<hX(OJy|Z|&NmfCL
zP=+5w@TBLYaULgi&>|tJEi6fyyuOGWCA{;AWQfC7^2;OGAmlaX3(D5KvQV^u5mdNS
zWQb9Y;j$g=5haz`+IuLV%raV8#B>+E04Si96@c2Az|IH@fzG8QU;z?(<8}egL&>6n
zpB;Sin}!FVu3&e40sBjyn%(v+7TZTps;6(P{BU2R^vDwcU-1f1`W2w%@KV0h5Q7z<
zhL+-9>QlJ9CK_`)1*=}dU08Y^k-Qt5c4aBpES87tcIIavJKuGPiMo8S(YbOggl%c<
zf~>frpjxL^_pN#hqCs72I{%jn#3Umo$?G(4CzkUy(05Jb@Bnnc!P!-aKQ=lHJf|*S
zopyy-c$OE`bSL~jA#8RaF3-2~k2v8+ezm@kx{b5A+`s|n=t+3)Wt=D%-9$HB$`E-)
zrs``)WTe$Pw{!rFO}Q-~$Di7x{D=hVluEq~NM4dfNYK8Nw4jDWcO|esI}ExF!W40p
zWl&WPDH><v?!%ZV0%U3nCIJ)Lih2c_!wSLec6wB!973AJS>gh0Evuv$OX@y(grc59
z!Yans<nx`3CMo3+hY~?uW5&al{I;El&r`*I`UimQ<5&=~bB{WVB_)TA+Iq}*!zR-6
zjDJg|)SVbN3nK>W+~UQ1k|ad=lGS!89p>5_@r{!ZL3V?;BITv^9Xuc$Q;V;K7C878
zvtM<?5?gPP^_CVi#Xh2AM?(+vRWo+<MrYzl|3M|vll@d(v?<ghe};cjS5S;4)5f!(
zwj|U}xl)-ak>9W9qs+B6?r}7mhX*Xwu{xf>4#?QH;pztOMle>srZHDOGw8}}92^Eo
zH7^5>rzJ&hortfnD^x?;3$MQnE96g0d?vMU^Z|riDQzRWuAD=(fgR&j^s~vE>u7uv
zwOeLX!e=r`>Mq|@6j>8u%<3QCcMn0MRD%tH_<pR=yw=mrv)1k)rV{u<nUkG80KmwC
zvLof9yB&Pv^Hvr3Vz@6P`oWzr;;M%7iBUURq+3UQL49oxAiXRku3Is0E4~V8p0Grk
zga(jQj^|LhUaRfMPp|}6<q^zTR59}2Qrk~0XIUard5NWsVs~u{2Sl2$CXoShOiNoz
zEDNTp^SpUl5f^m?Jx$=z4Oh+IvCx^CaUrRnyj>yI*%8}tC-<r>o<Vcd%)koyr!0v?
zrOU_y6Rh)46j_aoSN-IkOxZH!r%4U1?l`N3rA5c6oMRszti87I=>heW%Su^Eh_q7z
zPY(Yirn(s4W1=|HCi)Qeciodf%V}Z;GBLfj2A{7NsLfDya!K0dZE$^!8$3i7g<Ss6
zxJgG4V=&v%SGgOI^%un~0ta-1r4u68<OP=s9Wq(2fu=4wlqT8Uk)N7Bx&6BBgrrWL
zgQn^`VmOIK)I^)o)2V07nVthmI+YxMWonxXliE>_F~CvoL^5JArUj{an;EKA8AP^q
zkNN0SQ;4>3%IKz7UtWDT@2(U3Tjvcn#_9Sc_eEMmbdT+$D_*j1sv)L$k`0c~N!x%v
zUe%#r%fXV`M7o)5+KM1pzK}f4O`s{{GdJ5-Y#Nn*k_)w?-kr)CE}c4+#CtD0IXf@x
z*B9=V+bXI$8_(x|ShsNi{H>CMPrQqtzqMS~f9t11g%s}4LUkj34k!sI9_sF-PqfGV
zN>(|UM81-#U+R|1B=aLzeE3oMfO)O4m6<zQveeg1%cW;qDJ(oHhfTVIh-}p+xfE$1
zEZx(m)_CoqOhR-EGbTy3M!WarxV&;na{st$$1*0T-1!zGi{G5TXS)QP1OMe+*gdbx
zarb?$zgn%PB0VXMyS6L0_jBB)SEtB7sgO+G*s4tmSoL*zwWCavrn4KRGk=++vaS9Z
zk=x?tq`%+9(oLg=GBxtn2o&iy_1~{HS3YQi5Pug+(t%fs;jK8AlPJFl)8rvE^p4$`
zDZ)iqOFOyEaweP6ck~}YQqYnT8A$pvVJWnsk?*yftR1BHNW}9!(%IT>vonF@D7;YP
zQcnBA@Hdla?#Wi43MX16w0d*Pbt@R5otSDSM`u3EgT)#k|6H-;I8aUW)z+bf;TifV
z3FCU|#slKG+BdT)7m8I@bFu!pmr^JPR<BZYtV>@E3suIq-Sa5a4i(q^MtCm|u`F)>
zO~kPJBqJ|i5E&u&t|Ng|j^W`bZ+zViw!3V%KD9DPe~Fs2D_0Ce&_5>hK4kH6fQU23
zzO-G7lhx#{*?R6Oz`-tlDo*okdw->qvmXZ`dSVGa#zC8i3N=?gm!wN=v=lh7zg&|u
zY@2o??P9A%?IU58&G350ppxw5y2b~AuoSC?^SGmhnnO&5`)Y0SwO8wnE~WAwjY+I|
zvRd?&l`TV5t>&6E%HtvOI<Be-U9N7@>ycu*)numQS(`^+=Z0bWClZ0R{&W*VqA>MK
zVr{G`w+y{aqTVn>pl_0qOKAC#l4@Y2TKq@}btd%Si6~2=?=RY!ls**M;xmK>1YTRh
zY6hMXe7kFosGf>N?@e|2uGKQgRFe0G7I7rQ5obppJf6Pyh0%fKtVuP*#726k3piXs
zs-5B1&tIaz`sQ=R3%<YEN$y<Sc>5(kzxEC0{^X5!H@sG;h&ND%q|*r2=e|Gelai?u
zlcg*!MljT{<<1BMASSxkvZ?_?s7ykaD)5!?MA>r<eQ9V3wUH3iXEHTHEx5}<A{K5y
zN6bP$C?GBd*TS4_VNQaP^d$Snq##*h%o4V9(Ocvqk}@`SQ}<0iAX^tVoE^SNOT^R9
z-h{(;n;W@y`m9T>6Y@`mPT**-bs^o9s}5CMrj!PVhMnRDB{QQ-d$f1_su40bjpKH{
zhs+YKfD9={7M8vmR8l#^BActBE>0Mf=c~rMMc$E;y%sVvDcssZ*4KjCL2aXr>^3u=
z7~sNi4csK#WHXRdR)X#kBu#APId+%O$IM)X#J#w(vT;_Im3nN%m~?zm?Mg}~Gb>F@
zJf?<B`V?dfkR>;sn$I*$8ruqShTmDgEwgxTane_h6@U>k)vab0bYL$CEaqOOuHATq
zAd~UE#)ipKzQGFEdT==uXAzUgKDB}+q2dBL#Z!r`000rq#*KY1J59#BV}kJ37&w)~
zq?kc6rJjs8zpAKi<Qsq2-pR<1ceUlPj_p8<BF_C$*jFR#ny|N79t0|Fxug`-2Il`J
zB-A@NkmdMdT(57=_Y;radZlLQb2!kr?>gYAHA)rR2|R9jD~Z0AI1E9qxRzB$w#}8z
z0VI8|FHdJCj$)n4h;DghXEuIQ6((yF(`u9SxS42Ecen5KaM7pu@M!GpgrobMV|-Sf
z{IS5t()6Q?NGW*%bG`~RJEfhSf%og8kAo`u<<`<$;<~Klrb#olG=z3t0|O`Vl6{-7
z)SuK0mO|5;3(pTHM$PCIYWUJz&YR7<I~AhFh;@2|(m`{(;r92jy0W@D3mADPAy9`|
zzMcRhTkriYkjCTav77f3$;~6GokI4Fu+rGvC==zQ#$?v?G!OcOS}qd;1s$Ub{`CRb
zhe!hJpifsjnJ)BlZs(%|UwxmC+)?e%tF~B}iQOq#_s2!ycV27_e0)r8mIoSkp1s?3
z503DL*XPi$p(zoh3!c}yqy4yLHrUs}+Y-EF?De{l?n^rnr2%0HscLA!9+y0-rG<FB
zgkhhKJ%$Kjl6$Y6^U$;E)3Y?57<uKB1#wAd*g%w*?B9qi1GXvOl2;RxlXq+fZfAc!
zB4p4hqfp6auB@x4>UtQsP7p)OQi0}8dN2voj_Q=LqpNkYZn(|N(BbQBnx<o0T=}&n
zSbCG_3@tT=4S%aUI;Oln-W8v#OjA#1j4z(HF_Ywd(G7pVtX-x<NsN!~N4_R+RnA%D
zqM44z?5xaxoBH(GZI4IzZQ`k!ss?f4*nxhXUM_i_Gx{lc*MYIQfa{OHM%=_}t@az_
zkUTtf4-z>Sd-N!f-!Vb&-nX@r|Bc1OTqH0D9w<nj@xyG_cayWdCZ5+sJRDm-Y#r&=
z9L2FGtT9BJh%?(mX`k+CijO2N#-*e^d07TI=b563&vSgg|0b_VXkW9kWh?`e7#ovw
zXo@XS?ORb5u-rr%trKo_*%n??Rl)cBDOYqAXKlPZDx8*G4ii@T5R#Tu-P-7WgS*!?
zIGy!cn)Iydqy4L&tKEY?(Cp&NXYkZbWqX)4+~eXXEw}9Ty=i3^RBv`?-kw(PK(Aym
z9s6UTQr{n-roAQDE0ZPliyRW`FM<}Qyz8CLHt-;!<9%YSMjs{H%-xiaqaROY*-AFq
zAe7_WGmg3r8*z_OLuC(hZp+?0CutcU+EAL;V(hv%joZeIW^{=6raSCm_NLV+OP;C@
zckwB^<B&}TT<Dlnr~YYvBq91_(7)D|9*|g)J5(%=3rCcM=Nk>AndKH&N2>kkQ7K2i
z@z_wYhvjw&_gs9nn64Ye!-=nZ@T9fhp{&{S;KALY^}UkMgyY^%R0sOKt{|ZNph)9i
z{Yp!I!dC2Jx~o)KOaak?%7RMKpZ@@jVoeEr?2X~hhjFgI;Zp#?1KiI7gi*-FKY=G-
zay7c>{wZ={ik7?Gf0&}{!T_HPF;h}2XPJ8JUH$XJb5mjd7(K)JQm*@PTfgII#32BX
zL)WUArg3fjQUE;0Gp<3g)cvf`PuEO$@-HSk2MFste&`HI)x<*tF1GsgM)&&^T{#gK
z*3}~WXj4u&XMdj;4-vD@5(p9RC;Q+AOUsM5>({XkFCBjWU^;dl!cD)sK@Y-A%xC_|
zyWX^JG5Fz_2y9_PFwIJ^4v}^&fSb-GnvH8C160Qd?1HCfC*PPs&X7*R=gggpTA!Ul
zi_D(volwox+z23<z-?fZTu9sm9F_)sH+U7R_88tDPyV-^ClDIu2JYR<kheHAj0lfz
zQZI(5Pz60VeZw_xn5fu%^3YJ*hpFIDT1G*aS+LOa#R_Nuu0V>m%aC(T@&<wx3pLt+
z(lJ~i9tW{)fJ-_CxFr=YP`j>vf^4Ukc!^)-w0D-nqvtqt2ab`pNU1lhgiH~(A1eV_
zCKH;-D}U`UlnxOU93hdx^&~L8{iq=d1;EHVv;>I+!$3^%SQ}4b19W&eRA_U~ca79P
z`*-t9J^SP1dxd6HsEc#-6PcBr)fxjMgyo=Z;zZSocxiKY9^Aw;qP26^^D1$D$dc6{
zNUheb+A_ZxZt%II@5$T+!B%r|6k8x?_#<d>)n31;;O)fEsU>3tJen@oESgK{sFueT
z5(k(DzdT!^id8LboWQi{JsbJ9jz|z4lNx=3pV`eQ8CsXzf2@Wo{$^SgExf~TziM5W
zTyA`RBL<f{b<}4xKKsdiK_{w3N3m)Nx2ThD_`<>Y3PP!85wj;=+(=buE~9#pb=ds#
zwk1_torFrmJF5AV!2*lTrzMM~?~{$*u@vYH7^95a)Bn;;QcbWmP{!-el`6HHpk7bz
zYILNk78Es_?vxZCT+ewfry=Ykw~sXF<%MT;=NDk31nn&Z?rU%yz7bQ#947S|?>eo=
zcmb1`^+VOo-gBCL<rZqjKl00-)HJ5A=i7$&moML7OExUh=rX?F(SmQu;XAi)7RNkP
zZ0mx`YAzVpVa9c*D%+V)NbVtplKU)s?Q#)OEEg_OuFN!awlE7R3+1znO+|v%=`!T3
zWHw33^lHDi_lE5B`h$gFY5<bIdKh{fi>b+OO)657ruJ7`Hn4#@8_yCgpA^&Mt2Nx}
zfswAwU`VhkH-k{aqM$86{Hd7oH?$X!tpIm454M-AHRe*+^8NhlQ$8xnCKhKgaeU`K
zt5LqrNtHGGscGO3b4`s2hsQ2elm=6L!R-oXTbyrKTW#lPD2c|93#czr9(?EgM5@*V
zmigd&nNsztZR|$2jE3@X250vY`#FPEBK~gfp9H^LFQUye>ROC@s5XqjuyY7SJ$~z&
zlg7qVCz%f#M)i64a;HvAbNv8mtPc#k(c<#-UhlsA>%DW=vN)YJEgx*8321Zdt@GfY
zpa0p(V0R=6);@Q=|4cydyP3x`?W0#ZZnUOO^E=)NVWMLfCfcdIif_Zt$uhmdv=2Fl
zWs|mUL>gosM>#Z;0wwH}ioK#j4(n}fUqkA+w)?k5!izPli8o4mE_n6QDXbJcMJA(g
zLYW8r0IbxBTzbJC%r(zsd4hd#6aGc%Uw&(#&+lz=XKqVQIr9~PK)Bl0okOWIzF7ZL
zsgJ8tK|KPl^cC`totZ;VRaPpxSX1{BF$Z0HoPwchN&lwz90v(Lsan4`tc=C>dOzl3
z=9N{Nin6xs6PMZuC;CjZn<n`<-P11-bd$wmIWgneIwqS{{cH;*aqWQj7v><8Ag6TF
zT+sbYZX^1!({{LAq^GzgH9sFKtDJO@PNb{KR#f-wsmi}ZUPX^|H><e!_;@s`%MC~x
zKpYMK8At7WJc-4%?mR_O1`XvGw#@qX5`X^3bw8N0G4pN^X>0=Q!MORfQ1^p{%w`z?
z0$Dng!~gzp%=PfC#Zs)QkJZ?0ZsRf#$=jGt$3mmEJE`^v4Yno_q|IY$f0!U^ww;By
zHu?-bK(p?BWZ};tJOP;It<>`H&5i!8Gr*WS5Ta5MzZ5yzFdsSS>ow7+U*{b<iK8gF
zH>_7N<)xV!7D@6RRdHc@$p$yJH~JDduH1sbUy1Ca-grgoYJEsj>tNf-V*WCJd`-A7
zdXcx|*BHL<-RpCunRd=XS<gdePy7VaLj9@c1@IXlm|V&ycM|hsPZ2Eaixq^w49yQV
z)&624V3+WOV2SdeFJ;bIsm%Bf)qP@5@TjY7dFR+ftZNnbpOndQn<kSCP^xg@RK;9V
zv5hB>DGDjt6iN!`Db6J{<oHe05F2Zkg#Ov9I8CtY?{GszHinM<EF|-OJ(uZE`S;pH
z`mYqN3s!FBd|cC1zdworgO(BO53Qa=m-h$zH<k)`C*SONs^8%V|6R_4otQuzkbj5X
z|4#k|xd99uGKDt>*&P2Lgx**tFQ;e|qC34OOa3HffkRRp-xC+w{>W6K0XWD<vfCb^
znelrE?2Z#8O1<-G;f(O04Et}X4K2)A95^3tykji*E2jMSr#W#lXfLoGG#mT>{w^K+
zHPA{cNQwGmTMEcE;H{h^{CFhx=k{Pr@w`MDc-;Boo|Bb!(vggXLB~QA*?#@^(-G6<
zh7Nt<PUqi9?8z-T$&h3SAi&(W**Nt7bsW9y#y%{^iSvJrPRK!2zRr-d3CfQC`yYFp
z1U{uI_!RxeIYvTsa0-78qBH@!-`Up3+q-wz8F%0LWA|dZlTgFdPq?@3|6FiMaIqXJ
jm45XNk26ef!UK;@5$?@pz7d&I;NPSBauV5My59c-+z>J0
literal 0
HcmV?d00001
diff --git a/docs/en_US/psql_tool.rst b/docs/en_US/psql_tool.rst
new file mode 100644
index 00000000..8791648a
--- /dev/null
+++ b/docs/en_US/psql_tool.rst
@@ -0,0 +1,23 @@
+.. _psql_tool:
+
+******************
+`PSQL Tool`:index:
+******************
+
+PSQL tool allows user to connect to PostgreSQL server using psql terminal.
+
+* Open PSQL Tool from Tools menu or context menu PSQL Tool from tree view.
+
+.. image:: images/psql_tool_menu.png
+ :alt: PSQL tool menu
+ :align: center
+
+* execute all type of commands.
+
+.. image:: images/psql_tool.png
+ :alt: PSQL tool window
+ :align: center
+
+You can open multiple instance of the PSQL tool in individual tabs simultaneously.
+To close the PSQL tool, click the *X* in the upper-right hand corner of the tab bar.
+
diff --git a/requirements.txt b/requirements.txt
index edd7000b..8227a4c0 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -8,7 +8,6 @@
#
###############################################################################
-cheroot==8.*
Flask==1.*
Flask-Gravatar==0.*
Flask-Login==0.*
@@ -36,3 +35,5 @@ sshtunnel==0.*
ldap3==2.*
Flask-BabelEx==0.*
gssapi==1.6.*
+flask-socketio>=5.0.1
+eventlet==0.30.2
diff --git a/web/config.py b/web/config.py
index 2643ef19..002a9951 100644
--- a/web/config.py
+++ b/web/config.py
@@ -156,8 +156,8 @@ X_FRAME_OPTIONS = "SAMEORIGIN"
# such as JavaScript, CSS, or pretty much anything that the browser loads.
# see https://content-security-policy.com/#source_list for more info
# e.g. "default-src https: data: 'unsafe-inline' 'unsafe-eval';"
-CONTENT_SECURITY_POLICY = "default-src http: data: blob: 'unsafe-inline' " \
- "'unsafe-eval';"
+CONTENT_SECURITY_POLICY = "default-src ws: http: data: blob: 'unsafe-inline'" \
+ " 'unsafe-eval';"
# STRICT_TRANSPORT_SECURITY_ENABLED when set to True will set the
# Strict-Transport-Security header
@@ -636,6 +636,19 @@ KRB_AUTO_CREATE_USER = True
KERBEROS_CCACHE_DIR = os.path.join(DATA_DIR, 'krbccache')
+# PSQL tool settings
+# This will enable PSQL tool in pgAdmin. So user can execute the commands using
+# PSQL terminal in pgAdmin.
+ENABLE_PSQL = True
+
+# ALLOW_PSQL_SHELL_COMMAND = True will disable the execution of os level
+# commands using meta command \! from PSQL terminal.
+# As PSQL allow user to execute the os level commands from the PSQL terminal
+# user can execute any system level command as per the system login user
+# privileges. Default this setting is set to False but if it set to True
+# User will able to execute the system level commands through PSQL terminal in
+# pgAdmin.
+ALLOW_PSQL_SHELL_COMMANDS = False
##########################################################################
# Local config settings
diff --git a/web/package.json b/web/package.json
index 8ed32df9..19110fda 100644
--- a/web/package.json
+++ b/web/package.json
@@ -117,13 +117,18 @@
"shim-loader": "^1.0.1",
"slickgrid": "git+https://github.com/6pac/SlickGrid.git#2.3.16",
"snapsvg-cjs": "^0.0.6",
+ "socket.io-client": "^4.0.0",
"split.js": "^1.5.10",
"tablesorter": "^2.31.2",
"tempusdominus-bootstrap-4": "^5.1.2",
"tempusdominus-core": "^5.0.3",
"underscore": "^1.13.1",
"webcabin-docker": "git+https://github.com/EnterpriseDB/wcDocker/#c4a3398b89588408dc705895675bce7bd7660d36",
- "wkx": "^0.5.0"
+ "wkx": "^0.5.0",
+ "xterm": "^4.11.0",
+ "xterm-addon-fit": "^0.5.0",
+ "xterm-addon-search": "^0.8.0",
+ "xterm-addon-web-links": "^0.4.0"
},
"scripts": {
"linter": "yarn eslint --no-eslintrc -c .eslintrc.js --ext .js --ext .jsx .",
diff --git a/web/pgAdmin4.py b/web/pgAdmin4.py
index d2bd1af6..dc1924cb 100644
--- a/web/pgAdmin4.py
+++ b/web/pgAdmin4.py
@@ -13,7 +13,7 @@ to start a web server."""
import sys
-from cheroot.wsgi import Server as CherootServer
+
if sys.version_info < (3, 4):
raise RuntimeError('This application must be run under Python 3.4 '
@@ -37,7 +37,7 @@ else:
builtins.SERVER_MODE = None
import config
-from pgadmin import create_app
+from pgadmin import create_app, socketio
from pgadmin.utils import u_encode, fs_encoding, file_quote
from pgadmin.utils.constants import INTERNAL
# Get the config database schema version. We store this in pgadmin.model
@@ -97,6 +97,8 @@ if not os.path.isfile(config.SQLITE_PATH):
##########################################################################
app = create_app()
app.debug = False
+app.config['sessions'] = dict()
+
if config.SERVER_MODE:
app.wsgi_app = ReverseProxied(app.wsgi_app)
@@ -206,17 +208,16 @@ def main():
else:
# Can use cheroot instead of flask dev server when not in debug
# 10 is default thread count in CherootServer
- num_threads = 10 if config.THREADED_MODE else 1
- prod_server = CherootServer(
- (config.DEFAULT_SERVER, config.EFFECTIVE_SERVER_PORT),
- wsgi_app=app,
- numthreads=num_threads,
- server_name=config.APP_NAME)
+ # num_threads = 10 if config.THREADED_MODE else 1
try:
- print("Using production server...")
- prod_server.start()
+ socketio.run(
+ app,
+ host=config.DEFAULT_SERVER,
+ port=config.EFFECTIVE_SERVER_PORT,
+ )
except KeyboardInterrupt:
- prod_server.stop()
+ print("CLOSE SERVER")
+ socketio.stop()
except IOError:
app.logger.error("Error starting the app server: %s", sys.exc_info())
diff --git a/web/pgadmin/__init__.py b/web/pgadmin/__init__.py
index a7333537..fad91082 100644
--- a/web/pgadmin/__init__.py
+++ b/web/pgadmin/__init__.py
@@ -19,6 +19,7 @@ from collections import defaultdict
from importlib import import_module
from flask import Flask, abort, request, current_app, session, url_for
+from flask_socketio import SocketIO
from werkzeug.exceptions import HTTPException
from flask_babelex import Babel, gettext
from flask_babelex import gettext as _
@@ -52,10 +53,15 @@ import mimetypes
mimetypes.add_type('application/javascript', '.js')
mimetypes.add_type('text/css', '.css')
+
winreg = None
if os.name == 'nt':
import winreg
+socketio = SocketIO(manage_session=False, async_mode='eventlet',
+ logger=False, engineio_logger=False, debug=False,
+ ping_interval=25, ping_timeout=120)
+
class PgAdmin(Flask):
def __init__(self, *args, **kwargs):
@@ -811,4 +817,5 @@ def create_app(app_name=None):
##########################################################################
# All done!
##########################################################################
+ socketio.init_app(app)
return app
diff --git a/web/pgadmin/browser/register_browser_preferences.py b/web/pgadmin/browser/register_browser_preferences.py
index 235db027..d835ca82 100644
--- a/web/pgadmin/browser/register_browser_preferences.py
+++ b/web/pgadmin/browser/register_browser_preferences.py
@@ -10,6 +10,7 @@ from flask_babelex import gettext
from pgadmin.utils.constants import PREF_LABEL_DISPLAY,\
PREF_LABEL_KEYBOARD_SHORTCUTS, PREF_LABEL_TABS_SETTINGS, \
PREF_LABEL_OPTIONS
+from flask_security import current_user
import config
LOCK_LAYOUT_LEVEL = {
@@ -511,10 +512,12 @@ def register_browser_preferences(self):
options=[{'label': gettext('Query Tool'), 'value': 'qt'},
{'label': gettext('Debugger'), 'value': 'debugger'},
{'label': gettext('Schema Diff'), 'value': 'schema_diff'},
- {'label': gettext('ERD Tool'), 'value': 'erd_tool'}],
- help_str=gettext('Select Query Tool, Debugger, or Schema Diff from '
- 'the drop-down to set open in new browser tab for '
- 'that particular module.'),
+ {'label': gettext('ERD Tool'), 'value': 'erd_tool'},
+ {'label': gettext('PSQL Tool'), 'value': 'psql_tool'}],
+ help_str=gettext('Select Query Tool, Debugger, Schema Diff, ERD Tool '
+ 'or PSQL Tool from the drop-down to set '
+ 'open in new browser tab for that particular module.'
+ ),
select2={
'multiple': True, 'allowClear': False,
'tags': True, 'first_empty': False,
@@ -523,3 +526,16 @@ def register_browser_preferences(self):
'placeholder': gettext('Select open new tab...')
}
)
+
+ self.psql_tab_title = self.preference.register(
+ 'tab_settings', 'psql_tab_title_placeholder',
+ gettext("PSQL tool tab title"),
+ 'text', '%DATABASE%/%USERNAME%@%SERVER%',
+ category_label=PREF_LABEL_DISPLAY,
+ help_str=gettext(
+ 'Supported placeholders are %DATABASE%, %USERNAME%, and %SERVER%. '
+ 'Users can provide any string with or without placeholders of'
+ ' their choice. The blank title will be revert back to the'
+ ' default title with placeholders.'
+ )
+ )
diff --git a/web/pgadmin/browser/server_groups/servers/__init__.py b/web/pgadmin/browser/server_groups/servers/__init__.py
index f4165c32..fb7ff12c 100644
--- a/web/pgadmin/browser/server_groups/servers/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/__init__.py
@@ -34,6 +34,7 @@ from pgadmin.utils.constants import UNAUTH_REQ, MIMETYPE_APP_JS, \
SERVER_CONNECTION_CLOSED
from sqlalchemy import or_
from pgadmin.utils.preferences import Preferences
+from .... import socketio as sio
def has_any(data, keys):
@@ -1499,6 +1500,13 @@ class ServerNode(PGChildNodeView):
# Release Connection
manager = get_driver(PG_DEFAULT_DRIVER).connection_manager(sid)
+ # Check if any psql terminal is running for the current disconnecting
+ # server. If any terminate the psql tool connection.
+ if 'sid_soid_mapping' in current_app.config and str(sid) in \
+ current_app.config['sid_soid_mapping']:
+ if str(sid) in current_app.config['sid_soid_mapping']:
+ for i in current_app.config['sid_soid_mapping'][str(sid)]:
+ sio.emit('disconnect-psql', namespace='/pty', to=i)
status = manager.release()
diff --git a/web/pgadmin/browser/server_groups/servers/databases/static/js/database.js b/web/pgadmin/browser/server_groups/servers/databases/static/js/database.js
index 01ab89c5..eb20cac5 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/static/js/database.js
+++ b/web/pgadmin/browser/server_groups/servers/databases/static/js/database.js
@@ -122,6 +122,9 @@ define('pgadmin.node.database', [
is_connected: function(node) {
return (node && node.connected == true && node.canDisconn == true);
},
+ is_psql_enabled: function(node) {
+ return (node && node.connected == true) && pgAdmin['enable_psql'];
+ },
is_conn_allow: function(node) {
return (node && node.allowConn == true);
},
diff --git a/web/pgadmin/browser/server_groups/servers/static/js/server.js b/web/pgadmin/browser/server_groups/servers/static/js/server.js
index 45dea090..ffd715f8 100644
--- a/web/pgadmin/browser/server_groups/servers/static/js/server.js
+++ b/web/pgadmin/browser/server_groups/servers/static/js/server.js
@@ -101,7 +101,8 @@ define('pgadmin.node.server', [
icon: 'fa fa-unlink', enable : 'is_connected',data: {
data_disabled: gettext('Database is already disconnected.'),
},
- },{
+ },
+ {
name: 'reload_configuration', node: 'server', module: this,
applies: ['tools', 'context'], callback: 'reload_configuration',
category: 'reload', priority: 6, label: gettext('Reload Configuration'),
@@ -728,6 +729,14 @@ define('pgadmin.node.server', [
return false;
},
+ /* Open psql tool for server*/
+ server_psql_tool: function(args) {
+ var input = args || {},
+ t = pgBrowser.tree,
+ i = input.item || t.selected(),
+ d = i && i.length == 1 ? t.itemData(i) : undefined;
+ pgBrowser.psql.psql_tool(d, i, true);
+ }
},
model: pgAdmin.Browser.Node.Model.extend({
defaults: {
diff --git a/web/pgadmin/browser/static/js/collection.js b/web/pgadmin/browser/static/js/collection.js
index 3823ef35..e763aa11 100644
--- a/web/pgadmin/browser/static/js/collection.js
+++ b/web/pgadmin/browser/static/js/collection.js
@@ -64,6 +64,14 @@ define([
priority: 997, label: gettext('Search Objects...'),
icon: 'fa fa-search',
}]);
+
+ // show psql tool same as query tool.
+ pgAdmin.Browser.add_menus([{
+ name: 'show_psql_tool', node: this.type, module: this,
+ applies: ['context'], callback: 'show_psql_tool',
+ priority: 998, label: gettext('PSQL Tool (Beta)'),
+ icon: 'fas fa-terminal',
+ }]);
}
}
},
@@ -498,6 +506,13 @@ define([
pgAdmin.SearchObjects.show_search_objects('', pgAdmin.Browser.tree.selected());
}
},
+ show_psql_tool: function(args) {
+ var input = args || {},
+ t = pgBrowser.tree,
+ i = input.item || t.selected(),
+ d = i && i.length == 1 ? t.itemData(i) : undefined;
+ pgBrowser.psql.psql_tool(d, i, true);
+ },
});
return pgBrowser.Collection;
diff --git a/web/pgadmin/browser/static/js/node.js b/web/pgadmin/browser/static/js/node.js
index 1c5af3f5..23585dbe 100644
--- a/web/pgadmin/browser/static/js/node.js
+++ b/web/pgadmin/browser/static/js/node.js
@@ -209,6 +209,14 @@ define('pgadmin.browser.node', [
priority: 997, label: gettext('Search Objects...'),
icon: 'fa fa-search', enable: enable,
}]);
+
+ // show psql tool same as query tool.
+ pgAdmin.Browser.add_menus([{
+ name: 'show_psql_tool', node: this.type, module: this,
+ applies: ['context'], callback: 'show_psql_tool',
+ priority: 998, label: gettext('PSQL Tool (Beta)'),
+ icon: 'fas fa-terminal',
+ }]);
}
// This will add options of scripts eg:'CREATE Script'
@@ -902,6 +910,15 @@ define('pgadmin.browser.node', [
pgAdmin.DataGrid.show_query_tool('', i);
},
+ // Callback to render psql tool.
+ show_psql_tool: function(args) {
+ var input = args || {},
+ t = pgBrowser.tree,
+ i = input.item || t.selected(),
+ d = i && i.length == 1 ? t.itemData(i) : undefined;
+ pgBrowser.psql.psql_tool(d, i, true);
+ },
+
// Logic to change the server background colour
// There is no way of applying CSS to parent element so we have to
// do it via JS code only
diff --git a/web/pgadmin/browser/static/js/panel.js b/web/pgadmin/browser/static/js/panel.js
index c9e64132..3068aabe 100644
--- a/web/pgadmin/browser/static/js/panel.js
+++ b/web/pgadmin/browser/static/js/panel.js
@@ -122,10 +122,30 @@ define(
myPanel.on(ev, that.handleVisibility.bind(myPanel, ev));
});
}
+
+ // Listen on detach panel event
+ myPanel.on(wcDocker.EVENT.DETACHED, function(obj) {
+ that.setCodeMirrorHeight(obj);
+ });
},
});
}
},
+ setCodeMirrorHeight: function() {
+ // Fix for mac os code-mirror showing black screen.
+ var txtArea = $('.pg-panel-content .sql_textarea > textarea').first();
+ txtArea.css('z-index', -1);
+ var $tabContent = $('.pg-panel-content > .sql_textarea').first();
+ var $sqlPane = $tabContent.find('.CodeMirror > div > textarea');
+ for(let i=0; i<$sqlPane.length; i++) {$($sqlPane[i]).css('z-index', -1);}
+
+ $tabContent = $('.pg-panel-content > .sql_textarea').first();
+ $sqlPane = $tabContent.find('.pg-panel-content');
+ $sqlPane.find('.CodeMirror').css(
+ 'cssText',
+ 'height: ' + ($tabContent.height()) + 'px !important;'
+ );
+ },
eventFunc: function(eventName) {
var name = $(this).data('pgAdminName');
diff --git a/web/pgadmin/browser/static/js/toolbar.js b/web/pgadmin/browser/static/js/toolbar.js
index 09baaf22..90d2d007 100644
--- a/web/pgadmin/browser/static/js/toolbar.js
+++ b/web/pgadmin/browser/static/js/toolbar.js
@@ -56,6 +56,15 @@ let _defaultToolBarButtons = [
toggleClass: '',
parentClass: 'pg-toolbar-btn btn-primary-icon',
enabled: false,
+ },{
+ label: gettext('PSQL Tool'),
+ ariaLabel: gettext('PSQL Tool'),
+ btnClass: 'fas fa-terminal',
+ text: '',
+ toggled: false,
+ toggleClass: '',
+ parentClass: 'pg-toolbar-btn btn-primary-icon pg-toolbar-psql',
+ enabled: false,
},
];
@@ -105,6 +114,13 @@ export function initializeToolbar(panel, wcDocker) {
pgAdmin.DataGrid.show_filtered_row({mnuid: 4}, pgAdmin.Browser.tree.selected());
else if ('name' in data && data.name === gettext('Search objects'))
pgAdmin.SearchObjects.show_search_objects('', pgAdmin.Browser.tree.selected());
+ else if ('name' in data && data.name === gettext('PSQL Tool')){
+ var input = {},
+ t = pgAdmin.Browser.tree,
+ i = input.item || t.selected(),
+ d = i && i.length == 1 ? t.itemData(i) : undefined;
+ pgAdmin.Browser.psql.psql_tool(d, i, true);
+ }
});
}
diff --git a/web/pgadmin/browser/static/scss/_browser.scss b/web/pgadmin/browser/static/scss/_browser.scss
index 0d157384..ae72f0e6 100644
--- a/web/pgadmin/browser/static/scss/_browser.scss
+++ b/web/pgadmin/browser/static/scss/_browser.scss
@@ -53,3 +53,9 @@ samp,
border-width: 1px;
font-size: 1.15em;
}
+
+.pg-toolbar-psql {
+ padding-top: 0em;
+ font-size: inherit;
+ align-items: center;
+}
diff --git a/web/pgadmin/browser/templates/browser/js/utils.js b/web/pgadmin/browser/templates/browser/js/utils.js
index 8597df48..b0a317a5 100644
--- a/web/pgadmin/browser/templates/browser/js/utils.js
+++ b/web/pgadmin/browser/templates/browser/js/utils.js
@@ -52,6 +52,10 @@ define('pgadmin.browser.utils',
pgAdmin['user_inactivity_timeout'] = {{ current_app.config.get('USER_INACTIVITY_TIMEOUT') }};
pgAdmin['override_user_inactivity_timeout'] = '{{ current_app.config.get('OVERRIDE_USER_INACTIVITY_TIMEOUT') }}' == 'True';
+ /* GET PSQL Tool related config */
+ pgAdmin['enable_psql'] = '{{ current_app.config.get('ENABLE_PSQL') }}' == 'True';
+ pgAdmin['allow_psql_shell_commands'] = '{{ current_app.config.get('ALLOW_PSQL_SHELL_COMMANDS') }}' == 'True';
+
// Define list of nodes on which Query tool option doesn't appears
var unsupported_nodes = pgAdmin.unsupported_nodes = [
'server_group', 'server', 'coll-tablespace', 'tablespace',
diff --git a/web/pgadmin/browser/utils.py b/web/pgadmin/browser/utils.py
index 312b0ee1..5e22f2d5 100644
--- a/web/pgadmin/browser/utils.py
+++ b/web/pgadmin/browser/utils.py
@@ -62,7 +62,8 @@ def underscore_unescape(text):
">": '>',
""": '"',
"`": '`',
- "'": "'"
+ "'": "'",
+ "'": "'"
}
# always replace & first
diff --git a/web/pgadmin/static/bundle/browser.js b/web/pgadmin/static/bundle/browser.js
index 14140a2f..0b3ad81b 100644
--- a/web/pgadmin/static/bundle/browser.js
+++ b/web/pgadmin/static/bundle/browser.js
@@ -11,6 +11,7 @@ define('bundled_browser',[
'pgadmin.browser',
'sources/browser/index',
'top/tools/erd/static/js/index',
+ 'top/tools/psql/static/js/index',
], function(pgBrowser) {
pgBrowser.init();
});
diff --git a/web/pgadmin/static/css/style.css b/web/pgadmin/static/css/style.css
index c2a776c8..5b4a9f2d 100644
--- a/web/pgadmin/static/css/style.css
+++ b/web/pgadmin/static/css/style.css
@@ -21,3 +21,5 @@
@import '../vendor/backgrid/backgrid.css';
@import '../vendor/backgrid/backgrid-select-all.css';
+
+@import 'node_modules/xterm/css/xterm.css';
diff --git a/web/pgadmin/static/scss/pgadmin.scss b/web/pgadmin/static/scss/pgadmin.scss
index 6c38c6f7..2e5bc6d9 100644
--- a/web/pgadmin/static/scss/pgadmin.scss
+++ b/web/pgadmin/static/scss/pgadmin.scss
@@ -10,6 +10,11 @@ $theme-colors: (
--color-fg: #{$color-fg};
--color-bg: #{$color-bg};
--border-color: #{$border-color};
+ --psql-background: #{$psql-background};
+ --psql-foreground: #{$psql-foreground};
+ --psql-cursor: #{$psql-cursor};
+ --psql-cursorAccent: #{$psql-cursorAccent};
+ --psql-selection: #{$psql-selection};
}
@import "bootstrap/scss/bootstrap";
diff --git a/web/pgadmin/static/scss/resources/_default.variables.scss b/web/pgadmin/static/scss/resources/_default.variables.scss
index ce33424e..d9fb6653 100644
--- a/web/pgadmin/static/scss/resources/_default.variables.scss
+++ b/web/pgadmin/static/scss/resources/_default.variables.scss
@@ -371,3 +371,10 @@ $erd-link-selected-color: $color-fg !default;
$erd-bg-grid: url("data:image/svg+xml, %3Csvg width='100%25' viewBox='0 0 45 45' style='background-color:#{url-friendly-colour($erd-canvas-bg)}' height='100%25' xmlns='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3Cpattern id='smallGrid' width='15' height='15' patternUnits='userSpaceOnUse'%3E%3Cpath d='M 15 0 L 0 0 0 15' fill='none' stroke='#{url-friendly-colour($erd-canvas-grid)}' stroke-width='0.5'/%3E%3C/pattern%3E%3Cpattern id='grid' width='45' height='45' patternUnits='userSpaceOnUse'%3E%3Crect width='100' height='100' fill='url(%23smallGrid)'/%3E%3Cpath d='M 100 0 L 0 0 0 100' fill='none' stroke='#{url-friendly-colour($erd-canvas-grid)}' stroke-width='1'/%3E%3C/pattern%3E%3C/defs%3E%3Crect width='100%25' height='100%25' fill='url(%23grid)' /%3E%3C/svg%3E%0A");
$select2-readonly: $color-gray-lighter !default;
+
+// psql tool variables
+$psql-background: $color-bg !default;
+$psql-foreground: $color-fg !default;
+$psql-cursor: $color-fg !default;
+$psql-cursorAccent: $color-fg !default;
+$psql-selection: #326690 !default;
diff --git a/web/pgadmin/static/scss/resources/dark/_theme.variables.scss b/web/pgadmin/static/scss/resources/dark/_theme.variables.scss
index efa36df8..2fa907b8 100644
--- a/web/pgadmin/static/scss/resources/dark/_theme.variables.scss
+++ b/web/pgadmin/static/scss/resources/dark/_theme.variables.scss
@@ -136,3 +136,10 @@ $erd-link-color: $color-fg;
$erd-link-selected-color: $color-fg;
$select2-readonly: $color-bg;
+
+// psql tool variables
+$psql-background: $color-bg;
+$psql-foreground: $color-fg;
+$psql-cursor: $color-fg;
+$psql-cursorAccent: $color-fg;
+$psql-selection: #d6effc;
diff --git a/web/pgadmin/static/scss/resources/high_contrast/_theme.variables.scss b/web/pgadmin/static/scss/resources/high_contrast/_theme.variables.scss
index 682f2622..b4783bce 100644
--- a/web/pgadmin/static/scss/resources/high_contrast/_theme.variables.scss
+++ b/web/pgadmin/static/scss/resources/high_contrast/_theme.variables.scss
@@ -207,3 +207,10 @@ $quick-search-a-text-color: $black !default;
$quick-search-info-icon: #8A8A8A !default;
$select2-readonly: $color-gray;
+
+// psql tool variables
+$psql-background: $color-bg;
+$psql-foreground: $color-fg;
+$psql-cursor: $color-fg;
+$psql-cursorAccent: $color-fg;
+$psql-selection: $color-primary-light;
diff --git a/web/pgadmin/tools/datagrid/static/js/datagrid_panel_title.js b/web/pgadmin/tools/datagrid/static/js/datagrid_panel_title.js
index 1348cc45..42efc04d 100644
--- a/web/pgadmin/tools/datagrid/static/js/datagrid_panel_title.js
+++ b/web/pgadmin/tools/datagrid/static/js/datagrid_panel_title.js
@@ -100,6 +100,10 @@ export function generateTitle(title_placeholder, title_data) {
title_placeholder = title_placeholder.replace(new RegExp('%ARGS%'), _.unescape(title_data.args));
title_placeholder = title_placeholder.replace(new RegExp('%SCHEMA%'), _.unescape(title_data.schema));
title_placeholder = title_placeholder.replace(new RegExp('%DATABASE%'), _.unescape(title_data.database));
+ } else if(title_data.type == 'psql_tool') {
+ title_placeholder = title_placeholder.replace(new RegExp('%DATABASE%'), _.unescape(title_data.database));
+ title_placeholder = title_placeholder.replace(new RegExp('%USERNAME%'), _.unescape(title_data.username));
+ title_placeholder = title_placeholder.replace(new RegExp('%SERVER%'), _.unescape(title_data.server));
}
return _.escape(title_placeholder);
diff --git a/web/pgadmin/tools/psql/__init__.py b/web/pgadmin/tools/psql/__init__.py
new file mode 100644
index 00000000..2dde39a7
--- /dev/null
+++ b/web/pgadmin/tools/psql/__init__.py
@@ -0,0 +1,606 @@
+#!/usr/bin/env python3
+import fcntl
+import os
+import pty
+import re
+import select
+import struct
+import termios
+import config
+import eventlet.green.subprocess as subprocess
+
+from config import PG_DEFAULT_DRIVER
+from flask import Response, url_for, request
+from flask import render_template, copy_current_request_context, \
+ current_app as app
+from flask_babelex import gettext
+from flask_security import login_required, current_user
+from pgadmin.browser.utils import underscore_unescape
+from pgadmin.utils import PgAdminModule
+from pgadmin.utils.constants import MIMETYPE_APP_JS
+from pgadmin.utils.driver import get_driver
+from ... import socketio as sio
+from pgadmin.utils import get_complete_file_path
+
+
+session_input = dict()
+session_input_cursor = dict()
+session_last_cmd = dict()
+pdata = dict()
+cdata = dict()
+
+
+class PSQLModule(PgAdminModule):
+ """
+ class PSQLModule(PgAdminModule)
+ A module class for PSQL derived from PgAdminModule.
+ """
+
+ LABEL = gettext("PSQL")
+
+ def get_own_menuitems(self):
+ return {}
+
+ def get_own_javascripts(self):
+ return [{
+ 'name': 'pgadmin.psql',
+ 'path': url_for('psql.index') + "psql",
+ 'when': None
+ }]
+
+ def get_panels(self):
+ return []
+
+ def get_exposed_url_endpoints(self):
+ """
+ Returns:
+ list: URL endpoints for PSQL module
+ """
+ return [
+ 'psql.panel'
+ ]
+
+
+blueprint = PSQLModule('psql', __name__, static_url_path='/static')
+
+
[email protected]("/psql.js")
+@login_required
+def script():
+ """render the required javascript"""
+ return Response(
+ response=render_template("psql/js/psql.js", _=gettext),
+ status=200,
+ mimetype=MIMETYPE_APP_JS
+ )
+
+
[email protected]('/panel/<int:trans_id>',
+ methods=["POST"],
+ endpoint="panel")
+@login_required
+def panel(trans_id):
+ """
+ Return panel template for PSQL tools.
+ :param trans_id:
+ """
+ params = {
+ 'trans_id': trans_id,
+ 'title': request.form['title']
+ }
+ if 'sid_soid_mapping' not in app.config:
+ app.config['sid_soid_mapping'] = dict()
+ if request.args:
+ params.update({k: v for k, v in request.args.items()})
+ # Set TERM env for xterm.
+ os.environ['TERM'] = 'xterm'
+
+ return render_template('editor_template.html',
+ sid=params['sid'],
+ db=underscore_unescape(params['db']) if params[
+ 'db'] else 'postgres',
+ server_type=params['server_type'],
+ is_enable=config.ENABLE_PSQL,
+ title=underscore_unescape(params['title']),
+ theme=params['theme']
+ )
+
+
+def set_term_size(fd, row, col, xpix=0, ypix=0):
+ """
+ Set the terminal size as per UI xterm size.
+ :param fd:
+ :param row:
+ :param col:
+ :param xpix:
+ :param ypix:
+ """
+ term_size = struct.pack('HHHH', row, col, xpix, ypix)
+ fcntl.ioctl(fd, termios.TIOCSWINSZ, term_size)
+
+
[email protected]('connect', namespace='/pty')
+def connect():
+ """
+ Connect to the server through socket.
+ :return:
+ :rtype:
+ """
+ if config.ENABLE_PSQL:
+ sio.emit('connected', {'sid': request.sid}, namespace='/pty',
+ to=request.sid)
+
+ if request.sid in session_last_cmd:
+ session_last_cmd[request.sid]['is_new_connection'] = False
+ else:
+ session_last_cmd[request.sid] = {'cmd': '', 'arrow_up': False,
+ 'invalid_cmd': False,
+ 'is_new_connection': False}
+ else:
+ sio.emit('conn_not_allow', {'sid': request.sid}, namespace='/pty',
+ to=request.sid)
+
+
[email protected]('start_process', namespace='/pty')
+def start_process(data):
+ """
+ Start the pty terminal and execute psql command and emit results to user.
+ :param data:
+ :return:
+ """
+
+ @copy_current_request_context
+ def read_and_forward_pty_output(sid, data):
+ max_read_bytes = 1024 * 20
+ # Create the pty terminal process, parent and fd are file descriptors
+ # for parent and child.
+ parent, fd = pty.openpty()
+ p = None
+ if parent is not None:
+ # Child process
+ p = subprocess.Popen(connection_data,
+ preexec_fn=os.setsid,
+ stdin=fd,
+ stdout=fd,
+ stderr=fd,
+ universal_newlines=True
+ )
+
+ app.config['sessions'][request.sid] = parent
+ pdata[request.sid] = p
+ cdata[request.sid] = fd
+ else:
+ app.config['sessions'][request.sid] = parent
+ cdata[request.sid] = fd
+ set_term_size(fd, 50, 50)
+
+ while p and p.poll() is None:
+ if request.sid in app.config['sessions']:
+ # This code is added to make this unit testable.
+ if "is_test" not in data:
+ sio.sleep(0.01)
+ else:
+ data['count'] += 1
+ if data['count'] == 5:
+ break
+
+ timeout = 0
+ # module provides access to platform-specific I/O
+ # monitoring functions
+ (data_ready, _, _) = select.select([parent, fd], [], [],
+ timeout)
+
+ if parent in data_ready:
+ # Read the output from parent fd (terminal).
+ output = os.read(parent, max_read_bytes)
+ emit_output = True
+
+ if sid in session_last_cmd and session_last_cmd[sid][
+ 'arrow_up'] and not session_last_cmd[request.sid][
+ 'arrow_left_right']:
+ session_last_cmd[sid]['cmd'] = output.decode()
+ session_input_cursor[request.sid] = len(
+ session_last_cmd[sid]['cmd'])
+ session_last_cmd[sid]['arrow_up'] = True
+
+ if sid in session_last_cmd:
+ # If command is invalid then emit error to user.
+ if session_last_cmd[sid]['invalid_cmd']:
+ emit_output = False
+ sio.emit(
+ 'pty-output',
+ {
+ 'result': gettext(
+ "ERROR: Shell commands are disabled "
+ "in psql for security\r\n"),
+ 'error': True
+ },
+ namespace='/pty', room=sid)
+ # If command is valid then emit output to user.
+ if emit_output:
+ sio.emit('pty-output',
+ {'result': output.decode(),
+ 'error': False},
+ namespace='/pty', room=sid)
+ else:
+ session_last_cmd[request.sid]['invalid_cmd'] = False
+
+ # Check user is authenticated and PSQL is enabled in config.
+ if current_user.is_authenticated and config.ENABLE_PSQL:
+ connection_data = []
+ try:
+ db = ''
+ if data['db']:
+ db = underscore_unescape(data['db']).replace('\\', "\\\\")
+
+ conn, manager = _get_connection(int(data['sid']), data)
+ psql_utility = manager.utility('sql')
+ connection_data = get_connection_str(psql_utility, db,
+ manager)
+ except Exception as e:
+ # If any error raised during the start the PSQL emit error to UI.
+ # request.sid: This sid is socket id.
+ sio.emit(
+ 'conn_error',
+ {
+ 'error': 'Error while running psql command: {0}'.format(e),
+ }, namespace='/pty', room=request.sid)
+
+ try:
+ if str(data['sid']) not in app.config['sid_soid_mapping']:
+ # request.sid: refer request.sid as socket id.
+ app.config['sid_soid_mapping'][str(data['sid'])] = list()
+ app.config['sid_soid_mapping'][str(data['sid'])].append(
+ request.sid)
+ else:
+ app.config['sid_soid_mapping'][str(data['sid'])].append(
+ request.sid)
+
+ sio.start_background_task(read_and_forward_pty_output,
+ request.sid, data)
+ except Exception as e:
+ sio.emit(
+ 'conn_error',
+ {
+ 'error': 'Error while running psql command: {0}'.format(e),
+ }, namespace='/pty', room=request.sid)
+ else:
+ # Show error if user is not authenticated.
+ sio.emit('conn_not_allow', {'sid': request.sid}, namespace='/pty',
+ to=request.sid)
+
+
+def _get_connection(sid, data):
+ """
+ Get the connection object of ERD.
+ :param sid:
+ :param did:
+ :param trans_id:
+ :return:
+ """
+ manager = get_driver(PG_DEFAULT_DRIVER).connection_manager(sid)
+ try:
+ conn = manager.connection()
+ # This is added for unit test only, no use in normal execution.
+ if 'pwd' in data:
+ kwargs = {'password': data['pwd'], "user": data['user']}
+ status, msg = conn.connect(**kwargs)
+ else:
+ status, msg = conn.connect()
+ if not status:
+ app.logger.error(msg)
+ sio.emit(sio.emit(
+ 'conn_error',
+ {
+ 'error': 'Error while running psql command: {0}'
+ ''.format('Server connection not present.'),
+ }, namespace='/pty', room=request.sid))
+ raise Exception('Server is not connected.')
+
+ return conn, manager
+ except Exception as e:
+ app.logger.error(e)
+ raise
+
+
+def get_connection_str(psql_utility, db, manager):
+ """
+ Get connection string(through connection dsn)
+ :param psql_utility: PostgreSQL binary path.
+ :param db: database name to connect specific db.
+ :return: connection attribute list for PSQL connection.
+ """
+ conn_attr = get_conn_str(manager, db)
+ conn_attr_list = list()
+ conn_attr_list.append(psql_utility)
+ conn_attr_list.append(conn_attr)
+ return conn_attr_list
+
+
+def get_conn_str(manager, db):
+ """
+ Get connection attributes for psql connection.
+ :param manager:
+ :param db:
+ :return:
+ """
+ manager.export_password_env('PGPASSWORD')
+ conn_attr =\
+ "host={0} port={1} dbname={2} user={3} sslmode={4} " \
+ "sslcompression={5} " \
+ "".format(
+ manager.local_bind_host if manager.use_ssh_tunnel else
+ manager.host,
+ manager.local_bind_port if manager.use_ssh_tunnel else
+ manager.port,
+ db if db != '' else 'postgres',
+ manager.user if manager.user else 'postgres',
+ manager.ssl_mode,
+ True if manager.sslcompression else False,
+ )
+
+ if manager.hostaddr:
+ conn_attr = " {0} hostaddr={1}".format(conn_attr, manager.hostaddr)
+
+ if manager.passfile:
+ conn_attr = " {0} passfile={1}".format(conn_attr,
+ get_complete_file_path(
+ manager.passfile))
+
+ if get_complete_file_path(manager.sslcert):
+ conn_attr = " {0} sslcert={1}".format(
+ conn_attr, get_complete_file_path(manager.sslcert))
+
+ if get_complete_file_path(manager.sslkey):
+ conn_attr = " {0} sslkey={1}".format(
+ conn_attr, get_complete_file_path(manager.sslkey))
+
+ if get_complete_file_path(manager.sslrootcert):
+ conn_attr = " {0} sslrootcert={1}".format(
+ conn_attr, get_complete_file_path(manager.sslrootcert))
+
+ if get_complete_file_path(manager.sslcrl):
+ conn_attr = " {0} sslcrl={1}".format(
+ conn_attr, get_complete_file_path(manager.sslcrl))
+
+ if manager.service:
+ conn_attr = " {0} service={1}".format(
+ conn_attr, get_complete_file_path(manager.service))
+
+ return conn_attr
+
+
[email protected]('socket_input', namespace='/pty')
+def socket_input(data):
+ """
+ This get the user input through socket.
+ :param data: User input from socket.
+ """
+ try:
+ # request.sid: refer request.sid as socket id.
+ # Check PSQL enabled setting from config.
+ enable_psql = True if config.ENABLE_PSQL else False
+
+ if request.sid in app.config['sessions']:
+ if data['key_name'] == 'Enter' and enable_psql:
+ # If user get previous executed command from history then set
+ # current command as previous executed command.
+ if session_last_cmd[request.sid]['cmd'] \
+ and session_last_cmd[request.sid]['arrow_up']:
+ user_input = str(
+ session_last_cmd[request.sid]['cmd']).strip()
+ session_last_cmd[request.sid]['arrow_up'] = False
+ session_last_cmd[request.sid]['cmd'] = ''
+ else:
+ if request.sid not in session_input:
+ session_input[request.sid] = data['input']
+ user_input = str(session_input[request.sid]).strip()
+ else:
+ user_input = str(session_input[request.sid]).strip()
+ session_input_cursor[request.sid] = 0
+
+ # If ALLOW_PSQL_SHELL_COMMANDS is False then user can't execute
+ # \! meta command to run shell commands through PSQL terminal.
+ # Check before executing the user entered command does not
+ # contains \! in input.
+ is_new_connection = session_last_cmd[request.sid][
+ 'is_new_connection']
+ if user_input.startswith('\\!') and \
+ re.match("^\\\!$", user_input) and \
+ len(user_input) == 2 and \
+ not config.ALLOW_PSQL_SHELL_COMMANDS \
+ and not is_new_connection:
+
+ session_last_cmd[request.sid]['invalid_cmd'] = True
+
+ for i in range(len(session_input[request.sid])):
+ os.write(app.config['sessions'][request.sid],
+ '\b \b'.encode())
+
+ os.write(app.config['sessions'][request.sid],
+ '\n'.encode())
+ session_input[request.sid] = ''
+ elif re.search("\\\!", user_input) and \
+ not config.ALLOW_PSQL_SHELL_COMMANDS and \
+ not session_last_cmd[request.sid]['is_new_connection']:
+ stop_execution = True
+ # Check \! is passed as string or not.
+ double_quote_strs = re.findall('"([^"]*)"', user_input)
+ if not double_quote_strs:
+ double_quote_strs = re.findall("'([^']*)'", user_input)
+
+ if double_quote_strs:
+ for sub_str in double_quote_strs:
+ if re.search("\\\!", sub_str):
+ stop_execution = False
+ # break
+
+ if stop_execution:
+ session_last_cmd[request.sid]['invalid_cmd'] = True
+ # Remove already added command from terminal.
+ for i in range(len(user_input)):
+ os.write(app.config['sessions'][request.sid],
+ '\b \b'.encode())
+ # Add Enter event to execute the command.
+ os.write(app.config['sessions'][request.sid],
+ '\n'.encode())
+ else:
+ session_last_cmd[request.sid]['invalid_cmd'] = False
+ os.write(app.config['sessions'][request.sid],
+ '\n'.encode())
+ elif user_input == '\q' or user_input == 'q\\q':
+ # If user enter \q to terminate the PSQL, emit the msg to
+ # notify user connection is terminated.
+ sio.emit('pty-output',
+ {
+ 'result': gettext(
+ 'Connection terminated, To create new '
+ 'connection please open another psql'
+ ' tool.'),
+ 'error': True},
+ namespace='/pty', room=request.sid)
+ os.write(app.config['sessions'][request.sid],
+ '\n'.encode())
+
+ else:
+ os.write(app.config['sessions'][request.sid],
+ data['input'].encode())
+ session_input[request.sid] = ''
+ session_last_cmd[request.sid]['is_new_connection'] = False
+ else:
+ if data['key_name'] == 'ArrowLeft':
+ session_last_cmd[request.sid]['arrow_left_right'] = True
+ if session_input_cursor[request.sid] > 0:
+ session_input_cursor[request.sid] -= 1
+
+ elif data['key_name'] == 'ArrowRight':
+ session_last_cmd[request.sid]['arrow_left_right'] = True
+ if session_input_cursor[request.sid] < len(
+ session_input[request.sid]):
+ session_input_cursor[request.sid] += 1
+
+ elif data['key_name'] == 'ArrowUp':
+ session_last_cmd[request.sid]['arrow_up'] = True
+ session_last_cmd[request.sid]['arrow_left_right'] = False
+ session_input[request.sid] = session_last_cmd[request.sid][
+ 'cmd']
+ session_input_cursor[request.sid] = len(
+ session_last_cmd[request.sid]['cmd'])
+
+ elif request.sid in session_input and data[
+ 'key_name'] == 'Backspace' and (
+ len(session_input[request.sid]) or len(
+ session_last_cmd[request.sid])):
+
+ session_last_cmd[request.sid]['arrow_left_right'] = True
+
+ if session_last_cmd[request.sid]['cmd']:
+ session_input[request.sid] = \
+ session_last_cmd[request.sid]['cmd']
+
+ user_input = list(session_input[request.sid])
+
+ if session_input_cursor[request.sid] == 1:
+ index = 0
+ session_input_cursor[request.sid] -= 1
+ else:
+ if session_input_cursor[request.sid] > 0:
+ index = (session_input_cursor[request.sid]) - 1
+ session_input_cursor[request.sid] -= 1
+ else:
+ index = session_input_cursor[request.sid]
+ session_input_cursor[request.sid] = 0
+
+ if len(user_input):
+ del user_input[index]
+ session_input[request.sid] = "".join(user_input)
+
+ if len(session_input[request.sid]) == 0:
+ session_input_cursor[request.sid] = 0
+ session_last_cmd[request.sid]['cmd'] = ''
+ elif request.sid in session_input:
+ if session_last_cmd[request.sid]['cmd'] and session_input[
+ request.sid] == '':
+ session_input[request.sid] = \
+ session_last_cmd[request.sid]['cmd']
+ session_input_cursor[request.sid] = len(
+ session_input[request.sid])
+ else:
+ session_last_cmd[request.sid]['arrow_up'] = False
+ session_last_cmd[request.sid]['cmd'] = ''
+ user_input = list(session_input[request.sid])
+ user_input.insert(session_input_cursor[request.sid],
+ data['input'])
+ session_input[request.sid] = ''.join(user_input)
+ session_input_cursor[request.sid] += 1
+ session_last_cmd[request.sid]['arrow_left_right'] = False
+ else:
+ session_input_cursor[request.sid] = 0
+ session_input[request.sid] = data['input']
+ session_input_cursor[request.sid] += 1
+
+ # Write user input to terminal parent fd.
+ os.write(app.config['sessions'][request.sid],
+ data['input'].encode())
+ except Exception as e:
+ # Delete socket id from sessions.
+ # request.sid: refer request.sid as socket id.
+ sio.emit('pty-output',
+ {
+ 'result': gettext('Invalid session.\r\n'),
+ 'error': True
+ },
+ namespace='/pty', room=request.sid)
+ del app.config['sessions'][request.sid]
+
+
[email protected]('resize', namespace='/pty')
+def resize(data):
+ """
+ Resize the pty terminal as per the UI terminal.
+ :param data: UI terminal rows and cols data
+ """
+ # request.sid: refer request.sid as socket id.
+ if request.sid in app.config['sessions']:
+ set_term_size(app.config['sessions'][request.sid], data['rows'],
+ data['cols'])
+
+
[email protected]('disconnect', namespace='/pty')
+def disconnect():
+ """
+ Disconnect the socket and terminate the process
+ """
+ # request.sid: refer request.sid as socket id.
+ if request.sid in pdata:
+ # On disconnect socket manually exit the psql terminal and close the
+ # parend and child fd then kill the subprocess.
+ disconnect_socket()
+
+
[email protected]('server-disconnect', namespace='/pty')
+def server_disconnect(data):
+ """
+ Disconnect the socket and terminate the process after user disconnect
+ the server. we can't use disconnect event name as it is reserved for socket
+ internal use.
+ """
+ # request.sid: refer request.sid as socket id.
+ if request.sid in pdata and request.sid in app.config['sid_soid_mapping'][
+ data['sid']]:
+ # On disconnect socket manually exit the psql terminal and close the
+ # parend and child fd then kill the subprocess.
+ app.config['sid_soid_mapping'][data['sid']] = [soid for soid in
+ app.config[
+ 'sid_soid_mapping'][
+ data['sid']] if
+ soid != request.sid]
+ disconnect_socket()
+
+
+def disconnect_socket():
+ os.write(app.config['sessions'][request.sid], '\q\n'.encode())
+ sio.sleep(1)
+ os.close(app.config['sessions'][request.sid])
+ os.close(cdata[request.sid])
+ del app.config['sessions'][request.sid]
diff --git a/web/pgadmin/tools/psql/static/js/index.js b/web/pgadmin/tools/psql/static/js/index.js
new file mode 100644
index 00000000..4d88ba04
--- /dev/null
+++ b/web/pgadmin/tools/psql/static/js/index.js
@@ -0,0 +1,23 @@
+/////////////////////////////////////////////////////////////
+//
+// pgAdmin 4 - PostgreSQL Tools
+//
+// Copyright (C) 2013 - 2021, The pgAdmin Development Team
+// This software is released under the PostgreSQL Licence
+//
+//////////////////////////////////////////////////////////////
+
+import gettext from 'sources/gettext';
+import url_for from 'sources/url_for';
+import $ from 'jquery';
+import _ from 'underscore';
+import pgAdmin from 'sources/pgadmin';
+import pgBrowser from 'top/browser/static/js/browser';
+import * as csrfToken from 'sources/csrf';
+import {initialize} from './psql_module';
+
+let pgBrowserOut = initialize(gettext, url_for, $, _, pgAdmin, csrfToken, pgBrowser);
+
+module.exports = {
+ pgBrowser: pgBrowserOut,
+};
diff --git a/web/pgadmin/tools/psql/static/js/psql_module.js b/web/pgadmin/tools/psql/static/js/psql_module.js
new file mode 100644
index 00000000..9f7cada3
--- /dev/null
+++ b/web/pgadmin/tools/psql/static/js/psql_module.js
@@ -0,0 +1,429 @@
+/////////////////////////////////////////////////////////////
+//
+// pgAdmin 4 - PostgreSQL Tools
+//
+// Copyright (C) 2013 - 2021, The pgAdmin Development Team
+// This software is released under the PostgreSQL Licence
+//
+//////////////////////////////////////////////////////////////
+import { Terminal } from 'xterm';
+import { FitAddon } from 'xterm-addon-fit';
+import { WebLinksAddon } from 'xterm-addon-web-links';
+import { SearchAddon } from 'xterm-addon-search';
+import { io } from 'socketio';
+import Alertify from 'pgadmin.alertifyjs';
+import {enable} from 'pgadmin.browser.toolbar';
+import clipboard from 'sources/selection/clipboard';
+import 'wcdocker';
+import {getRandomInt} from 'sources/utils';
+
+import {getTreeNodeHierarchyFromIdentifier} from 'sources/tree/pgadmin_tree_node';
+import {generateTitle} from 'tools/datagrid/static/js/datagrid_panel_title';
+
+
+export function setPanelTitle(psqlToolPanel, panelTitle) {
+ psqlToolPanel.title('<span title="'+panelTitle+'">'+panelTitle+'</span>');
+}
+
+var wcDocker = window.wcDocker;
+
+export function initialize(gettext, url_for, $, _, pgAdmin, csrfToken, Browser) {
+ var pgBrowser = Browser;
+ var terminal = Terminal;
+ var parentData = null;
+ /* Return back, this has been called more than once */
+ if (pgBrowser.psql)
+ return pgBrowser.psql;
+
+
+ // Create an Object Restore of pgBrowser class
+ pgBrowser.psql = {
+ init: function() {
+ this.initialized = true;
+ csrfToken.setPGCSRFToken(pgAdmin.csrf_token_header, pgAdmin.csrf_token);
+ // Define the nodes on which the menus to be appear
+ var menus = [{
+ name: 'psql',
+ module: this,
+ applies: ['tools'],
+ callback: 'psql_tool',
+ priority: 1,
+ label: gettext('PSQL Tool (Beta)'),
+ enable: this.psqlToolEnabled,
+ }];
+
+ this.enable_psql_tool = pgAdmin['enable_psql'];
+ if(pgAdmin['enable_psql']) {
+ pgBrowser.add_menus(menus);
+ }
+
+ // Creating a new pgBrowser frame to show the data.
+ var psqlFrameType = new pgBrowser.Frame({
+ name: 'frm_psqltool',
+ showTitle: true,
+ isCloseable: true,
+ isPrivate: true,
+ url: 'about:blank',
+ });
+
+ var self = this;
+ /* Cache may take time to load for the first time
+ * Keep trying till available
+ */
+ let cacheIntervalId = setInterval(function() {
+ if(pgBrowser.preference_version() > 0) {
+ self.preferences = pgBrowser.get_preferences_for_module('psql');
+ clearInterval(cacheIntervalId);
+ }
+ },0);
+
+ pgBrowser.onPreferencesChange('psql', function() {
+ self.preferences = pgBrowser.get_preferences_for_module('psql');
+ });
+
+ // Load the newly created frame
+ psqlFrameType.load(pgBrowser.docker);
+ return this;
+ },
+ /* Enable/disable PSQL tool menu in tools based
+ * on node selected. if selected node is present
+ * in unsupported_nodes, menu will be disabled
+ * otherwise enabled.
+ */
+ psqlToolEnabled: function(obj) {
+
+ var isEnabled = (() => {
+ if (!_.isUndefined(obj) && !_.isNull(obj)) {
+ if (_.indexOf(pgAdmin.unsupported_nodes, obj._type) == -1) {
+ if (obj._type == 'database' && obj.allowConn) {
+ return true;
+ } else if (obj._type != 'database') {
+ return true;
+ } else {
+ return false;
+ }
+ } else {
+ return false;
+ }
+ } else {
+ return false;
+ }
+ })();
+
+ enable(gettext('PSQL Tool'), isEnabled);
+ return isEnabled;
+ },
+ retrieveAncestorOfTypeServer: function(item) {
+ let serverInformation = null;
+ // let aciTreeItem = item || pgBrowser.treeMenu.selected();
+ let treeNode = pgBrowser.treeMenu.findNodeByDomElement(item);
+
+ if (treeNode) {
+ let nodeData;
+ let databaseNode = treeNode.ancestorNode(
+ (node) => {
+ nodeData = node.getData();
+ return (nodeData._type === 'database');
+ }
+ );
+ let isServerNode = (node) => {
+ nodeData = node.getData();
+ return nodeData._type === 'server';
+ };
+
+ if (databaseNode !== null) {
+ if (nodeData._label.indexOf('=') >= 0) {
+ this.alertify.alert(
+ gettext(this.errorAlertTitle),
+ gettext(
+ 'Databases with = symbols in the name cannot be backed up or restored using this utility.'
+ )
+ );
+ } else {
+ if (databaseNode.anyParent(isServerNode))
+ serverInformation = nodeData;
+ }
+ } else {
+ if (treeNode.anyFamilyMember(isServerNode))
+ serverInformation = nodeData;
+ }
+ }
+
+ if (serverInformation === null) {
+ this.alertify.alert(
+ gettext(this.errorAlertTitle),
+ gettext('Please select server or child node from the browser tree.')
+ );
+ }
+ return serverInformation;
+ },
+ psql_tool: function(data, aciTreeIdentifier, gen=false) {
+ const module = 'paths';
+ let preference_name = 'pg_bin_dir';
+ let msg = gettext('Please configure the PostgreSQL Binary Path in the Preferences dialog.');
+ const serverInformation = this.retrieveAncestorOfTypeServer(aciTreeIdentifier);
+
+ if ((serverInformation.type && serverInformation.type === 'ppas') ||
+ serverInformation.server_type === 'ppas') {
+ preference_name = 'ppas_bin_dir';
+ msg = gettext('Please configure the EDB Advanced Server Binary Path in the Preferences dialog.');
+ }
+ const preference = pgBrowser.get_preference(module, preference_name);
+ if (preference) {
+ if (!preference.value) {
+ Alertify.alert(gettext('Configuration required'), msg);
+ return false;
+ }
+ } else {
+ Alertify.alert(
+ gettext(this.errorAlertTitle),
+ gettext('Failed to load preference %s of module %s', preference_name, module)
+ );
+ return false;
+ }
+ const node = pgBrowser.treeMenu.findNodeByDomElement(aciTreeIdentifier);
+ if (node === undefined || !node.getData()) {
+ Alertify.alert(
+ gettext('PSQL Error'),
+ gettext('No object selected.')
+ );
+ return;
+ }
+
+ parentData = getTreeNodeHierarchyFromIdentifier.call(
+ pgBrowser,
+ aciTreeIdentifier
+ );
+
+ if(_.isUndefined(parentData.server)) {
+ Alertify.alert(
+ gettext('PSQL Error'),
+ gettext('Please select a server/database object.')
+ );
+ return;
+ }
+
+ const transId = getRandomInt(1, 9999999);
+
+ var panelTitle = '';
+ // Set psql tab title as per prefrences setting.
+ var title_data = {
+ 'database': parentData.database ? parentData.database.label : 'postgres' ,
+ 'username': parentData.server.user_name,
+ 'server': parentData.server.label,
+ 'type': 'psql_tool',
+ };
+ var tab_title_placeholder = pgBrowser.get_preferences_for_module('browser').psql_tab_title_placeholder;
+ panelTitle = generateTitle(tab_title_placeholder, title_data);
+
+ const [panelUrl, panelCloseUrl] = this.getPanelUrls(transId, panelTitle, parentData, gen);
+
+ let psqlToolForm = `
+ <form id="psqlToolForm" action="${panelUrl}" method="post">
+ <input id="title" name="title" hidden />
+ <input name="close_url" value="${panelCloseUrl}" hidden />
+ </form>
+ <script>
+ document.getElementById("title").value = "${_.escape(panelTitle)}";
+ document.getElementById("psqlToolForm").submit();
+ </script>
+ `;
+ var open_new_tab = pgBrowser.get_preferences_for_module('browser').new_browser_tab_open;
+ if (open_new_tab && open_new_tab.includes('psql_tool')) {
+ var newWin = window.open('', '_blank');
+ newWin.document.write(psqlToolForm);
+ newWin.document.title = panelTitle;
+ } else {
+ /* On successfully initialization find the properties panel,
+ * create new panel and add it to the dashboard panel.
+ */
+ var propertiesPanel = pgBrowser.docker.findPanels('properties');
+ var psqlToolPanel = pgBrowser.docker.addPanel('frm_psqltool', wcDocker.DOCK.STACKED, propertiesPanel[0]);
+
+ // Set panel title and icon
+ setPanelTitle(psqlToolPanel, panelTitle);
+ psqlToolPanel.icon('fas fa-terminal psql-tab-style');
+ psqlToolPanel.focus();
+
+ var openPSQLToolURL = function(j) {
+ // add spinner element
+ let $spinner_el =
+ $(`<div class="pg-sp-container">
+ <div class="pg-sp-content">
+ <div class="row">
+ <div class="col-12 pg-sp-icon"></div>
+ </div>
+ </div>
+ </div>`).appendTo($(j).data('embeddedFrame').$container);
+
+ let init_poller_id = setInterval(function() {
+ var frameInitialized = $(j).data('frameInitialized');
+ if (frameInitialized) {
+ clearInterval(init_poller_id);
+ var frame = $(j).data('embeddedFrame');
+ if (frame) {
+ frame.onLoaded(()=>{
+ $spinner_el.remove();
+ });
+ frame.openHTML(psqlToolForm);
+ }
+ }
+ }, 100);
+ };
+
+ openPSQLToolURL(psqlToolPanel);
+
+ }
+
+ },
+ getPanelUrls: function(transId, panelTitle, parentData) {
+ let openUrl = url_for('psql.panel', {
+ trans_id: transId,
+ });
+ const misc_preferences = pgBrowser.get_preferences_for_module('misc');
+ var theme = misc_preferences.theme;
+
+ openUrl += `?sgid=${parentData.server_group._id}`
+ +`&sid=${parentData.server._id}`
+ +`&server_type=${parentData.server.server_type}`
+ + `&theme=${theme}`;
+
+ if(parentData.database && parentData.database._id) {
+ let db_label = parentData.database._label.replace('\\', '\\\\');
+ openUrl += `&db=${db_label}`;
+ } else {
+ openUrl += `&db=${''}`;
+ }
+
+ let closeUrl = url_for('psql.close', {
+ trans_id: transId,
+ });
+ return [openUrl, closeUrl];
+ },
+ psql_terminal: function() {
+ // theme colors
+ var term = new terminal({
+ cursorBlink: true,
+ macOptionIsMeta: true,
+ scrollback: 5000,
+ });
+
+ return term;
+ },
+ psql_Addon: function(term) {
+ const fitAddon = this.psql_fit_screen();
+ term.loadAddon(fitAddon);
+
+ const webLinksAddon = this.psql_web_link();
+ term.loadAddon(webLinksAddon);
+
+ const searchAddon = this.psql_search();
+ term.loadAddon(searchAddon);
+
+ fitAddon.fit();
+ term.resize(15, 50);
+ fitAddon.fit();
+ return fitAddon;
+ },
+ psql_fit_screen: function() {
+ return new FitAddon();
+ },
+ psql_web_link: function() {
+ return new WebLinksAddon();
+ },
+ psql_search: function() {
+ return new SearchAddon();
+ },
+ psql_socket: function() {
+ return io('/pty', {pingTimeout: 120000, pingInterval: 25000});
+ },
+ set_theme: function(term) {
+ var theme = {
+ background: getComputedStyle(document.documentElement).getPropertyValue('--psql-background'),
+ foreground: getComputedStyle(document.documentElement).getPropertyValue('--psql-foreground'),
+ cursor: getComputedStyle(document.documentElement).getPropertyValue('--psql-cursor'),
+ cursorAccent: getComputedStyle(document.documentElement).getPropertyValue('--psql-cursorAccent'),
+ selection: getComputedStyle(document.documentElement).getPropertyValue('--psql-selection'),
+ };
+ term.setOption('theme', theme);
+ },
+ psql_socket_io: function(socket, is_enable, sid, db, server_type, fitAddon, term) {
+ // Listen all the socket events emit from server.
+ socket.on('pty-output', function(data){
+ if(data.error) {
+ term.write('\r\n');
+ }
+ term.write(data.result);
+ if(data.error) {
+ term.write('\r\n');
+ }
+ });
+ // Connect socket
+ socket.on('connect', () => {
+ if(is_enable == 'True'){
+ socket.emit('start_process', {'sid': sid, 'db': db, 'stype': server_type });
+ }
+ fitAddon.fit();
+ socket.emit('resize', {'cols': term.cols, 'rows': term.rows});
+ });
+
+ socket.on('conn_error', (response) => {
+ term.write(response.error);
+ fitAddon.fit();
+ socket.emit('resize', {'cols': term.cols, 'rows': term.rows});
+ });
+
+ socket.on('conn_not_allow', () => {
+ term.write('PSQL connection not allowed');
+ fitAddon.fit();
+ socket.emit('resize', {'cols': term.cols, 'rows': term.rows});
+ });
+
+ socket.on('disconnect-psql', () => {
+ socket.emit('server-disconnect', {'sid': sid});
+ term.write('\r\nServer disconnected, Connection terminated, To create new connection please open another psql tool.');
+ });
+ },
+ psql_terminal_io: function(term, socket) {
+ // Listen key press event from terminal and emit socket event.
+ let selected_text = '';
+ term.attachCustomKeyEventHandler(e => {
+ e.stopPropagation();
+ if(e.type=='keydown' && e.metaKey &&(e.key == 'v' || e.key == 'V')) {
+ if(selected_text != '') {
+ if (selected_text.length > 0) {
+ socket.emit('socket_input', {'input': selected_text, 'key_name': e.code});
+ selected_text = '';
+ }
+ } else {
+ navigator.clipboard.readText().then( clipText => {
+ selected_text = clipText;
+ if (selected_text.length > 0) {
+ socket.emit('socket_input', {'input': selected_text, 'key_name': e.code});
+ selected_text = '';
+ }
+ });
+ }
+ }else if(e.type=='keydown' && e.metaKey && (e.key == 'c' || e.key == 'C')) {
+ if (term.hasSelection()) {
+ selected_text = term.getSelection();
+ } else {
+ selected_text = clipboard.readText();
+ }
+ }
+ return true;
+ });
+
+ term.onKey(function (ev) {
+ if (pgAdmin['allow_psql_shell_commands']) {
+ socket.emit('socket_input', {'input': ev.key, 'key_name': ev.domEvent.code});
+ } else {
+ socket.emit('socket_input', {'input': ev.key, 'key_name': ev.domEvent.code});
+ }
+ });
+ }
+ };
+
+ return pgBrowser.psql;
+}
+
diff --git a/web/pgadmin/tools/psql/templates/editor_template.html b/web/pgadmin/tools/psql/templates/editor_template.html
new file mode 100644
index 00000000..43b346b2
--- /dev/null
+++ b/web/pgadmin/tools/psql/templates/editor_template.html
@@ -0,0 +1,58 @@
+{% extends "base.html" %}
+{% block title %}{{title}}{% endblock %}
+
+{% block css_link %}
+<link type="text/css" rel="stylesheet" href="{{ url_for('browser.browser_css')}}"/>
+{% endblock %}
+{% block body %}
+<style>
+ body {padding: 0px;}
+ {% if is_desktop_mode and is_linux %}
+ .alertify .ajs-dimmer,.alertify .ajs-modal{-webkit-transform: none;}
+ .alertify-notifier{-webkit-transform: none;}
+ .alertify-notifier .ajs-message{-webkit-transform: none;}
+ .alertify .ajs-dialog.ajs-shake{-webkit-animation-name: none;}
+ .sql-editor-busy-icon.fa-pulse{-webkit-animation: none;}
+ {% endif %}
+</style>
+<div style="width: 100%; height: 100%;" id="psql-terminal" class="psql_terminal"></div>
+{% endblock %}
+
+
+{% block init_script %}
+require(
+ ['sources/generated/psql_tool'],
+ function(pgBrowser) {
+ const term = self.pgAdmin.Browser.psql.psql_terminal();
+ <!--Addon for fitAddon, webLinkAddon, SearchAddon -->
+ const fitAddon = self.pgAdmin.Browser.psql.psql_Addon(term);
+ <!-- Update the theme for terminal as per pgAdmin 4 theme.-->
+ self.pgAdmin.Browser.psql.set_theme(term);
+ <!-- Open the terminal -->
+ term.open(document.getElementById('psql-terminal'));
+ <!-- Socket-->
+ const socket = self.pgAdmin.Browser.psql.psql_socket();
+ self.pgAdmin.Browser.psql.psql_socket_io(socket, '{{is_enable}}', '{{sid}}', '{{db}}', '{{server_type}}', fitAddon, term);
+ self.pgAdmin.Browser.psql.psql_terminal_io(term, socket);
+
+ <!-- Resize the terminal -->
+ function fitToscreen(){
+ fitAddon.fit()
+ socket.emit("resize", {"cols": term.cols, "rows": term.rows})
+ }
+
+ function debounce(func, wait_ms) {
+ let timeout
+ return function(...args) {
+ const context = this
+ clearTimeout(timeout)
+ timeout = setTimeout(() => func.apply(context, args), wait_ms)
+ }
+ }
+
+ const wait_ms = 50;;
+ window.onresize = debounce(fitToscreen, wait_ms)
+ });
+{% endblock %}
+
+
diff --git a/web/pgadmin/tools/psql/tests/__init__.py b/web/pgadmin/tools/psql/tests/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/web/pgadmin/tools/psql/tests/psql_test_data.json b/web/pgadmin/tools/psql/tests/psql_test_data.json
new file mode 100644
index 00000000..4148c75b
--- /dev/null
+++ b/web/pgadmin/tools/psql/tests/psql_test_data.json
@@ -0,0 +1,184 @@
+{
+ "psql_user_input": [
+ {
+ "name": "Enter Select 1;",
+ "is_positive_test": true,
+ "mocking_required": false,
+ "input_cmd": "select 1;",
+ "mock_data": {
+
+ },
+ "expected_data": {
+ }
+ },
+ {
+ "name": "Enter Backspace",
+ "is_positive_test": true,
+ "mocking_required": false,
+ "input_cmd": "select 1;",
+ "is_backspace": true,
+ "mock_data": {
+
+ },
+ "expected_data": {
+ }
+ },{
+ "name": "Enter Backspace",
+ "is_positive_test": true,
+ "mocking_required": false,
+ "input_cmd": "select 1;",
+ "is_backspace": true,
+ "move_cursor_up": true,
+ "mock_data": {
+
+ },
+ "expected_data": {
+ }
+ },
+ {
+ "name": "Enter ArrowUp",
+ "is_positive_test": true,
+ "mocking_required": false,
+ "input_cmd": "select 1;",
+ "is_arrowUp": true,
+ "mock_data": {
+
+ },
+ "expected_data": {
+ }
+ },
+ {
+ "name": "Enter ArrowUp",
+ "is_positive_test": true,
+ "mocking_required": false,
+ "input_cmd": "select 1;",
+ "is_arrowUp": true,
+ "is_history": true,
+ "mock_data": {
+
+ },
+ "expected_data": {
+ }
+ },
+ {
+ "name": "Enter ArrowLeft",
+ "is_positive_test": true,
+ "mocking_required": false,
+ "input_cmd": "select 1;",
+ "is_arrowLeft": true,
+ "mock_data": {
+
+ },
+ "expected_data": {
+ }
+ },
+ {
+ "name": "Enter ArrowRight",
+ "is_positive_test": true,
+ "mocking_required": false,
+ "input_cmd": "select 1;",
+ "is_arrowRight": true,
+ "mock_data": {
+
+ },
+ "expected_data": {
+ }
+ },{
+ "name": "Read previous executed command",
+ "is_positive_test": true,
+ "mocking_required": false,
+ "input_cmd": "select 1;",
+ "is_arrowRight": true,
+ "move_cursor_right": true,
+ "mock_data": {
+
+ },
+ "expected_data": {
+ }
+ },
+ {
+ "name": "Meta command \\! not allowed",
+ "is_positive_test": true,
+ "mocking_required": false,
+ "input_cmd": "\\!",
+ "mock_data": {
+
+ },
+ "expected_data": {
+ }
+ },
+ {
+ "name": "Meta command \\! with other cmd not allowed",
+ "is_positive_test": true,
+ "mocking_required": false,
+ "input_cmd": "\\! ls",
+ "mock_data": {
+
+ },
+ "expected_data": {
+ }
+ },
+ {
+ "name": "Valid commands",
+ "is_positive_test": true,
+ "mocking_required": false,
+ "input_cmd": "select \"\\!\"",
+ "mock_data": {
+
+ },
+ "expected_data": {
+ }
+ },{
+ "name": "First command as enter",
+ "is_positive_test": true,
+ "mocking_required": false,
+ "input_cmd": "",
+ "mock_data": {
+
+ },
+ "expected_data": {
+ }
+ },
+ {
+ "name": "Exist psql terminal by using \\q",
+ "is_positive_test": true,
+ "mocking_required": false,
+ "input_cmd": "\\q",
+ "mock_data": {
+
+ },
+ "expected_data": {
+ }
+ }
+ ],
+ "resize_terminal": [
+ {
+ "name": "Resize psql terminal as per UI.",
+ "is_positive_test": true,
+ "mocking_required": false,
+ "input_data": {
+ "cols": 141,
+ "rows": 39
+ },
+ "mock_data": {
+
+ },
+ "expected_data": {
+ }
+ }
+ ],
+ "backend_task": [
+ {
+ "name": "Backend Task",
+ "is_positive_test": true,
+ "mocking_required": false,
+ "input_cmd": "Select 1;",
+ "is_backend_task": true,
+ "mock_data": {
+ "is_test": true
+ },
+ "expected_data": {
+ }
+ }
+ ]
+}
diff --git a/web/pgadmin/tools/psql/tests/test_backend_task.py b/web/pgadmin/tools/psql/tests/test_backend_task.py
new file mode 100644
index 00000000..a4f14ee4
--- /dev/null
+++ b/web/pgadmin/tools/psql/tests/test_backend_task.py
@@ -0,0 +1,87 @@
+import uuid
+import config
+from pgadmin.utils.route import BaseTestGenerator
+from regression.python_test_utils import test_utils as utils
+from regression import parent_node_dict
+from regression.test_setup import config_data
+from pgadmin.utils import server_utils as server_utils
+from pgAdmin4 import app
+from . import utils as psql_utils
+from .... import socketio
+
+
+class PSQLBackend(BaseTestGenerator):
+ scenarios = utils.generate_scenarios('backend_task',
+ psql_utils.test_cases)
+
+ def setUp(self):
+ self.db_name = "psqltestdb_{0}".format(str(uuid.uuid4())[1:8])
+ database_info = parent_node_dict["database"][-1]
+ self.did = database_info["db_id"]
+ self.sid = parent_node_dict["server"][-1]["server_id"]
+ self.sgid = config_data["server_group"]
+ config.ENABLE_PSQL = True
+ self.server_con = server_utils.connect_server(self, self.sid)
+
+ def runTest(self):
+ # Fetch flask client to access current user and other cookies.
+ flask_client = app.test_client()
+ flask_client.get('/')
+ self.test_client = socketio.test_client(app, namespace='/pty',
+ flask_test_client=flask_client)
+ self.assertTrue(self.test_client.is_connected('/pty'))
+ received = self.test_client.get_received('/pty')
+
+ assert received[0]['name'] == 'connected'
+ assert received[0]['args'][0]['sid'] != ''
+
+ data = {
+ 'sid': self.sid,
+ 'db': 'postgres',
+ 'pwd': self.server['db_password'],
+ 'user': self.server['username'],
+ 'is_test': True,
+ 'count': 0
+ }
+
+ self.test_client.emit('start_process', data, namespace='/pty')
+ self.test_client.get_received('/pty')
+
+ for p in self.server['db_password']:
+ input_data = {
+ 'input': p,
+ 'key_name': 'Key{0}'.format(p)
+ }
+ self.test_client.emit('socket_input', input_data, namespace='/pty')
+ self.test_client.get_received('/pty')
+
+ input_data = {
+ 'input': '\\n',
+ 'key_name': 'Enter'
+ }
+ self.test_client.emit('socket_input', input_data, namespace='/pty')
+ self.test_client.get_received('/pty')
+
+ for ip in self.input_cmd:
+ input_data = {
+ 'input': ip,
+ 'key_name': 'Key{0}'.format(ip)
+ }
+ self.test_client.emit('socket_input', input_data, namespace='/pty')
+ self.test_client.get_received('/pty')
+
+ input_data = {
+ 'input': '\\n',
+ 'key_name': 'Enter'
+ }
+ self.test_client.emit('socket_input', input_data, namespace='/pty')
+ self.test_client.get_received('/pty')
+ self.test_client.disconnect(namespace='/pty')
+
+ def tearDown(self):
+ connection = utils.get_db_connection(self.server['db'],
+ self.server['username'],
+ self.server['db_password'],
+ self.server['host'],
+ self.server['port'])
+ utils.drop_database(connection, self.db_name)
diff --git a/web/pgadmin/tools/psql/tests/test_panel.py b/web/pgadmin/tools/psql/tests/test_panel.py
new file mode 100644
index 00000000..6f93c8c2
--- /dev/null
+++ b/web/pgadmin/tools/psql/tests/test_panel.py
@@ -0,0 +1,36 @@
+import uuid
+import random
+from pgadmin.utils.route import BaseTestGenerator
+from regression.python_test_utils import test_utils as utils
+from regression import parent_node_dict
+from regression.test_setup import config_data
+
+
+class PSQLPanel(BaseTestGenerator):
+
+ def setUp(self):
+ self.db_name = "psqltestdb_{0}".format(str(uuid.uuid4())[1:8])
+ self.sid = parent_node_dict["server"][-1]["server_id"]
+ self.did = utils.create_database(self.server, self.db_name)
+ self.sgid = config_data["server_group"]
+ self.theme = 'standard'
+
+ def runTest(self):
+ trans_id = random.randint(1, 9999999)
+ url = '/psql/panel/{trans_id}?sgid={sgid}&sid={sid}&server_type=pg' \
+ '&db={db_name}&theme={theme}'.\
+ format(trans_id=trans_id, sgid=self.sgid, sid=self.sid,
+ db_name=self.db_name, theme=self.theme)
+
+ response = self.tester.post(
+ url, data={"title": "panel_title"},
+ content_type="application/x-www-form-urlencoded")
+ self.assertEqual(response.status_code, 200)
+
+ def tearDown(self):
+ connection = utils.get_db_connection(self.server['db'],
+ self.server['username'],
+ self.server['db_password'],
+ self.server['host'],
+ self.server['port'])
+ utils.drop_database(connection, self.db_name)
diff --git a/web/pgadmin/tools/psql/tests/test_psql_disabled.py b/web/pgadmin/tools/psql/tests/test_psql_disabled.py
new file mode 100644
index 00000000..7dc52498
--- /dev/null
+++ b/web/pgadmin/tools/psql/tests/test_psql_disabled.py
@@ -0,0 +1,34 @@
+import uuid
+import config
+from pgadmin.utils.route import BaseTestGenerator
+from regression.python_test_utils import test_utils as utils
+from regression import parent_node_dict
+from regression.test_setup import config_data
+from pgAdmin4 import app
+from .... import socketio
+
+
+class PSQLSocketDisabled(BaseTestGenerator):
+ def setUp(self):
+ self.db_name = "psqltestdb_{0}".format(str(uuid.uuid4())[1:8])
+ self.sid = parent_node_dict["server"][-1]["server_id"]
+ self.did = utils.create_database(self.server, self.db_name)
+ self.sgid = config_data["server_group"]
+ config.ENABLE_PSQL = False
+
+ def runTest(self):
+ self.test_client = socketio.test_client(app, namespace='/pty')
+ self.assertTrue(self.test_client.is_connected('/pty'))
+ received = self.test_client.get_received('/pty')
+
+ assert received[0]['name'] == 'conn_not_allow'
+ self.test_client.disconnect(namespace='/pty')
+ self.assertFalse(self.test_client.is_connected('/pty'))
+
+ def tearDown(self):
+ connection = utils.get_db_connection(self.server['db'],
+ self.server['username'],
+ self.server['db_password'],
+ self.server['host'],
+ self.server['port'])
+ utils.drop_database(connection, self.db_name)
diff --git a/web/pgadmin/tools/psql/tests/test_psql_input.py b/web/pgadmin/tools/psql/tests/test_psql_input.py
new file mode 100644
index 00000000..6f6eabe7
--- /dev/null
+++ b/web/pgadmin/tools/psql/tests/test_psql_input.py
@@ -0,0 +1,148 @@
+import uuid
+import config
+from pgadmin.utils.route import BaseTestGenerator
+from regression.python_test_utils import test_utils as utils
+from regression import parent_node_dict
+from regression.test_setup import config_data
+from pgadmin.utils import server_utils as server_utils
+from pgAdmin4 import app
+from . import utils as psql_utils
+from .... import socketio
+
+
+class PSQLInput(BaseTestGenerator):
+ scenarios = utils.generate_scenarios('psql_user_input',
+ psql_utils.test_cases)
+
+ def setUp(self):
+ self.db_name = "psqltestdb_{0}".format(str(uuid.uuid4())[1:8])
+ database_info = parent_node_dict["database"][-1]
+ self.did = database_info["db_id"]
+ self.sid = parent_node_dict["server"][-1]["server_id"]
+ self.sgid = config_data["server_group"]
+ config.ENABLE_PSQL = True
+ self.server_con = server_utils.connect_server(self, self.sid)
+
+ def runTest(self):
+ # Fetch flask client to access current user and other cookies.
+ flask_client = app.test_client()
+ flask_client.get('/')
+ self.test_client = socketio.test_client(app, namespace='/pty',
+ flask_test_client=flask_client)
+ self.assertTrue(self.test_client.is_connected('/pty'))
+ received = self.test_client.get_received('/pty')
+
+ assert received[0]['name'] == 'connected'
+ assert received[0]['args'][0]['sid'] != ''
+
+ data = {
+ 'sid': self.sid,
+ 'db': 'postgres',
+ 'pwd': self.server['db_password'],
+ 'user': self.server['username']
+ }
+
+ self.test_client.emit('start_process', data, namespace='/pty')
+ self.test_client.get_received('/pty')
+
+ input_data = {
+ 'input': '\\n',
+ 'key_name': 'Enter'
+ }
+ self.test_client.emit('socket_input', input_data, namespace='/pty')
+ self.test_client.get_received('/pty')
+
+ for ip in self.input_cmd:
+ input_data = {
+ 'input': ip,
+ 'key_name': 'Key{0}'.format(ip)
+ }
+ self.test_client.emit('socket_input', input_data, namespace='/pty')
+ self.test_client.get_received('/pty')
+
+ if hasattr(self, 'is_backspace') and self.is_backspace:
+ if hasattr(self, 'move_cursor_up') and self.move_cursor_up:
+ input_data = {
+ 'input': '',
+ 'key_name': 'ArrowUp'
+ }
+ self.test_client.emit('socket_input', input_data,
+ namespace='/pty')
+
+ for ip in self.input_cmd:
+ input_data = {
+ 'input': ip,
+ 'key_name': 'Backspace'
+ }
+ self.test_client.emit('socket_input', input_data,
+ namespace='/pty')
+ self.test_client.get_received('/pty')
+
+ if hasattr(self, 'is_arrowUp') and self.is_arrowUp:
+ if hasattr(self, 'is_history') and self.is_history:
+ for ip in self.input_cmd:
+ input_data = {
+ 'input': ip,
+ 'key_name': 'Key{0}'.format(ip)
+ }
+ self.test_client.emit('socket_input', input_data,
+ namespace='/pty')
+ self.test_client.get_received('/pty')
+
+ input_data = {
+ 'input': '',
+ 'key_name': 'ArrowUp'
+ }
+ self.test_client.emit('socket_input', input_data,
+ namespace='/pty')
+ self.test_client.get_received('/pty')
+
+ if hasattr(self, 'is_arrowLeft') and self.is_arrowLeft:
+ for ip in self.input_cmd:
+ input_data = {
+ 'input': ip,
+ 'key_name': 'ArrowLeft'
+ }
+ self.test_client.emit('socket_input', input_data,
+ namespace='/pty')
+ self.test_client.get_received('/pty')
+
+ if hasattr(self, 'is_arrowRight') and self.is_arrowRight:
+ for ip in self.input_cmd:
+ input_data = {
+ 'input': ip,
+ 'key_name': 'ArrowRight'
+ }
+ self.test_client.emit('socket_input', input_data,
+ namespace='/pty')
+ self.test_client.get_received('/pty')
+
+ if hasattr(self, 'move_cursor_right') and self.is_arrowRight:
+ for i in range(2):
+ input_data = {
+ 'input': '',
+ 'key_name': 'ArrowLeft'
+ }
+ self.test_client.emit('socket_input', input_data,
+ namespace='/pty')
+ input_data = {
+ 'input': '',
+ 'key_name': 'ArrowRight'
+ }
+ self.test_client.emit('socket_input', input_data,
+ namespace='/pty')
+
+ input_data = {
+ 'input': '\\n',
+ 'key_name': 'Enter'
+ }
+ self.test_client.emit('socket_input', input_data, namespace='/pty')
+ self.test_client.get_received('/pty')
+
+ def tearDown(self):
+ connection = utils.get_db_connection(self.server['db'],
+ self.server['username'],
+ self.server['db_password'],
+ self.server['host'],
+ self.server['port'])
+ utils.drop_database(connection, self.db_name)
diff --git a/web/pgadmin/tools/psql/tests/test_resize_terminal.py b/web/pgadmin/tools/psql/tests/test_resize_terminal.py
new file mode 100644
index 00000000..d305c2d0
--- /dev/null
+++ b/web/pgadmin/tools/psql/tests/test_resize_terminal.py
@@ -0,0 +1,58 @@
+import uuid
+import config
+from pgadmin.utils.route import BaseTestGenerator
+from regression.python_test_utils import test_utils as utils
+from regression import parent_node_dict
+from regression.test_setup import config_data
+from pgadmin.utils import server_utils as server_utils
+from pgAdmin4 import app
+from . import utils as psql_utils
+from .... import socketio
+
+
+class PSQLResizeTerminal(BaseTestGenerator):
+ scenarios = utils.generate_scenarios('resize_terminal',
+ psql_utils.test_cases)
+
+ def setUp(self):
+ self.db_name = "psqltestdb_{0}".format(str(uuid.uuid4())[1:8])
+ database_info = parent_node_dict["database"][-1]
+ self.did = database_info["db_id"]
+ self.sid = parent_node_dict["server"][-1]["server_id"]
+ self.sgid = config_data["server_group"]
+ config.ENABLE_PSQL = True
+ self.server_con = server_utils.connect_server(self, self.sid)
+
+ def runTest(self):
+ # Fetch flask client to access current user and other cookies.
+ flask_client = app.test_client()
+ flask_client.get('/')
+ self.test_client = socketio.test_client(app, namespace='/pty',
+ flask_test_client=flask_client)
+ self.assertTrue(self.test_client.is_connected('/pty'))
+ received = self.test_client.get_received('/pty')
+
+ assert received[0]['name'] == 'connected'
+ assert received[0]['args'][0]['sid'] != ''
+
+ data = {
+ 'sid': self.sid,
+ 'db': 'postgres',
+ 'pwd': self.server['db_password'],
+ 'user': self.server['username']
+ }
+
+ self.test_client.emit('start_process', data, namespace='/pty')
+ self.test_client.get_received('/pty')
+
+ self.test_client.emit('resize', self.input_data, namespace='/pty')
+
+ self.test_client.disconnect(namespace='/pty')
+
+ def tearDown(self):
+ connection = utils.get_db_connection(self.server['db'],
+ self.server['username'],
+ self.server['db_password'],
+ self.server['host'],
+ self.server['port'])
+ utils.drop_database(connection, self.db_name)
diff --git a/web/pgadmin/tools/psql/tests/test_socket_connect.py b/web/pgadmin/tools/psql/tests/test_socket_connect.py
new file mode 100644
index 00000000..3791525a
--- /dev/null
+++ b/web/pgadmin/tools/psql/tests/test_socket_connect.py
@@ -0,0 +1,35 @@
+import uuid
+import config
+from pgadmin.utils.route import BaseTestGenerator
+from regression.python_test_utils import test_utils as utils
+from regression import parent_node_dict
+from regression.test_setup import config_data
+from pgAdmin4 import app
+from .... import socketio
+
+
+class PSQLSocketConnect(BaseTestGenerator):
+ def setUp(self):
+ self.db_name = "psqltestdb_{0}".format(str(uuid.uuid4())[1:8])
+ self.sid = parent_node_dict["server"][-1]["server_id"]
+ self.did = utils.create_database(self.server, self.db_name)
+ self.sgid = config_data["server_group"]
+ config.ENABLE_PSQL = True
+
+ def runTest(self):
+ self.test_client = socketio.test_client(app, namespace='/pty')
+ self.assertTrue(self.test_client.is_connected('/pty'))
+ received = self.test_client.get_received('/pty')
+
+ assert received[0]['name'] == 'connected'
+ assert received[0]['args'][0]['sid'] != ''
+ self.test_client.disconnect(namespace='/pty')
+ self.assertFalse(self.test_client.is_connected('/pty'))
+
+ def tearDown(self):
+ connection = utils.get_db_connection(self.server['db'],
+ self.server['username'],
+ self.server['db_password'],
+ self.server['host'],
+ self.server['port'])
+ utils.drop_database(connection, self.db_name)
diff --git a/web/pgadmin/tools/psql/tests/test_socket_disconnect.py b/web/pgadmin/tools/psql/tests/test_socket_disconnect.py
new file mode 100644
index 00000000..0619eb30
--- /dev/null
+++ b/web/pgadmin/tools/psql/tests/test_socket_disconnect.py
@@ -0,0 +1,52 @@
+import uuid
+import config
+from pgadmin.utils.route import BaseTestGenerator
+from regression.python_test_utils import test_utils as utils
+from regression import parent_node_dict
+from regression.test_setup import config_data
+from pgAdmin4 import app
+from .... import socketio
+
+
+class PSQLSocketDisconnect(BaseTestGenerator):
+ def setUp(self):
+ self.db_name = "psqltestdb_{0}".format(str(uuid.uuid4())[1:8])
+ self.sid = parent_node_dict["server"][-1]["server_id"]
+ self.did = utils.create_database(self.server, self.db_name)
+ self.sgid = config_data["server_group"]
+ config.ENABLE_PSQL = True
+
+ def runTest(self):
+ # Fetch flask client to access current user and other cookies.
+ flask_test_client = app.test_client()
+ flask_test_client.get('/')
+
+ self.test_client = socketio.test_client(
+ app,
+ flask_test_client=flask_test_client,
+ namespace='/pty')
+ self.assertTrue(self.test_client.is_connected('/pty'))
+ received = self.test_client.get_received('/pty')
+
+ assert received[0]['name'] == 'connected'
+ assert received[0]['args'][0]['sid'] != ''
+
+ data = {
+ 'sid': self.sid,
+ 'db': 'postgres',
+ 'pwd': self.server['db_password'],
+ 'user': self.server['username']
+ }
+
+ self.test_client.emit('start_process', data, namespace='/pty')
+ self.test_client.get_received('/pty')
+
+ self.test_client.disconnect(namespace='/pty')
+
+ def tearDown(self):
+ connection = utils.get_db_connection(self.server['db'],
+ self.server['username'],
+ self.server['db_password'],
+ self.server['host'],
+ self.server['port'])
+ utils.drop_database(connection, self.db_name)
diff --git a/web/pgadmin/tools/psql/tests/test_start_process.py b/web/pgadmin/tools/psql/tests/test_start_process.py
new file mode 100644
index 00000000..1245de3f
--- /dev/null
+++ b/web/pgadmin/tools/psql/tests/test_start_process.py
@@ -0,0 +1,57 @@
+import uuid
+import config
+from pgadmin.utils.route import BaseTestGenerator
+from regression.python_test_utils import test_utils as utils
+from regression import parent_node_dict
+from regression.test_setup import config_data
+from pgadmin.utils import server_utils as server_utils
+from pgAdmin4 import app
+from .... import socketio
+
+
+class PSQLStartProcess(BaseTestGenerator):
+ def setUp(self):
+ self.db_name = "psqltestdb_{0}".format(str(uuid.uuid4())[1:8])
+ database_info = parent_node_dict["database"][-1]
+ self.did = database_info["db_id"]
+ self.sid = parent_node_dict["server"][-1]["server_id"]
+ self.sgid = config_data["server_group"]
+ config.ENABLE_PSQL = True
+
+ self.server_con = server_utils.connect_server(self, self.sid)
+
+ def runTest(self):
+ # Fetch flask client to access current user and other cookies.
+ flask_client = app.test_client()
+ flask_client.get('/')
+ self.test_client = socketio.test_client(app, namespace='/pty',
+ flask_test_client=flask_client)
+ self.assertTrue(self.test_client.is_connected('/pty'))
+ received = self.test_client.get_received('/pty')
+
+ assert received[0]['name'] == 'connected'
+ assert received[0]['args'][0]['sid'] != ''
+
+ import random
+ trans_id = random.randint(1, 9999999)
+
+ data = {
+ 'sid': self.sid,
+ 'db': 'postgres',
+ 'pwd': self.server['db_password'],
+ 'user': self.server['username']
+ }
+
+ self.test_client.emit('start_process', data, namespace='/pty')
+ self.test_client.get_received('/pty')
+
+ self.test_client.disconnect(namespace='/pty')
+ self.assertFalse(self.test_client.is_connected('/pty'))
+
+ def tearDown(self):
+ connection = utils.get_db_connection(self.server['db'],
+ self.server['username'],
+ self.server['db_password'],
+ self.server['host'],
+ self.server['port'])
+ utils.drop_database(connection, self.db_name)
diff --git a/web/pgadmin/tools/psql/tests/test_start_process_fail.py b/web/pgadmin/tools/psql/tests/test_start_process_fail.py
new file mode 100644
index 00000000..0acc7be2
--- /dev/null
+++ b/web/pgadmin/tools/psql/tests/test_start_process_fail.py
@@ -0,0 +1,48 @@
+import uuid
+import config
+from pgadmin.utils.route import BaseTestGenerator
+from regression.python_test_utils import test_utils as utils
+from regression import parent_node_dict
+from regression.test_setup import config_data
+from pgAdmin4 import app
+from .... import socketio
+
+
+class PSQLStartProcessFail(BaseTestGenerator):
+ def setUp(self):
+ self.db_name = "psqltestdb_{0}".format(str(uuid.uuid4())[1:8])
+ self.sid = parent_node_dict["server"][-1]["server_id"]
+ self.did = utils.create_database(self.server, self.db_name)
+ self.sgid = config_data["server_group"]
+ config.ENABLE_PSQL = True
+
+ def runTest(self):
+ self.test_client = socketio.test_client(app, namespace='/pty')
+ self.assertTrue(self.test_client.is_connected('/pty'))
+ received = self.test_client.get_received('/pty')
+
+ assert received[0]['name'] == 'connected'
+ assert received[0]['args'][0]['sid'] != ''
+
+ data = {
+ 'sid': self.sid,
+ 'db': 'postgres',
+ 'pwd': self.server['db_password'],
+ 'user': self.server['username']
+ }
+ config.ENABLE_PSQL = False
+ self.test_client.emit('start_process', data, namespace='/pty')
+ received = self.test_client.get_received('/pty')
+
+ assert received[0]['name'] == 'conn_not_allow'
+
+ self.test_client.disconnect(namespace='/pty')
+ self.assertFalse(self.test_client.is_connected('/pty'))
+
+ def tearDown(self):
+ connection = utils.get_db_connection(self.server['db'],
+ self.server['username'],
+ self.server['db_password'],
+ self.server['host'],
+ self.server['port'])
+ utils.drop_database(connection, self.db_name)
diff --git a/web/pgadmin/tools/psql/tests/utils.py b/web/pgadmin/tools/psql/tests/utils.py
new file mode 100644
index 00000000..85bd5373
--- /dev/null
+++ b/web/pgadmin/tools/psql/tests/utils.py
@@ -0,0 +1,6 @@
+import os
+import json
+
+CURRENT_PATH = os.path.dirname(os.path.realpath(__file__))
+with open(CURRENT_PATH + "/psql_test_data.json") as data_file:
+ test_cases = json.load(data_file)
diff --git a/web/pgadmin/tools/sqleditor/static/scss/_sqleditor.scss b/web/pgadmin/tools/sqleditor/static/scss/_sqleditor.scss
index 0bb40802..a58eb7e9 100644
--- a/web/pgadmin/tools/sqleditor/static/scss/_sqleditor.scss
+++ b/web/pgadmin/tools/sqleditor/static/scss/_sqleditor.scss
@@ -374,3 +374,20 @@ div.strikeout:after {
/* Setting it to hardcoded white as the SVG generated is having white bg
* Need to check what can be done.
*/
+
+/* Css for psql */
+.psql_terminal .terminal {
+ padding-top: 1%;
+ padding-left: 0.5%;
+ height: 100%;
+}
+
+.psql-icon-style {
+ font-size: inherit;
+ padding-left: 0em;
+}
+
+.psql-tab-style {
+ font-size: small;
+ padding-left: 0em;
+}
diff --git a/web/pgadmin/utils/csrf.py b/web/pgadmin/utils/csrf.py
index 23abfffa..71ae82ea 100644
--- a/web/pgadmin/utils/csrf.py
+++ b/web/pgadmin/utils/csrf.py
@@ -38,6 +38,7 @@ class _PGCSRFProtect(CSRFProtect):
'pgadmin.tools.schema_diff.ddl_compare',
'pgadmin.authenticate.login',
'pgadmin.tools.erd.panel',
+ 'pgadmin.tools.psql.panel',
]
for exempt in exempt_views:
diff --git a/web/pgadmin/utils/preferences.py b/web/pgadmin/utils/preferences.py
index 15ceeb1a..e9efe479 100644
--- a/web/pgadmin/utils/preferences.py
+++ b/web/pgadmin/utils/preferences.py
@@ -72,6 +72,7 @@ class _Preference(object):
self.select2 = kwargs.get('select2', None)
self.fields = kwargs.get('fields', None)
self.allow_blanks = kwargs.get('allow_blanks', None)
+ self.disabled = kwargs.get('disabled', False)
# Look into the configuration table to find out the id of the specific
# preference.
@@ -252,6 +253,7 @@ class _Preference(object):
'select2': self.select2,
'value': self.get(),
'fields': self.fields,
+ 'disabled': self.disabled,
}
return res
@@ -414,6 +416,7 @@ class Preferences(object):
:param fields: field schema (if preference has more than one field to
take input from user e.g. keyboardshortcut preference)
:param allow_blanks: Flag specify whether to allow blank value.
+ :param disabled: Flag specify whether to disable the setting or not.
"""
min_val = kwargs.get('min_val', None)
max_val = kwargs.get('max_val', None)
@@ -423,6 +426,7 @@ class Preferences(object):
select2 = kwargs.get('select2', None)
fields = kwargs.get('fields', None)
allow_blanks = kwargs.get('allow_blanks', None)
+ disabled = kwargs.get('disabled', False)
cat = self.__category(category, category_label)
if name in cat['preferences']:
@@ -439,7 +443,8 @@ class Preferences(object):
(cat['preferences'])[name] = res = _Preference(
cat['id'], name, label, _type, default, help_str=help_str,
min_val=min_val, max_val=max_val, options=options,
- select2=select2, fields=fields, allow_blanks=allow_blanks
+ select2=select2, fields=fields, allow_blanks=allow_blanks,
+ disabled=disabled
)
return res
diff --git a/web/webpack.config.js b/web/webpack.config.js
index 779f2faa..f631178b 100644
--- a/web/webpack.config.js
+++ b/web/webpack.config.js
@@ -355,6 +355,7 @@ module.exports = [{
debugger_direct: './pgadmin/tools/debugger/static/js/direct.js',
schema_diff: './pgadmin/tools/schema_diff/static/js/schema_diff_hook.js',
erd_tool: './pgadmin/tools/erd/static/js/erd_tool_hook.js',
+ psql_tool: './pgadmin/tools/psql/static/js/index.js',
file_utils: './pgadmin/misc/file_manager/static/js/utility.js',
'pgadmin.style': pgadminCssStyles,
pgadmin: pgadminScssStyles,
@@ -493,7 +494,7 @@ module.exports = [{
],
},
},
- }, {
+ },{
test: require.resolve('./node_modules/acitree/js/jquery.aciTree.min'),
use: {
loader: 'imports-loader',
@@ -532,6 +533,7 @@ module.exports = [{
'pure|pgadmin.tools.storage_manager',
'pure|pgadmin.tools.search_objects',
'pure|pgadmin.tools.erd_module',
+ 'pure|pgadmin.tools.psql_module',
],
},
},
diff --git a/web/webpack.shim.js b/web/webpack.shim.js
index 074b2580..e0b28091 100644
--- a/web/webpack.shim.js
+++ b/web/webpack.shim.js
@@ -159,6 +159,15 @@ var webpackShimConfig = {
'jquery.acisortable': path.join(__dirname, './node_modules/acitree/js/jquery.aciSortable.min'),
'jquery.acifragment': path.join(__dirname, './node_modules/acitree/js/jquery.aciFragment.min'),
+ //xterm
+ 'xterm': path.join(__dirname, './node_modules/xterm/lib/xterm.js'),
+ 'xterm-addon-fit': path.join(__dirname, './node_modules/xterm-addon-fit/lib/xterm-addon-fit.js'),
+ 'xterm-addon-web-links': path.join(__dirname, './node_modules/xterm-addon-web-links/lib/xterm-addon-web-links.js'),
+ 'xterm-addon-search': path.join(__dirname, './node_modules/xterm-addon-search/lib/xterm-addon-search.js'),
+
+ //socket
+ 'socketio': path.join(__dirname, './node_modules/socket.io-client/dist/socket.io.js'),
+
// Backbone and Backgrid
'backbone': path.join(__dirname, './node_modules/backbone/backbone'),
'backbone.undo': path.join(__dirname, './node_modules/backbone-undo/Backbone.Undo'),
@@ -288,6 +297,8 @@ var webpackShimConfig = {
'pgadmin.tools.storage_manager': path.join(__dirname, './pgadmin/tools/storage_manager/static/js/storage_manager'),
'pgadmin.tools.erd_module': path.join(__dirname, './pgadmin/tools/erd/static/js/erd_module'),
'pgadmin.tools.erd': path.join(__dirname, './pgadmin/tools/erd/static/js'),
+ 'pgadmin.tools.psql_module': path.join(__dirname, './pgadmin/tools/psql/static/js/psql_module'),
+ 'pgadmin.tools.psql': path.join(__dirname, './pgadmin/tools/psql/static/js'),
'pgadmin.search_objects': path.join(__dirname, './pgadmin/tools/search_objects/static/js'),
'pgadmin.tools.user_management': path.join(__dirname, './pgadmin/tools/user_management/static/js/user_management'),
'pgadmin.user_management.current_user': '/user_management/current_user',
diff --git a/web/webpack.test.config.js b/web/webpack.test.config.js
index e0b6fd69..3cc079f9 100644
--- a/web/webpack.test.config.js
+++ b/web/webpack.test.config.js
@@ -177,6 +177,7 @@ module.exports = {
'pgadmin.browser.preferences': path.join(__dirname, './pgadmin/browser/static/js/preferences'),
'pgadmin.browser.activity': path.join(__dirname, './pgadmin/browser/static/js/activity'),
'pgadmin.tools.erd': path.join(__dirname, './pgadmin/tools/erd/static/js'),
+ 'pgadmin.tools.psql': path.join(__dirname, './pgadmin/tools/psql/static/js'),
'bundled_codemirror': path.join(__dirname, './pgadmin/static/bundle/codemirror'),
'tools': path.join(__dirname, './pgadmin/tools/'),
'pgadmin.user_management.current_user': regressionDir + '/javascript/fake_current_user',
view thread (54+ messages) latest in thread
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected], [email protected], [email protected]
Subject: Re: [pgAdmin][RM-2341]: Add menu option for starting PSQL
In-Reply-To: <CAOBg0AO6A10OHiQAOOguagW1mNzfK1oVPHG9W+JSCkYjR+xQkA@mail.gmail.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox