From 8f86c6f4eac64a6055a3a77f5c15dcf4cbffe307 Mon Sep 17 00:00:00 2001 From: MikeLippincott <1michaell2017@gmail.com> Date: Mon, 8 Jun 2026 14:50:45 -0600 Subject: [PATCH 01/25] progress capture --- .gitignore | 2 + .pre-commit-config.yaml | 64 + 0.data-download/1.data_downloader.ipynb | 31 +- .../2.construct_gene_dictionary.ipynb | 114 +- 0.data-download/download_data.sh | 18 + .../results/all_corum_results.parquet | Bin 0 -> 1739705 bytes .../results/all_drug_results.parquet | Bin 0 -> 4275240 bytes .../results/all_reactome_results.parquet | Bin 0 -> 7107699 bytes 9.webapp/.streamlit/config.toml | 2 + 9.webapp/0.single-dependency-umaps(1).ipynb | 30279 ++++++ 9.webapp/1.latent-umaps(1).ipynb | 86709 +++++++++++++++ 9.webapp/8.spider_plots.ipynb | 266 + 9.webapp/Justfile | 18 + 9.webapp/app.py | 305 + 9.webapp/app_utils.py | 432 + 9.webapp/pyproject.toml | 24 + 9.webapp/test_notebook.ipynb | 87386 ++++++++++++++++ 9.webapp/uv.lock | 1972 + README.md | 27 +- 19 files changed, 207569 insertions(+), 80 deletions(-) create mode 100644 .pre-commit-config.yaml create mode 100644 0.data-download/download_data.sh create mode 100644 5.drug-dependency/results/all_corum_results.parquet create mode 100644 5.drug-dependency/results/all_drug_results.parquet create mode 100644 5.drug-dependency/results/all_reactome_results.parquet create mode 100644 9.webapp/.streamlit/config.toml create mode 100644 9.webapp/0.single-dependency-umaps(1).ipynb create mode 100644 9.webapp/1.latent-umaps(1).ipynb create mode 100644 9.webapp/8.spider_plots.ipynb create mode 100644 9.webapp/Justfile create mode 100644 9.webapp/app.py create mode 100644 9.webapp/app_utils.py create mode 100644 9.webapp/pyproject.toml create mode 100644 9.webapp/test_notebook.ipynb create mode 100644 9.webapp/uv.lock diff --git a/.gitignore b/.gitignore index 78c2fae..9c6700f 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,5 @@ __pycache__ 2.train-VAE/parameter_sweep .DS_Store +9.webapp/gene_dependency_webapp.egg-info +*.pyc diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..b6f56df --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,64 @@ +repos: + - repo: https://gitlab.com/vojko.pribudic.foss/pre-commit-update + rev: v0.9.0 # Insert the latest tag here + + hooks: + - id: pre-commit-update + args: [--exclude, black, --keep, isort] + # Formats import order + - repo: https://github.com/pycqa/isort + rev: 5.12.0 + hooks: + - id: isort + name: isort (python) + args: ["--profile", "black", "--filter-files"] + + #Code formatter for both python files and jupyter notebooks + - repo: https://github.com/astral-sh/ruff-pre-commit + # Ruff version. + rev: v0.15.16 + hooks: + # Run the formatter. + - id: ruff-format + + - repo: https://github.com/nbQA-dev/nbQA + rev: 1.9.1 + hooks: + - id: nbqa-isort + additional_dependencies: [isort==5.6.4] + args: [--profile=black] + + - repo: https://github.com/pre-commit/mirrors-prettier + rev: "v3.1.0" + hooks: + - id: prettier + types_or: [markdown, yaml, json, html, css, python, r] + + - repo: https://github.com/hadialqattan/pycln + rev: v2.6.0 + hooks: + - id: pycln + args: [--config=pyproject.toml] + exclude: | + (?x)^( + 2\.segment_images/scripts/.*\.py$| + 3\.cellprofiling/scripts/.*\.py$ + )$ + # additional hooks found with in the pre-commit lib + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v6.0.0 + hooks: + - id: trailing-whitespace # removes trailing white spaces + - id: mixed-line-ending # removes mixed end of line + args: + - --fix=lf + + - repo: local + hooks: + - id: shellcheck + name: shellcheck + description: Test shell scripts with shellcheck + entry: shellcheck + language: python + types: [shell] + require_serial: true # shellcheck can detect sourcing this way diff --git a/0.data-download/1.data_downloader.ipynb b/0.data-download/1.data_downloader.ipynb index a30f5f3..6928843 100644 --- a/0.data-download/1.data_downloader.ipynb +++ b/0.data-download/1.data_downloader.ipynb @@ -25,8 +25,9 @@ "source": [ "import pathlib\n", "import urllib.request\n", - "import pandas as pd\n", "from pathlib import Path\n", + "\n", + "import pandas as pd\n", "import pyarrow as pa" ] }, @@ -57,8 +58,8 @@ " \"46489732\": \"Model.csv\",\n", " \"46489063\": \"CRISPRGeneEffect_Uncorrected.csv\",\n", " \"46489021\": \"CRISPRGeneDependency.csv\",\n", - " \"29094531\": \"depmap_gene_meta.tsv\"\n", - " # DepMap, Broad (2024). DepMap 24Q2 Public. Figshare+. Dataset. https://doi.org/10.25452/figshare.plus.25880521.v1\n", + " \"29094531\": \"depmap_gene_meta.tsv\",\n", + " # DepMap, Broad (2024). DepMap 24Q2 Public. Figshare+. Dataset. https://doi.org/10.25452/figshare.plus.25880521.v1\n", "}" ] }, @@ -107,22 +108,22 @@ "metadata": {}, "outputs": [], "source": [ - "#Column name correction for CRISPRGeneEffect\n", + "# Column name correction for CRISPRGeneEffect\n", "df = pd.read_csv(\"../0.data-download/data/CRISPRGeneEffect_Uncorrected.csv\")\n", - "df = df.rename(columns={df.columns[0]:'ModelID'})\n", - "filepath = Path('../0.data-download/data/CRISPRGeneEffect.csv')\n", - "filepath.parent.mkdir(parents=True, exist_ok=True) \n", + "df = df.rename(columns={df.columns[0]: \"ModelID\"})\n", + "filepath = Path(\"../0.data-download/data/CRISPRGeneEffect.csv\")\n", + "filepath.parent.mkdir(parents=True, exist_ok=True)\n", "\n", "df.to_csv(filepath, index=False)" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ - "#Convert to parquet\n", + "# Convert to parquet\n", "# List of CSV files\n", "\n", "data_directory = \"../0.data-download/data/\"\n", @@ -137,22 +138,22 @@ "for csv_file in csv_files:\n", " # Read the CSV file\n", " df = pd.read_csv(csv_file)\n", - " \n", + "\n", " # Define the output Parquet file name\n", - " parquet_file = csv_file.with_suffix('.parquet')\n", - " \n", + " parquet_file = csv_file.with_suffix(\".parquet\")\n", + "\n", " # Save the DataFrame as a Parquet file\n", " df.to_parquet(parquet_file, index=False)\n", "\n", "meta_df = pd.read_csv(metadata_file, sep=\"\\t\")\n", - "meta_parquet = metadata_file.with_suffix('.parquet')\n", + "meta_parquet = metadata_file.with_suffix(\".parquet\")\n", "meta_df.to_parquet(meta_parquet, index=False)" ] } ], "metadata": { "kernelspec": { - "display_name": "base", + "display_name": "abstract_embedding", "language": "python", "name": "python3" }, @@ -166,7 +167,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.5" + "version": "3.11.14" } }, "nbformat": 4, diff --git a/0.data-download/2.construct_gene_dictionary.ipynb b/0.data-download/2.construct_gene_dictionary.ipynb index 972825a..a1795e7 100644 --- a/0.data-download/2.construct_gene_dictionary.ipynb +++ b/0.data-download/2.construct_gene_dictionary.ipynb @@ -35,18 +35,19 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 1, "id": "44a48da1-2987-4778-b38d-75ad13ed4f82", "metadata": {}, "outputs": [], "source": [ "import pathlib\n", + "\n", "import pandas as pd" ] }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 2, "id": "a4994c02-29ed-4c75-b4eb-9f1f67f33bc8", "metadata": {}, "outputs": [], @@ -61,7 +62,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 3, "id": "665885c5-cbfa-445e-a08c-cc00e1f5051f", "metadata": {}, "outputs": [ @@ -281,7 +282,7 @@ "[5 rows x 18444 columns]" ] }, - "execution_count": 31, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -296,7 +297,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 4, "id": "3203bcb5-bfe2-4d7e-8171-b0f94034b47d", "metadata": {}, "outputs": [ @@ -457,7 +458,7 @@ "2 https://www.ncbi.nlm.nih.gov/gene/?term=16 80.0 False " ] }, - "execution_count": 32, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -484,7 +485,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 5, "id": "fd813eb6-a3cd-4d60-84de-b552655c3344", "metadata": {}, "outputs": [ @@ -524,67 +525,66 @@ "
\n", "yhGy;+*PYtS6E`WE?rL1npa8KN-J28_yZ5b^C+>&1 zZy1z2TSJUP2aKXUGm7@YDBAX-iKgC7278G+NNSKdnhwU%blqs$?9sGgZ!~$syrsq_r!NH8Cr~8eDj~;5iz?d- c}CDaL?Xu3Bpriun#v}==e4GYaI7I4$P;NBH+ zo#wO#9`+tLx(;1&;-YB8RGekF@1+I}IgAeB!{~n8+F+Bz=yr#h#dSpw)g4BM|2vrO z3gJw-bw2E1XPw2WVL0!(AKe9Xd)@mXX1?ueZL}!Sh&2_x?)?zG?o=^L_a2EQV?gb! z^EM}VG}W}tiQf9-?hcmT7l)g0n;T(vG>V2UYaFP>DM@3gdy(GMiy5v5!8;v9BX`os z)7{H+ag!fzO7FBtyFk<46!RXF!wnPNQPlN?8)53;;eHiJ-EBOzvuQ-R7%^LnNR=WG zYYK#E4}ht$n f~nL_EtSNl^J4M*KxhNfKRs6{7?Foz@S5Yv1#-VmJl=2)6Nwlhvlh6$vR zjeanP{AlhbT9>tSS&$4}xrLLW#Q4rcnz`PwD_=qP%0j10GaRL*70`laiLpEAvL{{c zWgKaoXs-Lx6%C4R>rb~LMeD_AJuRhs4M(wPjYcdLt6^A_ikA`wI?|`RS7hc8x{Ypg z-M6#Yp(b%%x`m-8F*mGOSht}`XLPinE%F|9zd+0AHtWSAYE_7w@2iX$8W~pP)w%H% zG-u{5Ot}vdN_}XyUs$uAF6qUkgL1P$T0#_$s7U${)a;F=X7A3W_vq5GTN>mr{o;aT zG0%JA8a4+k(N#+oeB_WY!HDE<>Du4YSW^d1#7MIOw|u7Wow{Ppu`+YJv{6KLZvIvt zE#XtT!Ojx9Jz8qMyeppO>n T6*0C~F}TH+;>E;UnG>|E z!_-uY1x}*{ng=>ci{>&JZiZqU&D&^>Wz^6 !*C;S-Y7cQy4`scIV~kRTy7Ga@YKIj zN9S1*yr_K!(+%OKRM8*mLVX+~vw4&S=8R7CXe92WFy}y*C(;x#xu>Cd61 Dy7d8V`>y3Ej|N-^n*8;xjH+9S&8 zoX!%OS1Kk^Lo<|VsjbJ3;z}ShZ;Pa}MmVov8^v`avBENHPN7&ty1*qvVJ;7)%edgd z&hkJ+35_igWATJxHp}Sp32`l+Zu{a8m|ALfQd31uIyJPybh^nro-W~@k{U#r%<8V? zPtEYqtIX!z)LTo9aHEMg(^bOUC5!ay5il31QM$r(h(+Q$PM7HhtLRnr7h3ZbG*c!u zW|}iIf|g-J`@qr`6_Z5MpvB@VXfyhRZ5HTm7D$Fh;R^Wa07QK{086H|v}kep5RELL zCd6*mq7OxyHijTlEJifb!mx t%oqD3=EFUe*{ler^JQ3Tt&uvT jY zHJkVMg{kx9&BHL-h^}bVL&77>?u>i+829yK2D*R$shhjjUE!|qwJ@QM;_P-f&EeVU zhlhtpVA}ijz^kKlJRIa_oiNSEG{{&W103Li94LSTPy!Wj1WrH=oPh?o04>k~J#YnX zz#VviKEM-r0dL>~e1RYE2YrD71b{#g1dJdUgn)h^6!ZsSU;r2h1_2Wo48lPKFoPjr zD2N0W5Cx*aFc1TVgArgPhy{0nQ6LV)gV7)Xi~)&YEJy;$AO(yA _keV8FPO;)_aT@C{sv})43G)3KsLw$xnK?>%tep~^1(btC_qpM zia;@#4;C;&34(>76f9zdGDcVoZwVtTMIeCt!7{KMtN>Q9608E{-~q52tN|5_@F0S< zU>&Fg4}tYy1K0>22AjZUP{jz3AlL%7GD0;Y{2kslupQXIKN#Ur1do9o;Bl~%5q2>` z4ZJ77Ztx`7!w63y*bDYC!hQr#gJ-}2P|FCffFmJ5jX=4 zZ~ 3KJ1b0+YcMkP4=PX<#}?19yWN;2x093iq x|205&di(n2b%tep~^1(b%01817C N*ul!3)y2`el`Ab|V9 zGO!%109IC5iC`5dXN3n4tOjdXp#s5!U@ce&D#1fwJ=g#?f``E-uo+Z=N5B@al@+QH z{2goq+kp-I13U^I13SRuU? 3l4(kz#;HF zILrz!AgE)77ZJP!j)0@!W$+4k6&wSvf#a<3I)W464e%y-3)F+R!8_nx&;U+?_rUw0 z5qtnnfe*oH@K11t70x1P0v~~o!6%>@oMVMg5qt*DgU`VQ@C9fAUxKf|*We=f27C)H zfmZMx_#XTK+Q5(CGWZEx0Y8JQ;2LOWg?}OV1^fy+z;EC>_?;C9f T_PGQa^I z$bkYl03}cXN8kk1z!_+O3(x|cOwc261#U9I9f1ev13ZBj@CH7>7x)2x&=(j$00;y@ zGQo%-SSEzXgnsZsL4Obi27rNJ5HNwkARI&hGZ+Gf%7jP+77!&9q7e)OF<>|t0Y=J% zSOj;;gi#3MKs*=?62KUc2*!dWkPK45I4~Ye029F^Fd0k%sbDIY2Bw2Fa5tC%?vV-U z2<` +!t357DD2wt&Fn2%rqD3J*Z5tM>O zpbRVqOJu@Q1cFSsAHg!P9IOCVuoA2S<=_FZ8ms{o;6bn!tOJ$cA(^lq!3MBVCOnK_ z6W9!@z$0J_*b1t_-@!Jp9oS^TKM*_$9s@gM!s7^bf?c2nJOOrtC&3=@6xa*)f&JiV z@C-O06KWAW3l4(kz#*CNJc7eA;ROVBGT}u8FM%WAD0msX0$!B~#}K>*j?0AC5u5;T zfH%QgpdP#}6W&4aE};LP1n+_OWkMr@55Ot#Avg{G3C@7Cph+ftgy3WF31|lAz^5|d zGX&?s=imbP0nb0N^euQ@!`~ _#F`N2Vgjy+?*gozyTh}fdV)HB~SrJ;KT`P1kOOi2`-$V oRG^2bC5h2 e6RqNfQ6tGECOX ;g6539uVH$q9Q9JO%cGeVni#!PDRwZ~)YT zXTd@695}=Y&vU|IcrSoD@FFL?#0f_@;V2ef2CsluIpG*5yv7N~IpK9qIKc^TAofj8 zc#9M2IpJ+icn8bxf(CFBya(O~jhyfSf>WIEA%fH3pWqBQ3z|6LBTo336F$L0GdKr6 z1)qWQ;B#<+6TaYt7I Jj|UhqQT4Sawv@Z$x4Ug*mU1}p@CKoA6sAea|I5cC6~ywIN)!gyf- z76yVrykJ5wm>0qkL;y1w0)~P}VBv)*1kqp^hylaF2woV8AQs#OMu9jG4@QFoUKqm* ziSWjPB#;bJz&J3T7bft+L|&N03zK # ^*tYoyAjSF9NH+`7?JFeF+|&yy2{CwT0*2+51_d zEUC(vcdqPQqO9=c&HPba^1b@xs4Bjy&TrN3;8pAS=FP^ AIjzhmD&yj~ZTO)aw!BxBYP8gT~M5cN=S_WmPIatlO}@xzM;0Rj(_2vCw#` z&L?@N&*sCyn@fX|4SDBuN$L7`l6Lwf>s9MYgWlaZzPWC6RZ&)|e#-ucF{|gEOHBO1 zq928-pQ}4((a$}%!FXyzQgc<((apw9hksBS2dT1+r#2ebtxh<)IeTnK;kkh17bE(w z3q89nF#d31&=X}oDnoMB?!t40Rv*>j9}@N7CK?Nqjh`jylbXx;s%qY>pF6fHAwKZ4 zq(ecE)cvq&_qlCb61L=z*9A1!ZJzS-27Z$<`E=b6bsPBRvLIDyP*t6=s>rA^77mvs zkCS<+4hJO%25c@eezH0FTv^iT!tp7ADUo}+4mkOVjr@t9@EN(n?!UtFK3<6Ue_HK7 zv88S-x-rWblUDLcD;aCjCO%o8Fh$$hU?f!sd8g`ZQ*_J_lHjUOaFyb2Y4@k oZgtM9TV5p!N@L8{Vq?kg_BgZ zg=4%fO`4%Yx79PF%CVcgawVU<$r$G**VT|v2dE{~!E!~(#06eaPOfCozZq 9AVIA4kx2HUI^+n#Tj+YoUJ=ZTj5-?ebb4JA&;!qzMKdRiARAs0v zztX_+)-fGhIScDR7>6>(A-<3!egRMoY@#C+lIY0X`+}Bi)wONaX&RJFKq6}3? ~{OL|H1a2nV< zsI7q=)IbUb#}o|4q5U(eMYfwd4Ps6pva1T`;W+A{5ZJH!LhWCnNy%h)C~dO4ZIZj% zig9M+E0$wld6F}()n{D!IYx3I8cKw%_q|x}OO^!nk_j=h ~ zBO0WBl^N<#6(v70#EY;F)vSY!aUeeak~)0+E%$nnlggtfm8jj4IH+YwoaSp<*Nc5E z7yH_(9m!Tl|E-R0R&g{75rW#cawNY`On#s8XtmO6TvhHnI$(Dqj?rNS^!nl0Wo&x8 zkxXZgO=l~ov6?rWJUMB&C-W0d%ulG=ps=0b$qW~$9kxRyDZN9L{* 5~B3VOD;M;mPEK*jBp`}uq%qNvMY4tJBpUh^tP)i)7ygMFg^MX@<-~Y z&TXGMdwlAgUgTJHQrTUZC^_k&R`}8Crf4;q=+5##skG=_nMJlK8gghb6bQR4x|h5W zvsxarT22Bzq0B(fs!&aCN?%K~I?y(hu$o?~XEhcJdYj`d)q?nvkeHGX+W}W}tG3DR z9_U}643^Xa=O;D>%~Phas|x-z@|$%6kzIY)?lk ktjoen| zQ2upak4^q$hF($?oH^QC>OA6)axq6aa+m7PnuQD#9nvN`kUe?`Zy{}q9LRT?w(m3^ z-)Yia{i>4P$nT;4zlVBU4-N5D_3Z0SIKeT%{B@OJmG3l=8Me%!t<2$48QP}p8M)ctG!md&GlzEMs zcBN2k^RFop`L{SiHLy39>5oM(ZKvG)Om2P{$?l+|NbTx 5>SOuR({_{#+1sxyt`8YSl?Hn} zTv8RBS!$>qHZ-X%G|2<@ic4GHQhndj(_6V~lR9wF_Rg})0{@E3Ep_yYiv^8o_VPD- zk?BKYrVq942qIr5K$%}Ar0;gY0Xo4tbVSK*=V#iMv1DhMU8bF3%)Pc^9eHqC*@M$G z%a@Xq$u}zvkp-MxCiwO%Yu8n<9S$x5HwxeGRXw3RQKTy?_Uycnk1Z#-PIsxQL21E` zPLJ=U*6H!HK5-@%HDtD^Jtjw#&+;a$JCw<~r(5KfWvor3E?@3Prn@vvcd=j8iPqJw z5cuyIZ>I(%$$X&@yh84`qR2D-T%aaVN8YHEbmEOlG|eTa$Z750I_2NbGD{QJ2d1wW z7NRto9E|C!WOXk&qz_T$zsQg!uD#@q7_%zItRktQP)%xRdb^A`sZ35PTOc2@G@w0* z$50c4HgnS2)!?K(@wm4%PMR@n?hNRuww(dY1d{J-$@lfxtVvfW$*#~|(j%sjYb)gP z3fpk!G%x!OI*Qb;yh13mD8FGad3SK-yMybSom2cG(jQWg&6@hnnu=g2eqJ!CI1bH% zy(j#ZI&@EXTM17V@RkKU@o TTDew_VfkGVp^3Rd0PO-CaSx<)M~udCNb2 zL&}2F;~grn#Y#nMrGiZIhcaPzxteyl5*y!BHY_4%4}JJh-P`K)S@N`n^xm%W2{w1A z)-pNRX6Zv__;}Co*?}9YxX7L|#YN7-_^9avnKgZEe|Qr0Uc1uZi@n<1z}7{{%k%o# z@<&%@_QeIASwuGGST^S1Vtybh|Kq*{_sF6u9Rn?|^Gv_MS3}b;Ipq&x$pF{(mmG+% zhMA{tcrpERCf!eC^VPIJ$dS<+sAaUq;-or}O*_(#ua#+Qd^Mj3lLJ9^%{mao#2u@3 zOs`?n6F71|YgZBcB@xgGST6@jC%ha&Wa#>ikXh?!Yjz?_q9wI2iMD*HB()>|jLK?9 zTCS p6>0Cn?mWvT20r_PXC}??vfs;C+)J7c9}W=lL9u+OQb4P zQgc;k`dhB;bKKA4xb4+SN?+q?ad)=OaVP02s2x^3s<7z|tR-7vbCHwQ(LI&kIy$|O zOMik*|CWFMA;vlOTobAFw5teylkU%GR+Fxs4QRjQWWh613wN_BTR2NUhw^<|qE$C( z)#Um}yHc-@Oh>cTuuW*EMI~s&U4vS74N8x9XE0mmzKL^hVaL1UJ01MX(|1^2#;91v zQRTohT4yEW2C~6BU@}MtJWzr`zyYX15Rd~62nE$Z1@yoli~xzw$`J}o4blJ1Qh=|~ z+>idDcHg#*?K#EdseGq1-BXG0f5iVhn9y6qBI&c&6j!HnU2{%yE22heA8^aiq~t%R zYu3Mc;G>=91%rm=Em}YFg@Vk#JHMBZpLSu(p1sMZav#W0Re1I9FRxxaV_w;bjC;JE z@}Kg-uH4l00VAiLeWGAPe!{)20Y6R4$yn`qZ|3wjuAP}$Gi>uFA!XkSZt>X6N`s>R z3EwSeGJ_5Wuf6x#xSW>slGCl8_ve4|rpag9x--ul?>}M6BRk($yrEYQNlkSe_~XH* z?^nNZ$UJdm&5qIU?>?L+?Abr|6YsNY>&}dB+1GGF8BzD<{)+GRJ(aL9FyPvj)Or0^ z(|wOqr>-6ry6>&Tx#P4i&U&EX%@@AfeKw-~%%OGnS;AfS-Lq<{ttKSyAI=rQp1Hes zyUjSCao`ixgE={m3JD`0v?b>qxH^9N!-pdG>k9Wh_~z8DYjl|f>!v$@G `~k!kmKM{8<0AckNR< z^zW}*eP(LPfhV=}Xz~$Bx{Et^d-&`c6!)p%9On8_)gx(de?0YMNZBXH$M4RSPt2>d z@r4%8>e<^iSEbHg`rr$>{d}vpE@;(V^UV)=@`ckwrjKlB+M9UzNq_yM=^lw|p9@Zl zoH=P^u+3Gq@2M^6;{s@JP-bold@n9}kR|@!@|Ui8PYbCH?ss70b5B)I`2NtU?Md%D zK6=_MQq^1#KJfMMpx`HuU(w8ae`55&0bia8Y8`fFe9F8h=j<1@9GJ3U?zoZ09s38a z*Jh1-CjX@!Ldwv7`qWANU#N~(Vl&z|4P&-FP?c^iSY5|2_%3qq_?hD-ru$`08uX8k zbGRX!ZSK)e_RrTJ{$%!y@{GiklvQ8*HQ64UKO?Pv-`Fz?_io?Pl=8u}YoYf(;r(H? zkThcYJ)Qye)ich{A9-!d+=<5BJ5uupt M-Ru; z??|^icT$lX7&%~m%G5K)xzE3Tkbh(SmMyZA!=H&9{>8y()=zzS?>Cc&^gpn5$G+An zb%~KRgRX5_vj0$c{Q5!9?f*h(?f>DUNl7E0Jd^GifX&=^>X6}_Z8(R!+z}kqHi9c0 zp+p}+^y%T8ueI~A*;APUq%;rbMp%1QO3KlQQigNqhjUsh?X+Zx;{7E^Io}n{TO$$o z$qjMX_VX&cEYGVB4d>KWbUk| wZvh`N2YR`8OnHDRQ)|wsUM>RC@NA;nuEgP&| zok~ix^hld#y=9{zW805veUFS p2*qLobO(UVM ?q#&q$Qc%tasfUUiiE%aX(Q`d? zF7vl-J07X3HVphxeX?@zoYPM{;~l=g;^|=+qVW>N(zU&o4w;)(JdsFph+R#|A)1x_ zm~zytUCbHNA>);qNZ*kh!dO3vlDbRF2yVe}{&<}CfzY{c^0mna`HZD=W~3#Ie8fNJ z?8+&TGvCM1mco$H{Y|6$yII9621)4OmeAiLp+C7Muev5z`X1)T1ZIyPf5FC&(^fC8 z$Qg5H$fYT1&YsiXIQu9rTN>?vnj^Ak>y0Dcd9Hs `Sv zPAY<1DuUbA1beRuuKr4+zOXZRt;Rt&H#1ZAk#R=(!B>V198j|(`QbzP$M<^IUc^Nr zxV}Jnafyt1!26_g_Bz$fM`o)|TxmS`%vvF2WW#>;iTsyrQz!M`N*0+8Ei#cMGP@d= z$jq4 6IvYHMVV-0y$iDP-b>!=^?kcA`!pu>y_u&Z`V zKukh_+KNjx`6ep$nx};-ic4(H-*EB_gI!X)9D7Sx8Fc zP)muNw{8x*XJqvg8q%zV@?pg$F 8%|3X-eZyQ||dq+O{}Kh<7Q6ehfWyrceAh zZ}QJRlEVJkNAt{}_oM8i6C7!PLc4Tcfb9d+92YXjC2fw&v0N9#;et#CPPeOO;Pe!g zKVxkR9&9fR6+*S6$Ju3z9yc*+oYqS305v$u%Yr0T!U >me(UcJLM6H$H zvXaN#p(5Bvsq!CnkG9@;I~H@_ETS1Msa7-G|8&$I3^BX!?y1we?@qbgIqqQeIrbx+ z-ak0OF5AHgG4lrM^9Q*!BZol2ywNM@zkbz)Xp2wffT zr-@gjU5)U!%#>6G=N-TFcl@yCkz%OqNO2X; xUtV>1URW5065`nx7dD%v%%{t?$h!$y jbVAUrU+g0(z;>@x@#MR$t*NOW3^f*0QOj;|wMJ4AWTFyt1#eq=O z;=oL=NM!$9fcAVYWOkjGZdUP@T-xmt?6Y_&&4j(4^;c!XDl>JanY!2~G>2+5q%`+W zs=hQAS4#imu7tbK#@$CMMnd@&BkM2qQ(N)$K@uw@)x+_M@bHRAvfg}SZO>JiSdl5# zKxut*KPg|=TE328{Cq+aFUD%E^udCp4Q)vqijy#}^A-VhJyDulojoZ;9DPcb^=)78 zjV4>RUQ)-h_2{CAc()u1fql>qn)RSxW{1qz+WEwGW%0w+nHr2kHVi@wf^7?eaUbN3 zJ@YGpykUK*j>3LFSJELk9WvZSFxFZB9D+-c4VR+3MnP?Njl%Zg*4R}Ww u80=JhE3mF4zf0#2<3caC^GCAr%m3+z`KXpcBVE`Eq~scG>;`r&J_ z&8`SIh #*1-&FUtY~Xk;nA?7dY5_6{i6?kJ2(WL zWX(uy?hdL!>IiNJYCG8ns)W5&{-cQOknQM@m4~UZDdp49QCN(|xh|$$7sUOz0kXk< z> qg#spednNYAci2R$&9whr-m-)~{f5;xz^3 z#y$tNz;?*0I%FkNM=;j<-yS4QGbD91%?LR= Z$_uSqo#;*KQ^+kIQ^{91#ZCgaPDaeACHz#+oi1BtL{hCty?j z8&dqq!Mgvt%29~w!7$Z>Xf~JCP>sv#^J$(WV{vZAV*7w?cXBau }*$20}ZI9{fx2ASy`jWsMI)W5Y`p0zT zxb3^~lGtmp5vi?CP$KN|xfRRjnm%?zoqm0K CvKHuo%3HHT{@BfLP+vczShnOH?sE&C v^o9>pmOzP1xpu^L8~2IRBOf&9BF8kBg6_G8Z3uE!z3=%_>18n+)Z%$wsSv-fE+a z#vNjltM7Hk=raqW&uo1PiWCPU*wY#M#?RBGrfTy%rbn}VrD?@@C~l+;cJvs?vit5v zG_Y~7Bs4H;>+_{uO+H`h4{YvrbpP#Q0}g*#2xKk`IYw{anuUXHFNH{VJniD`PWPU^ z7}EA)2njs`T?{=^&j(cE`qh}#^CT)dShqqPuBN?CroG-a?R9TBA3qlR@nbtadW;@Y zxm~-i>1+O8zw7T>E1fy?m^z!JcI!myY^{~fijnMB+OuE5N^RHV`>r+beg%aL{-b{I zA6J#!|BWfk|CSj{>;LR2%=xFJS@Jtfz5M4BkUbvO{*xKV{}Ge-=jqV3|2NrQO}aD{ zefxO;`vf@#>53z=t6^;PTxq`dj&o4 *thniC1P_MFN`V$(wT(C$eD+ApQNM@p0rR2#nDI`_5{Pu8u{>`B`|r3WTZ zj>yg*!OeW FB^hm|4Q zVfp?6O3eM3=^Pb(nc~sU$v*8=jSe**kCTZZPCafZPaKsoqY!Hs#^L}CWP%mvJup{g zwAx>AR3rMD+=hum996Q{398uZ6m7ln{T0@47c-v6wAfX-ueI|PO`DI-+eb$-HEo$1 zZ#=@(D(l3jYVpZQdVaFt`qLp(;vPFkhg9raq_lDW)>>7 z;;X-oao!`u*^nMD@Fu?LD^8hS^uNQDDdw#5@zf|DlYBaBEWU_pN7PK6ZKjS)>0_JH zXV2f=c&qA$St^Snmrg3tH*Xt{1jdfwc;CYwd42CN E!ptMxYx;mb)_lS zm_Pb@J9)2g^fq5`&ive&M93wjN8k{5&g76< j=;S=#q!YNJaDGgcZ zXItn;zT=?q8{QTro(nxzWZ2`UBED2@zAA5DI@@-30JP%l0PJ)%rb@&oAKuE~lxX`+ zHl}-S4O3ov7rox4Qs-iSqD{9bc %CKsR zI9ujqPH{3 7;@MTs)Ow@ ~=-XnyZ7WoIi2YV+%}6} u=ySi?>nzz0{vSOi{tl0gJtE&1rw1qf)jh7o_5PyCUPtZXI z^6dk8eKUPhHV>;X4_k3gjZOo#&^Wzg4B4Il9fi$wguG$rIzSzB9eTW!$&4qWPQxx% zyt`OyrEjLspB;;CA&msHQ0WV*W9qQ;Gt?o0jzs~E7?rCrR1Z*|$AEg7pLLn9X2Yxd zsL4JDXx2W5^Jvpk8XJ10IQw04L}svdy>2G) s7L1Qrn72u_$w_J5)E;ow2TPN ~~SLq(nGkKc=&A2R+M ^W&C0%(oIg3Llh^t{EwA;_iVwczVT~jK&Jo!xI+p7zGeS=GuRbax7Zv7{jd9y-CFb{VdwH `T36~uQD zRPVdU+@nK2FrIX&>4EY3^6_dqIZ0+Lfo9EE68m*vh1rip_|-+w`RvCR 6rNDOFDSfIB~`6R$7EyZN+CiP3x9F zXD*A7SC93o#;3(>_#rmDk_nea5?B+46s_wqoOZZ`+^9Azo^`REb*bLxaMa>|5sTkB zT>Fl+IzTP04sOzv0m+*OrRL46RwQEwF_uqkr9;BG8Fn?Do1t%>LEkoBtb{gRtc=~L z$Bttx6*^>^kB2ZSk~bAP28&V@$=-@&ys^aBK;+acNv)@5wS6#4X>Dj)@%RSesLUHh zopotI?J#IQ;*$G_3vazhwmw|B^ A6{ zFJ@4*hg+(LTQjb&;i{T&RW%NKk84~LZZX_(A9T1WX?qB6D!R@j%bmox_CdD+u}) z vyS#~}i2vBpfnkjJqfTEkte%-Nr79z^&!~W>){VkP zcP}!h3}cv;NluK>jmbZbe;Ll`JXfvU&Zx6^W_Bo}W3)cFa}S)&g=^@iJ}X1t4d3jv zbJIT)3?DKp?`7t03S>s@mNR-sCUQ3WB)d|%e$?^tOhtr@33pqmWY%IY4Z4G@r-Ras znL_So{^v<`KfYCdTX*7ZT`04Jk*{0nd^~!T2RW|4vnr8cHg`MiK~la ^cqqf@AvyN3w!xSizXC z`w}bDfx+@QS?hDS+ZT@q?@L6r@xFRErEGgCOQtG%=@?@C_*TE(hu{R7{f;eGjnw0c zhT{tUds#@pU{cNZ)Cnx&@9tb?!;Fr^O@0SeBXuh;sR@oZ-;QQPRePur{uQ 2a>(dA8#& z#@;cS&?|0iz(2oe!HTy(+_y|hNB;Mn8s2v@v12;Wy^k>s$C$9d7=lMNQB47kf2oFa zP?{ufpCs?>)ma?5jckbjLjhfcJ<32AVb5{5lMPA76_Q%u{K~Zd%5-ewY3t48B{jk6 zc~0Tv>Y+yXT_+%I=YQ~aorXU^){36Ijqj;OEZ#J%9Yf6HTr2v({Y)!{6kI*_$S%U3 z;Tz8ICWALQ%(foJKkA^VjkrX;5q3K@yb;#;lq@VMjAU@F8MMHj!g$qzDpe>NDir)h zj&$5>SL0!pe@8_uY`5;^iKr%6{H>N<99b76scl`59)8#LwFypFA8Ufsb@gdMe_o>q z%XTEutfUq={kWd0>BpIBwH*g!*hfiCaJov99D2%k4Ua8u^2WzGzEMd&RNt&7MBY5c zb`1heaMsHk*30<|{Pxq0dU@C^C#h+13qXRrZl?w$1#+!{-ObsAcAX+`m?AgHG-MGg zsR>S3#c4CllQqnfk*gk%$5oHUWe&uGe*~}efZZqSsTwSb`**;taleeYLVjKfdHlSz z@nwd;Aa6hC#C%V#`b%oN>aT}?M&5o#-guQI_sAu+-6MbUo<>{(zv7_6ugJp+Nlgzc z8lPjy%Px@j%PuGrM^jSUE-q&mxhQMBDC;=L5{;r=qrib`#Zi)aVrh2=M^C3$m>=2J zA8G2HRe_F%Tdl79q$W5DMT0_NdS2Us!z+#o#M=$>fR*lrY91n@+G-y1fP)@!KvsW1 zW VPVTH|a8{UH zf^i$rircb(w?BU-1A9L?rf4{(FyUYH;%}VdM&s{JkO! zHs0MRKFw^x1B^4PUN!&ND%MH8^U0 ;EO6S~?^Z;&&iHE~J!mra*5svHB{ zM!%W)KD+aTkTCQoCTTJrxzg7}<73~^34PGUavlDn#>xw`cxJ>D#!&Q3=sWnkHV&hf zX1(;&OdbBlcEds)!_+SvEDN8>Gb %XrBW}Rg4 zEEwnyT?zD$rjLUGYa^1_ 8xivxYu7RO;cQwsi$_b#K#t@xX}Jv9%=J teTh$^@Klxu(5muSW zSK%H;?*et`U6?B|FFKM}l#;^W*jT6o*5WNG7tVIP+F?6jhj6`AgP6H8r~{Vednpq! z;<~W8aEODX-^pL zNc!xJJM_MC^tHc!*o&}=uM^ba>x4&pi**87?{GVnBPpDNI>Nb_gIbcV{HrR$Di1mI zQW|2qI)w#JSM%KLY($colVpJ-9tl_r9ER_uG{pSX^JapU{Fhaa5^g$g?hwUwg zDGf2rI!P8d6V!iF@yL18;C#E7c;u{5^->yQZr^U@NV?qs(Be!)SzvE}Zk8h{L-xO2 zl_)dS@pjsXq^^ENPdls2&1yyDWc7cbw#oQg9cuEbqUu!zx$Gdx0;k7^ihtf0zfrVb zAuPBsyrD>YLlIlQm9%3H=`X9TUB0iKgv!%G kWmOm;bC{|e zJOImjDGf2V?;QX2q&gJ-S5BUPoB0Y#D|UrCid|#3F2K-Mg;8uM3v~=-V-Eg}9MJYs z8e;ypHUhmOzpRvGfzxx?dPGkCw3?A~jgwu+;D^(jGfBtb+^zWYYDQ*p= Qv@22W(M2z^S zx_a6)#QaMRb^J@tEa~+Obj!tycuu qsZf-tMbtG>WjBrJc=$mn1eb7bFl?J zB#W=g;>o{IwHuU%#oLdo^rAZepKr)JV83;dlndvY93wWJL-f-9XNtv&fvSJ26@e;D zHCk{KXDHKVC`o;gq+B@S!y%d4|1ZfK`ETEW>`5zLRmM8@k#0I~Y0Ggx+I2H=Uj}J* zzgb5SS?(+;7f#n7h+DqJeg^rSB!A Nv}uR5{1urcNl#A7B;9wCM6hWQ zEao#U5v=q$j9JYK=3c5o%pf_`F-RVh+n3<4FgM7^>&jlLLd (X{knbKhUBPZW@;D zG4#$`?8dOm2iq(4mz=hfjOrv=>3p+V5h>QL<9k(Xo)6lp3T yl8>b zbsZeJy=M-wqe$JwZd(zF2JTWh9C=?!`Ea_%tC819hy&CS;t+dwg!GUIJJMz^|Nof7 zo+SQGP=~)$>_Q*u8MfmCCgxLj65u2$3{F=Q&|3lV>W;@=V&NpkSU61ob_BRLx{Y_Q zX2tp6-?f)BJaLJdRF+Yamr-OGGe56%Zcag7MuB14qQc@552VFqEh^11Ojw#zP@I=- z7@xCfUQS_Nh8I#s7Z((l O2&gg6FDWj_%grgtC=G}(Utt0k z_$C!+&zYB3WY9%3&H?L`Ig3hE=}fWeC-tO-r8&CI0RuuO7a$VtJRxUc|8TyzFnE^l zWNaRPXgw!pDa*d;n>sfmGaCnJ&}k*+o}FF!!lk-&reEB>1L=`jxL{F6Vez7c!#?&k z6z3Xnj17Z6Wfsc!C~-8B`z9eN2sKYGDlNnp<3uleIM1-7q<0KK-NZB}?7^6>v&9 zJ}1v_5&Hq3niDW{jDGrN-(akfl#`L&f0s5VYo1}Mdv)9n_x=Hm%DAG8xTJt}>S=SA zmUw-`xU&CL7S3O!sxS{_#(W-}Z^$XiF3u{+E6PbOW!wX<7_nHGQ;H5);AIK;g_*YE z7nT_up;Bfq%F1{!k!K^u8{_i|atsNJvPwPW-wm9fQCggZ&a()0^D1Qm*$v5!%AAaX zSv>xbcE)12;^LBmrG^ZXF{dP_s5B34lpW*31`HgtRhhkXVMK&+>e8a@5^Qs!Vbv&Y zPDxo_R&E{>a9lZhZZT^vG%$TLoYyJX_e|leuOYd}Fg34q5gW-T<**lWOiJ{bxD~O# z%Gg%z-KfN%k`s&}3r#V-C_69L^ffaO$Eq0T&iuJ~S%wY1p@S!66y(h*$|x!| D-LHdHvXSE%vCmEH2G?NPw?4HK#PMDAG4B z*KPEo(u|@U_J#E2OxzH+33*F$vJH`krhm3;&WEw;u{kA$s!yJr#0=OqGHon3r8+ci zQ9)V8;Ixc6c}4PEWn6a2>q*MulF~7r?ztK1A3mBf-}zMBm{neesTct0X 8oK z3Gdf>I-$+R=gpr|yQ*kH?Q@lHB{C!PAK=^!^9#^MYd&M<#?^ e$bVv%WbD&USd>+~@X1%1g0H9O0!;$T=-*NpOE7Lsor`f|ZvWR9 zzg5lym!M-C#ugW4WM>q_rn6t{^+mZQ=yw@kC@pbv_br|S4U=$Ml(0DoQ*pd79xlbO z)H$BvHP!k4?v?&M-%{cCCIiLePe+#Sj%J{po(`1KnC9tm>){jo{-axI*Ly361{t$O z&Tf(8XK(NW8u+mV{C1sOu3{8&eYgS 1#Ls4^^aIa3Al(r^oq^x8lB bwA@R_heYPh3O;DWgO&2{G|#`e&0aU#|K+QJp^C*eukG Y yuMJpI* z`3r0`Ti}L#3PHv?GJNn3wX?u9u @ei251jt8Y z!x8 iV#8wA<2|bgd|c*qa>k{BuOe!DoLiitK&K6 zcb?yQ&hs1I_s_S_cVAt5-S@ipy4P^6YhCMFYsp3Mw`+q78 zS(UI RDdoiLWi~)KizhKhT9##fZ 9xKe*0`UU=xZ(SyN<^%-4jp%n)Hbks@PH@J3eotCij^%-a7LXc z(Ps;*4P&KFuxP;|UVxaHEzj79IStP_uppSdoQBk^;p=7ySgu;|XDJE;L;)s3XVzG* z@N9*$R@tIHanix>T{^onR>JHVi||>K<&F)@Eth^g=@rB?Hk;0>S(}=9a34{Xq|nTD ziSbYaDGQ#sOMmvm4!qv1sqy-(U_bwYXD76=GT>R5P30*Ir;C(WqiEup@H4l663*b6 znwjwIW*q4*a1mdhXCl<%$(gllnzEyIswBmPW>T80uHMSb6z!G}Gm_->6)JU~&0|)O z*`M7j!H)IeuMwGKi%a!ZWQQ7=6!1r~;PE`Q9M^8aA{)V%;PKBqGTPx%&0bEGRRI~1 zM1WNA)b8KYniDW1NHIbvA0VCMD&hy2o;ha4=h+57U D zza|qhEH&Jjt+u_}`D{3&8NkZgtRVRQf=NtH-tacAlB59VTp9Hm0lSrnZYP%HEe^7} zanjOfwB8&w)vc0bqShclqdEAXNEBdTMz%~g@!R=KZgUYrYvF!YuJ$~Mq0@OzL-m-% zyv$Q&$LxrPw%GP+=j$KQVAXR_wzz1{fgx%Etj@D;Kt4`di;0&ESr=hycjIu~Eo;Wk zPZAE19b6@8CO<_aGAbAGRaH}j?3dJ6C_1aN-Xp*)K=Pyv%XnvYs*%wQQ}!-K+2Udm zLKCwSJard)QzqGmvV#!gqz#51=V_g(Vsh>RPkD~9qFaPetw4UMl&NvHIO}(Wb@H-C z1>GWD=;Fu|4Aq@sC2HsM_+H&2ZkVt|)}7^RcOpd1V%xPv!volsmLi=h$#X$GRlYo5 z#`2vUdx}$=tU-V@zmJHee@3}#jevDYYG;Ci{RDB+3*vd^%4X8rkMYFJq(p*S3OCM& z1~><>bjSs`vD25>IZ+Wpw*WPk0+!kBeD+3+=|0kkZB|?Lr_E}A^Y7;~|9&y{`G=qX zZ`;sHu -K+%zbU0w_D?5SYl?oq{LlU`e+^|%Irv=AGWmBsLMYA)Qrx7d zEM_CFEl?CHONiG;t(14w6e&t+c(6TLeHSI Y4$^-O?9XoV>P8Wx>qHDb zjMhv1#A?P^h%po~`rC_mF`6p&FL8v0FBAVWRxIms=l>af+`C2y8N3+%`_%uuw42?K zA^4X#$imIpW`_R)2U(ykn`Zyl01IC&_@APTMah-;1JR6+7XB4WSzsmquUN_gs|7!? znlWsh;$N_oh5TLIgMz~c|K+ 5HmkWuQ8Rl4T7~<_=#boNj1V_mkVSPLt>rbnR z^IS#hVqKxr{w1cd@X->nqb2^4e`BP({wpN28-Aa%V@x#T|5Y7b$^w7Olp;ox*uw7r zKs4hGg?}KL@s|95gSqVLZ_WTkjQ-YA|BlXOSC5GO-=Kp I_H~@_-(W7gx<(MYM!>qGb%Ou+ z*)E<|*H59~^_xV9Wg_6GxR}rHn$P!Q^naU)e~q}5J<3<|{{~(x`XUtuA4cCW4?1BH zqkm*#f?U^cSk34@{(rp7Z^DMjo7Ie|;{A6}#cunp=@v2i$MdWIA*cTk*nei`va7$h zzz)Xzxx4@8#RmUr?ZI4j^|zMk#ppk)6?<)%*o}4XE|Z_|VvM#pgBPQ}m&|I$xQWHO ziLsj<-Tx!G|53QCh`S~J?~?cr#*Kxr68~p(cLQRA{~b24h<}qy2U++lBL*Kve^(M# zGp35CRn?Woro8_NZS1S0*d)n6x~!i}E_;n4xxYg?yHq2-uI8t#>E4WOz%L9uz157k zs*k%8+DBxSqq(xkMRX#<$Hya~)OV#kQ>Y{Si-z}*;DsoLC@M0q!C(GB9plB>QMuh1 zE-uhi?eY{G>De`$$Kb|j6-)j<(8ib-!W%FCoZx7dT1iQUB1Zp|`_YVNlKXD}7XEuZ zU|VMVtVu jAr&VRE@!hQK9(XA)Q^y6#Ri`#z%_(L 9_vi@9121 zmF-vlU*RUZAztbyIvDfk7Mdg3^(W*q{+PrcILUZYU?}L2|Jla9SOXu%@5Zzq>eG63 zDO(vUTlw6z>@wvKH08JW{9{-#lZ`ys@Z-Nw<-64sy??K!xQ6xN4{zD}->AL+566;! zJ1YHi72n{&>mF(O^M{(v{`+Cp$dLk7v2JPevvXmh>UTuDi7|cc8{g*}KX$l4AQ$34 zT) 8&Hn;KQgDpTUdKKR-}Rs*9nov3g(QZeiG0|F1}Afd|EZVl`t}Px`+_ z5sUax`X>SyQzrLk=(Dfx-2=$(LCG^#U%C ;@rMOltRzrN+2*9yyp3%J(HyMs z+XQ;$X8rabKX_($;r#1hYW`k@M+zbeSKkh$<5J{tJsv7%@)SP?B;iwr@MG%KZTZ j<|IRHe_4$sKt&^}t=s*=ghP3 Yy~&dYdUQi z-xno)LFy~4XlUhaEHQqDaTDf3X^%X`9FnExBtBhgO@;9{BT5sqA=~6 2y#q0-%&9(J5S z%yCl+{alOy5syBy-xZ6P#XYDSMaT3VDJQE0MaCvnz4 jeakZGw$)6HfWd zkjP$z){ihC!&VCloZ5lNfLDku--PSEPGFTu71o%`&>ij~O~I~ABWihB3ki$&=wI;^<)3qrf7_e7I4P19JBA@0@i0R%Zr$p{>XWs2 zx%EA4&sRa_f{4mQx=@?$NHuAXp{d=AboD T%Wtck>qhwZo%(*XOxABd=Wg1M{DBdBsaPMu7|2p?(s zqWl KkeJh7;%p<(OEA)Bz4eKg1;lDoz ztM(m7)mjm5?&(V>o#beyZZzlopcFqozr_vfK4jT18d>j~F-)%&57wN+0DUPs_r4dU z_x^(Ld2aA7ibCMh9T1GX3e7fYQp*>kN#imR7tW)+4}ECr${^If?oTOaBq(cfEkfE< zN!~LQje0pq(ln&X8E?=u^$gyLo#Dnl0m(ll8o^6|VL=6QUq8gIweoa&(-+7)%hD7j zE%Li>MZ52-(3FF{DX&IE#}}8t%{miLs_)^nj3vG~7GY0KGv @GQjdDumDO6oRW M9%2uqLUs8E)Rv#cn!S6tzAU{3#no8i5eMH@_aNAsj*kz; zC}_tn^eK-=T=XT#3(^s*xEn_GVpJ=fM6>I9&}X> 0*T|E;9AUGn6DC$;ksfBeqc?0XJ2u
aX%-aNm!#ha_-^e+(e;cUlx?t4F>yS`>Ni4GJFkk=`!` z6tyx18)|3J`N*4Gdcj5Xt5c$v-{fe6?M0|g7AJ{k3Y1tehjTV^rQqHsAREA^8r0=Y@3j{cxJH$b@_rNYEjfU`YFJ$MTQ8xn4WpA#US1(j6AX^#~3|55rGr ziycLG&i15j^B%zep%V4UIRJl~8`z(kgGucD_IZO!M$40g HWE9Sg|UN8dQ&?U4>pdXfS7$~t+S=zfF``K-HQ3C=edTQb`&f-2g7Db z@^eulfu;d{8+!>s&n@WA7BRa0%W2$69YUTT^N<$SgqZ1fF#en(JzmB7rf*vzX|fYv z3U_f+54q9xoDuYT?Pv6Qr9pO632mojNRdAp?_7^U@x*oPI5?bKw|~Sm-9~J?SdG!? z>P~apUg6+!FGN<|=L$L>Ag1p_tV`%XcJm3Sj~q{Fu7G<>CM !P7U0iha&QC_J`tNSE{NWj(zWlQc|@@bSe@9nLKuVk_+u7O%kmu!Uok3 zP-o>jWdo=_QHjhx4 VP{hSX^bh`s;+xk{-upH#d{w0@OAaICWDpKC z-NNOB6z*G9G1u~ND;{kVBaLZyvEZvc+S*zX(L4_QCH2U9;aKj~1U~KSmyE0z9Bp5{ z2mDFmv^(P@GS!db{!%xRm-+}ty+ow$WbHgH8x!viAk#`Y+H2Z^4Rh6za#(=N<6JO` zE+DP*C3@;Sb^5XB2HFEH$lJXGy=E@Khr;LR*M1*n$u)x-`li7vBnn3sK19rJ9V%q9 zxcu-m9Ir2ST0B0DYxq!)m{Mtqi@y!@=t;KDhfy&j6* `4#ZI~-V{j1-hrQjKS2M8#AvWRBKO4GZT zH~4C+LRrNUWL&ZsFDE^LaIFj#*U!WHASJ3@;|JxCyUY11XP9_9U@`43$cao(1 z%Tm<$=ocv5aVN#h9xy%DpN2pCfE_K{nf@k01DD)}(VPY3m(hT*&<7a%xEZTnY{FJe zWy wNP+43ucyE6|eg~hH zj~1u!(l^*VLYh p6J# z(53S(hU7a_nJlc2W3jUV;%s_g+ii8q9~Oj`+uF4H?tDn6Iumczc<#NGEXBGWM&?vE zvOOW9wX(O+aPu=#$EuLS^gQ&lFvs_Y5^$28!kxN2hD@e& P7&)Lp{mNB zqK)_z`$3J$7k0u{@evGTn=sER8+%JXLdyIdk}j#zf#*XJb0ZrSnsHd1b`2B3r%f)K zaAxviT61|7?2ff#=Cdd`HY-xfn|>6~z8|f8W14lviW)A|;)bgcwbmZQ G;DqoZf9j{Y^wP+_V$w2d}|ygCRAJ*~!&UEI_>aM67q(jm;r;SaWay zI#b7>u)PCydGDd=u7W)xY3j<%L;9B&*vyN<6}}mD_R~RFKTSH3Y(;lw8IYpS6P&!N zNts)|p!^1rYhMF8_)>u?E{PDfV-7+@$GBP_6^b6V4!>AeAob*MdbiP- ^ra
xj70G{q!he@Dil; zN`a1^94!`;hNi_jS}>%mgm#)>yP{^|i+?l0M?xIYX z8c(GyEs_-Pa0}8mO(@xD2Qt+R=)^5PoiHgx%!0?zc&|+pkCt#R_Y5T4Lz?7&AscQt z*_dYMTx@<-gEyHOxLTS95!2TkT1;q&eG43Ws!(?H2Z*0Ep^m4GobEPFG6`f3!*l9k zoZrqlTpxkL(Y@ifQ;V)0J&jn=VJz!Bi9uJ0_A}eg)ZzQFtT$-(P))4ds!3nhW@Czs z6;&T7#p*FKls4`&9^4m_`5b-9w&~zLtx_Sob0@ipx4+}^u+J#4c#X-HBgmB5YxYcy zM?^nETJKT`W7{IUIWI}KqK8r5434Vzp1?uZzVP(cqowa_vHYC^O}zLS9~{0S!>19C zAM&Wo;|y+ow csW_0KX LT=(EI>qBCD$;IqwkkB>0wGb zk`K0`F)$mWPmCqi$FCthRE6Tvff3*2>H0={*sKsIZ_j&Zso4XkphdWKrV?VKRmeH4 z5L>1sLo#$Itvcce58(&g>BFbhgTnB1tUl%bnuCz7oj5iv8(Xg_lXPn)p03JAO796& zEcOnbolnpnm5H&-cfj|-BSf_&V5_n^#f*}r097ffp0^S^6=cY1@C|S(P2hcc0r?{% zX}g0u4d bgMa$t>^nJ4r20IU9slqvIy41p5u&Tp0 z&26Z8kORTJHMk#`4+UN(deskx*VQj5bH9)B9npvrFT;cjTErDQ;mgZ)@R(AL(q=Xm z)H#A PzJcce>g23%pL9QN%SaKY17T$u3V Z}Ka&V+&5k42iBF<|AHWVt5^9%_RFHt9Ftuid%Ye?;Tp5WP(+lU)B zkh-ekpji9{DH>gfOlgGfQ>K%ctcKFq;V}M?#I4ie=+Mz2bfdZryQNI%)8unF!uku< zrAe6b>k9-`w7~b4h|HwY@cNYorj}cfsM48>JzkFIb((NL_6z1))B{FLSMhm|PgZB~ zYRUwfT-MCJ{`?$KlN%wi DVc4nwe%r6J@?*^sEIq=QfC%zBtmw zho-dL`z>77Pl8pfI2kQEg(VuSZ~T#oqGMGstQ-OBuwG<&rv+=a%hDW^K{QicmX<+} zCcJ%)M9rJHKTD4sHfoZ>zJcU~&4}Il5$Xf7psG~Bxn@j5TY(15liOi+KNO~B`bfO{ z7P6K8sJdrB0a 6d-L)q?$Sd-EQv z3~%H7`Z&0U`C!k*Z>X6Z%*E|H2Cd19V4al*;qJG%ctFQVrPo!6H(FBumNR%I(+Z(W z6JC9nqmCnanDfkt9`3u0o{zR*;npmKw`QTSWElk9Go&P$ko+Pk%3p8~hMPa3!cl`x z#(Ck YZ=$B5So u5Nv$LuKL)OkglJa (ry!u zo_rby^?5fS*`Y;4_6?#}%+7TgmUO=EJ01p{MbXqglo4YAS(95>G;<(ibEN3HZvw34 z4?u0?3+&$i4ttUxVoZoGzPhWCv_m`B^X6_eDjU%I!=-q}#*Tx>-oUs@D=H|}rIh4v z-1W$IM0`C8t=`9+)IzVpIy4fq9%xed$78JAenD21JI=M}(a>ZS@@vr{2UjZ!9B~3` zzuHpWHa50vzKf7yx}-K+mgE$*sL+x}0ax#!cA_(>Uv@#$(tF&vt^MIX#g0U_TC_R- z0vk_DlVw#2eEc2A{{)k< C+02?Pzp73%xXH>d`qG{#7wp;9AM8@?Qf5 zHfCzhRHjOgNE}JOhppr7XyuDSCz)}%sMS!Vy g$L-UFPVVx;M_q&c^ z>h$MmubNC@>wh3HOq0e=&4J;LJ7~;41g8K?a(t*xc8U9ulN*ZbU0FC^wGNp}wjt)) zVQzWZ2`px|1;yt@+(g$lRM@VERgn=bmfnd5!9M8j8c5NCC-CahM(mqx=&q3?fp{uc zetk2JHfEr%ha<9QoW~ZuEfBnW0j>3Capil5Q>=Lr&c>g{Ua=>TZWGY=;di-VmeU}9 zM4TL&+u*j>8^aKb7ut2m?H>l)ik;jiCv~b=vl02n@8E{Bqtjb?3rLiNqB&NHs(I$5 zlO?3`yOLyE)rh*c=TR;jguwN#B<9(hmd`B#FH}GgU!%DvJ)UDyHlIdz?SPK7CnDuX zbBDFON!z3cQFJq8zkbI6mwsffB}J|m4ai%=l-!zhXsmrbWU`d$*hxap?hk0_ILw8G z)M3S=;qV<^g#Gj5u=>plgw2+s3a!z|Q1GJzgT(RdW;N3Nr78UzvyZOtOFK92#lou! zq%vv=hMcq@NWFo$T{fO5Or=C;Te1(##oYPw EV?6-iY^ zgdr+s6yK)|&UNRp;jA159r*#nY&Nd7&PPso79_JOkr7u0gPY8L+P@U91jaO^WC*RO zk-`g!e8gW5#;(UNVO?+?2^*atI(8V+Z?j;k^&Db8dbDlycFdIgipqY4=s6?^>DJn` z<9#rKhh;)VwE&hiKcLjMAJI 7Nb zA#}Lr5~M5#(eg-h%Iuwm{psy!$sR^AXACKKs}BuO(WA+$FJRmBP1rKb5{i0-*g2X< z<=SQ>eEJ0aLriFS+HrUfj)!4<7iS{2mJ&4v!y)!0LMMj9<5d@~9QX{|E35Hr5wl(D z%5Y!St|7zf734YHi=+edV6!O@M !A@~L$Ag+LEJI{1I28q z+N6++OZb63MqfFni<{woLYi(lmvJ8_tR)4^L7Q_E(~&RZ&Sz)p!bF-kc^I}&aH4y0 z)8Jv<4jYZJnD)S(KKrI%vFc<}-n}1H*R`nP#ZZbly$7=vd(q~*0y0{sLXk&uQ8=g+ zQT#0K(*ie|6YfT)X|JI$SBq>0G@+l-cv37{557=>K2*PfZj&ULMGT}UpT{`Y+JfB? z3lMd}mzyy$4ZBaQh54>g)OkrnQ8F4>`%VrQN+n5f^bw}4z5%CijgS=cp>J=(Fy_-D zO3^7n?eu|ks&Xai`7@n(Q#+d p;M$7#L zFy*qIcoIZ7Ul1q!f`qSf1z_(R`@@49ne%l0! N)*HNg7s@s;W0#;Hhh)D zx0Mx~$Kw-diVKHknFRdiXi!Pv2#OqKNu{fcF(g`&xQ(ZrI-Gelw=bWhZmH7d3q=_3 z+Y8}JwOr?3KQz3kK=>_bddts3{0uWPe03a^8%xn_zZWfE#*wH;78dxPWo }p=*mZ znU<*0=B+$}QwS%=?1*7b72HX~dNjU^fumat4*DrjNW^rwv@M~BGqn+5B1yV)b?BE< za&&P`e=_qugZ0{$)c0d63h%$f_v1Fq&bJD+lZKMgJq o|81Xa4VNt6U1)G&& zam^=G-|0e2`%}zs`@${p8$>Px%xJ!(8L6lUXyGRfx{}Zeg_stM+E|N$d2f-De-&2> z3@Ko85i&|z@#3}yH9S<~mT5o5w$giCh;Kc v~)?N5 UOZ+SUFZ4+>d@}co_OJ}hhZf}P(C< ZAGxSDV(IHz6h8WlhJno1 zWMN8ig~sIiL!7>**waF79U3Ej6*37*WW6Vv%cy*Vn*%4a{w@&>8?NF`&NHlS7o+oY zwqR(;42m^JtPr@L29O(uO@j$wpg>7`7Wl1}e0N&3#TeC7?#n58yYS#kaiiG__2F z>QXF7vqXbt?p_7A_1|#tU;z{iO( %)4|rxA_VzxWD9^-(4V!$-J2 z*@ObQ2hf?XND5D%Lf2c9Ty;CKF{A`-b57uTgn&ejVhG-M1;=l0L60~&YPRCjyN|_ep_kq&2mye+!u}0hqX@2AA4(XsG2j464wgcBx>@ym|?9Or$6zNQ``x;!wWq zE }9IkNUhHh&?-ZMqaU0DjbCw;JHWd|JfTcLYem(8JEM}=B%+PX%PZeNPV z_l9N^s9b{o2VH83HKwO46lrNjC8C2?!M?p5mfI6>tnn~{c%3+^n#JZ-WT<6(5`LL( zOtZ&-;LeSkPCbV(d#YgomanYE*?UtFl8}I}H`Qs_vYXhIa}1ug*4#oYrJB@1^rcgp zRu2xwnoIfMq||8f;@fa9EJeonOjI|pxh^)(JGaS@=6$Q?9N%t*JR64@1x8@**#1;N zJuv4@5?W&=>CU^W+~l|G>Eq^5EcDQ#LyFZ%3s gAKQo zD6q5@V`8S$sBKbovW2xFzhQJB;x_kLbR5NHs&uud28A>G*}HlZn$ rc+P?-9I+N3Sy9a%DAx zC{N}(#MvGI^LNE#Lq;e>VTw>)Wlzvf!>#?3aCT-B+BZnhiMW2$QkswCE-wn% GJLRiQYxNHL1P8M_y1)AqBGI2ziDIDK;{&mTa?qkn~=Mk%UN zQju;XNzQ5M@Lt}JtatgddH5j|-fBq)rm(q&2qU^PIgDGp;56#C8_ NW_X}*#Tt=rjw_)lw4(=QeMixtS`S{@PwVq`P$DV_$&lR}3$B}njT?izXO<==|v zF%z*`ph~NI9mZHkrsqBqk=w2j*t~fW$?fTjp3Qc&HZcj6=N_Zb&xyWOuR!nwW*1$d zLGSt|AVcdD3SZrW#l6|&xb!^&`=?@vv^;HO={h%AjGVt#V7k*Igl2Ric}+bG9VMX< zXGN-dl~6xki}KRDNX#q7lwd_Vo0W)7kB!K#LYj27h|c@A;Q13F1?9=n>Z|WjX!w+K z&FzO8HV)g7vmKgteQ4?UkBE8cjCaLz;K{}Yha;6~kHjgoIun)d7tzr#q1ds{jJ(I4 z;O6wN!p*`WWbx!_Sau9Hyy4N~x>A%TMB<6hXDD`+agUY_pwo> RV!SqO+dmuOdd(Ob ze;COt^eAXW0N%* WrjlCB?#9qYvxn`(m_>32yL|XxX4br0X4pXS+Ms zIdck?j2TEry*{JQvn^Qe%*I+#A`-Y{!*oI$%JmCyG**n%RnB3FOc!MDRpXfb0u&a1 z!|AK1;MT?L$Mg2XWBF5D`K&~i6UN{dttDij9*YMnO=!Hf0-Za34>#5k#RkuS$)TR~ zVVwyn2Ipc`-dBW*Wuo}pM4F{0MMGLjA-01@Ux&scXOA?U`n3iM=Stxn&c@T;l2rKR zJtvUvM=QlUV9$Iua#dRpG*C#>FE=4E?hMM`_n?Eiy~%yM1ij2Mp? vdr0ve3>PRdu9k>ipo+cIadkbHeBIK!D#l?d< z6y(C;+KKn5*d$9cm&ntmy=hQ)Y(u@tJ4~IbNfQ%hatT>qpmuT_Rz13jZ~VL5DVsJt zbU4TSwRret>T6t`>qv$X?;%{-3_BMg4gDGdyE!Qk4Bv-o`KokXBtt=$98tOO0=C$@ zQ8}|U7cK5d&DyV!qH0g&hKA645swcedQ qIR**}TrRO5FGIpbS%2ioK>rGtJd$>&pHV5@JAAwa>Aw_bUv3u@!!Dmr=1S z4Y$7*aYHPR;e1*HhOoJ=N{_opia&&9Z$0R~qz)%Nwg6%>N_5^h4xL-|D694s%%ndc z{c#n1r>K(bp4XTdcnSIs$52+j3f0cO3h$|L*x4k&o#PFdHF77Mn9ss&YbRRu(T~1- z_ra$cT`D>J1Z{6S;4|kXHWVn(_$RMnsg{i0MaLj%SA(^6ed+$MmNesWB92EkGJEGF zvfE*c6_?Lo@WmCJ$h#0Nzkb86+cDhuy}5XPazFZdn$xtvo^;4oNO28!neWz73|OO! zu$DHg^?8G<-?qbh$p=)Nse%9Nd2p!8M6=&fG_Oj4*@|aa>afS@%BCtDyzGXC2_7`3 z_5yCjZ-rc-9_{!bpv?_ `ecLfUX*gj1r^N4&i0-o^ZzKsiPn<{*>8ntv0gA= zQOng%>OrpayeZzEPf?Lp6dj&~^7?9gGk${Q1w8VuRHl~190Y$nf(7Q;aB6uCZQF93 zTpYyt$u8tBE)mf#W`{0$Ax}=%nUAN3H<`VQ;La~DM)oLW`sLXnSg)?f=?!fDL|mHm zjq31H+5zW1`;qNIbqd|p$c>+8Ng?|7v^XmT&Uw$VS!oci%v7X7OZOv8RY;MA_pry$ zk)|$j#+Kdvi5IU+md~VV)%gc#>8ORWy#|fcktbPIG3tMrM{5_I$NL73wq6^FSwbPz zwO2yIwVDfB=*z9B3FXdfyoF! E^fn?K9nYf?%xO}}`% g997q7$9cO7!| zEvdzP4z0D{&xxkaBwMAv6o1*CUhq5Nch!z8#we5jBw3oi<{Dn4_hI(a7dY@uhXTqZ z$*?w EFUh{yh53Y(qDU*}R{M9IaJ1Cqo|t8a7>(gp=A) zHf#g)Z_y>s*E^XV2~L3)zA#y1OkA6YQWl-T!PZw$XMTq(qfX=N3un5hz6Ne}>u}yF z172yGbiM8{wm7`tR?Q@oG^AkCI3L)!Nz&}qY`&?#3azSqh>`VToVR-#ig)%xsFEeU z8?Qr2tyiH{a1sXxYSNF4<7n(5OOoSzQt}BmYWc;LR&C)?ihmMZYeSLpAsl8+Dx`X6 z2I9|sz}$@ISh`3b=Vy+B?TB2=k98rQST7P_C5HFA!WC5yAkSzM3ikZL<<8Kfxx=!c z^2&pIRFIE1%szHVQIq@RQjKB46f`ABV3W)b%r=}3(~rNRE>jt|{dZyejr$Po$w!}s znanTaKDd2N7%%IE-K*6w)8jQlr{rKR({&xso`ju2JXd_H04d`%$-!V5?Yn48kAhlp z>9H)mf9B7foa+MniJy>|YE36bXp(v5Wi$*@pvzSXWPPayT7H)F^gu0KBGf3x{T{fn z%*Hv?jS7tYQ8<4vjO|n~Fsd(gra4lN >Of6}_~jkHa0Q zB*c}bEj^2^@BL`~;{Y_CPsO_Zn($WL2;br#xLE%gNo 8b7NQ%0P zsF~q7)TvF0Y|g;c_Z3E-^g?Bh5vgoC4wb!y(94jd?7KXAvc-flUsj;*fhh#cAGq^r z7p5snP@Z%sp7+(K+hua}^sOFzIDbs>oq;1+O4O*QN;KIFPuQGc_@On3OH!i=X=3zv zsx)ct?m!T;MJB3`z`chOBsoi!T)P%IDu=&8Y0n2(;J5}}x9_7x`3xL`!nsol`B3f1 z;QR-PNM}e6hB=FoSe_Go?X2R|BCet2$RW&~BtzwzPx1U#D7MWk#;T4TX#Yi*?3oYE zkne_+8h#qZ_tKE+I~lIrYxvCE37h$PBs$-V)(lZ1zy9A*p1>!YO;H&3z>?%Oq$!Z; z7hQ(-lz8(7Tztnv|IlqrVmgef?iKF($yr>W-f|diVLsja9B7O~5gTu+Qf}033|D%H z^ex6T@SX)Fk0VNoU_R#~9$_6qFxF!LEqyZ{1>^Q$!|QM~Jd5U5KV@Tyt*? %=qRm1<(o^K(Q*N8 z$`g>WzB&0@^Ju?pAm`@$2o?3J=v30B;xP}{oLD EKcf# zmct0@Jg-b%J5`W;=pFK UO}-0Xa(y ?+<}0@E3qm~Yu{5I{i3e&BC25Bq@;7kl zS|Zo9q6gV#>N1}fWopN5^qv0**{$Pf`zm9EO^@Tw lz-lSbRfF?d<{dJ-tMFg?2b7UmO)w6XYo1ejK(iEJ|UWkmr&oREo z7aTe87~_2|A>@q@)r=ep=lFr(mexYO|7$3v8BtrvH7u2Dg4vi(1dZQ~DM6LkRB{T5 zqo&bm`(M#3(~ V*5ap=9C1qf>%>+!@B^;^GZx+m=qQamieC86H69c~G<` zle1C7ke{JNs =wQ~zlEe*M=-g?h_WdZgUn2*aMl$(h@OWNF2KU}2CP%P zfFaZO -b4uAX0=@4iV4S)p9f?&X z1N|821wKXOo(iN5$Z^WMDnZ54bD_R79q$^yqPVaSwaFn^K!#Lp>p;n7eW}0C0Zer1 zMbZzeU@44+v%WEXa}v;_=ANV}mV)@YN0{lUMga=_VYeoR3#jjh*uDcO#KD9P$L~bO zTWNZ9o=BeA?zEq1QNS4HS6#`*j#&{%x~51@9?`Iwr%Df#ZgL3<6XDWzn=8+|%q0Q zklHT`5mShEi$}nmwV6;?dD>=wjZ4>vMBY?Qe4A!Yia|ZdSH_;kmoCLfeYR#`r9aZ; z7sIsfDH@s@V8?uwXY`LkinS`OO-@8io(j!Ab{v^s2jYu;9=?POqQFxjC|-PxGwdM& z$6#6N7^^`Gf@3%vmX{4-7rFaAG?^ddVN|IbP@bnPb-l_3${%qhW_xi{&yl(o+i- 3n;tHhPtF4!R)>@)#lD4L+fa#X~V~p%4{p*?aIJ$ zHt%cW*N&hoQz&~(8d9#zLu9QTnJjHZ=P(tjIjTc#Lx<4LUCGc~ph4c}XVdZqJ5KHN zavC&-*-1v8!@~Y%q}nGIL8m? g3DaC_UxQ8Zhe_a^X$H2-rLbotW%^O-oEHi?qq(D8g#hlE$lE0 zhw}+1u6@@^(iL$O^;DU*-q?YYq4Dr=btcic3kcP^1e-E %s&ph5JMWZR7is@l_@!Q7Oiaw z;Z{hv(}#U>WN4P)G;)D5Id|0{a>qn6cIyX$$0vB%-ofO@d$92tn+IX?>}Ck_ wm}y3B%R@Xyu; z`C;!}Wf~Oz3+6*7(H)*ed=5Ppx
vTn9|UVmyo^aGe*U0BhX?a z^;wl+@Z|uk=J#VS|CE zkbUX|?x8iwQ;}8==4i{1?-K>`%xp%zQ~`dDm!WWx(X{l2K6+hTD6UrrIf xBX&5DzjiTXAnMm{X zp{^QpN($GY^_e;}Io?4C+|8PYlr6cjF8o@7y@&)gay!=pW0~VZ-f%Y((H%xR7ydzs zsXj$5|B7$PP1w3M0(nzL(u4UD)UiJmAvYyR#eOiga>mM;b*9^#4{T3!AYb=o(Dv*? zl65Ew E= xtt?G2DhyM<{duRgWf&?n1{- z6PnlU2ZQeCIO#o#PUd9dq=7iad=n#C);heF4x@k!2RLU8#J2raf@gncnj1QS1~@n4 zP=O-(Z*9eG?#{UkR3Jk;B~s)bTd>;@nm$g2YS$jZZ}x`ULVn`#;6mhGEfT8x??>U8 z2Hcrf&K MXLTC2>2J<&hd z-98)GYDGg%45kSehmkdB35IH#!QZeO8{S1B>zgPwXT8O^3SD{=Y6*uWmUQ-h6(nl8 z51~1T<|))5Gen)-26w`5krzVNDpGn=BW@OolVni{{$JWl`P74{yYC2PtqZX({Fku& zwhavo??;R4J`36R{=vO22z!0*Vtke|iQf#s?WDc|}hT)b_`YRxR3>#-D|O3yKQ0 zDaxq@kIo#%0+}-G)3|{Z{mx?QteuFl5vLnvK~Ae{{@}9c27Gnw!p(z?7_cx1Qp+bH z`Oi6g-P)g)W{c5?f-lIp+YG%A$B`lX0jCeSlOx|dXDmv9hRb0%Ww&5;T#QgzyBA9w zrlUynHwMPN;Ec+56iGiu?5`>0Jzf{4*Ij5(!fd*_AQIJ!y(q`E6JyQ}BdO7Y=+Yh? zN_FHJx@LuNwAO>v3P#hTvNWiFa7MeqT7>ib6l-3CsV@J}b6 3i>XQCFLYfw2Up(&y;mAAzS|C;W2MOWEke5sKOpQ! zD$FmGVrhmfG9U7LkTdT(S2 _>1`p!tb_Z6+$@7ZwWK`2)k9@}wKK z7sHcPspd*5%q0F3WCv>EPr((a>{KOnXJbn7dx&LYIOn )tJ3z`c zvee(U6aH?4D5B~k@&XPCfv?Kp>CuSI_p9N3T#{Z!MIm*~47ze=iI5O@0intIq~%hJ z(xY0maa;iuul2$?MT6WqZ?y4lCmf s6*)TX~m*5$vEDw zMm~xf yrep1>IO{;A&HI2&qL}%% z9xvFhS4kU;>9<%nv`T=o;U(;>R;7}Ue=% q`Cmh(nzHOpTacj2VORg+p zkD5{Armu+J!#(y=16srx3)gdMq`aUSMXdEZ=!`+{^0~Cxts0Z=o 5)Q&FI&E)U?2Wz@J&AlLicb@A3CqxKBp&zwhC)yY}=ZqD-CC{Ti{ z6771VM(@9k3{s*~$295KvS>I2T2g9_8s* TP 9z9ai_!Bd8YBq@-!&n0vi Y$!_a-o!=8J1CnnmV%dXZsJJ;o<=KESWSc=5`7Evq8t$% zH-vVw_Lug196kFKg&OXJs=fUWXC+050!8T-Yl>aR&1mkz9NcX## `w+6kQ3b z>^KhBu3Km<(4xYk7|i!LihqBNg>z(2Ltm@W)J8jDs(J >NY7@x0Gj+gTBJ{9vKo_bsO`HehYi0iZOKgYV0zIhqU=**l@2V?96k# z?BsXke)j%3%X>fF7=;m6QJZ3qF|)*}@m>oK9xTFq^V3jw@4;KnpvfQliJP;Bl7T+I zLn40Res`&GZ7km{l1dP~t`Et4_7v?GrJ;=tn0G*$-pcCJiSe@ZbBrGzys;(i t!WUAbs64Q!t&btEB<~+e}xe`d6u0hPkCPZ!f2lcwgkRHT; z&WK-FJW-V Q z3(79~L@DP`8KOrn|2VI{tOPdBW8iZ`g)+{3LM!((Hf!{!#WRYqI#mHnH iuSU{| zt)YlcT7izwCGdU!9wVm}z?*&F2)@f~990h`!$6_ofG=rZ8$z?U_`srmD1~>J(VhK^ z=*7C>nDmBy+Q+(7a(uq9bHGyaeCtVi+RWbA(2tZ(`J?W+4IN&12*EjiSkHQ9M}P?h zX^D^w_pG$sD}+!RE0XInqjc8t+h0uK{`*}tODa&|W@Y}pw^QUOb<#_*rM5wbao9(f zQY^jcX?nY`YxxA)allTnne+ksCMZx%tT-9|e1T*4rqh{H?%e#nhn`h-q%yS^^N#D# zh%1UTYQr#^z2Ge3{!>Hglh5#TJ1*pRucrLOzuc*LhLnBX@JkthVd7#`IN?0L)lWqV zzr(ZJKVZZs8=6#QNh|W&@xsKIuFD_As{A!Hp`>0IUD%AblX)glR-}h-KI2mOAW|I6 z^XkK9^y;c|2SS^a1zXzDJdl=Un$w1WWhC+9pOClnEDBDVlaHJp4PW&Wr~3_~k-yjB z{nAU0<2N_LHJJNq-;HQ{y9ngDOXAEOhh=jO=>8Qy(zG5#qw^P272oGoNBCjw4kL M2VFYHz1}eke`5W@EAW(Xq|z0o z!Y-rf^vz=weH8VFdaOJpT+hQ5T`4O3uLMW#OOQGD*!_$q2` t-oBxW_oPRZFzW4*9 z;ug~uK3jW#_9OWp%CtXd82+Zc#?n1)Saw~FW;RNbc33GO77vlrzXX#wkfr-`-1&GH zaho-%CQy}jtt>`C#B-cj&N- &;;_gADSI^2XRN-XKMttn}Z4@bny#loAm{ O6}gmGIX2ZbtlN7eA#*gXz7un zt`(J^E`{b$b@IO2fI3YzlF+Sy=Qz$?O=-u`*L*kTyy(#LhoOE;ky>+K3oa|7ac#_M zj65-biZ)Bp-JopjoL`CucWkL+GBZ *$MAE7m^vjR%1V@Z%gpP3K_F%NXPOsF_&1%K+zm z`jPskx3JK>C){^Ug+;A6{8&qD3^X7QoBm{bA|F*=uK;Toig>jc) JH2 zX}|h7Ds~VjWvwj8@0X$c7%eK^YD^n<4W*;Ub*Uv 6@DV@1jM$s)2hnJg%-cc;vv?J&zZ zkI@4}Y2KqR$euo%sshg=+1e9!j}D MijW!fF8N|h@+k?$@=NrPml?%sbw z(olCgd8Z3YR5a;PtT~1L5~H2>GB`JsfPW7YfS;e>GxsTq1Ak+2f*~#2KFjG;vJwq` zY)>%{iiBRygycW$g4g|Y+ _m56*&;~lOmBT;Z95Q ztjK-3E=}(`0MFmS!dupB4m=)9UYmwdnJs@7b2RB*g9_=--|M8O_XDLoYs_9EMd5?A zNij(hCMUQfJo-7p{-{xLMJ2L^Gly;ILtG4$rD=n8v9{l0+WAO?R_g?z=ba^)>^=aq zdgg>#Y2nWCE);w&gL9ju@ULJQg>9ZdaZ5C4{)GZ`KF@=mvl^8o#-eml}Xs?UWD YS13L&xjq7%+wzO`FaN3zkf!&PCd!8m2)D;@$~TW2{L2TQOW6N)Z`!SQvS)j ;;5pox4zKdYoNq>ysmni~WI;P#iBUx>d$y)Zq{7|Z=N^}Y_j6R} z=-vm2w77yQu{%z=Gr9A3bO_yed{YSgvJ9pV6ezl88aYV1QD?uyJag$%p++jknLD9W zLe^<`+It|R5#NPcR2lw3rqlqOED6DtmN%GnQ=jt1hLL*IU~+A}g!O04>4gY)JfH2y z{IhP Sf81DZMSB G~S%R*Y!>m^)V4~oY%Z`F$6pMi_?ga z4^Wgh7fy?-;l#|CcTe9Se5N-1R(!(qlP7V!x)w=SWN1WN4tmP%Y2GarQjJ)KxtWd7 z{-H%KL8Am7QgD5VB=rodLC!h}N>#mqy75U)Uc>WoA i?n?ZBWu zke9S3`B(49`NSk)cgk=oQV^lI;t%+?t{jG}HLjlm94-HY+IvQ%DU7C1Vsq)KZ!7!{ zHK6KmKI*D+uyU3&johb&vPpS3+_eY&Mn )*UX&TT%M(DyO2zxzJzYPOfGnao9Tme{Mwy&B^5`Th `A3^T4^a=!>1=r|>`PDq2V?_2D)--+Jwei*S=hH&Sx zaJ@4hUuW5n+Poc*F-vDo4(E9)wJ6F~6CdwzE<9ueEelYh-yKy5Zs=m)`YQt0-bYsX zFuF3d1NDyWaL+h~J9ZxtJ5rHOZ`uIyE^AbsuMpM*I8k7$BW>B2kI#CtRN7a7(oFVl znnLwoh`Aa55oST~|9s|R258!+`n z5_Z~8qVhv&f{Hcw7Y*4rpUQorK6M&k@)G| r9}1br%~zh!|3X3L3v;rp8e9qa?X4h+!}#C+pi!sNm4g4g~fGE zn)7`s4(pDi1((g})M6ca?xaKB-2$|GI*>0@iP{^Fg|uvW8qL}21&Q32IL^A#(f?5U zPLw7X42GjeF~)eF7iONRgzAl>$Z0%;usN=DaHlRre;>z6aa}UY{fp0$3HV-|hjY`~ zuqHx-OrF`%@YT-{f9n*QUk}IdAQ|Xl9VV~izOvH@nmYG4W)^TJ>~uP^%XbP73eLmz z(-dlCUg*sMS@1oQh)uKgs5qz*M}2j%aj-ZZzt|@{*)@}(=}G#0k9?_PLfKl{w6jl} zc_wz0wRbQbR#K)lCzV;7cmzG~i>UV($J#NXbZmOM)8CPD6q|bu^CxA)?x-TAi5p?& zxiu8FC{maeUW=OU+qe`gM|w84R4slHmgjZ&j$eSM&xTTqybd)#iNI#xIrMjh4S8?O zLS0iX;>SuMH(Q-1{$Ue#*=o)S(x3`V{D+j 58g6O&NC=L6e5iW|3m%e=1V; zz;{?!DMrIP+7R}!45`f;G`F-AYLWRc{MUxIvl_xR?wRgca}Y+Ov}jeCk>Iq<29?_- z$)ru4 8Bu`e1O|;D{)r!u<#;Jg DXA{Grhk1_+%TTs6+hn{%aQOCA^RNStM!b5||)ush= zcup}s#ta9(Uk-I2z#U9w+Q9F
hZiuq9tOu$Sa))uvWu6%V<@={+Kb7VZTR7Q6AmVN^z+&WOc>5Rk<=cz zzVKx2RGl81n!{aU2+jMFD-1d}oQAWmkz?q~{yB3^m470>%!?G~+0l=mWq2@9of<|D zL( +`q@%i44Buge``ZG|#p?2SjkLLoHZ@?i^=b&-EM93Toig@)kSO zt*MRQXA91WQ1GbBm@+N`>8X7fcFPBUzUV 8mA_3Pb-EQnTJ># zs^>F&yedsFmnW~;=9G1S`{I-eSt)^hX1ihSqx%TIB#-#a!+2WJj>22q*LhiiF_D*W zX4*s=JTFB!-CYU&xFUXsB;xZX1@iTMhgKgc%Dml#i4XN@-#5+(T-%L1+sDwxhW->e zMuHx6e@4km6Ffax1+$dHD0#0#MQzL+*vt&E-P~z W+Zk^W_Ko?y`#KTu{2#1a{zC8f8BCNKNw>?7A<1bk6b}Umej^lF zyEUVIdi^NnV>Xhk{-O7r4V}^ncWfJ%iMtk}bY0~?IKEnebIkWDo2g1p%JEp1`wX5J zYp~#O21X^!fjQr^%;NYS30*opM1wSYZVL8m?!a8f3}ssfl8^5{>@({`TwM&NGYj^> zoii}g&qr4D8>EaKPJcRBGwSHVhXZGzb@nAvMOiN^v!{mhqw#2R3AUWoA&aiTFrKQ2 zUAN>&JmnL%M9&fao2Ni)9}Y&fy%Yw1lA-2OF*0rSfwk}#-`@12CuIqO^4}{6J!wP| z)(>!c5%+0k8bJGFH=4Vb;M$dIka@^FI^Aa&vVrr9|6PVu^mAyr{>8xSzp&8a2PWr_ zV5Va)rVdvj$1}N5dVU(C+A@*J^Q&954#oTLpt>0^urx@GyysaVE Q7axKt&$!(fH#u?i`atca{y^I&mK(F9Zm&n+=c` zQim&6%;GdG!G^`RU@Zw+Tk0vKolD`*un`})^Ev02HdQ3@eOUSvYP4D~p^VQ(%UU>h zUWWW%2U1E Br*u_2P%lr&%X0}rHG#QFJQi51TNqWEcH}w8>U{9hBX~{CLjTwY_aw~EA zUmTY?N){FA8jg}QjD`APcV109cFGA zKnqoNWBbD<^j`3$m!gx|-($_; ~E3Sg=5rt|ipM%={I$tYVH+ZWd%jE+TwS2QECShJL_1I4owq+F3D@&i;mk zKPwTiDH#iHY0=nklaW7RJl=1L!1jw`blT @M>4Lkj35FbMrQ1@%Db?9-@S<^{bIONef5+Yk}XcYN0meGkX1}l1btbnB~P| zPCsWHZ)5%Yoe0%cc+f}vqll?DB(YB~aW?J*oUW`vLWn>+=XPQFMQK{FsT?sspJQDm zYc}h2Xvj)!^3>$-fVDOi{JDZFivB42IgNH|_aUz^8~Mr1s+P9G+Jhr$b<0y!ZMlJC z{@3At#9e^pY*H+Arb;_;I+^W2UR%Gy>(g+`9{mz&yPC1@O*JgPOVTnIQ93^^)5#}k z2R2!;S8H~hx%yE!|1u6%r;6bCNSwSy0}&Oxh2Fo4LA-P(EX-eGda^przUn|m`kS%Q zM}tnCD8h!mFEH)Ldg0-#7*{x*^x2>DMh%jus#B !Qo|Dyr{yH)9Oh7@@_45!z!+LV1ujCQbo zvwLtKnjh~I#(lboCxs7?zP<-mAN$}tGm6>l3FzXV9m| NPa!b8j=ArvKsG4*&TZAERH;U(A2A3)_r%X5cfo=ngZM z&&bo=*>y-|_Ec$i9W)Q@LikA;vM8E`KeN9g|BM(-k>=i8RT_?sd4;V*Pa*Vlf#9`1 z88w`l$iJ;Y5<`B& @pi>oJFJabCydwK}EVOTzN$9_Zoh!jg|QP^@S{x}Q58IyIE` zeHO#XegauBb2}|xobOaa$w@CB)mP7RpOk&|AodnaKV#~X4%B%3!m(#9*uq-%%Qbo= zAMjYXyChav@t_Tc{>s>Il!&`8<@p!
D|h7M1CR?U%rLE*ctu~ zaOUNp4e5_|g8g02hU$vZ)bZLBU40LeSCr$^^)L7=Dn{Y#Y5Po*7IK;O9ecA j0L>(VnPsM9E~}{FFMxdNm;=trn6!U3hF8ivwaS zaBI03HSX<(1>Z6J`B{6xdH4>_)E0Bz=IGg781&A8LOCZ;oKcFjY!MpG9JApC+i-vO zK)M!k0ZC ~Cxplz)0rMzbdUXJ3Z#J$&9b^`j(z8S-xJLGUb1I$bHlJ19hGJMZ_n zfATT*PW*svkLqzoX$yvnW#OA=3RZOf!QBI02#(y2*55PebA%zvj{HVMi7fpNDM8w5 z2Rc=I5Ysov@C<7}zSmA6JFpI8+RJfw{9 L3?a3pZ_M?`vw1QxRvdZr0(@K^2l($DZ496RKPK6Ctw9 zl3$U^oX~1`JzI!rGe6*Z@DYTFYtb@)aT3Xx54V;A`0xFKeQHPG8|sa#{mXIg+&^4= zZAC##xNrJdnp|^s;>d{%#Gi{piE}rSeqVz9jNJ%Y^n^QX53#vwkT8OCXI|Hg;Iir| zc14 XZwk33E0d}{H{iX7E_n_k4!X@&sF&+%te8 zpO#~>z65nEjKu&6CECU;`Sr5zF+ubiq)qx! puH7ic*WGzAQ`s#HFjS!~ z$8CtcY(d7&`N+L;0)q!HMc&*Iw5X8#9foDNd|!m>r3`5lJjhkI74Q3V&(2AnqUsy) z_UUR^;yr9;OYxq8gTf}sLvWDetOB%1=FL>6sk6ILz2QE_TfD)bZG)Ku7J%){Mp$=4 zk!mI_61?BBzCM2yJWn6wohYLy`K%~uY6oEPwF)SYOTyv5+BEuxHe#=9Q<_m0yjv}h z_2?}^F207@(LI mH`%>mSfhO2#kzJ}X6-=l^;q3twwWbg0q3kOg)xdaS z9}fDqprZFWq}_I+EO`)V-3meU+HQ#L;`imANBFQyhO%QuBSmy4Nq;B665H^*+tPmW|%@m7fI(#Wv;$zr<1lWt`cV z0abS+TDQoMQWAR+Ve%DvJ-i=h;cbBz%27~|B?a1iLglSDNI&}=l--9ZMeHYON>cjE z9(2rX;7*(dy;3zHjV0wgXN!{e$>l;JYdP(HPmuffJL?&u^d#~C!hQ>A 3XWo(OeY_5 z?3?Xou5{ZISyGLj24Su->n}1SwdMyRxbwKSn|lolk0N{cKuTR ^56n z0M~!F;1~J^cV)jJSfU9nS}(E5mvv&JyTXY9QWR_+idNQw4s!o9>*QN}F_tII+G)5x zZ!>c|_QG-5XP90M$E1HEv@X?wcJn*y?-5Hf-K;=f1`>4i5a&c|`3`5WoZL_TM5~1@ zSwv4GZFL_mm&PD;fdrjleY>TByQO7M5nWjeKiziW{JC)yey|1k1K)5aI~S!(V=-^t z0Q&OjJ$eGfNni3Rd``$yK6|-JbGjjs{Q}XpJF)0o2xh-)5}sGKL$o^*7yD+Aa-A&Q z2;2+5<}l32;{Iv75~UO!!dLEaonfANRCEGDhA@lx@kn@;d`DdR6O0ekAg_$ac+Yvk z6Av0uqwU5_Mp4q}6ClQ2=DM@_LVJ7|TpSE(#@+(#2ml2zgXE2~8?B#hL^qjB5E&p( z7l%B;f|Gx_gO!9y)|?Zd*U)_Q3^`??Xm~8g{VEg6-zrNNiaOC@Wl9l;f5AT70reI} z!VmX#)LbG#vI#S=nt3Og+Um6NqaFQ k0c$)-hVMIjf11%J znJ@5fm#5YHikP352IY52%*R!r{(tV^Nb-G5iVcEHt*@Xi