From dbf608bfc5e678b5fc494bfc0658034c2aa23851 Mon Sep 17 00:00:00 2001 From: Yuneng Jiang Date: Thu, 27 Aug 2026 15:53:20 -0700 Subject: [PATCH] test: serve test media from our own fixtures instead of third-party hosts A dozen tests downloaded their image, audio, or document from someone else's web server: pexels, pinterest, gratisography, squarespace, dummyimage, arxiv, wikimedia, w3.org, cmu.edu, and a placeholder service that has since shut down. That makes a run depend on hosts we do not control, and on assets we have no right to redistribute. It also fails for reasons that have nothing to do with litellm: the Bedrock vision e2e went red last week on a Wikimedia 429. tests/fixtures now holds media we generated ourselves, with the drawing code in its README so anyone can regenerate it: a 100x100 PNG and JPEG, a one-page PDF, a markdown file, a csv, and a short spoken wav. Tests that only need bytes read the file. Tests that have to exercise a real URL fetch (convert_url_to_base64, Bedrock's document and image embedding, Gemini's tool-result media) take the new asset_base_url fixture, which serves tests/fixtures over loopback and adds its own host to user_url_allowed_hosts so litellm's SSRF guard lets it through. Two of these tests got stronger on the way past. test_convert_tool_response_with_url_image wrapped its whole body in `except Exception: pytest.skip(...)`, which swallowed assertion failures as well as download failures, so it could not fail; it now runs for real and checks the inlined bytes and mime type. test_gpt_vision_token_counting asserted nothing at all and now checks that the image adds tokens over the same prompt without it. test_vision_with_custom_model compares against the image the test actually sent rather than a pasted base64 literal. test_bedrock_document_understanding traded its .xls case for a .csv, since we can author a csv and cannot author a legacy .xls; both are Bedrock document formats, so the coverage is the same shape. What is left, and why: the tests where the provider fetches the URL rather than litellm (base_llm_unit_tests' image_url and pdf file_id cases, the Vertex pdf pass-through, the AssemblyAI passthrough) cannot point at loopback. Those already reference content we own, through jsdelivr or our own S3 buckets. Moving them off third-party CDNs needs a public host we control, which is a separate decision. --- tests/fixtures/README.md | 23 ++++++++ tests/fixtures/asset_server.py | 52 ++++++++++++++++++ tests/fixtures/test_document.md | 6 ++ tests/fixtures/test_document.pdf | 42 ++++++++++++++ tests/fixtures/test_image.jpg | Bin 0 -> 2968 bytes tests/fixtures/test_image.png | Bin 0 -> 752 bytes tests/fixtures/test_speech.wav | Bin 0 -> 91244 bytes tests/fixtures/test_table.csv | 5 ++ tests/litellm_utils_tests/test_utils.py | 8 +-- .../base_embedding_unit_tests.py | 8 +-- tests/llm_translation/base_llm_unit_tests.py | 13 +---- tests/llm_translation/conftest.py | 6 ++ .../test_bedrock_completion.py | 18 ++---- tests/llm_translation/test_gpt4o_audio.py | 10 +--- tests/llm_translation/test_openai.py | 19 +++---- tests/llm_translation/test_prompt_factory.py | 13 ++--- tests/local_testing/conftest.py | 6 ++ .../test_amazing_vertex_completion.py | 10 +--- tests/local_testing/test_completion.py | 8 +-- tests/local_testing/test_embedding.py | 8 +-- tests/local_testing/test_ollama.py | 4 +- tests/test_litellm/conftest.py | 7 +++ .../litellm_core_utils/test_token_counter.py | 10 +++- .../test_vertex_ai_gemini_transformation.py | 46 +++++++--------- 24 files changed, 211 insertions(+), 111 deletions(-) create mode 100644 tests/fixtures/README.md create mode 100644 tests/fixtures/asset_server.py create mode 100644 tests/fixtures/test_document.md create mode 100644 tests/fixtures/test_document.pdf create mode 100644 tests/fixtures/test_image.jpg create mode 100644 tests/fixtures/test_image.png create mode 100644 tests/fixtures/test_speech.wav create mode 100644 tests/fixtures/test_table.csv diff --git a/tests/fixtures/README.md b/tests/fixtures/README.md new file mode 100644 index 00000000000..c6abc83f966 --- /dev/null +++ b/tests/fixtures/README.md @@ -0,0 +1,23 @@ +# tests/fixtures + +Media the test suite feeds to litellm, generated by us and committed here so no +test depends on a third-party host staying up or on someone else's copyright. + +- `test_image.png` / `test_image.jpg`: a 100x100 square with two diagonal lines, + drawn in code (see the snippet below). Any test that just needs valid image + bytes should use one of these. + +```python +from PIL import Image, ImageDraw + +img = Image.new("RGB", (100, 100), (255, 255, 255)) +d = ImageDraw.Draw(img) +d.rectangle([10, 10, 89, 89], outline=(17, 17, 17), width=4) +d.line([10, 10, 89, 89], fill=(200, 30, 30), width=4) +d.line([89, 10, 10, 89], fill=(30, 80, 200), width=4) +img.save("test_image.png", "PNG", optimize=True) +img.save("test_image.jpg", "JPEG", quality=85, optimize=True) +``` + +`asset_server.py` serves this directory over HTTP on loopback, for the tests that +have to exercise a real URL fetch rather than a `data:` URL diff --git a/tests/fixtures/asset_server.py b/tests/fixtures/asset_server.py new file mode 100644 index 00000000000..50c92fa6dc4 --- /dev/null +++ b/tests/fixtures/asset_server.py @@ -0,0 +1,52 @@ +"""Serves tests/fixtures over loopback HTTP. + +Some code paths under test (``convert_url_to_base64``, Bedrock's image +embedding, Gemini's tool-result media handling) only run when the image arrives +as a URL, so a ``data:`` URL would skip the very branch being tested. Those +tests point at this server instead of a third-party image host. + +litellm's SSRF guard rejects loopback by default, so the server also adds its +own host to ``litellm.user_url_allowed_hosts`` for as long as it is up: the +same setting an operator uses to reach an internal image host. +""" + +from __future__ import annotations + +import threading +from functools import partial +from http.server import SimpleHTTPRequestHandler, ThreadingHTTPServer +from pathlib import Path +from typing import Iterator + +import litellm + +ASSETS_DIR = Path(__file__).parent +TEST_IMAGE_PNG = ASSETS_DIR / "test_image.png" +TEST_IMAGE_JPG = ASSETS_DIR / "test_image.jpg" +TEST_SPEECH_WAV = ASSETS_DIR / "test_speech.wav" +TEST_DOCUMENT_PDF = ASSETS_DIR / "test_document.pdf" +TEST_DOCUMENT_MD = ASSETS_DIR / "test_document.md" +TEST_TABLE_CSV = ASSETS_DIR / "test_table.csv" + + +class _QuietHandler(SimpleHTTPRequestHandler): + def log_message(self, *args: object) -> None: + pass + + +def serve_assets() -> Iterator[str]: + server = ThreadingHTTPServer( + ("127.0.0.1", 0), partial(_QuietHandler, directory=str(ASSETS_DIR)) + ) + host = f"127.0.0.1:{server.server_address[1]}" + thread = threading.Thread(target=server.serve_forever, daemon=True) + thread.start() + previously_allowed = litellm.user_url_allowed_hosts + litellm.user_url_allowed_hosts = [*previously_allowed, host] + try: + yield f"http://{host}" + finally: + litellm.user_url_allowed_hosts = previously_allowed + server.shutdown() + server.server_close() + thread.join(timeout=5) diff --git a/tests/fixtures/test_document.md b/tests/fixtures/test_document.md new file mode 100644 index 00000000000..26e7ffccbf6 --- /dev/null +++ b/tests/fixtures/test_document.md @@ -0,0 +1,6 @@ +# LiteLLM test document + +This file exists so the test suite can send a Markdown document without +downloading one from someone else's web server. + +The quick brown fox jumps over the lazy dog. diff --git a/tests/fixtures/test_document.pdf b/tests/fixtures/test_document.pdf new file mode 100644 index 00000000000..249f61941b8 --- /dev/null +++ b/tests/fixtures/test_document.pdf @@ -0,0 +1,42 @@ +%PDF-1.4 +1 0 obj +<< /Type /Catalog /Pages 2 0 R >> +endobj +2 0 obj +<< /Type /Pages /Kids [3 0 R] /Count 1 >> +endobj +3 0 obj +<< /Type /Page /Parent 2 0 R /MediaBox [0 0 612 792] /Resources << /Font << /F1 4 0 R >> >> /Contents 5 0 R >> +endobj +4 0 obj +<< /Type /Font /Subtype /Type1 /BaseFont /Helvetica >> +endobj +5 0 obj +<< /Length 255 >> +stream +BT +/F1 14 Tf +72 720 Td +18 TL +(LiteLLM test document) Tj T* +() Tj T* +(This file exists so the test suite can send a PDF without) Tj T* +(downloading one from someone else's web server.) Tj T* +() Tj T* +(The quick brown fox jumps over the lazy dog.) Tj T* +ET +endstream +endobj +xref +0 6 +0000000000 65535 f +0000000009 00000 n +0000000058 00000 n +0000000115 00000 n +0000000241 00000 n +0000000311 00000 n +trailer +<< /Size 6 /Root 1 0 R >> +startxref +616 +%%EOF diff --git a/tests/fixtures/test_image.jpg b/tests/fixtures/test_image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..51ec19f1f9072930d50e701164595edfac88abea GIT binary patch literal 2968 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 literal 0 HcmV?d00001 diff --git a/tests/fixtures/test_image.png b/tests/fixtures/test_image.png new file mode 100644 index 0000000000000000000000000000000000000000..ae844ec3d4838c70e15f39cb7d118a06e76ce4d5 GIT binary patch literal 752 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�x@B_40v^O*d)bXlL^4m-rRhRNm-{Id| zs~o|_g9FT}3MrD={`4@SD`rFg0Q)clML>r$6m5$DxiPdZP}O(HUBmg&w#%~C+@}0N znX+_(@l(m;;*t8Mg@^OAbKYm)&Fqn}BV%W#KMyrDar`GJuymjvte1~sAJfmUA>sF8 zk@!ej9`1z+L@sy&*F#@6hm0XoK{4L}n1u(?0P%z=ljm|fwN)dNBR6O-tK(Ed6${yU zveoP+#USYU()<9vwq~nl8Gjg@JV|nuY%opJhhRk6tuQK|f<`|=bwIJ7wSsnk57~^E z1sy94c!h_sOd#C3qS^K|C4Y)}3d!%0UgVKmZ-I7@24(d#2dqg2=}X^|D^V(b}FmHq-$ttYa->3&2K zHUsGZY)1zo;L~V<{jDU`8+lUmj<2Wg2+k;lB1OR{@2GaDS8MufM{6Hx9`Y5`w5oyP zD_fmy%D!a_5b!YqmkTm930 zo4kuXOWfC;mFz7olgd!jhLV2zQ-zxg7Ub{Bo15D&$DCc7y(p(^?z+6u`cI`No&Lbi z@GopCnFOo#-}ppOS$#sDU}K5;)HV7eQ=dJ|9+MSQ{qVuSJe&@U=i2x`r{0zvv6F9{r2{4QxdNX(9rkZB@XT_lkEznqW_1O`vvQuRq2&(-U-Vu-~#ImwQbW zjpIu^`b7QSq60;Ji>4M1EGWv8=XK6Im48XEEbHj}C-7OkF40m4af;Yq`YlyJ?x02Z zNU9ffzP_~h&E>H_{9`wO2=Zlt%%hRF9TDkwiFUdx}d&~ub6XNSp8DZVS8 zt32FObziU`rc0NZ!VG} zITlnNLP@gC#b%NSYb|wyEDl|P@1f79}A}US_ z{R2Gl{eiB2U>kZSyY4$|wt%I%`Ak{EQk5yv$Qc@xBo^N(s#f?RU!I?tf4OjKahV~( zbk3wI-CNqP{EMZh-RGR?iSRcLwvp11E_i3M1KmV+2=-jP6(+?KrB~Hk-H?C6KjXji zA9*kTjUUZZ;I4fM3W`JgZoV0h@b`fM`Inkdf8ri+UT&uPzWSYdgSv+LCD$34iKmsR ziUIO9z!+%;Ib4_Nlhjyn-bz>+=*d0-HP!>#xrLw>j1Tq}dIqBWuf4N8UEGnb$Kdh) zV2!XWD3603_J77phP5RVimT|W77Z&D3oaBU>wA^dH>Mc_#_gsprFY8LT3N?5*Bj4b zf45*u={FQBz7rjwD`aJMv2WylMQfD;h?Nc0P1G)MH`%$S>J{prFlKe<$McJzUhG$2 zP#;yB)t&iNekHuJg5S?)@n85Qe6G5#`WrY{OF;Q@Q`u0tTyX&WM0c1vw2{mue!}&; z1zmuQ3OAF6h!;WWxha?@LQ8SW|&N@(!m|cT#^+FH|p3k5M;Q&s5)0=cxO`QLN?<^EdbmzLjRU zhSsd)OMz(FU;UP=$@NxkS7sU=TGn(_PW?j7!%fwXEbnLzdyb;jHnYX@2=M>u&o7=SFvX?^l0P zusNg^_CSZ=U&v{+o^b%<_8<9Na6{FG>*IlPr)n5SfTv2u$MYE6A!GRS{7yIvI!%Ag zDa~!oVa+4WJB>^`QQJss(ah1L^PTub>PH;Kbya;*Hc(De43$T)H<)Ym9I7gri*LYs zp&gKh;pRXPz6yHEmcdp+iGROugtxD!mwSMVah|q|*2chN6>;aK7N;%Vz2CkzY4NY}$h&|7#GnM;p^UiUJ2 zBgGoUJHXaSRvobE(O2dFsKg=Cw!oT`VCp8y~8Vkn*0MY*VI9O;3qgH zwt4q>_PRH_COdnXAUz)GxSK91-4ve#F<1ZRy?23fUKMd&B~fcBi7c5>stZX@S-otG=fW z!2Ln;0rhS5Wf-GnaK%05Z}Xq{TQJJen#P)B&1=3ZPw>apjn%ukQdOerI5;ZSDHh59 z$Npwc0MWq!>3UBwKP1Uj2F`ktR7V^b+6Adq#z4@|`B@*}G2QPWL9mk}*R~l559adS zW&KL)n;IFb7`m3E7T?v6)o;;XEEY>rK*@%g9+*~_4Kwet?y-+^)^%_3-t%V*`p{yj z719to1s3uK{gkoDezPOxgkp%orML{WZ)R8UZ)VTRPJv&wDrEvk)d*}XdI0$n zX2Y>kYq3{oRWL({5n2WY`n&mhdxvY2r|-$0>w3cV9Y30<-p zNC^{)XO^5X95j{~d6V08zU;d>-FnQ9InTRZdusd72q!|((l#K}9>SlK#~`24EmO*2 z1XA2kHc;JDQQQWus=5f~o0yMZUcOJW`12pq-c6Sb)aw7?{?E##FIIJk?NsCKHts#zST z-lxt~W4wx2^VRrPpq^6mA>i-Y)EuNgM)FpeF%PKwL4@#nt^(XQEmfD{TI&mZ=pt|= zv;p_+Vfq2}1RMv?@DCU);2~i*9geAjI2K$5Xt0vdJ&+1xw9`8P?xAPESepY3Xwuo$ zvETmFhTFzj|FtAr=9}-Av*jmX4_aP&3XbMyY5y`)+0pXWX2ue-G_!rM*Kyu(HSm1# zF7>Ah6+=(OF5x%GSj-7}t3=og;jdUkDGN5C02&rxdc zX@71@26tO+aJLP#pq97hbhFz$+LC1%W0l$V+eX_PIXVEzdm}i&GrjTtEdir2D)dD3 z!hLlVEr2_#7delbL62s-$s)j)b5%Z8VNtA6I+cS|PgGWw2ClK@TwkDYwBytq%@wI$ zLr!IDl^#4+?UXjf3ZMyJ0;kU>wiOV{TgVX)Fd*SXiZ$fIea6i$Oof0 zAknu!T#ePFrDArdY3OiJ6I>_w17iaQ|9HRNH_4ad{Tmo%<2|_Nyt|#d%yl2~MH{#R z&O6R|;J9kytmBM#DxC`WInMdi8E|%o-{|Ci=kDUMcrJNI`0DsYe|F%7@G|%~^q=@% z$_ty2G&BQCgSF68avjwLoQ8Xt4zg_7Y&MS_D8DRs$p2Q1gz;n!JkM23QVddbP&89i zQkcM3Hd!7cf5}c~E5X`rDL5D3fqwfJJp~AJ-Ko!H4e&2EAl~Dh@l0$0mIb_eJJ9Rn zkt2}sP#{f}Sm`k6-M@k-qH-ubxF^^xXcGGg8Shh;`7hILVGhv!DdGvL9G&r)JQ9UUaxryY#15=l{4_OmN>@e0I z5=6J7_0a!-tRn+PbZzi~?2=kba_OeHQ2a}b5Pye`g$9KZL;B#Q;ILpN(3YkNPlV&b zCUAh%hevmzBV-EK1NCfOp#f0b>Iq%pn^`EV6V?a^ArE<>uvl0o>=FJEet-j{La;YD zUrqLLCE#yh(hwH(2pNZ5(x1c4UI$wr;$0~w%Wj`bU zJMiYjV&XA4AXqYy91JS@L(rYv3p%MIK)pTyS-JbjZR7%YrxU#Ig(}NoVkprVGC>RR z=lB+IIK|?5*#Fm(>VppE9b}SrLn-tVkP1>iXm+zvcc&6C9_Fx*s0KH!pA2!4rw#Q)&$WQaMC zl>mJZiI?J}WFX#GgXcO@W2rm1Ax2AcrEStF>8C_NUd3$Cx|RWjc_jE3&VUOz19Gin zAqQdkN1)en6(i4ao975#Ac!3|ZcDAlZBr zBxsKd4~EQ*Igk(WSGXtSa}NWL$awHatqjkF|N9$KJSIYlMqT)>yi&RJReB9xftS*4 z@X_3ZPUBf=z4T3rfV&3|Yau@*5i-a7!V#u~dHDU#z@YpCY38FKe_}SIiysVkgzHfpT&=_8YAR44A9Z9;6?tgshWz$Uz^3>`75k07 z0q;;<)Pau19zzmG9J&PA2g&9q!cpPpp{wC8s1a!=?niKP0==JfNZrD<@pfbz|1cp& zK9b|a`c5BOJ2IAfjI;&4*=8voAIiLgB<~@(jG9lh#TCd@;VQxrPjHR2ml?`T3~}f_ zVh5>Yw}f6n{k*c&Q!EWGLp#`&fsWKn@|Smy{W3yGm)+f@gHms@7orLeknJG}rYiDY z$uped5>3l|kfZkr?T#;#&0=4L>$1J*_hMXV5;Ys??7oX^Mo$X2f_m|b_)_>G-5^eT zM~9DwuA*&_FOmdFE7O8o!cD`dXhvc}-O=M>Ti;_OU(5=34w2y&!YZ)18tIug!#l@c9H;=bu-33PUxO0p9PjOL6u5<^KFE%no)Gjs^b?Is-+1bzqrqNnohA zJ}~nU&v9_D9&_EX)pw4x_p%#p|Fg+$jm%5T=gpTP*)$Guo)JEw{Izz-mU?WtHvPP9e@sSx3{WOoc zyNWHqQjL*+Wyi|X!#z7tDf&^ zU{Z)dmy(0P_g8^gFQ2I1tQ!{FE9pBpUPhcZp^uG>1v;U#*@QvhB>H*9asl*~s3O2=(z^ObBsS%D7*FqL8 z;p}DITD}KJ;P*gZYt3hK%o(Hp@M(j7_x`Q@ec^XuT5S58j9Zx*S(Ed^#Vc)Vr2unT z{z#SwjO#J{K)GuHM{$90RwL&#Z`4x0b-Q^ACZ`d>@7xeFxFw^_g{m50t z+1k!p@0(-Fw-}G=Ul#1kTb`Si6UfQWU6%JIZ*uOO>>gQpnME1VnPaoGxpND@8Urph z7N@GJ&XccVhbuO4Pl3_yQr(Lf75zKrX=J%t&W=WI`<^+!I3IZC!WwtDccpK2plyKi zP4X@jijeD6E2T-7nlL_jaT1yMDWOV2e5f-3suWivD`iNd=0DJt(78(NUv^c#8Qo)JD}LdfC33wE;bA;2(=6i6B2xn z+ymULT=Dk0<{RZ9bA4++*fDgmJS&@N@aQx2+lmv5n-_g3c%84#znxn#`$GDUKl=2q z87p!R8AN|TUPF6bQ%yZi^Bj~OD^!gYrK(w)NF4(lqLXS)Hdr(}6_#Z42+Mj)HR}s! z!@vbei(W6ta56nP_j!iulw-Tm1Wop^E0RGqNAD*|3iM%yP_M z;RJV+@~eiA`e{Yu^jA%i!w}NaW0b@ArV*})&)QAe8j-=64)Li87Zcg!`-!z;jr=jD zKTs3X+b-P?+rQS*rMV`bOON8EkTugdySpW-(s+bb+f?j7GT zdWUYLwjW=Ib1G}7b}JLvgSauY-}lrx5U3qB+}6N%$%biQQE@HmNL=f9XWX&4@v(=a zS4EN$f_j3gwqg!+Cx=mI@vq@Ep|`p)%nqzNi0OR8%M{dRH(xFAtn_8^CX3 z%xPW_F#0{MWYc53Nh_1uBt|9&6V#D^WF(Ryt`z5m(9m(QKBANE`$Eo!4$SevcF5Ar z+RUR5pONE{xe0qxHdgsv<#Ec=M0FIT=*T({tI>HthTDo)hb+I$kUQY?CHU_8x`V52XAyuSJRg~dNh z#u-)_HKyv|RI6L?Fn4WsFvIc3kUlTFYr$*NM^9auIi9K2M z-IVu;Z=OHPU*G@ROMBWl*IJ{>mz%B`>XsbVk1v{7l&)`7GQiNeq_D`JPv^AB+?swV zy<6s!oO^~TzUIoL3L~m5tJII*Sh%18T_dv)IS zK+@3ueD5ar1*c%&WgT7AAulpJE%RLFi%dSNR`%H(OD>gjGNW8-!ncW^YkzM4B_!o$ z&L?+~wp<*aG$EO-yrN3E%0xn#@k^kGtw$k~cPqPnp4nF0=aKFa(d}W%5NLJ*o_>9Duq?GdiB&3IT*LNjk&#U6yc};TP=hrFe;^M{i%v#gYuu_rX5%0oY zhxH4a5z;bB@1l$cxfwp`{<{!-2}mG=?)cgWpH2iryDhIecZ% zRKq;3G2sm)`IdSvc#{2<#CYY1I*@ommZM$NDK#z7*>?~+OTaTbFFNnI*10daDR;bc zl5Ih;QZPQhQl2-*ksXoqD5qKO?>U<6zL{6kW_};~wca-}<=^zVh1Ube%xy|tE&Dmi zRq0sOr4@!mx|wI5p(RK2QnJowUd{Vv-|IK2z1d!dvX}jK&ER{n9jULVq#sC7sQvqmuB+K%oF5z%o)uma78bJG^ing98Yxu*$6JY~ zk@vcC!-&i<)%fvIN1v6x12TjKk~w~gr&I^OU%SCwu`{tHb@E%}a0 zqx&Pi_8->?^=2Gfn!BhutsiV!Vi|-wwcWv@xuQYkT9SS-&cDkW<(=>S(?3=EO7vyg za)n$6zAE<*^+7uC?c#iEyJG#@I>)xx-qtz9Jr4SW<2;v~G4_$rsH&VF4?J=A>?+yU zvNAJIW$w*fobfKrk@_q(D{V>60ec6+71TfWT|)ixhbk?rI;ecVFep{|CfQ8+OEMm$ zIZ8Gbd^H|n7{_1&^1v~I+(h_0a@j8(apN_GE0=bDn3 zqMb!8>~3FmN^86vwl(Hz{N{w;6XwTx!W6?-)DkY1PlKOlgg8=}K#pbR^1F524Da=6 zx-1|FE*pZ4tH24l4>`MPra$!W`3v+D)Kk6nKl5)B8U)^o9n`OMZE#h+2eVo+9Zakd zoA@TV0=D@jPfKpwlAI~7?VjVl*ZwoUmG0(_+SUz)3vxGR6=o)6Rn5AS`95=4R^P0N znaSzdsb5pcj7xbdoX@B`!I81I%haiOv#Pbq+{Cd#1i9ENm;9Ce^!w}Y8?)j|HhLZ@ zNm@B5JN#mJblA0!6~R?3A;x(9QT<``3R7qxC5HrR%%$8FS|DQ5J7qRmo&{WrxGcxGEWz^_gqjP=vIWzkN!8h zYvl3Jl|h5eNyY;@N;_UB8&?EP4L)FQtzX8~BooA6J)sW9w#IhSsR|$IB}Q*3fC%vm z68Hpj%)O9QeF2lABnsi4^R6SFRKHnfsO5ZBLp@UkvkuC8nZTP4&@s9(dXu5I{;_VZ zuA%k|%TklnQ}Qm+B}{+~k_j6X&60dJzlFMKPaxE{)|G6xSZ`SO*~_~+f{B&( z>xBrx?3?XsWm{j=C4WD-3xl)nW|CPavLJV%wEk82>idGpMJjm%g?xO>5Tn;%kF}W-nWY84Fy% z7t%%4Qm4b?j3JLvkLV}NH1LB|X49$mY87#V?;sc(+uGOK?%N61MNho{us{cH`)_)C zx<@An3C3kzy<(z9dnK_ZUgK{V2zRD@c9+NdCV@vv(^h%lGx!+2LitY7O_>9p@N34zVdFqcF^I7$mqwBPr|LCy@LhgDD5GB zy(XZ$X}DzopO>~d-+*aNXvMPLS*|db-}5<;K<4o$OxHpaqHD&Fh{wnXd2gu1&mnUI z6+Gv#ew}mI^hYW-W}?n%Y-qU>JU>(udfuWMR_ZQ+-|zu=mp-uTn5A?VdIbHP>P4o5 zYbFth?VC&@H;oh7L(E4in2b`>#Q%J;Kz`=B%X=of8@Ns0ME@9YDP{T@%%x4-yX=pP zfr`j2&TgMwF=s*U@jSXr@8cIHZb)*K zFCDksSV>jf4Xko*a>nKK<+)94SN!{^uZGmH;nAaF+D12x{5x!J5N|lcH{+%v_q|{1 z1@G4)&1f!>?x!{qSNkeJhbhtjMh;}zBy-LYLnUWh(NaYv}=LW?i}cT;~DI$D2xybq><8JwF|RA?fEv&-Kq z?F#9@L<<}3>k5Wv{h3iEXKcwK?_)JVyD_L~K)C&ExbZG?O%)wW(SK zyTTTl%3O2$8EW632>qqcuQKD53H}D|2F_#7 zn{H0HuiRjM*FH7;XFd}2N6>HP?2)z`!GWt;DhmfJheC{oAHIU+7 zV!vVA<~ZQV2;3p+b31i)O#OoPgbWEOAM~H`itaA((wo`u^eyCK3MdQxfZ9y;p&C+S zz_vp&5o{%HB|ix)bSt6$bCS*{TF6U;LT{YM?YirF<9_2^A$$>A%C(e5%0aoJ81Sud zw{e^X+Bi@s6tpVrP;{#JRmp7YW9t)ZBP&@ltLS`wzucVceOV*2in3I9bG+#1EYvV>?iGF<9N#-z$nx(n^9{4JSP)IbI8UeQy0lH)MrWy z_22;b;BG@9vjO{>i_w&TH!(r;5f#WDa;Xw4uJg;@MDRPNcqjXJ2lAzBN}5`SD6ck_ zX9ouOe6FkZL)P9UdBrKk`%7+GciRM;!G6K^&3d&Yz36tqe|cfKFS4&@ZOvSkc`nP4 zYc8B(&kY>pn}!^UUKzimO!cyB%gm2%XB^AA*-Jv9m-DuDvn|@C_vcHQBo73&&8!Lb1g$dQ0_UMDrWfgHEN7GFG-ZlnORzN9tyQ<6$MxyCbOQN=31ozqPlQr`XfX-#~mXn~2Y3 zW4a?5HIlVRoN*4`^_mniYJ+=EBde;n>&3Vev#{R2qa>?ML(1JF3m2+cq zx@CXO`T%s-ko*ZnY4*NCCOayajeZ^XB|%Dbl{pbx&2oxb;(uwMS2#GQQ}&a*b2e5u zOa&XthMtHj7qcQdEAmqK?vT;uV7<)O=CASZ_zzqr>YwJ2TTtzkA~g1g`-cREC^P6c z8mI9Q?ZyxOnejoEY5hpG2ukogN zqP$VQU4l(&M69DG(lhCq)Ih={4-yV~);KGH6NAAB+HF7REQkEG>Phyt^}KW09LK@I zkO=kPe+p|ACKQe;B#L$bM{=Sdtsu1MOtE4s=UuDD>qA2`BY%m#8o#pC#n^EnUHHjT zP4{l=q{7Sja|_+J)4l`51nsDxK@oSN_C$S&co>!!9Bf{w%iz-4E!-5oJN6DsnHQ)y zd#p5;dIVkx`$dPcj9#lrgkB~UdO7TWVH-k{%ztUm(wmiqfq36j_c_;hx5L*&nocj=E|3W_m(L zX)>X-d0ZVSeHO0x$NIDUBLhdJAT^Gh117K%Sm_BlNjVc(?DM;$fN^Z**yiXA_SaB% z7f(0upWe4n`#bG&BF`_`3vK0rZLrwhB7Qfuq)CY$jL*r1*#$ES`xPxME@i9f4wde4 zR&&L0U)12(E%EPTi^J0m^{8fnQSNs39wirwyV-hq4ohR0S^DIlywEFQqrz5)CWoB0 z3^&%%jna(MP{_(0;cv6g=|b|Mnk=UTo(h>lj8vLPX1{8W8edo_&wpn}v-c}g6jX43h{?A^vM zY7+RLZ=1&n&e@O7F0RGy&7K&b0cLm`cqwq?w{kB=twnN0yD=7kxacAY`8&mGXh_?yL4QR+qJb z^NMe`a)DiAs1{s1EIRyaXtj{OK?SCOzNz+Kek{KTxs!2RfN@d+k*oNmzrb90Qaml! zB#*M?bQ;r1%i!Su1y2e}HX&-t>`?cL%l$>(Q{H>N^Fk9TK~13cGo`sA&H_yDS?&gu zbf$x2^EG>pUBDh-lIWAr#5kzdgF;LlVh|ZeS7z7q1=NEn7K%2d{EP`$O9++h$vsEnux_t7kiHEp2^Na-?LNRb&6^0Ozl8p6sdD zgak!Qio6~5IZ6#*Z6>+P@(N$D>xJzX+Ze|-?`vs4y-hdEG8~cat0A|8PC%U@LtjSc z)f8ybwRgdLy&q%ZGxc6oq<;g~g=<1bafFgg&(b_GoHYxU_Cak>0eM@S#`GZeOML_3 zg3G@F${2r0ijqLCq-voKvM+O+u`&(Wmq2pd;#|=BnE<}LvzU(wqKVQ8Na){XRas6> zXFBoEwV(B!jdhGy^p`aK*j8Y|A!P!1$vXjF8YQPIF+d1hK$gD>`5mb6t>FI31cq7@ z*deqA@9bkRubxJRpsi=8`>X4;%LL1Pb$9ao=egwhVr|bMVdWa8uOWYLb$;=I8FWw zSd76+nEDhs;+nv_ya1X(Mg3MQ;4;c9zsp^rw9N?jd|SPovbw%1P9Bq6)_C%XYCy+3FJ-3n;RT11>WT6qOTP$RI_+Q8V5L8xRWst}Bh zG3q$%_Rk29e8au6d!l%%KEnHlyR%DiY;sI-^l;2}>;&GewPToL zg`~E&*1p>|($>iy?zrx#;`+<|w{McTT>Z|LH88=T?+7!7eF*MsHfxWOW@)tF zVI$AzxR{5y^B0 zJ54h}S68psztiUPPuLl>fs9biz=f4lcM@$Wm2Sg!;_h;J+!yXS$MW_0AyAAB zfYszUF;7`8jTYM=)1{O9Dxt(1vKL)M52llmUCBkQV1oZD)_?*}4{vGTUp@-z^*g{8 zdE4CsqjZ#OtgDfGfG6Lx#*^w!aMyPwJG1Q$+d!+3z4R*NZp02dvfxe3FGk*}g@xRk! z!B1NNcG{=(b&5vi#qYo)87yP2l|9P|^sjlh<=(G~5? zv+uSaw;!-qbli88c3M!&(B5ISU$)P;H*lC-mpo7XsnQ(kjdqOXW=Lr0g&D))0myl&H-cZ|Cq~6U-mCf0$XfH?LAa_tzvqR+myu;BNBmt;0(M4 zqNWiUOOImevZvS(@Esh5Hfa&RMDtbiKvN4K)S(eeVHh z0+yR$I?xlrTciM)REs!?dd?KADt)B$;#hH(coMj~OlhUOTy{vo(vrX>f1K}&r?lrV z=DT+8N$%xfTkq-)b<3{rE)hMii~EzSzpI1m5>|^m$3w^e90|^mu-##Y;Hct^bMA2I zJ?Y*i0lgAN-_txY#s(z^&9t;MpEi8e4&n$@VCsl4;Mo{TN3W*;q7MU!*BpEn2U&sZ ztF34_X=;oL9KU(FDNFxQ^Mp0hHOUlIzQ-e4w2`=oT1S$2qdL_U#3nKd%A{dXGFzkF zr!{KV@B>g^oddK_qH0%kK#`4AhpU}b12CHrK(;j?&8Re~&pS1xbZyWBA8Q)&IqYBX zer?n_>VMQ!Fe00%v*d8H0qG#Z$W5e{>Pij3PJA8J1J!TyiD_zErK@}wOtmwl#Zqr* zU8jl~aa3T6@VCFN|Bi2yua55z;2b=jo}N2y!oAWJ?t0}cbds(Rm(SVMRS&Cf8FwYu z1m{^tzTIapj+-{{4Zm@*l_?Zr7z4svBDy%NzR|7U;TYoLnXD z7j^{0GGFL+bXAHcrxN!OFZv(GNh}+~x6x*xN`o}S0?$*dyRJ>qjL|&euXCMQnt4mj z24d|IaE2zOpJE0QsuEd=%B5P;m+8&SWR~CtaJxAzdT%b5$SKS_`T(_$G?1aNLtkJG zYf?qX{94dY=dtaO???u}_(9DY%|(7V@;Dp7=D&{&Aw5I}@tAlHzVeF1QuQ^ysSflN z-(%$=z^DC6*{=Y11+;8MactnKFhLkBtOtsrv@i~}9>~zb-#zZy2FBue*IYba1Uk4B zJd*m(0S>KWzr8&aC0+yXJk{~5bG7T1tF!BjtFCLA`<{26zr1XwI`B84ShmX0(Qs9t zuFKXE+6$U9n#-CUU`F?GeOVuM6Rj7d7OU5ZvQ!>zV;}RYG(N-(c50@BJARM$j_!-T zDKw!T=|Z%z{8uK8YDzZ1D)3Of3+$s+nGVEexYAc?s7@oU0!LP!sl|%yOhkWHa4W$? zp2?NvMJ|}rve8T|-Isboz936eo2WFZC;bt;Z@)54nZ=ABY#<6tbC=k<>~3(dpQp}{ zQRGwN6mfxoh9)sZou|x_cS;_pA(J>8T@5`8XY1WO}Vv9Y1%`!B2R*2yDFIU|HDdp zAGpRvz=T#)qlvQQ6lw!KhDl*0CI*b7fjK;nCJ8^;O_j0 zfZYZHb2p)?JHXFg2eSdM+7uD9-BhJI^k%!tz2y-=-)@nrNZZ7|7?axqO#v>|3fAqPRdvZMk zy=8rg{&T`akyA)iiuXozC5D1h09%Wz$Jf?GYCmXa=<;=>ewuC{e2p#Irn;w4E3B@Y z_Y*0uJ5@s70h+gn)PbF!r#@qCYzbHYBRJ3PgchjRYQXR|1!sQ@6emK-Sm1eEVBQ)8 zE_(rd=>v&IL|HJLYcW@Hgs6T|*Q-r|w7snyQvOu7D|?_WuvF=)sPX~uvgb;FOLL?S z@Nlk*bHH66BIX8efunyM)Er_1;Q>Ry65sqVC_6Ck96|0~OWp%VPZ)id?#MiacFle^ zoZH6f`QP}Pe1K2Vw9^dMOx8>VZ+bsX9ZfJ|iLdyR@J8D3G=G(w2^LJ1JpzXGFR*3| zbCvFg-m!^_NB@{bb|xcGf3=Zl5A61Ppr=;@mE2q{2gI>f4a1s{437EA=sn%lnd)x! z3dZ#d^^+P3$|PdjS`-}&n@Dra$k|NugE@O z#xgu}jP8IwcL3{}NS-A7ku-S@%>QMG@9Hsiq1x}Ky)3ZT4<3FJ)lv~^b+rq2MSHPF zlGJiUXK?JVfLg#w;u^5y1%yh3LqDJ_`d=a$iL-f#d?J;2OWY!k!HVOdsbI#r{{~h( zLHz(FjYf)HJ_3Y)g!~nC1cRWZ@m1UbM63n%SVy6xF$k&=jiHKBCJ+>0z)cP6dch}1 z0uO%2q(J>ZufT7CHK;bY6nGiPLj3?ICPGhPns^A<+OpC-;OKhFFTqc6L8+vkQX3IZ ziGE~&{DZ1Q-=_yaCt)FLV|#K}I3qs*dJ*4vJ?g2O;%JE476KI@`=FOmix;??+#IeZ zSIF*T+p`k$KPV^=%vpLk>IGh*0wD=8#HqO6dr%el6|B?`)r~-}*Z;xtspetL`=Gpl zZt6!R6@u?YQjH*t{o8=52gi9N(-=unKu ztXT=OW-9nE7soDW@zu3|H+ z7IknmfnA!5EyUKSPU!@ljfvtyahG^rd?DII1Ln!j(s*f^bU?Zdo6&N4xi!>keuo0b zCpknJsGL<8b(ne!bM-7>J6c1BAfDQWe8fuH3EabNXc>%T4*&;3z)JnNDco{yEmpzF z++gV9{KADIqw|(M!LEdEd?cHNs*3?o-gtoj{*}(8c2lh>4|#;_1B~heXq>enEV$NV zs3qu$-eywWN(w3n?x78@<90)N3`-U%6cj0{s_n6ZU7;Su*!=(>P=lV^gy@JdI+z%a zo;eztA>;6T5Z-GO$0tNp-@!;x)Ky~05w$V0WD_s~|l64R4e&wONhv#(LZ zvzuMWZe=BCV9kY}_nh6u2B7dlawQnK9QzcC5>=oPv7K?z7wJdzEogY`r7V;}CQ_xS zG;#v@ftU}Ct2UUwdSlk#t5!gL#Z?uoJe7Jjiu zd7_+vZHJmGWHZ>DE>1!hWsf z>%i`RLp6(5ek~pe{3#fuUD8wRDaJ{^f)4n+oE11Nn8d?UkUR!#E|aBBfpvjt@;_=9 z;(=@vzXc|U52bd>d}XP85$Zt>v6m7_%p@-pTh%g(Lw>CiR24)UQm9wZzS+qXur!|y z73tcjc-qe2f?|<|Uk#Ay>K(b2xT{91D){5y5&ek@sC74BEH5RJ$O^!H_kdUCCE8+s zb6}LV!d&+!YJ#&QQ!sB1zdhE<}K5=*)XC37ovb~!l?Wf|L#&OzV za)vrjInTRhBSZe5prF^)7purq)K}Ctwj8i(dJU&F>$45(O}XY^@He!z%(G0jbhUWQ zo6S+?e@x?zkM&)UCF`N-&ky9FRl<~|^U11YHt`i}*$?laKG7Jh-kuDj<|D&4gf=p3 znRI3>kYAyE0ro`2d{@N2R@LVifkDa%%)ENr6Yg|3 zL`-dn`=IN8&M%0e?Qn!SuOo_R}kA z>#rHaonjkfRPDg-W;HntvC_{fB8Ko%bI8_IJE|YGoQlBOa0i-k*SNjhOOE8hAPaA9 zgGNNQ{0QHaKgpHiE(7^6mo1OJ_b1(w3Z-gLC72bpbVF(x8I4(T4wXRbk=?CC?Lwv7 z1JXqrs2yY-^3o44Of8Wo%E59c=#GU*)kM2c=r8m&M+M3OZ#D0BPa)#k!L9`Cfyz3b z*^3dC-Df{(<7{()6R&5zXDw|zZ;e5QcS^~;lF22#tS@ah>@{3D-U5GP;f{Z?uw1T2 zG-i%+(>0s5J#@A7PYo_(E3?J&*O9xOm|#;C^(SvaRzvOsNg#S1<=XVaEhRwVo%T*JA_@-bbMwW_5{BX zU5Uf+5o%)J_*KdgD?_RA3u;g!zy>iKxZ0V}H*Dt~;_B$??|kl%?7QqYp)I-Ce!$kn z=C&TOCfc0V^){C^+X`;=k_pzFlKa*{_RG!?uiL*!n2uSiwD?(BPyWXga(DSD+Go0U zhH1v-#(d)^Qw>Xg(4pWxL6MefrhJ275TWaN4f@HwG`U#C)-bc_G0?<&OvWO{w*eYP ze_>TRL$slG1KIJEE~Gm#9oQJKzZ7!ac?}fZk89^(-~J6Ocs{<2<_@2VdAtfsu`Iic zsYjPV)OiD$PDW9gi2oCaGrvOguN+yP3@0V{oK{pwmci&c15dz6d{VbVy%M5l@?xpG zq>)C7?E*=NHq7&V@s9D{_E-?nzvQa#%5t`J-g9(u`0b?~vCyv^W@qhhuyY=0KZD5N zKzlhvqZ`|Y+j}5dbIEzaJzJGfZp)6JoyP*(F&TLl%z%~4Tx!l;-Q zSSq9T-DL5AiReD8^~T`Um(#DnPO%@jWo^t6I)_T6yU_~OliE#IB;OKe;Wt;rXu3qL zry1x+85k$sooT`j;%e|)_$hoeYR!tcx7-H!TRoxFw;Fq)DQpL(8=XO=11s_stK?}^ zvQpGSQY6Mg`>Hz_&b-83oVga*Xj)(olmwro6!HM`5zCm2aWqEC6VHfI;>bX@U=R-Z zTl#PLw)$+|&YoeOMxFug5AOEhc_?sQgFe(O=Rl0BWant-1ZO4JL+1(Sac5sA?cD2# zb`EnkLM-N$X9*%$cm3Uj{sFgmR^G4HM}2lD<_S9xe0eps_mDAbWgtyoObfxG@yfK_ z)ZbJWdd%&Oe}bRtu>OPY0Wu9K@OlQb`Np--F3CUX?GACtc!s@Dr+O0+tGe(!F3CQrzr0CmCfATAiFJ|NGePg~yO0WH zt-Qc-&*H#3-#aiiuk#%Bv;bOQt^2a)t9z4YfxDOIg*(yni(7RMbZ5KAd766i-LpKT zXAI(~K~S%p=e^`J32rdk&leX;z2z_9^O^_@oQ>{}s5$37+L>(n5uh z_tnSnqf4oKRE{Xb4*rJnx6)7|h}QDbz#;i>X@dAnydupGJP@}?O#>gLRR4J?132H& z{tnp99`_CrA_bqnnOhrJBOG*97Pt9#xi|SXh>IX*za=oimF(9eo;BXnHn7mQ6*ZnY z!V=*R{|)T)jzKH&U0`}(fUrbr64))RmsUx4sJ~of}#u(T} zOgcT0*~1K^CHe+kj*3C;Tqqq)&A~poJe5iB03Uf*dIuRGo|3KTc+`w`qc0HxB7jUU)2et`n@31yJnPUu4?1UiEa<|ujDmn_y( zzIjUvFV#7|mQ6X+rS?$xQ6 z15Z4MO{?agsQs0X`)e&+MICa)RVWE>>;bN?CWK!Fyu(E@@Vs71<`-r^Y+YN=GFV z@snOel9(pkq_+ESl8^i!$$kPyT=&11+ls7wT*!c?>L+In0(m9h12QHs-8WNhsPuAo zAnwTJT+gIF>LY(cVXb;Iu+vvnI!SEz76-=BiT*)>o<~xlGtu7%|=?S=LPK$oxKAohh#A%8oFOe;%4NL=yp|aUi^a=7B`vQDV z>zD!DS?W)=7Jr8=AWvy}GbM~4${BaaM_g~s94PuF!t;sZMDnh#85zTW(j1^V^TYW2 zIG2-4rvpS8elB#nN6;_mX2dh92E7&@L?QE1o~-s^->IvWRrD6I8QGP{QN~I+^mI8_ zzD4X(jZz$W97sQtGDn(7x0Yl@M|22OgFek<`Iu-7d}huF&-}6Uc%iv4S$Ijd@w5>P z7{Nv#Bbt>EDcDQMZh zzGKudQB^)e*CAZm2^ILu)UU!5^^p=KcNL$Isj^err-myd<<*2F?;@j=0^%wv>C2Jp zl-AgpekXM56XH4Zi|VJ+iP}sm8A9J6qnIYt65=Wo%FQ4a@iFXU>Mqnd|6^7|+x|2^ z3AfV<|5|Q3Dk_J%N0#zLZyx6NzfdN9iS*1g42a@)FrArIA76 zQL&=hO5WqUN<9b5#Xg}8`G^0C=oMG^8%xasm4r1?k+@&-dZvmS6vGZQX-83n_arpM;zckF4PD#kb8== z0}sVL@&;KBtQRlJtkP3HC~ijlWuNj{*(n<_l(wpgh!CB_uD&@bLHqIp(UI!Qd_gS! z0(}cnDJ_%4pyZ9+!j5J4aBqMR{m6FZ<1w0fz8Unev%p+^L=&W`ifH`;%?wRtEqKPY zA2n07b&xfC3cO~J_NyjdTcla0@$hXC3wy*5LKJKj;)k!07YgSHC>=k94<<9)nH`K5 zG5L#BDpralY6N+aYz&WUC327Tz~~@gFKmN_^{JW!ajBjGLkpw4|D~lB{K@j zmh+h7%o*kue2pT;#>7F(G8TE;Xtov}e_>m*U7%}OpKZZ5VB4`tYy|!;AkS08JY%ji ze*-Nxm`OzBH6MHA4bT`(LoYl8KqA4bQ1`Jwz)HbS#?fU*kn$bF?yiG)rpILW}wk*4p;bZ`? zPg?kQM~LN!3f2LG$VXUmI~0xEtG~j_D*+$LE@Yy{D6PT160gW|79w`%p>FyoqJiUK zsWD(|8ID-!AbBjVd<2dGcs&V`!WD?`?S>xkUfALSBBhVP>GDBNmvdyFi~$S{KWIlP ziApTa8};)sQi(*)FcR-V$4m*vZp4JFfeEccE0X-uP>ii&t$67m~Oag9GXSymzQaa6qn zPS7u^AK8Og^%2CJ$N_vphqwV9Ya>|0FM30!mOuOQ!_Bn_N97L z4Ja_XQDN}6{bT`{Y93*xI85%szHJI}%0GCQ=f(csFsE*&)D-H6+sQLcc4XEl2HP}rj;Ec_#eTL?~_f01E22R@$FXrZwecZfWEkLh)WO)Vdj3qP)<}eMdc^ZcwMFjnq79JnUT;tz`m#@>lXEc@%NC zao{nkifl{<@dz{Ba_j^fB3?-mY3e(~^be}bkwxvK)=)#?uUaviJVxYqpYj*1I}QD8 z1nk=y>eqFk`dkTpIUF}LdaVV0IP_5 ze7uLsJM_<7WUyo<8r8m4)JEu^1HmCQ6WNmO$O&Ci|5e|E`$t3^KLWE}Jw!6PApbbf1i)fFTif|$KMy=mFL+e1FUfHDL8N$e4^ECS!hB2i@&M$VHui#U5g8enGxD9k#a< z64pxvhZd|oI?@DN|2RUCaSa3ZBNC54@_=!8j7B!vgvVg~MT=I_fKf}q{{s$#l_3Mi z2gGWgp>FsF_TVS+eS6W`n~(`xfLQxPjmQ`s#yB~oo&>A*MSRZ#WRadA-v3F>#+c7nZLpyXBux-u zLa!-}Us;~0{?ndqV9$E!RjpywfvC(F1IvzuZ6_j=HWVtU^YD5mdf!w$PQ(2uteUfM z-w%4{U5FvL`aVP}{C{s`24QtH7ZTio?Hv(5Y2|aKOUXR5ZIRVF5 zSm=j6=HUGwHd&5-y%uNMtZsmv_am#i50<$M%U{Ry2N=b#kZH<9W-}kwvE%T7af?L8 zoJS7RfE--(&(WQXOletIs3xK=&2fdTf3|TqT`VKNXKt@%{v4U#9$g9P-n`{bA+aSlzlIO5YCia4S4^AsS%D18N-K*%aSd5!Q>s z4D(}!iA4k<3au83-v>Av5dZ?ftNK*8ngfek;mLqm5aT{a&A|11Lz{n8-{SWD=lw^_ zSg*h)^&YR@!}4!`VhBF{99N$(zEaQ@U(rLpqmTZ0%u;i4#x%54F3w$u_1J^&a;gO3 zR#~(o4IA<3*_NNb$b|L{hqWw30y3MWVXp+>xRcShevH&An4xMSLsbL!zu?{K=odfi zSpn~t!Dq|iy5eB%A6FQP^BHhxFmk-OE)~7ig=;LvwOP?xMfjyZuJR3j{~KJzYy9>H zXv2rN(#PmW5Ao{y{~uvjF$&J$`E|7VE!?i+xQowR#5=bz4sYVWZ{zb1V3}9=&$k$z zpK;aSV1o?YXQ+8UZIF+#lZTO02&)vq$~me7zsHK3fF2WoRqQ`)W5s8D_{5LbHXM2Q z-355($Nv`LlbJX}9v!uxsF_y-mo`6YwpZ__iNy z^W(dJct`)?Y9HYDKE!og{5gV7qKBWr2>LOKZsNL6U?$j!IsXWH{f~KO2d@7+Y;^&B z|2%F-FkUvR*YHcye&7@F`6uWX*=ht@ue*SNl54gedBrpD|nw%x&L7w zR86O9lDK6Wz2-36UVBY*kAI-c)#sUC1fLFi6VyTfi*YMdQmDk( zn&{fFUE%kyW2Vx-QCVat^#^?%*z#|*%FJPVvFF+Ts0;m_eT==oNd8VNQr9Z)P%H4K zP}#rA*U+~ZS)T%LhWBr;7PV|=-G8`lIHQ~<=PRJdZFU1{W-2<~*nhJRvLCkDt(~o1 ztgEdFwvL#d$~$kk?t)Rdh5sNJ{GuXr#Np_hZ-uO@Lo{RXDYukbs|L$!2+aMSPe z-S+)L-r^8Bu(yP*>14e|z5M+&bX*Xqe^A+?4qy zqgF<}jD;BuGA5*FqX8(ebaZGLfuJH{T3B8F??}*SP;; z@*}E;JT$e_wPc$SB3MalLzAi<@^cPKW^?#$npK)tnoru-x=;FOV|&ZfP$8;X{EpIe zx!x7_CjXjzFzIyShf)t?)<%2}PBL#WNV-0{CAt!Qys0UeGB$+Yi~KD*BW7o8Ahsy> zSS%UaKIU!o-ss5a;z(Ec-OygaE6k#PqNW3zMYSN45K(VOOaQ`9LM*EY$k~dh=X)cE zOJxGIU-TSuS8CN37d9|_>6X zWz4sEsROgKiih~OF#}CA!+OV5PRJ?~T&7p-`q1V2#gtBnu-7g4EhjQ3D`!VuaABtP zx;t0cB6n8r6NThcY8C1r>++=jqIqKIn8-0Ped2WS%VQr#{u6vlzna-4hxzgxO~50p zbBu8B7Jeaq=Z~2thu(?o5OW~5PVDArC8A>3li*gCdZy`yi@KMZ#av(JIymvKz#mCg zOO)yADWX4BpV`mZH9K{~^wIi6-3^{*hN`4^+86B!cP(_Vj%toOj&SD^XMxk@{Pm~) z$ARLPg>?%4m-jt)dG2*62O4uuWc`yVXAH`inLaDcp87p)dZr_fb{tR|nR>=NORQgE zV)Di0;0kLKc7~PH^bj*`V{(hrtlwkP$LA(m-?}#iiiq9(a3hC$n+OrK>}3^{urf70$>XP|&j^&Gk*{!|~>?;fv#5mx(ENwX9Iu zAJ;5uedrF$Dr2Jlt)?dz%bcga0U2-(>rXN~!U`0_T;gWyrkSP&nL^TnUj^lX^C4O@ zlDZ<*g4T9zm&5tc)z=f{Ybt1@Hi}*OOCBW-6zcdK?xxOZHojyZ6m~`wPA0yJS>cw7(sTx@jbW7)< z-UgO9KNos)MrU8o>u!DTOQC9-x<(E!bvCh8x%{#jrTwv&!+TgHU44EU`-)k{q|j%m z-^nMyXMIE7DH;frJeJgsHyA9VLym_%3;P;UV!orB!IV*6`CGYz99wNe?1No9{ZHi- z@^7XY@(bH(j!cyQ=da-obsVz2v3|2QwuRam#|3*g+v$=<#Z3z@F+AZ~Tpm`ON!YV?M3Iu!pQjt)X@R)lCu}Wt{3Jzp>?Y zElp*iV_p=#I^t>=7i=&%m}<%x|77<(r`Z+esq2@-*2FQ!!S~lr(-cEnb-di$f6lep z&V#ACnxmPkf@c~OyoY(3gNx5oe6sLU{=a$Gau4K~a26<{<4c+N^~2Xk8Hb8j`>TQ-@ru@~tEZ3D z@6>$&@+H-z3w|7y5;Zw)aw#S*A)M0JS8h7L7X;`0l6@j?bIAbDV`#ljG5-}YA#Qdl zXZ)U+MiDK8Zy4*MI_#vjlr}+gnIqUoRE8RlTtm-5Tai#2(H(TDL4keeyXp>^l*))50`-KY{>rEe7~~u3t>dw~ z>N#K8hL)Tv`cRl&=q-GNir4-5S8@xo^;x#`*Qw7_GQMw4`I0s|JH5D{&{$g>Ik)VC zWRF}^#y2NiPw)o(X>ulwthHrhm@l$+^gmIj!p{f2)ZL`BpGlnQ+h~`0}X^S{z<+^$hNmbKlx(Mwx*OUFWFt+h!;qAt332jsQRE5ln4a!xEU1yn3pY`3h z78Fd(?*I*v_qO>SN8qN~l&Xq6-QMU21Xs(P&L51KztK@}Ghp+1OsvFk&k+hxcg+ZD*jH zN})!AH|Wf4@PrT|q=iLeAov#4FlC0ABh(Z=3Nhj+i33u;KjM7Xi4)2~saV(vrq4s3 zO`hlOQ%=_2sN{4ZT`(iBW$v1sGuZ{;b()zuH?u+J%ZxGULsP$|B&WT|x?L;^v3e!C zeNtrQ6BW*t%D2Q*E_aoZG9^bHorF^AGO|0-O>E-%Xnk4OpfIgC)-@t9luk4@j_8zd zv)rYm7iCAq-wv&%>qs^ivjs}3K}=vi0gv<-U0Esi&2dh(e|IeN$!c?5%TQ;`p#*K| zm+?{2heO+#Q*=Ha3b*?Yr;(?y|e9_`VALrB$+w?DZwjDf`i)U-I*ED&=g; znUdQruSs5m+&bA(Mrit})Y>W9ln*Ig(}QzsS$BwgbnTthD?u`9MLt53T|kwZAt{6#OAOsksYIt zL^ckM|38kd0=jKvi^>d=EXfc~nVT{*cgxJo-2O6bx6I6pTV`fv+)~H30UWsE$koxBQOs57J$5rAd+$O7mnNk#bc* z-cH(Hw2(J3c-{NhrFHCgTyPF@+dV}{qP*^I;UJ3(^2b=Fm`ujMO;U5JDcW?(kf5KO z{X*L!>sp35BQ4{MHfXG0EDKSJIWb?$->=X%Zm*IP&kBroPxM$r@sj7XoUKp&D^R$r z<;k-wR)0}9Ro0_z$XwFMzS8Ygbkv+!VcfcyMiB|DLUx1K(I4ef z+k4ms!L6r$P{HqxgrVn9u>Ka-5e<~CrDv)S#m+6)tir{z@))^lF?B%V!Yhl!-z0f( z=vXFrNt_8~pvG?uwI-m+2Rp-^p#}MaxX`&C=R}y}{Z3fx&gc ztqONkukw~ky(-NsyD`ec{*o6Xk)c@hLi~?pu;jO>xgaGR9T?>O?4ISR?|&6uCHg>) z<(6pHMTR5BYbvX*aU(cV`5P|L3e85<42G017VZuI2z>D$3v>+K2`@p_ARDPKtNf>Z zjo{l~!N1Pm798mdU>j8OeRtP$CfXuPS{0wL28;R@9>}X>=IN8Qbk^X^7n$|4CT2!u zEKf^KZItmKyFz|r_XpuYMS0Drh&jq#R8X{pZ{=5!2ACU>hFD=Nsm_!x@vpVU@uA5kajpU7*f z-imS3Ab&~td2ml?C2^R)8+@ZfV3gIC41;cDuym#DGuc`(i*2H;uDYm922-seX_E4# z&+ytlX&dPiF;DoLXcQdnW4!x4OTCkP-=JdIiXWC7w|%zhO1@jm z7P@jJ=CI+S{+xchfoE)G2+6vEGI5x~_bO$DRQN z?Dpan)?Y=|!f}{2ujMD_&CZR=jkE;JRm|Vahs=@YGUlJg_NGOqUY3^m6RkrW&{sh* zJ|Q$O*Z>I0N8U2g6WMB7$;@RgQ9jvgakQwWXuo)vYzbM8`XYZLnI~8n4g~52B11oj z3_*l=f*5|N{QE>vxG%4gFhSY~UTpW64T{S2QF0-fLUm&va%WXRRT)($&aY@s_od2H z^`VDQwD|lH%J`j@|1X5Gs z2Q&a#31gwTX&t%^6zol)f3R+##NWv8^!4%1@^Ah z174NyFQ3L&7OT74o^D>wcfyz8Z|!$M(KN=l5MRf9g}%!Ew$PhYLN9I))D5`(cl;;( z7I67@2HS>KfJ4_hG#g143RK6s5?Z1Slpejnx8K6!fO)kBSB(R|(ILnbXu&H#CTuD) zi@J+jiG|_^(1TqQl>sBP0$SQcas$tegQt1CXf7&3PobEO6fF`)3(W$au!^ucnEjWL z1R@r^1se7ec-VY?7jR@>@wP&H7yxp#3Y={cSo#%I;aUPae+mu52;f?cfL=9)7HL3e zbZ8{7t7V}{K)r@Rv)UP|xXxH1&BkMTXdJ$;2;7zjEVf3dJ@BnkoNHjH9lmdXR!#wu zd=^;OGoW6Z@ai}qVRJ$o@!SbyUi=F@Z3fg6oq^s?4DG2{J)+!h>?9085|GrbsOl>NnqN`fUQh` zGVL!^{41hmcK;1s!tU@% z9LtqI=-zH%CMR%2-%(K(qmmx|rxvdPD?^GJaxp5%pMiMXLUs5AD!hkLb3K5H@D==( zkEq8M;qS`P#%e$v>H_I#4K$)ZP>$~C&9?aKb#N5X_#_*uy(y>_r=!hIU;#4V00P2^ zzgddvIDy-jViaoB@Jm&kAyn|g_*^M!$RwT-{i$ph<@ZN(8E`_oJFfi#W>Hns^P?-7pXC))5Fqu~bdo!e;R zO`Mg}s6VgA7#$Dx%uryG)A0RT^z&Y{{U~tU%czMz$Jx^3NW?h4((@ETExHiL<_LqH z0EE|#R%PJ4y+xJ%Ju2>*I9f0Iq!gEM07H;%v9amD3jZPc5{ZN9ZxGo&uftj$U!$Z#Z$r zQgD`jpz>Y>^o9I`sWCX>(%16wTrrMRhojTueMvwFE(7h_h<-kbbMf>K=2MCar{mQ$ zyvq}2a5R;G&qV=yiNe?uBMGY%&mqwk3BLEBCjw}RAMa#vOy$t0QGZ^K#5kygtDpyAW+F`qR&){~GbS4xgL(=U)TPP5~bIKr3{A z#N2xSFb?r)#07 z>)@3lgjA!? zq4dCta5H`r{vu*vxC+pp{1C%4@v>2K*M}yAk!{Tn!*Awxs4Pzn-=5D%30@F-Pwe44 zi2I>+!EKmR))0fh8Xd~(EL_D?hqwCU{pCXmL1~a84hZ*)R#9rvGGR7msj1!@fmxC< zObh-3P;%zbCdFf_ui%zd+8@3QbIF$N5iUBno{ zOTi0X3&QL(22+ucxjUHZy&H(~_Xk37IDE+cuS@R}@Eh~)_@8@LhEIrS@f&`8*c^Bs zE*5QRo42EJVX| z;&|8>S{RN;&u0V&q8_2d-7k~K4J(5ke3Sj5V3*)o|MbAhP^EBLZ-wCAU{+{ppnUK$ z^oyN+!-5VZB?O@Ld=(;t{X>pG78DcTf@Q-KLbn6Y{L4coKR@&j@`_Fcli(0!$6m1l zF&1-SV(@L~HIk#M!SP^!co`ARm-BuB$15Uw@m_+x6N~ijuDl+?$GmKQS)!$II@sl# z1QKBdXgcTdllb4EuDvLz1PpEo+FO$l@I6>-_`}oTBXJKaJ*A+vNGHxmCgT8M9lU0x% zMOc$b`8mOIa7Ijm&msJ{c|*e=c|(zSlop%~XUL<1vKV*Y!X1d!P>OC0J><^{)#05B zr}5?lZ}RpbIm;TZhjku7I5D!vhOVFzcoPcyuHjF?ZlPn~r1=6b1Jy!q@yhfD|jo3EBrR0CxOIpYkmT+3~?5F?WM#GUU^xgr~*zf?}tZ?bN zvO#cbU|!&F@HM{$Zuz6a2QeZGh>GDlVC}UGO9VfV8<|T~=FP{tpcreu5_~*f+{J`4;<+7BQAHL5UE&N+>jW<`=s+7~hhlZ9v5^Je!@Z!dRw=xy1 zG_~L`uJbrtzi~ujXgRch>#&}k2OZNPIGrpPOb|$rk++gRT+jgiF--_4;==8P(|951 zK}*r%sc@>;1g=`$@R861@DHnp%ZELIe{d(IiE9B(kbuu(7v7=JqHvE;Zul8N^81Cx z25N`unbAHI4}o7{VA9^nuSVN zWBWo=z@tbF2}5RZFuM?`@OOAgEaP1yt_7Q7CF>_R{y#ircpApjU1Ac?h*|U+RES04 z%|teG_J)E(7K_ZYnLw2n6Zf!oEL}a%3g3de(l4-72%gvN`d-dE z07i8@&U80kG5CTX33$VYD&TID4?aiJP%QD1SC+5A==Tt>;QVI=Zz!GEgmZQRd(hiZ z+P;AXir`g)tAdDNFg~Ya#rz!z_CPS728GhW9y^0Iwmf(@)Hgg4I$JjMBB%^s4Vj_r zIvmUi=7OdA0A5;y;qkgC5b%~qzTo9RVvq<#_}W8n>k@4hc>Mofmt0)i4 zl92ZOTslzZl-88i79SE3B7^X|V87rzU%-C^^!*(6KzD;D{2KpE-%O-@{pF%vB3B(p zcF7vJoq2&uPc7V4kYA9Ie<{Ca{yj`qR#UuLW;tcLY9tIZ^=89)eILUe!yLl}qs(B< zxo6sINz6|#=x*&}?Qi?&Y~^c-Ie9iuB6LZXkQeDQte?wMEstm%aWwjL%#XM#@jK$i z#&3w<6<-o}IeuUKyEsp5*Vw_a-D5UHpNUx;?Tb1XSv&GVM7yYRQG&?Z5iK<@HK#Rk zk#E%p)jyCVah`*S%J!tc(n_+<8Xe|(`dj*ShEFAv;ORNj&-dAat$2x2xjcd5 z$OdFCHJP5mB(U4qELP0?qIF~&DwDiLPo=KN>q*y$izJO?PI*1#s#Yd5<=3b#Oa)~( z)i&jCKa-wwR%-HlfXAmj;><)XuaV}eTjI^Y`j3Jb&Cg4YB6{K?)H z-VL5C_dDlTbE*6po>OkMZ&Fw#S`8Q9tJ2=$GO~|k0+WFH-&gVxsUzQz!^v$xee>m0 zWV_%&^-Erss!jExdQ+{b!<0i&QTajHnES$HaXQsO&0ci_wMNxSHBUWTb669rzK&G) zMM{;jBWGd8GZ*O>$SBatlrp5{Nv+~X&?)p41d&W%iPtd957k7vYm>kwe;Mx>*A~Yk z`!@Twl3K;4g75iM?jp-aliMgV@^Wfuk7YVC9%QJ~UZfsLo|gJ8<*=5QBR7}R|Iawa zGSB|SQ|N2s`Q<6{kKiv7cb2izx^T0&BkM_jK<4r`svKF7yhENv`uRh08M#Y7LHg((vbES3 zOjYI~odajxUGmqmiPFsyvv{nyuIL>!_8w%y*5R)uY@t_yHPFbM4lMQ0@+@&Ra}IRg zb+on}wRS8tL>;=d8?rroEW8Bcnt5Uui_z>$HdIyS1D3wTyj@zl>k= zbtShvI`}*OhxNA9bJUFb*B6PIiGAu zWl#s{t@JB8h5oAO#Gc}+z|*|4vZL~u>Y<8KZ&zMYE?3@Hc2@4>s&gVPiOqvcLm!2e z9!2k_jN~nO3)yY>Emo7%medhX7D@#@_^tWN!LL{HxbSiKClm&*0+%si#`^9Ip~7n` zsb*CdwJA7|za#I0WvNMLIGU4`-Bp*JbtYq7`u4OJ=`F!D`lc&ul$-9ErscjV+~dfD z1GwE|^yLQByqdymVxzdKc$|2rv<#_%)7)iJO|^x`#(cUmU5jo6oo+n+FEsEQ=<>)X zG%F@CvFtB)4d>+iN}g(fN~s#E>ZR|3gxG2K$2@%|2nOFfO_iy_Hf^L&!Dq zbZKpgLi`4PXmdpagdYAWC{H~^EAWk;VP_)^E{Br+B$C71c+=ezkh=NaF0#KbsZ+eC z=upAd{NZ_Tb4OWrnIa99a^C4OwB59#tlpVZGplRI>2B+P8j8V@+LyPesH3g3W0~`n z%j;g^I~nXpjNsRUkH<#QGsz3tT(T^6jQWpiPy6XTij|5Eimr-wijj&dipfkOqi5Vq zBlZm&iwt`$S54VPd0C0{H{~_uG-X@mOl3Qzl^e=EX6LdESO+tMnWSh<&!s-W^EVc4 zTaHZhnW7wFD`7L^P2sL_ z-!N-`;eK-!l;f29l!KKQCJ*~#csM2eCbj#|M)x(_bJyh=LN?L`wQDV+()e7MC2AY z^MB@z&doQEF!>B7{jHpZ*|l`@wC}TSX+P<%=ENK928%J@{5vnHa6|E6+dKPq=Xdva zU;p6G@DtuMfmXCz`cA$Q`Sm8Oq8c!FnFH*<>@4)aT&6YiFY}VA%HCwoFmIWWaAc0; zOzb;0nH|bq-T1a4FX!8~Nz^LP!An7ktN2*^s3|DkWIcZz4KyMwE)Gt$Age*@ELrnO&DCvcrK z`H8t(Ev?KyjB5?CdRdNHS50TsUeONL(`y>ni@U)pSw60zVzxflmAlJsWS_G+Y&lNMeP*w* zXITS!mE`_o&toi(W4prdWenSpEkfUqVLCF2iuQ_$^fSs$b|(kOqhxO+FT@$5aiU+s z^1|kV@o;C+@P=TgcQAA!xG`|uFY(s~ax%=b*1ZQa_9e#%dw$7*;_22IMO_N}7u3sF z=bg6t>zo3-%^U zas9ZZTrI8yE3ymdyX)*Q_@@4k8Nx&{R>g3|O^nThR0Yia+vO8wHR0+zPkb9HPI&l0 z+qIJy250^d>OqY|yMy}!ul#4hS?%X(>8|IhJ8umjfRjDeGfKv#;57b~T&NoM$Y|67=9=ZU)zsi$(jM zaXH*gt~;mTGSQo_*?G8PFW@uUV|-3i9Kp;jrD~CVw>yGMP*nv}P$=kM-l)D`E~Y9;ODn0qe|OY&-S|JB;h99Hv~R%;M5HvGSlY zM;W7fqSPq+b6M;wb_Ul8_n1#i0zA+g(gtb^rJ>@;xiTZ}F84(>M4Lq0g#!f-d68gQ zRR!mNad=Yjw*Q-Nudku+f`@eXbgp!4hAX+Pc%ijtQC#7-{4RMTEbYzTj2{h4k)U@~ z`z`BT*5b^W8C5bGW**Dhpl@kn&GSvO%`Xa4Y)9Q`@L+O!68!tZp9Hnx&A3RsS~66Q z)gtYs4$wB5W_L1Onf`PRRaNnTdCVLJQrnq+MxSA3umx-;^Ng9mR#rx;#;Jd)uB)8N zcB)G1GwP=5fvQc)=iCllx1+gKR>UqQcA+7p?fM0E3PS4z_Vo|eUBPW|EIX8=&M*teI`#*JLp!-1~}9E6=CKhcUw71HAt19 z-l}e(xvYMpKCYUjYN5KVtfAC!7jT^_*bW$~Lf|;y*rmU#UB(3RDl z%IcZbC&Qj*NC_pkPWqbiK84Oq$f{t>Gt|u$n;sN)vqk#*hxQY1ki`0mA1|JOJoHO`>y4+emFEpU8Q#vZ&fTrruGhWG8YT$xxeVA>(37*#2CU@_>?3wO74Y zbA42PXDEljaC@JMTE|Qziv|+X=CNRyJaf)balzbW-g=@&Z!|C=Om|<&$ z*94md4dIWQ39po<@LqZgN5ymgD1V`6m5X-FD=CDxQgY$wf-8Be%u9_z{pRdZy64E4 z9+)XEt0E7V(bp)_`SwK=MwupE6Tb z=@7-IQshI)RPr=M((kA~N8~TE8dXfUVf1Vl#dW51U{gk>#7RndMw!s5)Ej&e| z#cM?-K?H)3-||S_P~s~vhA;lQzLnm~p3klg&f4~oCGU#b6#mR_nO8Trk}1>B7b#!|12MTwH1n{hW zj~S{F{es?0ucWSGUH??Rp1gwbSeuN8mSm`G7p}`)^cDIhb%7i~JyvXHS13EHrmAP* z%3G;AsH&rSpo-R{YQ|{}sjhGiCY70pIe!XP01J_t{hOLf_CP)2wmee4Ng5$-E*U8v zio6@1a4~#%*I@n0Ba|U3xI3Wr5BJ|kg=>~`s=alI7HJ{V3Jddx`Z(1SY!FTC3(Y({w}sSm-||W6Zs?HTQ8TKm)wwg zWn0K=)GxY?B85ImbtMgGV(j3&EGhB{Rw+DF?NHUae@0nPM0_l548m zq)Jtf(R|R%(gf5u)F;&n^*u0PswrP$=WrQwW~$;YZKmc^li+rJM)p?vk0e%nQuG3D zS)GL+z-7i{B8=IZ2{p z;JQ#qLg_4Dfco7eYA98cT0;s+6?i*BYA+?Gx6ljdN!YV3ppPR&@|_}sS;scyCUMiT zwut}-Z5Nl#B`E7C^SBV!ale>Jj0$PVTNG8WYgj=oBA?5T%2?TaX(1dbj=(!^u4uAw zuwW$r9b6|2&;v#RacLZ4f_8s_FTqzGP@Nlm)4`5Z+v}1Y#gnbh!i@!G@~ycKEsxCS zOlOT<4fdR^V4Hr{KGpWpUC3^&?`;&D=UMvZ3i5Xr6cn{8G1=R>hI<5z>{ujBEx=VLckjwz)Arr;UW_4^AZXtJ{GjIasYwkU_k9*49;;vw)u!5Tg z_x~IC=@)iMDcl*Z4_0uu*x{^|xy~%W{(QaSIp$Lh@;ny6&*_}>xMVH7&N%oHwHIjk zO?k7?cP+z9;EdTnP!ls>8}A@6smHh&=S}+{o3r>TW(T(LG)Ab;a@st=WI%>nj~oP7 z=;~{qWLAJq@`PKF@6=Kr zAg9nX6fARxsf1Oe8GW>#lPRYw`Kk`8Dk_6=hw_;6t+D|7*fiWBla-8$RoSuU8>(!s z3~;Y8CU0XcR{`sB8#A4`ugInc(D~GG>Kge`zFf9JIuR?+DWciJA%boERq%YR3EVRy zWC@-Obo5sSOT33?mb;28*D>GT(H4WNZ$r`Fg>?#~`RTbQErZQr;~~RxeeWD5TcopQ zt<2h!^;J78`-+}1ZZ@gS+b!nYlLh{wskZG7l{>+E$=?aCY-I!zQHr>&w1WI7*_0ln zD8p=H!ptbFpU<*4uusslF=%5t#@|+M4EGo3#j3gh&$UPYrEnFMtTN1f;x2G&x$&He zd%;d&qgfWKn_q`UM~WjIfblG=B%!W(MFqt&kow87Sp) z-zhi?{&3%N9dQnF#MxhzEG~|)el46|&>_E8o;0_j<%#K;vARL5Ka{;wH$>~mTAH;< z8=c)=zsLB}G{?NbvOV{5exIV;;?DLX&JXSs-|gUJVljUr`~+u7jMDkoH*iSv{jC^= zO4dxKF0-2{MBQ1ybwI1?b5(GqEyY^90`~*;hH_|)mJ4&7lCMnW4sp@kGjvrGm911>CdP|j3&RzqmWivPFhP67LlTIsIl~i?&%3|_o?Bdp`4&U5FM!OSNJsE znx49Dg)7N1%hH#D~=U-i#_GOkx+f>^xTcTfK zd|~=%o@(*sp3dKc>n>m)>U!WA>yHOke2ZU2_z&C?TS(u@+LK+W-Eh8N_TcqnHU&R#aRpW$fP@jE^{p>g*05;Qs&?032sQndvt-T98)7|A= zcO8FWzjwKKfwf`LuY!&Fb@N=7%jStt?KLq}!G0ECrEZ&6uPx9W$XQ_6V%%iXm@ixA z<~1$MwLY=Ea`4?fyaE5!keB$)A1AyjS|=$l`v!$wIjmQb6g{zyKEbTRZlN*zmTieU z2chh(oT1#P9HKN}oNnd5bA9pCLFNCH(Mq23JJ!)|)FAdVgBZ6$%zRhOR(zqW(Zi@T zvI)6a{!#W>`dV@ubtH*sp71kVB}yw}HHjYKWuZ5yjWK~L(6&tTPDjsKovR#`?4L`v z75A{VDymXQ6kN=!hidH!(^_LMLl?b2Tc>kr4{7&mxoleB(OAv=3dx$n+=+QP1)Abo z_CwD1Na2hNTnY^Xx_3*sQ`As$UHZ5DKIx(E)6Y={Q?PpU-5e&H>Bk1y<=l1d0jEdB zuPN^Pn^4`Wz>VZ`xmc_$z1$1jMQd`WSeo4kEmKXV5@S$IRh*@RsO~-`#bkH+BH4dZ zRys{`5@|X=;YwReFq?m#ca``J^<|aN;NW?z!yfqNc$a&sxJ9njj`sF9V0W&vt}d!u zXw2V`*CSV8d1G2-9Bt^XADy!?J6Cr|cS(03+nMvm@WYs6iZE}r#O0+GEVd4^^>QqB zJ@kz52f&l)$A2gIBAg*+r0-=j$P?5TdW|B1>BH1vd^YsJOJ^s&aKWKl>A&v+tS8%n!v(#VEKR)`vUqOPZmVQ8&p%d4bFZM)E32 z4l0eaMaP91@ckG9X6FK88=Q0Xn8_0Y@%}=%;}{z23WbGO9f5xujY=n z#F3}4!6dtXTQ8q)?0QIBl4@bocN+>7It|yVLxR5 zYRkT;YMmwk}*65mJ8M=Nl#cOg+TgZDpT zOK4BGS#}FuuMVkyit~ez)pu|7irsPWoL*oT&dY9Uy@3G@BMw~ zS5DG}i4ZPyfN5uo*pHaZ%BMZYUop-XI(!%oK)%w*^gk zW-u-udl$Ixx>h=-I}+@{k{?B_^7mNQna`Np8xI(cWEWMgPfJRBmU=XKKNs4>4-3;JUu4ZlG4O>diu;U@i-@=rlNdiaetb-?$be>Igf3!Cs@0rHaf<9Ndng-7wPU_R_nS-|l-HNtl~15D=qikWsZZPFF3CReMJVm}3(Nw6 z@D=|SPY_z-yX$)IIP3V~Xzkc#b66V|EY2NmUT*xL?~pS-yIc0->{r@5S;NycDQ%OE z{d)Lo=kMs>{@=Tj+hoz^LH5VsM{W1j_B0F{1#a1W=7v(I(s6vn1ahF{gQ%yVSV&2W zWI@>r;hpd-)NFeDD-gB8S^7&d5e@=fB-7+~>A$!Z>gG|KVpqqmiEb8IHR7L$Hc=0v zd&PcXzWyK9JPhKNe-a?qs>f37FRAki`*(3gb_Jjc3L`K zGF4=POSBwJw@3bDPj&Zm7v*TMptT(MPA2HuB)ia87Zf2%tOi4SJRxj;& z>eST28sp136wkPkvtBhdPftX9aSq)FQ4T z?ItV4K5>d{xA=zOJA7f9pyp?Rm}>>nHxr$iP?P>s7|f4Bg)eOBY}%j~WKYT(li4_< zANFrI)2tYqGm_5yESLEC$K<5>X&+6)tlPbbuFcNR_VMnN;1fw_=BRp*rkc{D=tozf zM$pUXCYY@^GY;xM={~_ZA~QH6VEMnybnrMxdxcNvMBGj`}WdB%hCU*HVd1 zbYHYe#25Dyj}dITQ3!O(dHS=ZK*yO#xxBU9wuXRbMk{YGjQ?VhlBor+zF*> z1DPzfimC|j2q+;bY$zDbb7MW(1KwE&gX020-+k{y?`iKXZ;UtOs_G2b7uo08N7$#> zt`~2y9xe0~B<6GZU32ePCY$@4*P8A@DLLD4NPjwq&3Tz~B}ZgDX1`9Ja=nMDeK*>*wQWCR`rb%yK$#|Ak`lP38WTz@gxtwzai zA$>?KJzv`Y;#pAJ+<~q;T4aIy!F$7d-}@e%jb}(tI_zEQ9RoMv$cm{ho&u8~K_h5LO)O6Q&i`|4ffO}bc_a=A1J<{{h(;S~Q#255khu3fQU}|u8 zXe2UqrM#cKo&3f~x#t^#G%aj`|*S+Ya&Me43CBpxNr{Q~9UuZ%?Ur)G{ABAsS0q+F7xC79Y z%m?Ez9sKf5aE@w(yo}t?JLF20^7hI>E0Z1kg^Z9RNDAqXjF5)Gnn6V{3);c?fgXWo zfhqw-pxFNnnxT{aE&c`Y@~r8P^Vf&7XAdORj6&whGXH5fdj|Yc)Ktd?wgo-~41q|n zb+-k-Bbx?HUN`}M3z6_YTLA@$30%tN;EnzZ-@QoGh2|o$?mr&GZwpV)_3+m-BKv2g zU?bXb5jho4;j){EJc~DYyn~nI6Tu0=dcjz@x^xgUgI{(sd<{3ko3jHvB{h5(&gv-eG`QUyetSk#I#n<-W*5LZ! z>fk0k`wGnCOt?ZuK!x-dG)qgNH@XVnK2N9&uCztqjlTx(UIt}LFR;yLLHD!$k9*#0 zI4nBB9|*t?&qlzE5#D&EPHv?cO&NHk5Xr=Mwm%#&IF}d0X)>L_)dq<_(r^eo7)xq&MG)_4Ta*UC6qW681q`3 zlVi{lt%3q;KGaTKaXw`9RxfmKK9lUoF;bi#^4%(lQn)3@;KiNp2aYAt#Q_P-V?10Uv%5EKcfKmKe6aQ5AJ&IWbB zN4QnpfD)qAz3(VS>_7Ol(csFCfQG5`yOHohDs|kOiP3Zj?<)1KN`jsu51*g{L%&pU zPyxDuM$im&0Jpy%yvl~dd2ATkITVg=li{f}7H7RTUK<7EM_; z9;%Mna5K~sKY$U}BtBwHJ`c$-4ywWdaUptoVfYCgR!cp#cwlw+3a8+zJAjdT7`nNE z7zZ|-r)9W`XCO7;ba*cjkE}yJF)Dlo8p3$=!hZbD({O(RXDiel+Q1$7s*T?{6>bC$ zd{nl;8+dS?;B~?ss|EiD-vE5+6LgVwIOLXrLj0U>h*#x( z5p2z?ARN!{CO@VeCcWc&oO`b1Q0_2Sm2gY4SUD}S4)ond*(;)7uwM9~Xqw`?>Of>q zR!cq>1)=U47MAnku`;*GEs}ImMdFF)y`#id*OlTu6mBNGAyErI5ShNAzWbiOa1!6b zmr1*V`M6QMN%$lb@9*y>d?nrsK4WMi?*Z_y-b6{DFevh?g0BOTP_3XoR3~sdxXb^; zo8sE$&i4HD%?(W^)(FoFCklp$yx||AI{r-oi8l&tkxM}zG8NuN`Sfyh_GQv3MQWwF)*oYmZ2uax`0;?cF_*}37zO9D@X9OQG$NWb2qaNPH0?a-A z;WRx8uU0@V#Z19(cnplsc^aq*HdCYr@{r7!?y-v?Ux7xkMo$5a3KI2Mv zzH-Dm9@-uDt@b4Q3Hum(o-F}6Cg*KlB#-A6JBp)ADwnK74(OQT#G-md=0agn9c%Xz zq4R`iVxW9z1U%nLcz+8%i>%U)R6St64><*D{JX(g?E%!fmEsBA7M!%9K#A|l_d}^% zBpD(3F8MC4EMEf7ubKJ>iP~)xhZNnIooq$r->OUMpe8!(}UpXU)tCXPwKMg9`b>tP@$avIb`@)^^FMYph;ib`BIA zrxjd#<_I-R-d;9YUR%*uRjlb0p;uYB9n5<&QDhDNEPvr-Vhg$`zQ~X7cI^ z=SV)uyU_|@K?&G+h;bGI>H!gJBacN!MZ8yCVDHjD<=dsBkODeNvITqaHll-qU%YE! z1F}Vg@S0x?<;K-uxxf-12bZ8O;B9YkcXTy&RJ1KDu4^q*lvA)I@0Y2L{*>00=?AYl zD?^a=Hmh&u=k)SvA5s*_+mctMcFtU5=wp2oYQ=Pk`BJ84+?L2=%DoB^wTf&+?WUs1 z3bMwME}|~HAHH|?C56ekJ%N<)>|^}(1>>Xx$maAJAaXm|uG~7+vWQO6ePj2=IpQ|Q zo{!kU#7lSc9tHM#n|h{s#{~Wt9>nAEuk(F^0#Qq8zC2w~UbQQ7MeLC>cgp=;u1tKH zsJF`UiVpI_k_F=R$f(H>KSD;$4=8P{!pFh}@F939-A+!YPtsDVr>v4VLU0vps*6zi z{0dzTjP|edP4EtL=Q_6AZWh~%k_uZEo-T+hXqG=CZ)|R{d4lPtVQtQGU9|SEtbJJ# z+Eu!q*$uUGGmfP;Oif5Xr;W^Q=eEdJ#+<0wzw-X_Cu7U2rpmhuW`*|#599jp6|lfj zJJpx!gsQ)QDCl0a+y33(ShSDct*#%vH||lHnPsZSwTo(`Zq0V48$90P5}xwOn>bl+CLX8s$&% z4)&#kF*;Fvj6BUAR_8}_j?Bu>+^|udZ z2QR@fxl3qzV6%6g>w>+1$zv;RO)2_Rw72L5xGv9g7n-K%-MV7!ZS5NEIqh}rHLW4j zl%AK?IPFGy7wutF2b-VQQT3s0^U9h^waV^{Y{mQocM-F%le?0mg>9Yvyz8j1L*O5u z-`&)iYd1OT`tJ+g)5eHz@lh2fS6W`NUb*to!`NApnPH*tm3y@JQ=mGri`R=N3<~}A zy#IJ@{v*8I(*G1sR4pTG#@J(j#_o#xOSO`kBzhB`kCY{T=ux;Ek_z@BE#`dqA#b*D zx}>9g7fo?_>Y7nQqi04{*HmNW@Dm^Nei~Y_mk>m$&y1LlrfgQECc!1sQ zt`SgShk6aE1F?bJaH04lvnt9`rl8!Ja>-?W#N|hgP%e;J!$s~@whbk}>`5MT@Et+% zeejCx!rvf}iD%3D&^5S|>J^dYqQ^%|B3me5%4_jSUlojIy*c6 z$@=exbH;AQ3xqgFvGDQ}uLrk&sBJs|%+&14Tw;nBVI#>J0 z@Vbd}P+JL5OE8yUP zU}n)}FnxpwJ>5!)UBwG5jT|+>A4aQk>+h+ zuWoIC4bettjQ<$XPQ=L0l1u0kMOXGO&cSU^HdOts8m8S95RJ=ZcTyXvt-Mhmgj<$J-d5T=S5qEAl<@baZ!hop)AuIb2rvNskPv zd6nEX9V?567hJMTHogKUVsOqOoRt;k@|Ln-=~ginp-rmv3vn;TY=pei!mP$WM@5`Ey9cU|)t6Z&V6ZtMerH*6vN;mRW z`d_(cxMsLV_#TDdikgt^m=o+>CY$OeOAxmgjujAs;ruhi_0Sl2ktTTf?jf!PuK&4~ zxVpNRdaA(HWP(4|H`zVQKG6Cs-)5<24jJvn2_~Our1?M73Zu|?*U;V2!Z6%W$#5WN ze)bn#e=RV;`XSDRbCPo+W8anz*nD~H#**1F%;+%?Mc&8H9e;EUEZoDdol zJRj=7KP~OWjf$C8;Z>D~Rj!t=6J4EICb}K$;^Dg*x;A)z`QyW{dE=1uYUaz4!_Y^# zTxz5bsTM?4hP?X2f?yZU%H`ujn<{2t2ufy6!DQsH*#47!eT zYs8RfMNC8#iF4UdI*y+i90fP0Z~p3`;k+F}N-|b@5INgg$zx)I6WTGa6ZfLRW^<;5coYV!cw(DnC1~W&XRoTe(8ZGvgYA zMSsM=nD&|{Sq_+=8jt6E)}F}9*G@MqD5U(y$R4qkDp#)>SN=i77yeS`h1i{ZB!hS9u=sGRoHbEg|1_tdn`m?Pjb&! z7m3kl0_%t@k&6s)+K9c;r=v$i&Qeui&dGh^WkAkeLiM`=yUlG-p+4qW_??7DL<&i~ zv_RTO_Ce~9^b_j@Gl}$o&{y5_)t%xlhdYejebp_(IFh-toE2O(k+w)V-j|HCzAE$< zNDFNRkMk$x-Zj<6)g;k3H~!DEJMV1X5X&vYPu=yb*4oZFnYr5>6Zqq}lz3^SRTa`> z|6(hNlKr=xajrMsKH=u@wwXo51)jLo4$78jo8)4G7lldGGxfvR-sNvq7*sAYhNrwJ z=R_*xy*Wg6rOTyav5~msyXefZZLIm0~?Zf;BrspGiGIBttNo;~z zL}EbitM3c>eW3#W1Mws2BH01ybMY_m<{N@V(UA9)I03avmEaoxBX6>sb}e^Yv2V0z z+s```&PC4l&MuDSwpzt~iVhc)46pP)aOT$;+8BEo zQ%(1CBa4Um&Pc{+E|wWuo{68N;>%p2p58+DcK-w3esMWzOVK~!=bm1+|F`!Q&{3Ri z+v7948zsRh65O>|aci;S1S{?mq_|T8g+Or{EVxrVcyM=zQk;aiu8hy@e@#-px9#`$ zJALK*&wt+YX3p$RW@mS2?|J5aZoRH;=~3yMoVC^UR6&Ptu2y*;7YHv{tw57JR|9+b zeqrwf&o>bDqG7(B?Jh88HTU!eI`mi0Zt_*{D9+b$(x)$F8w75SLDX&fH8YZ}fegVtDug@%0F+*^1Mf=Fo*Llk{LIr^ z>?Spp+Kc_&2eN8s3`xsKotRc9{Zx9_^i^p)Qtl`Hk`NW&F#hX!Tf*6dki@KnS_ypo z>yH5m6Os>Pwb%RE!gALxRHYD^*Xj2;a#ZEL#fSmSOj`q=0*)FS?G@yMS!nl8^L1`i zN>VRuG5+;~!h@d&Z4IpEKht-N?*qT)fzyI+1(y!i15)f=>7TVEPq3?mYr1$!D?mPA zqA_m1r*07&iE>mfu9l-%z{;SngX40|^l#)?$oWvuOi@3n4={F{rNJ@tfav6%V(dnj z`fj2Zo6B(~z$bW4?smZ!0`vP%^x11KY-=EN;Cpc0*eq%nFa|cD&!UeuT5oK^&!WNk z$u46)P#cLE;1#O?Ztbsu*|f~qsXdcvah~f7=fSKKStR&7n>uf2<;}XD(Ix$3>WCC3 z6!5n;30Xp6dkvq?escm2<%$cA&QmMz zcX`ePHS%v}D@uQ5R?>Q^g0@$04&|%1a|ko?la$B z!*&pC#M^AMZH0tb<~E`0kCX;-ExDOG!Kg&eVP13L!ZF)XbOzV;Y3h3pWE-0UiU&;f z`^7ObK<%ICWV~O(<6B4L|t_e)i zjnrGNP~%&EW5DOZL=bweZS&dYOm%Lx{jvYjpuM?9`?hDwYhQZSINQ2I;gWl{O-XHy%9fL09*_-cFzQDYZL9P7b>}~kMEX$mxkI>cW)#N;Lvbs{VyX&~$ zi{EN1h(}BmzgTE1OyO(tqlIJkO}=mZX9pbcuj89!8_q4H50X0(9T|sekz}J5@+_^4 zLgoT*A+jbN&Grz6I(+@&(A71;-`_XLK9>(ft%=Bu<1@JROhvMziCIKuSb9ckIO@IXCv{0= z6TJzo6RRcONNA8SDZUSSLUzZGOJq`NWEPOld-n?^!J-`FyTx{pTgrO*&wPFgT$kG~ z&rg94+gC&@C7*O#UaI?$TWN&`kDK{X?_wM#2D6>)6aDH15;1c-~wz>9ej@dr% z9i#1)1(mJLoI&+4OSVOopTGG7x@HOkbH6Z{Jew%Pl%B|1-jt)|=kj*BA@WpRr8nY0 zFqD(xOwT5FeOHq#pNwv4FH@A{PRWOoCIC6`JY;nve&fgXAGdsb7cV3YNoktSI~Pcz z@fG{j7H2nYQM?adT@V}%{Hp~m&V4)RvR`xlC?OdSjSa*|`XRHINh4bU_2Q`di@uRK z$TSn~+86tDN6mN@zaalF1G)tsN8Mk$!0V_OYw4TczKn~Yd2$W7jX-|qv^}Oqu3`eYsayf>1G|6|`Qx^Zj?3tbsOLAtH=m=Pkic$ZdV+84dnO-Kgnml) zL5z9;IyLG6NB$-|mrFygjNtq8*Z6OQ*+NBO48MU}hmOD7R4{qYyWBi%T-ANS@K-~n zf&9=)?1NdgujePvIZqL=!uq&kvf?sBvR-9HJL{nTZ*$h&jJ0WFQs1T2OTC!-CN)oL z)8wLwa(uP;I`OXfsfovuucqb7BE>mcG%=8VMX#Z!!g7nWbAIOocA`UebU;;~BfP=P zWQuVGg>ym-e~y_=+|!q<%{9)9Aj24e>&cPa2zDuZf>VX7j<$Xw0WVO6H#K0jzvNro zXO(@At&1&AID>d_YdVrh08al_;EOavbm|(I+RLJswj*$aWJ07U_C9xs9|~l`ezsw@ zZ){I&XY73(UVFGLjSohR(0i^qIM3%XHGx}MlO9ARfJuHZ6^M*m7@|OP!Qb{1coP_A zI-;blnMiso>bMh;!C3A+4y|5Zf2yum!sJELDKSt46``ARl?5|%pRD0oZL;2FR>?e( z(Kw@dMqtLr^gZCJ9-Cf0eRbOW)a@yQQ|6?6Oc|28G4(_0<+KGE`&}R8md04G&8(@< z)bDxsu%`X7Z&klHKFuAz_TIM6HV621_xZN;b0KcCiLFkLNB?Uz<}D+zR~e0dO~oMF zH<3I^?O~2^*4Ja4FtW z#w%WVi(FNHDov4!g5!FvxK+F$I>qu*ZK`JHs|- z&ogZhCEo&O;t={2I2dEd_GD@BrqzQ5X(F2#3fwL)aw(a>-^zSIE4-U8E`&l-Z-wHv{Va9Qja*2YFL4baCq8}*?Vz$TYLE+i|EX~@w22;81fWar(;$IS#jPkwKf z`O3VD%+*u#IhLo$uf8)ivjXydN0BdVK`g-N;;3s3M6tq@0zUFB zz?BRI!UGA6vZau*jkp9xnYv!hJdY@TGgCIUVeU-QmxDht9hv)Yv>@%OI!X;vuP8H6 z+YqEA$*1L&a+uskE-wQ^M#_+qB^Rn0D4>o8$RTn|ytY?PmYXVv!3DZm4bWz4@4$Y1 zMsI+;_b_Doqr4T6g|15OAWI`ZUjcdh_RP;rNA?O^gd5A9Qx!nZq+N73W+QVSwIcrDF73z8 z1ZG1dyN=z-9s-;CI&jHWW6J<5xHH=fT`6~=vCqI)Y>DdD045#v6H}q@3erhb0(F8K zOU041$sXW+lfVyG0nBf!kyEXLEbnb#uucNKcRA=}y`xu4E#U8{g(HC_Xg;7JBkM^M#GPAh8tV~V@GZ{sEOXb6B8OR%iqIY>0 za;wqC2-HcmHZrxr;O2cOe})>H>2-vvw*X8xOeb6Yce zYx`5%Eb!)zwGTnZT{VX&G~p&-EY$>C=>ldPeVXizTsXMBQMs_o8;`2-8sKsqOKD_F zDvJ)`4)KMAar|j+GPjqz%AMdAbJMsrTp#XxpgqK+zv3YH@M>c$iqLDNy(@qvMWTM8 zA$SbK$SOdOTL$FYakyq(I9{;ZUZWcKIhTi@#6RZ!g{DF+K?EoA=kzV09`6UHSq-Wp zwU3-ixXiUiBDDEhGt0Xfh?LLGi@0Z(8co3*YGv(Tm!x;6mg5ersn&w+a?x`b zlznloWv*_nN6rq;TUiZ(4IPkKF{4z**BL)$6wQp!n3{1cJvQx&^pK3HnboqytmSUI zvd&yhFkXidW1OILoa99Nb^9L2E7V!Nu;+FhwimH6m=BV0=1rJXT*EEi%Ee=+(i~xe(ly{=nSBY|5m<;(N`HvDxfy+d`WnOch!PkwT&%2!*+$ zbXQ;o_o4)?o~EfV4e&s|SH@dc{4a!I$vZldIA?}>3IxT0OJ zT#+u$RT@k{iRlXwDGE!w30{n^(+Z}=r0q>l$r$e%Blj{*)KGkm3YSxK7QfhD*JqIL zd342HwO6%u6lU>ZTuJUYca6)#wj&Q2YxOxs6YosI0XF8+zz7~kUZ+GR0o`3GHpy|( zm-G9|H_WG$&qSZxz;w9kv)j%Hv)FLt(u2^kgentnZgU6tZL{<+{eqriob*m4pHWxn zCv;=FFTIIb%HOQSps+#}tg?k6r15rD9)FEUqUl*yQtaX({J zMnZaM#x4W2oTTBW(DrfG$GkGjM-vJ|Z`wJ;A2;uLlSEIke5 z>MVN)+Vu^cNLIvE_CvSdVbqHpK-J4+?%D8_jq8PT1?nriIwv~^Iv+bfI?FgCvsz}UnZ2@VIBz*aU9DV4 zoxV=mx!ifm)yUIE($#TZf_g@V0sZtSrLmQT*0v8e${vSo_Xy5lyMoyb)x&f!x}=|w zCo$9Q^p+vVQB~;o^g*UI8^gBY>hev6yf)hI@3`Z5>^Nt*7#(A-qMnb2NX!=FX2st8L0PvITApZ$i}K$QeO=^5DV zJyE@5@d|zqdpiP*+8u#>Sp|0J7sMmf0i8AW>KC-8T4!|ZM{8%*mWoTVNxekHbHOv+ zQ_u6>9pUzKpL2cbD&-pNYV2-|{bA_+o8aoX{v!C zRv;rt9=20sx)jrj9mLf}m1$T0AeY7tU`qi5CpUYI2?2ZFWa77w{ek@w}%cH0OHv z7WX4}ZBMvorDvVzyyuQ*y=R!Gk7td??I|i&M)u^ir+{akd%wH9=Z$Bx_)MCutktTS z*SrP6eB6h4MD9fFbvj!Nm9DF~f?N!{3s*l6yNlV+yoXOV8C5*DP%HW+y^U_j9APN< zW@9-Yz965U9|7O57qTQD15Ru^KtrO7_z2~q=A zC_&uItsE)zmz&HT%KSnG3A;QRFnt)0N1diItGeUevx>Nat%&S=ku8 z(UF+JA7MVKMGe4JSPtIp&D2(EB{hO-f@pGXDvi8=PoGZ?fxnaoC{gcmRa&DG^$zsN zD%A9~@aFTrF(cqDzC#>(C?aMK<2@>ydg)$mtyTeO6RXvMYE@Kp?Ni1n^%YLJEJw(F zP>Iq)ZYEcgIe3!0q%G10X`QrG+A8fvrem*kNIHT&VNy?NymUb-C9jqXpq6>8np<0; zd9)#Vev6UYJn9{dnP@h~)d6ZA-GOm3qu9r6Rd{~{>g`vc_V^Yr@{NUY@DZm86NJga zbYX@tM(B&~w*VoLzr&yBH^YX{$3Nw^aNluVI0ve*`>?_6Ma;zpbafe2>Mo}`VctFo z8Ri8~+ag$mf$)*PL*-&KZ*6a7)Fr3G*GV=dK#;TEyx_a;2Ys>uXx2}FKV1vn;vt~w z6R^~qkORo?pj{5Y%Z-HxR3BF<6j-K(sSv6PRhr6A>EzGkLGlM&-^%1uR3FxXAM_g9 zy%}t&Q6NT+GTMUeXDj$6?rRIR_L`vWR?7kJqK)E<3b#x0M7apMfH%Mz{Z?uNd*G#b zQamfhh}Xr-;uZ0LlkXGHz?W z>Lm)3H_16vH@X#5gpFnk09hmtAH%m3)?%3=3>B6OSA9C7Lav7u(2RY3{WwDJo zi95C{P^s&JdAbz(_Nt(Eb}8yi4?q(8fa{(HHq&CLnXQ8?+6wqRPE=$!#t7Yn*hdx_ zfN|T58jSm33l)t{flJg$Y8@ENds1~M2WsDzfEQjw9d{Ghg7ds3p%=QMn*5wG-6&_= z(c52cD?Q{vIEjoEu)H3Ht9;=?unbXQ`z$ z7!i?hDMDH=9hIKIM~_49?vdn_ip!Jb`*Ky(n)|@b<%)?MjMlJd&LL%zmZaV|-ouf*?()orO zj_UW;R9WZ=JHEpW&wd8k2>$I|T$lQg?+;*Om+|Sd%)031{@$np-LP37kS*gGsK>vd zeh=(im+})ZMe8epN&>nQV!#iwMV=$~l96`*Zqfl5V1-)=xxQZxJd!dogUziI`QA#+=_v7pFHVlsEXZd7$;8XJr@Muxr!j47{BZQ2^+c!k)klV`b}Bi|9S0+m9&pwBZFN8t~w%I@MiAy#so zpU-#UNAkycCy%^4|0BPHe+N&}27A2&UkrR-wfLg^GcKHKkJ+vS=Vgzwoe)8J&D=v= zz6&1W<9S=!v0}}R1Fbezt-idkHRp=XF zd%Qs1xW$d2VI&L#-@JjE@RC3xpGh7EZ%+(#@qY3yY>dk2#i)tag?pG)&tTt7vKe^i z)1X}dHc0k@{1}*)1dje%`3|$=SwvgzA(xk5?Sg)u ziz=(N)6Qt!^?b%nL|6uyF=l6280kRLZi*VolJq5dHd7CLHLL7ym1pGjjq-$pD<g-)_Xao};hk7j)bd1P9Tu zY%4DeV|EF-8n)VKM55b+3#k=Z9{T7$IsqcV?b9D!L<(}bD`2%X^3v!;n1VdF-F$(_ z>LBF3ll7la$J#+Jt&8Z3`VshLjkWxmTYaP+#CV*6X!Uq?q#6p|rg~~ESaem?>cE1l z51+ZE`VFqgcy+4!qqkYT z!Xpm>cTv3A1fz){rV=cEfeF0y2UJ;lG5UyGFiViTFqqHTN${QCurzp@IF5&vmY*w( z=>BIMKp3(3LSv+{4`89}WY*Z((&!h4#*kJN_Oz&(;&mFebl4jMnOanTYK*=vq36?xbjFgxAPaDCl@f zf;IdL5c-d!n_~j*jdI`?5z)7D0{W*TYK~G6$z27;r|R(6pP>qSHZomB4Uc|LKdP_Q zXX||thZXeK+Bt2j_Jj7V))8JwNyN2HH4aroryN<5HrNChF%)6%HFVOHY2hf0IsR;%}em9CIeId3-B0S z1?xv|+=(TrN#L{cQVr-ikc+@qF$q>e2qlqk$+O@- z=m1Z`;)Y1X7`_I7Vj=N8EJgS&Vo8gYt)=mxui{p-MM(jI*`Wzomv zM(5N~bOo(Izt>>Qu|*Nn`+%ACDEc|ZqdPFfG||U)*qCc{F{&HI&==^`AHeRIpm)<7 z!SkcGidJ-@)>} zf@}+86fqhb{SfImX*@$tKi0@HXs~pK!bXq4Sy1S6x_}v{Dx&cl@jGiHPPPMHmY1xC z{);u#5m=>HsQc6hN}&WGpcR1?QIIZ8SH@Zh8lf;=N@D?vMqcM zi?7R<+%> zC*r1g;DclsZ;>@W3nr2+h>1@yIv8buTpg$1)}v9!8?KMRDEtzL;la=&iP}r;mG)js z)ntta9!x&Hm|j7ztGCt%Vf^pLRq^O{qqI>Q<8=V~5w{xGjd+7M%bP>PL-( zRA#{!h@e)%uRTs(r(&s8a6_h2>6ApVv@h+4_+mkLdez{M6vclc^%mKJ3-BG*QQ_1S zjNP$RZ+H}?fq^d~(sKtodOQ5>srY6q-j={2?j68E$un)x|lC%}`;y}b7 zYQe&0k=?loc8Rt4O%pJecftHt6$}wRrizhz4PBY5VI7Z0Ot6#D(5PsXG>RJqfWyM0 z{v-f8qngnK5(-6@ya$eGhsU8fdXW){YNZ(Tc0R!J5u-3SSU?(?z0o7P#N3FHcp1DF zD&ksoFt2vcj>gPEPu)SB-5X>(OMu6!AI>?7h{2tx5qS_*sDqxdLCD3e!(4raya+9E z4PMpd?8j$h9Q-RAb zc09JHVVRY^%*K%sR_}m$3>~5O%vwcMR6eRcNq# z7$J`k2Y3gqmkIsr2kWRXetlWkNM*294CBbUKkbOKx`<@L>YROv$2aI6e2%*{9{b|( z?w=v4TllPV(3VFK%UO-NX*Mjgp~%O!Big|8sD^pS;&USi3GpziS2YnlV$Z<_a}ze& zX~ZQCz?ZgoxOTwa+Jvm<64-LH5lOcCUc6@QN^O;*@Jhxaaq+4G8Nw-{kqTEi*63Qnu;vqjgT1Sktgtj~2U{B?&hktzYECYHeG;%94Wh z=)z*{v3_d~lb*FVXR(g3_E{3JR*TEbT2;u*x{B7en7vw$mQ=;;)jHPV?6a}%}A|CUUwB}Y1zd_EnOBb%J}eUj0q@3KZx&i7c) zIgHryVsQND7wcaC+ltNq`hz0)2mi8RPN7x) ze6e&60`b2-T3i3zf)vtH_e~C?Z0lv-)-dFv%kOlElc2!I^wVVpQB@PG|q1yf2*nf z|Ju&co4-BRe{TD)Na?hzALakY|No~?`0Z=fHMXwizh?R08@d0Q UPtH*n text_only_tokens # test_gpt_vision_token_counting() diff --git a/tests/test_litellm/llms/vertex_ai/gemini/test_vertex_ai_gemini_transformation.py b/tests/test_litellm/llms/vertex_ai/gemini/test_vertex_ai_gemini_transformation.py index 8c1de12e7d9..534fc96dfc0 100644 --- a/tests/test_litellm/llms/vertex_ai/gemini/test_vertex_ai_gemini_transformation.py +++ b/tests/test_litellm/llms/vertex_ai/gemini/test_vertex_ai_gemini_transformation.py @@ -15,6 +15,8 @@ from litellm.llms.vertex_ai.gemini.transformation import ( from litellm.types.llms.vertex_ai import BlobType from litellm.types.utils import Message +from tests.fixtures.asset_server import TEST_IMAGE_PNG + def test_check_if_part_exists_in_parts(): parts = [ @@ -1669,12 +1671,9 @@ def test_gemini_history_nests_multimodal_tool_response_parts(): ] -def test_convert_tool_response_with_url_image(): +def test_convert_tool_response_with_url_image(asset_base_url): """Test tool response with HTTP URL image (will download and convert).""" - import pytest - - # Use a publicly accessible test image URL - test_image_url = "https://via.placeholder.com/1x1.png" + test_image_url = f"{asset_base_url}/test_image.png" tool_message = { "role": "tool", @@ -1697,30 +1696,23 @@ def test_convert_tool_response_with_url_image(): ] } - try: - result = convert_to_gemini_tool_call_result( - tool_message, last_message_with_tool_calls - ) + result = convert_to_gemini_tool_call_result( + tool_message, last_message_with_tool_calls + ) - assert isinstance( - result, list - ), "Should return a parts list when media is present" - assert len(result) == 1, "Should return one function_response part" - result_part = result[0] - assert "function_response" in result_part - assert "inline_data" not in result_part - function_response = result_part["function_response"] - assert function_response["name"] == "type_text_at" + assert isinstance(result, list), "Should return a parts list when media is present" + assert len(result) == 1, "Should return one function_response part" + result_part = result[0] + assert "function_response" in result_part + assert "inline_data" not in result_part + function_response = result_part["function_response"] + assert function_response["name"] == "type_text_at" - # Check inline_data is nested under functionResponse.parts. - assert "parts" in function_response - assert len(function_response["parts"]) == 1 - inline_data: BlobType = function_response["parts"][0]["inline_data"] - assert "data" in inline_data - assert "mime_type" in inline_data - except Exception as e: - # Skip test if URL download fails (no internet connection, etc.) - pytest.skip(f"Failed to download image from URL: {e}") + assert "parts" in function_response + assert len(function_response["parts"]) == 1 + inline_data: BlobType = function_response["parts"][0]["inline_data"] + assert inline_data["data"] == base64.b64encode(TEST_IMAGE_PNG.read_bytes()).decode() + assert inline_data["mime_type"] == "image/png" def test_convert_tool_response_text_only():