From e746450dbc1d085b61cdadbadb1c8543fec5d744 Mon Sep 17 00:00:00 2001 From: Jacob Cable Date: Tue, 25 Nov 2025 18:33:26 +0000 Subject: [PATCH] test(js/testapps/anthropic): add anthropic testapps --- js/testapps/anthropic/README.md | 67 ++++++++++ js/testapps/anthropic/package.json | 36 ++++++ js/testapps/anthropic/src/beta/basic.ts | 76 +++++++++++ .../src/stable/attention-first-page.pdf | Bin 0 -> 92454 bytes js/testapps/anthropic/src/stable/basic.ts | 51 ++++++++ js/testapps/anthropic/src/stable/pdf.ts | 122 ++++++++++++++++++ .../anthropic/src/stable/text-plain.ts | 83 ++++++++++++ js/testapps/anthropic/src/stable/webp.ts | 95 ++++++++++++++ js/testapps/anthropic/tsconfig.json | 14 ++ 9 files changed, 544 insertions(+) create mode 100644 js/testapps/anthropic/README.md create mode 100644 js/testapps/anthropic/package.json create mode 100644 js/testapps/anthropic/src/beta/basic.ts create mode 100644 js/testapps/anthropic/src/stable/attention-first-page.pdf create mode 100644 js/testapps/anthropic/src/stable/basic.ts create mode 100644 js/testapps/anthropic/src/stable/pdf.ts create mode 100644 js/testapps/anthropic/src/stable/text-plain.ts create mode 100644 js/testapps/anthropic/src/stable/webp.ts create mode 100644 js/testapps/anthropic/tsconfig.json diff --git a/js/testapps/anthropic/README.md b/js/testapps/anthropic/README.md new file mode 100644 index 0000000000..3343b90ea7 --- /dev/null +++ b/js/testapps/anthropic/README.md @@ -0,0 +1,67 @@ +# Anthropic Plugin Sample + +This test app demonstrates usage of the Genkit Anthropic plugin against both the stable and beta runners, organized by feature. + +## Directory Structure + +``` +src/ + stable/ + basic.ts - Basic stable API examples (hello, streaming) + text-plain.ts - Text/plain error handling demonstration + webp.ts - WEBP image handling demonstration + pdf.ts - PDF document processing examples + attention-first-page.pdf - Sample PDF file for testing + beta/ + basic.ts - Basic beta API examples +``` + +## Setup + +1. From the repo root run `pnpm install` followed by `pnpm run setup` to link workspace dependencies. +2. In this directory, optionally run `pnpm install` if you want a local `node_modules/`. +3. Export an Anthropic API key (or add it to a `.env` file) before running any samples: + + ```bash + export ANTHROPIC_API_KEY=your-key + ``` + +## Available scripts + +### Basic Examples +- `pnpm run build` – Compile the TypeScript sources into `lib/`. +- `pnpm run start:stable` – Run the compiled stable basic sample. +- `pnpm run start:beta` – Run the compiled beta basic sample. +- `pnpm run dev:stable` – Start the Genkit Dev UI over `src/stable/basic.ts` with live reload. +- `pnpm run dev:beta` – Start the Genkit Dev UI over `src/beta/basic.ts` with live reload. + +### Feature-Specific Examples +- `pnpm run dev:stable:text-plain` – Start Dev UI for text/plain error handling demo. +- `pnpm run dev:stable:webp` – Start Dev UI for WEBP image handling demo. +- `pnpm run dev:stable:pdf` – Start Dev UI for PDF document processing demo. + +## Flows + +Each source file defines flows that can be invoked from the Dev UI or the Genkit CLI: + +### Basic Examples +- `anthropic-stable-hello` – Simple greeting using stable API +- `anthropic-stable-stream` – Streaming response example +- `anthropic-beta-hello` – Simple greeting using beta API +- `anthropic-beta-stream` – Streaming response with beta API +- `anthropic-beta-opus41` – Test Opus 4.1 model with beta API + +### Text/Plain Handling +- `stable-text-plain-error` – Demonstrates the helpful error when using text/plain as media +- `stable-text-plain-correct` – Shows the correct way to send text content + +### WEBP Image Handling +- `stable-webp-matching` – WEBP image with matching contentType +- `stable-webp-mismatched` – WEBP image with mismatched contentType (demonstrates the fix) + +### PDF Document Processing +- `stable-pdf-base64` – Process a PDF from a local file using base64 encoding +- `stable-pdf-url` – Process a PDF from a publicly accessible URL +- `stable-pdf-analysis` – Analyze a PDF document for key topics, concepts, and visual elements + +Example: `genkit flow:run anthropic-stable-hello` diff --git a/js/testapps/anthropic/package.json b/js/testapps/anthropic/package.json new file mode 100644 index 0000000000..08e1a0d2fd --- /dev/null +++ b/js/testapps/anthropic/package.json @@ -0,0 +1,36 @@ +{ + "name": "anthropic-testapp", + "version": "0.0.1", + "description": "Sample Genkit app showcasing Anthropic plugin stable and beta usage.", + "main": "lib/stable/basic.js", + "scripts": { + "build": "tsc", + "build:watch": "tsc --watch", + "start:stable": "node lib/stable/basic.js", + "start:beta": "node lib/beta/basic.js", + "dev:stable": "genkit start -- npx tsx --watch src/stable/basic.ts", + "dev:beta": "genkit start -- npx tsx --watch src/beta/basic.ts", + "dev:stable:text-plain": "genkit start -- npx tsx --watch src/stable/text-plain.ts", + "dev:stable:webp": "genkit start -- npx tsx --watch src/stable/webp.ts", + "dev:stable:pdf": "genkit start -- npx tsx --watch src/stable/pdf.ts", + "genkit:dev": "cross-env GENKIT_ENV=dev npm run dev:stable", + "genkit:start": "cross-env GENKIT_ENV=dev genkit start -- tsx --watch src/stable/basic.ts", + "dev": "export GENKIT_RUNTIME_ID=$(openssl rand -hex 8) && node lib/stable/basic.js 2>&1" + }, + "keywords": [ + "genkit", + "anthropic", + "sample" + ], + "author": "", + "license": "Apache-2.0", + "dependencies": { + "genkit": "workspace:*", + "@genkit-ai/anthropic": "workspace:*" + }, + "devDependencies": { + "cross-env": "^10.1.0", + "tsx": "^4.19.2", + "typescript": "^5.6.2" + } +} diff --git a/js/testapps/anthropic/src/beta/basic.ts b/js/testapps/anthropic/src/beta/basic.ts new file mode 100644 index 0000000000..d1309b3400 --- /dev/null +++ b/js/testapps/anthropic/src/beta/basic.ts @@ -0,0 +1,76 @@ +/** + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { anthropic } from '@genkit-ai/anthropic'; +import { genkit } from 'genkit'; + +const ai = genkit({ + plugins: [ + // Default all flows in this sample to the beta surface + anthropic({ apiVersion: 'beta', cacheSystemPrompt: true }), + ], +}); + +const betaHaiku = anthropic.model('claude-3-5-haiku', { apiVersion: 'beta' }); +const betaSonnet = anthropic.model('claude-sonnet-4-5', { apiVersion: 'beta' }); +const betaOpus41 = anthropic.model('claude-opus-4-1', { apiVersion: 'beta' }); + +ai.defineFlow('anthropic-beta-hello', async () => { + const { text } = await ai.generate({ + model: betaHaiku, + prompt: + 'You are Claude on the beta API. Provide a concise greeting that mentions that you are using the beta API.', + config: { temperature: 0.6 }, + }); + + return text; +}); + +ai.defineFlow('anthropic-beta-stream', async (_, { sendChunk }) => { + const { stream } = ai.generateStream({ + model: betaSonnet, + prompt: [ + { + text: 'Outline two experimental capabilities unlocked by the Anthropic beta API.', + }, + ], + config: { + apiVersion: 'beta', + temperature: 0.4, + }, + }); + + const collected: string[] = []; + for await (const chunk of stream) { + if (chunk.text) { + collected.push(chunk.text); + sendChunk(chunk.text); + } + } + + return collected.join(''); +}); + +ai.defineFlow('anthropic-beta-opus41', async () => { + const { text } = await ai.generate({ + model: betaOpus41, + prompt: + 'You are Claude Opus 4.1 on the beta API. Provide a brief greeting that confirms you are using the beta API.', + config: { temperature: 0.6 }, + }); + + return text; +}); diff --git a/js/testapps/anthropic/src/stable/attention-first-page.pdf b/js/testapps/anthropic/src/stable/attention-first-page.pdf new file mode 100644 index 0000000000000000000000000000000000000000..95c6625029083261ad2df5b6c7e0b8f48e3e67b7 GIT binary patch literal 92454 zcmb@tWmud`*EI-%5Zv9}0yNsV26uOB+}(o**I)q>BzS@b_YmCO-QC?`IyvV&$@|SS zGw->s;ZN_bx~ppKz3VQh&0187qT-A!Oq@vYR9Tgs(@5|vq|BuDMpj7he0%^!kh!Td zDJ!@|nG~Sv>0k1AtD9FW>R+NX8nU#Zug@u!agPnt&oeuEkXScl*Ef}k%t1TTs z(aGM#)!6hu4S!DibJ5>$>|9LkT%1YSxPCzaPh{^PV(*~?{>DrSWML)cHb>{aar1OOuTP9~;Ke*t3A1HAcZfm5IdkOW8plueCYbV%7)IheRPI7wOA zxR`)!+{`SbY;2rN+$^lz+@!4RoJ?$7Ks|tptC7pk1j$<3S^tGh*v`)0T|S%>1(jj0&8-{}n3E|BlMp)y3J` z)D0Z3e~XKSn~9B?`DbicfJ{H}v9qx-v2y%E3XUWPkdvGHe}(Mlp801d{gFx|kcA1z z4&=(p%))MG>goit`ImuXV`t(7a{UYw7$6rb7$7_N1!QL>W&Kz1xc@smV+;GA$ZSkO zPIi`d=Km5KI|n#a?7xt4vi=MrI|nNhD=XK(#K!XT{rWGlbN?ANpt-%hxsB<+L&gFG zZ!Q+_?&2h6;bv#zW@aO0;pAWf0@;6Nni<^5&h@{{E6blp+#iXxakaNI2jk-~H8TUh zc$RMe79uD3{p4T=CzgeqgNd1$75vEz-hp6T{}$n&XX+mat?a!_&FtMRjlF(`(bU7i z#@^{)=a_|?jfsQ%=l=UAkgUw$*Mj5Maq{m1`R5TXZfOHP-2mb?;3Hhr)Y#qxd={D7 znY&n!vVlV?AmHo*KE!R2;62i+@p|JYxUPmYZfGS8tKDR3L*PF8gDmhPc2gjb=?e-BWfLCr}f(43W zEn{eAI#7yfcxz^ve^ZhbJD@e6LDiGYVWD9##<{YcX`g>)LV5%Au6;wGbhC@ohY&0` z=*m}$In{+p_?mw8z+8k2g8sW#fig5geq;nZgI0(Scg%G9JNJyY^T-bG6E20jzOkN? zwuazxS+qck3mOyRfm4O#WJ3f}f5)pQYsdE9c_q9Y*W=N*i8bP?z=>k}5^YzJzn}QWuO)Bex^+ zwI@3sFP9^gG1%`MQ@Wgk2xKR}T8CpkEI{+MvK+XbbFbxfaZD1d31Vb#5fB`$9Qw@x z`L+zK?%u%QJ<2H8N(9|~@mnQS@uVLMnwM*%m#N9!VM*tJ$8gN9ENdvOj_d|OM=#=T zeR>RR`_O}*a7Pv=)#Pq&s$^UuUtAH5vetf@o>?Xn;Wh6@P)ye;F8yIZZ0%!FHaez? zT&28zNbfxLZPcsP$DnmgjG7>g)^hbiR9V9=Eyq!u%#lt3r|(-9oL7g2p>#vI@JIUx zA=JlmOUNKjPVVp1gqQ0>u8@W$!-mPgIwC~Km@Kmc6eao>kB|sU9F^C|ORJ;LKJ^|x z*fM=A=7isDy0SK4e4y|K(NG955Z;Wgn4uU4!f^V;1{hy(Lb??+ryEWn%V{XHANNI& zzdGryKoYaF=t@8DUqe=B9B@Yl<_Xmm2YpU85BV&ElP_^fgNQ&6@%-*wBjiZu0zdrA;cirb#h^gYUr*|L0Ts@ZYI2P_TO zd^rafC8vOFC$S?g64M9vESYbk1v^%Oc}o6A*;caI%x%@PyysM z7my93m(x7XKy)T{c;^ns3ufzAH@@k%uUMokE_{~V@b1PS0m0&rDGvc(Mq9n+T}!Qx z4>n)GK49W|Uc1^oo~l}ugY9EDH2#p`}}iS38rX)(fl5OT@#4o3u$IQjY4Y zMf;}nGf?|N=x&rW##TY9r*^#%%53pGMVpF8?<8p5L%Mr3z`^@Cg7|1ucQp5{j9Bc` zYnxois)BN_U2hb(LV3!5p^8z(AQ4-?6Jya69XBHQR(7w6xBKqjHrJ*|Y*S)>^a|(2 zxr2`K6_u-W`PmnnBHzc(5~z5bBHO{1wj2=7C`2>mz&N1ADan+gYj7Ezgdem+obN-( z{16-p@Pos?>AsEg8`pe9kG9W@E!IlFMzXinNDq*~Ui-5D4E9&LP z-{R7Gxt?2Ph%WuP$i!QkJcg?H;K0^j$tWzorI@=OUtGr^+PqBA%#nmpM*$1<-@f4`|ubH@)WI3tC9K?WugRVsgWcS=T!J%slWy| zr=_lM{==pMSjoF*5h}83@;(+?N+Pgc9I{`X@RN%-K&AC&ZpCc%tr6xvzAb$siFLzd zV>be!JxvE)Vw51kyRRS9jzLR}z8AI3PgNkfDq@PxE3H2HNm6c@!Wu(^6%mId>CgMD z;_S)hzLED=TCG;PY&Feg0zPUEA=Yif-|uh%F{3&9Y)O{7m4pdo;$L>I3Tje$KdpOe zFU-e(JfJt+9IN*xZSYwxz-8J?N;)!}hq?Fx4MkO>UWQmk!UbZ zvTh{n>l-^q*~h(QX%WeWW_yfQ1AK{qR$1Gu3_HLY`m}VK?!^kRumj`M19=v6f(rsU zi7ut(nG?Ym09`uv&fx;D;LvJ-K`bjNz3VwCyk3%QR#D22Sb!S(Q^dm6vx0a2YjXdLY=aO`an({iFTXF zr|`WwDqcF3jp?<#^@UllT8gU0g<_yo_#A|Redyv0jbXHYH!}Vp5qmWzRU_gqa=PuA z9(uFiJrF{3=pawD)m3A%f%$!Xn)IiH%LLvA$ciapZ46nlsn!F>z1%3)t{u9@Y?iV& z%Bk>;+`Pp*U(n^U#Se#OCDBIfUq50_v1Mn6@l18u!-vWDg9m#W(~HgyTCR@LpgZwkoK37sJ4Kzu>YlEe7!Ey_DhG`aUm>~1S- z?%nAZdaSm=X~Us5T)EoGj__Swy=_$TBj|3d1x^W{5~^pog|o^RS(lDb*RpMIQ#t6RbWhb#}y{sp@$q?|*8?ox68lB5Fdg zOF2kwWYROf_tyKak>fbmsOwCWhSHzqw)k9Uep<*%kameGf~1WFd~!oOQEwv`3lrTR zk}HSADv>4BIl1`a)%*Odx^FYd5~edzhA-hF;A;EPEG?8S**c!s*{PSc*xt4s{g3^k!BO#Rsea!5RTF` zG_b`HAwDj0Sjahm4XyXqoaV&Q>uZNvX~#Nx;sli#s68M55*P#ohkpb6gY9@7lRBTw zX!EH+kfHEEgGUmjK-|-M&&x5OGTVT~L(#h}fxE+0)WPyqvCeXRudSB$=U1E#en&Ea z9}Fgr3r>gzZ_o3ak_pM-+cVYg5tFzCZ^VrX9Vw@{yeba@>S-UrIbN< z3t8b#gC|+w6y<=-$oTkq)OWkPD|mr5>bYhq1g^qQYQ&tpcV6RIU?VMhG1YGGcRxx$a0f0+C z098{D7d?Qcf{_*Ydd9~m0RH)1hWfR}KWmGCoK1hO50F%pl+uuR{YFkjixVJj>E!J4 z#scI-$_)6~D{AU&>}2Txt}KzV{49=uQOSb-eu9OS^*=S0pOr6`zltiqCe^Ssaj^i` zf&N1LKS2DC8jG{>&-xK32Q#>A<{)WmX>Q>{3glt~{Dc5@iWUG~%+$%!+1eK5VgWD# znVW+zP=9@x7})@9E$v*L0k*C-E|v~9o&YD1iKX$+V#80^KPP4c-`{@Tx6GYM!JlA% zM1Iw<7{QTX$kz0K#zzWV+p{zlwgX?z z!IQHCR9sAL)k)d8f4lxWVgSv*9RgQZ{znAoAA*6hb8`Rv1zeE> z-)#T>0^S9G-W#J`Ts0FHrv&r@$B0niC1KkUsTdcdCE<|UA)wk35#NNeOG?3pB}ymf z2Iaa?1WHP}*TT|!C*NgU^KU=+PG9;=pARox`;@&cyF91{au$4#`y9wP2U8j$4tm)t z(x&Vm9}|}fP0GMPPRW2sw!Q@vH;g-JF=VyF;OasO5SM!VBm@T)YJ_Hy$cl-O{K92~ zR%o0E&R-1TTOFpRh_oiIKP-aGlT28bBxIi=N)Y2`3TTULB?nGcJF2QkP8iU!f6|L5 z{TEHl0uT&zbdKBZT%T7EyGacdF+W3f^8858(u78gfQ}krh9=y9B*AWCMb<2i#Dv}0 z-KB$eb;A%bKG?iDg2;d^hBAb8e`n0MQuCuM5K`|8+k=9sh{=L~IaJ#rid|4myO#)y z1H>u}DH=0ZACetHU5?EvF2p{>t0?v=NPZlyy;#lr*cIfH=@!TzA}cM2PZ3Y1K|+tn zA#H{h<~X!{1OXMV4p1ezJ{J@+23@u-L4Ky4HxQv6Lz3%465{_1OF01p_ng3usi?*b z@mZ5@rR;3M5H|>6O0EYf;6aUiCm9KkvlhNj9q#Y|Q3ABsGM5pP!X^0n_ED5Nh89nU-d4lET8bgxb+K0LHhtiDVU0A+e4u4*V3uyIc zd=c`}X5|VNb5`)k@CUZtwRss-rxB{YfAF{W-HhVn=R;`zC1G?e^F`pr$ICQ>31{`-f7 zl9I;$7S^kqB1n&Cd}M(Y!Dg3Ha2}CQp2jymv>CNA%d8q~Ka=P@y7xSnwfogS*vmaF z!+mX_h-#JLa3e3wyU@keljFKo)Jrs7qC~49+rz?up>l& zU@Bfoa*@JfW1(X|zN1)BMbmfC@qxzPIw>%HTDkU%#zzkb+|OA=ZCSz=LSvq17Y_n1 zYeZA0j%Z~q=JM6S2yTVJH2n+z&vu$zFsoY|h@CtS`b>et4WwtYT60as^PQUeSEljP-9_sj}|^b)316D z2V=uYtc9w%An(O|N+FxAXYx3xeKd?+>+0NV`vb4%S-Lm1EihWG$7;4K61cvh-Es9v zOSwzQm?5K)zpEzUlS&?pP7C*xN{_p#qCuxsl=p@E#EG>pVOPl z@qVUVH2Hm&)^^r8AgJB<}b(RpS9 ze+X1u zrR3LasF}gt8@^6l`jx6iUea=dUtBOeEgG(FgXdPScrmcvQ;;Ra65Qef zr;UClrw5boy&)7r5FfS558{Z;;?g>v<*|e@7s`)v15rCc=^y=YeRX+#+NcVba*yNQ zkb4*!wf0v*CheqRRK6>)i0vLy1&S0mA54Q*)r03UAGV66s4zjigTgBs=jpZS!|S-+ z?-~W-zJuNhT@~UZLC;z2)?yFNTvoo`@saY#UFj5oIK?9nif?%)e>#)-lH78X+?P>& zxZ8@E6583Ib^}To8I@}~m%$BqRh(gcq&}y1*YW)Vffg&dN9^1(z<{CJqHwxx*PHEj z5<;FuOPE#-&EEIm+MYPvy8tjg7#+{6(a^j<+Q~LS%&AcFYVuL_$lALCJ7kxAWjIq z`q=+5H=lAFfP@8*nfS{0A>jT_s|l)|m&t!APpDbxU0(e|?T5~|RZ%JK;iAb-QQiVE zPG}2%&E<&juc|mf!1p+$9Ut7z_6RC2f>${hHGMmUKW5O{1I3279^Hq6PLVQi%4FWx zSq1P!8t0V}p_(Y2Qp1jgEMvvBVI{{w2D{}~e{wWQf42EhXhiyDNnJd>&?wIi?JCq= z3TSdxWyr?frmyNEn!68LDvg(ewvrG%qp^E=aO)bXO8D# zvpL^1dkD3u>lFh{eS4a>Uu|TcbU(UC(iYxgP=87;hL}xUhWd6gbx!JYKF&m-1XqZz zMJRKY;Yk#n>Ez;9+U}<4?&}M(c_n8!@ z=O6V?h#_SOeViE=hh~0yG#we`x+Tz;nD)c(gKXVukdGYXQ=}t`7Cy|HC@fjIQ?IVh zM~>TM5wf1;;%s8#mCnvG>JfT%YgfEiLcZt67oHin zEX}9RHtrq5vn8}K!dC;|5+Bcgfp(xemSwSH}-8vr|{($6{goEO_8O zc&|g4Gcb*Ke8|WjVEiOB26@=`G1cTnbM*z0bmZrUg?22z)B*otIT&}_#?E12D_ngV z7Go=mv`({@^tx%Tb7C3Lus_}z{Xw7f%z6CM{IX_1q`WP~g$P5u)AAKmCJLj+7az@@AdTrBA z6j^Y+8+%>Ny`Ds2-pM9cBe~EiX5rJaIrY^wAj(NCtA(W_UU$znfdJX(+mGBqTap^m}R_r*x#4#dtk zW~4u_u|W5Il54Vmk!m+ag_fWqF#2TH&%E*^qCp-dMDO3Y{WWtZk0G3FXS`{bkOb!_ zq^n?ps@2*8=3KPEU)ByQ0{ZLm8~DVD>ytAL@j7l#w+e}Vm9}`XgCjEqQUK8QjqeU_ zK7!p68j~`=#A^Ad>B<7|zHp1X;qd#ku*o3FThq!meOu|9u1Z<;)&aGng1joDA=PP8 zQ#rnu&tc!^8zyG4ckdG$KA_td+*~H-$HK!lsN~4bek^pl^;XfdU9cS<-PP#0T5|~? z*~MvWyBP@C>=1OY`=ngVcfq#n{v<7Hp|Xcm6V$U5woJ=t=?*7#^F!C^*d)+V4vmPZ zXslz^sEzC@Sm*0mYvfc6$}|dHbfjV&NB2YN2I{D|ZHDOc0y|5B@CpqMah(pAk6JWp za{5t+)x0;~=8&{pfP2%umde`HW0~i=bYY)o5!y5XNK&^&QjcVe;V_)&%0j}ebuR{P zSiRo0S%TBvU2MsPJ9+RswoGNy*veu1t-^M{j-28A=K!) z0FSskJ=N(puvZN!lJLH#6)3)g#{>%M=goJDm30dTMT2qo4M$_#qOj8%V}&3wNq8Ez|>niEy93o~0gQ-Rm5 zz!Rm#J+OtV6gqh{Q(nW@im)cJ8u`QoGn`oL7eSrbze3|PWh!UL^-S3vMNlTLQEX2q z;%z?QRY0}OgxA9U!nk$AC>Qyuf{~ezOWJBpT_1fWb>265)oM^v^Y4uVZ&5Qiajz1 zlSqDDdf0qchNDdLHD_6zy~TVb(+=|PS;id1p`GDpI~*1{XcmW&_>Nms6VKhyK#XqoZkrE_LbqBzJn|vwY&`?Bqxtd`T<~O&>-hCUL(I=C71o+CO~A*Efs~;dzp4dA0;slKhz4IGijDyfajiG~qo&IUC^VbHp_VopUvc3ap`$TcR=d zy~zzxY`iS39uq30jjQMthBw7BH0NJikcri;0o|{2O;)edLUp#%oLv&e$Nam8y8)G7 zVCe&^vc*y_(!*^9)_gv1XY?MQQLPzMxE4w2IoT@usk=pxJWBI)oThfu8fP9a%?>pk z4}=&7CHOZGZwi1qABJDOxz$jT@Or0gg?i_6j9brHn%5Lm>HI2wAX_wuWY!~H8x|`T zkX^ht5<=2)G=!w>|AJmCiTI6KZ&3{J#JxUU($(q>w)eV~o(Q!guGSkFL4JLl##h(H zk)R|&b88-%%(3&LvUq(sD=Eu;ID-@Q^x4@LB$z6MJAnd~gxnjScwp=)i1-pxqFt?$ z_vT7=W?0AXO1xrX(^ft90P`8^wksm-)W>AU%Y>`!nFp?Wut^xX$);q!Uq>Z!>ZvWh z{3!D)iy3de>=iy_GI*Bl4tmx4#zT2%K2xyX`@2pkzkReH#p8+uaX$MxYqs_l!J9d2J7y}u7|G8&zy0iHw=d1BYgvvp3E~hzyXB5|%7c5wzB%|~BvpvT zd7i5rU5U(CJ?w>+TqPfVp{W`&;~e&m?eg?VL|uxmytMZidV5i=;BYWW0jgagomG?F z2Yv4Zi7<|!!GY_d*VGH;_1>zMci15XNuIl2!ZW9mNW&>rq@V5_@nYN&$=#`M=^eQ(l7m1ue}%Qo(;q@LMT1`;HiGu*WbCqek;!?B2jzd z@Q8kO_VREPBJ%Owo+*BbDBhJ!U;EayhR!u_{{^!RK~bPm;PRD$ac_m;;)23E;uV5E znH>VfQ1+6DC)u~wlDKk(&P>E<^L(8GNAEDYaFzM(#D2Vf_T4REN}vwxV)K5M@LZ4> z(aEVEzs2Hhla0?AP7Jp1ar^RO3SHjbeEg1af@(ivF?SY)^!O#ItV_6k?8Lja-J60T z1IF%>c>f+KAr0VS#o=dfGl_4y5R7pZkF>`>FuDSSi@>RcLg93B^I|&4D(>qZm@cR^ zA3GUIb0y_HbiFoJi2EMOk&6uWjk#?0nfcP*j!XtLeGs7mOBY zhJ$sz#|0QF*x53~+d-@t2BalYcDl~>3rqwx3qrj5ehNajvTq6Vbt!a-^O-GOH!&ye z6`eI)FB_ytCXn4BsU+FJG76qoB{ETgjNbp$K_Z8-#4@Uq98p>s;W*)aDG<@5)@C`u zMn<(j>G4Tj%WbX6|J{r0Vm;%}GiBCXRS6ZP$If4j3YKp{9gW9&b)Lht3A8-&XZ46mAMEIZ_8=O(1v~Ilph;*_}bGmhR4)kKcgNuCPipbiy_5F zF_Mxtf)1rGXLq=2e?iCuM||>KVB>c72wPZq(t&H4yuO8H@AeY|lkNB>@nd%#qnXr= zmOHmdP&$b(YLv*zIm-`@vgOJcOddRL=YZ*@k07`)@#aH`j zQGV9%7JAwT3XB8wv%+&l4zX}voFifV7CuT2x4w2NuQ+F~Frc@k=fz@t!@}JQxfvNJ zsk7#x<+6E`R*iHLpNAjM>Gbh|HV?e{CEmA*l0lbUIJ7FR^#-aIv(*a7)rcUr@8d}J z@*HI(8gTOJ$9&Rfh3raCN`3E=uX;?M@r!=2ICwW#I)%?FDJW_bU!K7PC)UU|N6wp%VffJUM$^Ve zrknHaznS6{42EK-;Aj_z2qR5pSF7lSkd)nSQ93$#uV80oo@UbAGklo=pz_SH zB)e5V9K7W;x-&<;Uyt!uAVXs1LAQr0XnPwsJm=mmktn*L?y!&x^H}-tiB}Bfwn<4; zAv*Fn0ywskTnZiLf)}ZRjg7e=^f0&o!C_Z|ChUEbd=X)SgPTg3ljR3{Ep2~O~UYsmr zviB}CG~d!VkM?%UIo5`vUdeIY)LP?N825&DQN>tz0Y@}cyA=PIHZkZ@@_ocepC(LQc5vhia8(XCTNA5(*aiQ6S7YU57p7YRMmO5r^iX2F zT{KS<>A5N&b^WNC(Wel+)Qfxd^-tmB)=l(ReGvQzmb13ALy6M>P4^H9U)aHqXy}Bv zbb3Bv#d~&#y!4Itd(sy#k%P0 z_wXe@e+ywRpVRF8G31fi+lr;2dBQBJD7MTWKVI#l`G~hWb;9C%ZZFs8I*nQN-V0+M zt!S(14-LbLXtqa7FM1V+SRFgoRT_Jw?R?~*3dd4Wr*aF@__x^V6o%+hf>Rs4ztd{6 zkwDVrW^{9L-lg;sE7C1^neu+ux2!j!N=8W7vyf)y!K0z$=vZHD;-j2djGE2aifF$h z>HC)O6+<5)?zUZY$<@rsO@!_he`0v3SO~uiD6i_6i!f61F>)80cKvdhkf#uK6M9Pn zC(4hl#N11Z$IwqhCVI+Cq3$D_#S5RcglE!?S1mhl%G_$wht^ydt|xQnRmg`z2iMAm zAqGO$i$b!t_m7A>og@!mWq20fHI$|nSvi*kkiLOGiR@Wl!HaME zadLX5$1E1f&!oz<^7I7|WS@G%ZslNnVC44iS`ql!FH8KJ(!!T8jfjbFYdxMibMQ=LN=CPOoWu zjdi|#>`_c;j2A3wS|ITF%w6Yg1us|+{CE~e+LiolK`?nJc0FodHj={_oaN+kSZz^u zEekgVQRU#Wd1+BLDRr^Sv!tq?8Cvw=QrT?2K59i|HcF-0{zTg_#^v*h8;!4T+@ed! z*|E~aJK>v=(;`IuX$_8XmxmC8iXE78LPYUpK4eLC-4XPwvVLQ#j^wYM2p?`l`7jLM zk!AB+qm)(1@9T61tQ-fQL4VQL?$0=490@-D%2Mn&;%kqu93L_U^upu}r$U6aq(16d zo{gtT#%4-<{vhW3CO3cQNliw*XsU{m)8{-ky>p1rlqW&mmL+}7L_#vYswI>%RGj-u zE{l(UxeS(d$vd?#@Gnot@%)>!M~L*)@un`kzE1m9Ku0?q0|_{J{AQ>|K_2aT532j) zj~?iYpWI9JE3iaW3Wfu}_Q&SmeK%w9XH_p%ABqInjTnDP9>vV2j32&`zt!PZ5>uEf z-h|7LFQlPgENVh(7UazMBF4y6gf1Sw57ppVPK?OOE9gj?SG?C=xii~{X#`!CULb~y z!r;9VUh}rP=L^)(kMAUiX`6&<{KV~9DHGo9;$;)=)4~lB$@)Gt$_$CYMMlLv&vm2q z5|4$xv!F|=TT6(c4>ol#{D#q&x|w3efEk9DBXC8tX1A1ao@kBa7)Pk|Ot1K&6N}Rz zO^J%X`a1+yTABvp7m2y{Eymt0#BOEN}hK9of`HwtMymy$XpaQm2Gi-De{>#FGiUGJ!kr9q&qP2R`CvbuHIfHRDGv>9S z{>6H2nP;)%qzje}TRbJ1hP!x(<@rjcW1-wAMrinJ@Z`%lua3PTEL9Zo6^k8IBbQ|> zny|RYb`hj#<6PpNbKhH`4))0F)U|9zehOGyfDNdn1n}_>H+66N$`VF5F14g$JQRnq zdom5H{6Eg@CY!ZL&$Cu)DEp3>Mv+SgMyY6i5B_^6G z$Lno=otzI@0J}}k6!gK9>M|lTS~H9-5$mI!V*}|CX>71(wpmt}Ua@U(1hd9e2F_(vV971S}Fr+z->OZVlN;o5yE^`nxnhS%fkeDm8J z_<5)r3aPhWDETV4R82^YVjirs#F_KCV6usLiAUN-t_9TQ_KQD8>*q<%HqZO%1yp<8 z$&77oSq$N8vi8IeBu00t)5mPg+W7jTzEBd(|FGU7TJGqftUE?VZgJqm)p)o^z8~XT z-cgWguv45v+gv+D#a#0F)jbK~RygRt6FdH+h0r18;${WY?|;(U+1R+5z^rjFz5RC^ z2NzgD@V{vLJ>uV6EG%Hf$zKqDFZbK}_Y?mAGvW_ef0+Mm?mxQ!Fn@dS+xnyXznj0O z|L^^r%v^ux z6#Dfv@ITh?alc*V0?TyRf9S3} zCuS_*VZU+yH327({hx@ivi;rrJ97VP>%Z&(4)A<`LHPf${_{5f&J#Nj>=M|0ur}yF z*6)+x_jA9k-x>Se_Im{PPx%-r7YFy>9&&U1<25^2sRH~f5C3Jy{oWD3t^ZeV^!^}= z{VAUM4_Qo8OjA-t`n8In%zyZt_vo`@a+kl)cNWru+7k7J74laPPy^Xyc zDUcliaslsZ00>|NFb0?aOaW#9bAScFl9Yv+6JQMhGs*yV0DFJ~DGQj~MQ;Zeh^|wy*AE*B$b^Y?~A5g-7vCn`kEPvA4et!E8tqlz17lvQJ{zUR8ihsQM z3FMbYU^rlh{(=PX`h(}j3WoPzcy6rBT%?R_Krp3{jgy^}i;e3Kq8sbqqSc?ww_ilJ z|1-CLa^0B!X1akR`b*^cbI^Zfx`F9ve`M-Uk=Fk+(~Xsjg_Z3;R5wmmj{h*-SUEYs z1irsSQvV0l&8E>*kx1x0M?_FbzW9%?+6n-#;<3sEoH~3K{Wpt(Dw+)mQSxKud4`A$;z6)ybj|Pm=JV(0(}w#8 z93!!{6$s6D#XlfqJ~Q^{#xud*~Wb@BRPl|*zM5+=t zO1N}!QLT1(@nR=WH%*tnRmj~xB9dcd5$}Yg`r7SPK)}&6k<}`+)5YU6(vu$=ydi?b z`=p@C5(?BGPX?GhZ?HF@s?=WvlpH`9x+|>sje7lf<{`lP%+WKx+ma8JUIKX}gkX(h zF0uSvn;pq^BRFk5o;;d7t!#2fg7#3L(>2@IiN9fkF!Dl&OGl?p=NaWR)6NxP#E)*L z#rf7=43g__(AbA8QRq|?sK&46Q{KDSZ8-;a6&rCkG9T!zBtzrw2u1#KY;&q^U_`k;J|qaC8CQs2=*p`Z z6R5V_7AifAVH$hE<;d)qEm4M6iJ@q1Dzrw$Hh%4C zy1Jwl(;9^Qdin(8WnK3Ll<^c(#m1QOfu}nbeFLrctIddzk%7`&o{3A+xo>s5nazoD z0e6HFv3$N+qXJ}E7iO4;A2bFf#(Kn4It~R(_393g?8Eb*)v3Nxk=^rO$uR&{O`SxBfvik%Hft)SrbtHh8I z)~S0T|Mr;bJ)BFe=gEQTNN==MK%J9LLdYYPM+fED2hZ!FD%+1BiBRyl$z~^)%BlWKA2`d`uOh9)$AT!;t9r{2bgqIf`{+>v$^9DZjNMD27Nz#|UYnI5BP|%{$(L(yqq8ojdW{S) z;*RbTcC=x9Z3ttJpGf7gjfK44A9_*ADo8-1bJQ1{v>JV=;V#L5J`)Uof{p}1L%sLk z?PBYVyRPses<-vJ^41Udh+|AVR8n8|QCt*;dYqzHfNn~Sm3Z0B_FKml@tNTFHV0yk z6GI^fnnT(V*)d7)AkBM4H$zm7iBzK8DvNDeWYaZDEHmS)@ zpYN_(mfRGd$Ytdm)NYt!N(dnC0>?z`rhxm?WUe6CM9k7h$s9?~P44skn;MKjHNiEz z0+NbKP2z3bg2UtY-Qzc=iQ?Yb{;V_)9BB=MK$fA5z?iZ%yk@FzIwJ}>fU5@g=mdwg zjiv%`7obWGJ~ia0FLIRz4_mWIez=TsY7uUW;$5g^%GgP{T;#D+%r%aA;UG43$!% zbe`6<2+cm|BBF)Kj7^C3%BL9V9nFH$hy#c`Dvc=Oo2XW6V0MYt!e9?>rL%6QhXx_ z!Up`U`+;MP{wXa^Gt9TuBRr?aUYYoTB z=jq51E|d=ME6GFwyJdfRXw@guK#3A{DfR~1VW|>#z4O4e5oYelD9RTxxt$3w3hyX~ zzZ9wsDY&5Z5;?bHBFct_Fes0_N?KUg16S;v$Px~NZcFqTxN0=~IeMwejFzsDX1&Fi4Z8Wj?o!qtNn#`>n$(#B*6TG!6>6-fy!`-bIT^H6iS3Y&TWnLtw73;#qI4 znd)jw?uppVXwkKYy$$VftwDnd3AdIsgE7hSWr@x+SsQXTWnYxwT~S;2L|^LXH#nxU zCucmc=bVkbA2r;MN^?aeZL`9Mur9|FG-j`E)O%vpbXBSpexP@Ex!d@Pd9K$m1w z-@fq08jPGyWhmXAqq=r?y#D4`>3GgPeKW5bD`5e9MDB}7H@34wa%Iq4ToT^HR zv2=_Rbhp@a$0<`@nC`}wj#wtJX-KHc@O5%PNk8J;48$L;X*2U_z_-aEv=Wa24rfZR z+cDWKltQ8}TK(N7?U+2W6}g}iE}5~Mf{UexUs4(SYg_?&c1P67k@xROiSF>B6YauH zJ~d4u9^Su$Tq?sEZw~k z{YqQ|B}9K=gM0GDl}aHeQ`r6^!-3nPsuEiwUmjldciOKC6Gj`H#zV? zb9)`s@^tl=%s6G#H3)D5=@^%d-%{5B4Pyx*%{Mp-@*g$IjmLde6yzop3GA4MD-}OBc0+ml5MPy3F;o}NU?2yW5!>zTG7rEt z^cd@w((=h6NlP795ouUhoK}H~)Fa08?1Q8Ee1ezHxP50hl7(vtYRK4@bjudFS)X)e zwTMdE?`!&73y%-1S<<_xt5R>{#A{`kh}dYz!=EV*YQz1MBez4HIM?wb61geg3qxRa`>v1;Ev-^Bvr?})$(3oZ`Y9uepImC>ruiA89Q%tz0c`6skmh5x=kOS<7Vm3^5_OLt^HnB<#^2B z??JnICsa|FY-6u~!a5}=76_U&(^D(ctPsr7c6{qV05dAqk(WvR`Pq)&y*}|Wv6}p= zwR=HlUJd)Ae=FI^C{}jd#=%wWSwWB7JHqmr*ZbU#Eos4G6H)i!V{p_%PwiPlIc#30 z6!P!_+Vk-}Wr!{wt9MVern?;r^x^Kvq=5IaP*1qjCRVEQ9=`VC zg3t}2Md&6n+}G0~^=$Tnd26KBa=4Zudbvv0@$CxT^!G-Bjy`tnmPcB}gy|e#fkIr+ zl|{-0-0u9LTK2xg5lXZ6=^KqUh$hzEkG`c_38tKE@duDE1&{Up8wgM}#}sT@d^>QLA_Wq>u>41?-n&;Cp&ymm@sh477 zbdSlrRSisiv0V5OKy~o>6{>wbsnsb|z*f<9phqEqpx&j}a9o zlVgvO6v9d<9&K(QdT(j|DmocskEech-GDyz%x;rHZWtBLjYQl?0sJU5A^QceoTx!znv@P7d*K-RyJBS(X_Md-#>1Ta=yg;!XS*>Uvw_TAdJ z!$OFlR9Lq}B>lO!XfovCx>hO_glnA9U?lpLUeH6z=F^LQM313P@U8dRDZn-9NX7aOvT&+xHm9v$PtPycEVq{!zZ+%R0FpL2sv{veXwoj} z`6DsgyQe#Wb-h(PK~;+>+TuWbgF!VtCiO%!SM?qiZbPrPBp9LnFV7sV*PaVmHb8|ZGH)+QL)xi_&XY-E| z=qr(rdWyJ?A0bysgIrm_LxF})m_T^qf5z-))hf$DiEEWRd8p<0wR;Fp(pA6u^+(H_ zO)2|)RvKa20>rX;yKmWp1Ic0xI?&Z~aL+*}PE}mNtku{Hp**85@>KZo7PGehwy_u$ zE7!hge_1=(Zw2m@rjbH24UK8D(F#HCwtwf1y-%@jVp{3F33x8v|8v7=bYJVReQdi> zO=v3-&cSBhV_`e-Tf>edj&jS_nVso@sG?RxsicBH;C*~Yn^NyWY?ENGygShGRzo*w zxnBXbi5t8B4c6f4MG>rQ?G$b}fhmSCRDV7sK=g;TPk*Y57H<9EX!&idUj~(sHi$Fo zR5xWG^GU@diC7VE^C>}!gmLyvM?nq9%QP2zHc z^tU$UF!?u}oP~8ZM4^7xcO~-J&Sir`u1g47WOWq#SaJ#)M@-2~RFOKb6*N>`h>W^a-41}ynzsw?ikE*uaBCq% z#RQX&UL!}vL)Ua8B1oKI1L5l5F(`N{5Re|hDQSEl<0xM&^J8^;y$(k2ePQljjkDP+ zHmDK={{}oW28s^6&(Pvl<~a$qH&UMQ!=WpLeX!gej1pxU^?E^vr6u35%04V1cO*3$kx?UG9RG`yA9VQ# zArKnLw}XVK>?<-FLC-8*!SyY0@~zD`R$PY4z*@{97UiOhV(7D7E54tG5yk3qV(D*T zEGVuAvBHz?Q}#mtlxR~gul4TDtW39(wDc9E0^iNE+ke_@qn>tV)h0z{)DqfzM#w&i z!weU&c{whDjlRcT89K=IiFko7AVLa1zYSeI+>W^HFLpHZCnH<_Fy%f;`u=*O0@zu9 z4*ykx!P3&u7Pe(P_^$nL5)(D6wvUw|V~6#n{UX!z$(P0gIT{(Ts@|;(=?`4+(l9Jq z&N8a?ejrUvS8AaRCi(L(BFjKL1INxWchWZ0fVkw!{{5niY7F*{u4aR$IM>v5CLkg5 zTlT9?!rXfvY6Qjh?vK{*-9=Sk`^yO9AnR1E+Fm{#j#Sm5*^Q{7DI}gYe*Fqle0&%* zP=Y_Qo@HW|Zl4S`dAVVD=G6r~V;`M)*Yq}TE1Kxf9b0XxuQ}| zuVkg>@#gfO@vdjLC!B`@dcn^h!Hcr&*Tr(n&_aL2t!7m$)76D}2>1e4AS%cD%q?(3 zKfVpX(9r3#ZbVYkQRKN=rPo+xnL2zJuOm+Dxx1>4Rxhc9PWe;~&I|m&Jby;bj)(lV zTogY7%!f8S3Mz@!qy&~H=&ohA{W|j1H-A32w0D$Y+0=V^ecjIY`l*co;W%Vg38#5~ z-JojhtCPpgBqU9u>@GsBpN_ z{@mTBKK*xb2hZ;b#|?zT+QzbR{o}`g0&98%5`*{VkIGKY80s1iIoAEa%&6kYm^}Qc zsOz7ob=rHb8uOwj<@W!Md|0X)_q2e0v#Z^B9}!m&X$xxw7&t&J8Y`xaR`zp4m-9jgkA!^OYOC)gBuf{=*4` zho9Z9wxOk4TZ0V)yLOF~#d;E-+W-6%^^hUS^l~}wI#Hp_g^pG-Z}A>`l@5)f6O|(9 zxVS$=T_>c-CMFZ{p^nkRB--v5{N2jOv zL&eV>Cf`PMn-W^>KDvchS5sw1l6%hf@rV0nkQFp2rK9BO zjaFp+ju?XQ69$2P3E0|~{Rk!0PZp{25l}WV)MijhnV`=!QnyN}hP0gm85N>P3)j~# zrFgDo;6$}TVw<(iX?US}GjNxoEQ`W(?mm?N2m7bEwzZP1Cb?=2W80a1lVnR`CbY}% zT*yIL!L9Z_oE96v-sX%Y#mh&IJ({-0f)37(VQqS1JoHaPo&d*Ol zA0{E6#XeHwu4`eFFasM*N=G{$z|oRKL~(>~Q0>4(jHcn{Dy^)0cC8e7nH^Q$a~eC)Cv7Jh9*?V79UQBkNLKIC+LP)HW2&#t zCrOjwM{{#r_07}3gz)VTwlA!a{v4e&p%m40L5+o4DBfmf3a0pbfv`K_4y;Y7$wky* zCM-Ood7}9xntGXgi+^NP_y>1p?R>Om8){GY<|l9*_U@^`cP+Z>(#tHGCLT9b#Ub+i z{96d5ALquyQ2u+ndSoKZI<|b!p9Ov6ohf>*lu^6GE&uflj`*k&&FA-`hr`!a5D(nV zbYT?0xY3Lci5x(zCow?#VUOXqDZdDYHe>hB#BJ1?v~C|Z|2*f_;)r*00opFPvxUxVEM27Ga9JyTuLR$t9Qqy39=GEn6seN+#KsLw^R=mC}mu z?AHFL2tR(P3%#7Vd#q-spxLl?zHhXMD%SW_U&h}a+v~Wm7|(paKA50A&~3vn<=fEm zqDbZYheG2m=^bodmN`SS+Uq9w%W^s~)=dd&GPC<*caVaT2GjZ=GZ&jLwuekm41)cF z3}k3q|@diAMvw-~NsPtnqG zEWy7MDG1bObY|27d^3N_Bqy6Ps*x+}ScDM-fnrqWp{6`vcIu`zp-zLb+wUOEr zaJ#s6QO4U-7=>{L^}L4qtMtLhHr|C0t%0G&`smd8B_y~$KFMSY6U?ICk+2OoO>US$ zMXH_DneV-x`lrEf+jh1?Mc`71e!87e6XnWZ(ttE_J^mOfVCR(cK`J;Kq@_;KU^-$% zu4rOsj_fS?E@A~Cx?{D8ajU3TI$!7Nqbj%a!rlC)_ z{3E+N)zrJ526*x*{#CzqoK^6o2U2cnkf`J|NN9WenRUQnA2dhW^^Jw*|2{leS6UsBL&d9^ z91HjkXcHNGty&4)MbuNNRTa1#P+Sp*)5Hh^=1VEH_mJWR^AX-ZAB2uv@SL0v zfJPi-&2HwbVbjJmNhtAqX10Vay2`L@1D-#@F)v^JZewZVlnP&lzsuij)tO;`Migrd zXkZ_#aywxKec6bwUg>q_R|$=`Jl+=&WFE&`G}}CLy}nDE>uSKp-YqtL>o!hvUFGG^ zdGSl#`7Uj!`=-x7Kw@Be{E5Wrn4aHV!bA&k&=(nTMEr-PRF4y+rMMtP&)M#{TlOi2 zQ6r`8F_WANfH9;Sio1;e)~$VO)j=;-|6S>s{(9*245Q`T2(Y{mD{aZ!r-n zzS}LiBzO4(zffB;BTi;S&FiQ3mZ0r14gW`q3;wV@5)+l(M4@&Pytd96&IuH!v=Rmq za^N0QcA9arwDoUg8iN(o0#w3Q`46?R-LNOsu`6*lq;s ziSHt|#iIIymgSjc_66$Z9P6~ecZUEIR}xsl{C8!f{}e3zN`geNmO&#h$+}3HwcdDW$qjRe zu?#Pf-3TFZr+rh39Gr1)zvQ_0z@>$f2~Kc=^wZza~4%tf|RjLnmCTb zl$(O}iG+xpR9fs`UXdt&q*!ntme48gQ(%oqPlc7YSh41r5axB4hozY%14lh6o@EH&8X%$2S!FU(Xh8+3yTAJLVoW>}Slp>$BaSss@bJI5Ddyh&_2KP8;IkZMaldrAahvb;> zaH^aWH~tDAQ$1d=Uzb56n%^DEX{o5Z1S8%c91L&karJ@81eCitzy*%qI2wYbHL?u(59X+YosBXxm<%~?oR|GQ3ntVntBwA-{1`dTxbdt z?)Iqnev@^Y#aS3O+wRxq#P+gQoHH^O6$a}3JA=$dm-U$*qMFcL`qZzL`g@+7QYgzwsvh0s@ad)Bv&|A2C}QAo`>20@LshZeV<4k-3{N>;QG~$(sbx~I;T4Li-n`sL#gX_~+h1Bi?B{H#Yfw`rZ#Kc;b z#)PIQt%wk^uFMCPL@ITA${S{-yD>Z@dF76iEV6KDT8s}PL+|J%W4eROWwuL2Z>ub| z5ZHnwfjCTe8b~8rqs=_@_wFhQ@_maC?pfa#eYT8lzD`$@CCVR6dMUfIla=N^@o ztTmGIjD2ns?Wm0i&vU-j{Rb-F-f)=Ijpa3~NwJ^XiNeA~x=2?gxds7n7}CuvP24?{ z4;~wM8zn}4_n1ox>Xp%Su9+&AwX!Xt>d=@J4+r4P5vB*#tto^&y9{mpZ4ED57veQs z&tzP!m=2j!_v0mgdIIZ6A^#c9B4~zb4aZnnt?0GU&hf)`Gzt)FY|Nbc7sJw`iW~E@ zF7NavZfxn;+pd7aNrau?+S}N*nPi>sH`B83>X8~L+R+JyzT@_lP=(M1Fbp;ycBalS z**vXn)iF8bELuLhIP#W>&=vaf8z5LaA$4P9F%LU$py-z>xj~HmurZx=7~FG))=wuc z&PgUDr@vx&(+;zjTw#rbVpAb>a+mvK{;AKC<^1BENlib_ue(QSR5`Aa3<+9g1D>#$ ziY#i#jyos_BWH63BQNSCir6WZL3$~8VVVztLug;)M-J16Z6=(|^(pu9!GpJ~uqB_Z zpokvAerN7OOA)6CwvOcG8%7>IvuTA2erhP5xZ)Nn7m=79Ur>(69kf7o@bWz=JjsMi zyxSF79w?fjg0mNvfP6UH?IKF+sx5z)mU3(_2$y?75+JYL{#DWfai|dY_KAT9)TJU{5mF`nC5Hz-JQptBvGXX6o)45f zXMeF)roX#cc!#8LUZ2R?g0*PzT8tu#C@$DkS`AB}|8)Zbl^0ljla&CVy*MW6R#}lf z?4{}1HASRj58Ey4FVWIs<%S+#bdC3ZPYerPm261{u{mw<9(=(UJNkKk>&#x$+acwr zgNgtS@FOgDwW@yqxW$ij;M)JGSALc1&)A7n1HbH;VjZQ~cOifms!c@}vK2nLqz|Dg zOh?(x^gBV>Ev=-q(k$B{C(FFDMLsJm=;n9%_5?MOalTQIR8(oaPoZf9FFU=`a%(0S zlgONh*$1s1wt%1y8q`=UI$safa`*0`FZFUn-* zTV@X$72jMz~B!tZ^40XUj=q~)Y2nZdZ>C^LdVO;CV~ zR0@)A3s(p|Sy)#TBqlHoFhr>RZ@~F*srG zl*Idp!q`iDWA;SQvRiFJ^)gS+!^fMVWf&5=RjM$%f9X&hpA`E{y&uU&a?anDf46Dd zIJXnXfjLf6@(K-2*e9|U9`+UYy|`uI94G|to5VZz=*21s2xzS&f8i_=9Mo+n^rHwj z?==usTm&*tI3n+=ax$70G{y$+O$3>Dh6Onf7c`8blXUjrf5S!=@t?g&XNt^EIa~Lc zI;eguL#;Rn2u#n5zsn;gxW=4XC8udT8F zE%r0e?gT&cWR!kUOCT>HB}&B3uOYW}K~~0~QM9oS7mE}cRBY;rzQ~eMW|MVDN$g;s z+7USgn7Q(scUFS79w!RdkSQ!tn?kVtf(DpdCY1qW;SEsgF#1O2y{2|DH+{30)wp8^ zUTaDLg0t%V@IkgY`rkL(`W$M@og0ni{nam2Pkc7EM}jBA#S^_Nsw&R~?nGDeA=mA$ zR#L*{`KT$Ak8T8><7pLR9h19-cWQ?Nb2SG#76~LsKS@UQ8%!wBOZNHS{!uBRYJA6) zj4?GmmJD(A?p>re{F^)Yx4X%Xb2MHnS-2)gt9t!<%>trDE_3DY_^0|5szL&*GFESL zTMsJ?%lKIogc5%g1C%JT^~Gr3kXRxr+kk6FY;cW^!b2IY(uzuOUsF`1z~nuZc`3cN z7W63bebRYO;RJQ3==KZ27rI}^5UVc6rJ2fwL|42my4Avt-1EQQ5(j?b3AzD?tq(n# z9WCFrxI582-QgxOm{JxyKam5?gzpyPkIk4BM$Q5`oT|NvSp631B?+PA=E}_cQ*Wsm zd?G1fp1XnR%9{d+EPH*({(>!B{!|8yne1quk(1e&wvt*pxBp+2FsqWm5V-em`PJsRbOaFCc-L<~JacPv-QB#vz=qRM0p&>2WQ7YxDj6*kXHskf zN*s(q@b(_phR*E=HY^U&wUWZk3V3PmXdDQ3fm2Fy*^SQUE8dB48#%cf%_g)?GFTfp z6RxYyC-J4Hk|Tax52M_RE)R{=zCd4>m@Vn{i0E{Ru$lp~+4;~4g8$)KkRN&J z>g_Afs7O=)orgsS+3G^uyGh-`eCvQ984Xf|DRgsJ$RO;-G;d(pau~!W8y&=>@pzET zT2*uU`rX>pB|`%hXVi*+d1<97V&5CW!_GKe7*o9VMS`d`if**VhEcsnLyK~dI>3mX zFgjroK&4~Zjq|NPPl@n^sIAfZ1_kv3$6V)ASs!=j>!~YRay-f2Oe3Q9VJI68O>W>G zknOlptkQi@;oXOH(_*n#UCRz_n{*Y);wyflE<>V&w&&$4P{>eZwfpuO)9v>=j@DWr zT7%)oI!bf=glfDU;%I>}vSYM%NKQ?|8m(acEpdTD?yU6Yx5xV5rPBnzTSoJ0u9m*5 z2xTzW@q>7c=}e~U^HOuv%awcSlYK6^&WzcROTIPVsm~$bbHZ;09wR_?#^;9?+hwSc zSQ?0X? z-J$Gu9*CnOG(c*Ig!cl!#=AShE=)FPnxIGkur?ma!p0fU?J%- z6`zk}P1w9Jd>%sb`FY4CLO$Ic*~FhPayf(D#;0G}N7zX@XK$;gMiWr5W|;9y_lZrM z_jGc?Fog`Xsq<@D(>9`8Ayr00tu>U>_3ZcrMN$w_-P~$^9srNI^J{!@%*?w_WuR-M zpF;5x8X9;lIkofVOG!HO;^#mxg`<825$sWJ=9fe7G)FgGMT9`pe<6qZLsJCt6CDuK z?%$VD#Lh~50Lj@cxO4}E*DD^q#M<&?z zP>X;;)-U^$q{Z^5|IeTdO>t&+nfZIo(~Bs?yJ~H52za%)$*ER*&1Do8p>)}!jUJqo zx;OHwv#o)+m3F+0$vzwJzFk)P<93$ytG=s0PPTAdUY4E8DZ~qzfs30MIguA`zF$88 zj%_f6-Xr(#@~aTsesAr4bj_L;j!|l@HeBSq*ESK>8|KPT=$)QH1yAl}QW7r!yV=D0+5q z3zx4xp+oc8dTc4t(C|-*V*LAJw{n7AePqeb?u{4L*8#ybU1l{re*THbUDSD>Lbj|v zVEVzTrk6=oen*aA!$D6Zum4&RtCE^()HuRVaV-vkHU_UpVlz2Ylhuvu`a^$LVrz5d zo2#zMR3h|qvQZ7O^YjAeCA?eNM;NF5Zsdq}^-|Ea!O9CR$NL_q3_Qv0>_j*2WT`7L z47&_^X7f|8;ngeZGpSMOBRc(B;2yaQC0>S&+0kJL$r`ik>EXiVkhhb{7KK;nKkt)7 z<`-pQn#X%gP6&gj0`@g?gqex=eWn0p8p!=~&bJaesSoxrCYuj^EwjXX!wx3&5>kT` z8FPWww#$iYdJZk*%8bf=-xA{<-82bjk2ZE8yH7LeCgf?A^&xcl%MyKcv){k)E4_)NFsbI8 z1oAbX={u53w21}%T4bV5{4YA+s;k_Ok$av!*T00`!$f9z9c4T=95}jMW=pO@J#51I z36g)l4OH=A@?1Mc3xtQ(K8cYYAPjXJFpL#~I7**8n`K^YsZR}7-kc;Cz9HGuqBIWm zi5QQ{mN6r`h%a^W?EXO~}tq(i;@m!6x_X*&7!2tsM`tF--(iQx(I(!8%>gNPlPR*PlTPJpRA!@>=x6zuK8U zCzIU){~#3+NyoLtt8VgssqSV~tO8-zTVNXFVG4f`rhkKoI%1((C9v(KV3`-U)+@Jf z;<3^pd~)6m&39VbvG%}Jw z4cvA@PRB{Gi=tGynI&(hUI1U>+;4MtI983EQD3SIRqODZ0&U@N+KM4I!XZ z!R0%kY!TLFN;>?Gf~5Da+O}EH#s&_bTdvfR59Q+E{4HI^+Ka6e0n=I(dldyVzMc-IZkW`ku_ z_4^~;5qc*BddCOeA)FJG#aJ*QF^f1oOc?E8>mKgkprcpfc_E(|zoCvGHwdUt z?MYk@=}q+2cTuyU>HIL(w3*y@kGHoDK6+l8`rpfwSAVG;!71yzXF^%JTV;FF*>6lnO%JN6AuEZ>yH9b+WG8@hzsR>tSuv% zx2EaqYk+oftoHu%%W=rL%?!qr7l!*)A3{@mdoJX`?YQ5yBu1o*NHp!v4 z;9)~9T#YZwGJ^=Ia8O>*J)~MCN};UyL&lcM2+@1oTslG)j9fd1?_&e1M<7E@k14yz z{1__WCH$0XqZ@L;f@A?)c(0QY$tq-ha*IrA@0^HKGF zVIETdy$3pZ&wmkHtYUBG7@?t}w*(5jLj3Q z@4%(ZDzkX;CGljdW(Y6VYQ%me@~XAHUuOk*FN|`gMPT)pQJO$lyhF$&?+eHyE(P3w z?LARpM&rFSCX5wsia>Lwj2WiNMERmxl2|uX!Gsr~K2^L$e19>t#63bC%V1xhWs}qtKIFH;vJXJc5h?C%!Q+vRVQO=@9nXmQuTj_V}BPZS{pMiv@7CG@It&#ym z>)pM$2YQs)zsVY#bbHz+15cr0>vpCLUtQ;Jgo{fse6zNKzHfSTczSPZTbQTeLjH9-UTv|eFV(By4tnX#5 z=j!y@>dl^K-$Y=L8!pv68%7Y%ZnDa|BV58JBdradPN5^oAx#J+ry*=LJ$dAP^To@l zKW^r#GM*2H_xncZW9S6{gSW|MyF1>#$lV55OF!L!ld+Vg+f1_nECY&w_AVtc{TL*v z55GbavA>c&lo{*HC$0^%dD66PILzTW=;xhOZt#)MQbmy z?JkYXcc!m0beYXhI``C%@b=xcH<}|Ff*h6Nh+H!r)-=hq78bXmh!}!}ptfff-=1KG zi4v%4cU9mhy4SGjPj5f_{5a+lGgx)Bz#aUbWa|XB4poduq9Ja3`F-&Htu>*_MVpiz zheVVhbaT*;ebXQK%%XOSp?fXNZ^F+J|8td@Xs6b`+g73d=@Sx36f!Wqi> zjSRCeHvh($T85eh4OH^_+uICRnhQZ5`+bZ12+V0+KK!C3f^Dq1#y#!D$AG> zII=-z$uihi6bHpdpSc8*S5$QwxF_O5WRM|7XUS$~j39QZ`Bqt_pfHfpgaq2+3+W5( z4Q{=U-qW$9;*^8kGHZqulB!K4oddNc3A35}{0{5%WF=Ssr@A zb8BOI@KEGLT3i+)OzgG=yGE=Agr=X{g`U?HI0y@5kBiZ3exu*(sMW zfQGXq)&vCzhJh!A)~F27DvVPLBtW-;dS&=01G$30#AWO*Y(0y(kFL>@a7NjNl=B?v zA{piOl+FGK5l1Ypv&05QukSJ?Hvcin8n-$<*UCOA~_`vD^7s zV~-Xaw1&=TsJY62o}g%oajQLQ>A8op4SXYdz`e(h@XXu0PWiKX%FS?bpi|lsP6U+w zn!}I*NtSy>fBT>EapaG-3;YxoDz>8wno!-6l&JvuC{bOJsmwQvjgAICO+N#N2m^2Z^UEn@JQwy5 zS-W7BQ?9c+*J-rx5#8>P74}lmCY5uKhJu9ME5q4ULO}s#U24%^a8mXM>GJ)?;=@Ib z%$YPjTHFeHx@hM}zwa_4u01k-j6=W_(PaPFs98hG4)aN9?Rp-+JodrFC%L$j;(LC+ z5pO{lSvbaV%tedF*6+BW5po|1Z7!LXT#a{eK#$~_>CR_tzbap1RKkAgT ztn>_l#^lWMCUlUq0@d=j9$G~Y!~sDdG#rdivNgSb&*o5}-%`ljgFY?( z1;{tPENO1lLtP^7aV z)4Tt~yqV*BN0#_S*~R)0_F3uP%X0^G@_ek+=Fanref}6?pP$0x1Ddp0vJKSI1Vcdq zup9KRft)cFq8hu*6jSywZh`rS+8W&}e~5%pse{;A}Gk~1ZT z-Jq$E*3N%F6)4lBLi%iO&fIR$JD`yEta`LS>m?@8B7@j9v{JkNT(!aeEE{@q!@0lp zqZ?{;mdrO|OmS`GR8^h9f!6Qq2MSP>{{>-k4U*w~pkqrmati{&1d0NVq@sT)vVW3O zV;@yjz>bED2Nogj*8D<1ZN;lYjVH68VbWHMGCQ{D;YI5uqV2GHNc_fKau*VNE8N#f z_FD&fFSa2hq;F!XWe|J`;^mdxr*gYHxJni!n4z~LA%)bLQKtH_LC(HWRJs8!T`4PM#q7p=hH*8UKDQWz zYlW``N-zg|LlhSTsF?jL7<^q;3Q6xagj3Ne9^E7Old4wrw!NV;U|BDxoN(@8SUEE- zgC@ES@K0#cP-G}uujnOpUr;tTnKNG6pK)g6EEM5yS9fKkWXnt5bsb;SO76YDsYMh= zR(GmG01-*ud2tqdQ9e)8T;$4U#)N)u=h;zk5aRE-ES&)sul4dS{2@Aki@Lg8?($?X z8{G(~s7_IlL^_ zfTw)~-Bg&w`cL&|uUn^_VuKA0YVMe-$0zozoGLHl);V=W!fx{*z6i+#qgd8JfETg0{LPz) z>!DRo)l$A(ahl0d4~rldYjm;~tfVp!1p-!iHKO$N)ATnCWeI zM7O1>?KPncFz)HIEqOczY;W!#6%KzV59irj*ZC=45&U-Lk|Pii#*7h|IpOqS!}UQi z!riWqOL6Jfba#6ClpfZHn!Hz@p43)ooM_2HX1P}ilz&wCa+0~Q6vQgTl?WdRT7+4x z7tA;PH9AfpKWR&gA<#FT)vCI=6Gd94&aAi$BBONAT-Coh*E@a&!DeeQi4(O-j8%Eg z>MSWqA$^@lAgjjvuPQ8VZP@`oWMMa~=QNp>ABlG|=5=SYBqHE2z$c8>PROK55BcI5 zrMVu7OdozFE=yTMft?jcjGBf~q&Ib9I{NFV>}B&$U;dlp(J#v~R0Ad@C^>YOQe>k^ z4+ksLD>Og1_q`(%8p2blKbLuHK_jQdYpx#R)DJa|@1d>Zc9-q->Vm7zGGW1nE3JJHHiB%lHaf+VTX ze-%4aU6(j)ur_}ORQ=X;w2&?Qm)U1Jl#vx6|Jx*(qUmB5)JLh5`@o^k@&VP#2)moP zCvJ0~I(f%Mk6wV~j41sdG?yYAqztpyN;zuMlD)R;b+5`#+;3jrnpxd4_AcB9m2H(R z>Q*o~U%7V4u+#!3Z3trQwKGl^S2x3NGI!%>qqnd%pM$|)$j5_i+`dQd41NoJv2pd~ zgr-K-vS8tCnIGleVB|XXP2GNSj<-dkt%7ZI8XjIK z1Re$K2=nS z3_VXmHTAhN`J14bXf{bzC?&qwOO^1`v2LxdJ3nP6W?u)|8N>9d)PWN`Cu)>N>LLHBhi@$SI6arp3>sa}!ZPOEoMJPe`QVUG_BRdK?xNkvW0LkXb_6f8r^A zh&64aM@lKRJ8sb9b`Nhh@(1L#Q_;i)bnmR)*m~7~Rz;5s{zDnmkuETOtukG5dAR?C zeU^0TEWUILlUy_Mc>JTW1z_5uV3Mbo0{Mh@M|dlH1H5_ScayPuWy@{AA%R%+^?AV& zVZ#S8J>)Ae@We_oCi;k-G^jT5H+U;<;@WPvfTLgH#YJ#8ff?0QJ3dr8-U6y51}@+{ zY>@YP@xgQDe4EwDVuO__)M+eA^jS%!0{4rbw++H3rd)oZREs)?6J|huB2N%5`LuYi zagbAbVdg&zJrj_`Sb9cz*|(g`AnME%L`rb*-CfI(+#fU!sU+@oe(I7tK!-E}hrPB8fSW8^y>o2;_t5HoSZ%iA^BA+7yaqpY&^RX7;&KOA=X6v_-R?4Dv)?l27pMe&zj8; zrUWjrb(tg580OHS%=L-LWf~zRvTDf8F89U5MQMuOLYFawP%f8Z9^ma5_`Qt za(2k_l|lk#D>R}9Bc0T(lnW%I2~Lr=a3#O~X5;zUL&-yJ3jXRv9BJJe4 z_rb8@&nNQ#z1n+x@o#D3TeX^ke62p%b$zdREI92#QM#j4T>3GYzU5un9FNb9DgjR- z6b)>W8V%hKB^B|8R562wcabUJ zlGKrage^^}krEnx*J;igEk3OYQGqN4ha0j{w7y;AK<+v3f$U@MKl^oWFG*QMCET>X z@WRe&6{sK+`r`)jkjywwH@>MprHNPcpJx9A!$KKZEfKjC^5yVRkCR3>m;0L zG)lZHK5FcE2GN|rLFn&LAm2%8SqGC*i5xu)A0^I)qwLafL!mwNo>p@L6O$xl>A-T= zJdP;njJNN&l2h{IXPAqyn*1a-#;BlfS6K}xPh{uzay0G)qU{UK~nA%EsL))}^eHiHCJP5;4d4(j;NwyOZ&1_s1mO)Dk zqRH~gc_lBFRk;(4acvh*Cy!P#+WHc8$GR10!E7ze=rxdLR8i;WNyw8q)Rjv!+;aM` zmxJsw{7UKKce$AjQ_cu{>)x1iqND=85B@E494M<5%aDxN5;>4r_!=I<5bCj%xv$cQ z;Tug)gn)GNVF{*)1j0rLY0-AVtlf%`V>N=?~EEsVuA6qWU@9i1hkUu!x9<3%?RO+tiA zvnuS}AKJ78_q~CV5E;0f0G3#7l6>Yxhca0KJ;IJODAMwp6Sa#7MU3-@7NK3U3{kX{ zejVp+wQ+x=U?!zD^>QL!i-Fei4N(sYXG7lVjOUo-3YXzFlDBjabusN4= zg=g8au!dWNyQBajk)-~V>tc60U7zl3T{Rf}ROv14huvfKI9ioGIn!h+Z4Z5~*FJh@ zp(cb8`mlt~Mcdc>$@j+r+A(2I=TJ#Euc3q!pf3LW!6n{%l$2*Vq0JJDSXr?E5=UnV*sa`pP(XizaczGJWvH(@WSH~ zrj*X?l!YZ^R?7d}JT}#(3h+FXB5ZrC!?h@SHg1fuB6WrZhg1ftW z(BK4jcW92}oV?xdcW*!ax9<;NR;`*H+zHm- zb0GBjfRA_bnkvb5*C|=PNY}HcLm=RZu?rq#hI(h1EitR*oh_Lh>~FDvO$2zM2hfh7 zgZ3KJy#fgwxYuX*&okO`K!n;M>D&_HXZy?^brI&~#ZZ{c1&6Y6k)X!v-+fXTHM54c zcvxzyDQJi1u^~=Rs@Q|54DpuY{oXod%%wK`jnyFk#h8ES1)Z;wdvbo7NZ3zbwXqJ9 zmx!Iap>lzV>?eu&rA*3XfL^{AeEJxRhlP)Zo0jC{Y*Qi`y~R_3x<5@kY%T>O#s*g$ z*ST8JNpV*{_pLz#M(mYh)!COXfp8ibVvA$f_+O`Sj zWZsUV_e&pGUmnJ>nA%~JSX8w0(3U)O2OjH;VRXHcyP;a)pcSWgRy_?Zac!wScx4W93BZ+C(?j3rB#j0Rk9OwGl*5t2;(Wwa|^a0{rcB~WnsP>WMSfF3xUd|FitbLi6oDi z2{UMBSe_Uq^f`vx=;W-=4w7FC+DWHYm+&NB%24CYx=eD4rF!NPT(&!FksvsFy#@9A0T}BmS78=_jQ}xtYp4 zE>?aGlX7kw8W0yQ6%%@cLt|?*DnXPo{<@D>%5!aJ8SA_DEsV#MjT}3EOz_CFQgC|< zJF>?`A>9JBv0i2EVL6@8j7@@V6xr(vCJ=E}1jGToX4>nZp=kP#KnU#MHu|3=T2X;$ zjm|vQ619I~dwCOvPwu2UtoUI-hLyTYtUM1`3zkoF1lmA{DeR__(T7B0ba)R+hi1X3 za07{>jOhT^m=N_0o0&5v11>;of}lj1#yTIY#m?x)GQnT39{9HxgTHr9ZQK?Xt?u4z zk*G!U-fgeb@HU=$UN#~_%w8w9yUee-0!eRF!>WQ^&Y=pPu1G=YYgLF02NtwYTj4hN z6FKiHg=3YV1bI79T!SzBpSy**n`d+HU{a7ibYVyG^oAX{E1IdLb>Yi+bt}(>>qO~8 zkdzN2rOWv^aUI-W2{vdcE%kP4%`@7qOTcV~EKK-ow6A88XzOD27_!T2vkdQZH{#}c z+Q3Ijt}$OYow1vPZ8xM;ALC2`eSF?%O|!QZ5EGZ zqV2KJz=G0aqIl|RkZGOi4Uu=!pt))*Uq2yzfBk>y{%Xl#MYQ63ACoHP9@z~vOWfU9SFz~g zaY_yy-O9uxoT^aLDkZpH?5yY)Z)pA)JyB^}4`Ce(a4m;Eb*E%QdkW8bX!*LR?Q$Bc2oSU#*$n!dMegDf z)$}gvzz{z&=l*J}JWdG=4I0HQ}qrHqB%@chE(TOmsJyXS+tb7vF@|)n0TKU(ohFoGXJIcW!bQ4HDjz%L8QdCSdGYpO zPf_Jq71sE|QI~;hyzKjn^ksHoFwc?jXszAK;x^_;3iZ*fsPbg2)vQ9EYjv<(q%{HA z+u|7OA$g*BJ#J5FHYWbpA_P@CgpXY|v^Zaa7jZ9_7_TE3&p~a~f?q2!KgVs@bowa{ z`N$LusjbGQbXOXo>sE!Z-j|;sDn+0wL8s$JnP5Oh2g`D72C z%M+5ZA#?sux(a;}?QNbO&IE#v&kZmV-nDhbZQQ3X1I^MQaM1+(uRVNq*bZ(C5C~cc zo5CFdg)wL#avL|qJ-euVr4-wzy!{XX%yZX1-!#`r5EZ#sKtRV2$f2`f6-blHc=Ha+ z7(=+bjX;7w2lP|pVLhbD44++qrP#jml2X+m|{mJ zGDK8}=K|Q@2`gc#_(d;u<0kFaug*CmDoOSy9`zSHaG<>f?$-O|uH7FvEZKUO6V^9^ z`&D@}ATXkt(he-c*IR>>^`Z&{b1=g=4{Q>J%yvI6G~P2riu=utt(!q%%KiO7X)Dz?+o47=3Si$?tEBF=8(jh9JozRV~FBag|BlI2nxSWm})*JZ+Y8}8Cz3mp! z>{ueA!B@7CCNCbtE&*H2d}vK$IZqe#${G927+4=C7I^PYwqrM)VOgUYVl6-cE^z%r zLxd=tqjud8Wei&5m_TIu@Ue}ED6ss7!CA}JFl886e8w6eL_j+4I9#yU(U66q}3y$45hBegVi6WEPNa1RT)$m8@nBabAAe}2?i=5yp-If z)O8WxXZB@HmV=rTIjUAe(IaxrOa56&p5@kMy{j-lCo9 z88|oWlu;c+I87Hq|JHepgV3=fwpQuwixv3C?K!R|YdokW?=@df$jVVP<8{ZgySMVh z#_NFBt$B?rrxey2HIk52&E@ zT<0LjZJva#!O)y?CQivJf5sL=?r!lVHV1EYZ(bcq$jiye?~o2fI&&~R)+`v`_-Otm zKpXOSS}h-$==3X=K4N0i(2i_ffZ?A zaUL%9wHh3_apEJ@TL!>HqCV{@HnfEZv^IDu&tmc^>R)5*;!)PEh^ElpT7RwZm;s7F z>=xxhA^cvAQD_f6D}=gqt0F=5!;JpN<0upQ&TGInd951+r!&t7sv!zh5(sDZxLYdz zlJw$MQlONaIrmmyxn*A`g#&zdn0^;8gX-@gU%M&Pu}||1X92k4w86_t^6s&`ps;gN zGKAiM?SnI9u}R0-WFHggHm+P`NLiUcpb!(h!~OgYPy4U zA8v1(YU_+2}jnHvmI#;yG2U3lN!c1iKqf8g*5q-{8U13v! zR^tXQb>DzIA|{u__Zc@nU{@Wo*}f3Agmo#mhX0Yl?gs-G^NIlLHu3B{+(lo)h0@ z72|-P0K{|J^a1R;Y^{f;Qczai72mU>(b5vxIvd2DUkiK)jFs$*rWp;jFbt?EUAr;$ zW40*9awq6@2c{o!7Gse?W9bfAMaM5(siaA?=lWc;-r#r{cbcd^(XK?qWxGP)+Io%M zO~=;b?a&k8y^Hi-YdqBEVI*_CF8KN!6Pz;J;JeszZv=cNODgiQ72XH*cy2v)ZPG@@ zk6>g!-I2jfi}kM@0!(-kbMtwN_^!VotvR~RD!Ldg3m%0PA}u5d$P8F)1{K4WaJn-? z%bsRyRdpzZpsLpF)I#_wG1|Z?0!Gr$Vdf$SU`j5>x< zw05N!%t)(iVOSpu^ddoj*eHqM{4r^&_~J9md?)^sX`4*Cia=J2hKrT60*=a9Ri`-N zT&OIXHm0e6C5(oc>4I2Y%^y+$fJBFTB3oo2BjLxbWGm&!)$SWa zYjT9}>jn-7@yD@(&3m5qsXF8ZGQ>WtE=cpiCj5_m^pFxRbKh0fLN1Gx{D4)Z&al-# zO~k&9=?VD|0I7TSR7OUT5cjAEO^wuj=0ttKZbu07R-}mCN1#xvVPHTK^QvdP9Yd>! zR98U&-)!MDd{8gR-yqRn!~H3&Pj;Gs8FSfc&+NR={@Q{)-c&$$Rrfejmdm!auA2Cb zH$K^gYc9-*H0VyuhAZPFOv z`<^K>iI`diA&QqFFKb`6=Arn&RL1W@wGQ8c_vFwPPbpN+@@Vkhg{|i-q^mr6z6e}U z>Bequd@2blhi^=-@TCP!;6YR|yuhOaNS$lD$l;xfnv zpmFN(;5AZJtb);X!XGSSa8rvebrG*5rA znCZn+Y^WV>v16mI;IBZt!N8}s)+}r@gF0wYAG{AOLU^<>YQXtLzTl%tr%xD~c+jjz zaLA6ytukPUHWLqq`N0(v`WceTeNbx>0^Ik6;Fdd%P~=*Fkck^grMvj_*0iCA=I@RU z$%UQcAthC670>?CEx+xu&h>7Lu;{uq`2dW6c0t^-I7*r1x5+kuF ze_7#7R7PwE9s$^i8Mf;-UEzfUOdGMCn(wi|lIcH_c?R#{A&Y#FPj58XHS@xl;ewzQ z)dL9I5KrMU-HeOsy&v&quJIgr(h;22OVA&kdo$A-MzdIYAq#fC6d2^%DCk)jHL;V@}btXKM~<-5UpWEkCqfTZBOPRv)l6U>+6z2I}Y zu#sr5zIs{sff|1)%YhptQrPL?w`<|m=&PE)h`|h=bj1bn#}d&(St0xyl}K=*TP@$Ncm9_=a~B!-;j0#n1{3WrTQ$Ty2db-5C%#WpxnP)O-p z4?@kE-taH+nh`#CR}!2b*^+F2^@E16@#{$0+Y9fW6d2Kzpc~5YO)}#>DEl%7xkTYVEPcktLr^!#3RiR>hC2&lCxKCX;5Ga^u9szq&HabedrJ5@~$nW7d zmD(H*W-P#Gx3C%dim&xLrPB^ZD++wDd`^uI$_-W)*00=**sQ$W)H)zNK)>d!;v>v`ukt(bnR$Tq+jGm1JJ%0yPOi0@pX|SK-hbZI3?4mp#lWTfQ+xYuMK2 zl|Z~YB}bLJWok=sObn0L{W!bvic%X$fO#oWi|W4s9d}=TozO0^QF3F2!Kb4a5mIOo zG?OX*sUQ}JqH+?e^;%cld@LwkHx%33EJ8QbA10E@?`yYCh>47@4VD`au$BX#Po`mF zMX12=Hy0wQMkLo3>Ac743h4?`0x6CXw!ECCYL}=-YCnGt&N~cwa~UZWXfLEm^X!Jh z%)Gs7J7BwwA??YDMBs;bdnekG^X^7)6NZFNQyNn=OekC$BFj{G$GQ)nCo{R=?_i9$ zh)Y(o4!V)pe8z10Qo{$0M(QP}jx(ZK;nHm|g?>2tQ4qDw1(x}5K#Vb%>&p(Z34-MG z_I%O;G3j)OeJI~C;ZP#1KFj*({aC?_VOXP8ZBKLeM00{uxBFAmj^CyXpQeQ8iYC{+ zh8Vv#s(k05^pGOroRed%pNS+7PGUz>-?h$E$&E^bi>D$k#2d76GYQ$TKEyN{Oj)Wj z;3vLyCS@nHpQN!WMAI#;Jb{)QNv-Djq;1yJ zjbI?74RZ1?d+aA4c<$dU*%VP`2dAqvN}*x%8!bx)>zy+FBz)A)dwo4lS=EiW!PYquX1Y}1A# zQz-yHE`mB1cqGMLhjqT{?Ztm!_{!A|nwOqF8AIQ-2lpd$n#h3mDfNT4Ba?0-T+d~4 zr}fflCZv21jV8aUhaIIQvZi7@L>KmniWA}S0A*1V9K0_W6BdNs`&wtablW8-y2-MU zFNZR_Az)48?Dngw?q`S#5KFz7O~Y{+^YAL{`fN3%313(7 zF`H{;bQ4{6U)vc*)zqntq3Z<|obXf@VYChaO=dO1Hh>tM{;>0bxqHGTQ9Gf}{%7OQ zU=tPl83)7#UT+uv8y^(iH77KBP4`@W;Kr_sBN2!e_<#$NsLGCX45~3EU9^bx;J0N0 zVQnZV8TU{y4N}PgVhyJGb)V27iPKG=?hy#d+U#=Kdg4u28#VKvRk8;Rn%|L%gZ3C6(H)sdxPII1dIE^vd)P>|%{@L>gEwxH&>fSL6^D`UewrfKT@5?{>7QDfN z2H#IaXTnU5ON+3tKjjlihU_B>glOs-63&GI8{*$>_lB%jb?Jlk{R1%QHNOu$1l*w9 z`Px9!lOECpt&8i%x(HvF9HP(A@Nmd8Jfxzm4RsGv7{qms3pyK2mC67b;D zYp(#`GgGPLUOO)c(nh5&c8b2%^3_`2{3~ zKuwT9ceV~lPlndJNAPb_0$$y+Ow?2BpSI!I_+!{y@Oz*m`?@KfZDj#$K7(#Opf7K6 z_j?f_Aiz3MB3v6l&Y!a>UY&x0=$dBVshcQK!uLS)I*1ssz+Ii0-dU%*o3a=X5!Wvo zudSVWhw6<=Og8~4N~qhQ_g}?9a_wSkfP@4z;iF>`AVA&@^uUCl6Tt7!WG(AH zLPS5sQIE~OXhXZd%z68EIte1)7bO8hMA-y@f_P6h!KuO=n}8BI zTQk0{Lz}t~#&nwcu0OvC3d%v{pJ{`@j;ww}7zBC5z`*(XYFz^UJUMaLs|zLb-Me<# zg&cXa*w5*653pPaF%rwlmi3sfRLTadl7^o~Y+Mxt61invGJjw@%HAD5 zs2)BO1cE;&@M-2fUl+80!Tp>vG#_kOZ*MhJIyOw0^Mml~0Kpa_A1s8UQ;_}}=*Ks7 z2z$QQptqQ>d1PoGM7F)7U~%A{7GCaNdpCJ(M8Zm-!}A1+&6P}MZ3|#p8~11MhgSq7 z6#Wd1^HDO-wiUe5xo5~y@wgOEbPZLWX2VIfgQ6tCsyOl zoQpSqTikGPu;gc*1>%6J-KuKWo!atLzjn8Jk$bA?x~unR4F3>bdCM@vm(8bs4xT(~ zqe8N>GDayqR_!~>KnFE8P^!Evcok`HJyxpOZR!jT9N?_d@0%w{6woW>fyFi*YJ`e& z7y0rpWY)(}8g}#XQnQ<$%bR4LE`<{RA0>pfww+=A0v}D6(AH=wE;vgCu zxhS9d@rLW4bHlTV+~v`FQpl|K2=$f3Pc6@H@2Of_E&7R{l7Cl}Y_%Uk3$!j70L<%{ z$QL!>i%YqNSAN1ud~sz#A5v^aMzAohZd$P{oC}5iT1Y06SN+OdaH<5Bsk> zx!m=O1QmiWS5>x{Gv#T@^5Osm3x}IoxN?cI%S4*LMzqqOTpQi2K6iyvt)24$?Spj8zF9SdI@80rGQ(I5+cmfYSRkze63Ww=m^ zV$qZ2E`k37^KoS7owr&fYMzIyKKnDYCB_F=J$hh@_pRz%?%9q1Ar<`t; zQn+}$*SSV`n`W-Bwog5!$O1&-*WR@Lu(gO3}hr*?5GlMZV&wS%NG z_D>Zdm#BN6U|;-*N2$gGb6eDdz9pG`xiX*o*)XXNglE8F8|7w2+PYr!(WA>d&`-b+ ze&V9tT}1mu{&N5rC_#*VkAvU0$8?xa%Kp`ci9emNnuq6Kt7L ze3d3{av#|#!eTc*n%3PlC1GoE*2C)NjFM zXpUVnkl(NHnm3EcOPS{^gwxc=^{BXc9xa{??XJYyiCZ)`?+Q!Kyi&LQUEJ1WYaU(*!ZHoI450pbDDbj#qPkT@IH{5`tKvcD$^IJgX~Dmx>x{)Tpl5QQk=8>vf)o2KDpVW?T*0U9Z4sd z0+l#((LnvI+|UYr{HI>l`qI~x$(mSSmF5KJFeSWf6cyb;&OKlJ(enyI17Ij*#zJ>& zWT)~Po>q5?{7fQqu^L&ZZ?>##YOXyLJgV|jQi%+P*GxNM{LgUiDOr`XGnS@tA26@e zX)k#)hsXx=m(Yp6ev|ERH-S}X8JSy+*WWw6VCP=mOFys5q5bMH62xtkP#7c_x%LL$ zxCu$&-F(WvG@}m@<8j9C$fH~{!HnSyEA(1$oFBPV*R?Y|lD_ z6AVlaQhP?S?uyvG)*UgrOmD3HzKb&hOrcT)2FbFbHMO7@y>Zb^e;*stZ~EuVkLyUl&%dPIpz}Vh72W3%x!@@0ghJI!xMvA=MS!t-y}4Ntocv^ryW`7v^7MTB;=fN zil{%9d~j}3T(US#OFcVfp^m43O`u>l`?lPce;qXFk-R~<#2*0j5iq+^E@j0DD&oiX zWbrmh5y>rVv&qdHZZkVDeITS|&wYR1TWWk3*mmQp_G%dUxIDOg^{6cas~9>$^@W7K z%`<}|&va$Fu^|IpeGbEv9k{+Y;u>ly!-dAasgPfJ#1W!_8{x@KD#tQ9imd8dPbWmO zb*S_XbDLJn9Y=!J(ferbyboSvRZRb8H@01xA+lybN3XfruOp;|9YP(qqlw6xGOgXK zlP^4d^V{(xPnkIz+zw7eqixs^;4J&)T-p@r^%v@9Tb@KGv+22{ov7!kkg_@!! z6h+kvvs#2`p^BJ^9MHII(9DkHhy^frmwoqAh z<4;eaLST41u!%_V6p~xnHcqc^B>@TdN4s;ft@8XV&Z*^}buyQJUH^K0eQxS@|1Svrf}hE=}tmwH&Wrcb7%=M2|;zNd0t z4iedSaglKyC}&ar&P0$F0dboN#Qm&hWph><@eoRyyB%7l4Q~a;kd@@FUF(lAOw9<; zL`_R?8G1G3sfJ2Y>1AIqY6T<;igE6Yj@{Qxd*)U5QF+~-J(=60jug<3hgn_M=L#QROCpIBOyiuCw1LPE98?_sr=4^neWM}c(XV(V~fH>gZvN6CuZH=-BH z<*u7;?}b}xH|TbtEAOJ-8pWmbw3dv$h@}86BLQ@I0~%qA2TC=0x`*C-r};qHC!> zKKQ5#BW^U{aH#q9iXr}SFQU6Cxbh|thK9j*^n|_OEHvw&M6U|$B3L{h%sTz{CN^tK zpbVyR=bgyhF(Z9U>q8@t$`=!CftqILOG^zp z;gO#`@%_cz!hWbKD>A;nuUMjVo-Jo*GugF`735ppEwiV9w=%*1>K@!VfWq+v?ig5r z)dy%AS#DI+Ee^Vm6};5hGO=1xvs0*p<{Sn~Vlos`WU4l?95y|9l{d{czb~m*L|M>7 zR+_E#J1Ii8Ua0ldQ#sJ5o)nL|(yUu8&}*f?SKl;eEXd`ytloG*@LY>$2d4PA@>y|- zv|DC`dJLpYFwAiVqK*4rHOnFNXN!43w+n&CBkIw14c>K)v(d8hi+|W7nlPuThLwjX zHv$`~Xcm1~^xUvdQa%>9b>7QQe4LAqEI-g)??CPzZk4nWhmyWxb02<=T+AnqO2-y(Qac!uS&NmEGE=Vh_@7P;jJF9(#~_$%kF-vTx%;NtP>skEX7pdJ zwY{HUs^>T1l=|qjDw2;e@%es0M8PO4J*5F!o?w@lW9qWUxaj^n3J!ncTnwhX!{LVM zut9Apj+`x6BjQ+0pGv_x|EtF7Q*%=%Gu zg;d^^TV#w&8C1=dJ6Qt>{Awa+W?#YB2ef_}O`_ zykM6EjwtH3RoKeeWcg)o80h(Bs$+vOWkvF#Pvro@xS3DkhPt^7PMN>hqq4Gtq)x;i za=o^KM_h>yk8TG%=WOhmt{GQJy%=Ao?b<@+13IlES)^J+YnHl6`zntNk3&=?AIDO~ zEahV9@$5!g*mGq3c=TTXx9^DZY^6o^iREVn71nZ6bruzgKZxoq!{*TwS+||xJ~+_w zx{z?VvRf)ASPlkn3;8#yuLF~Rtq~(KBWj9k8yr}>UfC?g<;86zTs^iSZ5C)PTg-2C zInwt@TPcjEa8^Il(XN^4hm7dN5iu@v#2AvM0=V6a>KlK`?&+Kh=Ls3YB(QSzAg>My zgF#$j@5?8C#4GU-XnW9i!a&9 zH1MIwt(O5mZcxMN5!Sg_WMG;bciDT5r%Tz`-=x1Ea!p%tSyY(vSx4WdU+CzC7g#b$m7I`cQELQ_L!231aNC9B_{54DyskY+a-4}dx?{JQxX`ocf4`YWIwd>ruk6S_?1p)Hw*)Kf< zX0qc-QQ@C)>0=PHpBK;E`!*^2FLA}BosF2&i4uEYpu6U8cfW2wp)lboFH5mAlr zu8>r=DZLey>9&&*b)4)1nZcUQs4!d>XTj8($5U>rW5^t(ynH!~aM>D;-83xo(H6*C>oqe67n|sWzSPq_c1#mt-&s z(Y@9K&2$mFcj0y0lUhOt6)8Q)KWq`rFmF%=vzz)pu#N^@$L`h8(U)Y+g!z`4sI0%f zG$~4!dwDK*aM#5CD6_|qx$D`_?l9@UU38=R9PFx?&u}4_VtuM%b}`T?KlhaVb_f$0 zo?O`DV-B=Xq%jiY{u#_;T7m(5h@w2-zUTO!%rVV6<}`tHWYV(OpibV)>U(A9y8z}Z zTf9yPt%yM=XH#j7m_SFkNrZqjnG6gOAGKYc%Xwo$ znsMtBt;#Cw%)8qc>Yns_H5^BqwH@E2Q5B3y$vT{0`&^0Xq-;FehqGPIr>(5UMcU-C zAJJjMDWfSdv#k_6_Svx(Eg}k8h$p8S4X=1_`CUJH>@Z0y`P?ucp;eco@=g&9554dC zVDy_Y#my2L1?ATBRB$Y^EBl;WctrLkXvR2)MZtzb+7{f$>f3S7pY^@tU#U{c;%~ju zw5{A+8rogn(z&Wq>%9w?+vD?;@+vD2q4&mT-Acg`<|X+HOm;CJCY?SMuIUK+npIb! zA>>6;$6Z`~t1VB=TRc`Do|rQ8;Md&H4L@LXo^6N#gPYITN^Q?fBq=P6Ny*LNRMJ3a zD3D6MrIxDFjMIa+y?NNt{8+m%e{u%`B_Hq^W7jh76aj{Tkve>C^<$RV&(%b{($FfN zuZJ%e6vxz%SIM?H!rTi9v43{*@@J+nj>jZwI^eP@r1lK+&c0;QSYeEZYCL& zPtahT##fbM$^a7`@NwjkQLBDh*BGM?oY>&0&w>v!cz zB$%G_!7Yi`DurD`SPu#rg=LL|zt4%CI6w64qR$ZH;#;=v{^T7r0(W_11oUi6a^JT~ zFnuZOSbN6{t*C+h>u=cBHP!83z;Hm2m7Js;R6c?2V2`T7X)mrb4A!%BYLIw-icf7k zj_LbYmY=AnYaq$%up(`oYizHb{&87|lTbomgY#tyvR#URL+_+BK8-JmfPq=Zoob5><-S(KZ9;m=EwTnk?5mph<2LBQ8qRFClcf6Ek z#11uflXrvH0(d2*NeYT%h}h%z4vq=VBEjE0|0!$T+^1jkNSTo29W4Pnt>lflSt*xw zDc4i4j7ur;BaX+h&$s)swHgvdk@fKGVDGH-e049d^mZN(wgYZQ4He0x#JI*apO@vt zE%13&{zpumxP7iSRMAirB(SC#9L6!#Pa6VZ98JX&-}n+z`BA=7*Q~P2bA=%7;;6Et z2^(|=Gi(VlRx_qf5cMKQQ(97kE#2I(o09^=jn_mZS?Ouu*Z2EieUG!YQ$g=lT#`eh zYNM98$^Er&y&W>R2IeM6VXk&}F!MLpWu@k?Z#;P_c9MD$B7HQcZD>ymvVo2rF5MMX zN`~s8Y65C;PlrcR&o}NMzT<6mH~m+(62}?l$#RV7C$mYO>gZz}r3i=+Q4NZ#ZI+95 zkYA9O(E?7Z9yW(=+myh=%o}OJY(@f=IY5*4{BLnPR!z1L)jZZz8_#2nIsqDr8PP2` zURtFGk(u?wi6GXdNs#N#y=DxC@ng1vGWvO#B?GI$>wEPp6lSEFP4$kAW-7{FYcR71 z-?_65l>KC-*XkD}svAu)cha_bFh)bLyyZBOD%YyMJf+0FcD)8}AROYM^!G&4<+_+n zHkOGn1&%ftn?{JkjQ_l*4lD2R%9bIaD>+H%o~KfHuA%Yb7S;vmo4M3MKsL$Xc;N2i z@H}i)aM>->-?q#=pY)@|Qukx`d_}BW^ z@84;$v9r!h5db@u>R%D%=8Y{JMDn=??piW?(=si?5vFV zZ2t`Xeu3?8cY3<_F#ZaNm4yMHmHt;KtgKAG>e-n84)jm3S>6X@#%E*ug%TSB1IZ{66SknEtP=f3xtf#rzLA|5}Xic(VM3@jv_NUyr{={vw?Y z@Y&z_W`6}kPxp=~+n*_5W}^Qa(*HKAU-|!EM*lmFhwayn|DDDosK_rSsY)enYN_XF zFK=xrZOtx8BV}k{3J|u^w>B`fGRA-Bz`UPhgZ~@J=bi9lZRH?jXs>T)YU5yShtK%O zVt#KTscY{bXrgQP$BqCfIO;jL+8F-HeWCxC0RvDmHE=Mo$7f{t)8{{^FMo{mi~1sD zYGh<+XK1BwXs?0K05CEI7+K)603_`#bnQ*>8JPgKj@Ax_?{pq~M)tpKyFYk902|$R zCksQPzpXzj@tGI_HWrTd0DWsqOI?78tBr}F6~N}5B4lj<__ITRo1vXGz}m_X;NWZx za4@kmGz1t~JKDXE>tqP9H+2ELe;M)a^C#B`U}gH=P~Y0Z+Uou8_dd9xy@Tl=HZy=9 zAOH{q2myovp8+BOQGggg93TOZ1V{m-0WtttfE+*`pa4(=C;^lKDgaf08bBSOXQ!)g zZs_nw%=qk#zlwha&dv;Qv@$TXv)8w_GsI_S1?U3w0Qvv}zH;8z0q?ez_<-g#N< z|H0Dwqx8N)6bv26|3|R?%JDy#{f?O0-vImx{+}@Xl@X)A67^@w{($B06r28o&7Udz zE5kOwGXDosf2H-01Uvkl_CFSY<1g&~To=C)#u(_>{~KY9o`nschLP$0qu|fo%tH4Y zWsH&j@BQ<>XQXv44FUi2p8K6YM)x;+jGl?^-_7&yo&%`<&3j{F`49TopQHUs!T(Gj zqi1Gh`Na}@kD7(yeP3)^oDX}~}zlgFf=@l&s4m;Y7G+1SNoKy`N ziWWZx!ZJ{mDgQ8)Eyz%7^?o$C{&;(uSbM7Tob+UO<}DAVf8@ifjbg|1vXqOZETa!g z=1c`4`Sgh|yj+sn14#J&pB7dXB@uUFkuR>F!Lys0eG);*Hb`3!2?Ck6aXM=^XbGSCEYN-1HF=3Ue*Ii%3zU@4af$1FH;6d@>?3-C0 z0A+)OfUf#FMM~fDK_Y_eym{tgAwmJE0RyAWJMsA>$JRuK=c4$07MBCX2X_E!NnQkw zUzI#59|yXeH{yd-!Kdl!nFiN+KPgCOcVEZqWzyuEBvd>Ql8O&>*BrEok)<9akXtHn z#;Y#|kTf5_n5ib9RiSQUBNXt zKBD3hqY8_oB6xe&fDJ$tT)%<0WwdE<2LQ#=0hv0E`rU$Qru%=KTv%PeIDvC$0m%Rz z#+umyqVMS80&WP=OpGpm!2kjC3Igt!z(FRebhFQ8I{Xg-XwFV`ADHm$>ei6s0HYot z2Vkv?*0gnCU0vj_fU@`Llegt8e}JtgDg_01jh`v^2lXjGr$&%YfGdU!RHY4&vo$kP z51NJLg@4c6boB^_1_y|S=EnuQoAV3e1pe_&4QRo$xw!=}odBw{I3zc{Kj#ccfaWZ+ zi7f=!%-eR^#2x>qzUMyxAOQhx;t}n3x(q+o!cBH>Fqg z^Mg2i;DT_a0o-0<5%T=v%`ucQ5` z-Q^DK&A{Yf7nq^mx%P7vG&F!ZbZGbih_nFJ@cV8XaMZY{CJKS?ArT=V_xkgInr%N# z2tZYIa8P>TGrx5q1d}5JyCWk&ewe>DJu?b+2KcUK9Pt|i0P$6y8xhPCWD-dY1Ap=< z$aap|FTl#tDU5vJ{^PD*2qAvj=S!m(Th5 z9Dekj(YoSe5eWS)v|qyf1A3mVf{VjEAs7>G3h_JFeB_5CD}6V3@%UhYM=f)HftAJ$ zf-uWs?#^OEK76O)J!vuI1g1n_T{= znKN6{EG_fxXi%4!g<}cFX!4^$R(Gu6%&AIr3bn$<()a>m9X|bqHq3W1{K_ZN5=1a0 zhJcS)#<{_PX<2Bz9#Cyt98r5d7|sD~Od3Fyc)K4?c#mPQC-bb0reJQ90 ze%^k?4Sa+Of6(baH+rqtg@7f<7@|qLRQ-hDCX7NdyHd9w$}M?;nUd2_kvshJRMxqZ z(}*hzAw3L%#Ctk7PJ+7}U%Sb6ER0#{O+xLdD}8)egV(3S3iK+(pV_ptJ^cC1fLZl* z>xO-AC>5x8SqX_?{t1?2$NP6Q&pY_&57J1i+63B}4h*dRe4BH=pTl(lXmXF_N~adcAucK@t2E5CI#F9LVM=NuaW z`CEBISF}YB`BAZAu1dOaElTPHe2X;$Onyiq;&ms(KJ?MO>U#;fiD&2W2PdajBT-!~ zv$`y}OUVW_iBez3YiqI18#CT%vNjG12jB~W(#1RLyt}P_*m$ceIJGn2nltt5{?2WS zee1gyZg5Ffwsl{U+z@wu)zRA}j`DsK9gC#GWVNq}s#e7cI#VFre!~C5)@S}zA};q^g)Qr1p#p+dN#*kB!m})8 z5WFJL?ardF)=wqHbzKS-7_Zbw0$-9a8x1kj1Q=>{LxKY#^beQJCD`eefHSL?C0pQD zg=gPVs_jC_AxE7&m6hsO)_UO)Xb;%RS!iL&NlQEUSEybxrS7%{Xccd7%&!_Mj>$}P z!fy5%QQ_qn`n)aug~Y!^E6Je06K)WWrt4ekqz~92wZ%_TDlJoRQv+MpZmZG> z$f?R8kEBk*--BUwc4z>xkCX(79a(=x8%9#+dtDE^y$7bo%Rjz?V^`9OpvXZCd^SDQ zptDGMY>vWn%8`C1s?HZfZ0$COb~Buo5EibL_Z=PZPy~)cGVht<{1KdR;rBAWms4p; zGS2XGFH6tgdY;SH@z{CW#cvG4`#p3rP8apW$m<;!ry$b<>4_g9^`>f~jLgCPyZ=ULaa|zp#Siw9OT~`$F<2FAsRa zaiYvVG=IHV)X=bhv>AGl&jkXjm zm~+~o+cDx1M1r^Sj>dSBs*5OCtpy^l;pUm)BSI!7cv8}`0hx@B4Jl`+*W&?4Lrkgi-YD*)r*Y6R=fS)`sYYrvjx(z6v%!t z1CAc@k>UHTEAKBj?qY-@U&lU|t6t%c7^3mA$`ej6?BpDrgnMM@m0j@7F~4_s1~XJ_IfFWLQCPnZWz13Aq)hf*8~WjAWt1 z1h7pK4OHdD=Zlq;c>0B{SWDR#Zzs@ODwyBijZ1?$;S!bOL(z z52>GiJSk2tSGGL}b7)a^(yYGbc9=BrxG)qY#li6O?cufvu23YoSKK*<9LQjJ2Eo&m zQUE7p#I~Ita}G6kVsWVa=DY{}KGFu2vK#OU$~=U(F<{I~_>-N9EeuY#`7ZGRSQba+ z5{+FcO-PXw1D-5&Kv2d!>GmXSOX&xPT{}QjTaiyo-{Tjv9@|%)ZheCC9F0nJ9dyF; zB9Kk9h-@b6-#3wPc0DrG-iE<=3&8?GJA9o;dOe2;?dgYkxg+2yEPWRIz(sdmhv;{w^3-=Wd7OSGmqKlYH zs4m6as}J%KrXlJG)*J$zV4Zh#w}W~Q(oCxFBB!Ra*2i`vXdolgTt;i z_j*{A-ni`9T%gD*-&{ND)@Dfjt6LacPGrd5;tCQmy<22Z@079SST(wXMT;Cp(xydc z*@p*HrRB1i(t(^;LVsG-*ONqt%8}v87@pcwTMQbg3lWZZjA!I`cE)HC9+rBwb#xK3 zpL;FA^0upX`tnteAiYz?2(K>76z08_(%x~0gF1&P;poN?eI=(IRt+5C{yFj98zsKSm~{Dn{(>K@OOl7OVP#3F}{%x zfjhx8+rcDu3GUd9JDdD9bvA4! zq26x|;E9J;@S4$97r#Pov%bxzs@ptK$*l?~)x!`VjMZC!(g=UUbqz_REMBv-{OHCr z1|wBmP=>ZU)LHV)(iVDkIC<=)m3Z<>QiG49t`thRjTFEfu=<65$SCZq-Y9{;=E4K^%b5T(*{#g+3^u%>H=DR);;G3d zfNut)Ptk(u0*Z!gW&Y zo>n#z9YiaPt;NlDplw37c~FKhxxt3BwA$H@t?xQ53kl^|pq*M;ZCsu-tt1ZBT9QjD z$CqM`ml5FA6{VKDy{{;eH;4qV|@%sfLh6)riwi!_00 z)Vi1hy0x+UCALA}#;VX)Wer;hDqSXFHBC<#`95FAg(c-ElBN8Gt$IV?~T1W5rP` zT6N9Wf1u9DHs6GCA$nMv4A&~V9jNL=DlVZNS%0Fg?l5;R92hPtgRP{e&=QqSBE})v z6Awxqz(bg=Z~BJz0P<20Hz>nz=t;@u+m`=Kz6+^>%%we2yJ%vZtIEb@lf6tNpnHKr z?`Tnf;B1N=X4JO)T~?HUEiBNiAoh--n!R-=skcfg*%Cw9ULrA=hsEad!9w*BbKNPM2DLzNa7?I_eH~e0Skw$zUt@5~a;^(*+gP$Sv(JsWk;*8601c zgt;C(T#wg8d!<|!;e}hl5pG3=-cub|9yh6w$nSWeiURd}FS%><=w`NQJlmAyhhG0V{(Z;q#(veeg!!#{r2>pVk;B@5Z@ zGx0FO1!kpj{jgamS6UY1)V!!bj}` z-6jCR!WCB6f=*5FO)3^4|MpxTrT=NxXJSJrdafa-WzY)gi&kl{%a+UT68G6Y{gq;p z_>LUIoePm5(Kzd5p>91iP6x2&*zqLO%l!Eore=P9U2$-d(xIARJi-YhV$2(^EQ2b(JqC3+%a2E8+Oa9wE11V?!=h9n$rqS356NE4S9D#MywL z)OcGIrIU+g(@PR9Q&dsuEOwPNtbRi7-X7Z>HJ(4?<)Tp>i_dRx5-jKEEqT;ACXZ63 ztU9YIo(}4%nEMp@LR;3FTHw$ z$a4I$J;7P$Oap|9_@n-b(Av9$o6s8!Us|K=lMqL$Bj@KNbPvP7C|T4U4Bv3cJ8*7jsNo z`r_%W{QCo^H&m75TcELRlD0d7ss@~nKhOw;-6TmvNQl4v9Jlfm7tU+vY0{DhQ0m&w zUM)tAsSgR(1S4mXdvZjw|If{Y~?WO(UAZJTTK^m zAL{IbYc??Mf1XsD(Ukc^X+ z`;nsMedmE@f|&vuq`5^ipP{vZxrIxb`zab~xUiQ{SZd_W|Sy z^;d?fx^!sYj0~$hW5M5j`7AFHKTKbK!EaX#l}VTi=FmxULh>k1L|&TTvL^X0lQA1- zg;WQ?(@s8VkWk#F%fOeG@(-e1F?yQLH?ngW1Ze53k*Ot=$CE|9hO&@AN2wcN^QB@C zf96F4W2NFh@d3@mzMl(rZ0W2_CpE3H)U;IDz8;TxvA=-L>J;UlXsj*ib7dL;V63prW8L~rE}M!N?~8h&_G`=1_l@AJk_weUXDfQ5t>!i- zD5B?7`U+9|kx&VVP&1*{eZ*0$B0Dw*qr2(1s9rm$d`%|1-<~peIvnYq2R(JGJ;qT< zwdZs>j(Wyk!;`J3w6N@uI$Rt&4^V?;tPqVG(a2vY?C$S4fMU+L-j1!IyIk`D!hu~QxkRS02Pu;o*P8C-pwTP$$Rl_5va31yaTBX{Q&QJdn6q$%FEkLXNs1l|)3zUmc2Z2EBuHrcq#~W$AZ5mNeR`U89 z?hzygZpo#oYgz4?h*#Zt%`U;lz%G~4uI(41!cK!D*7vxfvJOVZQi$a|mez+Dg32fk zF#Y4BgN&_T&EHy2Y~BSfr^1FtcS)Gddi!sE@evU6>D}zB-aA?ei}a6vRM1USh@U*~ zGS|AG-|#?h{O+>~HUK^{CsZk3(|Q0Ra?}V8d=K)d52Qg~h)52m?iV457@+!56Z#Ie zk>q&MTATQ)YU{_hUO(G}*8$S0fWd$Hl>0qrxq8CXjUL}{o}E0_X=S@Ju2MKxf>zo` zuq4rERXHV=f0p=F3zIHe)2dck^Y`bcOl=tfgAT3qk623&Q0u&hq6mKJUQ5)D#(gg0ypRUn)-Gk%7`qAu_viQxoUS^Oor=A3iFD_xR zoh$5kwJnkyI$G*Y>hsShkDGSW`0<*t)@b~=kMwi}OZIP)TlQeQuz-C3w03gz2~XR5 z746X<^ej?P5*&-b{Mv@gjaYL#jJ%NhF!M}gEPM#oeDiS}U&ZRxgJ!dPYn#oq8B8J^ zaI~yULTuMFii4_^&eBub^~Bz>V;E!Tv^%;zme;rHZIBKNw^3wD)-z^*`%>bJl(eR? zB&z}qOv+N+Wi1$9r}%|OzK383G%kAa=Kn%Sb=V(>r`L^6?!T6(KRdg95W)yU5op{0%%f3YgHqToPxbMU z?Vm}q{76yDzgz;Uccuj7I#^U732M{%RSm}oua1QzPFcMc-Vh}~h1!T@#2q74AG_d7 zt?1XQ-VUU+IlQpuK;;3FZ#TsK%8lTn5y){lGgzA{Ik#F`_J zx`y`iU82_O)prJpprxzoM*f3gN|g-Qb%U71Os%ikXRIv71x$Sbd|VvvrA6)(#3O;= zwyY|hHL->T9Ey2EJv&jLmV-Ji?GAE(E3X>-Irh}S27 zZO^%ZB-S@FTK0N9M6yMya5A}i9ptdEEX+Wjcz$J3X!^27xwgn_lF}?Ho`NrSE*H^$ zelp=A-xD8WFXwM`(7n4P1@IX8CCmMn_qGKEZ={DA! zpABML?Q_F2Zj$VMcP=>Zv~q}toysaal9yG-nW~ia5iL(Zot8q+WO-6C+G$os<6?*l z^vGE1DqM}nonk)GnE*?Lqr^5FX5^&)YY@DypLK6+B!|aRX1ZG#){gvr>+p6k)wE}B zDP-0=TI5}RmFG_|)XWwn)r!fbxJ6N)*4$q5^Sa`^pgy zi?8V#Ir1MDuU1ZdUP`ZHb81~^ZT5#0g|%iun-DTPUHqdCMQ#L3V^3pLg17oP?3T`D z{1h^TidG!Ati~%$fyq7}7D*#?1qOT`88(=WsK!#m+mM$SP)}6~d_Km5zWwc?woEfW z;jJ@YT1j|cojqQ2Naeb2h@U@b?Q@dzQ#{kX>hMyLt7L?O0umk6-;I}$O+n=K9qNBJ zthkMP41r}zLrZv;99CKTePin&#sYXdnFi2ApAXNcD2;-?9)K_#FMOv8%Si+9q`lT2 zf6yhN1!YQ$+APUnWQOrzyys9G=y8-~--I?mdp>c$f`cX_&c^aH#GYCjKR@tA*NVLq z2+m6eDj@BrBG;{*pVJaOhre$*ccfNCHPA64XY}Ome#FLx_}oAq5nV9*MD{z>e`u>z7$XBOptI-8d7(5sv<4-s1#E%`~rkey^_&0uUL zab-iHM(yWgKWBWEeN!+5nRQ~BZZOP1w6wAq_GRijK-}|Q8!+CB*Eb$lO;xM7W#CC7 z{R#C_BX>2LYsB$$i}6Pni>n+LB4y^`6df?!s)wGJM@RZC?9pIxSZ8BgRNzdf@DJDl zP4-ao&%DdxrF@FEpP6%}zwTm92V8r%tZ9Ezvwhdel_IgilZz5S(KBU|n&0XMrAl*W z+>JMt7lRh*byr}AWNPGoVnF(+}i~Sg&-?ogy%n;Klqh+K7Nje7f zL5s!D(vlMgmQHn`z!vEXBQzb&3a9GFCHEu38e7aKRnq-NLGAz08P3waglhHvHr3r) zap7 zXAWKDs~u`w)$MDi*Zks`1C?U@l@eICMBSVHQziGLj-{{+_N!;RCLU`t3={RkYr6wn z?gL^g49UgFB4{J>`(t!F1dF(~GfJ&J#2n~tCYrIe*+ryBivfowaiVjioMfhenuKFW zxsrnYAx0QqiNTqz;6T~D8w_kfF@GEnWk<+Npi6trk3KJV6$!>Y1$X{Hb_=g)jOOmW zif6i|qppbrj|ypBVN%Hcq>FyE471FjBr;MqET|lykH9{-IS|b*QFy+lTUrJ9Ge)nn z-?DALs82Z6Fzy(kSb$Src1C0N z`^-!+EBQfox}Q0jlDUJC*kN<6@$5NLQ?4+Pdw70j<+;@^&DzU(Eq4g)S7rM4WMq^y zq#0N-e2vOnl`$tqW1WSg4Ksiic|TqDfa zLIxE{s*cBqs{@#9>IPNBR0zK*281E`+;pM=2160MJ5Aix;fl|NXX^3#ZntW~DJ5OH zi#NIQoa$N`2j5=GhYW>P+vh8eYvRT;HAS7dRoEN63jO4Ahzpg>hxu$gkb00Gjf;C4Ir(4Nd^9BEo^!>6 z$eWr(sfl0lXYW^w$hD`I6Hgs1N8bN>s_kugnyP!I>RUxyag*Ish$kmy#CFFDkW;iF zcJmWudF^d?yq^kg|6<)T;VdxWJYe#xXF15&m&uUCu|5j%#qnY?%wJ_X0|M3g#gPtP zv}FgRojH;@b#6eay|8emy=il8lOj7!AiNy;RC?Mx#GsIowdVw1*|xX&;sNmD($AHo zf14Aq|H!ckNb8Bn3`99n`4$ZPT3By^TZ5aOw%cBZf8n^3kk_YF2PrtlB_c-8=CO^Q zfz8nRU0KQb{ecAYbJ1B%)aHQ(e&26a0oCQ#jJiFoSG~$@GrQs6NjZxTRR$-OXntd1 z-MrWnV%1m;{OtlO{ISY&tXiDL3wzI3i67KV-|Ca1-p2RhI3BeoNJ>1qx`wDm#$Bc^ z1jc%Gxu7u^)4UpbNa4eojen|+84b<9s+4~Yi4Bo6x2p72EJ3?Un)3a16yiI?ovdRp z$VB>Bnt^CQh;`EOS3Wf$8j{L*mo5>5_EC`CgM@7@pcBIM<*JrMrJx<=A`w_WTFN=@ z`I4&x2s)g&!rs2jm!FMmA^0I>jkqHHo^)XJ!WkXUS=KCU))V=<_2iAP6Yg5S0+3R} zn~V-XooO#2Uza?%MY=oLk2f+RcnOtlb^#Eika25lO5j|3>4(tfTI3_R^Q{hekrE2+ zup;b&^Qd0q;doAd%>E@Yv<7Ht&!L5v(n$?UMOvZ{=nLqlh@9EFxTbNEFPvj1X$K*M z20lmI^8_5pYc;2{U_D2>TMv=?xn;8WN$nKP-xEf_d)P6Ca${uc7a(j_V3kj~#W5}~42oQY5@h)U!x!v%1 zedVLT-AI~#zirUeN0NJ1^g9U|pV?HlvC3|8gH`4qR{e@%`P-OVT;8F+J>3|7UURhz zS>_DmLplp@aYiop%#8Z07h^NMUL|i)t{=bby#WAON29Mz(ZDYb?a^5#XEKNG&|u)V zcaAPER)BnOXTn5Jg{ZF0`HS1pURTc4Xp)O~SSgbaum*s#dqk%cDQhCuuyW2h)spqV zj8^%BQDPJ0BjMS`NqPlfiM4W1Pbyh;#`M@BD{ zDN2=hd@HdA-oL5sW+?@od8PXrVv?>qA4Z{`_MIl|BDtqkAv&PJCTd@Iu-r{n1KNmr z7ZS?Vg3wgzo~`k3(y6LrY=TT^ayIBW-KNp9u}Qarj-)SXo%CQ{~j9fo!kGP1FJqCEU`9*W-a-hA6W zeoV0(_hfgCxB10i#eV5$Gtzer&F`2|HgC%f#6$atS$faQe%^_gbe*a(J~Fx`ZR$Ti zZcycp$2V^Ivt(UWnZL7L+zrT7b30`wAKmS-psTpI;#%{wTXIFJZ0$Et81l;zx;~Jf zE)&70Lhx$Z2PnMYq1YuRJ&sgw(qJ7)VB+RW)ehMe?A)`Alm!?2x3gUSlud05KAlCT zCF>Q6!<)*5S)@I0|#fTypaC#stZD;+Rq%}lj$Nt zd@!G@IML0~u0E?KQU=C*zg`Gggw&()Tc;2qU0Y?i;7U+#!c)gx=z z=9EKkB?3`FzlY_k!VA1eR5pS^900}&qbBVxbKPFzPp}d5;W}AOmu*DZm7yAJkC|nx zGx4qe0!X)4Q-Y27wXM;DkEW!gXL}UW^8;PrE!+W%Y@y9yu?DXRok>3?qHC#|L}+g9 z2L?+oaXKu__2g_wN1DfwRA&=pz=C=9;-Zwu7jhd%px|UPb#fNsLWl(2(KDzzbxO@r zDvvVF5p-KUNbP#jD6vzegKaakOL_Wdw0W8oC+|wz!Ubec5!yEgZ9X-r`STldzJ%ZleI^>a)#8RD zk+jfS-ZL^d@X)O6b|w+RFKFj9EcBq;vAC_<6_Kfj$Yz+bsJ}pG(%%Nw8kI$BJt;ZR z^-Ift-HAMZm&2M_THewLk)0)|?Y%-vyugz_uBoQt?@-uUP>cpYBX0J9H=LA!)g4Ge zCo3k0zf!q#wS<7BpI@)g|dV5Z2@cnhNOvL)~e38H%f>}y^~=yDF@*v0C1HC*k> zIz4y0BP!;W11}eekYqH!5m&tW;tU!&ExILv0}OZLH=_ey3L@2l2?Fx)PS|a#Ylap? zs+_fLb=>XE8DQoSr{A6yG1HA=SVY~{t~O#=x>q~xWJDw4WB!+%;$LJ7F__DJwkc|? z!@Jzarm^)&aOn+P9jb_M8)l}~<+WdXqaXsfxFW>w-#4!+OrntLAnrjOj;q|g#7ul zSujrZ#5@d2BK(T_$LGyFcJ>K8KP%;Jk&#;mFPt6qIN}LPkHOI%VlQ;&5ScA!D|;|M zxy?F}PS&6_3Op0j1^y`)d_?HR2IG*@n5Zqwn%5ci74hu>w&WAj9tuN^MuLj2!prJW z;BKeTHweDmAah1U_l5EhFeG6UyQ{sxC-UMerb(a9U+JP}dzVf#9SU|)Y)mP^-(^9d z9+X6D(CY*$Qw8HLD@tzD85`waDT?8!d`_+}(E9&eqr=oCRI`ru5o*Py8likKwPok%af9 zmb@!oNZ`Fnl&fm>K&kR8OU_&pBUH`X=U;6|IYAjX?DY7KQ6<+e-qt-xbE|{d>ES0% zA5g;=({r<3rSNEzpIUd6toSFgw-F`$EYgrKJ>GcH}Be}Pl73>4}yR;)TiJZ_6g5vjnSO+S8yJu_BO5v{pIiQ zxEiUO%$8!d`LA7JV6)|pM_&sQ-wh8Op&6=FaXKk`c^vFu`h08e1FLrDR!5#Ko|y>e zV19uRhx8Qge>EowU&=jBbc^*tlf6AiZWbwiRAxdw(D{KCy1+ zxJ_WA4fwPjJpHhSxX;D`btEDU1Lv69lc~!bno5(OeO`Rdt6JKao>eq_o{I5=?`tTD zsn8X4yKW4(Cjo&lNr2lc2MLxe^40rQ?eZdfQa5vsQ1M9Eht|sg#srCLR~Mvh2X9?G z?*Lpp-VEZ7CMqK&e!IztK)#pj;$~ff6JP0VYmUHV;VOTy#KPvNNtAyDfmjSKF3ss2 zuxv@z6(lv5dG}OgYbsM#|3ugy2gf50xvx^A&g&5qE0gP2R2MI1gd~AIg-U+`$8sCX zoissG(?k0h=zH$BZ*abWD(2Pg8)xoQ1Ld#~W%Jx?00Vv2$iH<66>tOEO1bhCTc;|XkTCgI;4V9wFq~4A{7sK;e$VRCi@@hC*aM{N2i(1u zhYBy+kJ$ASR__6JiEKz;-W&8;L)n3{y4Bz?U zS?;Mx$x z7xmJyg-tXZ zqO)Di8(T2O#>FmmREQvs5`re{kjdNWX4&AmgGJAl`~W=z)V)XI#9CAGZgF=m!T67b zlel5x$&T)iA|4+)gUWJpiVCD_dqdjR**6K%fumubEEqV3Ruw+ybuGR0uHdKHoL5_q zM{Iq^VLiVj^zEh9Csnee?AN&>`Mj|tWQ&8PD=UsHd%Rq+E8+J`M5l^|jiomQ+OsZ~ z*9lFgw9>aDfCX_uo7#YWR+o)0uP&@;ZR_`fiOY9#0Q|Z5$>B)#^>!qhnMAQgV0xdN z?_;4qj~GY;vg)CnYNgk19;H%0?!X1!l%Ua9XG8`{u^)Z#)zO%-l6v`7m3a<9yx;3> z!uA>H)2zz-)~Cs}Hi@A;0CF5$u9~Mp6JpRVDf|>4{bnYiNv-q+W94`U6;8Pnpp-AN zgfMz@It7PE$(~L!D)Ee(}Ts-Q-B-~BL z=^_~wS(a94NT_8Vm%%Ug^Zm!?bi2JS%-n`UouM_piSfUecB5k1_c8;(Q!s1O{l5Bh zl-Ujq*mnajTvXIq`~Xx+b62J{U_Lb)VNDi{5%MOlozsd7Wd1}k6DLLKZ*4AoMM`HH z3_vo2vR8b=Vw5p;7X`$*$L_Dsdp7Q;gxauCgMCM@X8itIP(X%{clJy0fXIt@p2V6h zI5s{Dki1ryUgJmI$uQg5U&;Z@y;2-(W8K;&ng%57#6z05 zH~$zJ%wi$$*KV*9$M@_ah`JVC`}9@BwAlwrIPriS%WP~Iy$ie~vcQ=Jg_PI8xXkt# zCa5@yPdy;u9bU6~sZmrpTH(?lZ=P8?N|iv5%)ufLMIclR4R*e^+BhN4D8c|~9ibYU%l9L*&Q^1uPgsc~QUvJUeoVcS zRV@81^EE@*y3iuU^E_}9e@cdV31uHgtj#U#saijiFlH#c+Y=9H*Ey zAhdG8KyE<9*H#RtT+b9Rf8lO69GPVQ-qWXU^JMV49R*C6;Gd~ zTq9igkWrmS)CcGrtXCNV%WR@U(YS({dVwF_OB3^xzZ;(?%2y`{U(mfyOlC+I)CnP$ zYtv42`*>LD%h=NBUtgaVb2H;^60^un_oWT>D5@aT3nL9N^iChk!>(h zx7E!G5oUF*oyj#cr7Iql-LvwMo-4>{7fIAJP1zAB7DBQ=!`gMOnOGKKGlrnloJC!! z^5UJ_ouD;3YGW=wU|3>}W&YewRHiS>4@Q?9}6YDpuV26M(Olc^t$lNm}Ql!A+uBd{$lCE{yC4*UF zTRb9CuYP0t!myx+D`&^KC*`HqJ)fqbWEZVF93YuTWcxxI!}_}caZVY@t&P}k%)96d z`N7ubpHPF>Y@r=Ga7Y=t$`kY>qxr9g;$n(xFe z%M~gwBmZ#>Hh5vC9>UKDP>kKacHupGGlAYT_AtIdaXTuavXY-`e%Nr%4?p>;F2ZGq z(8@d~bA-uCX2)@Gw$P>H$%q-dw_N<&SD~=5klRW4;$tTQ(1o>^VaQSKLYda%IJMsp z>!8AEA&P`e;G~U}QRpLImc@yLsz=z6%@HJDvf0bn78FfY+`3x?;C|c`;u&q>05$un zNIg^EV^amsH>Hy&L2KG2Kn8L}22vex)6iz10V3D`W0Zk$S<;`_TQ+`A>)mj{`{)qq z)NsYQ83gIjYRQ{{N-Xdfaah~rLCx95#T3#A+-4cU-Ny>dTE#p=FrD%0N4@H}7IW(f z;vvj#fth%kUxi{yj}WMLPU(AjD!i);XA_ruV0je1?8cq9j!aMIFc}}oddMVXanVo= zD)HUo)D*>%F-+HN!^tw&cwus=Q?_V3BAt0eu82$5aWzi7QtC%OC$P?QZFh|38jX78 z1Rp09PJ(X6^v!83-`?UO*sAon`{)j&uyc>(8{Ub`iH;jXY?yL`MyNKt&{*v)X#>6T z;a(uh@Pee8;FDsHM=|`CcPssm=yw?{BoY`u%a7GCUx8I7Ea&hxKn9ww=81!s4fi2D zCk@hKt`(<}>%M8^VVcZZ<9_$82|%UBSpv@}n#Jx>weVZ)qEtB!^V4RQ&zP!-t;9)# zh)Kv(N~so6|F$RSm9yF^nmnD-$=lE-P^(Th#&kOu%{8#1YCI0U4=lmzY-<|$n=f4O0XPEyy{+JA(yV=>9 znEo30pYz{kHb%xT?4R-f9LyY?e_iKK`OgG7KPUKC+dt3$Zui-jm6h$k#rbO@{~q-3 zS^qU54#vNN{&RAlo&T)dpCEs);9ryaeE#=p|Ec>^{KAntz6#g;J|1KZ=L%{g&{=q-Fhkx@Y{zXdsFBXCE(*&_G zG-Ech~+x`xlGA^!axF8#(!R7U91V1N}3T&j0^g>_4#x9IXGhiop5_ z7yK)?7xTZT5Bfh;gwNl3_Wyzq{-_Ad|H`Vv$ic$G`d?N5Lq(`;RCX`%Yaqj0H#>^3 zb+K7@%~@%-T|ZuFUS#B!9B!Vxdg;D8Uv<8)KQu8T+<;WAs6A~trE@Y8MfW69_A<_E z?aYSdWd=oM7ucFxT3OUw-BR1ikxtRWwzz~bFf%X;BcZ@_1i@+3SX+<4X#;8l#t~5V z|2hNK(+6U3xVsxj0vW!-?arl{q1_5px{$$^n1Q%$gAME%VQ3TQf zh-+1gi(7kb9hfE?_)t#FmF{!EQM^5KQv*YbcZ47*Q$WnGe#lM^_3Um;_23$7z|laF z4^wngwpbU#LvlwXhBBAs9f?)-qc^nCH3~IBxtDFiE7j z&HZ6#`VVsTh6Mb}iW`Dr;wfhCa*Yt=QUC=zr#6=6AGvVHpE`px357ClUIR1UGk+7n zBO8!~dfhE!zyHf%@43e2)lc+Y9wCKpN&uG`g2N2sGg1U>50-_UCFJnabhX54`YLEz z`X`9s;_`$z0e^f~16lB5Ze9v3CqSa?#f>ZPPdNh@tGKl_I0pum_tLGLzSAwg4}gdO zXoG#&$3FsOHvr|cfE!dm_s2A#sj;;pCZ;2v7D?d#>Jvn0Zegtl9a(nC&? zTQyd^0qlP`glB$RP7+KCX+(bnR8UmZ+wKwo;kKWaC!jbwEjyy~gukM2*T}@&YTx9A zA0N;|UM(jlz@6%c50saE;^xtTV^fcT?fjREQ2L((BLL_+N!K zi;j1Tc;So|=!GYEmcxH{=_PE2&Kw#j@o!`+DJ=o+fkipy2T#GA-(~OxPSw!-1t0eP z_stWwu)eRx%)te!>3h4%#e3hpiE#2TvT@D1!E!qI%V%ODN>3RFU!;19W$o@-9^cKF z+<-qH4xQ+9X3duOC zM&!mGw~SPlH~I=cMlL*44Znzz@VkY&JW#1;k-aH8-$jZ*SVF%pVU}|x=j~rBHM?pQ zlofH!%O}Z@(cW8hY05Q2@Blk8`W9LAzW7IsCF%CgX}r^6ZWA(icYa|l#}M<=d%SpHX`9Vh!j;oj)eEC* zkkA4dEpa`lb?!1(`{b-|xZ$Xho3_nF+%Z!5 zzjk3fn?|)HdoMxCWnlT^Mw*-HbfQmmcdGDnI)&4+`=U7ZQg{fn z0Z-R#SbG$10&0b6zY)VcqO6e?<3{Syq$fZh4H(UtY)++XHDMb8JYCw+I67vHFNINJ zwqWtbtGoWPAJZGqBJW`8{$MFp?i&Ri4$&0k4*Re^Zf@Dj2?hBzn56qXKbAj3T>D$R zQ$ew{=1X-Qnlc?WX5FB2{-z~Zlo(r&o756&q(Ok9t4{OxD78rAS9s*Rd8k@%J;~-M zP1*xx$u(klWPE7*Y9vfat29UaB^yg+b46>|ZBc9k!^#apJsOerUmlreh}?-mrqFw^aVAq zq6b%OcC5|@b{>{kY`ZZ+o_Fzo&G`qcXkqy;luC?Hn7((H1`5UO_-i2XK_}$(@=j$# zb?@=p4@Hl{@AfM4SHrZI9_SutR}d`B>rQq*|XygX1+rU2U~plH+U7K3$bu!=lE_$-z@} zv(fn}_!j@>E^(gSLO2adjopcKaE+SWC9@%)>V zk^3$qX&iqyH(oKht6>fCc56{BRwzn3IwP38cUz7<(q6au?CpY3JHMVt;0N&T*-AUD z`Dr&KZ#a26QrncO6v3Q5_Bzb=QowDxzi9o#IASwp&f}$yg|`V>GaL6nxJSYJ7MLWC zdo9mP|7#pdVmap2)cZs072!M4&UO3)yy_~tS$p&xYf!3WEiE>>xYky8!IN?32SuM5 zv;_BM%PP0%l!kaR2sX8cP!U`d?mG*A}cQ4#=6a@)EZ$o^|rW!}QjZT0K z3;xwnOry>8F9Sjo=7w((} zPj#Aay?W^G9yp#~aa)Ds!8}9^ae|S(CtnjfN+n#p7zWb8+oe(j?wl%{-mR!J;Q}iy zvcG=Fu+@_{O(RahLdJB$`BLhhE;Jt^*6GTFxqzPo@C@%aJjnyr?1{I&o*otxol{jA>wKj?DRMw@| zecC;yMj3*bkYNgE1v%OCBH!N7oy&HUIlluA!c!0Z>5Ao!6jk_~8wvT)Eu+?6WQd|= z_91!q9s()YAJAECp@_AMwH%@8JmJb4W_%a|{IiYzG~B_ft;4nc1KC&)QF5rk5iH^6 zNp1!Uyv5FXk{<{=sC7v#<||y7qwL`JbcDHRF>17{AJ#F4JH zMRcakwYMu3IQmOrzUlny=m%w}1x4L5y8E35HOWNyAt7mXPFu%zr^-C%}k zIs3ep!d?eva=F4P_u(oqSn91a0HN`U1HYh$HjcQrG|7*&H}&o*?j$FB7w8wUK)g2LIV$jIz(R^ruJD5lw~xdl`wjixy+A(qY=O%l|ATk2 z0SKIul{B0j*kGfCLP*3pR>QP`9M|mH8nU|OJ_mp03vFC>U_pB=orN;^J^paTnYJf& z0E&Gja(bcS(fPVGzkKs~IpUyhT_cXVco&2q`+{%KM{vhVT1xI-KxC;O+j)1`MA?;YkGOFTK@i{veQK>aaV2VNmvAIT`v?92_S z!Je}S-dz+_3zdcjR>h%_IStcNJZeR9+tmbdD^X}MCnAcoL2z_<+*{M3uXbu;ss~@b zh!A@CPggO36D|0J7stP=NG#}1$ewYG$RV}eSxV)!w3IatBM1xI401W!FJ22FT<_~2%h0#qm zW8~={u0KlLNhWoZyOq{gpwePRnW-4`J|2@&jJ1_4a|bd=p&G1oyru&f6K>w#96#Og zL1+V2rt@e`Ud0r7oJkZ~_h7sTkBS_D*D*vSH1WvT?!2+Hzujd;_&*;j9^|KVNLx?p zFG4Ce&`95xLvCLX$RY^VXoN@lbr?`qQNMXBFBen7Di9j=S0;`O6DSSXeXPn2Zc`7O zyf9}`O|_tQp8&>3tSqJU5a#AM{aJ=+_cYV`{G_RoKN^E1V{X15uWco{B_%qNBTznt)TCI9=FziA&)q2N=*Kx+|7XjKaun3SI6ZN?%hiS{OmU)j05b=QCWRi|29j`<>J8 zZ$TT>A~tMy3k&a0Cz| z;j)A2F3EXs)SQQokMk_VR)1XV-;3n60?D3pj^;s;t0`i>aM>+J?|nj&g;^^7mZB)e zyeB!J`zsDQWN(Z!7MDxqeb`noixaL_Z0Nzs9yinItb3p2fkg|KICvnr_iP$x9( ztuaq{MEkh2fh@eC(mp3DX+Z_}QKGf99+=#}kakWFZ7o1QC(Xh_piS(_i;F4nRRg9` z-_m2Nse9_H663egg7&_GW}S-sOX^tX%3KJ330*6L-+y;6*-WC!!@c^eB2Kze@diK0 z*boKvPP%p(XttB0D(1@Uu&9qoFYkVt2b#(23Hp#wf4|@j4cZ&in2GMp0{feD z`0>#XYwN?wla`VA;F?W%pdpKv5AO_<*$%eB0sL&0rfsZwa z3BlID--6a5wDP7GBi}jk4yfB?CPB86;Bs7e9q+V!`%sDZ0(2nLy6_y7S7pr1M$uPn zWS#L7g&e~zoQW1eFjRL({{j0iISfw3T?bbM|7$V1w-26DW1R3M-~M= zx>B3lMJQ2rEb12CD~zK+SbbtUGmy8u6b=9){LZ@Cd$l39TYuWkr#%mKjlWeS2Dc_6 z+@ap=B!j;^wHhB-xU}Nu5m`yx%4^In$N2IU;BkP~xo*)w`sTRT%2b~B@=Wc8Or0XYoLf!n+&`;JZ7Ox2uecM#!JJ_vGgD47M3$MKnPwMYh_Hk(K(8Ty`#^ z#q(tTx+_(Clfc(J8rsD)b?*#vbl}}MUmMF6h_CGuu(_s;@@tBlNNfUmT{vnU;vwxUtAwzTwZ*#WXF*4yd*she zdJ8#bTv{Mir=%kw$5og^Aw~Z63#hIuxkJoDI_C}&Yu3`PePkkm`pbWvZ3|^Bp?-Cg zM`4COEKSDu9K*kalRGT==^_e^&Hdk?Q5;3j=9Z0Y?RE4WH>W4n#LJo)WNLq3x#u$4c>UI-XdH=} z>9>gPmsGtdeF^;)1po|9`>xO9@%G1kl5}!z+z?8iv*8_Sl7DZ9Ap`Nu5;u_i`>#ev z?pVR61z-UR!7V&!g_A(z$as*nBaOI$@l#sY91BU#a%Ua)&7;E;;TC}$#UeIWu$*7W zXtR@nvu*k3dSqfMPKy+uA3JQy;B)AxzjK3!?Zf3``#yt5cvx(Y3JQ|>+quCkh?8l! zMl$HDBK}%h`(}n$Ba0;;-pRuk`Zh;9ZoME!A9PuO$ zW__?!I)$KK`AOHp?5ONUK4BaPQa1-f#hUp>nDWrZQWitpIlAuZ!D$BzN4AmqwkvWH ze?Klf#Np>>g!!JJlZ;C3FYTv%tdKg@=am%R2Nj`E_K=P3Vcc@7^|6B87C6uEDV_4d zZeraHG65#$=5!fux=<>qt8*T)`TZ2N6_{lQ7Km~S3Leioe*xH~Kw*_$P0jFppJKmo z4}H3wUX;9rn&?+AT>B;A@fdd#EaS5hh^)6e%|yD+dfPErdk_9GTTrq=N9oQw&RKeg zuSoaQXV8En?4+lvtHQnN_WjZXlX%=($n$DF>96!Zeu+EWPD0fFQm=S-O6ZIxHuan7 z6HpTc^2TpyYdO2>C<-0IYLb+QV?VjW+YfG{4ntUZfBudPvTE$4go&B8iceU>`<*C2 zh+$0%IvO~VplwLj!vgcQBm!t7K-O;$gEMncrW4W^3*2B3lqFDfyG67!dE#6% z4yJ05aKm?m#Puq0K+*tji2p@4J1I0=4G0n+NJmxJHn0f3gL(K)1^;wgceq~$o#An_ zyeb_A-j}RWyzTo02)QUp=q3$*3PKTMD2Q!F_qcg2UiV7m{nl}%?mV&1&@(Y8A=q(T zdw$j8&^HsFSV3W7-tl8e`RmVb&QP3XT6XpoRJBpzS@MYw~VyG-c*-B&}~7h&<| zhcX53SqtBR+?;}m`Hn1a7aK??FRnC+ zk*dlr**(mEGXoi>HdR@?l%;lZP+hbzJ+$N5{9y*$m2L=KeSb>?bBIXq`Nxq`jti9% zHzjRGgGS<%xIpnwZw4yK)_{si)4`&U-lpZKuW5aura6Cs)M>b+Y;{C~1_mititS)t zlBDSD;pMKwEv*4GPqcqZ#2|~za7|R4$H$i{0>0`$3vY;Q=R@!;$)#1TZOcuCab@QG zT2QJpoMZ(|+w0>g5dNSr>&9eK4?laKHk}q&b7ReSbK)eKX7eFo&|(Bvd8pPk_jXOw zRSu7kskl%>(@&#g??>T;q}~x2Dz0S|;csi_FRg3G^#OH}58BT;vTS!Ci6Qv~9s1?`3vZ*Cw;2?hooPo7DVGCdz@ z$IsA;MRr_R(j!F?2reO$jkM>|HA4^*Me_SEE>LzGr7vX(4Whlc zJp+TJDz1C*<4*@E<{}B7L&xYrBJrv$*X5Sl0veuOD5=xt17NXgGhL*s3!`gyYyZ?0 zD#wR6A#-@OXU@U^igk8w62zE~%M)uL6g82jjhqy4nIx96%dX011e8`(+qU)~wUPx? zsFP#S9g~4jmZxYTxKGShFIoc1X)ZQ#TqqdWP_*;lR;A-`pTU8!IA<@DA=B$(I{&1p zhZDPRoOzYq2lcB_;PPqhr;D((HF29LJYwmyC~|{vKElLvyfN5crX-(9hEQv4!vz?Id zq@$T5zckt_sMbF?YK|TkmxUi1jXP`AB02$i-ypq1-9x(gf|L2`!)s{dKOl)UI3u5Y zR4X)}#|Og7(UY^1_pegAKVrzWKcOX^Vv%-HX@3U~pIrTTdDOMXB&AA6#(8uNXl1b0 z!+!)9+@c3^`^+S#udBke=r$_{xTEUw zurSvsG6!=)8A2~UE@m*+jmA0@z=N}=4a$gZE)IY8!WtXrk0P=<`PQobkqw)=F{hgc zA-iY(x(n+#QfyfCs=3`KFC1v42ymyvFLNyxq1BMu)L|uMm$=%(I^%eTdEn0WyqUo^ zY8d>Z2KU&V2bO*y@P}2ED0NS>#DYmpx)1MQL(sjs0}+oP&9Vtj#7USLU2BA!7qw0tBm3U!h)O zQ>3+a+Bn=wP>W~l&Y1?CuveiKo98)(-#nvj56&jeH*EtIJv;ZzANF?MQlnSbFN*g< zl=ry$TjcTYsGGAh3(K0+ue`-jxtY+%=Ug=|Q#>A{*eJ4apE;RCW(U;-T?-D{teXBB!l7;R|H$u;{s!L}gr&-Ev|>dv%_m|bH_7!U43(tqai=yr;h;d}pjh$Pq;8=gwA$t=LcPVv7)pDnc zm!`QJNWeG1f}`^KE-j%!=w{gwEkjhB`Jaqw>7M2CCJgMB)ncqMd0i-vZ?VnMTb(b3 z!N`BUed;lep7Ihxe6TXen1@OqapBp9m4+{db2mDvc&tcZ2MIaEZjw-o!qj9T)`L@* z!d}n+<&vfiv^LI^-SwL|Oo|K6hySS!4S?hEHD&GWU}fU=g*H|(5tfq=UQ9*+$HapE za2KfHERtO5z_YK{n*#gg^*z^wRAAw8+TgyOi;X%84h_T*r zY$4hb)`lx}k_!86O~R!B(Lxvj!uqZIb&l5TbiwVBH&EQw$IHWVvz{;_!#!DPF_wxq z>+Oa8iMvzz2pt}82REf~;jc(AD0+0KE7e5(Iv=IhS-jXx0JXMtEkA_eMdZ0EU(4!T z%K4uuAvZ57MOCpNbIq59fSQS7DDg3hcaMVz;~5;<*$y!T@OPpB4TK z#j2EvFT{4Ha)!$+x9H%6&BB7p))pjEYOA$t5L+a&jS9DA%gG?a@(+^w{C_p$@+rY& zFC>OdyJ}@IXBVgUf9MzltS-(fx4}o5JXph{of-@qZ;W&+^hE8U?fL|KXB+RGNP|h~ z;F-0v!^pn5G)CFEc_s)w;nV!kxK}BUJ@ncqTSJdZSg?;hG6L~43+|D2G+TS;F}W)m z=I*ma%5=8eKvz4@g=h-sz+)$+AQy(A)=|rq$~i%izwJe(wRieePZ@(1HaYTkZIWp` zgI6-eV*`&=6GgD9(}r>gQ?)4J2GIe6$b9r+_%fE3O#!k{J35pgywk~8(v5)Y;Dwy} z(j+Hp@X{u~N81>R_%W^{jiyXatnGn(U3>PN=9J_tG)DcNC9W(GcuArO8z$i-= zjQdI>jI8xatv^P=v?#`N7&Vgnh0u!j%$@LR5R&n!{o&bmR|$q54yoF%mpT(}gYpk5E3_1#a!#*fjoK6& zR@9B+x+=E#K%q^`byo`Thy^v4u$Q7eCFD1>lZIXSvNAYe!kA9VdhN((%SP*xq>19s zj{~HvZp_ieY_ps=F2QasjZEQKaL8REHR;9%G(mQUJdg=mtMIJw$RCKpWMLF*XDlaocL&C&rFG360;^&<^&1~<3Mw&=kNzxQq z)gyOGk@?0!aSSYq_2Y)D!Ho6DGFdp`{u!a?*A_h44v&rYjOF>r?*3r%7X7hB6VK(E z@BeB`4%;J2689I{K8tRVXr!XxaNoKMdhs#uny7?s<6_Stt({!EglM?SpCgs`o%o!U zR+x!xR?oJAFIi4kbECMM8|tpao!~|FiwvAe&1N zrVqo1pX)Sb0fkesXnCI=)aH@cl7$D zDTT7OxIHy#$&><$iVhXSTN!`K+?7KNj`H9g1>+Lb9p5E%yFbi)u#Tu`BxKNQtjG37 zkd`*o=KD+E{iv@-m5u0jJ01$q_US`WM~y)}1(TO_^3`>n6IaWiu-+rdGR2l+*UYgs zmR+|dPN^zNe8>Bp#a_{PA@N4=bp%t+cTDb=lJSXres2Qvz&N0V%+fb~0D=64?}+Km zZ=Wk}MZ^ZT_yR>JC-&U?|Ze%WCgBkpl(lzK$bD4c2Gq#)$J?`^1B+Gq*c1g1uf{}c=6o4 zl6Q^9ZDDxD0V#U#6ZrPUM`g@B&2Po>akS!iJ9jrh;FYSR19g?g`xG-Ie}@b<=})0- z5lTbx9zjkJw;s}P@gZ|I$=cITQ1j*t_0q)4ejO;iK{6yITOQlYVZ)?}h4T&jDeWFi zyUXoGK)>Nqbu}Ih-r-iRuv@e?-p^gydGJbcru3mHGC+JNL&=-WLEeE&qw9gAC?L?c z3X<8Jf^up%NvLb_X4-qe! z6uGff>qwQR3y4hz9Yvy%l^V%BToW#QGH+ggFm6SguCv2&ROZqP6NEtH%`_qC0njH{ zoeZyf>aAleDit1#x@^(XO3NFSOah`L<==~p&*_BZMKqVnmXWJwP#eqqaL4Yson^nv9sEkcAKfKFh^Kk^V2{Dpe+kC;{LRZ+?f$S$T%@Md~G@Pa_a=M?DMb-BBy5^ z+-sQBr|k5`3X#BBb;RAV3bW5dJnsdxw4`gKzyEW=w|_ zUq32I#IA2sZS2q%fzDJ^z4l!)9(YK5!Xi;@}sxNkr#Y&?!JLHjI{dUoq9B zrOZJj>w6I-MbSb~^J_8Z`)_d!>KJK^bFjm3jEbZ4k5S0MaRblg(M=cRqO+Yr)O_hf z>e#I?YLfC7IKj0NidAr6YdI0yrcF#LQFN63WlpA{#@(_v@EiP=UdLOAPLN(mN8a@V35)fcUBCpOreRIL@RAR%1X+@ZXjLul_Uq z2#(Qm0_*HpvL$X03M<^`V@FN!h2e;diYp>}^MVz<7B%`P)*gO>=3_P5ij)|yK_cW- z1}L+-{9lf`8B`LV`)YrAx%U0j`;qV4V4&}M0_n<*ZrDPo8Xy|5i>r9Sw%?k%LK2swqOv&8iqnqw9t z5VzM!NQor#@^|{&SMk-zRup4Bu)v3>&lY4@*8XPE1LM5UQu+K4D?w2 zPc@Q;_&peP_V%%jCf^GZ;(-P6*Equ;;@F6t7&AxdTZ;Nz_N1u(1Gm8pbRoJ89J1d{ zs0sL~IwOo>{nO~9JIxBjl+}ZUsF{msI`qHDNu5iX^bX${JL4v*4?;K8u!(lYHSRK5 zB@qLi0^}w2C~818tRVywtdoduwgnZ01zQl?7Nf!I{<4am*u1Z$Ms=lm!Ll>)4+Q

=ytg^8W!+Dz$BxA{9Cc$Wv~Ha5AN-0&FskS8-Jz@ z+SDo(zY7I{GISKLoq+LrwBa{N+v>X4yFnd^hXrGR`z%juar1hDan)Q?(=<=){N(hV z%1JY7frNZ;F^0=1FUU1@EgwY;KHc^-!#_2DkBsR2wNAO98Q5+hz-Ri^>ojP2mIps%IHw$mcdZ2IT zbZEb6Iv0GAo(hJe*VjnX-9SYfq^fiMPyA=zvrKn*gk0j2TVRNDgh5(Dfc2OP{{g(! zZspP@PxlL#U#8g@!v0m6G!P8)X-+Dv6!AAh@7{ZI*bj1M=v-o`3y33tx|NrhlG9sT z7<(VBsb{4yUT&)@xI5c{>(ZXh&_?$_w;mI2FQU&kvNny!B7_yXU(W`^S$jwMPDjRA zXE6Gv%OfCzmOR0O>do}GMyUudNs8FswR7?0H9e*rzX7CtODK!~;;oFWLWdGEj{#?i z(8}88kAcfMm6ciZtm6!mx@j8vhTVujpE_4ws&YAj*oIki`PoHS*_a77)9KXgH8efa zlAwrenZ+uR;`Y0Ohs+mQ6V?{jij#P=b~vZiT`!_&g#=;j6GzqI#HLMx&+T-<`#4{2I+4DxL(;=lO68kdlLrB?WeD ztDDH;(MLKv^SP(DknW#ySVj@1Rg#I=PU;&W`7Qk>CZ#koU7TJL_)^Th5p!%-qCvI^ zxH9eDocA(PC#$Z9p;a6fjwj1z-vrQ)T^s^@FE&|z0N#JshSg-1UkwJv?lYj_u+?FI zgzl5?N=_lBh|I7wBS4@J<_@OH73)%(If^eNX+2_xJbg4TzrZ1%d>Y^geH$k*Z@)1& z9Nu|ty_RZjRu(PiMUX=bGevjm+#m3rXp#pYw_NbLE{R_oE{OXujK5=%7x!{z2$%mD?S-ai2c% z=HQoEH{}teTCFYM1CyyEL%9iSEBA|?lO_?d3Mk;b6fmfU_W;-3k=k#N{mIxEI#5VO zQObo_ObL2H>zo@VH!^44X#E)~weXNRnpcW5_QVq8c&K9YDyeKUcs?(;C6hu=R%=>r z$@)^Slf*#>zk>$e#?5MYB}EhgYt5XC+&FUH;h8Yb7PlscL(1_<-*Z#po_+vArj|SH z`vYEI04ZC|<=g~qX|79eDgD|X639k1-m0CrSh@5P-uI>RSf@eSQwo3UP^8DrM^1B8V(l#NvNf(8 z{o{@M*Tk~99?>JPKW?OXilAB5%EyZ{MJHTei1|l$5R?b`Kv%I$ z1{F;gg$Vf3+sV;A`KjqH+X?=w0gX8x=a_WhK_$wG1e>{?16l;3IRnra!ZJ5?v6 z;W4Q6<0Wz>aFOF41k5l(%Sy^ZZ7sqRT7vs0?)*vA#AEkwhre56Y7h98es|wnD4>E; z#(>!B{hqE8oGNqOoUl~B96=2n*YdXgZBK^LMxV+1k>(%*BH8P6^1cP)XBb@OToSo4J)WgBWMhw>sXMyOd|N zL&0p4-}x{klzUS3hZlNyisMh5L?DZrnESwzjJU4~S#=&;q0B)udsVmtYXW^&n{y~f8_o;xj2?^heZ?WFi$g=b=LO24$9 zt4Bv2M|J8h<>&GvUB=#?%uS^ zdw=OXjbW6)IV3-B7lP?sS2*w@|9lEz_&~se}p<{!<#QwJY&^ zR^!hJ>rJg&W#YWWBv3USbdh0yS*H&B71-cwpCoxX@HMSeV;dp2_y;+Y z`B9WXLUFm=Er{K=pht5vY-y*NTmb0HqO(f7f;+OQ!*%(eF=L7royif%WJ8_#=?b^s zgW$$RNK)M_mb}vIR?D}y zAJXc-v-DcStq4SK=#G!FMu(>Kd2at$ygD#LN($U}?AeF6*2 zwYDTu4*lrVshvONO?h)kQTGHe@m-es-B&Zl8goH+rloQJwoJQ#o+NPQ$Sqjwwfn=d@bPl*#RuNoHe2!a%*8vB zUxGmEG2$V0`x{=63!|EODtN^=$pULR_AwX`H9Yc@_q0=&53xAdJeXOvY~kqW-|3i%1q^e)jBUvAu z(UR1Cqmr@fup)Y3KSz2(hTy}Ti)^B3%E7J$DiIgEKSeoXv=kx%Cc>WkXEIoIPs!&Gum z{%H`on>Q9}z%a5QtPJJ+Dq?|=M-zz8SRUln8;d}fj=`elX%0sutmlZaHmR2OMcXXF3N${?v#9TIgU|X{nH}tJb{=K1CYBfY% z#z+9?ujf#1$LF$6T}UFPL8Wrm2uH|iPOcsRfdihLZKKEA5zOmQga2wvl^Y^g5eKPTH#KqQ;7)B_HJ>$=n0%o;_ONZiZO}`^ z4wuDs;=zZ_-|6KFj|!iir`afSm%0Os7Pc!MrrIE!0>Tsb=5h~nuag)ddc}#rp2sA2 zt>=uJ=FSi)H_olwFM;*MPQ*`EyH^>WUCxLeypYR551DLkThI^_zDP7QIUd;7+^s@V z@uIXsNA?@ntTOL8crtX;?@fA-f2{x6}xHw!DP>r{Y=9QjMF^=XoB&@11HRgQ542a#v$8J@Cf>xJ7HDlzIPbnLol)}&QbI6v z9ac~cZ|XM!C_a$)4coJ+ajxh&UCB6m&_d}CB>{-lapV;#@92Wg+LM?tSBQ5u5BuO8 zxcE;jbLDj8RJ-n7^Wr|{h<`nMaq z2a4v(SH0`{ERjw#1;GQY{%0Cjg70Xl#mu6Fn+n|?ABUM_BXX4((0;Rl^vQIA``_gs zW|`3;-Ax)^6t0lIYm|+5O`K)!C^C?@%{m%7yr_8iW9SZh_e{tV^E zW^V;-zA6;69F<3M_NM3}YvBUE+gx$V7rIZ|jD@n93{DlF?U0B>!#w7W5U9gLlEp+_^)AuFa#aNHgq=O<(HP(AV#-YC~|rH z7&hF@7GE4$V|I>~$yW>?91LMOp3;Y2aRU^Bq;PiBBBR1lCaWzbQBixs&1Fd-Gs*pm2 z0?^NgjrU#r4@Fmg%(^Y9vV`6sY0H44Mz~gSsX=AmM0nZ6DXWLLjAADsTr1W#XAnGc%P zJL$l6$BY%L9vkB06*EYMTX1{SP#U}eP{{a2vXJZhT+Wd!DnARH5MH$ct!0?4_~WG1M5zKsvhL zwe;R#AGO9NJFuS`WBQ<%*0Hxx67QH>+m5J@ds%f>z;D%KZUk72Bj`?s<1>e|+Bi=n zn#roNpTdLxHpr=XZB=^_jI=Y)kM_Diwwxa3no?b4<}%zya;j~d66%BJ#E8Of^~GQt z%ojJET`O>2B-g|;nFqg9a3CgGjMKP#`D12)47Z?*wFsg}5bZE<9{(&EAaAu;DH$!H zpA6+{7GT^InFgpsMSUebD21M*WR784#D4VfRH`cc3QJ=VW3okBTLka~j1QmCe^75uO zSl7&!r5m+&T&>*am%N#*ASsdrCDS_$=kcYUAgD}0iV54i;^oq4B+4yK5NJNgkb$#}@o z%drd`h?6Ovd1?SP`QfIt*%9+y@dCR|?YPen zShpqc*oPL_Y+?&as$|&LxL^ysJ{CMQdT$eza6d&ym_#mYqLLUz##NUcv?!oMuL;lE zkfPk}!L81k;ore|&~yI30ICXA_0zkk)JOc-h*(5Y0(OKf^Vt*>I8Qm8vmWX|m{;o^7UL-!~;D=@=_xUk^3`; z$W0infbZK>$pJ#F*H>_IXvtg+Jm3WMM!uMoh*jmcN0eUXK&1l?SWFF%*pqYyv@02s zJAaNx0D%eAjGOj^OD<)71&%DmKvRTkIHc_dR@ol=fxdy$8o)6R9vi_oiKhm-*T#89 zn@1wlVgtr~j>rf_Y3VUEsq^vD)U2WkG@q{L}laLp^v7Qk$E0K@-S&?&<;|Ra*<`?6qin0k~uXu zZge!L@2E|lPp|Uwf>p09M5&+y$WOIn7GHHD#6w{FO?h27i%~T{Nk8Pma(HGE-6DD0 zO`mPK%Cl_e8FSvC()9YLHH%0VS>Gd& zd~c&vd93(q!U7o7Pv=uT$SPO4I}b+*L!~iF(g)s~YZj-~M{_^H=G)u@nKRAJE|aFs zEy6t?L@x7W+7nbGvGh`fz%OP!&-h5V3h4!=5KKAQat|l2+)5_W>t?|GT{r_Z3tPnS zNw9Xop(obfC4S0FBIhSjx3@Tk!DdG9nxS153R~sI%e=O3 z|JvV-`tgn}p*%tncILGGQXq8jRK)*(0kQ=ts1PF=5^zfp3w74%lNWg^F#vXUqgkV7 zNvqK>Vx&G9keCBY5m7o0`hGuwnpT2_hC}yq%Q?D?+fJzxw(`1z1`~KSl}PLRJXIU& zhv6dUh;-exkvM?2&(d+rNAB;B8fw1lIG!!=OS?zW6^4zb3*YUqu+0!~I~4}=fCxZv z8ICvSwidGCiprG%WPTXdag!)bLs*XH$SlwTR6FOmp80*TIa!6Q>e(me7 z5E;?E^vj?GIv+U@0g>x#v@$^vjAB%!tKaHsGZQ##;#OAc+?`!{Jd|4>Pon zC?&4(m}j=zSQ>jo!mYPalPry!E!@hIw{GHIghIw8DY8U#iL$iVrIZxeNm*-38(GSG z&NNe+@qXUV=Y2k(%(o$mR$8N zhJI{8Y_!@XR&o3OwifJ>{H=OkB~mG4CfTZWP1)0XX6&1_{6lF$-AvMZ^Ms}y`!}Dq zKc@cWqsxh{r5?9aim?;xZd`YqW=eN09xlmu7JX`b?q2*FxxAm>^mVsA%~|Xnb6#%A zw)NwR?q}lawi#XtU^|PX?vj4(A%UiPooLGAL~W}w7F&Gnk{|v0O5GtUvrl4AwoQL= zu+?a#y+}mYC#S~OZ?b$sqrObVc(G1hs64h@b;ZZTz;>j-XH3OA^Z6djMQhsFl5IpI z*5?sFHb%w#y?U#yW>qnU?WSCWuN8V zPxN=kYr6;8#>zyOZ}6{*F}fylw926Vj*>(ngY0ND34Y>~As(Jf4+vQ~*z~TYMN}tX z;rmwyiZM)D`Ki?XIK@2qe^V5S3-6sqGTcYX%kEg@JQnR6F7uUD37j~D+^M>Gqt)g$ zQ~dQ=>2$G6w$sxQdG;Kagr&BJm=&T8QJ;?wFJWbx?Cq!uG0_QY!=I#x=gd;Eo;%avvZa9-B2dOa_{hpWz9wpG#YlEJRZ(8+`Dyes8c3m>D!Dm zI(kl)2W_+P>IS0uk*AtAjayB&`V%H2WbUVjVs<{8S=bfK!AfVyTy>7Dx%|Gr=ks~b zEy0P2s%95b5>9X;hGhqfI*gVCvHeSx+3G}Vr+DjQJCG#98q?5Ya_0b1_anQ1s^slr zL(0Q@KGQ8Xq(%>|dzk(tBenZ&^p3L5P|l~clGEXKw2iAH>J7v?es3<$F`v03dvZgP za>#I+2PP+8y|iq5ng62JSCaDv5*F^hzIv@ph@F0+$fI{x90F@CDwCCVE6iNjVMU4| z`zUQ&pxq+>!k$z{ZL6(pTzh33%k8eXhJB#N%P$_aj}R6R0mb z>(oc(CR9`JJ*#iUwwtuqhhDe7&*;>yP;C#e?O6H53yI8^{`2guT*=L7?B|;yAI4LT ztW2s&+AFWwjo=34N>ggzUG({2|1nGfopLd?Xb@w}r0mUBqAx0<|LSbQu9OO5Dy_<< zgn7m{g}#j1x&ZrXy1(;TvqkvN^_PER^<qB|i2PRz~Kbd&E+$e8rpe+94?wg(z$l-y>O*C{oA?C&6mh=sc$=B$) znVIk2p2hU);)2mcC)EeUBJY7$+gRJxbWB}qC99k}R~lc@n>p!8md+X3EwZab@=F9R zZ$UHjz!ty1^WJEv6m!7Zq6;9+a7jix6T^521Xg7euwbQwu`2JuVF(=%E~JTvk0`;s2#0gucK=1Z(gc^pmO$ zXa{+8gpg{GI|ebpnBf>Ut`C6ekN=Ls8^bwY4(h@&m!6QP_l>p?%pnff;pYt{eWf^r z81w_iH@p89Gr+(3&Ktwr@L2}=J>N%ej6e?JT>p4uxHby&4d$>Xq6n`xd`nP*ODH#c z$*%y23rfMbXV;UvCeR`PYDlQW6^4RTU;uJB!ZCCLDt+zw#`rd14_$&iSDFOFg^qficFP?jeT^-v;6D{ukIaB<}8dSrm{8*~+VFjs?N!ScZp&2HTF;F`QPmo6WJ ze(}eGJ@@!PKVb>xXwddtIKS-tes<1;#&BB$8v<=M0VNp}fqS57H2i<(>Z9oD`uKV~ zJGe_=jwCIZ2Og2R?+19adG`YXuYm2iS;mfdJG)3=KuM_J@3#j>A`$^*Abi7n5a1Mi za30?=61aH;Fa+))0Zdy9Y(@c$KoHhNsbHfE$dTaY7r@9=KxQa_QHkJ6`w>GBu)72? zZBRi$4AmC$4PT* z2oWI(>Y@aKP#h?VP{59W&$n8lC;?oqf*27H&;E!JwFv~l{1FKRR2U-)<(^2O5(RTb zL|FSK^O>xL3h9!;y(SnNRSVS?^pA?5T7vrpV6$!bdONtf zIeSZBXfz27e!HiqFAiSA+rh-l!^IQFJxE|; { + const { text } = await ai.generate({ + model: anthropic.model('claude-sonnet-4-5'), + prompt: 'You are a friendly Claude assistant. Greet the user briefly.', + }); + + return text; +}); + +ai.defineFlow('anthropic-stable-stream', async (_, { sendChunk }) => { + const { stream } = ai.generateStream({ + model: anthropic.model('claude-sonnet-4-5'), + prompt: 'Compose a short limerick about using Genkit with Anthropic.', + }); + + let response = ''; + for await (const chunk of stream) { + response += chunk.text ?? ''; + if (chunk.text) { + sendChunk(chunk.text); + } + } + + return response; +}); diff --git a/js/testapps/anthropic/src/stable/pdf.ts b/js/testapps/anthropic/src/stable/pdf.ts new file mode 100644 index 0000000000..8953dff696 --- /dev/null +++ b/js/testapps/anthropic/src/stable/pdf.ts @@ -0,0 +1,122 @@ +/** + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { anthropic } from '@genkit-ai/anthropic'; +import * as fs from 'fs'; +import { genkit } from 'genkit'; +import * as path from 'path'; + +const ai = genkit({ + plugins: [anthropic()], +}); + +/** + * This flow demonstrates PDF document processing with Claude using base64 encoding. + * The PDF is read from the source directory and sent as a base64 data URL. + */ +ai.defineFlow('stable-pdf-base64', async () => { + // Read PDF file from the same directory as this source file + const pdfPath = path.join(__dirname, 'attention-first-page.pdf'); + const pdfBuffer = fs.readFileSync(pdfPath); + const pdfBase64 = pdfBuffer.toString('base64'); + + const { text } = await ai.generate({ + model: anthropic.model('claude-sonnet-4-5'), + messages: [ + { + role: 'user', + content: [ + { + text: 'What are the key findings or main points in this document?', + }, + { + media: { + url: `data:application/pdf;base64,${pdfBase64}`, + contentType: 'application/pdf', + }, + }, + ], + }, + ], + }); + + return text; +}); + +/** + * This flow demonstrates PDF document processing with a URL reference. + * Note: This requires the PDF to be hosted at a publicly accessible URL. + */ +ai.defineFlow('stable-pdf-url', async () => { + // Example: Using a publicly hosted PDF URL + // In a real application, you would use your own hosted PDF + const pdfUrl = + 'https://assets.anthropic.com/m/1cd9d098ac3e6467/original/Claude-3-Model-Card-October-Addendum.pdf'; + + const { text } = await ai.generate({ + model: anthropic.model('claude-sonnet-4-5'), + messages: [ + { + role: 'user', + content: [ + { + text: 'Summarize the key points from this document.', + }, + { + media: { + url: pdfUrl, + contentType: 'application/pdf', + }, + }, + ], + }, + ], + }); + + return text; +}); + +/** + * This flow demonstrates analyzing specific aspects of a PDF document. + * Claude can understand both text and visual elements (charts, tables, images) in PDFs. + */ +ai.defineFlow('stable-pdf-analysis', async () => { + const pdfPath = path.join(__dirname, 'attention-first-page.pdf'); + const pdfBuffer = fs.readFileSync(pdfPath); + const pdfBase64 = pdfBuffer.toString('base64'); + + const { text } = await ai.generate({ + model: anthropic.model('claude-sonnet-4-5'), + messages: [ + { + role: 'user', + content: [ + { + text: 'Analyze this document and provide:\n1. The main topic or subject\n2. Any key technical concepts mentioned\n3. Any visual elements (charts, tables, diagrams) if present', + }, + { + media: { + url: `data:application/pdf;base64,${pdfBase64}`, + contentType: 'application/pdf', + }, + }, + ], + }, + ], + }); + + return text; +}); diff --git a/js/testapps/anthropic/src/stable/text-plain.ts b/js/testapps/anthropic/src/stable/text-plain.ts new file mode 100644 index 0000000000..0b290d53e6 --- /dev/null +++ b/js/testapps/anthropic/src/stable/text-plain.ts @@ -0,0 +1,83 @@ +/** + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { anthropic } from '@genkit-ai/anthropic'; +import { genkit } from 'genkit'; + +const ai = genkit({ + plugins: [anthropic()], +}); + +/** + * This flow demonstrates the error that occurs when trying to use text/plain + * files as media. The plugin will throw a helpful error message guiding users + * to use text content instead. + * + * Error message: "Unsupported media type: text/plain. Text files should be sent + * as text content in the message, not as media. For example, use { text: '...' } + * instead of { media: { url: '...', contentType: 'text/plain' } }" + */ +ai.defineFlow('stable-text-plain-error', async () => { + try { + await ai.generate({ + model: anthropic.model('claude-sonnet-4-5'), + messages: [ + { + role: 'user', + content: [ + { + media: { + url: 'data:text/plain;base64,SGVsbG8gV29ybGQ=', + contentType: 'text/plain', + }, + }, + ], + }, + ], + }); + return 'Unexpected: Should have thrown an error'; + } catch (error: any) { + return { + error: error.message, + note: 'This demonstrates the helpful error message for text/plain files', + }; + } +}); + +/** + * This flow demonstrates the correct way to send text content. + * Instead of using media with text/plain, use the text field directly. + */ +ai.defineFlow('stable-text-plain-correct', async () => { + // Read the text content (in a real app, you'd read from a file) + const textContent = 'Hello World\n\nThis is a text file content.'; + + const { text } = await ai.generate({ + model: anthropic.model('claude-sonnet-4-5'), + messages: [ + { + role: 'user', + content: [ + { + text: `Please summarize this text file content:\n\n${textContent}`, + }, + ], + }, + ], + }); + + return text; +}); diff --git a/js/testapps/anthropic/src/stable/webp.ts b/js/testapps/anthropic/src/stable/webp.ts new file mode 100644 index 0000000000..f8a861024b --- /dev/null +++ b/js/testapps/anthropic/src/stable/webp.ts @@ -0,0 +1,95 @@ +/** + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { anthropic } from '@genkit-ai/anthropic'; +import { genkit } from 'genkit'; + +const ai = genkit({ + plugins: [anthropic()], +}); + +/** + * This flow demonstrates WEBP image handling with matching contentType. + * Both the data URL and the contentType field specify image/webp. + */ +ai.defineFlow('stable-webp-matching', async () => { + // Minimal valid WEBP image (1x1 pixel, transparent) + // In a real app, you'd load an actual WEBP image file + const webpImageData = + 'data:image/webp;base64,UklGRiQAAABXRUJQVlA4IBgAAAAwAQCdASoBAAEAAwA0JaQAA3AA/vuUAAA='; + + const { text } = await ai.generate({ + model: anthropic.model('claude-sonnet-4-5'), + messages: [ + { + role: 'user', + content: [ + { text: 'Describe this image:' }, + { + media: { + url: webpImageData, + contentType: 'image/webp', + }, + }, + ], + }, + ], + }); + + return text; +}); + +/** + * This flow demonstrates the fix for WEBP images with mismatched contentType. + * Even if contentType says 'image/png', the plugin will use 'image/webp' from + * the data URL, preventing API validation errors. + * + * This fix ensures that the media_type sent to Anthropic matches the actual + * image data, which is critical for WEBP images that were previously causing + * "Image does not match the provided media type" errors. + */ +ai.defineFlow('stable-webp-mismatched', async () => { + // Minimal valid WEBP image (1x1 pixel, transparent) + const webpImageData = + 'data:image/webp;base64,UklGRiQAAABXRUJQVlA4IBgAAAAwAQCdASoBAAEAAwA0JaQAA3AA/vuUAAA='; + + const { text } = await ai.generate({ + model: anthropic.model('claude-sonnet-4-5'), + messages: [ + { + role: 'user', + content: [ + { + text: 'Describe this image (note: contentType is wrong but data URL is correct):', + }, + { + media: { + // Data URL says WEBP, but contentType says PNG + // The plugin will use WEBP from the data URL (the fix) + url: webpImageData, + contentType: 'image/png', // This mismatch is handled correctly + }, + }, + ], + }, + ], + }); + + return { + result: text, + note: 'The plugin correctly used image/webp from the data URL, not image/png from contentType', + }; +}); diff --git a/js/testapps/anthropic/tsconfig.json b/js/testapps/anthropic/tsconfig.json new file mode 100644 index 0000000000..efbb566bf7 --- /dev/null +++ b/js/testapps/anthropic/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compileOnSave": true, + "include": ["src"], + "compilerOptions": { + "module": "commonjs", + "noImplicitReturns": true, + "outDir": "lib", + "sourceMap": true, + "strict": true, + "target": "es2017", + "skipLibCheck": true, + "esModuleInterop": true + } +}