From ccb5f8b3d1450e4717bade07d6cd2f475b51fef3 Mon Sep 17 00:00:00 2001 From: Jeremy Cohen Date: Fri, 19 Feb 2021 15:02:06 +0100 Subject: [PATCH] Update incremental strategies per fishtown-analytics/dbt-spark#141 --- .../configuring-incremental-models.md | 2 +- .../resource-configs/spark-configs.md | 92 +++++++++++++++--- ...luster-sparkconfig-partition-overwrite.png | Bin 0 -> 56330 bytes 3 files changed, 82 insertions(+), 12 deletions(-) create mode 100644 website/static/img/reference/databricks-cluster-sparkconfig-partition-overwrite.png diff --git a/website/docs/docs/building-a-dbt-project/building-models/configuring-incremental-models.md b/website/docs/docs/building-a-dbt-project/building-models/configuring-incremental-models.md index d7950c7a8ba..d21e6a55792 100644 --- a/website/docs/docs/building-a-dbt-project/building-models/configuring-incremental-models.md +++ b/website/docs/docs/building-a-dbt-project/building-models/configuring-incremental-models.md @@ -156,7 +156,7 @@ the reliability of your `unique_key`, or the availability of certain features. * [Snowflake](snowflake-configs#merge-behavior-incremental-models): `merge` (default), `delete+insert` (optional) * [BigQuery](bigquery-configs#merge-behavior-incremental-models): `merge` (default), `insert_overwrite` (optional) -* [Spark](spark-configs#incremental-models): `insert_overwrite` (default), `merge` (optional, Delta-only) +* [Spark](spark-configs#incremental-models): `append` (default), `insert_overwrite` (optional), `merge` (optional, Delta-only) ### Configuring incremental strategy diff --git a/website/docs/reference/resource-configs/spark-configs.md b/website/docs/reference/resource-configs/spark-configs.md index dc1865d6ffc..385c671e31b 100644 --- a/website/docs/reference/resource-configs/spark-configs.md +++ b/website/docs/reference/resource-configs/spark-configs.md @@ -15,7 +15,7 @@ To-do: ## Configuring tables -When materializing a model as `table`, you may include several optional configs: +When materializing a model as `table`, you may include several optional configs that are specific to the dbt-spark plugin, in addition to the standard [model configs](model-configs). | Option | Description | Required? | Example | |---------|----------------------------------------------------|-------------------------|--------------------------| @@ -27,15 +27,86 @@ When materializing a model as `table`, you may include several optional configs: ## Incremental models -The [`incremental_strategy` config](configuring-incremental-models#what-is-an-incremental_strategy) controls how dbt builds incremental models, and it can be set to one of two values: - - `insert_overwrite` (default) - - `merge` (Delta Lake only) + + + - `dbt-spark==0.19.0`: Added the `append` strategy as default for all platforms, file types, and connection methods. + + + +dbt seeks to offer useful, intuitive modeling abstractions by means of its built-in configurations and materializations. Because there is so much variance between Apache Spark clusters out in the world—not to mention the powerful features offered to Databricks users by the Delta file format and custom runtime—making sense of all the available options is an undertaking in its own right. + +For that reason, the dbt-spark plugin leans heavily on the [`incremental_strategy` config](configuring-incremental-models#what-is-an-incremental_strategy). This config tells the incremental materialization how to build models in runs beyond their first. It can be set to one of three values: + - **`append`** (default): Insert new records without updating or overwriting any existing data. + - **`insert_overwrite`**: If `partition_by` is specified, overwrite partitions in the table with new data. If no `partition_by` is specified, overwrite the entire table with new data. + - **`merge`** (Delta Lake only): Match records based on a `unique_key`; update old records, insert new ones. (If no `unique_key` is specified, all new data is inserted, similar to `append`.) + +Each of these strategies has its pros and cons, which we'll discuss below. As with any model config, `incremental_strategy` may be specified in `dbt_project.yml` or within a model file's `config()` block. + +### The `append` strategy + +Following the `append` strategy, dbt will perform an `insert into` statement with all new data. The appeal of this strategy is that it is straightforward and functional across all platforms, file types, connection methods, and Apache Spark versions. However, this strategy _cannot_ update, overwrite, or delete existing data, so it is likely to insert duplicate records for many data sources. + +Specifying `append` as the incremental strategy is optional, since it's the default strategy used when none is specified. + + + + + + +```sql +{{ config( + materialized='incremental', + incremental_strategy='append', +) }} + +-- All rows returned by this query will be appended to the existing table + +select * from {{ ref('events') }} +{% if is_incremental() %} + where event_ts > (select max(event_ts) from {{ this }}) +{% endif %} +``` + + + + + + +```sql +create temporary view spark_incremental__dbt_tmp as + + select * from analytics.events + + where event_ts >= (select max(event_ts) from {{ this }}) + +; + +insert into table analytics.spark_incremental + select `date_day`, `users` from spark_incremental__dbt_tmp +``` + + + + ### The `insert_overwrite` strategy -Apache Spark does not natively support `delete`, `update`, or `merge` statements. As such, Spark's default incremental behavior is different [from the standard](configuring-incremental-models). +This strategy is most effective when specified alongside a `partition_by` clause in your model config. dbt will run an [atomic `insert overwrite` statement](https://spark.apache.org/docs/3.0.0-preview/sql-ref-syntax-dml-insert-overwrite-table.html) that dynamically replaces all partitions included in your query. Be sure to re-select _all_ of the relevant data for a partition when using this incremental strategy. + +If no `partition_by` is specified, then the `insert_overwrite` strategy will atomically replace all contents of the table, overriding all existing data with only the new records. The column schema of the table remains the same, however. This can be desirable in some limited circumstances, since it minimizes downtime while the table contents are overwritten. The operation is comparable to running `truncate` + `insert` on other databases. For atomic replacement of Delta-formatted tables, use the `table` materialization (which runs `create or replace`) instead. + +**Usage notes:** +- This strategy is not supported for tables with `file_format: delta`. +- This strategy is not available when connecting via Databricks SQL endpoints (`method: odbc` + `endpoint`). +- If connecting via a Databricks cluster + ODBC driver (`method: odbc` + `cluster`), you **must** include `set spark.sql.sources.partitionOverwriteMode DYNAMIC` in the [cluster Spark Config](https://docs.databricks.com/clusters/configure.html#spark-config) in order for dynamic partition replacement to work (`incremental_strategy: insert_overwrite` + `partition_by`). -To use incremental models, specify a `partition_by` clause in your model config. dbt will run an [atomic `insert overwrite` statement](https://spark.apache.org/docs/3.0.0-preview/sql-ref-syntax-dml-insert-overwrite-table.html) that dynamically replaces all partitions included in your query. Be sure to re-select _all_ of the relevant data for a partition when using this incremental strategy. + iaVYM^-JKxCT>}INZb5=O zLB8~y^PETC=l%Kpd++Po?A|*&E3-5A%}M%eG&FPs8rq}C zXHQWzG#}Gk(a>=1tR*GC$Vy65eQ|NLu(mTtL;D;OuZgLpHb9c0`zt#72jS0eapS2} zt#Vjd(ge{=v(IFyvbvK9z9P1(vCH+Psc{ClynU$1W+xcDMx!F48YS$%#vo`w`{uYJZytz75bw2T z9jHp1fm!t(_vy1^8`@Eob$z+CyxtL})D0=TZqi5N*(V;=Z_&1azcbXk$G!`nMG=5y z(M_<>1m9EPZH0L}{uy5t#lVo1-5pOLB<{`F%|Wq}cus6Nx_ng=bmiHS_O5hPo>pho zq=`F|Z~cK~Kwp%tQNUMv?Q_UnU3ER1WhMCPk+x922`!QhgkvJo@ zv|H#r1<&S?K&9VN@{=jWKR8j}XJ4*;mi5ysmC1}}jogsH)x;6h*Xvgdntiq=E#WEk ztJfmTPAly^`k!BAh%}F$oosHo(^HdXS^pu(|r+RmC9i+yuLuS9)!V|K|2{&&}sB~K6N3vvUmDlahyF(;ozb2(nG7lz5)7c<~ur~s(O?0J99MYa1vcIJL zRI(S4zH<8YxJ$1xOae>DJo*y@C8ag zWk0S}i39!EVSQ#YQe0>)B`yLXl;R|>) zS3E&I9WH$IYV9$>latj}2_AXQ4OU`d|2M~CEvH87T^^^#YLO4#cfT*ff}ZnKy@@ax ze=l!2{_E98TzVOz_aTvuSQO!yYgI>Yuv0M)f|2-J$2}QGN#jZ$;*E0KR10Y=Y%#t> zo3F+nUBBn4>%VCxX(Zn`>+L$C>c>lVrgM0#=fu7p91$!&w)ACaqPwgVdynj(-TY`8 zGCmu#*w5hkN+1q#w6D-iwCMd)T6?czFDH`6ws0veE5`B8wXL`f?c&3-j!9VMlUYW@ zEBB|iy>HNPghF{t;8k66!nMs5MHn zgAskn)ambt;6Jgo?XCa>)s2L0d(RSrQ-g)j1|1`A&d*bdZi1+WYYg3JrP0s@@NjXt zK@&YUPmbi@FWl=Jy5SuyeriBlIiqfq(8!%x9mILmM(ehs#PxLR&l~KRtnJKXM9RpNFpEW4i^OZvw=qal%%nv7AP!Hl88HY2Gb??OIFvB#F1To8<%PF#fvHvDVXsh=EE0t=Agg)lC6fL_VX5 zRd}Uj-cdx(Pe(iTSFj^{)tp2{i8BM(JD}^}Bd=R@zt`-^X$+n6YbcreDn} z@a?TKNwj5jVoXD9YCmaz`i5U9MNbBylx+Tn>XsT4BOop|PACpKKR>TAe?M)?JTIa{nf?)& z=eqOwM$e15HN!9DULv^Ew4`e$IajSzEz4CL?yuCqrVUj}%o&2D=ji5nf4*#XsGyJ> z(`PrR5O)k&a%ko9Qa+cxald(S^Y||C26h&;CuU}ZYx^{~!;;0w&N9u+?G3?m#Pi0d zO;0zUioLFVefDaX%-0u`Nz=wqwsAPT(6Y1}&$4jjTx{2-6H zqq{E0gRF+_$aHnyh!Kgv2;azs1qgHxXT2rQ}+n{qft2G;5 zm29qN>pGNRw`a**t#9i+c#)pos-LoW>HgeZc|QWtbkTEBcL98Bh4&6mjl7t=oS%^V z?(OMYK0yOFiS(9qDJ69!(lixIO3SKK8TiGEA206T)4VVKqzBAuuGA0Jv(Y~QbLyMw z%j=Qp8HU%sPX6H1)35ek4D1Qs1lt3_`{jqC^R3;j19$Pkv6#y_gX^L6BV3cN<(4^c zd3H38@N zWs(?KLK2yk3bfbk*!qqMoS1Sb|@rWTeKRtYg`S`**y*3TvVY5nv4 z84QPo$ttW9Kem&$i6@{<7J8x$K`^d);2C0q-lXt@?1w#5if+N4L6g+p-=;EA+B{oI zY4&L}U%(l^tO$_dAJe@;oO722_P(K@N#fHC4R zhQ`f&O`pOl;wd_u?1X6K1H#D!94;DNcj$K3&U$fGWo&vQ!O(^f>X+&b$* zE{F=0g}DaIRPS@UVgYogbd>!xX8Gm^qqqHGaP?EKnnrE1YOkxe_d55k9}A7@e#^h2 z(PQ-aMIP76iL_SwGFqI*rt-5;Vv2R^Cp64(O9t*R>YGTK*}&yUCB_PJ{I2oQqT^ji z8;!DyN$7Rlj@o?Q=%lK3-_*Av+x&}u6EmTWpFY_wRpV&)Q<<9l3~g!)?AUC@OuMNG zg8P5mT6cc!z%BVlw1n4Xoz0G;xQ>%=lgnyYEJrc{AYSi_8G-(^Qh_qpGB{frOn}{H zsr)+b+Vd2|?#!&MePZ!(-akLk0te3ObEQ88tjjx7)!sQjeA2$$^30INV5)xB^|-kw za|qqsa%gdoc~FdPm0bWCfW(g%!(|yUn6DqUoXg+r-u$%*)%a05Tc_%1emodl(py?= zIHIFpe>0LYU_1KNL*33mUb{pKrt(^Mu5r|2@dQ8#4Vy76!!DTzcer(}JwN2d<~5jq z*<9pMGq-gzLRtT_VPW=7U0vIJd9w+bv+hKFA55(w^Je0(FNK^=Xb|W#&p0<%#q10X zd9$37vX~D}oX)Nboi7(5y3o62ye;SzOl&UmPWB$U{O%j-JLWffdp&=jbXSIXi#K&= zf*cA82oEqn|9lsIlkrqV@{_5TDKcv!SSR&yD&GC>&EBZR&{lC*P;er7)>~~4vlXl3 zi6s(i`OB&_Q+!?eh9yzagR6KVQ{~$9Z~@PohW_QqOp{DOFTriM)8ubl!J{|n_WW?y z^81#{>wtFe2fxaZg0g%6!@%CKd(zbTPj!?{FI{$KH;;ze^;Zo9fIJ5_$htUNzH;Tp zC1**e^_`L1RCY(=#ocz1L%da`IsHX2@uk9{`oro~-x6MCWY=ZaVJ0a0Y~@1oz6&0; z5hd!*=A+=Pcig=uJE9gkD2&wu+s<+wY3Kx2BY(WEK)(7{mIs<;Qrc-P026?+-tw;nML}XkRdeHXVfv zFuwU#&UMJ(V2EGiWWL4zqCA$B|H8ArAUGuqTUp{q+xPEK3$*AIv@062SKG_{97ond zxEFM2tZLJiU-Af6la0ed*9o~m%vUl~a7cyAZ9V4Tvz9*%ckO5~%8{+^L6U#nk5F?h zSqnu)G$vH}85;VdH)t5B(j!z7eMI)}vdkj}v?u?le~g9}Y>kHguQp1k{O=QuN`GmAZY4n&t`1qXkyOhVej;}A2eYPK~&M++|8KE z!`{xpRnS9(`X4O>QRTnY?9^2MXyRroLan9vg-X)V#hi+ljf0JYS`?d#ib~kU%tBCA zO6Fhas5cR6D>pYML3VZ^5Xc7PVsmt{Wd9%_Ai&PS$gnKS?7`~b`u?At z{6{}h=B}nL)=qBLjt*3R`!zOk1h|P%Q~w?4-_JkiY3^bDpCdWA{%cvN1+xEzuzz6V zVE=dDC{*FUwSr%)Ji@Rp*Du5?nRC)RivK4y z{sX-u()54O=|3Qk|KEcDO^Sa}{{QXpfAY%z|12#Y^X&Fyi2Wdpz0C=dujqOT9|P)x z-2wW|ZqBSawG5MlR!<)j6ykhOULFCcwcmI6ioxljMZRRvI!Q8UKEN1m{9(RusG0LQ zN{Ft}Egr67Q+ZD@FYDTQ0b1FBM!Gs%Sn&y88mpZKx`mHWpD(X(J*292VbXq)&|Zh6 z1#=YHv zUuSFr4`7GzCUcRYQTaM&RucVO+?jB7lzhr5{+7jZZ})hy@hvP9DE7d)Ts95PL7p1e zCZv!K1&FggCfq(~IaLClj_^U>6g&bSwt zLLJmVH?m~5aPKTpciD+jDOtV3Jgpj@QvQHVzQ@DPHJ$mbyD8Wp9pT__+4;kI(?~wErvgv3px3)B_C5|^U$~dN;a`+DMNTgBIeOfhUT!Bbt_JD} zD=qV#UoINjFZGp8lt{XKy-E-J-d#yC#B$(fuJ?GJvN@}<~v!H~JhLdUYL5X;j1`Tj&3H9CyGPwBZt?dZq!vAo(QvAZ=2AJ1Qq zR(Fwh#F8I*lb*tyx{SZ|N7SbLd|$qiR{dY-aD&7b-xq5?0o6*Lf#!Jo7%K_+w~=H{$UYW4&Dnq zURuwoLoV;=YV2CD#qHaKi~goq0SccEREmJ+3ff@~ix}|z{V|_igCl=k{0B79B!%tE z+7TVi)+^7OGHXvbWavj2zIKIKw!SHO&hyoHQdO=bqhPL#Xa0%kIYRf`{53ttt+ZSm zeTmDStDc97-ryN5XNETTMpA2Uq1~mtVs0>!nZid*@6cvA?nDyWRf4xXetxoM!j{Ur zj@bZfQVy1Nc<9RK$p@J(Ko8<{d#4C7AoD`TP(O#ukF7QlOmW{2MuP3Zp}Nib_AlI` zPBV(sGP^WPjFv|a(hTvP!s_HMFF@Y63c$69ifL|?YE1uyFccqF9Pv~GZ|EI9<0@9Qx?T&QPN;kWb7iChil4i_76_~yWS{K*m1uxK5^W)z` zIBP{_U2EUynyAzf&LJ)Ly!XaE49DM#A%36F3aaT}<4h}l9LD)NB??a_4 zV==9kDdf$0;eAbFVCOdFla38-9^oOtus-OF>X5a83L!{RqJfwhwckN9Ro$&gZ#jaJ z;0EV-STkc2S6ml{up&dERAIHKGm16Jo6W%~(s_W9azpc_of^#R2r8mYad<(k2%i9a z!pAiLI_n-^f+B8b2i|+zQ|1wPGwcOMMY3}V*xS|GSVA4I^YnDv5tnz>8}TH|@XZPL z6w+1F^Ej6x_9_+l#YJrRZoqfry5(#& zF0-s@V*^s96&= z?QpOj6ZdVN^*hNLueo#1uQWbi9lls-Otfvk@?T#H;)_=%LTKzPjoQywcu*_@=I*sB zA$4?#!PfforYUPE!?A>39>rMxCBNq!TF*6rJ9&vgtb$ufrVHOODUzB2@HE#*F!BK0 z)hLN4&`s`lwORy;hy2-Mn>B}#S}uR!{h@Dj`vf%C$r?+0MgzOWWf%Ppr1x3JYx4PO zrA58a)NVjOt+uH`S?$`}zKjbgTdD~F&xr9S5$8Nd7s}B_LMS$P@+U9oVqT8aY2_e6?nzy2BxQ|bpvi9yDOmV*p$_$dcd8Efh% z_{gZG$ZO$YrDaD}z9}3BPAosdzTwCt<7&(+r#Wu#{q>5L#QCIQ0l-aLTRMOwH>ZgC z$!4F>$R+904PvkImHj$vpQCD*?F2g5XKCsr4Os>%Vu)?LoYmHCk|x!rqGrN%2e*s9 z=-rDFrlCD5m?INKT>WGy)!wT$iL6|#r%`~EIsCB2+mT)4^Pz~Ca&QS zhOC`iZv*Wc#E3hq63%|vTfwfk631Cye4Uwr`)c%m(4atPGN^<+7bmaw@qDtj_`z~% zj7QM^m>+3C*`c&wOhnnfUv+WfyUUs)_-lekbeY8%d_I~rPNX#K7D`f`(QLH)^y_x@ ziG$Q@Wv5Oo`bNu)qFpKB>y6lQU!)t<*b`>oa@=byKcf%Szl;LizCY9$N#z@>vzwbd zJnUpkVDdSJD2p}ClQ zf;}XG=JKh`Wp+XsTS~)&HbX`8S)FTDVXgCXVnp|P>fGr<$2~@ZXPy3P*B7XE)oxO8 ziB_JwTg2QA`}=?++L)c=nueJbqrvy|#)@Dq8v z4^CeO?-@Q{rx3OeQ)u4_hb`j@>~Y^w0(C_^PH5o~Adv96E^y^Rgz~BNolIJ-_Es9> zkMHH=1<23E^nDtEb(EY_1&~>rkAe}+*zP(pYOPk*`!v$^L%v#7odf25R~%4ZpGI3Y z@L^ua!7X?RFZL}$&F5{}ueJBkTSap{eGDP{F}>xnw#^-;pp)L%21{Nwzk2C2!_~!a zke|g{SxbWLAeQ}hG<dPQF0Oum=$+EeHZPO;M7_vz8r}5c z)_w4bOWiyHlP<0LZw?oI;+;;_A9_FY87{7D(D^ljkiSM0)%jFuU;0_zLJyuFQm{du z+kQJlKM?W=jE>{NRk)pK*7$&A8ZIy|15a|Qhp0jg*lO;M?RMiLJyy9cv)c!l9%2<> z^)uM=!C~fk@MFQ1Z%-DGhwYU0$kkv<_jDmkQtVOwbzDA+;aAWiHG1IPIW*Yw3_hi% z45+afaS6c0cMo{_+=c0a!yTb@Iq`{7AaK0AVaZF0dfC8xe^aMU4tVSbPX|i0HEA09 zPAg`Lia;)OY|A$5VGcqKFbD8;>X1Lqnk2r+28HLw3uu8dB@j{7CpaSJvhkVEW{Lrt zubBEp_shxJy0D==Sklo$~d9GGfU1v#%P^25$| zACwV>Dqmn!vP>YKuq(SMN8K&dU1nLG9B@Da3Mu?Sb<&iEBF@ghf_5O&+3?NV-A{l1V(4yOk;da{zWf+tBtK8@E4z zDS6niFBV-q9sh(^V;S*ox!re;{#Y~fi^%|y=(5H92OC&x$e4a@%(B5b5U|7`tlHQ1 zgYpix=%{wfIj}Xi^9YHpGQS~O~UINsK^A%upYj$U>789=BnN6W4Ncmc=NL1 zrMcjP8^s{D`EPjj9h(pDaEU7w2^-D}#MfxKF^g)XuUpU}``Y=$DMX~eF5?AhS2rWb zZDjtsw4k$%jJ~j6ps$i7;Ywhab>;*`{+DwVIcH&{b?! z>gRrv*W8(8d1G5}GvT$Az;{OT@K&_ratG<sc9G`?~B zXYQ%v<~C4dLL=Xz?NdsHYu+4;?Yt~iIPTHdkgT$gh}sa2&R&DXA)c}K*{8LcPi@bM zyCF4g$;FJeB6S7>`wVUrt!bVoBTV1Do-fny92|0072)R`oib*upE+**u%GtK!X9BN z|D`dljc_y6X;BO#SSxY$>Lgum3Nav!!7Sf0Y-=_eH7O$zE}3`fL%Mz$`Wg?w@tqOg z4Jg}^>{ZOH+F?GgF+uriLDRCT*^W)FDM)}zUlAm4qs>BW_5loe^H5MFRt7 zwVo9>i!%3$b|Z3e6(G*8^j#r8x{SP$#EXk95q7uxo_6W#;JXbULbeKiyMQ9a7ISVpA)825ZjH3C{ z%`W-uR~$y)gdT2BC13pXNMmZs0L*9~|JGSn&%4-&RUXA{Ukhbkh~Qh=*3bv27Z5Cp z-LB#%JKx=$4>8XcdGxm5pI2}wk7bA~@<8?0o87dd@mU~R7=8ovvpe}`sq%*XO`FYG z1F;hD_GDqo(PMHuEO+aCTY33Rah=uIunOp6dNc5WBiX_1lb(nmTp%-{kJkRRA|UC< zgqlOS*NS@IUdwW+niF1!N$q!|#JguUKaC0^i_pJ+$n=Q^Ji-nXHLtkmIpMK38S!4I ztC;HVd&!sGaI|$@;3@}Cm`gP%tQ`H}gXG_%1Cf<}L zMRx_h*N%oQA4$R_uO&>@PfaKvejO*JlWb_-PWOyiN-fM1u`MfA2ir@}(Tc>a0m4Ma z-O_g7Mi(6ojo#Cm>9df`yMewe>1em4`QX|K(9!HRU}MQ@#ZIeNLI8U!Loyf>625V| zEuXUITn&DT9S0Q)L#?5HschFpiCXs$M(4+`l}>+RBkz3m^0PmZG{qzr z-h@fjF6k%WvQNdXBQ71DBwqGS`DfE5bg|*>Pjhve-siP+_uAFRjlmjXfgGF@C8DR@ z0*GJI^tEDV2(cd0paBaJA@&3EU(Mz-A0Z*>SK9`SUSoNkVbI#^y5);kQ#CR_a(<{` zl{MKVft;rY+W(ZfmGF0rx+k%PdgC9EFLmy*)(dXVTsJO+DbILLlHs>rNAKjqeAhD^ zlHKhW&a}mv!MFUa>WOn?l=^z{D}d4pjoj*WPFgbkPI|(Fg*L_ft_n=tbUn^MD@K9h z;QEzpXvrG&vXsjey`Qkfeu?1E?x`bS4GngwQT*i3xoG=&ywcUZN^CS{m%0og?J z64CDn{2cQ0CASBe>9CK}_!P$%L%s&5bB(J@i{SS5S3B94alj`H_Fpj9@=f{hNIM%L zr5L+(IbkUd6ij>fW1osUg}9aYT=%ASfV6W%?Cpq1{_kwORCyz^G?8+zZ^ zqT@FW_p=x(RMt!oPPi|5T0&7K!sVQ0W|Q|p6TJt_x}}@jb45D|(dfMH4^Qu%tA^@9 zyuCcw+knfyP<_wM_}7m(@aA|rlqh^SiLiJoB!IMQd7iV33mO8*`@2I>@HO|{^27aQ zY1SX(Y;0t#d?m!w_*%1e?!*D&ISZG$9HFU8<EZU56tnPJVzl#xamEbRpPG z^Ti`mPu^tTPy2sHQ!YD{VpFn`LfqGOsFj) zv0lG+D$}{ZM#g%madH`~+|t(>yRW7?r~NdSib3~u4LM;JcUHCM*MccwKZ z3b!LabCHGSXQU_MQoOiqE?mQ& zR@7c)#446f3S5+5ZhTF_5^AHly*S06=hTno6F81J67d{){$%eOZgF_+HzG-Sg?W>5 zZO+~dPhSzpv%onY)gX4auNfsjB`C!S*r3xpbUoKM^liT?Ank)51@f3(qYEvvZ^Q#2 zM3j~;l*|&l;t#`C`CqgGy9dh!OmdEH&DT?q1sU>Xa(3l!-PdTwnu1&SS`-XiHTJzn zTMT_DZy@283FYyNg0+CtTjx>};%4a36#Mx3bSIZ$rP^5YNj-BeF1vcXE8sq|O#5mi ztLMm6^Y@!k)q19?<}7>H`Sn#ZMfu8Nvb7~rVKNHtwNy3LO8Fs66UX}6NagezMVXKU zBzS3lNNLG+WPAWytoVTe=fW0`x6_S<}yjkN`iQb_jY@u4qCtO zAKFC-*=V|43sc9krA@N0mYs$*2_3d@DOB*P`?}}FYZOo1=0u6^DhX`HaVQu#li5{% zymIhQS8O?-(Z$4X;m0&ot&G(IE_uSuLoFG6G$}yG%{t!kx5@IAVXb?UE%Nc*9#Gc| zJP(?1%H7kf{+I6b9kTgk%_o&TOTd#Pk=x>lWK4D;(0VX57hX9(88Lk_jA)W&2QF0l zz0r%I177Epdp2oc%953g%LXbsY)FPdFS8>J%5$|PVLvg1_S@}-s?3?ccC=)@K!nSU zD0`;K4JXJt2|+ZO!zD#u(lH&Pdsn$vi2-XX%n5bf+6FJq-)$8CDdPB8vvJ2uf>=A% zTT)5Ac}Y^$gEhy~@}+~Vtl2QFZ=3T$)w$Issx-*%Q_E=lkx1LtCLscQ=Se=6d+*@Q zr{l2Iq>-0L=}Gv(#@WF8&PE5+$P&m1hFd6M>rXn{EUzV}?lBq8=*6K{g= ze+EjK%a3FW>tk1iVhD|tdXAl8JkdBZY0&0n|3VbboqknJNuKF=@(X!7V#qSAs?;5BQtj1?F zwIhbjJ_ookxdkLl`W*1a#>+x=`STvBVes^UO4}cQ{pCy%N7zxNA#^iuvozwh84+vj zKJ!RN)B9qV-Z|Ik{0|*U%dspx3PYj$%HWC@1{=MXS^RF729$WI?yNsyR!YmKSnh-| zUqdw6X=S{XSx#4`>V~AINn5%Gk+BvSc3vS4S^d2#jJz_M!SxPXho{V}n(84l=t8Lu z`s~yL$vrN!Hp{*Ki)?NC{I%*7gZM3+0~SEo&0{8Kk0RBTh2w>*aZ5#PC2RlmG)p(- z=;zBeJ;Pqx4Pw5xr=a*Gy48u!_B}3T-i`xP%1~rDs6KHZOsR-WVPT3R#Oi%3n@MLD zwfD;{rZ5blMP+wbp=HFHoR|mZJ9ULb!1<*_dLn1*(XS&$*Z{tK23bxkWJ;)QJI$`W zqgAqQ`zS}^;cKoD5FQesAEm@2Nkp93y11jxwstHni07>6)oPWw_f4gxQGt(MNZXY- zJ(@4A_{FY?iGYg4lZniL2T`V$*3iZ2b+?n>hZ>cg%2}|_E z_(YCnXE*o@;y*+;{-zn_Je{4s9HQ`8zUzZ8#OWVOpH35IHwE>*OQoCLNn6?(E)KQv zLTlM+jIa&#my=S(s8(7+^7#c6@G_6MEvjS6Elq6!;umC`=f}eMkhll>k}vCa-b~7{ z%xZfB?xZT^>51Ea4_&9vV?US9dlJ`HVP#06AnL9J6zxs0b z>9WW7R%E;-5&H$=%m@e_NS*F~ly70$A?C+Wap>N?r^~p!$23bkiD}2up)`Dsc3q1< zN4aX~)4Sw8aF=C!)1h0TmovCU{NTNO2Nn$RVp-`u9fX}`?>c?l-1+q-`6YtlelJ1v zYYRYFcc#)FCB;=(-*_y}#OS=E-VqZ-(@I11{Plg2^Tr=XHlmK%gN#Vw$>5RTZn?^c zp5kWec=+IpC1wSvO0p`(?P$ArT+b-JvADEO!*wv~WnyDA&GIs_W zi=Ss&wxZ>yxe->a5iD_cC}kB6-qFD<_RRx`Q~+G7k^(1fxAjb*WgC(C;LoKu!?7q` z-mbIc#JRZ~m3iGI{_siQ;eM|mw#UF7#glUF)}9A67mPO47RTR#3DwW21K$lXvy*_^ zPkryPrm6E!=H_^qO2skmi}*X(cGf5lxi%A23-~X*=jB(l%N0bUO`Ztl)~OG4Z3JEn&}TOCEqQdc zqI8^+fAR^WC*KLug)b(|)sGH7hZ-*H`<_oHuMV((qV#n;s#e?HGmR2Sc$v$kNn0>5$FniLT=rp_ISr z?{Swvss5ogw#-~@$5XQ^BTMpne!KT`2~tNRN?zQ!yd6qnYf`;8WoFyh?T7Hi&Hep^ zAU?iW(r*+j-MZ4=!#F+s+tOXM!KIpAII!M1%PjkD|MX6BO~n@mW%j;IWAU_EGL>Ni zUwxw_E7rPq>I(E$0*x<0ShNAk#n`aHO$-B86~j&!@CFwYh;8GXPIi+<*-oV1mffk*LMXNN(k4fr5cTdIUG+b}>3ym6zNsDK6 zi`3{qDYGRjaS9Yb!k9?~JVug?o01Xak8H{+Bl-`l7u*_TC1$bSN%Y z+pk_Lcaj^W$6Ppf-+qA9pPe-wH+x2Ldm0ohQtomorx+EG#yxno$oc4H?Gd(B>Uw2< z-pl`q<~i2`dx_)jedF5Fdihvko>{bSQ48ca#j^z!RW4;QAiYa?1(s-_mDH+ABjC1o ztqvtZ4CAoa)8_+brrv3=rKV<YJF6O`w@X!hQse7gO z5sc(>wWhZawx&fM74TDM53krEF5)Dxg9C6^$IyxDvB~HnyXqj7Hc}BedTY#+C3KbN}6B5`Q+_@C{g+3=(cX1G6W1H6ke<7 z;rj{{tX;%J);=4MGimbJuzgR0Fu^afv+u>nd*)upsCdfW=q_}*!(q~>Z0c+UcoR0S z)_lZ~7tEAQp`>m+;?hj9%IsJy=#$bj#L>al#@>4!`s=h0LQFktE_5)74(8{x&w|D1 zEz4c$lXjGkiy9T7gK0q0GQyV!@OPR?6bk0Y&8e?`r-^FbI&^Iyv_XBo-FE6VsHItV z%C?B78g?l>o4EX^MzCpU()xfQW}%I#&jg1RP@{m|Of<8E{WcJwvAzYakc3T%x$X3tzcWB2_A=*cAA! zostpXmN!f?TJbg<1H5e4WMUH!N9mWLap(IMeA}73_tt}$g-*Vk79(4F@o5E&59KJ0 zpb77FFscep-xqF55#7^Q+RSG9z+~+u{}8ONIo4>}ORYVx8v_!($pRlAr%?a?!BW)a z3ufOmI3lm(Yr*`?+rgH4MDh<#U%t=X%#wEqyVKaLa?O^jZLWfIVTF)X7m!tkI<>4k z$Z}LF71U*2tT8q6wh)S{6G#}iaT41^!*$uz9zDYmQMW3+A5f@-Ikw*|9QRRX)`dJE z+aHErdPfJRC-9jMzPwCbzReH%T(HVq-e_`F@I_nQDc+n2Vc@kx3(c0^C-X%)Oya=3 zvIdKUJXCZ85{frB+Wd%^lRD9;prNP_$=6J>^jmR8;CEz^phw9~!_-9r%1wEhQ0_{f zX=Isx-B?p#{+Z@01|4yt=e%a8>L+Sz=cV|K#{64deB!ZIE)hF_!5ioD^xA#ZXLHBX z#4q<(8(-O5X+Lwf?k)+M3uy7vW(r2AX-0%d9>%$9tZL4&;4y1nl@PwtO|oOlVpcjd z!p~)5aK6`9zYcZ5azDPSA?P?D$ONBIWp;5|Tl?$3J<#2Dr-4=c_t9@POyTfFr0Jq&0-&%yZ$~l5PjbFW5(-2Vol93>_^>k~WVg*CNZ~G|JX-BZW4{Ho?;k=#l zC5cL*R-V~Ku>(^WWIh{?^}4O5&r;EBbZ3wG30v*0sj+yZSb~OZ ztT5_&dWAT_^n^};i3H*1!;n@@5GKjQW2i4&?S9ll_|>lk)5T)T({tS&%deh%B#5|n?}?Xv zjduR&^ApZgjvZKrK5#Y8uf))CC$3hsFEKGQtfX}xiLXP9603Fd=-SsEzv5p-fqEZ~{Q{33T-v=P&sG_W=*(Z-uH>ET(MoS1ylv|kHR63_&lYz#QeRvH_>A+~Eo zR1b9mi4eRnJ1*dH52>a7I_k>6{rxA6O)>Aycufhv$DYkaZ%Prr1Mpn_Mnmq+13tQ( zVG+?aF1o{5!%^WYFK3t>Te(r57;)mP%Mk10>6qAIq{ziAN0ZCRqH`a4xne4>b&V#X zQqO;p2OpGlJf&VvNSl!OnG&v78R>8C}n0% zyq`7$WOjK~KsV{>+JGN60%v`>Op1N%GUbx`i|1=)?C1O6_!DvVhZyOzNES*=l*$hL zw#%>c%3r@_$<>!6pzjr2@>D%}M&XS-C*fqT`k-YEO1=n+yUGSX7gH3H zXVf;nNppF5>%Pro{0pTkZ&w@!3}W}^$x<7+NZ{Gb-CbM4(wHo3-|j4_PqNgQ8ndDX~FO|g5nbPApr(6*H8x3O?!XiPzy#xIo$djaibxLH;Dg z!rsXJ2Jl>srBH}ZwcQYCzYe-!986A})eq+-KvYwzUr<#r?lR3< z&tHB29FG_Kjy*-j5d^%0K~`DqZvFcy`~ZiZ8{uWD%jG4H%Qj={Fvn(V*mVzt&&j`j zpF40yak({e7fhbgFj-oJQWIDYuKQtHXfwLaIws%W_|*cyu=^o*nC6eXfOxfS;IeCK0Y9&$Lxnr&t2w>;7b8#?{1 z(#H3ghN4Wa_RTOuKCpW505OvW+#n1{|0 z77)Jau^?=B=W~@10qe0VllRK*A>xBiELSr&X=aO-1ur1UO4bQqv4mO2R>4aHpP_!q zp=Jy`8d;}>l`<$hp7)anK3Kc0B2RR7NmPozoS@{Gv(>D1(R&!RikeF=2#=(OVaGuZ zW6eT?s7`k4n0_LO$a~COZy9CWq3yLEhrEO$Gus*eboWv~P)#6tcIYRV!!Y6CpqLhgqzNp(F-7d_$W z#@nbLc>TOh$=_2TJpPq$;h4JIV703qbxnQZr{ta+F%DNpt864_v4JeyS!{@tpji6f z2!9+lCtbTL=_?0ylf5#fukMXPD2iuQZ2h8Z2(K=;(HOf5ZmYxVu>Z|?b zJY+H!fVxZSmyA!KG}K+Ut?pG%L1}~f5|mA&^YFz*65y95!K0t}}40z0dcp&G-9U*SYq; zwU~3hzGIB1pZmFof;E@t@~hq(fEUq=ki~!FHD@i@qM9mHzaF3B@{!(g<>+IMss_3w z#PaSG<72~l+tV16d+1z8Fd+r5BYhgAZby&SEd6bCmzO(BFwF}uTJl!8Eu)M5=mNQJ z`H>~KqAk}lD@!jqkQ`X}%)MODcAbOYE(ga@e+IhIrGMjz$U0;=BMZC-g!)HOBK2T%7XymY9bgdNjM zOv)7&h6J}qdhLB7nodO!U2?^wmJ?2M``4q0zp(Gb-d*qy*ta&VM-%C~gXUrtMjW1U zQqJDY0)H|+UZd1j=It@dRw)kS zu>IHP%i+SiT>e9el%UUI)2BQE5IQ@(Xv1&@EH%TE8a^pO3woJHCZA5+II_&Xl#)mq5#YFS0Y$>9Xj;-m3TM5u$e15fuRwMiQ*!tL&i-g^2hZ2d(}Etd^s# zZ^2#%b%h%^ilyc~jwW+dy;8K3ow^QvPxDD8c$*&Om|M_|f^;A^j*;mk%3gN5Qd^mv zQF>@XN+DymMarZEMp2c9rXX}d<4`Ctc$h=;HHjECmGDyd+i;bb4e#bVm$DL9TIyJx zoa#y$e=D;DMUTm)Z+x@8w#)@-E_d2&B`CZRA&u<~3{?V-!!ET|vLeC^mX;&-KIaDiz$TvTQ~T$j?RA6QQwFEhqmuv_u3 zP?u6Eo*u2}6KI^p)gNGB22x4mL?NN|SZ_gsY}@3dXE+aP{K&&pop_Qo_FB zxbyL1NW9Tax0LtdDO9V*x~rbQ{QNrZSiNq3T-^m5;Mrdg$;S#wD~$`N3-^1<-x^Q z-RWk;_Z#T81U2R}fT3p8MyHdWWpG357$=c<-b8~`1pvHvtl>3(GH;SK@6mcIc2Z>z zoX#ZZelsWY7pQ}E%rCdxKzfI$e4~zs1rUQ`Ui*f*L-`Bbm&7j*+X^5& zpm3Xl^V&VP3CcNPTsJfoZ!XdkZ{^up{hp#Eb41>oPr-6((F#C6{l8JmH_QC|ki~4T zW>!X+sLu5aK7=)bNk-$V7cdDqQL3F3+unpTp6@U0942XM1h(h&j#N10k}0OUNcl+( zIGs>evV2Ra$XVW6TGY^-8@XgRu7y4DdtRawTUkRMoHtYX=BM1m%0(si^1IfMsogXQ)!^Uwz*o_zt^ zk%7I(PoZlkv`Y@jMg;n!CO{l-nPNX8nb22r0cT`#DOCnEl}adWb%Df~*&#XZuy}5q za>Bl^hBRrdU0uH3RK~0oCseta%->joC;VB1vd7O{{o8|bvR>0E+qISCJlN3BN8iT` zs~`l;Rz*-f$hcdo3)ckj9r-cr(N()wU2 zmKKyT{Xl|6H+G{>HxLZfXxyBc2*aFNY3U+LpJEfsh&|2WH8-h0pO3U`cCMvTAgC2h z8-N$Y!CJ7hP-&KLdd|5wv6UH+*~|S7-@_)2Ox+Fjc!>8yij2RKGLaDRbzaj<@Zl`-U?f^?GB;EG_v?9S2BL3UslZYfEuKR?+8>YD{+;Iyark- zB?~6awulto5tqXW#{X053%p?BQi8Fz{b*7+y8 zim03R;;|J2Vm+J^h=r0~OobR$A4{3EwJ-*k!}l+ItXAn}^43$Uwr18}WlBdmG;zml z<|Ar_HV}zwqn2gD5BbJSDGDSY8<^!3l2Eq?+prC)l%U zzAyqnptCHie7|~-khkyDZxt8YttVnEgW{HPn#cXX*)O`Lo`!#G*Oa2Vac@?DE$m^$y^0T4J-&yokuRZ>1}yGM!1=W9DP;*nGQ}z_-~% zZ?>%t3j+|Uo1S}nmZpm;Y5|R+#RL}$$PKbQKU~V{TEs1vA=2=QillNW=4F)E5^Zxy zw~bYCu8BrYdpGIqL)9(I?%JSouo!AK3e~W1@u^4K#fHq(<}rrL@4hIqYJeY@l~cUM zhj;AUeA>0Hd)WBXx7QG<5vwguR|zUMjxQ3u9N$I1-yTK@k2B63YO%QDNUhHE3bz~1 zQsSpIxH^7&ZRoY@vB;aGKUzk+N5fknwZa6#@#N7k(m8e-uW7k0r!y@#r3e?c7CvjQ z(~1v+y9*7%wW(dp$8%KQ%<#|;O|vr?^X=1Sjhdh$&nX~3GdCtD7^}0j-#6m<523+3 zmUVxnm0woUu=Vjm!GL!{?Q*zLsMOv5k$-{SOO7Nk_2DjqS*wL%_>K|NteZ;0JbCx4 zwHMoHDBhhz=&EUQwx&znY3p+BNGF%2brkA$Wm~9e{ee5@miV1@vD1{+80}6cRf^va zPL1KE)sxeU0Ro}lit1iWCx=K2Wzu!{!>fmRB$20%mFdq`;#Fo2r;hgkYH!-Q#o6^X z+5nA<6P+(RY_VM0yh$x5Rf8?9S^bH} zFgB0zq9f?G=rh(Cy3tIz;n55|t4{Q|MNp)sUj3rjYGAafyL5Im?wB45-7%itzCTu3GHr?8Mi`GpGcMXf4c62F zud-wGqPpg#<%&A=@|L*3m1F)w&2-v<`fPnAnSu;`>h@!n7aoJ}_dBPR!r~oo`ON5x zX~-jX9jFT5NrBKW+Ll-KJ;q}f2nCB(K2q!DEI|wHwJ#v3vJ{$6sXx6Ln@HTfiURZI zjG5XB&Q>FCxnCRgTZe25^8;JgZ<{mtGTXd&&aHdOgXbo!dg^IDyPTwRU-VB|Me^e} zrybeV#%^4s7oX+$mkl|nW*1At?fpDa9eRQ45QD|NdzXu+Thu&Lbk%@5 zO8wc%kiPIYsidu{gX*4bve?AuUhSJNut9r^HL`cx^Gab`v*_cJ^d850j`Q;TpFGR` zQbjkfzO;N{Q&|r!#^FEr;wxvzMcX`DF9(hE0^ZQki{jyTCn2w{613NSs{#I2hCuOm zO@WYZ~BM!bQBZQat5I1Lnr9 z&roT|J+cCeuRdvWa-qG={1WP*tk!k2(zHB(y}kA2RFKx>Jcay4aYU@p&qN?b&>f5U6ZXL^Y`y$ z@6q0r`JSyRt@FA>$Eyc*3fp>UH)gzzq^zhQdSmtkwej6ANy)yLOlMB*=VGvpQA(+! zCQX4$9UTHdlV>c%_M6v(%!Vb ze-U#;V}Zfv!)by-K=AMo;R`c4IL`s3M{EQSQo5u!J|~=vnYh)leCXGYpb|O3CfAWa@IaLb!`^~K4SHbxoR5kbC_coFP zk53?YWWo3F>Rj%rT}p0Rryr(vVX*^`AH05~bM&`H{bLb*Awarac96yahsFc!G3g0t z0;T3_FprXu9$eiUt$S7)bFWgihkpI&$zU>gJTw2JN%x0WcL;P%S?kKT%KO31Fh z893A|viaJ6;Zk#r=E@iUJe&WPNktOyP0=T+WP?D)d&6{C|0(0?Bw&Z7d=mVl6TwO4 z1+niQB5%Knqc8gBh70_+prHqWZ$=2jN-{rpG%SCug80v)rGNz*6RBfFltl(k*K8@Y zfd{IgYgKydpDX&m(j$5=2P9t%M-Y586SkkffBH{ploA4JKoYMikq6W%CeeAB4ym=+ z=3<2FpIQ-(<(&cRxZD*=T|%q>A5@xf80uarTT{BI{<+M*#PA*6{X=3x0{_d#{EN)} z`A>n3d!rG?D(&;2++#3x%^H`{V3eI0A zKl7C)UwC-lUaTjqR$4F2)0TChCM>{jg^1Lzr@9RRybJ9fmHpQEpk@6=wqRpFH{*lG z*c-}Q3}u_7?S9TiZeF6!;$k(<$-J;EAc|u2-Og&9wqu&-rKyTXPz3jOsqi<8V38vB z1@}>p;~(OjGurq3V~OU)8zh0T1(F8nH4wh5!Y-;!6%{b{H^+N68-?9G@48iop{&7p z)G(&K20BfLCX+{Z>KRiMVNDwxH55J9>Qy3> zp%g8n{9-cT%5sQ07BRB`AbvoJ#drqTO0Y-v>yAgHxq}4Z+G9#dtgBX7?nxUC^=Q~} zIBheN81==Bs$5UEH!!u`4@!9tkw5cpgW<|={*h?AaoV0X?6V(yaoDXijCglKYOQM* z1FXO}6rAo{pCS3}UgJ^N6{v(-mJb-G@p;VdFSgHR05%cqF02P$p72YkfWk9wmx(!0 zaZNCk44iR48q}Prwq$NUHXJWh-ObBMwN0G2SPo@(yr&H)MvIQ9$!Aq}1 zN?Z;wLnh4(_(;bnw>d-eggnyR4}16NnT1c{h=c>66u3B(7amd&Ldo=809YcD&|&Jw zh~>0d>OfvI9WAck%(p748ZS>%qdpc}08xW@}qNa!vrUF+1X##W@|rBNjk z6(dsa65<~o_jfDxV>9ZB81Y807g;YfCoK4TmMsfzY0=ooKjWpV|D919zI^iI;GPt# z)AwzQbVsPaxooBb_o5$~#-|r}Z`XAR9}rt)h9{yJ+wYKd2jUsWtGDJFoSx$iAOtq| zH0%QYjzNTtvAn3LxD=UXE$2o5&pH{UJ=V<^U6g04xK`8$!b%D;S2RiI+0`Vul$8oT zZ!O>^lmwspv-R20R+s5_8`;KD8Yqr70j{ORG}#(3X2Yd~G)Ouri4gUX*?OKQY4Bug zg1#g$JE&89DMD4VqvjqXho$ZQ!w7b!dbfVd$a4k@14`j#jE<3*0_Ba_12+Gedz68Yv7~MBSnMSBugHIK&RP{1> zW=J0Ok*tvM(zEUY+!DgP-@!q;zTl|2c5vO)J&D{K-6)HB2l5pA$f$|jgwrBFWGJ^(F06oS5mMOOkNLHD+-xXTA!XtF?=J`UZ>OeXrANcXqb z9jM;t@|2Rm88Qd)C0UdQZB3Txhe|fz-CiNPCZTVd$*g!unOOC3QX=IC5_$^&B=S2ekmW>}G@Q-5!Pv;n*a0oPh`-JDHf~b1{ zFzUHPR{69+uH>oCdabEndry9`KOkW-viFL^Q-}^{lKMVCPD}Fetzx++1_nb3HBQ>K z44mVEv&%qf|6t?US?RXvNJ`R$tjjz2mrn% zs^ol;a{2hPv(gjJnl-A2ysU(X3_=eZDCww|;gMn3MRp)V{B@@!Q^$C;kNVzm<*zDa zAG|*oS{x~9zBG#$wHP3Y-Ao&3^RNR5^efRTIiC+2J#Ety#zbH``D1MY#otT zVl#}+`@du)%wCO7zGjduje1nKmS_%*qI5+4PU&lj(V^pLb<%3TZrm{qFzO?=m!@fI z5=FJR4bn_H4GOW?n5$vYmx1)p6FQ`_)V?in4}{Xg=1j$1u3R?348# zG>3p_IG0D>3thClb0&PzBol0zXbqsVRl&3p*DmLapUi2DYvvs7 ziqxuXQ5(@OO|yq(T+TaVkM%-$%Ru{h+`6EsI-lq~kJjI%i*uVL6i&3GZhiB0HRY$& zj@Qhviijrzk!RmrYI+MS0h!Q?LJRCmbVV1kF1>GzvT%;5G#FC2pSb%&_I4ZghMZNU zl9hJZDgvH69-4);M^@dEjjLXvB34~bg4s8cC*6yaHr%~?{d5h5Gr$Y^e!vNj8g{+A zIqUXiT2RtuQ^jCsj--ER#oy6P&|BpUNM~gLjSVZ~9dqfW^hg6Fo($lHE8cjvWb&SjDJJ;fp`MWFC9;Z?UhR3^ zC80dQ(Bu8^OTfIkE2l%x4b1jbriFt}<}07CjZarq^Q3yYZbuPX=|bV! zAIQZ6VObJ&u;@h=j3KFbBDgLKARMIRobFYZTudm>)QRgCmVJhY@A~_zj9V=8AhZNw z^_d z&pOcLC*^B8G1dLx8WJA=z}hK*A#i747U7(E$3a3l*=r|Sd7s}qNgYj+@l zSxX^OT3{|w2xr^V4w1poFKO7Ve}(^%jqa9&ge|+(>45-ahTB-_7iL@$9M)^q345D48xTd%enw|Q4}>!J9r2*U3{_D-?dv( z#eF40oGB!lJc(!eFk!MQ)&3AJx|Rf!zWH3w$Ppvz%|R%Ov}-G+xMqvzjTx*X6>0ZtXt3M)fpoMZR;Mf?>M39 z^fSKAw)f}D`16S4%&1|qR#~k8I3-ra`25C&5t`mH9^5E=$1L>iNS^4kQV@KY7VPoe zo-e<;fCpH(%H%)J!Y`X`{-d`vO_?7z2!NTDoN$KGD}?@MMdVE@R4|yEF`h_qnokhS zGAriZsZ?BZn#Ni+Q7mR-hA#sy!RACcX`C;HU=Q$iRHc1IE%f6Ia)?cnt6PnJEw7}Y zulV>W1`|U+*`&knET`X>Y5N1?x24QPG^*b3F|HCTl4Lr|SZX;c|9@9|?mWAs_W zLMjbOc(>7oaNQWP2fr<=cfW*w$ot!(Pyno}KLyDfB7dW`1jCkPd06+u(kSuxsp5v+ zSB=BKtU<8{c@?SGR7*0aN!p0%1|J#(!=oF(lPjrMZNmaI4Bd;An6uRU(5}T=vQ)$O ze2_Q;I!@Wt0z?<;U{i~(ckTDU=>ZDZd_4?h=c)*sAI}kI4C6F~9A^Ci-ix?!oO)jS zl2)-;NU1Kg=pJ07VgEx^6<$2oa`jR47t`$PkCLZsa%mxS^||*kp;=JZ0gL;C6@KD3 z?^<{7gQ^&1{Yp3_O`A>(&4TwuOuiVllzUtlFbq*=Gs9nn+aZ}cIo^G`n2s$*icNU1ht7{3jdm894#|F6N&^m>5GT-g23X>9 zgr1l6juwNsPA(%!hI75+@TanND0#uEXxvH_VA1|mY8WKR6qJj~P(?6^u2smOKh=i0 z9l6+yYOB;Varj%ZG&(nqhT?6mPLAc^x}kEe&L^jo+=pD$nE!pU0m}y`uas*#GF@Z6 zH(hPHg`Sw#S1cLA+YLbavh=Oe8Oc!es|Ht>TP5Z!`d^b?y@a>Aq-B(S60`Qx-6l7$ ztADJzL)4?|XhOMEF{!t7T;AUoZ!q4EW)>S!2!Xur`3a6~@yAKDRF+d`I4;bDV*@)7X4 zJDbHU*2*?NSnfrk$k)k%{sV->e+ke3Dz%@)vjc-a$|psH6xO4z(ChA2u5Ndr`Erx` z45VW-5H2sN-;wO^0N<>^W0)cd8o6=9P7*&*B$#16yje|@kI_|98276N(~L2FRk37= zU8AO27*}uj1S-Ht2MHIIb$b4Mb^_HxF?ggE7>!T(VfwWqA%e5{H%H^`<(4l;vVM8; zx0M?wfO~;yAvWXHJd3J)s~*=l)*CrI0PaRcvN?kt}gBah|iE%7@Oldpxllm%UkunhH;QS4ad^b?wN+d(IZi|^Kkki#M>USBur=@F*z*hN%1>1u9cndX*+FKdJf^_o1 zJ1ElM+?R$h>Y3O)*jk6Wj;45Ea|r{et`c_|kA|wC)L|a-0P1+0tK1 z%;zeZdSzaSVmm!$&G%3GmFj7Dj1ek_;^i(cV zd8JRFAHPo5Bg+>lU{LW;MuA(6RQ&OoPP5*xjhKx#?V*@4of3sYy0w_{v4Q48>jC-1 z8yV0i>CBW=f9U7HnVJxS{epgC;P}8^-iLGOQJ~SmXgY%V!0X>X@|6T=<9I(x!21uK zh)xo)J2Hut&mMAfpt%bT+C1ij0!9xy4$x{~1f2|wC^F0c&?rgw291?dnxE&RKgoqq6~C0K{u z?bL!DlsLQ8&D8?_EelL!@dgQB18J;EhNSgV>c4x?CNxh(v93=F#jyq~GD4p-?$ z`S*~Wyq>OC$bOuuT{qAC)Uo;qi*={MVn~-G@?V zfKB2PCb#`>0dLqax_{dm&}zfTi08C3iZ9mh4s*#d{=4NTU`O=EzBLTT(vH)9Qtn@W z!jk;4>3p3tW0A)6uPbt>J^>wB-IlI~`d1~8y>Agl%@`Ik{863gkKlh{2`ire>!Sn+ zQ@~%jumb*C+!5#&Pc)wKtN$z1z}sKyQLEM0CF8|EOL~(HB)-qSyHxGJR(RiIG|KD4IZ-G{3>HS>*d>CL+$^gDYD|1PM^Ji1~V!%S{cCp9d|8B{c zve$z6&mN)60Ar$KFmT_dOlNok=&v2_8xf;9@=llYS<+Y&6~^+Q3DMB@O3&+srpy1lPI zBVLOKd^#ki&-js)#A%m30|KUY+ac~fp8LWg+a;6gBPgT6#MOHeFVD*ja^)TyjsUM&2Z4W@SyRY-jn0yO03)TN)zf|V#DED4p*M#2bHE|A)z3rjODkrD(q(bHmeVXXQ$|TyY}AY< zofyjY1%>6o>ZVySv+07q8h5uh=Ca&+9nYOM^Kt?fK^^-86909n`CPq2(Zw11WGZV+of27K?TnnJXy%F!i6c$(JR{S{jdJ zN+uX);X!(J!J_xwQx?ixZ0wt{PMCI_Blz%BE;UD0W`sYzNVx-R_1joFDwI#-I|4#G!c?*J;*<4JQp*lj~IUx(3^>5{|;Oyc6ax<3ex*u zcZuz!z*f>IIkap&Msj`vfk9Eo;P@qhKqi9v`G7#5#O$+zP=~HAaXCw3mY5+YolWpl z3JU4arH>r6tV{bmz3&hD4?V&;1^8 zzVfr!n#QcN9c!W4r`w-Zp=p3Fbr+(U+f&88jrUgMuH;CJO#oF0` zF`u28;T`x1caE${1IRR;GmrP|(yj)Au4=n^tumcQ;f}$(X7=8JVr#UsXX&#+zD!0^&YtMrOIFaEXLE;Y5wN=}FV9bA|+RVFt4Fc07wAcwbP)fxtbf=w^@#q zrkf(1pP4_cuGJ)1#5Ikhf&G4EG`oKOTb#dM{M8ENETY6?$Gj5fgoFyP7CpHTyyA|8a~$1N$gaSJML?ZLE*Jv6(91nAQjny0BY0p1 zx@Tnb>E6f5P+0rVGIa4-kWk%U3K$FiYA3kee-dl4LCTwJ$sVi2E|c!P8AP7Skuzv| z7ehQr#N#ye3`=9!tw$Jtq*QS1J_lQe@@j?G8lGJMl>US!9|aFB2UG4PoS{tD{IL$u#OPV(~5OJQ#YI6Uq7+AbY6A4Lp5mM zT~6375!eq4T275k0FKpKPFz1Z3r&pnmxX75mIvlyZ{sgK;`r z@tpH=sJ^Hu$;*lM)wLw+-Gdr1616F=bySsPRd1SkX(*o~$+Io>!*J{{Y{v6j_5udo zbm? zLR{qV*g{G`61LpP55+u90zYd}zvTgw!DDgJ+YsjF!6Z7qDuseKpM~S*+dC z9H;s^GUhY^;+`GU(v9zCv7b6kHo17wZLF09vLfE&uSi8lq9y}AFSX1xW1ltTV%_LX zx|ukeh~Zw&gH3$;f+Jn`c)X^$s=#^h(xaR_K)3OF=0PE)D_5klk zC%S~99(korAL@Quv33_MD#QHNsS zCYhY~0F#~>2NR)1#aYvyheJG1?W-)r*RROz83e#ACQ}ROSF%)M4B7<-w<5V&-1r>dtQPa_k4=N9%B7mO4Fla;20a?EEeVHj3kOp(G9=> z3SxQM3$9y5gUr`m?9DcEFL&=Rk!kAYJ1rZ$!r3`UoM_B;y4(OJupfTfyYc0@{(S_q zWw&|x9fq$|cVKLO#Q8L+pJ2%>>43&2?d-LMO4?WcXv_X}krgyclsya$eo)|FH{jKV zRxNEmqQ2}WM56SJ5B$I>7pLO{y#8tG)$IBya%#p4_aPK^`J-gTh=rD4O{r%U*BT@A z{AYELlK@!9Bf}rDUK&Z^I^wvSxDNhGrrI}~%ImW&psbcecEq_HJyY(*B*tAqr5A zwPGz<{HCb!tdE~HsMdVEkQM;e;JY44DFqaF^UH3m-SZJO{Qi>^8lRMISt^aKcBK+?+b8?zyrj#GwpR82NBPIAN> zotY45Au08#BUTYrXm{Ovbw>l2q4!z=ZVT((b$br+mmSlWnhA1YI0w)!RZG}0yzgzV zIm9(+{j1_V&&G22s!yYmqv8|Z(;JG(&9eb?^;{RAhLSErsw^GJZd1!lNgg`K`{ z#F3_{OXV!&L#5@Z$7xceSwK7s_!Vp)o>@NU!NPj$6$G@nOnPsJ2mA zIbU_b3=D9Y6rH7UyaD>~xqmQ%pf^Jq@8KT!3L2t&P4Y<6bNHM ze)JmO*RD}*f9)5%BON3}>o}vQJgzg9rtia$j-U4J5!Pkn2GkSnmF{!|1p{_hX_-s~YvJa)!EXv^GIaDw_>O4Gc;;B5ES zY23I?ns&D}XyW==J6mhmI>O^8NaAUEXX-aypL-U42%hCG-PN?seG(vbSMNNmCB zye{u;xhr01PI}$0d$DZ{IX(T1j46!VUO;z9@88-(FT&QwXo#erXyCbqjOU`AxvlC) zD5upxHIiXf=jrT26um;}w7T|a)lGr&Wh=!dDt>GGC4!#kR5cHKA*@7N;4!jD2EAxq zm*E>Y$NeDpdY()ZoHoKP{nldi?ebh9=Xv~e;5t_!?Pziwy1qP(gx*;K0mccuMLU@Q|uTjiax2`BwpiTYl|?dt_zRVre_?mNQvKaHl_`?!sV zb|7XdEK)~-HEJf^zhs_j)n8c`DBchgK!JOv|LS+`j(T>Aw)~-m!5$ZMV%85a1sJH_ z((6K-v{o9$V<~uDpHsRb+0qaO-=!*EyN>>yKte2tS7z^b4*sVr1hH4l>oOsO0sDBk z@m4so{^iA<*t-4tr(c38EgSho`Ldj-PGBR#*Le|iDVI8qr)#?z&+4{&(S0;KNcU(W zUlVuoHr|yR+N3aCe0tF)I=%nmhha3|=+Ej*?7bhB4IN?q>FC=%Ip=N%4O#{Vn5MANGHSC-d_r;EMHezLA;_cMi9Xs6HlJ4M)~x*O*9bI4-v&c z%|~-8AdpyrjE8yp^Wmu1%QwX3Ix-6(&IyKL;onhjs7CN}JnRxJ*Q0oFoQ?N2_9w=b zkC?wSkxCzsHa7JgBBIV`Q%bbKo9dP z)6Of)4UZ1oP<+mk2TJ_J%BD9oS_N3@jVU{XhUzOFF8ba#bjRR zkm-aUo(J=xP9_>5XD$34=k2PVNH4ycpkjJSxU^S*9EZkTENzBiRcj{#6CsbCf3nh& zCwe)6A?_LXt}&8*YT9`+Hp%2_JyCjWmmS`Pg4{eoMHQ^$g<9&1&yR2|ah7H|fUR|v zmOs&81CBf%mSU22ZM@9lKCvTVpneh}R4UBTCnV~hH|s#2piL9F1>k* zY*Lnqm9|eI*l!ArRfM4rd$A%80s&Wrx}3EmXIJP!WzW?2 z`25p|sM{I*;xjL}V@KU8IIwoU_@6Z{e@ObY2Au8a;kV?eBf4{YJd|)3uN8SnBb}7i zf(nSV*f33xBL29_ED;@r=Z=r`)4O%PIBW{_1ktD43}}C@pooAeBXw_nBy!Dzk!QL5 ztfPdScSG`|3#M$@G)^Zj2eQg@^eD<5+rkin4gGZar7sV3^K~Tt)3#hJ@#4;~>cR%h zGrc!+F~*s!c{*4d%q9lY?*p+F!Z?U0{o;fX%AsXvNaq?;-xQAiby!CN#g=&WxyCLc z$AMh7ep{vdj?suo@>gQX#mgiR=u|ZqSEaFM5H68V13A*AI4nA|DnROrX2#+BxAp3c zw6sB$U_5iH{P*%yJKdRd$ASW_+jMlQy~{)o@+{i^K!SIn zVjzAj=F&^egWWF7IgX3i3j2dv9do<>QpS@XPw8H>z(Pgif8oss><^mb9=^g?Ero~H z*wceg;)&rte%Yu^9K%ny&mgd=$5V2BfT}DEI^ghM? z^YQ^0u2@l6p6Gf66zXOJaMABJX&aUiPm2`9Uqu}3Tu7^Ff;GNQ`BSQ=k2X=CLiaHZ zG^EQ^xXUIQC)2ZvL6}pSYtyW zdh{2Mn>yihJ=K>%4m+DT8`_mb+wF&yYt?KW6*PSbO-96?xCa6m3!PnXF0T$5yeUS0 zbG-%7_%Z+Rf> zE>ybW!F(7(fFRVk)`Zb~Fs}?3uUfjb$$W8R|E|>v6bEHV z`PaMg*UVxa;U8!yKd#nlriS}1+tDlqykUWbAK5OyfOBkA7MuEA(Qc9GgXhAS!hg8V z2^qDsTj<}zako0qnm&n(V-hfc-$Dg}Qs2i3=eT4qoas>_lSm^Qq)7q>NzgCicg1q0b>>fpp}};Tqd7R!2c1&zHrO`143_d3dTJnXj||~gG19WEtEL(s_};#w zvz0$DZxLUxLOWa1+Q^GL5*7GLa43E|nd_r@>Kr;}OUb^38=LlZmVT)_mg~)(c5|F) zR4t^e$a2|J2G(lEUQYv@Bc6*9QXVqthW;v&Sm`fU%SJeb?8FEA&sQi3e<&%EK zDshaR{Fm;}9sTg)M3wn8ARdmB(JI+$YiIj!Yc2bYr@=!ym=V8S3+wE<9lS=;4Y(29u?D=kqDOx5F)(c|vN%wIBjq*dzA2@;dPs}) z(D8v>j1HeKW3|6vQ!okqqKA*GOD%)9h$auK<6|r$g%Upurqn=5eVri?DCY;NC;ANd ztDhSs=sB1v%$S!%xGMs=y6QP?LR-a>l)o#8NCW9Q}E%Y8M=%Vr2N^MF|j$k0pjhoJ0a^bmF)?}shs2m$!qRuh;542(3K!_-;XaB zuT|*4YWpitJ!o7-B%GWoW4W|ONY6V0T>i6AL9I9LyxS6l^17sRf?CCux~Gwd^uMwR zTljk|R4T&kFZ%i6M3Q-sk$#Zx+GK{WyLP+%0tbv~DU6^;>1}b~iL51IsfZ!I!K}HL zvw{IJ^@RS0u*~$5WYQ2R?-#_)#Pk4R^^7{!GH?rbh7CavYg7Wu^I#cjD@sh`Qc7LJ z(>b^nw?c=VE~H%R;w0AxFU?T(dw}xu2F|8KcOnqkEE&Hinr!7PK5|E>xPFbegQj)q z3)Qeah2^qJz}I7^(MspG9l@sMuGxho8o_S}S>UW+a@KqTFAJj5udqqYf7w{kC(Kye zA2EHon+3{mr3xjx>je-vjy|%9WY9<p4we zWF=#2oQspl?z*YC3~X5WFu%&e7ss5id!W5tIKy#hslqfeeXT@NErT%wj8jMbY)Sdc zL?^PWq742KIcGIP6xK!=P$x}RE+#ku%H6Z$$Bty#Y8P0FuBTr5bw}?DSMa&e)Zv)? z^k>SxpWL0j~QB%9K231G|cDz*ms4i*zBBe%CEPpDKqal7iX+J5v#nMwR5L9wZs zL5d(7sn^~BEa+=sPSZl3nL0&ry9W)jLk$T%!=5bdG(ERoI#%z;!LOvx+%fJx*%dP# zQ*3Ztuh0mF(Bn5JL9Lv0Y`OM?$rmsFA(Wm&p@PIlCoLZ6-40vTE~*~vG$h-4Y} z4Y5HzQvY$V9i28$v%y4dh>muSM;A77?mt#~_Qt&5D8zc3lnoc7x>xCzUqfxqJ``1eB5$_2N?}p>nYMq$1qdzfC<%1vZ}g)MLk9J=xBo zhcZliFvVR^e|wvJdkPqUDeAekc%^1q{@FMA0KkFJNy*);P_IIvS01ciV|As{RxmN z4!a!Jqa@cEPmAF)Np79t_Pup=C_aOAi}hwmWFsOGks!v)T30%=iK#h*r?66&=e+pH zRVn_igao^*83TKRJ5v$jc(jWFVQZ-s2*uhT=j(o7p|?{P%j1tjw31)mQa#a52WF6^ zElQ^|*tFql8$=M8r)}6`rPPy^&@cU7`VcD*HF-N35}T|4YpFFj6Ug* zDy3%W@$pE~@g-!|(^1)`#??UEQWBv|HmdlBV=jp&+h~!f@TU5RxlBa=l&}JG0gBpX z5cO;+M8exBgyb2Kq&pE`r0CLMySfarDz2_u)rYv*A&@TcoZW~rQx##=5@Ezzo8Vqy zD{SLgT0iH#FJ~L%*dyFx&YKzK*d<8waFC;-#z%T@Y0%r*dCW#|scK}RqAWn9a;K3b z!hk||FGGrPM!(oKp)0|Pznqc0fRsEMP7L-iIz&}2X{WYtu0@#mHR)9cES-DT|K)LW zLZSIht?+9kRN}jIBDXMkc#oj*Q{GbskELZ@b=(Ij1wWL2ClN+|lyF`)c}n1&C+M3n zU8MOw^ysd4oT-o+HHOO-Huc~>otf99@`#0&@h#Ar2_gKmdbO>$oW=#T>vgu@KQEo! zEy*#b!M_>uq5tZ|g!~*pukD*A{pyOm0D&sZZKU<(+xZ&CTg&UCRcG!S;k^V`)6tSoM>SZ zZkz*I`xM*35LAz>|Lf%NKD$`K`f&+22EdV+SF(-K^50hJ-T#~iI9B>2TOT~~O2_(_Q|T%ztYRHrdK>E61lzB|3Gm#4=a*mt~}}+ z^LBei+uvvvT2;(OX0$xA-~%^f%WE($Pri3N(3}`}j^91%HxddK8!NYH?_n#gft?2B zUfSE)$E7|W)tyeAyU^jfecXCMJ2h_sV2-_uf;}4k21dSuMOm_!^U_C-%Pa+~@3cSP z6XL7US=?wY&Jz64-+9iVqDM>e#`2Hoq?T*sWpwmSJ12ebcV_dK4d1=_ep%+-G{++U z%jzZ?CqDM=mQZHbavO5_`~`;86U$<9S3$GlZToFqhvMkOlfXeb<{ zhR&gHlkiDk9Isz+$Y^@wa%$r^0hqRT+1xsB$=BOh(R}LAJ-m)Jzy)L=BGo@24-ydQ z6eu4t-N*F8@uWM4oROvc8GO7!kf8|#vx8~+Bp29DHAvp?O*q&N>k*uE&o$8dpiERX z+24249hl^fB=vBD%$u%uHDFCyk`O~op@q=ei;;~rii-3jpL+Cy8;yoN_Y$^7v9n0J^c9dmYGm4&bA~W^XWmkk&58sgfpD> zu%><%^*rQ$pegAYLA8V0dkEFuc-8$QKW}sRvXY=?imaSI9DG6}p_&*iEx37jo5M#p z_zq&{cwcH``GeBwg1`gOeSE}z_$^d};JG!z!2jO6l=Sd03=;&!VzZ@lBY(XVRABrW z03LGon$YMSR6Lw2;4P{9Twg92H%28f51rt@-}Q0*HO`N7>scUIStzgv26WZ+Y>SG6 z+La^FJAv1y{KeIiS@vw=fB_Z9J-oB$PdAY*$i+A{(H4wB+<}B zR{<_?Hee~dg>;zNV3@ZZrZxYroO(F|psn|H182Zphp1sCfM|S*Y)Lg%`nq*PJ(h*QkdT%8=!1t9N9nN-C1}H+*c^rnT8t-g7 zO?%;Wi$IT=RmtCX1{ErF^k|br%W1~-yyPRVbPl`J099fZ;&`TAUInTWIE&jMG@>Vu zA!9Y+E*uZ7heC1^e}D5(YDCZjh-+r15@w6W0Zw){Q2KcxZz}%mYkG80cIf} z?Tep(%8`P;Ov7#V*oKY#bLl5Vp-NAwdktN#yQC!U2s{unXyKW3Akw+2NN zQ(Q&c1&nk44`08BW~`jH4sFxfZtMg=bF{yTCerlsS+;rWVr!Z{am9PPz=Rj^cI@iE5{%5COL;+ zf~+xCz1XyXJ`Z>}WankYj^2#b%whthqdNm1TW98QgTQngP=D`?+G=w|dfHUVQBus* zuID;Mu8k`Ddwx@7F^cdYz0Mf>@7drw(B6P}wR9HHo)}1Z(|En{1+4}yug}f^^O3i; zOCf?H?{?SC_ubt3t42#a=iiO9-pAbotBOd-v*^!j5CKMkjC7~f|3~X!#9wA*Owh@3 zeQEkGivi?52sc0?6EqWOTL$Wd{M!B9MKRm`RoQ*l62N|*T0h5?zKgek`E6A8*JRag zM${#G-0it+HTq0ToIn8&^gpJ%fW?^P(T*IF-dm2=|ClZ&&hclk0m3S7FxOB4O%kCM zWqO)R3wTIF|lZW z2Gr+53E)ElCkZCm(Dz^0KbsZ?u^{J4@V7~~hsCE;isX@_Wxzk7?x8I<>0k2^$O_V2 zNAJ9p-F`Xyh1`GhvbD9e@ZK#4vZ+QI^=BDU%>JqfDooUwcH4p=RPr9)MmF1Tvylb< z&11-+Y<6^`)??M{g_eO+bRF9Eq(V>P2Z>0L3`f{bIKmr<=^Y;PD=>}5f{r*tym31s z-+y;*-Q084g4`P?*HuQgX!o!AvtEdR^eBqnyHIo3Iy?4N+6aVQ6iJy}N`Z)9HJHL*S7^_tRh=bGgf z*qpJH?CSi6b&|fBr?nekWxc0VJkj{+8z51?CacBFQEN*TWGoEao`a~8MrDqswfKsE zw~9SM#5FWf3il+HWG>uIsJad~Zoac_tpXKapFBM3K_>|Zb|HBk3xy=7$9_zSC1Wo2 z&@PAHxrizg?&Zg`k$Ya|zv>H)19lwWpGn`dEs~rDY?SK-TSr<1ULYqZ(uwA*juE;? zgC=5{6C$xAQ4g1f=;yxtpV?CErS zYoB&C@uf3>uS4;4Z!>zo{8o@q({)4xy3y%Vi1P;EG-p8@GZ@MB;l|G$Ud~NeyXr0h z4gP9CimD25z7g*vvu?$u-IQEy#XEVQi>7*(_Shb15uU}dz4g*%GZZTERK);wqtI53M#f?ng0D|#)#8c0+j(A#kPUncyfEpu{mq!fcA({5 z`er6h#cyrGgxr9=yhnQ|_|1jL(nwwk{}~pkV{`ra`4L)URja9sCL2Sk?t?t~uf@Z5 zzz{Po>VO4P-1mzP|*s@fS?{ zUs(1mK8TwCb3VCG*useh354JS7(9>qn5$9}azw97Rcf3v^0uxc1sb^4lz5Rsyj1(( z;u5=ly=cF+mv&#W>=JO*y4(cB$2^tt?AdUpz=ful+;1sJg%xYDB5ui^p+$4=u1q*J z#H^hr5fhi0oDAfAE zRf#wFBcI6RN=KPr`u3;S#21>qBX}ZT8i@0k=BA@t=;!I;rI(=-p-)||@n_Ed8fSR*JY?%1OnxGQ>v(m(xNfP6S zfx+^{B+=3htnoT3)%|ywDx#(-J*`Y9VVQnN)h}CdJzSco$Ch73XV2j88rd7mzF=Br zCi5PiVAh`wdCg^M4d487Bb@vC$yaP&scOMB3@$Pn=;U+$D{Yp>U*E;R<&YWClckf) z%r}v{A(J9kFsHRYIspb6WwFeP*?lpacf{mM)qIV$-%Ij4W+sYxTs&_TdGLQ(E}mO? z9=Wy>Q$6;*v}{t{^#kR?%<*DxjYiIT-L#dsS?#^A+DT}KKqip0s-6~QuFyni|2u%T zqA<9Mas0F*#NC;ulZgmR=pXyhF(#sGP8m`QhRr7etvwOsaaKWvu15^g&mhHL z`)GhX4X^eznS30H!(_7d?&V{hEiN7pIA!#-B0^Xg8!0$tSD$q@VU2Pg+7{(lh0^Nb z%=aeE`_dkFwXAW_g?$U5BRdADC{|@UO}v9gmXmDjOqtzdziQJL;#%ysS=|(`x7=17 zjCLpE^=R#|y@`n`C&^~ZTejzD>uMDu^l0}7XCSI}uZNy`WqzS^hN>K26$k6QoK~ar zXxry22MaytZ6@M?AL)BD>2M07vE?X_>rxz<^I)-GKQq2kng8$o%ql1P9HC^>xxSkA z7KVEeGu`z>XBGvcL6`t3!TyTiem4?H`6b(Y_fFC2!PAoXtI|1jSPr;3#<5d+BZq>a z;lpCSZGtjQU!v71ba&zf>^+Q7-vd(ev}+&PWoB+#4Sr6jUCW%h_Tlv-bFWs)6N?Re ze_ivxbQ7x^T4d08ufZxx9CZSOe}Cx`3zmNllwfRVpJ3VFGz$Lk+r^I3#YvYY31 zGvv?GaRyt+PdS;G7Afo?QT^kaE8EvzG5>vX%ta+8ls3mDD?r$SHD1`4;&gxVgGZ5O z2s!fI$ED^Bv8(Jm+nW}-_#vczsDWw{omu!A#vol_Gp>_`eF_NA_o^<}?Q3s;Ir>np z61da6_biH$n*BvH-yr&8lCat7^T|r0+&ms}5zmTpfJ*%_sb&E1#0-R-`#{@J}9h^#}QoHC2 zGIpyNG1y#TfsC;MP1d*(jkN1doc+-F6XKq~o{iGcSZW*AZuLd4p*W$CgR++*8a;g6 zbELF|sb5|3k>xJD=>?kN71H#iJ32%jIjx)`A7~nED|s55e#y|@iosrkOR&eP=uGes z8qf2rr!A0aG~M1gknNVcrj9`W=be84-F~Bw{QW%VBC9s~U78f*3gc5U>|Zjf0zTkL zpS{&|bMN;mmB{^NzsBpg)5hT7(4?2+qW_G#=)&p)Pr4&-h1hgGZxALDLIqO^L~!QR zw4kUmpXxFcA;NBBigAfg5{Y8(Mpp4Py$4js9*vjwo*fra@AgKv>M#2isU=4adCM8q}D)yfSGAZ!R>ko1V zj$GP`)utJuXvA%1U<>cZhg77f)P9Its!n#%-@mUbmHw4UcM!X$6Hn@rEQ_+`nCfg* zNu?qsmttt7*c#iY-RLmv6k3>kscU)hROdfOC4vfyLr<-s>92p|!+kOADRoiiDFu^3 z@iPHz@c??s9h+fP@p%_$UZj+TSK4&>!cMSdek%sE)TdF!OvG|9m(&Zl$UK04lx_l) zWCekz!Y5LNCyJO`-Qmz>zP zd2wu`k#`#5sp0o7CzQ-J;Cd5M?ZO6t-fUPL=1NAo==;y+e=J8EV9kqrs(XPxxCm=K z3J~%D!jIt1;GLqV_rf=5Ir2+OI%bo1{SB|)e0fv~!~{gSI^){xI1oPBy23dSiXl3W zG?^%zRe4xu+)g|hPDUa0wIZx%1~A@di#8yiH1*l~WeSaWtcL|H@be$P>orB2+WgwfP7MrQFec7e3K$ z?*m4#fqlC2Mxy~~#M^?*r?6X}Gg|`paIXUUxR<#o@$H2PJ<2chG-$1fp&fw2?q$^k#MD{z(3E!=;=MByQ z9pHhnYj<1cwTc!tnDA#e1BT99c=l?Lknl>q65P#4T$IOQ<~4AI(gpWvl`+8;wZVM1 zjV%?XNOkA( zSg1-su{=0N*g#86i1@2U*L(O|L|EeeO=>$Q9j?9~mQ1xma4v+!9?Y?vO`x~xUdy&= z=H>25Odsd%NGg9S%;`?$>Nrc&izwl1s!}BlZ-!_=t|C-%wAeCkB}Pksw_GfXTM4I= zlR}d`5tr;27iegYqICJ}3T-(gGw(|0@9H^92%D3GP79Quh_L4^0?oy`I3Uu5w^B#e zzAtu&GSK26b;tX>zeu4n7S;s}7AO<$bV=o(pp_K37?L>CVu2J~0EzwOLYeqZ5lK;M ze;N3DtYd9p>Zsf53nznrj#Ro3Xrg|3hP8o};d5k=raGDqL89-?ev<$%53Wy)mlHhO*fXE>jmd<3*2b zfYe1_q{U$O_y3T+I75InL-R^Mx&Nepy!|nX4fn+&q_q#wgPz4YO4~?`1u?HZ7bor2 z{tIgHYnZ6^6t_OZb*;4Av+A_!FKpsgD19Fz^u1h^-3`|w?Orkup_=29pFF0S-$`Bc zc|EG;{;8OQ(JWOXJw*wfEaG2%r3e>_Jk=@RBH^dut3q)KYa0i+y|BR95Lz=jjAZmA z3YK}?(xz$eR9Y%9{PMi|_=C69oGPP>62FWGF~i+sF-Tyx=ajl4c`mE$pKFdB!Lbv3 zS1=2~)LL&EsQI1R9@|~>VsP{P3lf=@^lL>8O+M8q#WQ> zz5cM5QQ-o})a6zQ+e~!vV{2BYK^plx9Z8}k6j))hqmSGMC?cN;R6CATzKwTE+G-?! z@u*VBI|mZ@G1#5AP>)RQlrKp-d**`bpdYOZz6 z5qqrQ@%o-+Y+|X9*?)N0D*%?f7T5yt+IXU)Qri@Z0zi;BXm{o)L)Vk_6U!P(ud0Sd z7E1YM?{NNeCx&o=Al%`3tC@d(a|lG}(E*U+Y~N?Sf8cgMH_HE~{Cq`yE$qkfcFNtS5hGUT`eRJ+i3DhhjTDbN0k4iX0AVN!`S4-w z=lr4`Umr-~4l+&-ZosC3-;kTe@MXrcBGnPFWvb^EOX&#e1`?TUPrr1qs8@b?W;e4s;xRIfpv2KTVSrDSMY)P7mj_{ z(eF{oWm0McV;~p9g%oMSnzrLgWYdcJrD+ z4Swoq$Mb`yL9;{H_(Z?3A7@XMqw*Szm*=;d4tQ`PIDtuhMkwmzuimi96!7+hJ4m@Z z&7JAbHJ&D>{x0yxx{csI3ePBCY3H4DhG;z>mxzB726E02=+feUJU8VrZT0#cB}LpN zSZ=JF2!Cgo6nOB&d@KOX#J=XweenAW#4|!Y5@l%0ih)0B{vFt@zrqT*6I4b65(f`j z?*nKO9SMnF{#e5T-a?2m!xid-Uj|q!fr98oQ8x~>8$WBY{u&1;=#$a=mBWHspmK$| zlf!<0vvVK8Gvu9(pgkxa5dzJFUzqA=e~%3j@en|)HdcLjO#yfZ;~ajgir?QJO#m?H z-1{n}4-eW_$O+WNs>&_GKilV@#Av{~gT$NHrN=3w-&8mPbMoGPkZPMf?NQz+_hBC( zSvP!v$41rxtLkg4HZz@j=5RIWf!W7pH!;0{KXi==*huu60b84ES&q`Ll@Noz-+;Hr zTj(hD%6m|FWTEE%o6Do21&LmO{fk-2>IX@& z63{rl}jBcL2E43k*q3 zf$N8Mc9hggn`g5q`d2HdLll_q+g$30qXU*upK%5+=L~?qgH*PpEg-jrpO4@tNh3)g zY++kkj`pwi0x2958+Qy5?R5y+XnBWhuh6I>=fP=K1ZW&uYn(%qLHwIWm69umEhZeG z%!?ZVNwgeb*^zz&oXp^m`zmlG)Bs|=%t8h^PW4V;QHK$)vr713A`sp z{S&C_+c+G@%y@MQ6}yD`myTlcD&g#aHoKzaI#&sQM9 zOd0u9z`7DRjbwxM***5AtjjRiNW8EdsfWYL9Ao<2`c3sCLIH8-p*jbXVUQD`p}gH6 zWd9fs&@S8Q-O@|1)WpNZ%sB)U`as;@Meim|;$BSacGGCVCvxxd4|zAfp5PM>UA_J! zvX{}YO#cp>D|qgir*5C=uj2&XZW24hCWKnf6{oMg;_7wTvD@m+f3Ptr=wG3> z2pkcdeQWAA{e9^ zVBRP<^FQ`Pf_Y=du1R!*XUKQKHGR~0bS2)*oNk!aLBPbV_eKo_=}HfB%_<~8?DIuv zgb=&j_1sptbwFWuf)cC~R4it3F9ffNx{%9key%({%t7W45N=i9d1XN_9qPRKSAvA! zxygNIj+wTs%G2#_>ozAN;wCPpZ)uFQ?l3>q+$*M^nUbN1x$V(Cqx}ppS;6?7mEN7v zUZmWIOg{3n$(4P!wfwW(qWxg&lbesjq+V@&@Te_nU5&}DTQH$spsm|fUIcHi9liHB z{T;CV8K?ny^yA`2u3E5I8Q;PV@EZAR-@(BWW@}=DUx);e^3ih+?(-%6eUtAOg zhsTJGkwrg`WAbbfq$wOe8wL;t%1)b| zZWSL_mm*CRmrion>z5;77DG|txs?0B`N@{FJ3>aO93-?`-ROb~NS>d# zhvY=2+X?psle=ov(VNHyU%VAdc1`5c

e+aemQ*{jY0v6@@xQ-IAr(7S>#bYXp!~ zbJgGx{9hlmh3eBSm(vCkZkPe;huE@$0h^SikuB0l*)&RgDskIA0Y??cWE;|^Y9fVM zy3=U3*+2`Qp(OrtMv$|5weVv@4PNaTQ5842Li@Dr{?=dwulJiTAy4@U3&T}qkbdhP zCiCmB6~!hW?2tqib2hM8YM4wTp}egcNBLK;aq;7e+JKr-^IB?>M^g%CBV5i$&ioA8 z+%hFdOo}wFE*7Ql+Rr}=38$TuCu=m$*1Uh`7q{cw+y~vERC(TaI9CC7IFx*K(#7|W|K9to;qOL!O44w5zZzRD@ev}#<+ZcVt~z$ zhic->Gyb&bYvnC3MY~^Wt@S{Zf||WE+eSa4yba5zDkA1SZ2+V3g)aZM9!U4Q=_|Is zVoZA}unxeYOT-Vkpxtcf+eDH|S#&uU!)1W6?)24pkf2>*2)aus9$acqB58<}e@@rD zZ5Jmx!+tU@l-A&@I(kwL))j{>1FFXDQGVE%c3-Yl)1G0-%wBxQW4H|##pZo(Q(~p z<v$>x|4V-gXpvbi>9rTS{4B zCZsRG)IoUv0!7;W7+Je-KsKO=xKotq_rRI@J4C!tn}g^c6L)=s6~m(jU~kmz-vu(6 zxn)kijWOJ8|3YzK`IC{7+*EPBvKEhB15HrWTBlqZA;G#Keo@ z*afTW2g&5Q2QNmvs*nP!;CEsjN|hkVxms(OKAPhc;YaR^Ztd{{)-Lq&r{!b!dT$NP zUChVQte>ybuO2@OQ<|Su%+Xf$Bgu9MJ#O{s=wbz$5BKyvJ6S8mbG0BhipD|0s=P{N z#wbI=N42r9DJG5@F>H-jyfg2=Xx6e^@+&-wg=ozwFL(}^0re{!=r=@?&K#FRDC$KT z(QwRy_t=gZHBG<^>{7}@kt!t=V*E~Z4@zs zk7nM)j2)PeJjSQe1&*k3rG9F{@S<~5%UiC`Tu$!bL33-`n*lLU9#=A7%J#u>Lt?FCNMNs)-P9OlQ-}Be8q}pNQ`Y5ETapn=F zQ{eBignKte73`UkxCdS03r47pSPeRxxt@->(7yLT+sE>ll6_J@*ljZ|p@wOzTeQsX zYy0rIS;b&wk5dD1{8Dxe&rvf6q!K<(Jw>ja2QEw*BCMmBok}pSl zu_6E7;Mzm6h_qYq^{`@p(ITrQ1i;kwkfdkDCd`6B9Vv@ zP$k}I+_S7H;KMbGbYF-TzzAq#$h779M%kU(b-b+H9`J)+(!Y?w$5xBh8fLW$3i({G zunW9la7)iS;3z~w&5DXc_R=*nOrE;jD@RgJ+@z+6f?Sij2y(hZnEUt~Lrcvi_J%LM zq1@|>ySATPYBbS`U+s$WWSS~ny0qC%%_dy7tEZ)%qBg97wj8T7)j_*{IU$m}0Sp3@ zD2qVz^eWaLMhnL^mKk3FEB`K&DDhQq@xb>hL93;tR< zl}+&!cnZNmvKLVzlnTU#qt?`2$BgZPcYr`pr%+dE&Kw_672bkIx6W$1`Tyfb1D)3bi%m=D#^jui%I&L79I}KMQo(9xt$V1;$2SBpQEy+Hf-w=^S?LQVFjKsd zlm;S7gqZ0|%eJ@Yw)i9odAGbv&99V8{XMX&)C_z1_UGtkN8corlxZun(L}acQ=X(` zBi=O)BA*!yG z#otF)Ma!U!e|8f{U%WrmAOnsY2ER*lV5@eMW^wQh7u{peg}e}Ano}mkYL_F=Yk;OS z?0hinFK?{O?3vn(Tv!n(SSDM-7rncj%+}Og6doR7Gjp(^$lk8nanH?6r~z`;ueY(S ze{WDVw7|~(ZYb)IOpT4Me?p0uOMiW{<+BVJ$5s)_+ZAJ_D2BPV$+ymc&#-biH;ITs z>h2Xqinf`SGc5q1Sdp)PA%i>{dV63>9(TT!!XMJw708j;C&Rrz>8OeZo@}^=v!upz z>yt#RMFKYwk%xnftAoy-cfJ(^dZZL%D@A37xh&ANzwI>4&mAsUTWTbCYADI=4VR^_PWl-qJov1iLxBy#SqJZX+>irC@VpSMy+aWGN2;%9*x+fzNnlSM2;<`r#~q}66pnmOgxp7t zKG@O7w<_=^6p^xPxESp{U>8;%M5fKW@~|56f*l29OkKgI=vHRZp;l?Bz6JnS)PM=p zp*u>-(x#^^Yy!v@T@-WJeU-E?u{)Xp`ml6UL|cMYPJv4Gdv9TYcs*Nj#Dt5a|M<#f z2lt^@IupTD|0!g|v@sBK$qqLuI*H3Xn_r%18o*Jv(zeiC5v@}T?P#pgqk!kvUknW1 z@H%D3Ekzp`Ee-A8P&u?{<>l;zM{?l0$l3YZTd!LwNo;>U!Ig5=+q=a#$_ZHGF?5NM zx({>s6(4V49QP0qbb-87hC2z^I+@d6#Klg?A7}a$mr$&@bd#x#n+sOWWpYw{nBnlQ(R6v*8tu!MsVEynW|r^^3}XB+FLaE zhDQEY>@-Ny==0~ON{g#VtGh52NJ(kCGHj*ToXxKgLcJyDJ+{21^SlEq(!Kmk##Da~ zEMA%kuiqZdC<`1CeW6`xQxNb$+XRlw-Hh5&^lTT}uuY_e|@DY&}9R-@DwL zy-g#_u4QH=h++owwfj6(gq-5G=^Vkqy4sGRt>`YNnY4-x>0VMI4fw0UMXA_gzN}C> z^l8|d;-{NlcWoj6+9_lNsDV`E_yf&U;$~TpH<(5$tL%OoL!vEo^cJ25jsUxMW12d@ zk=`(h6IMx%Uz=m5$pz&MYQHH9-f15_k1HrpG7}W;e(|1U$U(9w6s#_KFF(hf2q@AF zR=g*<`u-xvZC9mlSQt);{!;fMr5Dz(OX<7P&rEXw5zt$du^MPzKkNXP0&c|B$r_~M zwj-+hZS4VhocgtB2jRBv(d<3enpy3-Y)Hs=11O`CudMjGyqI0=Hd=o@qz6d=OCZ%= zwtjxvmB9$Mm_6FpS&Jh#9KexfH_WfTg^%3pX}+3M(Ef33vg|-sxGvWIX2EZxO5dZh zCpAkGNDFg{X^da(dAZ&2FM66Kn_E-~Nag0ard6dp?7nM|GIB@Cp&TT+r$)=UgkFtp zyl&Kk=;e3f#re}pfcN) zvZ!*$!PH(;3#5^5-(-0;JMS`7Hf z8H=R2U$O6D;ton-u1;9rJ}ihH6r`sjX{`Q7L07;v5ru|)hd+Iv2nu=xtH=MIQ${}l zgDv-KU)jPzu^)lxFE8Rz|L>Qu1`t8IzR%$uhp<>YE0h+;-KH`8+4&AC01K3WBX@1p z<_;BTJ;0((Ofw0^`CD@T=!y3c;G$}0`on~}9tkMuZ1+dKUs}zBYa^idwX{ErJ(Nuq zfm#)tqY?7|{mpU^;LUi;mvbu*D&-zkVkH7Nmsdi_Nh-aU;_nYe_4o*(SB;t5*#^`8i< zAixs*AUO-9qzjFTZbkl6OhtCi8Ib1n!5OEDB|uQ851r6gj~+dcW*$9}a}K&cl>df= zE25G$c)e@1g?Yd30X=4-Y`{_;$JBwQrF7uds&*6I;nxAyR}gmsnS2_srxV=$*j(@6 zFU*VTssH}s)D&_#Rsii;tUMvdaN}@Z;D_`sS1UpOFAHE&6~rxT1~T^n=0q))VNhz? z_V9Pv9pchacw#vaI?r0)OC*lSHLIx{1TM8