From 82a93f3ab6992f3039f67aa2d5334b70a1270a75 Mon Sep 17 00:00:00 2001
From: Fabien Lelaquais <86590727+FabienLelaquais@users.noreply.github.com>
Date: Thu, 28 Nov 2024 14:22:32 +0100
Subject: [PATCH] - Added Filtering, Sorting and Searching section in the
Scenario Selector doc page. (#1220)
- Added actual MUI icons to be used in the doc body text (added to the table control doc page).
- Tiny doc adjustement in the metric control formatting paragraph.
- Tiny doc change in the toggle control.
- Force UTF-8 encoding in Markdown generation.
- Release Notes updated.
---
.gitignore | 1 +
.../corelements/data_node.md_template | 31 +-
.../data_node_selector.md_template | 78 ++----
.../scenario_selector-create-d.png | Bin 49179 -> 19899 bytes
.../scenario_selector-create-l.png | Bin 49084 -> 19346 bytes
.../scenario_selector-filled-d.png | Bin 53455 -> 0 bytes
.../scenario_selector-filled-l.png | Bin 54142 -> 0 bytes
.../scenario_selector-filter1-d.png | Bin 0 -> 35598 bytes
.../scenario_selector-filter1-l.png | Bin 0 -> 36172 bytes
.../scenario_selector-filter2-d.png | Bin 0 -> 4542 bytes
.../scenario_selector-filter2-l.png | Bin 0 -> 4274 bytes
.../scenario_selector-filter3-d.png | Bin 0 -> 25193 bytes
.../scenario_selector-filter3-l.png | Bin 0 -> 27313 bytes
.../scenario_selector-filter4-d.png | Bin 0 -> 5050 bytes
.../scenario_selector-filter4-l.png | Bin 0 -> 5249 bytes
.../scenario_selector-filter5-d.png | Bin 0 -> 21417 bytes
.../scenario_selector-filter5-l.png | Bin 0 -> 22063 bytes
.../corelements/scenario_selector-init1-d.png | Bin 0 -> 29896 bytes
.../corelements/scenario_selector-init1-l.png | Bin 0 -> 30738 bytes
.../scenario_selector-search1-d.png | Bin 0 -> 27107 bytes
.../scenario_selector-search1-l.png | Bin 0 -> 27758 bytes
.../scenario_selector-search2-d.png | Bin 0 -> 11956 bytes
.../scenario_selector-search2-l.png | Bin 0 -> 12109 bytes
.../corelements/scenario_selector-sort1-d.png | Bin 0 -> 25714 bytes
.../corelements/scenario_selector-sort1-l.png | Bin 0 -> 26858 bytes
.../corelements/scenario_selector-sort2-d.png | Bin 0 -> 3391 bytes
.../corelements/scenario_selector-sort2-l.png | Bin 0 -> 4435 bytes
.../corelements/scenario_selector-sort3-d.png | Bin 0 -> 3833 bytes
.../corelements/scenario_selector-sort3-l.png | Bin 0 -> 3834 bytes
.../corelements/scenario_selector-sort4-d.png | Bin 0 -> 25800 bytes
.../corelements/scenario_selector-sort4-l.png | Bin 0 -> 26426 bytes
.../corelements/scenario_selector.md_template | 265 +++++++++++++++---
.../viselements/generic/metric.md_template | 13 +-
.../gui/viselements/generic/table.md_template | 93 +++---
docs/refmans/gui/viselements/mui-icons.svg | 66 -----
docs/release-notes/index.md | 17 +-
.../dynamic_element/tabular_data_props.md | 228 +++++++++++++++
docs/userman/gui/extension/extension_data.md | 219 ++++++++++++++-
tools/_setup_generation/setup.py | 2 +
tools/_setup_generation/step_mui_icons.py | 112 ++++++++
tools/_setup_generation/step_viselements.py | 39 ++-
tools/fetch_source_files.py | 98 ++-----
tools/postprocess.py | 32 ++-
43 files changed, 971 insertions(+), 323 deletions(-)
delete mode 100644 docs/refmans/gui/viselements/corelements/scenario_selector-filled-d.png
delete mode 100644 docs/refmans/gui/viselements/corelements/scenario_selector-filled-l.png
create mode 100644 docs/refmans/gui/viselements/corelements/scenario_selector-filter1-d.png
create mode 100644 docs/refmans/gui/viselements/corelements/scenario_selector-filter1-l.png
create mode 100644 docs/refmans/gui/viselements/corelements/scenario_selector-filter2-d.png
create mode 100644 docs/refmans/gui/viselements/corelements/scenario_selector-filter2-l.png
create mode 100644 docs/refmans/gui/viselements/corelements/scenario_selector-filter3-d.png
create mode 100644 docs/refmans/gui/viselements/corelements/scenario_selector-filter3-l.png
create mode 100644 docs/refmans/gui/viselements/corelements/scenario_selector-filter4-d.png
create mode 100644 docs/refmans/gui/viselements/corelements/scenario_selector-filter4-l.png
create mode 100644 docs/refmans/gui/viselements/corelements/scenario_selector-filter5-d.png
create mode 100644 docs/refmans/gui/viselements/corelements/scenario_selector-filter5-l.png
create mode 100644 docs/refmans/gui/viselements/corelements/scenario_selector-init1-d.png
create mode 100644 docs/refmans/gui/viselements/corelements/scenario_selector-init1-l.png
create mode 100644 docs/refmans/gui/viselements/corelements/scenario_selector-search1-d.png
create mode 100644 docs/refmans/gui/viselements/corelements/scenario_selector-search1-l.png
create mode 100644 docs/refmans/gui/viselements/corelements/scenario_selector-search2-d.png
create mode 100644 docs/refmans/gui/viselements/corelements/scenario_selector-search2-l.png
create mode 100644 docs/refmans/gui/viselements/corelements/scenario_selector-sort1-d.png
create mode 100644 docs/refmans/gui/viselements/corelements/scenario_selector-sort1-l.png
create mode 100644 docs/refmans/gui/viselements/corelements/scenario_selector-sort2-d.png
create mode 100644 docs/refmans/gui/viselements/corelements/scenario_selector-sort2-l.png
create mode 100644 docs/refmans/gui/viselements/corelements/scenario_selector-sort3-d.png
create mode 100644 docs/refmans/gui/viselements/corelements/scenario_selector-sort3-l.png
create mode 100644 docs/refmans/gui/viselements/corelements/scenario_selector-sort4-d.png
create mode 100644 docs/refmans/gui/viselements/corelements/scenario_selector-sort4-l.png
delete mode 100644 docs/refmans/gui/viselements/mui-icons.svg
create mode 100644 docs/userman/gui/extension/dynamic_element/tabular_data_props.md
create mode 100644 tools/_setup_generation/step_mui_icons.py
diff --git a/.gitignore b/.gitignore
index c97af67db..fea63bc4e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -112,6 +112,7 @@ mkdocs.yml
/taipy
/taipy-fe
/docs/refmans/gui/viselements/index.md
+/docs/refmans/gui/viselements/mui-icons.svg
/docs/refmans/gui/viselements/generic/*.md
!/docs/refmans/gui/viselements/generic/index.md
/docs/refmans/gui/viselements/generic/charts/*.md
diff --git a/docs/refmans/gui/viselements/corelements/data_node.md_template b/docs/refmans/gui/viselements/corelements/data_node.md_template
index b9503e904..aff98913c 100644
--- a/docs/refmans/gui/viselements/corelements/data_node.md_template
+++ b/docs/refmans/gui/viselements/corelements/data_node.md_template
@@ -45,8 +45,8 @@ To edit the data node, the user can click the line where the value is displayed:
Note that a 'Comment' field allows the user to explain why this value is changed. This information
is part of the history of the data node.
-When the new value is entered, the user presses the 'Apply' (✓) or the 'Cancel' (⨉) button to
-apply or cancel the change, respectively.
+When the new value is entered, the user presses the [MUI:CheckCircle] icon or the [MUI:Cancel] icon
+to apply or cancel the change, respectively.
### Tabular data
@@ -59,8 +59,8 @@ top-left corner of the 'Properties' section:
-The other option is the 'Chart' mode.
+In the image above, the switch is set to the 'Table' mode ([MUI:TableChartOutlined] icon).
+The other option is the 'Chart' mode ([MUI:BarChartOutlined] icon).
Tabular data can be edited only in the 'Table' mode, as described in
[this section](#editing-tabular-data).
@@ -123,9 +123,9 @@ From this tab, you can access the attributes of the data node:
-To cancel the change, press the 'Cancel' button (with the ⨉ icon).
+The label of the data node can be changed using the 'Label' field: the user clicks in the value
+area, change the content, then presses the [MUI:CheckCircle] icon (Apply).
+The [MUI:Cancel] icon (Cancel) is used to cancel the change.
If the data node has has an owner (a scenario or a cycle) and if the [*show_owner*](#p-show_owner)
property is set to True (which is its default value), the label of the owning entity appears in the
@@ -135,20 +135,21 @@ property is set to True (which is its default value), the label of the owning en
The user can create new properties by clicking the 'New Property Key' line, providing a property
-name and value, and then pressing the 'Apply' button (with the ✓ icon.).
-The user can cancel the creation of a new property by pressing the 'Cancel' button (with the ⨉
-icon).
-The user can delete a property by selecting it and pressing the *trash* button.
+name and value, and then pressing the [MUI:CheckCircle] icon.
+The user can cancel the creation of a new property by pressing the [MUI:Cancel] icon.
+
+The user can delete a property by selecting it and then pressing the [MUI:DeleteOutline] icon
+(Delete).
## The 'History' tab
diff --git a/docs/refmans/gui/viselements/corelements/data_node_selector.md_template b/docs/refmans/gui/viselements/corelements/data_node_selector.md_template
index b50b595f0..37e6f430b 100644
--- a/docs/refmans/gui/viselements/corelements/data_node_selector.md_template
+++ b/docs/refmans/gui/viselements/corelements/data_node_selector.md_template
@@ -17,10 +17,8 @@ the selector might appear as follows:
Data nodes are organized in their owning scenario and cycle, when relevant.
In this example, *cleaned_dataset* and *initial_dataset* are scoped at the
[`Scope.GLOBAL`](../../../reference/pkg_taipy/pkg_common/pkg_config/Scope/index.md) level.
-Expanding the 'My scenario' item (by clicking the
-
-- Expand - icon) reveals data nodes scoped at
-[`Scope.SCENARIO`](../../../reference/pkg_taipy/pkg_common/pkg_config/Scope/index.md).
+Expanding the 'My scenario' item (by clicking the [MUI:ChevronRight] icon) reveals data nodes scoped
+at [`Scope.SCENARIO`](../../../reference/pkg_taipy/pkg_common/pkg_config/Scope/index.md).
When the user selects a data node, the [*on_change*](#p-on_change) callback is triggered allowing
the application to respond to the user's selection. The selected node's value is reflected in the
@@ -31,19 +29,17 @@ icons allow users to perform various actions:
Users can interact with the icons in the toolbar to perform various tasks:
--
- : Opens a filter configuration dialog, allowing users to define filters that apply to the list of
- data nodes.
-- :
- Enables users to specify sorting preferences for organizing the data nodes in the list.
--
- : Toggles the visibility of a text search box, which helps users locate specific data nodes
- quickly.
+- [MUI:FilterList]: Opens a filter configuration dialog, allowing users to define filters that apply
+ to the list of data nodes.
+- [MUI:SortByAlpha]: Enables users to specify sorting preferences for organizing the data nodes in
+ the list.
+- [MUI:SearchOutlined]: Toggles the visibility of a text search box, which helps users locate
+ specific data nodes quickly.
7_#%Z->wwvLitF2zHp?R(R!84`xT;!FI-xlEj6C(I|;8o3Ze0cK4v3p*)v+C1ZIx0Hqs?2ON{^)OD=-oR>L6p)x$HixiYIk?l*aK40abE zr_QT4+ib>P)|p;Ik(5?w0}lbtw6vrsJua+Sm&xM#88&x(s*0@e8@`JchW54LN0c8m z8lx|w<0KV|Ue_tdb3Pl!ZnrM^_gZ4p5?Ci(v(s35WkUU5(h7GdoL-s>iLdp zHfoVlcsq+LY$yE@=m;f57uy+-3;sRD LoK`WY*$J$~pezt!{lBpsO zrhLO%Xwud;%)7-v{6zKXNv`u`gU!Mht1c4xle3Kz7Nj9*0qk7BPn0ioJOQ(CfHR7| zmwpH@4l%L6NuYL^vo-oOegJf!+bDPRFQ4GI1MtNEWd70r)%By`>-tZl#6p*!j5;C0 z$cdc$yc-)|0(w?3e!Cr!mhYdQs16GrBcnZsUcRTAcyL&k)WM1Jg)e{>F3QC>N^jQK zFC|Y3vEU{F*k1m6FYv8KN!BUO2MV-*I`Fb%4)2`oe_S;DAL;U{rjzD~8VgHHOC#K= z3kEbBLLy&t2)~+p?@o5mkSI`-=685~B3Xb8I}U?+0_E$)IR9Jk;3IO_#JT^KYO{Mg z+uQ%h(R@`PUrJSHk?>yPoShH&$>tUSFp~eS2QKWqjJwj{h#wvvIZxg D6qkYL2cC|JdS3WEoP_NfujzbkhV?fyXAb7Jwe}0mHELI^_Hxb` z;j;n0L;!sJy#UsVb5KWc0cxsTw3sAaJX*N|SJvqeL_^%Ve=MClocFJcI$&7(-+Np; zt@cJ GsaH$C{zxDw0lft-P1-(T!frvL0d5^Qz zd@`0MC({=B#y@$9y%jq?M32iQiQCQc&i~8e_wRc5U)Y|a@yvt}e?zB#=sTIx<`Hu% zH>2E_)>9t4|HBial?KQ#kv;#J9H}z;RtkKQic%b7*E#R{n0OahP7wJX%&*{nzR_)& z7mW;%I;#?R%t`CqpE`pg7a!$etb26R3&6Bc;pyp=>Lxjl_6C14y>-0!Wvr!fcGjhi zb{&YRCB6eG2E{wn6AmV=LgoeUdUWFrlS#J#CzF}>9LkL^HQA}i|3|qo|J^TMko4%J z5%=L6;26U}g}I^a?Lx5-ClW`7Y2n@4yMaUdx8M5T67nYPlpa;z zE@wrT!IJ%F$9`c{_ z^1SIl70y)1RL#`RGz7j{;k=v*ECnUA`*XP(=eOd=A(VsXwwmt$Ac?qnNNy#*9Cs`& z+$i2C*p)AapoV07=J7$rGk9-!M$9AKSz-0hu zQ5fDk^taB{e-1^=v3xS+A!hX|&)0(gJ4lM{PjA;ON$kaodJD (riR zLm6NTI_5(>agQ*q;sdSNLUJF2R zXerwz@yk1s^|nWCJTU+&nkYbRG{Syw`v4|scypc1yRBocCPLcAT{V5z80DBoQ*DwO zFGa&kzEo~}>*=y2TwmF!bc5FGhXy4`5-U-|iqwZ!wg*4tVr&-h?UjimY2!=iu9`Ih zZcLD464!muw&MP*Q6PR&TQAil%6;9i!HXw5ASOiu<^~8tTB+hcKdHLrrG!?=UT_jN zxYx>x^{WIr0D$zLt|OYd47lgN1V6A`031fdpB93n$3~S@aR=-0rQKrzf?l(78(?2T z0Ql9V3^)u!XQNA69Er=BEU}h$IEmT`Hlq;#pB2U=#d^oS6P;}O!G}u9Y&VEFug$}n zhJ=MKFa>1_DGbB-R1p)mOGZM&$nR>l!$?sf!{e!`3jTtU79D<~$Y#Is$8GiH+|U#g zTiyqI-z`(}O${#da6q}Y*ZHcB9ai _`bAfGLDjC*EvSmv&S=_Qm4 zgkfq7c#7XK^V 98Ko*qAAjY7%W BwDb-<}BYXND IY|vJ+lw?tKi5zOKkMbA|4TC?7vy!fRpIU9Deu)r()UPNoj$L zxSF`WKNEece6Szq=}l;Lkc&Mts0vt_A$I~|{=r@ -Hjp@L#@Eo0 zxw`YXvt}br0bcwhuAdKh=>^`1r*_Wt8l)StOs)o6*%0>mMQ ONg*2wDROS-unI1RS<($Yv*o`^ywq@KI;E#7yBg@Uv6@smxmW5=V1tYaq8Fc5 z)jx3ej(% u2y93i90jdsI+iXX`%Y!#8a6> ztPp_;JWMjM#AHP|`ZkTVsr6oftryRr*_xY#S2?~psZ49rQ!v}FjtGHXen6Z1vRPg2 zH-IXLTiF}fx9l6_E?&V2W`-d7B+xR@3b3&By%xR)wB3zUiO23QE5y%y&mScNHom?d zE&lfbD-j$J8wxg>lMC&DrKRLUz5{f?M3@9q%@KbEnot$|veaL$Ra>dHD&h&xXP&+B z=IJ15=V%GZF@4tuh=Y>;g8!qAa}7!Y3&XI}WSOqzRBG1PW!-cWv6(Gv#nPt2ONv&C zY>>KTQh_3gpd{$js$uKe6}K$&iWd;I;v(KJWn_p75(?gTRz*ckE!?o&gR{-f?#})_ zKhB&V=gjw=?|t5Pop(WvnSvR&Y}cUzIE=~^78e6Fv+MGg9*0^G? !z}q4fChjw4j=w%}XA78#gOb6mM(f-ny+8no zdzA)dolk(zFwb1|Ox3`e_giOdM5kq~@b6gef+O5e^OGAv OWOD1Zq?WSTrmNb_ l#b3pZG*djlG3FK7%j>m)q?J2*-e|HPqo`-8> z&BHqn_sd#@J~_ ?PPl8Q*hq!Lmo3EeXIf(f`Q;$wpabcMT8*1>HKTnKY} zpAa6^-E@pw5)c3qW>)hj?-!Krh;_*~Ku1>n45Lmfq;jd@s#iO7srMxE4B?ntkXn L85 zZb|H%I}W~8WHN#ZMy7=(d*hLqSjLdN*1744O#~$18=~gKjgwePt~n6-(vG~qrQPQq z8knVVdIYX#v|#NLxxPL44&FCPE0De4T^- 9>P(Nf=*cJvP}H zyp+)&IDV{1Ryxbr=AkxbEup_^?l%d=mD487B$!6Tjc;j_IDh4#+$D+v56asWFN}uL zqvR9O+s!-@qb6ICcqaes5W6o_u#=`{ck=5ZTZ(w;CtpdX)~{^eim746YVoX7=X}kW zd|Z1A%Rx0}T`!=vpH_!fCn6}JV B7$?c@k#S&Qe2Y6@yu?$-o7K lKl&7z5BfT%r|pp_IGxh*?&01JiXudbzOI2jPDzqJjQ#Bjg9T( z?OVDJ*w_w NJ%M;%Fni(!X1fP`kWsmC$KU&c z>~&eW3)huZWtCMG6fQ_ym$`o3%|yByD0k%9?R$DhNQXHN%W*(2_HhAU9esMs+K-J* zAd2;GU*gOP82Iv_>&<&N+1M%)kMBG>#KzX-dt3LWS I9VouF0+Fq#EEdJwH6tMU#y?-3K0cFfH83jg6bBze4A;;5O z85bkerYTW7-`^OSZ51@p3yfHkz!okxG>#P9Jbm1DV*HwCRD}KLc|QLiE(gFRn-P*b zA0imd1=!^oBj{3bF?2gF4ziLa9S%vwL&1gNoLlq1=$6W?TG-}nze`;odMN+R?RC$I zTmgL@yTP+e1OF<|t7a*>xF$NCxs`^8uKGD{t+-;>ckLq;AI`ohh-y@v?z{*&nRbL# z$B9h0mp$yc=k?_>c}~jMILWuT#dS90^#78Le8OmFqJE?ngl$L|3Mj8%G&&jV{9{;W z_ViCyK{n1<7w*ODypyIq=W?a=oh2JCH_Gp|yBh`cJPyH_L@V;y{OQqgu+hyt$SRS} zAtjSO+0( hn4(6 z vx2ygqi-=oz&O(PhkO|w|k}C%H0z1`Y-L2zjirVM&Wkql4TCyg^!DN z1&8kUlxJ1Y9q~~^5c5=Vd4golnX}5={(C|LzWQD5Tsq0h@$8N!Ur^N#w|70F652Bb zjEy7&9hVs8u-qpse0i@5>z)gUSWzA?-$%%uK43?X@L_-G4JX3aI*)#S%gS+s87i0l zxay}{GDw^`%YoSbW*LQ*@dM%W_vWl##Adp~Eve@U*Vx8xzj+jPb6wb*&N@+Stfbx^ z(OeUK F|}(qn{uBQ%2&SGV<%M4@7oku<`A+bRxm+-4Wf~bK Dm&^we*V0(ec*zO+yPBm~(O_eFT+?=gQP{kzPLs-`A8H&Azq9)J z{440*>MPcSIodwHS(mA`Pw@ondv5-oOC&vDXlWtNd-?Wp#y|L{b2i-K%<*Zy{jBd# zl({8q?=8=pWaFc(Z!U?M?WO!Y3TOTIhVMVgng3&xt(__^TmH 9k#l7fQ{|p=c8~(0hMn^0mFmsFB8?jI_{`Fj*rhL<$hUeB>lAz zX-j%6QI0WR^?Kp(bammlA+sZ7Hy&L{MUPzG+5noqd#NX`3%iV4Sc|(q|6|)3<7)p@ zkD*dX^Z&>_XUua^M*jwuHb(b4n%tk8EDSB%?nQ`= Gx@)LBm3oO5^F4a#mx^?p$JE zM6Jc@?xGlNg!$R{sPmbKY`D~l>!8c #xm4Szij2VI@2nXviGw`(-Q^D4CEM+fFqW|{_lCr)I5+SNb-H!Ow*v6?Wo z9KC}0eGB<&AXp#Rfj68<_P+j4 ertnw!0L<#4vOzq z;g*j0fFbf5nR2!LbC)g0-dHYMMX0x3pfWZxf;7QkH;{Oa0vtabA8}WPtOOkXTaH$q zcLJy<(eT!0xh~8zJ8}XoRca-8rLK^sQT^9(IO@Kp>n6_uc)KZH9Z}kwPukbKFhS=J zyIV8(uK3dUI25(DAy#YpWP3;|PVi|l8uhn#I(8_PXowhrpz4jmRZ^Zwi~y=Ics z-;Tm#25WBJc3rGsz9rHr5f}b0b$;dZz^6~8t+ iy1Wd<;GgU)pHl)Zj#SQln`+4#R7gqVYbSQ$cNYBi^(FZT#yQ z#Kgf!3$bT0wDawa=<%NcX+Ca$Tpc6UC~F8R&b1f2+tonaJ*}a-G{pt|JQ+fqXv<88 z;62KlR3`l +0WJYzV=SqL6A?VgLsGJXR4i?- zA^Ud|rWC``2P(;sv?R>+bwB$plpskl`!fBvh#$(?NJY#xpgKN@sReBRhw80oCG>Cu zCv}l_A$e3(osqi2{I}?)hXq6V^TyU1vQJTeLS69cG;Iry7%Lw9h-cL}$ FuEQluq@*f*jms zB>dzI`E#f4YoPOfbJF?c`jkSkPBCu5%WuWx1tdkhyLQ)lw^rO;Vy1+?Ph^ZH&j03& z=;j)a^Wz{P0fT2_iworyKrEkGJ4YZ11dds%s#p@wUX)G 2XO=lI;b`m4R%#lurxV{cr-oXw?O6<+Zv1|-e2abKI7CC5eD z@Q%e` k|SADKCrefu2&nj`iG?77+8|@=h>RF zf{14M!bqFfPqjt=AIQa+@wTab;t&n*b2RtY-Ghk1@=6n^PnT1&>x|S$MS_(jQM36L zZa&%qvb&P4Jmxb}JWjYWYkmY>yAkW(95KGz7PWf2s%V@`hMFuVEqU^Z%!7)t;33Lq z>)c7_9mYJLw?z11aG1qHC^2+Hb8fC4Va_Q&rCNMGT_P0+8j2qnzKevB#mmYq%CbU8 zie*IZ_{?o4%O-X l_LIsrl`mk+sy5!OO{6pu(P5BG-2gZF Q_`wrKI=0K4YGCD@3prr@hlFXW}9< zeqarFd<;s&<|7(tTKa4jiJ#N`SBX-Hb_<;uU5)$wcoQ#w(b*8(x2ODc?vul1Yt{nV z&bvOL{>9|NQ#Dj42mhyWJRP(_=8qIjX{V=D|G`2nzH9Z9+bK2Zf#@C=gCWI+F@1tf zbMyR6qhXo%mS4Nz`JR84#zhxwtCysHg*VSQ?MA6F4?d8;U8*?)qUCIMkejS&!F Uk9uR#ms_ @zHeji`JSkv@CVVtI#oS5Iq?=;{t11gB;S^ziOx)rD7a8Chr35&l3+DpE?_2n zO8=54iD6(@lHfYZ4(FgM>utucnF-|ajz*5atPH4YpedfL#aKLGg1YtTO038!rTlgX zNbqQB40wgBB!4!|sa$Zy_8SvBJSXC-d`EEFOICQVD|}yh->S{*b)qzOE~rb-60ZN# zCh1Zexdm5$Si~&SA?>cKy2vWdMG-=f9Z0Jt-##xcHt$oUKn|4Q*h&Z${IxE3qu6}h zm%sfd%Cz5Y23OAJFXob;iyh*}l3E|AvhOx@e<8#)PrGk{&YIScJqg^K8 z20qtk5I!dH>EpC_MhiVb5+1yn#?}Eo^65V4-jJ(it#><06M|xqLBBz5t}OFUQ+PRE zX&mReQHEX*LGriz6miO_w1pHw5=$MNe&r3OE(U0Qp13k{|4?}d!M7ph{Rh(X?}_9= zXtkUf k1j8O9o` zfJAP;YTNTfHa3%pZ9;fR(1_E(Dtk)jk{@7pC}r= O@b8Dk%p#-T^|wouW3x*!e-duj6pZFns$Qv5)9?44_9;jm8{
x@`HH)RS2_@D6PZf~eRoJG?7w|U@vp44`eTsJjp zX4{>s+F;m6b;`TqHF85pj1@mR3=z6wz7_nwW@SS}^u{Xe4xZ(HgtT*UX2>qxvOXih z$6I1tN4sf2x|rh|(_`%F7zBQ|_#_Ysv(6mmIhXF!w}LV_lo1U^;Tt4b<}w+pWRAS+ zlc{=9zar&cqaRZzF(Lg@Q7;Ob8gG?g;wKYQmeh7Z57`(rXJwK2F^pQRROx(Q9W`;# z0K+Zb?rp-2FB$I*RD0Nma_`&*9@D$JpsVHBiJBT++&3PQgN>X;E6d$&J`A8)jWN-t zm_`N4qGz!H?a%f`m73WS;C*eCbi>;LqnGgXBfKKE$4Ta*$;{aaNzs>2W_Jq#OEb|_ z4BmN`0l*3gyqEcN#hlN9XMAZwLhi$wZ6Qmczu$t$i4QSTf=2?MF&hNL12_9`5&>_7 zXJx2iDg3%EVE?!6$Z7THfQgD)n?FWOWE!nk68ZXbXxp~4mzdT7ih?wgexUEkPY!Xe zq1aT&YC^s^&pdpMGxi9WjMe~!KY+9cX@iN#np%NC)Z)hcj}6NsQQW1xxfU7W5k v4N z>Jk+X0**;u&?ifxFV324rou-ZaCs2{8<+FQM*alKL7AW&S;oh((R+c(4kt=sup%*U zCJdyVsI_&Mv4FKH_XtFu0OKbX`aX&F_vH6Kd@pVmKv(v+c~z$0mg_0+(;yUT%&X%V zs)0C)HKmU&8e8uM`$)Aa5EopjPRJ7K+FAS`PpY5ubO`LBkWc)ju>0464oP` #yHB?YRHtt5reRCfe#qcIQ8J5?%Wb6YiIQGV9H?GUvaAqX6K8xaLH5U?BW zl`4F_BeDYfY45_X>LmN-PJfQ<{^r?Xyqo)IMOS-y-IG445AjYDedbEM{!6WA#T$Y% zRSP{|*_6iIhWhp0&dnC%MaMuC!|^Ga6u?5U >YRKjmRoD{k_DWp@B>c9>MYe|=C%8HczRm)kFdOxxL5P+@~`zsAU*`)M<&JUlz zdK}@nE)A@%>!{B n8+&TPANS(~NnB zK#=<2Oq;q$VO1=BER+bqAKiUau1D3|>2W+*k5a9KQ0m!=(y<@o+MY)0(jqQ=iHNLC zo+9WyU3@g6pU_g;)YR|?QSkoK6{m>Ca+6z&0mzb5@hj!_bOFWU3D;^|g`Xc@bml z+Q<@xvl?YtF4}>m5$~gWk~{4}fhVZYQ*}LXTn^u)o*0{D6;VP1+<>{c(P)jwPj$f2 zMAzcnJN~btj~X}$zk9Eo@7rvri>S4i!77oKv=Y)Y^Q?r07yXuH@(|-O#ysxv-0{10 z08oJHA7JYJp*ubP{fA^HD?XkMLhr$#rm4j0;)7Q|_x4KYR8lYzesOl=%mQZFJX* z?9z|I`$bfo3kB i!u2*dI~O5eOgGTyf(I`kS>>H5lQwbOuIhS@ f@PtI&N<1l|*OXh4BBIJ(EXU(VO^8l-8>TTo!qqGOO*TZ;00 @M&UeX3|CI5|%GNi+$eMF_lq2IB#Y z;C#N9gI}{ff3X$qz-g_N(eUw?#5ifp1K$144Z>ZDy#2wf_u~E)^Dqlo3XFWcIT~H* zY)?T=dT=@V>>@8%ZtzrSNuO9WBD$VKaG(zp>irvm%f&OFj`O%&_SOkel<2dg`OUB6 zy?x#K9i->_+F6oXg0o#g3qBk}mV`2f70Bwqu)}X6PxPag69QxA&VmYhO3SiNz#lb& z6opMjUf5F7vcPCTC7VeqfF0N{81rc#GXOYC<}S?1E8xkwNA j4!4KU|L9C|%+d`k#_tjdId-X4xMwibP1boUJCv|RjK9SBwd z(#KxJZO)0$kE68B{j8lq_gf W}}y{3O7n#9?PZAQ&b5;IE6wDec? zo~F^8O+_}Y0&v93cxSVXhlB4mR7Ls3Q(Sbw6-GXMeqk;%jAp4?n%25oz+8_QT7CFg zL1ORwnyG4nfn7vPY3~Xqs58iwFY&V=-88(|yQ0abc(tM+({xScZE2YPh`wVuJuJ+{ zPGm*0Eoi`5f+T5 VRkbc_TJjuJp{? zZVm_U0%N^?=D&{``Ogt6{~MLA!x?Yg{)aVs1VHwm{-IYy{%5i;BHA-rr*~(SbjGs( zjoxaCVL=s+SPlQqsmMmTO8^@JSikSw-nHrdSKdqi)g3f+FX1YzmOA`cm6hklF_+yv zlI%apfBkQ?O#h$6-n-ebEj5Y9O@sc-1;FCRU2B@nUnn9&I?HM|W*4Hzv(m$cMc)aP zqs#*Ue{r_WjqWIr9L9P~*+O0!6TO%l@n94cJ*1Ekyu(9$oob(I?>|}^yxy={Z(F%0 zU8kz{c=k3C=K)CzQ p6k1j c!;j{O~B zJe^sO|7wuP4h0>w1TfyPPvGWu?uy#}1p1}%C85%~V8L0Z23P(dv(?4hPv(pGW RNgaHm9X5?+XsrUG>&;rb _$WMUqx7oBW3f)`g~Vi%W5_*CcUh`p^+$I2 )8Q^@-vGiLuh!0Zw9%SVtGS;{7YqG?8m| zpS*(*bTjE*Ww~_S9me+VDK*6idrv DwVJAp^HaPGv7tja;QJs%OSaDeaZGKP;?9e$j5w z(I_CY6FYA3BX-a{ygf*8IT9 ub;Qw>C90?vML5*H38x210niS1=*r z>B=|Tp?2+=NLz|xSbHeQEUwn(Dpqhpc1&)`SY@4hAW>N}V!+kY&j%*1C8A%gpIPe9 z&%%;-thmVWw|&HE3L6)j4uws~C{G3!C{~C2I0#!<9>&i*`wkJg5<}!~fW)Whp$id@ z8R95`^<@s)BrPw$t~ F7Sx3 zxeC%!uUl#yH3BUIr!GZZ(HqrXz6N@|g5h4_&OJ6o2T_V#*ROd8mYoQP$G%MkyoUkP z<}cP_2s!mTGMa%jN1?Y6*Ms%I7g-P^nRlNBa%8ogbz2q#wVnoPF+H~YBbjRYw^}P= zc?JnY&w`05Zl*w+;(!l}g~60}dXJxKQgs821@D{kjHS~AT$3Q8spXX1>KqRx&ft() zLP^O9xX&qPdC!@x@{uKg%~7&lZ-Qp-46%mj_STqq+sDuk^v3-)+NEW&161oCpB`sh z5N8|+Fx~O&_ALZ_!}PpoH8nzJ9+TnSU=RQRwW+N?CVAihVdInq>Yr3L!;0-6e%qFn z-2@refhtXgF0#XYGFePYdYkNvnPhWC{!^)Nr)K985&g1jm|xrX7Cq#KEqT11t6Z(` zj?9r7X4+JortyJeftzG_j;s^)6I_X#I>z$28ogvpL+3qMHp&M*ZLpZRe(}mHT(k{< z0go+*xOX0QkWl8_2a#NXl;l)yh8(P6_v)ueyqN9*(Ccj~khSt{PG^zQqb|VP#c+?z zsar jnm29HQIh8{Zk`>w;i-jJK4a*y$jFK<#fgxG?imL65jlE@qHhAVo zN09y_0FxD2h%GN*hhH@?OCVVhGG@Zmb7VK%FZwago-anqXlLX2YO||!$@{9rJgB^Fra73=A3eSx#J+VZO-IkK^so;Qz zfd77m1AC668J0c)@FiXVw}l)Y1Z=#iBbu5Gz5{FSFF9EvkmpOWv*#AC@|sm4-5%&6 zVlB>hic=K>h`%Fo($J|W; (&`rr{FSwx>+}vBiHcxi@_`{1wLYiacZb^9GJWtAwBsY zP0nG&hs@ 2zvK~b+Q~YP0=$lF#B%g=U{H4i=p{H}w)4Q^W`_j $eNAl*_Xw0@(L`aF9)W&~0xwo4K|gcIAMt(l zr^_TyYztxU+D3L5mNj0a1Fs4!#1VE*QhW5Ot3&emm|d8(9uhWz1G$KFwcPsUVo=1&kKql%BUqdp8Vqb;6VFWS@V;O>uRvtUi2=}4kvkSmO5dI=*z%*eV{F6h zS&!HAuN<9wv*Kob;Eco(3A0vXBEa)tNC#_do7;Gf2rBSPh&*1bp-hNqKYrEduQ)2B zwgNl8dVyy{_37*~P2`#0G>q2f^?PNf&8gYGgcKdbIqQGiyENgt&DK_-zL{X)e4R)( z{e7ZY W??M zTUSPzpPf m$Eq#S{gW7 J^ pP{tZ9`~3Bc=pbKVgF%}DlWE@{})*X)oM_OIHo^b(lc z>+=O(Z?zge2ifbE8**yWD>lOq_RQ1rfV0!cU_IS5pP;i@;uW2sW${GQyU&u^hF&Kv zO}Dwu5v nZ+#a!z1>D 6qq_e$`=2WAFQ1PA^ 1PMCB@+CvN9_Q4;RfX-8AT6wGY)+x4>Z6z5RO|peBvkd` zbpXG85XZsO+fXo;a?= zU*@%}D(f5mwQpBQoar2MNbD)GU-3Rx>gA<`VD-R?kar(&G0v00u`C04dYC16?UwlH zqZb%63lFg!Dq-r(pbM_mE`|bk;N|g@o2GYn{5D=&GA Nf_jT^U8{P*N) zJElfKB~u4{mnbMk0mwI?qpZT$1$$~g`s=OT!AN-xFmq(@+ugzluoAjYg%36S?TOA^ z{=XktQ}Tb%Jm6wxv*|)zvEbPi*GuEsG2XP@gdby}l-->m45QVS7?MHB49j2*O0|#> zVwv;`7b9wpgnbDFSOG8quSjQTML-!_YqOZF#lXRm>9$XTd)FVgJZ7LF{gT;z`K#J2 zX;qiz=I`$%o@sNrs )|1s*^iRF{!#Td_@YDFQU>arupGn(LBQE+a zb+T})h4&ozj)6h9kX7dgMyMR$m8-?Br!{3Q_ne>*hjMC}=utSwJ+uy3_oq|v }oj1m`P~Z~}1O!zZOQDoKjpq$Kxq7Vs5 gOCn`s24~9$tP6rWMUzBp-S(CfxIx`uuC0RN$am=xiO=>d_ZY^m(aHPnK8L z-7wkp3y?0RVpiwLUL52&YCx!?=mUy7;QrXMgrv}Y1RLQ`qhWM=mR4-Y4Cz^gwbEn+ zK?497(8W*^H5*M!0K^F)*XmXyCzP!{f~PvsmG(5vs%H&=*(cFN0K|mADt};}uc#C- zEV{)bdWYgJms80HtsaN0nS{5T&AlqL-8;2~Y)*1@eBV|ZI2I1+JLD)~wiNuO15}>q z&z#7nulcvAQUEq-VV9=Ged>b@PDbB@laly8aNv;Tbh*UGsVE`nd;0+DJt6?H$t}!r zbahzl{=u)&belt$C))INyMwUc5;cd=T`9jvh)CjP;rYY1yS{xjfpTWo8irc8qI&_Y z6~QTZK8<9s;HtbFJ%ws1D9PRl0hkIl)nb7PS@5S5965ph&y9&sK$EkKtv?gTRVK$= zdTIRB`dTS b1SbqsPA|~Ze zW_aKrRgpXTA7DS~i2 Urxh4W7tQTC6$3960pA*J zP}M~)Q~~~#hI))4ENo=L60oJcMr?Kgu@T{ *r3_#`WRQnhP zQ=`9Hi1o(cw|jUq`gc26+A^Um9z)&s!eVdvN&24IeH{e5Y;ph9EuIIovQr>&wX5GA z&d7;D8W&Idi#Q^=W}TXy?mpybAEq>BXcbhB)lZ^gZL>utOPgk{iD1WLted6+D3ei* zlKjV5dgm{?J$Fhnue_CIhiiz>#Mp-R3ZMuM5pqrMoy}%0${D$DW`{iTPUVSmp 3-Pksa6yX8RdXf$4vz z^&R(vzb)_2lT5A=F=ISzp{|-Fv%G&neSH1z)rlDB-i!2st1k}DA@$&JPNhMfx=*Km z)t#(kaL`?mOp7wW(OPBcn(YBeBp<`$ GgvEq8aZ;SN zfTgLdi-4*|+@BR4UXp2)$~IvM#Mdi@|5Xyc+6-7*Q^e%b5gU8y4)d~dqN~F|?;T|0 zZ0m3onhfyvc*T(rbR>CCF8|!2YWf)Y@_1wj&?-jfe+wk zf%}Ak*;*r!a(UWN;hm8<)?%xtuYNzR)d3BkE6E?Q<~$Vvz#C!1alf~66%_f_R@ndE z3T~{5x0^>bNn`m2XIO`Df(PaCx{d>{9HG3vr-}6<#MfNZb|$V#W}JjqbXF{O!Wu`& zU()=)Ppprg`Y{G2jqcDZ%GH*9o_6{#*3)u`07Z9sZ_dpAwU2RcIRBFI&T()`Q!r>0 z6`ll?jDk>m%yq7w>)9u*C1sra02OEoG+-oq7vM4RVog{1!ik>9ov*QEaAH@u@1~qI zfD)Qa_^~AK1~7{y9c$$h{`0);z}@pcqO_;Jl}}s(q7pIFPe4^Gjrwec`t0mIARgy| z1^B>I7-|{C4$tDeNvTnx!Pvdau^ajU!0k}U600&5ppLLNEEys>vhGaom8t5MvlnIc z)w5X)ziK&V1&{<-bam|xP8rRLNJtQR0X2=tGfokeDT0<3)l-q)*uMIKTjX5a+Yca< zDb)Py@6nYqJVxMdNj1TWF5C^(Y-4Mccc>sQezLN+Pv#P1N+)-}?B3Byt`GE&HYT2w zae4|!68TSsgALUW_-1tm;J!QN8uK`v`wfU6-YD1ze`{GJwU^bbApNV(iaTE-y*#aD zvF7JAzEr!0-SJ~#IQ0|PCl^~R?X-kHSxDoXHhpV4uhA9M1%d6b*}+nN&Z-3cnX&Xp zxXZfa-ro|{rp&Ve_r7rQB7j~Jd-0lD>gmfbPiuCFC9AB~_O1 #J~tWlgADdO&=nSH^Xm=k zt-21nmps<*vbRgw*57F^+W+5={|C(j;QLtGc(m^{heLaQ{zS9399yf%f9tNGxAV7t z(kGQt?)`^8hwmRa0dF*B*@X68^ |I< zVK~6`TeUUi9ARMkVzvI&J fH@Ie;*9pp5t{wm>gi>gvL zyPo<75Thf2+U^7k)7p8=SQg88jBtGBySlhH4j0|_*!=TAW0v!af8KmO3V*bksMKLJ z_fDcDHO!V((+8fO%8yU Uty z3XmJ|U|CQTJnFu;Oyw`H->f`$<$FqE-zKwa%Nxr-#RmvSCYw1$B&HZpjs;eR>n6Iz z;@P)(PI|BjgSk6^I|u2x(t$hE+YkY;G?&J&u`(Stttxag(<_e+=qI5=EqO ChosQ-}>87p#*@@l@1HPvqwX;mt+4d zA7af1+vqtjabEMPqCU)BWF{NKIp%yN#K>O6He`m1nu)xYfa^(NW$QlGllf6Y?`16K z`FrC2T>o%hH~-f}U;VF){QA$eO*9%{EPYzYs!sjc5)n8hXS6wyENL5 4T4uo5H4-9XE5&qn)T0Psknd$0Qq9c^&I-!X69ZvaF2?+aS~ zl376d-_-0$Agf}w@m5|-O4kNLRwXnfzL40aLrL^+l=VvUoUJrnrI d5pM^MxlQyc-kH%@A&)XO6qq4I^6R}A!l4_0g %RPmWTQcwK^ZHG2@-HJ#2be8Jn#PpS+V4WsuZP%cOZlPEQ>KOi{if`Ig zV$^wr$rg4qB#h~2K74g=INgVV;ly7y(?8J|)N+-$lSAvU_II!8m`sXnV#Hk*BZ-Ji zh02NE6I{Uxn{_#IbCz2@xl=RvEok#~xm1>bI#v4ODr}|z7DVYXyw}ylMPX8>e-fLd zwo_?dw3mkv)&Yifd-HOG4=_a(2S9Mpv8F9Vl79R{*tjG1*9+yKHgQuFbGN!FtX$SC zyJ{p^T^0aR_q#RH(iHMt#u-}2KRUz8!aS*kTXf+EDPBfl8rX>4ZcQ`qr2krRKXf(g z=ayG5p 451E=~s$!3kFWZUr`$pBQhNfe_l$i+lL33^$fg^+FU z=e{utNp6A=Tg1TSr3$i7BLiOJ=ABuwk=^)@Dte)@htErir<=`R6E(Zf7I#hYs#*{( zc_B@qK+*qV-YK}6l){E_U7wQJNv#Ii0S-qs&-oXF+-PVU4cDmZ^>t0$QE;0|A3wwL z57~yKhRo!P+{_C@(~Q%;V3WjB6VgixG5}YfnVCEu5WdzO>S*V8QyxarYuyIaX(F=N z#_MMKA4*{HozY&KWqZTzmgy |GccR7Fk0|p2>gA#58}JIHR0x+Z5+|ueDiOCL=IR>IJxjveIAR z!X#<+?zth)Z=UVEI%F!3bTjGsgtGyd02Vrr{u`a&MYi4^_xLp(R &vEIQmmr6V(m4X0k&q` z*JE%Qvzmp+hz4zv-~-hZV{2(fxc83^a6#WmxXeo$CsRRH8TzCm57l5{|5+-6d%K!j zir2A;(!>?EyPe}za^9n jyM#%L&cqn= zQsUkwWk4gQp%B#c^aRzR;#cwxHO{P&Ry9*Fy>A_tL)oR2@6Lqp4ethB4<#Pz0-j%- z{{TFSEq>e$JXdwVNY78)K0J?}F3m>- tn@xsdbwlpwAZ+;^dI70nEZN*n+-gE&z^E;*;7VkGQL&|pCEf~J=^~~RR$b7 zb9*NcU%-mj{?Mk|TjXiSGNnverc{agUl*wxtZsd=S`Q|j-8 k9_^>g%mX51$ z-L`ptCw#1KZyC9zbI#61YEta>b`Q)lcXKedkG}t|-M=!-$zMF{7WJ 0oc}0bU_DzTFHh2Ak|(>H $%;SPAWG#J9dPnFa*lKm>d zmcz
W0(S+*Bfpr9aqF&VM6pb`8BPN=!1+ zB0OW6DQ=O#T7TD_vl9TU5gmyfSzXBtI;kMaQHvH+P?=|GqqSABP;)NF7t
8?|~g `Ym^lV(N8Nz9T(q&H&tfMLh^5!u8G0{2)lV4v zQP#9YBjRg_m Q>0a}s@@_s zRWVMjxtM*E7sc1K{7Yi1W2xoSZ5GO}Wi-49eYimxx4{ Kt2C)Ry}E_`HpL zJcYY0DV8OaB`wXq<-v0VXFFzwXM+Kwnsopgrg40$ z_k5s>fqJ=KbR z9u5d&rr%Z%oGp)ww(tn|IW=i_ZlYvhb>z5oe`bFpJG`YLo+pzfZ2#pI<5kv};8Zu& zMdv*{H1APPyq)jvWk{t4^?C&koOtb{nGM9sMiScAq_LS^sP?(fTv}W!YlJ!OHoQ-1 z#C2rjz$9<<8t26d2fM`GGNp_SAZRf)3L9dm`*jnQGq6>N6`bOY@yH7)WNf)@kkDBX z`D|>T{{2jMyCY#%EN!?TG`!R#?h*cgOG30GsD$wpzq>V8!qR!;FEAK%q3Q9s4 ^u1t&Cv9?7J7YJ%z5$V#C%aKh8TnGgl$0|P~Qz%_~%+W|( zIZnh%=1z%nP0L)B4IM;|Ta2dx`Y27Y0iN80acd5CTxvV>A56%xi}7m?Jb6yGP8m)b zAgFkG`TOa@1!X{J(~GZr-0W{GVPWnNDzoYh#F@Bn4|&YmNHvH$GX;Y-D<%+$M}*SU z_`kTv+a;`>$=wuxX=MlTfla2@GE!7ToE+_XfjBwjtl~LJqThK+A|g>au%#jzFRn&| z6Kr5VcA3Nmjz9yPDrA$1QztZ1VED#Fxersav1`#fN}X7RfcD8q;bX^Qk6*wEUwOf< zc%rzpr1A&$=*dd xCNxD>+gexc``}xyuKd38S zy7Ox*n~sfW3VWv0l!x%UH~s!s{yesFl=elbArfXe`gAzc<68I|# xv?$>#5{Nmq!@I4!ORD7*vXM^hat^N52 zLe=11`n?b4hmR7*!wd+8*`e62(Z%HpIUO+trC#GHZ_{VoI=n?LspWaiq%>JV+Mo4R zj;f3u GFfvs^ZyF36h{^ ->mQ_#GT&-RA)2{4#Q?Xrt3u%$XunPw?+$n_HXe=d6C=GJX&GmZrpT*I9NNUsc zEv>x8EW%?FbT%~Jyu58hjAj(Qos(GhWKoX(Q^wW$ tp(A9C8-paDJYM-HHjXC zXPIWwsixY0eES}D8SVe%(Dv2@g2|7uG>{U#WV_X>qu5~d?Nb&_^)tywv{?ep+#aBX zWTQRT;*TvPlN&}t;@_1xIKG5o7Y3GKVf-7_8NacTWy#RnwMrdRC~qg8)mdsPVIqvy z>Hn52V*9QC6=cocqfSxQ*B|RqD0i?ccrKs`wzI$)nd*y4?yW^YXVWHsOcB-_1yM7p z!Y^TN3$$&4w$Nj2H?j`Gzg&@go#_EP2v54+!5cl3VtlFh%8{eO57=@YFJ>+jWDaEB z@M;PaAYw~Z^J*;F&Fqy>atr(c$AVp-6QrU&wT-O>dX#Q`NrB$6vh%in`FV|(JD+#^ zrjRmLz?g*J3B5>os_&U%`m-U6JRh7P{cur~lq*^L%R?7J-R6C)(f&XI$v^7@cAVak zUSG*t?5di7)aB emG)?V&DO{FZ}KKiTK~^UvetKz_ 2mkJ_<8<8Lb}(@!<;mwPyd}m6 zedB8GLgY!kq6v%G?N7Bv)D2+8lu8 OfJCD%bIfnl056~Y9Rp%@Hj`{45Ja}?Oaa_LFq3!dV8{WJx zaPxkrcx%jPM6araOD}Ml?RQ7Jf^q)oq}vtAH-SFuRJgw%tow9>wD|qihaPKKURc68 zKGmgZRDIcbn<9qn!#5`Fqg{`v{xS;#JXQCEksVt
35`4qCWUS$1i==Z}fvpD(80?H1lmVJ;lr^pF6ph5!BrDY#{%~(5P zO8)NV734uq_p8%(&XzZb79>@2C{%LI}MmsJN*ry(Wl4q(y0=2Sr3`DAEa05CQ}U5J-TK !JKwnD z{&CK@_l|M=hYXWvt@X^c)?9P`=5NkrWRoD{_C94%|7Fg#(A*(^^fjr|GsMz*?{3n= zBn`(>if8f&@0OZuG*UM2f^_{tZR4j3 xG zq-ye2gD%}O$uIP)v#UJrgQg!YQVx>+G#VU#^`qbm(}G`qh4CRIIM#C!A^l^P_i@%o z>T4=2|A$sYi7n1T%fRCB)4d#H%0>3-8;fKwo>OsRsN%iejL%EA*^`wNr;}(;oy}~+ z-RR?ojdX*|h3(3#Y%ZcksokgiPkW@vy<_yYMw`$Dm0#0dwd_qEU~913Z*FFw6i?#< zLUO_Uty^R?9EtnU> z18 N_ i&x+S|3ccjK7Y?l)4N1 zqlfN`-V3aJ9RR;WM?NcC6 4@G$C27+ zvK-mRoOLZ|ymiErOCYxvX9^aUs`m5L1-HvJEvjtgjq{`8DpR*DQ4QYN06{hXAHW zYnDur@A6M!H{Eq944Lucf=vN4K@8RTF$tI2sCQyyQJ|p5XoTs#HyLj$KGN5k%}_>x z 5aMu?Arq&@WZ&<`;w;up!$qye%hyrCq*=-&mQ78){G8H>bEW5 zF}lK5mL#6PJ|%0ng>GD_nv~ 8}o2j;A^F>d42c~X4zCzePVz?*S#cX%>d}ZRJ%b%8} zhsMV fA)KRt}p&>fp^jk02wS`9pvupA_qyVBQ+^5SFo1Al}wV@mH? zpoh%2r1NBoPLH6&DRq-w 18|6AG* vX8$Rhm(gabG7--%;2_F)Nxxd2KCZIw%5m& zs}pgqacL6GvFtJ~{+c$)BBv5qzd*M8?7+ThuJNZDN;DV$-R;KjmJVq=Kb#=TxbkWK z0d~_ys1eY$(lStL{~soKx3(4>->Wfr6GVg`Tl6hwX&Z1z2oAie7mfe!Wn&D) zm3Hnht_B#4eFirC@
8Xa0oJt7)obT5`JH~i@7QDxpUi=A z>|mDmCof+m0=p0VZ`0+6JCB2pk6n6pMhgA7ANf-$6&%9gU%o~&OiJS%^ie1BIng>| zCoGk=_kU-@8N$YDjOW}i $cI%2!nQ{?aB5VeDtpKAM1m~JXt`us>!W*kyh&s@#_g?ot4GtnQQ z4>k$iwo+wEv4b@n HecV8|P{_JnqlWg)nDXDA;ZWjRhVmsDWc+whg zWiX=6BdY2+<`JVs c(|+);MgDm7|NL!TMA%i-Z%{qa;?YA5VYay93CzZ)rC{#X zMyH|4XC$(EX_dfQVRm$kS+Rue+T@BVlvThc@fhhdUZ~-?yRDTv?i_!?Y*FPxMaX>y zHen(tb&`xZp|7% RqoU_U_%` ?c+Yf0CmbBoo z2JtGpk*!VC=*nt1zA7MKdg8B{N;#u3U48htaf)p8YJZ2n*Pi5+HV;333ze$SIlmUN zZC%2S273JNmVuIIGkfwY!z9e^@k}Q=&9r#81SfRSi9y8{j(7_@C|Z8-MkbCNysJ z7lv9U)I4et0%Z;QJ1}m0GNw y<}Sxo zji20OCGO9nrh`&A#1UxYW8q{Lz9y8_Y}WvD tJ9}5r@5A^UFoXCt29< A{2kj@vp -bKE^~KVYJI>Ml{o~Y zW}0S6tJ&$|64XTxQdZ=2OkCbMJ6g2h%sBN8ue3DNKUH*iI%x$9R>`neksxtg;g&(* z_rbafP3!!vfQYv4F-rOPV9Aa?{;(es#zO;(y)n&CBUok3nnuh@O<_N_h@L5pD%MkE z87H_-rMhFv;D|&m^H)23ne+>Q%&^6+QW5>tA%oH^PLs+h<;u1A#yk(sVT9W-a&?*% zo-)-H$~3oVE;F*ICyr0o9fb?kaEuQGVkY=NgY5-hRFg_MOtjc}ebKd;>g!m0C_u zk*iNx!<7NGcL$W+WOB+wX!ltqeiF8f*W4`!tE{bi(+tfR%)0dnCfFl(R1OnfPGdhc z9!U4}-ubugaV$+N7E3q5dt`kWIV@&Z&b(gjl{&C^@JEWEoz;T;^V3xaIm9~NTnX%a zCQeO*jr~MVypwm8z3Fu~S0(rU^{=rXtUJGxd9eY3D^qdOFN`_Sb>YxHbkZ$*?_lg` zo4g>#XNq6UcsX)NjAl!iOThZwIJVIv6zpMoIymY1VNkbOGKCxCQGZHqF}S6pid2i% zmnJmG*ZMRPPb#1~8{3HuZUrVKhS_i$WEC_?+%Zk=6jRcbEpBjrz-S*iDAxZGS2FSP zjvcl+CnjeUj|0w{=FRhuJ0G@PDbKUl#m =!cC@pZ*To;@WO4sA zOdLx#lXMmuu#S#wk%L(q?6qUpHFG5^4aev0DI%iMwjX`Y;FN9|q#GuAO}MsFE!jCl z(ZgYmB;o*_fsjn)C5*$H8$qhz=p;hnd2tOvg%#Rdn~du!*K~Zn0WC*)k8QB5`wj>Y zYMIVnLDTuYZ$}7bih5D{$iN>(ey(_F%rtIX(WA3s&7>=Qr@Z%fDLzxBva+B3P0r#d ziJ`YTCsp4Qi}xl&I*^;qRMkTC7pH#l=&`d*{8hRNRlcq&qEogf#C2+lLc@XGC;nrB z$GGuV%UHKXQe{%~Pb*W+TaBxB7>}sj>9GE qto(Rs>luH@e zNZI7q?ee0ns`$FXlg8Z_b~){Ce)>{+fs^fglg`V{u{fh9x$CPcBpTxVXw4#O9iys_ z`@Sq_S7oz;U#EqJO-%`zhkKJ(R~HrQ>@**S1u(*7 *RPWK#qN>cvF%g|Hxe5G28e?V9OHOs#~2!ZB6`-ye}}YZ zf2sX`TT!OsDKun8Ir8U+BEYs89fK4kTg t*(EW_iL`L(<~$K50MLMrvvBJ1|R-C3j10PF@BAmQ8f8-8Y@Knb@t7bZAp?P zA#iCDl#zJ2*&;2R&3O@UE!Eu!RVPOD;T@DDOz6gg0&XZMQ7I7q&!GE%g1AWQWXc#> zG^Njv(dEy@TJBrC5G3@EIMR+F7~=zQ;%ggBKaMf}2kyo{4{H-*?8=?-feyGuR&Yx< zrwZ>s@{|bm3M0OPJHJxJCdX8pa`3UR%Td+-i7f|E> z$oBC&eS@06#LHORsKxLSHkk=ASjM6k$gL;X1qTa2C6hXZG^YQW#>6T{;cw9~>fxa) z9d@dw+v{jtmDDdHf@QTrZ)KT79^{r(ea0ATx%C3i`scQ(D2pHKYcO@QtF&!OiyUtI z-Ic8`EP>fe{{TiBxS fG z%ahcMlWWRdO00fPeV(INHx~bF+yra=nt;z!WLd@c)zaU8H`ePDb *oXteJWGRJ}Le1{Q$> zCRY29kh@L6h<~^LIu)_K_VfNwD8YhG0&L~SGbA44B|5cv2S4- Q=X`v{tw20?SV(6|sy^H*ETRJ@t+FzA*Pe&(4%n z>+9qzArtg-Y#pIRpN20+wlA=P)i>Il=(Z0HYK-IEav8}kBaWFq9@#;I&oc1^l#KZy z+D;_yM5bX;stx1W gqP;o-EXMdCx #-wtGufU{}f8^@l1r zEvcgfdBxC=#M#bg3ls Nh?SQ2n(5r^hvCxlwSHBh-WZY0>iGt5wN9t{)xF#(4&_< zsMKfi`2uf;JG+Ag&9@hRYK_wM (_g(0zt3&@lMGp)`P* zi|%?5@zqD!WA`@=A^)Cz@zQ`g@Sb|B@#%wufy|cJd;t*Ojc6X1ZnY2`QH;JOeHwp5 zoz>#h{|Z=pQqQI=-NPMqyL{rlSzoBJ4O+w~zmYYXkXvt{s0}>!?UBELQzn;DA2e=e z3x8)?f-?y@G6DP5x+j^RL#)6!ThQ$Ai&bZ)>bEJ=g&J1Y@1X~?P3wAklP*2{m~P(K zYNa4vTQ+ 8DJfv!UtjelbO$ zaNaAcNF}Fre7-`7bI8<>K=_bMmL1h%_;f8K70P==8)6Qx$!=9xr^ 2OS@K#-q$oba@Rc{(ZU{tAADCl(b$75Tbeov56|8l(H`??`_>NPDIRWI^UhL@ zh3n2toA_J0w*uSKiMTqn&z+De_AjFL-$^w^CRkp%c}T d>>rIN}%H;cU{kH}iTBvjIXz=waaWocQPM0`~DyCO|9k2^zS_|XUS(rCt zDTsnA-BNUc%gdXhkzJnmJT>p0|I)cQt#C^|7<6G?OcMy4ycO9F((#Zdd^_wb<{#`y zegJ}K1ue0z);b0jp$pRC>*nIy{A(X0c{1mmPlH$;T(k(ln1g}VQ}bw=aH!A9H*^?Y z&5q(xqk8kt)#np#;RCOVr>6?@E|aV2Or^Zb9UeWdRM6dr6F?`kCmXpAf_UO={j;Y& zVEa9NL~kH{+apZBzPq84*Ji*rRkp>maG>h%K4#IewVhnlRd4m}HeB>kA=Z1p5A+Nh zf^k;B=&0#6;9 I;HpBK@S-G zyW5s~+9}8- KA2_mF%^kc%II>h` c?D%%Y;?&C3ilE12f zZ`#syFAkxV{U~S=4MKNpPEr4{#^dGgFD+1{glE0?h5pzW |UU!wE!h$ z@-e+n=85g#8=dJ{Z}w!k(9o5wBIS(BKRvHcXn;XE?th~!AKvH+Wtzz7{WbrEOYuc| z{er%sU)VE%N6ntiah0y>bSY0XPeLKFX}O6ejG3JhI^WZw)Hd61oFepvdkEhrG?MyR znm3%eMfKqLp3?3emxl!)OzA5LX_;?RJe ;Me-G2N@y&Pbkrzvy_m<4ZDyQzb z^+V~~R9Ux6O(;3)Xl4GFqpQ_f B;K=}Jnu4i4D_H{(3Ja#d!OI`_UtvWO}f;fAul zb7~A6VctK8g*>=6#HK$U?E+20zmEvL>y`U&Yv$vjSP?h8?OUbJrqqoO8biCR7aq17 z@@9$-2pUTbK&lwNBx04aFHO1_+=^jj)j!oCIY6W-{rK%SRek5C&8A3#P{7&qpz&Bs z%zFZBqwm?i b%$ibroQpH;XPbj%0!Om;lO#<0Jw0%ib%khFbQAM$Nfns!P8c z(;CxnJ+SkSO|K nkx;)Di{Zt?RDX3knIXgyVHHC@V=b3B+9z5wQ`s_ zKLacw3B4=p pFZ;I@U%v2K+{=}lI%j>%Z&ZH08hR>ak+qbkaBv@)wT0O$ z^+N7W;6(RgNtA&6|KK}d2B`Ey4S$TC#e|Rfq5sq4$ZxJySt?OUSg6HUFO~k86ZMZT zl7Az*LF( 7xHb@9!K1yaic-8XjufAN!+|y{^7ZnezJE z8~b126WagpayI{K!vi4NF*iW3QeN6)B~{cQ3FHdSA;`Ihq9Kwy(U70X!5C%ofV73- zf9p<9XRDOB!Y7yjwEgeDhhR`;a@KU+(8OQxL9ByyTkY#W03ZDB7G_WbVS37Btva&F zfBU@S)iUqw_J)k1C(z(JUo(kYx1Lojtk0v;5u`O;V+?idqGI-E{rz*qyJ* z#YIb1v7f;AR`m}9SJnzctpsZjZ*~ew>ZCIiczSQ|{D!*o8}HBI3#0R$QPkn0fKMqM zu79N}9y()TDq8{p9rK>Jv`#$(KH6eg?Lh7j`GfP~U)h!#XFKlXC%Z#^^}6p#Mh609 zc4cU(e|{K1;>8U+DTqDVP|&8W0t%eu{1rF}YdO*aE3zX9S-70sxoJ>aSGLIKtRoa6 z0wJVMCqQ2Gbyq5rrO>&D!PyDIbhk`RN^hqha@%{oJ*^8VD{EY3T`qffA{0F`>kGYh z3K9x >5)A&VM+dIa>-$G7h&B*%(bnBW7`kv<&e zjA+4V`3^tvB>>T^EN{h3ffY0u_G$;_mH;TL>bV`1_4U)g@D!xq|M?4v@&8M5u&-tG zV;7CB;msZ`cFfhGlx=BB0xLIwT0@NXflelF zaE+evN;a8QZ4T?cxdT;Dsbw 6lXxqh0e$bM>k&Z|DWa6pfQgvGgTN3pdHC~TRJo!rC{Uvs;s#Qx=TH?#aed U9GiTOl1SS eeFJWsO{^br!ATZ8jSnURZHjq&mm$j`i0=f z+|*NSCwzPM#i(zuaA-_x4j{|yHY#zugfBL-@(|q|;?m6R^-AGp2~oP+%N x38_FM5 @%oN vfU>!y28dfYi|}O;#FZkdUt9;Do3u+DJD0JijJp9} z0fJsLSwlp4>GR@zf7K>DFx?))G+x+wegr%}UC`b5p@I5CLT9=Gc!P`fdImKgKzzuV zwe}@(vDL;mupFKK?#weJgct4Tfi%hT-* NDta48Ss{!PvDY|IEab%d4`UkgiF*D>O2Jah$i zXb#QwD1)pt2>5+&w qUQj?R?^VJMeCA{%#d*g|-X*eZN zH=WEeFmz}1HDbCdtR=ul74c}krsRRBUB`$|Bjx1nfz?_94J<+Xc8ELhgPxEnC+qoL z spG_jQLU!_3J5~fA z&0c~<_Zwr_O(9fzz4~b=$3^0pkD8AyPoGxaelgAoQ!nY}k3QjiPb^F=(Vin(RFhEm zlry)GBhpFQ*8+AxMr33b>FG;ngnuB;?ZQ3#=sR8h<1SX8TV%7cytHSx0U*>%JBbTy zuY`B$+GQCTHjK9qJ&<=_z(`(3b;?`W1p79UR673X^zWu<$3tYbQ2HWZMD@ybLP5wG zDCY3JTuOjs8JTxPtlZB@UP9+ox}iU!W~0#b62iy$epT^w>hF1h B4ck^{6&a;jcHZ_FRK R4$3_KY;oapXQlYE z$A(J?hILq1SBw4-x#-a6<7X~h5&!M&1;iH2?XrE2;%S?8>#Hljj9NZLg}cwHS%L^} zuYOMdk>fDNFXh4s+vg8z@{c3Cc^|{6-Vsf)$4d4-;Ij#8#nV7G7UN}8`AIJ3uY#lg zf_to0hc;n&K|9a&UPvLEVu{wRN5i)JmFU_CUs7Fn)$}Eo@X@5IcX2Lmf!UoH#JoJS zL0Ikke23?0$Mtoe4J|zn)mF$AT%u%+u_t5?k;BN!Wo~wB2gFojTug9=nlFH3PjImb zo=%~>r1X-uf2B3jBM}us2*xk-4!5rr5cYMV9av2e4O>vcmmgnco_9!0rQkgw5ND=% zQ2R_jI@situ#=d(@z8Q7L@U&C3vweejvqJGQgw2$aHcD3opB21@Ghil%LM&&9IE{7 z7dwmtdt3k>??5_~=82^ 1OY@)K2CVFXe#^0+7n~?3Zl+}Y#HmSE7 z>$`x@FHRNl>L9%vlQ(Gi3Q=M$@A>Yo*C9*&HdK5waQgyoq8MA$dimk-5IG3XajnV}q0}fN6tr6DRp)Z9{&_!2dA}6?%+sD)ky;qmx4CgJs zF*{-)N#1fbqNCJf-$OphT8izyBXBj4Fv2N&9tDy;7W|H=6o@(h;fSr&=kz &EYZXz)9zd~~nug!i zTOm6OXiP&K)u>5)#6V#&IlW2AiWpSIA>1K}y@;YWKnK=I2k=hw->Pj}+<08A0a3fD zIYHG?!{g+6RB`-q(jj#1?OW>uUfce`EDId^