From 252ee4eeb74d58bf27ec3ccb93e7cd370e7dc771 Mon Sep 17 00:00:00 2001 From: Jordon de Hoog Date: Wed, 29 Nov 2023 14:13:35 -0500 Subject: [PATCH] Feature: File and absolute path support (#50) * add support for file paths * Update README.md * clean up gradle files * fix extensions * add demo * run apiDump --- README.md | 30 ++++--- androidx-palette/build.gradle.kts | 4 +- demo/composeApp/build.gradle.kts | 3 +- demo/composeApp/composeApp.podspec | 11 +++ .../src/androidMain/AndroidManifest.xml | 1 + .../src/androidMain/assets/sample_image.jpg | Bin 0 -> 151939 bytes .../kotlin/com/kmpalette/demo/App.android.kt | 12 +++ .../com/kmpalette/demo/FileDemoScreen.kt | 45 ++++++++++ .../com/kmpalette/demo/sampleFile.android.kt | 5 ++ .../kotlin/com/kmpalette/demo/HomeScreen.kt | 3 + .../kotlin/com/kmpalette/demo/sampleFile.kt | 7 ++ .../com/kmpalette/demo/sampleFile.desktop.kt | 17 ++++ .../com/kmpalette/demo/sampleFile.js.kt | 17 ++++ .../com/kmpalette/demo/sampleFile.native.kt | 17 ++++ demo/iosApp/iosApp.xcodeproj/project.pbxproj | 9 ++ extensions-base64/build.gradle.kts | 4 +- extensions-bytearray/build.gradle.kts | 4 +- extensions-file/README.md | 57 +++++++++++++ .../api/android/extensions-file.api | 29 +++++++ extensions-file/api/jvm/extensions-file.api | 29 +++++++ extensions-file/build.gradle.kts | 71 ++++++++++++++++ .../loader/FilePathBitmap.android.kt | 5 ++ .../file/FilePathDominantColorState.kt | 77 ++++++++++++++++++ .../extensions/file/FilePathPalette.kt | 50 ++++++++++++ .../extensions/file/FilePathPaletteState.kt | 59 ++++++++++++++ .../com/kmpalette/loader/FilePathBitmap.kt | 15 ++++ .../com/kmpalette/loader/FilePathLoader.kt | 18 ++++ .../kotlin/com/kmpalette/loader/PathLoader.kt | 16 ++++ .../kmpalette/loader/FilePathBitmap.jvm.kt | 5 ++ .../kmpalette/loader/FilePathBitmap.native.kt | 5 ++ extensions-libres/build.gradle.kts | 4 +- extensions-network/README.md | 3 +- extensions-network/build.gradle.kts | 4 +- extensions-resources/build.gradle.kts | 4 +- gradle/libs.versions.toml | 2 + kmpalette-bitmap-loader/build.gradle.kts | 4 +- kmpalette-core/build.gradle.kts | 4 +- settings.gradle.kts | 1 + test-utils/build.gradle.kts | 4 +- 39 files changed, 615 insertions(+), 40 deletions(-) create mode 100644 demo/composeApp/src/androidMain/assets/sample_image.jpg create mode 100644 demo/composeApp/src/androidMain/kotlin/com/kmpalette/demo/FileDemoScreen.kt create mode 100644 demo/composeApp/src/androidMain/kotlin/com/kmpalette/demo/sampleFile.android.kt create mode 100644 demo/composeApp/src/commonMain/kotlin/com/kmpalette/demo/sampleFile.kt create mode 100644 demo/composeApp/src/desktopMain/kotlin/com/kmpalette/demo/sampleFile.desktop.kt create mode 100644 demo/composeApp/src/jsMain/kotlin/com/kmpalette/demo/sampleFile.js.kt create mode 100644 demo/composeApp/src/nativeMain/kotlin/com/kmpalette/demo/sampleFile.native.kt create mode 100644 extensions-file/README.md create mode 100644 extensions-file/api/android/extensions-file.api create mode 100644 extensions-file/api/jvm/extensions-file.api create mode 100644 extensions-file/build.gradle.kts create mode 100644 extensions-file/src/androidMain/kotlin/com/kmpalette/loader/FilePathBitmap.android.kt create mode 100644 extensions-file/src/commonMain/kotlin/com/kmpalette/extensions/file/FilePathDominantColorState.kt create mode 100644 extensions-file/src/commonMain/kotlin/com/kmpalette/extensions/file/FilePathPalette.kt create mode 100644 extensions-file/src/commonMain/kotlin/com/kmpalette/extensions/file/FilePathPaletteState.kt create mode 100644 extensions-file/src/commonMain/kotlin/com/kmpalette/loader/FilePathBitmap.kt create mode 100644 extensions-file/src/commonMain/kotlin/com/kmpalette/loader/FilePathLoader.kt create mode 100644 extensions-file/src/commonMain/kotlin/com/kmpalette/loader/PathLoader.kt create mode 100644 extensions-file/src/jvmMain/kotlin/com/kmpalette/loader/FilePathBitmap.jvm.kt create mode 100644 extensions-file/src/nativeMain/kotlin/com/kmpalette/loader/FilePathBitmap.native.kt diff --git a/README.md b/README.md index 4450ba7..3d6c77e 100644 --- a/README.md +++ b/README.md @@ -48,10 +48,15 @@ You can checkout a web demo at [demo.kmpalette.com](https://demo.kmpalette.com/) This library is written for Compose Multiplatform, and can be used on the following platforms: -- Android -- iOS / MacOS -- JVM (Desktop) -- JavaScript (Browser) +| Artifact | Android | Desktop | iOS | macOS | Browser | +|------------------------|:-------:|:-------:|:---:|:-----:|:-------:| +| `core` | ✅ | ✅ | ✅ | ✅ | ✅ | +| `extensions-base64` | ✅ | ✅ | ✅ | ✅ | ✅ | +| `extensions-bytearray` | ✅ | ✅ | ✅ | ✅ | ✅ | +| `extensions-libres` | ✅ | ✅ | ✅ | ✅ | ✅ | +| `extensions-network` | ✅ | ✅ | ✅ | ✅ | ✅ | +| `extensions-resources` | ✅ | ✅ | ✅ | ✅ | ✅ | +| `extensions-file` | ✅ | ✅ | ✅ | ✅ | ❌ | ## Inspiration @@ -87,6 +92,7 @@ kmpalette-extensions-bytearray = { module = "com.kmpalette:extensions-bytearray" kmpalette-extensions-libres = { module = "com.kmpalette:extensions-libres", version.ref = "kmpalette" } kmpalette-extensions-network = { module = "com.kmpalette:extensions-network", version.ref = "kmpalette" } kmpalette-extensions-resources = { module = "com.kmpalette:extensions-resources", version.ref = "kmpalette" } +kmpalette-extensions-file = { module = "com.kmpalette:extensions-file", version.ref = "kmpalette" } ``` To add to a multiplatform project, add the dependency to the common source-set: @@ -105,6 +111,7 @@ kotlin { implementation(libs.kmpalette.extensions.libres) implementation(libs.kmpalette.extensions.network) implementation(libs.kmpalette.extensions.resources) + implementation(libs.kmpalette.extensions.file) } } } @@ -215,13 +222,14 @@ the [demo app](demo/composeApp/src/commonMain/kotlin/com/kmpalette/demo/palette) In order to generate a color palette, you must first have an `ImageBitmap` object. This library provides some extensions artifacts for some popular sources. -| Artifact | Library | Loader | Input Class | Demo | -|:--------------------------------------------------------:|------------------------------------------------------------------------------------------------------------------------|-------------------|-------------|------------------------------------------------------------------------------------------------------------------------| -| [`extensions-base64`](extensions-base64/README.md) | N/A | `Base64Loader` | `String` | [`Base64DemoScreen`](demo/composeApp/src/commonMain/kotlin/com/kmpalette/demo/dominant/Base64DemoScreen.kt) | -| [`extensions-bytearray`](extensions-bytearray/README.md) | N/A | `ByteArrayLoader` | `ByteArray` | N/A | -| [`extensions-libres`](extensions-libres/README.md) | [libres](https://github.com/Skeptick/libres) | `LibresLoader` | `Image` | [`LibresPaletteScreen`](demo/composeApp/src/commonMain/kotlin/com/kmpalette/demo/palette/LibresPaletteScreen.kt) | -| [`extensions-network`](extensions-network/README.md) | [ktor](https://github.com/ktorio/ktor) | `NetworkLoader` | `Url` | [`NetworkDemoScreen`](demo/composeApp/src/commonMain/kotlin/com/kmpalette/demo/dominant/NetworkDemoScreen.kt) | -| [`extensions-resources`](extensions-resources/README.md) | [Compose Multiplatform Resources](https://github.com/JetBrains/compose-multiplatform/tree/master/components/resources) | `ResourceLoader` | `Resource` | [`ResourcesPaletteScreen`](demo/composeApp/src/commonMain/kotlin/com/kmpalette/demo/palette/ResourcesPaletteScreen.kt) | +| Artifact | Library | Loader | Input Class | Demo | +|----------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------|--------------------------------|------------------|------------------------------------------------------------------------------------------------------------------------| +| [`extensions-base64`](extensions-base64/README.md) | N/A | `Base64Loader` | `String` | [`Base64DemoScreen`](demo/composeApp/src/commonMain/kotlin/com/kmpalette/demo/dominant/Base64DemoScreen.kt) | +| [`extensions-bytearray`](extensions-bytearray/README.md) | N/A | `ByteArrayLoader` | `ByteArray` | N/A | +| [`extensions-libres`](extensions-libres/README.md) | [libres](https://github.com/Skeptick/libres) | `LibresLoader` | `Image` | [`LibresPaletteScreen`](demo/composeApp/src/commonMain/kotlin/com/kmpalette/demo/palette/LibresPaletteScreen.kt) | +| [`extensions-network`](extensions-network/README.md) | [ktor](https://github.com/ktorio/ktor) | `NetworkLoader` | `Url` | [`NetworkDemoScreen`](demo/composeApp/src/commonMain/kotlin/com/kmpalette/demo/dominant/NetworkDemoScreen.kt) | +| [`extensions-resources`](extensions-resources/README.md) | [Compose Multiplatform Resources](https://github.com/JetBrains/compose-multiplatform/tree/master/components/resources) | `ResourceLoader` | `Resource` | [`ResourcesPaletteScreen`](demo/composeApp/src/commonMain/kotlin/com/kmpalette/demo/palette/ResourcesPaletteScreen.kt) | +| [`extensions-file`](extensions-file/README.md) | [okio](https://square.github.io) | `PathLoader`, `FilePathLoader` | `Path`, `String` | N/A | Each of these extensions provides a `ImageBitmapLoader` object that can be used to generate an `ImageBitmap` from the input class. For example, the `NetworkLoader` can be used to generate diff --git a/androidx-palette/build.gradle.kts b/androidx-palette/build.gradle.kts index 686ab6a..8b55198 100644 --- a/androidx-palette/build.gradle.kts +++ b/androidx-palette/build.gradle.kts @@ -1,5 +1,3 @@ -@file:Suppress("OPT_IN_USAGE") - plugins { alias(libs.plugins.multiplatform) alias(libs.plugins.android.library) @@ -13,7 +11,7 @@ plugins { kotlin { explicitApi() - targetHierarchy.default() + applyDefaultHierarchyTemplate() androidTarget { publishAllLibraryVariants() diff --git a/demo/composeApp/build.gradle.kts b/demo/composeApp/build.gradle.kts index 2e041b3..ba19963 100644 --- a/demo/composeApp/build.gradle.kts +++ b/demo/composeApp/build.gradle.kts @@ -11,7 +11,7 @@ plugins { @OptIn(ExperimentalKotlinGradlePluginApi::class) kotlin { - targetHierarchy.default() + applyDefaultHierarchyTemplate() androidTarget() @@ -78,6 +78,7 @@ kotlin { val androidMain by getting { dependencies { + implementation(project(":extensions-file")) implementation(libs.androidx.appcompat) implementation(libs.androidx.activityCompose) implementation(libs.compose.uitooling) diff --git a/demo/composeApp/composeApp.podspec b/demo/composeApp/composeApp.podspec index 44a3131..cc122e0 100644 --- a/demo/composeApp/composeApp.podspec +++ b/demo/composeApp/composeApp.podspec @@ -11,6 +11,17 @@ Pod::Spec.new do |spec| spec.ios.deployment_target = '11.0' + if !Dir.exist?('build/cocoapods/framework/ComposeApp.framework') || Dir.empty?('build/cocoapods/framework/ComposeApp.framework') + raise " + + Kotlin framework 'ComposeApp' doesn't exist yet, so a proper Xcode project can't be generated. + 'pod install' should be executed after running ':generateDummyFramework' Gradle task: + + ./gradlew :demo:composeApp:generateDummyFramework + + Alternatively, proper pod installation is performed during Gradle sync in the IDE (if Podfile location is set)" + end + spec.pod_target_xcconfig = { 'KOTLIN_PROJECT_PATH' => ':demo:composeApp', 'PRODUCT_MODULE_NAME' => 'ComposeApp', diff --git a/demo/composeApp/src/androidMain/AndroidManifest.xml b/demo/composeApp/src/androidMain/AndroidManifest.xml index 884bc71..b902ebe 100644 --- a/demo/composeApp/src/androidMain/AndroidManifest.xml +++ b/demo/composeApp/src/androidMain/AndroidManifest.xml @@ -8,6 +8,7 @@ android:icon="@android:drawable/ic_menu_compass" android:label="kmpalette" android:theme="@style/Theme.AppCompat.DayNight.NoActionBar" + android:name=".AndroidApp" > 0N?K5s@xUNN5SY3ZWw?goqTSNDW8{ zSc2^+MWZKrgu_7)gpX%^?|T2gd(E2panJ18Yu4O*@9Wyv8SU&N;G!+k1_@wd0{s7W z_7-3X;N#-v;pXJy;pXAz=er;%D=Y{E3MxuUi^!@eX=YA`S}F}1QmpZ6`XY8x=#Pkb~XVJ;N-|;1F$fG0n7qS zECNht(*OwofSHBq|Au=WG&2i;iIt6=<9yNZB7pham{|XJoL>Pv048Pu7CBZ;Ae%Wl zNDv&$E~Irw9&gbs+^_8dnGEItecIKDqyEn?)A@V;XaDCr0M4Ie0sJ4oS_1#`%ksa| z|9rEs{crVueu0{T=3q3NR*;aqMXdH6VSICc@Z_hTyJv3zyev%TQL_jDE(3m!M2@cN zxe|zODQTUTlKN;oeI&;oi(qF)7j3M3H`bQl^`#*9RLH>w(ki)0!*Ylv=ft zOJ5CIj2B+@{9f5V36U1xEs{%1SfbQzeR3)3p-%0Osq=G%%t-_w$3-8xW!(>JElvK% zdc`)bY*@QtY5y?d@#bxHpZx;!VQ9-=qG^^m$<>(VFrJ@`&3Hwu-F|8Z{u#lMI=>y5 z#Q0_UFxPwtA;0i%|F1~YNW|LUu;_7GJ#Ra5aOqtIQYmKO0msr_i%XLQs`at?bbKwW zwF}gs^;Kvx!hhZDH|3{mUBJF4y0i zW^Zj4v+n4%UH)RB6;$q1b|6InX50Eb3QTbmJvEf9{cH8zO@h;cd$_cln<2ku1(m2) z_@p{%WpP`;ZIV)j@#mi=ODQ)e>E-G4Xz$Y=3sm=-XzYzPU@ zpqPF6a^S$~vuo4j=oty^VB|ZPuL_=epOtTDtHo5P=!OqpViyRC-J!&bOe&ujI3LC{ z7ci_Wo(JC#WBai1OSAJKA#yypYQk*Zf(lat5E+d#va71ODb(~CbRpu0ox2rLl=VO! zfp229G<$`+_0NXQC9e7T0>s1La5z9oL>LocHY*QgQD-9#x*YRL)40(eP8*-??STou zO#8p$y$G2`_tq_pA2$)8v0!d*v!2zG^MJiO4dSynh0e zjQ`_Q-dr$gGB#b`b)i_z#YWooMe`29y5Y-~gHDOfVr}9whwd*T&-&jNmv_1LU^7?QKWHfdBY_hLde#ffey{)wn@=;Y=1`hzqcK>9h47<7N+VU;ah4T zt9?phdoqtu1V@B2&w<#z{38KdK83=v`A?%#C916t-l&$18dng2xH*XH$1hVwOXSVb z_A6mge1$ugUpbkFK5OQ|(%+9&?@kb&q|4nn1ITVavgg!I;ah#6vtZsKXk3L0Jc@kM z`yuz3zp>bGBu4h15P1m^sRw!1wwVhdX8^g$ReHb5Hpahzd~-9wNK1k%g|jf*zRo() zaP{+y!-11BbKJ{2a$oSy^$)k_Uk{3KkXK^e@Fez#^cM^R?b#PG4+@cvlVQEG zzAxD>mN^BfG~Mw;bfDN=RlA{oGxGFXH%t!f;3_nGw2HZ_-FCs{Z1()liXdntxzH$I zDMfJFXhS8K_6M-5G-nyvs28n2t1?5Zw@xbG44v4`?*@x*PIRwg%5YZp5YJ(O!n>2T zKc8019$cM)H;cW`vi9W~!Sl0<=WHb(cJl*chGKut_tHDc86;Dnc|8+ZC@iE%!gor8KmO_C@Wl;gw6=9k_(Vc7ju58<(Y*g zx{I8YFNMQup=D=)7C;V_6F?R5yV$sssl-_>vjNoqGF^p4j$ehXS*yDDx%^h2hT!ai zL1-mq^OVS1QVM|R=8n(6^E8P`l{ivt(xh9~j*c{6T$V>0dy44i^)O-$m2{5<2<^$h zocIvay00gNakCFRHXhvm#C8q!^F#)Ha>I9nbmb`27hnDr{qND`lB)Q}l>ZFw7n`0s z>MLHVyJo*wRbDmryvESffBVnI>+JmIP4zN-(xZqAbtWct|L(ZQ)T?DcebFJ4-hT(% zNv3Guqx|_yy|-KP4+-M)w>9f-*W!TIBIp!Q9wq(-G`-BCBsr|{I?o#PzI^K-I%&&? zZ4#3{r!&NOPGn#b1~n1RVxSRS8psqoLD6OSOO&q(sOa8^eSE2xZOtP1+HDu3C#mV0 zgOXLl;4^@8uTI=xnmxEh95j_D0(o=57E>!Vbzv`>SGH|1d}QzOTJzA>m+6HnG6rea z+uctisfvaveN$5i{djN&ux@;Q21vXYUMRB}v81c;&Xw_cqC5iY9DQK)xApU_=$)|1 z7d`JK8*j80!VQ+%?*=s_I$k|UPQ^6%2J|UBkrJG*FHm5(`I*k%w+e%bk+Jiv>9Y%$ zd;3-FISXH25)*^bbr_yQGe3ifG+Y0f4*!oCfI(_!N3x7$t(asUghpGaoQai@PK-Xm zW|lK-@s2)Cu!_p?)tEn7cvNVxHdSX-s~fv3X4QO2=x`_zmnM8*IQwc5*L?VeAr}d|Lmb-PT+Wju9~*gTDd4Aa=&$cy zDjC)*u@H21TRxS{d+u$ztiW%P{`sBv>v_)Y>6=?+=C>se!;i&D56cwdjO|}+v$o59 z4gg0qsBH9T&d!EWZ0b*rFw)j=m5rs9#W6DX;LWY9V%qJ!wyVz#wR}_9Z%bBpT_#}_ z8Uv_M2y~RI;`FY;X9h56T!XTfngM;}Kj5sm?#LxLg@}sFo1@*Euw3@a zO8cRKe&yc0foT*Uby6ntyoD@l&Vd}SV1~+H)~0?9(jNb~#lN8~5ptA-M!1AMfH>eH z1RWJg#_b07zc5FKJ!)EObv5h%y~g}5S>kT#mfFlv=GKqvRxagIE#tGFPw$7%Ed5C_ zCTklU7nZ;uCaTOPs38qALa25XX#=L$5`xF)H^aWzc4SnL9#8N_V_~+Z<|JG#$ zVFwjb?+IOA)VV!((srt8c(UyK{JjzOrSQW1j~`d0yrx|8a!_ zwtA`)k_`#--z2`ND@wQ<@~4-QK`i_-BdmDpkoq-vzD3m;ebfT6xb_lkp?)Mpx2=gU znhPeh8+j1H^{run^MghKrzZJmr|`mir;uDYoV!S;PGuU}MxsiIDnZO5$p=0fS0{g_ z&&~&!Osfk#9qE%;T<*^c+*Rp*Ar3?peWL0Jc_EoEIgHaFi zH#`yS1qV$paO3@nP6t;xZoIY0+GcXd%Z=wguw#D4#})Qr@fTYnkd5ymj%bRrs6gS( zTV2dOCVXHctygRiO~NQLkU?Byas$GJO3joju~u@t!GiBd)%HGI8g}+9h`draH!ph+ ze;5~cW!}6ieZJBh=*ym6J^r!V07`c!3Lb%(@QIS4tK&DS_SkiNbu2I8$V*AX4Zem? zfp6Hrf2&wulYEhfMp?Q3?u((GdyP5IUjM%pcm?lvo2%Tw#^mYRf|6r+ME=_E81B=Ua>&@_YNuI+U z(wwiY>X+%U{|!|3UCulMh)`dizV|2vPTHXycPe3$D|7o!ESP@oau(Y4T(J}L$dvpp z*$qRBTm#&Em$**E^J8AeD_t;JO@^$u!{DU-h%v=3Y4) z5dqR7Ux6=yoqF`{LAlp2d1t?Rop^U$4pB$p8@$K~mg;`I+o9h#mg=9hH6KN6PbZDd zWwosAgvM9mEQ8>yPw`PSZJ^vb`cHED^W&u4S{jdSUBPaH@|v(pIVDWt!weX)6jAWixmOHZ_R&!MfOfnPN%+&@#aUI9-$ee)LfCUS}b_I#%%0=xNV7P%hLqORB739mBOSSphL48$o=`JBW6x>?~?# zPiGO9Np_RnMKyR$*kn)&R|3r}{G3shwL~oi>s5z+))CMYhKucDoe~+XO!?lN zPx32&hCTyqq$_CQ0yCNdhW-M17WDA*`f07ELzBh>X+~s(r`!3DSK3>F1s`*Pvn(pG zT(X1%CDz;lBCOm83Suq*d85cdt9C>MPR}O(noDxRpo^uspb!BN7A^{d_09AG|9Qve z);Y|5eOqCMvg#sFu=qTA02y46lFxGrd(cVdy>=i_1YBe#Gp(!UC_Vy&dUMmsfn~JD zX?d=K^UZ>D@_|iY3R@|t@z`8gNXpaz$ zr}@=-b{du>FF0W$aGgstDmPif*%Lw2Cwj4?)DO&j524jMewA#w;+magZ;^hFK&n0P zeL2&bTx4#w5)fw>YChM;hFrvQ=9rbb-6!J356SP7*ShVf=i-7qB;DY*r zB7p=iXj8uLQJ|h+pteQ@so;m1DDGY3wv`6T_iqF`eO61kz{={>EMzrgD!ene<^I(E z?QLwFLk9a_r~EcPxESisn!LJ zF_B$f5C-usOOREtPk(Gb{tb&tp>cG`i<~+0j%NPn*Sq=p$_W-%#+dflF6>c>E^hGU z-@(vwVf~o8E~U7OpI4P9oOT!qU>UZ6IwnPrMZc1te-H~2WFAt9V7_xs$C~=?&{O*B zY_M~;aHS_acg+X{eMPGsn|X5e$6dJ-dmem)`G`e_#gjC0aOGvS!eRMOircrITH{Iz zH=F(xTkYEE*<#}|EN4C9<8J&Hu)RpoYSi5tVOx6i3G(p1RFzbyb6ga3L{O#jujqHg zpZ|u}mNBdEZhu%VdQ$y@c+Xd}`^KNYk7Q;kTgulq!xv)L3cH?aZQL(7H4B}sPu+ZZ zBAn;X|D&|X=hE(YapKajuV=V1q4n(rMLAoYknJ!>KE*-S>Wu+}0<~dj0fUhUPk0>C z-(FE3xz|s5+}{{(Ygoci&4hzGOgUgIH-oHYAR8Rj*c1XC{`8oz9$65v%X#rX^n6z{7sZ|T9O zv8|r|i5Qon+U~xt{Lhgt=Z1{MpDF*H&b!ZI64}5n*kO4@9wkYO6N_CwOS-POAM>L1 z#Wq&g%zv1n`|NXvg+DH-%pvcVyz7t&NmTe*bK;#am&D+*(o>l;OUc0lo7UDfLV%Dg zQ~{d>2&?>vNKLS1vQ?qw9Kd8ri+R&R{BLu$-3LuqaKJ>?{lW) zGr9&=FW(IG08yA~RIDDv&UNjsy!c>@=qNWx+3V zScLAJa|8f%sLCN+6iQTEu+p$_lQc7*cEL-5#6_eE&4^thW_W%m z5=FeuwxwqP&J*w=b5`#?gYCD2;fvEV_{%T7r~l)>ur)YhB6qK<$ccxlT21i41+KtQ zySHOK`|ld-?B6o1e&TC*n^;l*Wi^nJVz5z_7(Xn~y778@Zm`%>X-!G+MfOnrlUc(9 z%<^}g5Q0%~(vy4Nn@lFt?jrbakbM%w16doGN<=Kd63N10N6fgcRhNX^K^r}mwA!5V zg|ZC+{U6qCZkjTCz!WLoE*H$=PE%?_c5j~HZxbn0sDnHHQG}M^760nPi0c*xQa3(# zDMz>n_=ES9gJQSqL6h^}%RG`@qMoe|cy`?1hS#{)Jyn^BtGZ{N&V@VX{jd5Jw734b zVcVQP`ldqXzVt}{6M-ASj%2v=2ko^JQ_l$cVZS@Y<+WBKX-0T%IS#UI8Vx!4_2aoyA~1aM(pmbLXbL?>PR} z^-zimrZZ6}cEN*=2}z%lmqOq0;Y#D)ziGiKA`bd6ckDda!>L_DXG@S2^i|Us%Y*5J zQ=5x^yZPtIrs_tvDKn!+u9+5*W{@7U>{w(_6v=CJ<5s_qOn*#vm`xUI!9vi~K^1jv zE9h&r!S3FC@vjRq-}0IzS|yVnpy?}B*sa9kWe9OZ1utr=6Q0dm{I&7gja@<0qIcDY zlV=>=QlnzStzL=1f#%rtHj@4d~+5D>ct5CIBXfywi zRolgKI~1(RJ84=*s$x^GU@K6G$`x%!*0arwbcxF+)%MXZ;v+eL9@&VDCR&3nf+)fW zB#x*O0eapDwSpjFQi_n%4U3%b<{JR}Q9g;jTSTu>=n0$bFFw*q?i*f&I|wXP z!)sFMw+73fL_8!Vprg0vrypjm!M$VH_z(gjo>ZVNb`hoQMlpA;WF|maN1)z?+#a?; z5Ze|}>0>Bc0Q9gL#Fk2!>J>(6u<1yg?_8PST86mf>mjwvoY7)DTr7xVKmt&a%4G%% zu!7yu)bR;Z%MS!uxmXRbf`u&E7ZF5!wEYJ**6e&v9VM@#{KzYo!j+aH=FmU{haj(w zmHifq>XBJ~eZY%QK!{w?MN%eK2vG2{ai2B`7baxbd2bR3C2Fvegv@F{=uk~86m-hn zB-ZlJwj8@@U?$~?4`(}jubA}pm*7u^$_CzLF;u!qG$f|+mICsvfnwxuX{jNFpdDnf zjF$T?>iZoV*y&&Ux5r)n-5a6yExeb`85Wr1POm>9#q>M%)i_-%-oEV`Gs=#A!#y?` z8EQj(dJImdS71VAmm=L7vPL#I(iJyZTeeP^Y&7ZY9HU%!GFSx5xDR;3ei3WQOuh*m zm=PuApkBFxw!k4GvEHv}cdXzOhGqYK$z-ifO0B%2JS2FPrf1Vaog&z{>Zs)fF7$`F zTt`_qSO=y@!UjLgv~=vC6BA6V8zc|6B(HYvT9S=`>>96))ulgxYDKs&Cb zVhZ9)aBnFZ+A5)!*~R>zRqxF~|NAY&`|h0XV~#^M^mMGvMY&Tny3eWBphqAD{~>$9p=fir+S*kxUJS1`^* zgu5O+`3bpwYv`|T%T>~~Vr=VR;k&!<`CJ`Msts>TdQxlp{peE*^F33BvPWWq7>W`z zj9%a692fkSQRy0jmY&JwpP@OYQ166SGZaN=Lr*cm8J%KOc5Z$cVAH0dnidH=aI>&D zZ-dD|HM!N;a|;|(8gRnX4k+)v*XJ5<$?{Pay+QU&ul{I>j>{mN2*6azaJa- zylYt2X;w~|(jZ^uBqr3>z7hd`Iw|V-LZ*sh+{x^t%QAFpBau1ut*%6$2Tvjr%gur* z@l_{wl7rA`A`BN*HUUn%PGi9bmlSc2ptJA~f{5eNar&4ekK~H1 zdrGX#4@m=|BU{8vo^CBl;)lpn#`^8Q|8;9qHW86{6}zlLAwHDw$LtRLj0;Yeik0kH z1S!0w6(m=xOW1EFKkRzQmHq-5bLhk&9$%po_@94p{Ts}7_-6}&W9_|R|M+Xm0V<_+ zt;^w~sNYFJ#i}X#kBz^ski%ByDp8NjlW(b+s)HQw4c|BJpX{!Us*j5=q#vb+Um4dw z{B69V$TMSfHAm;#mnA3d-NZ5b^5mqqu?~%um&#p(zvZvSL`oHl0L{HyB=!3>7_V~` zsfMI@euI}>OE~2Ge-?Yl`L0pWeq4JOHm&yGkVCCU0TEZAp*y54#7mk$!d;8%Da&Nx z&1Yz-&FW}zHY)1V^+`0gTWsqG{wCs$Fljf-zru%h;_QGyJdCA<`EPG01V4DoQrhJ% z+FEO5*m7e;YXRgUEqT&;1v{lY_f)_x_{b%8MzmL~nGj`k-4gc3Frp#ks!U6&kAt3} zu5_Z3`We7RH0h|(#;xLSWC5jX^0+-Wn%-SoFNxnTL7l{J?ab~fjdM6OvNY%xYhi!T z|C27!zh`1-bfZ^$KDjmQg7ebdHZk(;cPNkB_jR;Voy$Eps(2+kuD^RpNO*C*DRye| z_5okVUlGLjcg4SoABPtj`n_zBR`BFHX^+z!iLm6!=mplAm?|Lmm+J@GM7B1*Xm>9` z4{n8VSj*IvOsQnZ;bBG;PSjg?o%E=LQMh>pU8Jw03atj zgc^OQI@FC=Rdrc4dwBY+c!pUGXS)%_Cd9)hETpMUK(LqcmP%iS9^OUh2s$f)O8uu> zlG*P>F~RbVnLVM9A+V zB;Ssh0YS~mMSm*A*-s*xN@0+oRU7t9^J$L-May6A{*yFV=pNh5)E531<(K7^lyGEU?~-h;dR+&VdG}4}s|jAcj9Pi5;rs_Vb>%MdEvQ#>6$6Wzjp z1@0#`|LI@BdxiI#rgV+8is&DcM#cEVwLk5awieGXP`$Q#3uo&Rb&;!2(q3M$vlzS; zT+}QkteNh185|?_=0jn@j)Mtn%{2#I(x>8hw~9M;Ag^B>Eea2E%3_fv3-!t~(KLH_ zipGoY>y~X6Ck;=v;|1O16wd&~%lGsZjGuT}5b84y;y)=Ct^Hb;GLcS?eC3ck^XIm} zd+{SUBK57t8K7|Ubsu9GsxBkvL#ighLdu;&{^%;I4%Pb%-j87UT_)6*{6ztnc=BYN z@$C#?ZwICn%-US~UOnE^zhL@UX~EwS?Lhs!`5ON4r>jC`aiWsHveHYfpz%4XlrQze zODUyy?gV&C%UsTmba9-+z`%4>vAV)n2&8yf=3wKt;YFXajvsNu!>?=}inMxOF70SI zG!gwLQFMxNPrd$2((CNtGeGFAp$n%vH~NpI{MmhqE(eB}Y+ADzUBRAUwzpr@ysUpH zLtQwZ#l>8lzNNrJcXX`2)qMRL4x(n`Be2!?wT^$i~`MK<$^8Cb`F5bHd)YW_f;t+e-|GU={5(Mtak{lrQN5h zDs;A!uT6gAdp(4{w+aui@=VsI2}aRV!}_)qkvA2dP8AY-1zOt0IJ#Innz=pl+jEJF zurmO-KIbSmuzAdmd!7?D>$upoOPOo3GgA^qR#R-E?ZujHUz@*Wazp#?5HfX{UCo8V z1u7U^VJUezVSv>MulYI;7L>T?zN@)?IZ^!`*$KYD;5BD~}bJcS8Z`O=ueq zt0tCCCiN_OzHC!v={b96CQQgKzGH3$5EDMhtHkEdw|LoM5BcCgXf<0B0Y?;-rP^yq zXo&Ky4s*!G4S07lpJ&MLN+)-6a!5Uuu=%3QsX+byQaXsoynG#&IfM4!f`Ohsb7;LV zMimJ=-nZnovbZ?ONp?oDDENp8F`ogx4B^H$VX2(?`88QMtEWO^ z^Y}vjdB}`{khhV#Se`8je9R4Fu?ljQ2Wy*Kk4@Fb2#OzZ#~`>rEGNosb`Fcxz14M6 zr@yA)51a{P_iWiNvisFcj(&TN>n)DPS`?`0{ej+WD#=1=g}3*l#Sq=U8&PqJpPMX^ ze`D=b*w(skWH5BI3z>B#OoX~Z@JKuZ?5=iy?`sxnQdf=9tO0-QSu9gbjGa|mcG@Qt zc2(bYeyg#dyQcT0s!ZD^a$hq_s8ZSDF{BFN?@P^o5cbsT&~`Gj)BxTmK#?(U*=(D}%IgeOrF_M}^(zN| zvXeP+@Jo{-CAgO4Icm9ByZ(;z_xg0~x+nD~Z1(3$w)|h^J_8)h|7zTbOWIR=(nCK3 zcqDgl+`|coQlf|FC{--BvUwBkdBQ;8@p3?DgunhAg!E&q&~- z!YxJbE+g*hHT7uGY(N+6DTIY$`vRj!axvZ3$c8073Pi)fH~%;c0?|GsQ98mAl^WWgeI}`QUkQzD1E4>7kka z*t6^XxBAz(gRC)-bIC++^D2e|#FPK6mCw5<8Mx`r9}A+EHVH&R@&mm^f|$p$gc4R! zj{<2ZmZr^F1vq;(w^f1u=j6tu6#Q`vYXzjzIZmFk+J_60pKR;%gOT2pHH`~NbEqeq|W3TitKtHmb z90Bf|+hFXEuQe7AOI9z$I>>*OIf)SW+7b)#3E(I`#XoN*D1X&U*)~o!xLjWUsj7R; zS`kl|G{#@mKwtm3mwEc$kWLp4b`0EsDj>>wqLR2Mqs6?AHvsjsirneMOtvN^e%_&rP4d$tZY&|G5lAaAae z_^LQj|K}x=Bjw`uaQ=*O+e&Ia#5`$z81)qB3synLm zKH!_xo8k^Xga&+EWZyC+N49=l{c%|=sRJAuQ0z8xA>lm_zi~7F+RrE2Cw{$}#!tp; zy8Q$e-B5Ge;*PWBZLrknDVb~+`ZdVhqIk27LI1Hg<>!8Q_2$*qq9j98!ICPQn*Q*f zbkz$c1<<$a58#TCj59#&XU09edVGcCk}_#$K3%QGw4+Vh&4uF6{T-`~MfLdyAsImk;=V1|%Ap>Ne0YpqN$?vTgFBF{YK)!#1X&9k;>G%ilucl-D6Z}m!UH+m!gYc97Aa!l zcZi@-D60=xEgzo{*lGn-0u`b~Qj|(Fxl|B%5EB7bz!-tCcdL#bD$frJlyM~l^jn#U zY2;h1a#;E0-63wWLrNous)YQ+v@Rf;@t{1*J{tSnM+i1Q3S)YwoJY)ze1R``8(u{C zC1{#C=L`BU3C}vs1diDT2|brr+GlNC#Bga61o}e%pwC5hL@hU@-PwcF2k^DBIyU&38LWDG-$_HA@le(| zh1W%8J^=4;j)oA51 zzx=T&$A?c=WPTc6%hp8XW*ES+8egTEN*eipN4$8dUp}1bwe9z6r8IW)l~tP4@34-q_#>m( zg)M9Se?>QUXEP!KSDr8OCP6=+0q%T}c z4sfk?DKqZq3~T?JB;c{~U{bBRx26rk+S*X_Av(dcp$grSm0CXg@L%0o+v2#&V+r2J z;=C1g{5J)j^b~Y!_N4pr#|*kuL~^eYZ$n77w1UaEppRGY2f^C!y0qXwe*aV{5P6m7 zKX2pfme2yo&NjYrQmCc*hR65Z>x=enkP0xe$4BknYShTJXAa~#GfHdL)-&%q?6~l- z&WHuo9nv6iNZSkFT!E-e$=v$qM9h%y)ZMB7@W^#aUGnnB3Md?#rxd5Kmhm_ojertj zbY+7GXurHOz)o>haD2N8~z=I7I-kUi|1 z^NIViZB1Ff)@IU|087@T?{|Z@b!>0p{exKCZI_RtPRG?2$**>(up!&$^^m$3hzl#fQ z3fZ5M<`58|hYKGBUXF%1N1d0%@aI?3kq};I6mnsvG7HrTRM?<`_(X&RAt`KC_T@fs zf~IZ}EtL8CDb`0GSg?RF!NV`+fj593aKuu(7GU4i)tcT~lUxT3CD){&o9*G9qC}oU zSoO17rsic?g9EMbCLom8S$$eB=q9nsvOa;MpiCFw&Pz-x3JippouFQ232|?PIin^K zpnNkvM5T)=OB3-dHF0 z3cuqeAq&U%`AW%2C_UvV<91UG*WYy5o9wjVGLMt=O2^kdcUT(sE^GLEeW6}nIlx-tvbIyA>gTtHhxJ^&^DEzK9vs}hmhgS>W|}3T z;k)#$in;{{1yk4n^>e6K>`f7={tuTsdoG1P5_-LnxKg@EA>eV4`moSq>$JP~WHJ;Y zzmku+e}0>6pop(O+K}RMjdH#*Y!m5GVqvI`3NB)V-dNf%l1%kDC|aGa8l2pa?~UC) zC^mJ3tPd*3)+hWa-rubKJ3^(d4Wbhk8Xx;xMeAAA*OEes>{=iH&&C4riypV2c?JfK z>LcTypMRq_O7E3~#%&#MqvLG!|Dmqdp8*CZP1TgTkS@auCJqnAsf*Y@@3jL?b$@U) z|9r5#5u$k|?oDt@+|!#sFXK4Ml(B>WjB7V|z?Y)R_Vc!o9LLN_O-JkzC{NF4WaCz(?Yz z1jau%43b)kph5{9c^Y%AJ_dCjD%lKNWfAqCky?Wh z;>Y}4woVanzr5@`C7T!S1F2~e<^8HpZ!3Y&AQRNI~%v6uq+la$Q!f|ygNjjP~?$+XRXN> zxl$oDo8DpAyChrRECQ%pGRK>^#0l`4fA*Z)yvltFhLw8bE6!val} zG;#(A?89r~J>ZcTHjHLS(8UwmyKaKXkPR&T5kkStD{u;~;mW0xnSexWM6y4_(RkXW zyrP_8qkvbyQ1+LVHJ$Y}5>(U(smMwqNVZgkxGn_pO;8RI9UK%AVnM+A8|B<(40xzmD=TDVpr88+1n)}Jz>c}+$F1NwJYfw>8o*#7ujzE3Uk z67C!9jzAdf9yB{c4{P`7n2q2t^?tSXqBaw{G5@rqp!ymlazm%AM&s zaqfxYEZ-0=8O|%VVdomFQYXoKtB>^T2YzKyMyvsOYM+|lVqUrFn-GE3i{0#5;(WCv z>OZOdVN3by@&nFpoi?Pu&WQhPSH|Ls%O^oCU`q>M~r$qyceoTv3Q@!SR*BT0|iKhuuD>@J0z8(+!<_h!!k4C9lU z?ORa$7hw$xTomASpsIrfjxt ze)nE6G-yw*PNEoD_ng+B))(sx8&5yzMI4Ji_1mgH34+?W6;>Ob^z3E~bV)giw62uN zDD5Y0DDFNs9IZM7WUW1M{Re-vfBQ?G@_y*{?v}y2b?=vCmARrt@izy?=Tl$_n+}?0 zoY0d9tJ|6s_I2aW{+Dwa64cPU)}DB5MLh#IYTZ_xhX1^9wSdJ+95q**{`@6J}@>b>y}-ZoP^<+nM3=C=`PY$?6TLW zn|I!UP|H*#1r=uPIqiw?ZV5TeOfa0vxiA2-f?vE3nB)-Yzt!{*$u0jL7o=gv zzUXd+P_Sfv2Bo(;7V74P1`-)M(Q*jC(q~?XCJY&%(er4Z`ewJxLMKrArdY=O#RpP}wCVS$=XB#}=S2(78AdIZS zP381UtqNclzw-+ksjQYs`^toXNC{Z^!id~lvYq5E@mXg!+46K|^lvUJ|H*G^xTX`k z-2>g?ejJe=T%6yse-7jVN~l-$bP*>YBLAecklTk_#oBx3B7t8s5oNW0mnU@ltB`pRuH~8mT{5Z2IaeMV-ygb8MdwEj5w-Nd z#S^8En;$l7ryNSdzRfW^(3c1a=QQy1^@`)F9B$)eWtTzBKD{gS&(q@g%B9mP-6QdV zX8A_v*5xxmPDF8It&j0v_dor-c6?x>V6@BFOdi?0-tOmO%|d}H8$Ymmn=Al(Pyee* za1i?JPqx^_Mzv$j!=X`Rp`oe8iPJ~1;ONM7O1*c|HPq_f-~HP6%7E`GYi_)nbaP_o zFA2H2e>WsEf56eWE6awQJe2%lNwf`C>+f4a%hxrLTNLlbckloA>5&cg{ekq&RBwep zcdhyETNpZ*_m7YXBCmX$Z{$4sW_V(}B14cqa*e4eH+CnytZIwEi7jiOBRto&cQqZ4 zV)t%7-1hmr6c<6@>pV)o|4CF>uPk7K@)ho$rRf>=D#~E(x5T&9`Mv&!u+y&x@e+R= z;yjeS+LV%>>CIu$hK44j#l9+K-xc&#o2y^-j?rnkXEKW6f-PnxZBw*ACxZ70Pc zlRi-I=-~tKGheaPRT2VOYm#W{vY2b*YQOcbYcX=Ibzy(ZPSNbuBey*zW%aDL)?y zRVH6E6}~HuLo{kM|FtTp#q6R;a_@HvgEL{`^UGcZ57%9P>TQqh@70_#f+QVrYX=gQcP8 zFY}_er5*Wv4p@XA6o0n?SzAju@Mm|4ep0slq>>nKD@RWpa(#rNTi7bfAT;ews{XX9Po8&qnIk!_-}U{S=lMCmZ~Lzp&5^56iH5-o zXiR3+TU0Jbqq|0Pl$ZN>B-4SM1y2*{P?5c$d2Z3@zbwU)2qJNgs#FfYTvl`>?p`)J z%%g(cw>@uzgw6`uXJ}x8WN}y4UmV(FV(U%`Z2q@f6?`8PJx=28lON}ujT=NgmiobR zm*wTngXM!fi=YE)4r%#MFA_ligm}8VR6G*!2rtQadZ7&b0K~_EC^^?LFy329zS+Hm zf__HYamtlRra8=(3HzRkr;(K9Qp;n-uLT~N$+F-|Y6#GDTwTd{7Mz7gnHuPRJ_aV| zrBSIAHTo~TG(>bf)-kY9MYcPZ(@lak9ad*j&>r%tAXQmu)GFTs%kE#|%m44ahBm^b zI#P$o9gHk3`;q8{24XlfFrOhU_CMaTrmZCn%rE|LgWREp z#dAJya6VtwZQV3yl8x+uzSX6vF+Kw8@gGjoZ9#0iLe_uh-<~5in7MH}i(@|(PVtyG zs#^B@p|X?&*}<>A&&5E|H*q;ERw?t9B>o<0m;`J(zk}PB@G5HZJ~X6P)1xHhf%gyo>|`H zpjp~`jye%b4Py?qp}S?l_|s@79AZxpbyCW`Q_vNv)!Hl#*Jgs4)kY_(~v6K0^Mj#W;z z+uh1*4j{C-b44lVjN*u1r zp+miW$(iYfJksEQ1_#-xTFzm9%Y9ILUqE8E9-~);MNyBev5j4>I442 zpfqV^ZumjUTOY+pEgk#uDjx?Myjt&JeALUJg5P?3H#s^VAM&rAYeqZ$0IkYu%WYkF zr~4{**ML*lGZ25QW_>gzxrC zmB(x?pf)YUqk=l6BP(dnm&~6cR=v5+>H?9)xOb9(csXzrP+0G5#~g4Q%;WYT@@njz z%2x)0iKkT5XTTSfb&K1AuvpxrWk-Cc>m$7r4j1w&(a-(SGlh0aDSxkRcw&{qJuQN3 zM04c9PEkyGW%ZlZ!DkELjgb;m$kY=t2peHrA)Iq_duS!8iZtZ#P=VYoO?!(XQ*r~W z*0+4Bt8Yrn5o>i-J+XpC4NO1```D&j^f)Ry;N?}lI6SteLMQB6ew+Klfa2mTzOO+* zQ10i1*xBBjLw5(f6mB9*8ew4mMy%Imokf%JQtkiDb_y^x@%Pq7RbuFEITx8Z`1eIzw{I%+%&)~RTEon3T5oyo zHqv*(*76|R#qFB01RMY&XXhL16C<6)Z+1WSUTHXC=a+?NG zOzY)E&Q&Fi59UDW0yE&{OhhDzmGxT#4b;zaDB{IB^)MS?G#NO!gyxS!9WW#Fy-{YT zF-`>5P7+W2xs{8KrnWs%DM29U@VVX&5!q)mbyupgCI1DOo7WK^kcEWP>+05DO@q`7 zB=|U?%z%ms>r~)%%N{o$U#^2CV;P-{1jSxwN2)F`uN#E3_A~c7SJ$i^nN_;4it95+ zDj$qRu7K-;3WVn&8t=-Rnr9pq5IN=68OiH>SBW|@B{$MSuGKkxn&^F&V-X-c*DI7f zMZ4IY?eDFcm`*UgPzLfXiZ!4garO86lYhn3 zlc}Ub|FZO5ocNz=xZtSm@2jt}lN!o7+OH1q%wj^?FVzNH6?v)k^LA@<^QT(q9uJ97FbL{cRa=<~lJ(6{Tu1e9UdZ zWNxn-+SC_WJ`VC2{w2o@0C;u?cJ#Ln|GLDTI-Ugg7RO!1<&g7s9yILFFC>+718)A7 z#tD?qN~YULTN+!$EEHj}@^NrP z6xlAiIWoGfP;)D(a>)6A5V8^Nr-sdgex1d{lo9< z9;s)0W|80^i%uolKzePVTedS++uJMp<gQb$FSzLRRvcLkNFlhg)W#b|6f?=&?3$JMTylj3>w|G)r zcT`BGEXiZ9^;Tl|ON-#Q)mkewiV(P_eL2Zt`Og@U_*3noiQA^_c7L3)f|7@3C+$e8 zaL?Guan6nr?-L(bivOn;=yHnP-8}KojMQ4>fesGy*<)!^uV`_9%(I3JgU3LzXNv-A zYL0Wq6yepF0wW%Ec}RUqa1o%mi;I}vxSWI7wIwp1N$=prCX@8uql5lH{#?skK5nnv z^Pm`86jLVEPm{?n-zJ%(k$D(KQE;Dv2ya0m$~(QtzoSG26TOE``OA`wE~n0@c*kxq zIAb~uV78@{Kcgib+qTYO2+&9U6VYTvmwh%l%|OZ==xM~sMULuMV`%yhImc%j^a1 zf>1G|e@?s}(Ai-1zgY9WGs?0xFQ_XVDpVzUup>V5LPx@Ba{5|NtDXP%Ur}@9$j+@2Zg$D4rSw!dxu}dn$f~)eTalob+ujm zN8jAj&SwjE6<-2+b-qWBgcRzGy zrF+Jg9E=)`L1OexFVSM*$KA_IoI_l-M>1moC}&^2M4hUA*2a z>MNpWLpi(+OCPz!`qZP zGoenb%$uN@^OE&>Tw#NSc5Ak9dQXtjVSj3_Z90M$spmp?-)}DOf%Dc6(jItIwm)Pf zf0vRFv-8ow$B`+!4OXl8c+51$55;%xftqH!cpRmd8^-Vwz+Gl;kHj9%G~%tMTui9%Jiy}PI$Gz}9emDEBPC(mmq@VFW1tyMixfVIqER>WvK!KnVQ zNb>M~KE3Mwd}I6EjkfYHn=h<^ivgv%nD^s^T$h2EaZ;GFZWJSKoIF+Ir-Dw9UfiCU zE`-D}P8`nWEA;tHrglxehLu4vcJ@v#hX3^#Jb+YXy(`-SV)3Z*H*?L4=E6&hnsA@b zkJJ7j=@>V9SGrN`10xgZf{(gUSKmrrI(!k%RPoHubQb`Hw?i8KXSaT$H^9Zv?KjY} ze{StuIWs4l^R4%Qyb95qA@)$>gIpXDwEZSy{oJI?gF)nB_Glu!jfk(*JnNvMT*I1v zjcukN)izWm{h)`VY$BjPFs0ld5R(~^=hA)CKh&iX^4j!|{{%!PDXFVGOF6cn?1GI+ zXS0US?u;i@JNo{Ni`=hEmwTPc=bzgRY>NAL28`EsO_)EBbM#wS~mU2}Zcu{GgGl&WkaO51^;U z0(B%;Q)=sJS9O*7-)M{M3haG4caJBjWOk;EJcdu zi@L%m3nj&R&4%^MHE1&>g1>!0Bmk`K5QE zgL9@cp>euP$1zt3GQ=c!R)1d5@juu5bvjuN`3i+Mxk_Fv-N~LSC>9Of6^rig7&o35 zYYan-IB$m*&vGceFefRjD2IwVzjG?@kg2m< zkRb9%?(($qnrvyv|N2;Jwi;wbah>V;U__ArMU0KEc*gI%8BSkrj}Nb(Stu0CNSy4?&yHPj2GD??Z7!a0q`F>7xC= z4Hjw63RxU$>1+7{$t@1v) ziRV!DHCfN8RJ^ZQOCPIcU@y2tmT`d!NDn#Ic>~Ye1$S5n0|Uu-ievRHUaso7Th007 zkqjg8UNx9^Mnwggc3ke(P)^Z1c^f>CAni!?vifo2G0L3T7h&172eipdx%#s(G?>0E zp$NAlJ6yN%;tG_|+Ho(RqfXFww;qOa?a}GDdJ3={oKFSxj8w02? z@dWyA&_hYUJ*h>lQamkep%SKE$kF%G@S!kmJ6dB|UxP-a`~Xm+Ci5OJSnrT*Fz$~A zzmPv1esF8vITqhZ;~rS5_F@)oy*T4suq zt1OJ#*&Odfv=5iU{u044s~fVl3mQLpPA>S-bzvAq<$;6+V=y7gcDk#D&SR|q#HU7Q zv(cD?Z;PNK_(^{>PXPB~v!5w?an;6K?Vo5a!+>w=YQ$357L!~BJR85@5AQkU1r=Z? zf7M8<^rnQpP`BCN8rEA&LNBN%{UoDlK$+X_6cj0B9 zZ(#mZ{VcJ+Q;Js4E$(wzvvOpkeO({lrhh_b|2kA&k)vWrx%{xST9u;KI5VsDsN?W2 zUzsVuVq=5!ireU*QvM>(shv$5yB8AqpUY{HJEI+xGi?QJ*mou4%QHOqjHx zp>K}WDk10KScAA+jh$LVcM$BtUiYWjO+cTd`LS5&FcgXWb2fNZ>e-W~eNF(cq{kbL zKRI2G2X9>U=#9-Q3kdqi#_hDnfgvohi)@OUg1=|b?dt@SEiGlH&$Tu_UK2W0x=kzv zsY=Md`SB45A%A%6oHrTLxXg3CP62+nzmR=;VVLy_?R^3tp;a%&*hq{LRCfp}lLK8v z(=zxGJ5{rSz^H$cC+l13?hE0wVm+Ec3f~p;gri?1bJP$kk}AU9$?*Hh1>*l?`@f%r zH|Er1Z2sUwR^(WDaxR(<{(h{=Rrb}wPOs-$4<;ZaaK<7SI;Cx2jMUzwub{DNQuF!C zWL?iVpBr~dLwvjMz7}Vn_4zVxpZYn^9K_YQthrrWKcwKL8GNTGN1?(k-G23g{D4_Y z<=68_TiS5QlHHObf2(%3IWs8cl5#JpR0#B3o$X%j6t*Hme_~lQ#fqNS(5#Bd8sAHHQh=?AL-_ znja(?6xu86eWS;6jSBQcnfJqsKcge3-ZWj9x0TuXV^aL6+0m2dZ+`ha$kjoq5A(_|78gi{MdL8E$mTk zoDnbk87)zp-8*te^v8kJ%^QfX0k|!g_ll7|BzoG#%Wivd)}w(u|9a}}ORKG4DTmko z2MDP&zR7OwWewon%2*ezQb1MP3iBG7)H^M+*BmKxCJTk5HLf3Y1CJ-_p7}37J6Y z)~&c+z4jyN$Zgv!4xKh?&5SdJRhI0!<-t_kmE{RB_@ zC~AL-2QK-Yq#QjkyldpDC-h3Ik2az*lKoupG$Mw#DVg{C2tcst{YdH1o{>&U$lToV zdizYc5S0PAp>DUm|0*F;BSC*_zQZM4Rq`*(?thl0Em3lc1}?W~bGwkl_!VCT`GjkP z^xL|_!p@#?%Y6%pRV$_LGddz~(0&wp%vPRW*E&T7AC_Kuq>tGSY8)vf@@`NI!h6LI zUdH(EZ2s}28rgE7EXm(aqH-I^n?@;0>Ev(roKN1ObZ-cLVn1++2`g2M*CyScqkiL9 z4(rOfH$Ep}_F0!Y;#_a9ogaxN&MCe}714Kpxkl!U1@!>he5Gz1)=ml*GI38q@(x4q z+vsfXXCe*oA$#Vh*i&26x$^sTT){mM9R;|nIly)2VULnd4`kr>Y}-Y}(M3n8qXg^b zT%WApVq55+v`^rZS@umE1+!v+*!|c$Wrnr~Ivu*hK#FyS)m9vs@aj)$&VXQ#je5{k z%Fv^X9^wAUbeC+SX}uNVE%o*4r7g85LEehcu7JT!<&uohDs^vdD7ivhf?dE>0sQ4j zR=auNi$f(|^FUlY>+y7BtC+rQiY()r7p=0qNLMMU$A!J;&c|y_L3MIHF&af!hI6!G8-PKwW!xP=zpCAk!q`ZwU6 zait3Wm-xU@Oz9H(9%(gxVVEP^T$J_5h9lcjuuUe$SMZe-Gx#4`OX4>hSXkwdEet*2D{HiJl;LOhr zEkpV@`eorRmuUE43I#Sfv)d2;Q87D$%F=Lp>{XAhElOxPu)H+TShV!xclsdyNOAgA zE_u0(T{z!HCN78cTCTf*U3Qsoc2+PeKb(I+*}qN^154s+SRb(ObAFK~B(Qux{PmAG zNy%py-75?~+j)~0F_QEoF5m1)jJ6Sgv>=wiZwlgImwKX|-Cdv}p~N)r1;Sd@PN6)~e`5P)KK4MdA6 zJ!BELn(Ug5qL>z_fm^%a*dKFrf|yEyJ5@oaC^d|I>NWldX-cE^4)&1uj3oF!khhOV zXW9;>P5DK-wqzh)A$A**~OT!j&g;ejxYRO;faI`vXn(Z$%Vtv0`)n!|qPz4zK z1KcAih~V-}g0@804}R2bjxmgDC+_-Kd4I_<{IYdpu>Y=&19)+dDFvd{D~#{$C8{jV zsW8&^@Ac7YniN$WP|_OaCe0z!%ZyHmGUQs{@8YNUaibu;p}qT(ZUY*r$% zMEuh^Q1O?Nt~E!Yp{OQ>yRRl*ul4!ix2c757%jrQi8^iG@XIP=Ochiif_|q^_%^^h z=aKZDp1^B{T>pZj^o+DRpt6bDSuMI1w{?CEz=wxiJAA}-(ztKhdQ8fVP$Kl65K8~> zG5SE*FQ-^s?v1U4{VH~fS!fzHCLboafPNa)lB$MQoSRo6 z0~&vat@zI|Om(9>BvWLpeKK)3oI2d#HW;R8;QR_bsi5%kTF~u*fY-ltlyB__JHl$x zqeC3cj(hJWZ|xwfTA9XScWz?yy9@%>Z2Dd&&!mXlXrA7|v|J-r+@hoeCFYxPW?YPS zj__lX);y?mkJ*u5A-|#iWhq~I{2tW-Im>xHLY?R3?yQS*W(vN7cdFT|9c){(BA2!v zC-UTK>t8Rt>?2hv6VGanlyNSJR^L*{E+0_mD+~P61&04ZEk+$ zsgOvW&+al%Mh*@!2^N&F^Fah!oJuJl84E~?(Fpy3U|J;yv(p^$^i`~kmAbOoQl1mP zzr6RVDh%q1y?T2h*UU;!_3`Yb!5NE4rq-(iFV3*eIv|Df)fFyD5FNGzdI_wL-(+-R zl-aL%RF8+JVte|%P;bge?_Z~11glM(iStfLqUe#fp(&DSl+a8TADD~2TP`CjdukN~ z1jT53$n^)6npF83D)oV^PJcKYceh8$79B1Pfaxgz;H!26xXc)1Tzcp?f;2h3s4)hRW*l@M| z;x4}mZ(E9S&cEJ38@7N?UnhcJHISE)tp;@6&*z2Avg5xS1}AxCpIZM5oS6WX`$F#V*F0d_aK0$eg;W7b?nRNRFyOn15va%N(Ib=zMK^pVVbUYgtC zE1d7dy39zIozV5b6qxM2i|cA&8N=Bj0f8p`gaMI-7z5xHtn zBfwq2!ZSrLy?gC?jH!eW5_@TwMHF$-)YJV&!8}78$$WS^s+t9n2sf&Cv5c4kS)Lv@ zbyGG5bvN9%LW|lb91d^fTPhao)zA!>C-pVSW(W#c)KB`0xciEDv3KzDiA5gGXTyCq z;7V?Si?!W;zUhP`o4?l)j4%Gwd8AO}-leB-0IQ5-5L-l~f#^b*Pl31c z!O=e9;B%Y_^IWZ|*qHcmrjX%LF)wkWZ*AYLmR~0!dwj8Y8l?HfE7ZjK=EeKVl*Z*l|BxA6EX;$8~&<<*%16ZNX%fXgIKcQ;|P0qgc$$kfMEoUx$ zDQui*0mF~~bB5f9&dF>sZXLnUQg?OZ9AAi7{aCxJgvaLwSGXrQXs5{EWA$bxu>Z0= z|Cx!D{S&18VOYEJi8YLA6~F|5xj&Ck3!-OWGv#CH5)riZKZ+9(;$B~3;B(+fj%5U+ zGM4wmT5IMPT{`_aks9@vr5gJ=p-V(T#@>v-Fy+z@;#u|1{MUc{=CGeOcG4ry?2`AK z_972dD+0eOYIV+>741MiTT@cc5PN}V#VEsvr6B5=Y%8tSzNwk%TtC&WY&4PP;fx4C-hm@De<@43H)z<- z#R8Q*KI90ok71;)h9ad)!sVl*?%J=CTY#feHwIkA_Z<0)Q5(ZVV!AUSeMGXF$JpB! z^`Ikn^-`wU!R)<)x^RBH?ot)zq92&{P)k3P83MN`ZA5*};!POPP8 zb7Bi?kXe-Kd|)0RoxtA7wRIR7T$pfqNi~Tp!haw&dY%*BdL+OK4~}wBo5n4x+GKbp zo3}o`emj=-VH!szmU0ZB#)LUE{A6|$E*zQ&8V0)Gw7Tu3#qfm|p+M??Bi5@t4goQ0YLkAlnm3M^UHz>60FPWnZf|vx=qq7+RD*|%pnWg#dI<(B zx75*g-A3_Q`XXOrQJGq%J+_8o*O*tX5rNgpyZY2Kj_{fp$v|4U6XZF}{U6tDX5*hc zf%5!2n3ugMubkb7)~(Pli`oSs?&ifYh;w>mt}^=9nJc%gcFeDlXj^`u0hDzhoJ`H8 zhI$&~PmJdSW2Bjd+H%z2A}a0FNicU6ZLU<^e^E87sB0~RpP2Dafu&0Csx%}vl=-5P zt&UMFHnkS?WN8qws4MT~lby3X2W^7)4>(|Q6F2_w34QM9Pm&2HbaiiVc5=;R%ri%~ zHIpKTctPh**~my2+Sh}tFTB|DrrU_`#vg;8O5IAFu(7P+m5f)Fq+f1=nPlV)JlLPW zY;ITg)!4=ADe>YG`IMlA-d9LNn=V@06m_=FN{oD=o1Y}kvuGe5W#=Pdx3dtNAoWnv zM)h|UkAn!izP^UF)gJ17?uSpB`u)d{dv1e|dC`J^4-* zWSwE)*JE2+$g6c&>`Je~pZqx3ie?n;kuw*iZb82kyjqcdgU(cii67+T6y0^7pUsIk znV0m4w6O;NN-%s-AW9KZX8bQK8u_PVWfB#)rT3Smz!y7VURZ596jBtl8eS&-G!#cb z-BPn2H$8jym*qDk;MDC$Grbw%IJw80%^qGf=uz5h_`jAE_hbYg3c<@zqt=x7Dg0Cu zUG````z96Zpk{Zk9objfd?N-m5*PQuDu`k_{S;7j>lOR-`)g+;a>B&H7}GHhxqtBJ zPQzWX=BL2QucruS%6yX}cBbncan~s5t)H?)`t3_U?$~@8qHRuZ2$zxWZ%vBhk1pEf zyc;GRM+L6$`E3U5C>*bLVoOgzwI^Cj6llW2h#IQqmRZqfdMouegkTpO`jOtTUP*jk znquE2>#s;(q@Gz-_9pR5>9sCXE2L*CEp^ln!zoA|D>0zeZeV3SeqdlK;A_w(>ZTTk z$mg0@-;*sT`5@F2+`-2*Jie9llS%kAyp{xIg*Hs6(8sQ4P3edy@t{QLPgDf$7w|S# zZtiIZOYbt*74n)aydhh1q46-YFahs>hfEE)f+Ms{wdeT~{+TFq7JJDVR8OMi%m`TO z6(B5Uu>l<^0nDv2zd+mEInG1}aoWRd!x(k{Z(=^@n)7b4%n3b9TYDeM0WQeXw20tM zlTEYrXRgLrRnEJzZmet;H~`PqT_`&Af|}&#z=Z?s&o8}y9AQe=4^7Os*8)-c>OmoR z4nzk?rCH7r<3bC2aox6l1@d|7ja!9z*b0-+5fnZekLvtKq314?!ta_jBMbfWFZ0Gr z49;k>95pP)cHt_*0fyGiF@r1-{5Uqq!nw zP5U_OlBTseE$zHnpAp!*ddJePoPSSXKRk4)@4(@B)0WCm({hD1^Ln4eWq>Lkq+uaU zk;(@#E~J*FIZ#FgISpsZ=zIaVEOLp)ZbnMr=A>O=kmb4N>rPgM;9_Aj;f$Uvq=hVt zwfg{2UK7LWl6T1kRl>A$bKKAMgB>q}bX+GQ4#tTnu0$X%B%eZs%XP+9d zmN;8nTjFX?gVz_zk6R6^%F+Tnw0&8j?r$O#1t36#;8e z*t=r#k#?TSmb919I*nHs9}7o!m*gN)cl4K)KOP2m%;P_Xi4c;Iva6- zp~>l+*R@+$iZ5Y42**&|g9)9>=k(Q7&0vaZouiHEq|#C+alJS%);sIvBu-3tHVRw$MNcTzt|ZNG zocQ^W=PtxPf=~%-$AMLd#a-;}Mu3AVlNaRq%C{?*2YqsVbRLg^I>+BHO3tqT&?~Hp z+N=U93_UVAN|KgVKo{K7`+=KJS^uPA{9Iky@$B8STDR`J@OME`{8 zuoGa8G7g%If7DmK6_ZA_rp_te>L}AVv+F_68O=h2GA=EAY1(IOP1WeVNZxz}jnXTR z0D1Wt&kP@;gbfp|m`oye8CG-FUL`Y4*jrtOEsXppAIdCm(%6nF$8Rt~tWV&yQCN-c z=AzCdRn^j=LjSlIH{+WL0?1*X+fs_tN*tn+Xt+YHSK?7amhQt4pN<2R`v<#c+S^BJ zKFBNI-7SunU-Y5fP1F?_>OxCJv74DUdLwgGudLK1A+s%GEP`XxjzmPdKhT$NQOPU9 zt)VKebD+9PU30Xd-*$z86lUs)ij=GEtl>!5?Chyf_Ok2E!>C1th%qib0j#@TFT?*- zM>?_$7*<>SAWW6yl#%PPY##ag9)(C?2<7z&9@ML|5*E_yN<+XhSWI8Nf~Dw&)!1}9 z)^5X${EnB$^VL!l>vy+?Cz=I4pDvf=E@!Y;!9VGhGb}9IgC>|lrJP-$H;3M;Kiz#| zI`67m&P-1JR&H*ieed-^t0oRrcwvz2GSNZXEBKM1HY;L4+@i?dUyGpRt~^oRG9@Cc zpTEn=H0Q1#PGpzEmBa*fd6@?Y@-x1-L`T!vx}>b~oMS_~=~ZtmP*)Xe92}0Ybio`V zOWrJ+Q30eOt$JXBQfPb+BPpw#cp*R_mMs8(zT^)otDuk*aEJI(O2jPg;18-9tYnU> zI*|`O)y71+pqbFwbQ%AYCPoOTJO|1>QHTwnL*>Tb@O7y`Y3e-O*LS8who2okagKY?#i=8W#HIjF&DB!R!%=OaP(g@LqXxQBQ zX*XY+jZuyaxso%DatKx8dxc({sd!{}VdRFSjZJ^-2AY(tsC3?1-mjENb|Bz=Pvv>6 z!MLi^A;U_}(%NCI>CbbPf*n+?c{1#w*M>9PpG~BY(Bgm{U#`sKSCiszwbNckU&} zQI5Y5j+oq_U2TruPKoP*FTU)RNw$=la@XgizEJAh8}f%yI~9drg&L!6?)qih3Om?+ zRuSBBk6Me`52*oU*+7JLYvzba%D;^xW*IQ03VZ!F!!JM8{J#Hj#Tec$eDIgWe7|}0 zZY>NZ?iHzb^*K{6*#%syH4Oc**T@WJX!mY8!;b)f%bV+Yk7`~hU__HmdU~H<@;W?R z^NlQWFP2LA5cgF(M5M1>+G!G*t(*kRo7+CKe-7W5@iXcxML$*4n%mxhI#f76t56px z5iX6O?L`N1m7T7@coH+XP>LUo6qytIBc+*Ak&xY&@_t}_h+&8Bsy0kN;gtxevELTp zBSx{-V=e)C9-{Z0yn^C=HxM?T`z^O)0OE;}|D_XoTtFD9JYYse$cc$cuI|sjKak&|zyg!?y9Joa(-h`Ry{p>ynaIl3LqM5+5JVgnyGBs1E?0gsVWd`?z zOL%!$Yyax>RX^a+S_Z&D_W|@LYJs+snBxcIti>eT{8mOAVA<47Y95Y7!+3lV3}(?_ z^(TR41JROU@n3v7eyv~o<|9H}nA~ueu%yQ<&NIzQ}AZD>VWN0*Yxa-NMCKz83Fo6}e2WnHFO&N*eb?`|IrM zhcwJ(O{wW$a=#k<;(D_s4$B(DS;B;(xG&8iEMWno8TdrBpxvTLq{}Y4tUM-WT(Dl# zjGAe3UtIOFhT4@lB6g~U@8#vP#Ne3wuYk2k$56UTzb_UoOMYe~B-gNh=nivU5yxYt zf~3qX!(&5|a*()7MbHmD^>v9h)6hVgPmDOdMtj2CLqe7ue)&1E<5O0um#oGA__fcl>Mgm*t#?dZ;FAzN%)KsEty-MV;{7bEq(Ht0)X9xo;CwKx*V*cgr{=gy z9e^QYl;xRCwoom|%9LdK|*sT9QXo$!)kC%zvKG_X-w>iwwBq{O)z@ z;>5VqKwfu-6v|V6F(9zj`zLzp=+0CSjx)>_oe8_>j+w(e;NiR1=+i^UBk3Itz|THu zM~=LNRJCq6Xu5MR8~kM6UKtBa?<(t6jX4(SV!nbMeE9Ift+l}8&toOhXBpj$ri*cgpFJ8^ zED?ow6`ua|v(4=pczI-ahn`bbMbU4i^T6n@oazRj3vzde3z3EqxOY@~gQ?8hwD*ej_* zu8Hf|hg*;*DC!LORP)F{Om~zFR}y_Ac=)aDb`)@W`V7uE`QseC=>Fi9gQFoJ=zF}~ zh&5$#Cwb?dm}%!PmD{a!L$vO-{g6y?KKz!OGEZ!OdC!7L-oRg$djV8xzk}kyCMq_? zse*c@qGS4{y~w>-Lnhsasc( z;TGGAYF%xb35953h}?yOCpv<0HRh=ch5sWnGh%J=YKE6^w>_Kg`~l(vhwuc4j}YL= zf~N_BPMPcwuza4Qe3a_`;20Bsf2PH^%Ez;=GQIr$VL9v|5q;+Xv)^J{UbSMM>SUyZjwv6sP0x3_?4a>yb9U;@*%TqXP$xs#gCMSt|ES(j%v<5 z>|c;i=C<)NLI5(}H^xw+yzHoyH>aiJD->J2=R%1(;M*ffW0e#OZ&jzzF^SOOKX&oU zeLl6h%s;4l)-b78Z|8*daTl=Vv3%sg*hl*A!49xbMLRnB3nk1%Z8tv(vhAdUC?UZ%-aP(Z{v$|5!v@&}VCX1%Jy0EOENFhH`N{ALQ38`UY_HnR+{ z4%VcWdSzfhyl#|D>`^pmxb;ZHva#X-1 z+Q~~{^Ou3^CV09)V++UpXsmFlT`!AW0=1GiRQKWg8ne2|MSw&!CNEL?m$WQj67{8a$nCDi_NqQ z4|e*7OdQ0;MqAs2*_I3-@JbH@$A-e+ReguGS}LEm?u@yiYfpH23~Py#l?59cyD5V= z27=?SaLm|yK`pvVS_~sV6OM%A%DZGl#AJ*>+yG3si>IRY)c^veP z0&$8KAJEEmKO*H&_D+0LMCpq6sOA+lCjY8{{}K?Kh7?gfXTXO_f70?jH2ulb$Nyd% z(3I^mzp|8%O41sML%V_9D-ZyI$^O>m)O7_x@@ zo>0|dwMqHQavS0)8&+iRdEt3j6?xB67GPsuaXp;BKppUqHl(VhT{3@jA1LQ3-1?Bi z%nPhWZ|?V(cd{0=z4{fN2ltjp5YY)hULE*-4*x7QpQ$wVD*hKFm~K3gU7?l#cJ9@A zB;8A>xAuD6fd18cq?r4sbr7Q1wzGzcefr?`e^VH@eB-dg`ypF%w5j7UmQk@m?NNIM z9`I%F2e8oCu(Z47VhwS1A1PFbs-QJSpUrKanVx7zo?2Vds}hd1Y$YZ6D#8#^mbaIh zngPL%{L6|YK_rvZf~HP4fHS;gIlG&!eo=--lK`Dz;w@ggdXU#Kvn#yd$x}3;D)y%30dH>`XF(%~8 zL3OscnGJw}3t!*V%sF3VX=(C*6rFoK)BXF$Lx>zQj4|gq%=vsiALe|PoO3oB84?oZ z%osE0v(2$6r-YQkHgg`iv*=`KO5I3qN_~I({jonkf9>(PKJWK+U9abpwJTrnyG)sv zgFEYVf;IfAlq{csH5g;p{?=gKJ&80KG#M%o%ehu-kN5as)9PL}yX-=NC3CThwbA#kaEW9PI{TxmYKq%nflTs zXxf!VE)>wNUYJ96s!qQm_xhG_da{H>WsLz-LFbtFn^O_62bY69jx&A{jPD z9HTlnTQE=7@Mxm*7=~`?E`{VIjgT2b@NGMKa5827l?CbeHa zdN}pksAlTG?cwpk$IM;TrGrlLcGl8=*}5FY^ml9;%1#r&BGlKPemttiysCqHY0ZIq zHE(j(iBw>|9qxDpmK2xj?fu0)0hu(;gJ}9EmhC0`J57dqwkpX&yCq5UU+gQWn-k@8 zmsY|JB|FvR5rp}}LwH=kVb;G0AkQYB%gV>f@J%au0lcJ+|C$IO@mU_06(QOTUgZ zq$B-P+ABo9g{eO-8{cMY9 z!Dt8U{?DfBFEyt@jpe4-CkBi=A=}mT<3z`CK*7IX&Z(NA1eBousHghTseVdRCFqH- zsD0*d>yKn?<&1BFQ54z7J^q;cD_6)DcqtzYDT5>_FVOZQbXijcsN3 z|6L$WYx=ypkb8jd?aI2L3O4@1rEiWxOSkKOn#M!#L z;0JsOBb8VOm9)@`;T3+J-eQ014bdA>H#4a;+7^sw9c3C`E~bOXzKZ4Lu`RKlSZW6drF% zt=3kHYDIhb%4mlIh9-;PB@dNCornB{$Als}B9;9m(EcV-Eju2suCteA_coTob~2P7 zsqAHQjfH#2%;l%2{W3|~!8gyA!wnLQ@ozPD$q!9bt(?K*2-R=31IctZkIH_AON#o{ z2Hx$sZaqwNM)`+D(|g?9OTUI{DMqew-vy0w{O2cMCDaxzb$ziJWB$BWMtrL;Y~`0J9Jh}Ibj8`LH)YQ7iQdBxypq0LNO zTkn;-Tbo!z$snmZa^I`R^MrmAmdz z5)#J&U`h&ArGo$y<)vK%=uD+sDiJH_xKZY3Z&`N}_Y z{ygqfd-nb{p_U576H!Q#27f|`&_`FGDfCXUo0F~Ku_8<{9PdAMtm^X+f7|InS=J;H z4ixR9+T|!{UzVFfF;z9aTrQ4@xYv}`57M2J^0qJsNJ6WEuMG4Q5E;Cw*UYnuuy0j0TH^{URFMSie_oGfwy z7OJkvg)deQsE4B$b56n=9BD~+MkWL;4~CmZUvDLJqATgUHl9N_CcmRch+0=Ax3NaZ z-6!AqcT?4l418lPDd=?amTYxS)0PXr)0c$A(~fhrOGd_Mu zQRFv=N5$_OXMHr^+BeG12Q;jthT|mw9_7Sdl`{A0TgRnJd#6V`^_7{Wap>kI)1dS# z+g|Zjv3F0aQrbH01>(=Kwyvw4F{sbT9kaKb)asRi z46@lddc&Udb04s*rMnY_`aEi@gnIp)QfD9%b8`F7_0@^d9pkcc=iWB7gggpcqBt{= zcW0ApIo>|)s!dlXtieF`2I1uPsc__0yY9Q+;&)b+@IWnJ1n;^%V8G#|6znnZ$1#q0*l#e`s)YCw zAKEP@?169^_{!H$gXw>JXmGw3-Sz;zm|SIO03NRJ*?j!fRt~Bc+dy=Wtw^21ncfQ# z5FokS3*F7@6A=?4K@_tb!(^CWn`WF`pc9uQ6|Z*N6%5>GXpCWg@Qpj=ZZ3~YX^Q{ zby*PVqSY3Re{4hnAh6(pJa_W0XqYqW85 zgg6QKCfP14>#_(*ZmX0E*g}eUBqf)>m4&ncY^?PQsJi5_94xFPDrAE+jFC$1h zbJb`PYYMk?I_jt%C3vW|ILU<2;+#lYueC(MyyGVA_zMBxf2^k%+X>##aH)%|d_WJI zvZ$(Vnn+hJ5TUL$#Wo_%ruXSPF_znTNlHY z>K=y_-*K3uMf()$a1EP*8+Dr_L1c2>$bVZ{!|);H?vw!hGcn!+X2+zwFjrFe2E{d$ zOVpRU#PRU!<{WqUARgUWnt5@+PzoD^$x3O(=s*~&6E>-~6E|_6OO%+@1UsF8Z*dNZ zS@<}C_aG9(UT0}APT!i6H@jtjUI{*{^TCySysrE9hvO$$0?Vdg6VTB8p-)PXnk>OK zp|x~)-nRYWnNCO%in_A<%j^WKa1^jQj4d5q@OY12!-QYsAK=#C-#^%0)7eiGXT0=~ zt6!E(_WFNh!N0}VqYjPFOQ7yx%9GY{wBFWC{oVb~zxLz9KgNvHD9gKlT}jBh;&*D# zU!8e-DYEe?IdO@pCgV=Q#WfLBt)BKXNtQ%8{9oQ{1RAG3+6v}DX+{n z$!2ePW*t)?M98YT8WpF%)zU4K8^^OnrW`@p zPc@=`8kd+!`~mN6H`(sUt)KQS{k4@d+iGBNXnEyQx92}+eCj!q?Ua*Mi~o3%^wV}w zxC@5C>8TPG-~omb5{FlA;P7JQ3}>IhNx+zxdUtI^iO*=*qY@P#O?1s3{WfGx%g~0A z$4K_vhs``t6xugs4CC``d`haO48d9b$bk(C*61#eitoy&@HbIVk@#(-VfYXA?%0Mt~)}}Oc*qTvHAdK8SV>aYAbBWsZL=3T1u1#OB z%8Bp?sD)}r;JmYY%TXONb^tf8K(4}(`}=+>xVqos^EgM=DmR{S1RFOOTm+=ms#&gb z<$iz9eH($YXy$n;hXn+d+vg(y6BKyK^D>JX`;4_#D&S=qk10)|Nk-nfp=M}U;Hvs~ zvfTsj>?gT=7&aN{LUO@7$(B6AT^0dNXnBH^96&{y;Sj~BuD-nE;$|IG?t4UW&Vb<@OaXM>__vrZ9vV)zVdQgD=~Bc}a`~=45_}-^T5qV7LfR zQOi1$@^C?Rq>3cQPRgGpT0)17(e+jp=>)4`__Ie({@B5XY6M;!9|vFn?u z#xO_I;(Up$VM`vws8sphr^A4 z{r>c|B5@5m*zM_HkaF_MiT18Gfi}4lo2#6`XQ=<_(lnVILuJ*Iw+Rb$>SyqJ14P|5 z+n@1xmivkOOX4;}4jF!S&FP69zq=YE@&-1kcX-YL+uJVTzpuRjb>2BxLe&!q)j)8$ zdtz*-_jh!KZ1(TWx$@rG%9;eEhHd$w8EHph@5SmbzADg;1nEo=8YuhSjM!08_5cch z>|Zf@-WbHA_>ca4C_6Wf92mWm&T3C9^*C5nTE!h28lJ;5$e?cCH+IECF(at4^@|&fN9s*5)-EWOOxdq`UXBp4QRLt zO=<7f{A79V|KT9{Y$QEO8539=c8SrW-9HYS!Cng^)Zp`9ol>4%RA@)73tfg4Jo z@MIla$7>%o`K)Jr#>2m*xArRp9)~qx*SlHKJa`6!V{RjQDl!ZpsECKeO217ZBGyi_j+Z+{3{~$N(Qk-gn3v4 zBPGgWPGASTwsa`#tp(5}G#y)*i+Xz5&j8E;g;#CO)kPFal#k$O=NCj9`c-yT3xgev zu3}Ny`YwSi1fzYm^^#(%$Qj6q<#F<21T*#2BUG5{>BX0+F1YUfm`Z?We^AgX>!5ag z?F4~mIyxVg9$BMky*+$;t3>jlmB!r)Mgmq3wtSSP(r($#?}*N|2Rty?-d|AQtnlrf zX6LKO(L62BpJm>J-;z>%RkVJ~obi6L%~LKjhSV3{b9*dzznJS!NV^!;@1qlrdt)KJ z#~=Jp!7-mRSBW==>%OGrg1NwN&Mu*KHivQOeuX8gU@_H(awY!$qr5~#1s%S!doj$( zeDi(TB zEQIRo>{ghUWQG&t8q7Wn8Agl=;=cWngKt_p%WlzJNU*icrYm3goCA7UF2HRDS7Bv` z4fo|s3cTVyjZ0FKS!4Ufr}u(bBmvfokY39Yv2ht#HgEG|%CgChzzajH-I-t(Emije zfimjRRc$XVTFnEiafSW9s6(acAwi#3R>pt{h$&_+G`6x+WUU*LCl=C<^`?cctY_7+ zwhmn`T_)cPWY%bb-%uCu^AZ$-_4_ahdATXqUb4JE6cFafX+qZ<(?6{-Trr0ne1#EV zB^(Vm&1L(K%-zVjR>2V8TQ+rzHSny@Eg!t(WtKy4(dO?Tt-B>pug~ADfIqCP`#1#8 ziM~WUiN3!eXOFAnD`!Yl>DH^kC_a2GId4PV)#>X_3BGnFZ~q%XrpYCTbhE!mHmu;( za+bWjthJ~UY5Y&U;S%?w;)Y`FdQtFNW4u>LPF>PX+V&s#OPYsHuuYVgs&&jAAgv$s zo2@{OEA2Aiov7p!ys{v#udy5UL#|p_r`aXS!b0tAQhxaCPH33u29JK%w5junk(i7ah zt;VZXKOY|`^{1I3U?nD`sM8pz5MBGHhV45mR$k!G+XJM(=+eg@N#sfx^b~&|B}6Mf zdU6aIfNWl)ydiovL5|F3=u4&A4HL=|zwjkK;|(cs+rSA{9B@4rTZFO z9-gS+@@9FlA-bvZD6Fcjr+XG8bNdN(fmE*lY4q{O@Knxk;x|Y^;M7D*wXRg;qZSr%fm51taZi+gV|$ue29di(u)fkMM!m zhO-B&Y)WY$j8TWGVq0Je+p(#kCX*<`}!k*rUm|K1v@hDdbBs8e8 z!ud=!%Z`DTG_fe+M7f_TGY=^`T86{R3Z=GOEWeY#4F|euDi%D&tq%Na`Acz%flG2+ z?}z3!=F!Pjtl6J-mrFLiDawM~k2?4wana`#%D;un-XB zCH%oJ5bZ8MvEUYq<)+&xO=L!8$cad^hSk2b#;rnyLi+6Y1K}_71p934*FCBSE)0d) zRkunnD`-dFkcH<~T-LnU(j2^uNT^ZqiC~^rE%fKWt>_ec6s$|*@(7&kBAgl`7)GGc zg&L8d&*#ua@^q)pdW(N9l_nLNonZJ&K^ucRyUYyBmlA+2y)%~l>~FJTP#BsCIKuE z3>HWEw?d=jzdU;!7W3pibLm=7*%Kpz=Y6N zisWFmkzAqZPC9T%mxBaU?zJ&UPuwb;>#V2MRsaSCN}4{@6?$L5eEq^h70K6*hrxX) zTuT1dRgvj(Agv|9*4;%nJGAyK)AXGJZm!x~N;Io=%X)9tG7D#4e4SqddxFxKUhTdx)~XND|DG``ZA#<;5%W~N}+)0 zkhX8#j^J?lGgE6LqJ*+o%jecW!o!WUjAVvxkf@KrnO+nu@SP~*cu@i#1=T?bMHSA{ zZM|40SlApl_A{LOn_@kn3eP*6u|ty&jHEg$fUBcYi6l zxZYRT!38o(%AJyJse2pwAf&a7fH1C61eU!w(SIl=yCVYGU4@pqQ0Iv|pj9LB=ILtb z==7Q)<0zT2xprY`~Q*#Z?hiW0_$By>X+T1Yo@ z)5UQ?y5YSSlJsdhbzEF$qMBjs-kaJ@7`?1ly&dg~)su@+jW#eV#b%_~PP*THRGY_F zlu-O{#{Vv`Lkub3lK1OjkMz0{WM8I)cRR-^lP6#9kg?xUHxFiaGMz<6M*Cqd8G*Tq zFD63uZde&WCo9nMCS*$w6!o9ayTxah37cLnt~&3bym{Kh|6M4oUp@Pg7v50+*O#tw zgv~FHDn6<*e&IOS|8nQ7t#-BfqTe8S8~Hloomf|7s{GA1puLQl`v@xa{3iK0aY|53 zSW|9DNM1fiEIIMx4s_l3$6tFBdW|2{3q4&TjN32_NLleNPVuHtNcP}bp8?9?W$jEF zon~R4Iw&q@uL%5>np4#*5ZKZ77>u7QX&gj_)-{tXONgcv0dz z0W4gWJ^VP|EhASv4+bf|u^#Fr6V?Xs%C-~mlZ)Y2gjO|5`ZLQdk8(7T>^v0yZAZr=0O_j0CLL$OgB{$4-4$(YfBHc>nrb0A+ex;n+MFDZ^SBX?_15P-+wq|$B7o&_ zObamb;?Y|;rz-iW`6z^?o@p+)}vD-26Ts8WcEEaPG;4-CY$&)xej1qn|KXYt8@6Sxa20_y z6jH>~TY&Dz&*+S`_z4TJGA}1F9LNID7ML~*NVJ>ap*HtZizM4J{)9@urD+9zL72Up z4drO~LUg}a$>Xa-MUvArjGwF{XU&L-vtF^Dr)(a}BV-+1yUHc}Ky+Wl@Fa@TJQqUr zSJ?97N(eiw{b(jCBWoKjCaO+f<8ZI$A1NtD`znDLRsx)cMp=xXtmUx%ny}VG#2eiR zGSw-j@Gi9|reUyxwYl=l@^+AJoc7qWP$IAFs=>I6 zQ(|bWQRvZj+)dH`GZTYQ@|pgdYjKjNdf1Z^?c`3;ArIB79tNYQzY=gG4}9KzXE33l zTXb6??g*D6og?w3cp^*v`lBqgL)-gBj@RQN{(83Z1#!1U2f+zGHyMBT*nS-dgfNp)jyRFn z)++St`#fk|Mo?nA%Pn@9rgd%KjLl4?|7rr>DG*X^MW%m!g?d451-XPJ5! zj>92nr@=3tN^S>UDb6Ik_Th*g@HUbWLwzlcuX;1ORH~HFf$XWGzp}ab=VevxN>OgG zZXmsb&!5?eO(1vJ5Hi`zOo8V?wp3ccH(Gb}=@F6&1--zsSRvu{e{|r&BtO=NmFSpC z=?e2&E{wpZNB5AF_GzJ#N>6;{%b8CZ(}(bX`v34BtbbJjnJ@8SC^z~2A)$tKhRB!t z&m>q|eg0X{C@^Zo*eINH=LowO>?4`$#|(jGKCP{b0%K}mm~#wzkxE2A1x4M^iJR!-vtQiMRrXu;v2Uu5ww(_Jtmc$Wd(uAR3Y^f&3B1 zAijRf7ENgkB8km9APvN~3R#}kWG@J`*o615~y-N+gfNhIn+wrSQk)|$!)uPVgLUNbIVOvRIjp7c@ zEy`>EFP?(WSrIyVzPQXu1rc&&aWiA8_akL5R`LPMlpzje3y5EV@|q2V;YiIXQzpnB z=<+FQh+Qg_3x&zZFw^)j=tAAdS$7@{4r_#@Yynk+HfW8cq|mIGl3^aKHbPrjIIglP zmV2r)MJ?{wD_a+Fa3pYxQ_OC0S%nA5?9OC8ZO;i`UhbCcaOaFE;5YAoNpWqBBi@H- zvR;nxF&|Qgv)wCuDeN|@o2o#5jC?3RQzzfQuU!k#_595b)phyvDvi@_!3S{ryT`2! zm6n)%TUCZUJwazxcwlV3hB$SwECwcPXL%$Wi4$N(5|{pY`PSA++mNNT6=@|yS(16A z1}pXu1%bS}^UvTpIOTRm^hCqiy~yAiIkU#Kq&$@m$6y+?0`A^B`Y>V|MifX4UkGBV z-VC~=SD}n$FTp5x(TkJf=ZprQ6SLiPZ1nco`E)CL#aK(OwsGD0Z75+F9|Qsif(-ap z4J*drq`92i)<*_53_*IshuT$JmfFisA3qamMkgi`Djo=0q=PdRp^0BBDSCMfFKiM7 zDTx|mPN1@g_=Yat1;0KB1AOX6GKjEKR2){SR5Bd5b5-(7S~$~x!FOc$<<~WU(nV=p zuS}-WD$Q6G&saaHER|Dign#^$se~%qj472+#`v++oa=u_zKhNMB5cMJm8KI)0ROF5 zDz_&btA&?isI_nMoB#gr!cjy{ND>;Ynw$Z&nVnpz^NaP}rGY}X?M-picc}Am|6e8? zw4(OolmN8T@1ffFAH(xy*#9#axIvgr$TVZuYDWD|{TrY*C-C3-<>So%UGSqF>1*A6 z{Dw{@ZAbciCd~a#8Gbb5if&b<9CRKubi2MVcvk-5FFH@$Tc0+XNvRh-r;4tu8`qrv z%B%?fuJhaNgZ*KZ(cQu|g;AOJvEIa8#(JlS<;bZBw$Tt)OEy@+_bU6S|FUj}jMojQ z$rNYqJC(Ox>-hEbBk}O*Irq;Xn5m1NidS&z$Z+R&Q~ow1Sw39;VqvXUZ2&+L>eCA2$#JeeX$c`~6^k;J|b=t^t zQKoM#*zJUo@j(VRqIB)n&tySjva``31A`#jKI7xd-Y|80>XO6pCC!q2XBK%}*TQng zURn2v-E6*Kr4%A@eR!DY}GMAFTnH4%`&1;htibN-6$x^A}3=jE0EO@lH(UygOK11 zlM+z@`L6O&3f2{wx!q=lg1DkoM5Nlh?LAoSynXlfC(^9%M#fn`nl~_#sEhP9Y4}lD zS$eMz6pKo@;yuIR?Z+v%eht@C+TwX4Le>@u>Fh`HD05AP0zy~0HOwi#!d1V+G>@UI zAYjck^Qw?7Km=i*nYPYJBoRt1gLU+*Yf~h%%;f}p?qS8QY@MhwwJMj<`}?odtoL;& zS%pqHF>qjf>^3FE#d~>eO6EFKvOLB6Q=ois_aM=y9-z-nK-_F06 zut`C@?Z1J`5IxbGQR}c_tD1VSzjAn^B}nzvrc2gVS30n$7zTl~xkIw!{tCLUjkJ40^}R^4J&G3Yz63JGa;9tm`?c4@AeBO; zK#yd~zo!9c37LE$c0pM_kU>8|(bHMnNIZZsgPnBF?5E6Co^0s<)!g`1^XEW{}zOjzfcnRe5?~XOY>r!M_i4gtghY4W{X+IfsURNM; zCqD7;Uj&aFG}y(YAUnX!ohTJ531=rJ zao~}5UInuI+|Twui}E5vXk&wR(6@&Exa0JH!S9V%7*W8<+1)Sm0gIxf+Myxp;Oc>^ zOKF%=F&_TJAmx^ni_W!kRFi~!n;B4E@JNvKIf^-n>k?PP%FW3EL%{ zjw!T{8Mfvg4|2VI&M~oJz8EKMHsWCG6-<{{Yjo251M3#nIO6xy4x6ooTD0yjUv@aY zR#lXh*vN4`vb8U6L4W&I4wS11=aDSYN*UHsVJYM}G}xXmXP=}rMR&s575S?ZD7beh z9awVibBz^ru1TeJ&(N{g7}Su>)ylo6V;@K_F61%{u|iN-?Ysne0{OA>atviWkAg?C zhlN7Ea9(R@GT(jSJVuF)F|#~jW|`?aYsH2cn zcoG4ghRKM$C0S9tu8>(96PYPlG31=H#+BV#DJ;n3q~lktUx8p za;VWk;aw{n5qPOSs@@L-!z@(SqE3b(ZMia6f@cNI!j$kr)XrP781 zQ0{bNc8g_(-~>1<1g#-imxZ*oIm*Lil$Q%-tfyx#(Mz*@xDaK-`8F3KfXm9^ni1+g zPX1vK%?{6C&2{A@KY8qboJwgtK6}+@BNOlA6jf)_*0B3H;WwiiQ+5<#_~(iu*md)i z8@Tf%J(Bg~fxAU=P@41Q2KcI9=x$b1>#M#*eSe(ke13FPzG49ONp%)~ zyrP+590O^fy@RHJ9Ps#usFG5!fCqiNCivr;6sEj<$lefTvXsp}y{CxJAL=!AC34d)p%zl)w05g5{Xb3gy zotBL}dHTd^7jtt(_q|_bOru=ZOYog?rqTOd!*Ti^vm!nrg%I!Yy{A0EJOGwV=A(_#n zYg!UID|g)d9)GQvZy>x%yIsP18`-~0`X{PuZti@f{BhX)k6v5Iqi)fOXUIPuj6j&H zD#vf##PNZ->T$G-ILFo#GhUV2k)0n55XspUzeeuuLoF+b3hcvG9#7Jr0W@s9&IFP8 z0AJsjy?u@w4(`g2vXDN5c3bCQ{U0bJ3an(bEWg|^wcU|5W0nh zZ=VTznpRKHybN5fIB1W_@i<4cQ)ZXy;urDzaN;*P`>l2a|69tJQ_y#8|qfOPkD6Hm( ze2<2BQbxlQQYEMp-L|+S?ej^*3k|b>A1LsdHkI3DMKR4dvK#5;T;f$262(3j_)o0q z&Yi*Miu&o}*Lz-!>5oEaD&nQ()%&%d&)hp0liL;A>>~JKnEsDgF=c;zHR(>a}j3kK1~s zk{FAQ)jFLwCzg}gLq)S2@7S6K6mlML@@2ABmeOU5OJ@>ZSPBVqxrtulE*8AB&HIz1 z_Vwih?Ne!eNRL?7pp252HPCjY9btNZzyKb8PtK)A)lW@HFv=;Y zmcP~%BD$h33TYqcNh+~fR(|rLC`7QuUq#)`odXC)AbhUS z!`*r>0c7bFe!rQDq{9DW0r3F};r*Pr7br=UeF8rxUH=(hnB>c4StSW^qEx)_8000& zN}AA8)+2-E;6w>Gwu%T0_;OqghN)=!=-Tw%Gn4*y&+!7wkrMgdx~_=&lG#AUwIgUB zB7&bcweci!J0d|QS?*>SMBsj4-o3!$g82s=j4=n`k{gE0oWPcYfB`s|vn&h1Fl*tw z9KsXx08Q9T+XoC0#6_H7e1 z3k3^7PWNU)505{c`pT4^@R$_ai+x`)wFEu0Glo-y=|MV?T_juO?X)YQ0Ty_xdpuk= z(uGC6a1K?HKB`Vk<2UGS$4uR$SM?ps-44wW75?lq80ztPhQs0#!wm}Nb=pL9hIFgWReFJ-AP!6Puc?+XfFn%|bM65J?Ryg2j8gIJJEnltVN*Io*96URLlla^6Ik z_7^tpy52Sq&xw7j`w7*4pjJ}2(A7SiEH!aDr2@3N{OpSkN7}w1NE) zOY>w};i|dvTBM6ple2t>ss7DSwGFljU7_s_gMhzABrF%MH`V;BPH;;qxlcdt3j^7!d z8;aFraH{7RDhE`_FhH4C&UvixJuNulPv}tMU1`$<$B#dKq)NeNS0~CFg47n2s&iy# zNF`4g+8lKxPUmqHc4kfw8%t^W z--R2I#gq}V3P!Rw)qeC_b!o?__RETg=2Oye&_a5y_3_~lrL?LpioH^F=Jp_22ah4= zpQADFNJ$C1fA^P)OqJgirEO^1C^D#ZBKxW1#eaC3z!eMY3E%)<G>3N*14QcgQM{jYDU49bq%BFs=a>pRg-h+s7nq zd%wmk=QU}S$B1oc-hewEvp0GmuO=q^S~Mz29+c@3Sdm38U(WlMudpm&V8F+G402F4 z7bK^VfiaUk;DBT*W$SS7SovfqVQ1HpvoK$R@)Qi$59@{K1ULE>&Yn`+dSw=x)kaN@#qUu#$6q$Nd>1DQmtsWtU zI2jp_3hdCBC5NtZXmlOJAt$g`M{G_|;o+ARMG37Q7`qmC&$3SGPAOG?wTmJ=348`u zt9DvFk`1j`%jRsT%4{<_!l4mnSy;)78CQmeFU_drRMgD0qRdHj2)2n~8q36W z-%6U(LbAUMu6@DIk9T>drA#BF6{I@@Hs_S?gU9elV|kQeD(Hf9d)=t~$azJKoKo1w zZZ7i{j1wHi4ZLq5Ga<^Clf}du6%J8igeMrHy!*JU;K6#itoy7vFQa&1hKjDRRE@zj zKDk6*fs46)>rcN6=&PKtaNHxpSW#t&fP5Qig8e;k?yx(sxQOu#BHT}z)}ad+6e-&W zxZIe-uaU(hWKsOZ=%z~sviJ;De(_CmnJ2J5}-o z@gp(v%YuHw$jtX&nM!1prt9+?d*gY7MBTl@W>(@ z-YNcmF%va|ubetb-hSJ^8x$m~Z}guIQ@N>IRR0{|C=}ihs6|Sv<{%7Lp_Ny&;V0vp zrpPqo$7Z~F-s#_!t9}iR8o>fQPP7$tUlgm1%r53jR2FU>HnsUh|0f zzHAbWZ`JC~3;LLl;Ma<*F1CrNY?u|*x<=;-nmn%ylM;0W^DEcp2iF1wH6{*5_WYA)%-WTE4vy{^#f7D%>r_IVc zl`tNMpO2BI?Ng3=Vr1>Z#Sec3XbTd*b=>(uC6U!QB*}o#smFgtFQfw*OrKhe(9S ztHb`3n0C)qZ=btA75=i`WOnMiyVD%G^V_spz+_shBZvB45m z+ppB7fU0CtaqSxDmeHtz{qKSw35^Y#zMD|37&F@v;}+oXYjWXMdThjPC9rDm8r*a>r@VG^mA2G8Y8Cj_+6m_K8YZi* zL_}mYfP$i^aAi!>a>vltzYz7%;%ij(+)fv)CsTs^;RC%eVznLEZOo2};%-by`SvR%6Eg5j z?V_r!Cl92h_c9H+Vm}z@zGunFiTQ$zzZKXPvU7mfAGPp8>s~vpKQb|x`njn0Wk>M+ zlHQp(BuWC4mQT)8wEqJhZy2#L+$U9Ip)ZajvB|FnXV8#RS9T$=9;_?;Jqar8)s04* z&&o5PQl6LR=i5V|9Is{0UnL4{U#+!%&0ofi>G!Pa!ok>X_5*mF{FMZB@5N@z%`v9? z7D1@HmEQjQKtqjKK$)%&oV)t^MHL{E#Jv)tYJQlXdg)6F95?BL8d$wJM2NhE^TR#6 z5^lL7tqc=zfZ}H1Gco2ZTSd5KOFte-+;WcsB4S^#$kjql2_{k-jdFqz@az%YOyQd5 z%LK{s9ve!G#g~xYd(=x^^f}-#o1bZ+LC2_bZrkV z6vzJ;>_=Q4f93`Xf;0u5DFe7Sr=eBr%6ay1g%)9_fOj%Q31U*7p>31(fc1hgYXlJX zs;{mnxUYsQJcilHYn^mv zh;aqpxNiGgq{5|$-ZZHZ{)m*Sxc@8NxFDhg7wcY)VSRFx`uOV0-Z2x?Xt_n9uD}1; zE*^P>HU3l+a;NSb*&;nP|>q zlBT+t{*64WVt<@RCXH-9H(50P$F6H;wJOe;LjL?}=w?x7@R9m^rBGT77rhBii;-vN z72jF@nLD+&uS@#Ko)q%LpGcGoz9P$sY+MO6wx^Pp`S1@ zJk!0Bc@k4vMAOe)4ig_*Os^>?t{nfoGI#o1h8NZCzyZ7e(Kw~G8dJCV=4**sGnSVZ z@&l<3yFnl*JY-b%wJ#o1gvm|gbjb>@>c1X$`%^uu(kmtSb`Sbgbp=0AwRnQG6LjC1 z4M)`H85IZCb}lyT(m4J;{K);(8cC!v=K&ZKc&C zeKpY!{mT`rrTMn_xkw?e+ zWC)L{YM-(T2`H`&W^gH{3>TG(#8;laHSVbuF=~CIdH!5Ggiz$>7Vl`|ic&TkxW?D# zwTgE-6Q+^suz`G~s>o8WG@so=Vp%b`c53s^u1nA{QbOw_Mj_mQtD*nt@YPA)C~x0@ zXIQO>x|kl@U2H+O^NWR24tf2l$%wj>P_Mlc`~TK!8!wAV_ibyWS2b)f`2XARaz!)N zk3*>q^N*8^@`=|5d$R#6>W4{-RcvWs1oD}wmG0+4YDo zSi6@H(3wYBIf^`qZx-v8KM45~8s$e$ojm$E0&kuuLj-q!F`8gd(bfGc+>L!9xvBPG zn3X!AKV5vQjHaL_Sy*ghG;piktjsI#W`f+6xfnKAK_;AvGf}}#P*7D#|1sVIc;);8 z*k@AYf&VSU)k3vX0`zfJEKh>4Xu7H2&8wGeeI!1l?#qioUHnv-%k7xnAZ74I*E)T~ zFWfCQzVyMEe4U+#WOU<}W!I(N>t;9XI(j|3L!F>Tz+Nvct8vgUlUe~S{^ zyBOz4ABhQE*4%fQpSqOS?CUEr(}!QO%n?p`cHRvtzPBVcQ;iZYJ!aw0O=scvD%f=3 zL-x3sUhyKI_wQqqgrxJ}{7O@++XXiyD+c|=uSfaNxV==7JVfBN^0a$UvJgwUb|Vo)uGqg zV9UT~|KU-ChBupDgU*;bK-q_1M<ECK*5EH z%D@?Ih`X9X;M0}pWGLS(e^p8|Ma131mihsXaVh%Cd7KUxk5XQ)tJ_{rExs+;utu4i zCiKojs&lhjMr#xPs%}gtTygp`am0SqKIN8mhru;AoTR>t?!Lk_zr|CTPN$r=5DP3L zMbV*!Yt&ljKd!Jf4Y5Rp=%}5n+?2taJ8!1eaN|Fk?i^XZ{g|K6QcLtVZ+AM>f(}r;6_RZSpxn|EDzSgDZRCYC_ z%VCwd4QaQ3hTidnOD&+XhQfs?Wd+sZGOx_mB90hTQ8E*?pzE^wMc)3ij6(ULh`jB9M*DI7!s24prA+8V2~ z+Du+;(v$PgY(a>xJVOj=n7cctVodjQ&A}vm^`8;PhbZ+3s5H;dGnZHYknhx}RFj3h z-k}GYUkCMO?%XneleH)DPU+vQNf`?X=z6kHDr!N-{GKc$4%rzbwr$%;~MvpYehbpbw8^|6RtvEfUu2 znMU6g0dZVePTP%pV-1Oo?OwTMQHpZMdcNn5$*V<=xnSeXliHMTQ*lRe&qX{fC%X3Z zD!&FKIppqOU*#cNM1OsVv{fsv(ldOz>$o=})!7@>wda48AUgO?rK2b~SW-`0B_jAI znas3ArZ1m)y5|AHbnWVpTQxR7``Vdg<$R!^yXPybk6Y+?H5lheflaYnpv))x>@DqU zbVlcXZk*v@=kfX`^Ig@k@WZ%>-KyLWMF;aet}r5FilSXmd{-f`>W{f4pc!?L2*11< zZ}>eZNpG*xwMf1!YuDV9@;N7V^V^uUWx$lJlTTXXu?XNPsK8w}?hXjbi;b>qSIY+aGP(ZM(T;w)z2Y-T#`5`+bIA+1wf>ssQt6KFBgj3?LB-!X+aNo5 z(?IJTI-a)iFT?Red1l2)1*GB!&#Tvv-+?))W?ZwtuPN}lKk`TZ=wlU^*5Z?vsc8hA z8@t)R`{Pnd*5I!IFMj--8 z*2LYuD5d&%&Tf#k&{6pE|IS?$cPH-syF6~xxH(~O<(f~>b2X8B%@Et=xN4k>3jNukNC?4Pcx9a++3yQ`8yq%7!- z$M?jU?*@&_cy{~q$srmm{Fo8f5IUDJLc|`lf{ZltT3NN7s#tjHc5N=tg z`fD=$=0OrSEMK#<-SA^%AuLL#LikIL1$(Ym4}xio%A9f4qPU9S+~Y~RSO@RR)h-hC zJdaZ;KV>n~#eMh2P#GNLRF*mF0g8QU`@f~#uP9Aqsqoz^nGL@%GgXxLbTa}#V_U=9 zQP_Wi!Y?D$oETsL7hPzI9C#Sp3CC3Xy&bWw6Mt{_J|#M=kW{8F@w`?MB(uKH9ygyf zbx>j0`tEky$Un6at6T5y{L@bt#D$7M2pdvMn3>g4xi=ML>RPcqW#m|DIDP%wd~csc z9@fus-NP11I*k8jy8HZvKUB%of@oG$?HQ=%4yhhy+3 zH9`*L^EMxlZj$hBlseKT)3-KFy{*lrMnxm&HJ&2EtSg)V_VL}`C|ax&VVmR>yjzBFP`<7JPoQC5jZjM7%AwYI5eJBA^p4b>kBy-aiVmymeNz_^0H{lshFJ zN?ynmC2#KS&j6R`h_*1ZirdzkZH5%lPV#r?C!H^~Cw`~{f%yH7m5368Xnwl3vEjg4 zwEA`(-LB15Eg_|tJ2%;hoQXt^?YO*p_nTVl`F>xLeFVN56H&JMkpDMCM6RKD=2at! z5AZPeB#qXYAz}PiAmI_&o z)LZ}L#?2hpul=)cCjSc1>9eS(c<&>AjU;)=?yaQC_5I#h>Q?aWZjbCLp6>4!&!Rznsd4yEaPEq-Jsh@mnudFIX`c~n97?Nye-J}2EA%v- zx18^`VC?5LC(DK8SQP2~;;sO?x2}H8tpP9W?G4}__QXZWJ+D)op=#7L4?;XJ6Y=6S zOjP#l{yQr1ueInKgKBzcAHNtm!iTuAGE}uweNt;B-}aNV%Pb_)Lai%n$u*96i3ckbPh-mct>)$MIML^UPMik|dx3KiTx zx=8_((3Kz4_e@^QSXm2{VD&s0dkB(!%-`16egq69o1{@=^R8i91QrZD(Zt|+g?8uc z{OZEm@D&#$nJ`1?J_Us3g0GZuLQ-m)ByK2^n_R27%s=TdRs0*=!)iaTLDB$C0Xq6By8F z4PE^ie$h&VWnP!4Bs}|ek9qC3AGubg(~Byk4t%ifkgocH*xqu9AyqI|79Zpu?Yy-kl?zflF!CGkcV|7$#4V+-!14`wG$<^ZMFqh-bz^*q?{v^M>;+-CxI`=|BW+=f772oqj>Hh0OWqqk4io@*lf zB&)6vurc}7&*kgnXBUHvza?y?o><8#Hlk>Uf*cuG=hLhT@{fO%ZraGm;g5Fd<5P4TECewFgDww1}2Fh97O3sF!kb# z)}nruI?IcbXS1*~LoSEAtotWorLhU@5w~)3;Fz(M4&=~@c3`QC*zHxw?*5U-maxiR zL-ze}T4Z2nK0Cuz=qQ2X+2-f@Fs~YQcx|$}zWqd)sKDOuU8*4!Up;i^ien%l(-z*e z=ABzYCQav{W%WYxYiYZ0G&kudXBwfB`9nUG~U31RueB;#E%@eojv#i$l58dbxrNb{*6|A;H%1T9`2Br{D=*iQUrlh+}Y) zqyeMeNO>P|8zU>pi>uM5FR;rj=;5WE?%XuelEx%U=0%02P$M;;i{=wwQ?|xJIu`!R zgu777sA2lz0@^QB=^hjP0gT2F_4%-9KzwX0D$G`vM&5w91cL55G{tCFO>D;|adqnO zqPnM7bLb_E*u>Doxsd$AGdCpU?3R<3r}`V085(`h!J(x2H8v?+Z08|5bU67+<@)%Z zh25v&GPJ`Z2iX&4j!)AX8>xp!-cz&6%)`O5i~W021Kc*|gIj{9x`1vA2m9v-F^BUn zLM)%gvi?xW-rhjp3atT&i5Oat!m8Y~0b2h%r|TKm^KI{&p>3-r>9yX5*1}i*vW?W> zZj2#fkFiFvW-Pdb);WPjng4O)1TyNM<4w6IRzJp?TcH7UmCet{xQb7hov3MT*94s} zS@a=plKgA*yj4f-^QydBJJg*w)9!%ePrG{eLuAYUxb)MCUdKLw3!!+QSNE%o1O4Si z4*xYZjRd;|8oq;cDu(E4_k;byo|8uaTuuiRdDv$x_2{IPrT^^y!k|diyU1~oFK3*F z8+CYc=V=|Rei&9wX%DTg4ey{*jm{2cJlhh6)|Ze?@oyf;#LM()iYiY2^yjtvu=a1p z!-S!?O0A_sbP+gISVsIqk-c$&VDYMEjJq`AJyY~9ar%&T;>vWgWNpW%6b_H|ew>sn zTN4D_V84Hq{Yu7hwQW}JAUNDOfGke{x8^fdl$yCR4Jx zSZ=sDrrhP{l5U(|Ouexn;b&f2(7++yask?Ej1Fb*@;B@P^ePd@8e#TEM`ara3Ity} z@i%_-V{Sh>=9Yc;n`A#aFAb_Blp##B6_34B*v1$tl@=E@lIP@6^nLgw>dNF5MX|Q$ zMbW&nJ?1GoS-@OA*svHsHPr~S*oWb%CTiHL9N)<7}9X8-Op z_p^iw^04&DGN9yP9)@zF63K4E4FpwvWi*4 z=oR1<`DG*=@2c8w105m@28K5ae{Ls`&9KjqO3mHGKs7nX{S=n2 z^HfIT`0M0w`Vr4{*>KZ}PUXziB&(IA2l*e|OXP^Xi0RsBYZ)&>xTfvHb*^==|R~Aa~NrUQ3U^bC=Pqx}Tt<%;e{PqaC*1q+2`2HhJ zd0E7rVDGT0$Yb(bvb`TZ|4GH`JA4Jv zYqaraF=d+!@w%CB$d&0s!hnd`eHe#?jZ+L4rn^p(Sck|fql+?~oNiv?mlq9}t+Q|P z%@u-%3J0>zy~?L0)PGxtWZ`5g7#8{G)knsCg_u0qpRYyLBciFFf_8jM3)Un#0Cg|$ z?MRup9I=9f9ai*D5}g|gmBUOEq!O3I zq-Z52%!W_8Gcu%#$PX|@_Skosf>72+xle9;H#H8bn^_9)%g*Iy>u1WxD%c$^%a&&!6_XcD{4n!gQ8y`*d15DNI=JQ}Za-=md=(1DW@}uF=!V5t z1==TPS;${D1^#^}Q6i;;B#6B)2T!bQZ_WmnM<*lol-Kr}7NC*X?8y|$%rr0d`J`JQ z7>$|6`I=XE{OqtTIQcv*C|a>;5>(PV5zn8%>)(2yag}nK+w*J1CFws_Z;EwF9YL4X zgc35I_c%j3z~|M0kOx)bN!DBQ9{ZBaYjfAHa(kJlrCjDmxb<`!QJ~jwK7FuJrD8Qu zA*0D^!owBA;@zdT-9q%&^p&!+>N$6VY<0sK+GP$cM2t#68)ID0S3zGOg5CyMLv&?O+k z_6WvMu|deIhOvM+By9_h5~9{bo+)@DQr9;Em5-e}Bcvw|6Lo&&?}OaKF@~#4ds#>E zUZQFV_{)ZUgWL&^LB6-~z1LNv43D4?7! z@?6$!vR79{S4ZjPk{BW0Og}omzq37;$-^APC6Yox)Bm41@^1DR_EbrydU^E_wyzdV zu>r-RPM@e<&U$G~>+r1bLTf{6gZ}DadD)&5b3OacmT3R!-PsZHcM@bM`Ie0a z*fHLDY5TxwX8B>YgHuI)gXgl*{%Gxe*Q=^uoTX#=To|Ca;xlTxa)B~K^WWx*$(OB| zv=)fBU(j~%t@-3*fk?#NIfebi@@RVzev@zd0`JC9 zrfG5co=lcn@lU&>Dk|0;FHV`SV#ujjc!6Dsq;f@aQQD@x!}mOoL=K4DfAq|JiEwY{ z?Um^%JDpoKsMI5{Z_%EKuP*tu9VxSnPDHbT4^;z*D+kl|N$a4y+NXH}lAp()n)Lr7 z1uTb)zl+$@c-HKXTgj|$$wmANEBe*|)bfs3Du+3b57fBW}96eO@p z*NCce3v{y2&|a=I7j={UD%?A8u{KZ49h-1&A=y?oZ5_bMtXHlXx=$rewmY!v$j5+D?S0=G+ISX?PH zqbwfN?Y%kLb+VJKS|(ME7^b@7x_?)MPfMyq4Rv0mB|_X^t0otfmUC*AX8iA5*af_O zf-Kq4rg^r`qdiqPJjlnge%?d=R^0A@t|gQYB}f~_0#`2J1CCbB_szapa}gBao?M}m zqla&hC^1GY%>BNAo12e6GC}(+wD!m75+6<>M}js1s_9z0Di}3U)3{saJ2{I_lMWd9 z>EQWP31aT1wqg@yw%Ok{Zi46SDIhUFg|SbP3{wLp)vW4y&UfkQ9DPKllDYQWk5g;IABsB?S@dBkOFX^N?1L#NV+ZfUzR3U7qsC6T7 z>%cqh3`b7=; z@1^r2HY2FL(OsSLLEra$7T|R?^O#p$*!c+i6S*yu6Pr61JR9EQ&!m%c9>|OIxU#2- z|3u60`w$0VAN)vXR*a)q>77eNUr78nr>LWAeKW5lb{O8tS=OtK&l#>-WCDzx-10z; zx&Q&-tbUH`##mV7mhwIcBf*`sGb$c*af5ITXlNf)@$&xFbn!t>6y8|IY^Lpf&V!#) zJFM&FhxPNu3oPK83U$21NxE#~0$*yZ+T`QAOnD}-F(~Dlg-jSK>*@JoFdnKc+;v)T z*(KD@N=}|)+QW0LEI}NK5onxe&Ay3szIxF_?&;;6{~F(h0yVyN`7S z@}!u({>K6v^%>yhp>#4`QRq@Na+$*kWn)BV@(t0%NXOLi9MvtMZeQMPmqB*UKqNlL zDZVgV>UnzpwZl+p zjZq)dBZ-8zn6PhA?QIlN@%DS%+fVi;)VH5{+*|os^+f?MI^MI-($*Lrv3&ZBA4`&^fnic z3?^F-WHj&U7ZI{WbK~VXPwJ$8Bdi>R1+>VMD}{jN;p^tZS5P*f*;T5YNBED1Wq{!_B!HImzBy1Y&VnJuy3#y>CgekR zPYsWAx&Cn4rQ#r+hpNryHz4kA{Igr6%=z|6*8a z4AG_9Jtv?28OV2~Hpw)u{HuRo;Obs9eM4GM`Qsq}HUBz6<;;QGdK1YtO9!ShkeL$K0OL?uP*-(t{M$>{B4ESe3FkG@v#z3zX4PTI6 z;)&Y8qf6Q-gV`BNFJa5h4fpd_^Fxk>%yfAiCZR1ut zpt`@6`E$_5TIo_?<76)xzaAMbS$uuVE0vKlf`o)W;~n>W$*}gHsb~Y>=2(oL;^^jn zHY378#RaicxgDz~Hrf3bl@c0q*SW5W&-zAhOQCrIrW93(5q*$-{C&tS;Tt>W}0}ZC~0UekNoPJpH+t!3v_y zMIR`Z{^n%9l}n`LOX*Jwsv&0evbO+o7&2Pz)Mb4A1?4Mo2(4YqNN)b1j!b5F0@o

tAnb zW#fBpna4u$%2{eeT27E0?z|C4k9x`~HC|2ROqs8nf=tb5Y&xC!po3DsKPE4kYH&vu z2JGC^XFmJ3IO8|eG#}u}2MhP}LAz;~6dr(oKc%DxXKvg4x01&-Gn{TIogJk}x?4Hn zJP)#YJ6nI!!2*`(cJwDKW*^U;e16UKAxGvuRnLII2GE*`7Qjdx_Y9^mEr|JE(Zs*8WSKT2|sUrK2$J${3Tz$V%;0e;XB>R8o zs1EsN<5T;uP#`IR7}$FF?w;Yfx^fdcbkZh5~*=$|1 zQ?eCF6cVKhGf@4c=NPHJRcCS5&XC8i&gSK5(%SnTp1lY?7OB>ws6hvwo{9jFo7Kad zxkD~5Uz$x{DiVGL_iW8aFNE_;(br3*nfqTS*()RJxP79rx-aj(`h|#L9!lO}f7W%CLb*|HOh5zkYG}gSNM-dkEYBl98 z%UGcCTN6~$fmXXz8#R*dVWGn~I`GWi$>wRC?SG5TdS8ZHiV4CKot~Gs_4eMs{ZD-l z_b*0v(*Cak*!sX5z2}7UU2E2?()(g6UnhG~$JgU-vo45OSi)A|XKBxc8)QBPve$^R z?+w<|{xo=4->7nwm3oP(SqqHiq%NNd=1YUa1iz38@j?N)kU&|xkBddM9b0vKQBUDv zkav=A&MxMz6>e{=q*e9BL`<~(ZdD8n69vZYj&vV3{2Z^5-sidV{nE?}P0>$!GfsiM zvNE`iB#&_!KF!kndjKwYrXkTyFjFXJGr(~~*bh1P#t90rPlmfTA)AVAI5k@30aL@3 zM=pl(0$*dJthZaF%`W9ccIRjcWfEmbu^6owiARtJL_&y-g(*VX5af{$(&-DGS@!SZjDvev*cDTze9-c!lykFua}D{+3L!Pzlp9=HapmH3a4RbGp^$e88J}DE z*O$*lIaV?CD*1hB0t_)!0|xZG`l&=1i8N4Y=co-h{f{1+GsvR)x=HyoZx|5n@Cbv^ ztCd@eZf@;alss}_pM|TAM2UyFNmP7qbNTNRAm=qN4X*eoxBgspN9lR*?@pkCw_r~R zpC8K_bjj=meqU~3p&+Y7K@qM>U;*t76ZBTUK1Vi-Gog3F6mc2Kj+7y`=ty2`>spYR zgUPu1EPytvvLT8he*A*`G~4!B?VcsxA|aug!e>UvpcFI`%k2T|?;h}e#(lzXL;i|- z^gb`^Ubkwpq{Q2x1VKKoMdseOL3|>-tCr+gIU$9d$S$Hr4$;hykLdC3t=t-E<;3^B z;L2uTL@5K{Ves(Q=6s2uV8#uq`h~uf z8=5(E)#sN!vleH|3)1~K)71RU&(}UGZ`sKs=w6qJ+?dP+`Pr{UeTD=tBf&0rSAE zU&^XqAZrzjyZr5(DDm;C53o9okM3sImV=C={0D+J9SCnG$#eC1Vgk=P$mR0D94m|| z9qlz#1wJ}OPswx6LCjTL=M;?azWO{l^#DZY)qQ=_S3I0WsPYPT4BCq5Ps$=w7Gb&Oo+%I|F9{)!D&>rMIqiMD(2zjGNRfccnbU}RHz0D~^U|5~(n z3&yirpaZJ}46zJB?$4>^rO7%X1Z5x#m)-W8&L)4&n{SBzme$miPOa;r9rXFI+0E^UYeaSNos?1MY*`wGg(MIU=0G<|S2j^HL$V zj&&T~*BY4h&Fj1=co(gn@vjt4TP>wj&DWotbjIqw_bubF9)0%rNMBUj^=!A$!U+c0|hW+p_zcKQt%N7`7`57>u3@$Ds ze@m9-tODQLJo+n~4}7i@{IJG$hY?-Zv5OhhInvh@xRb_L&~L2mkDwoQ72ol5c*4Az zXXvte>N)Q}Mi8|!Jc&;9ym%oFWwOh1y|tKMolLEZYPN0{foPoE57@b zxLSQ!8I;JmTez0m9Mr1h8TbNKne21KyK;&WwJLJiGN|~tW-T{dedjnZ5R{-d^N`nN zdBrcvqT|QJebE`))^WVhu}&sN{GIZ&Rba1_Dlz#u!M)y!P9E~u3zENi z{nJJnd%;S_&1nebXN3Lthh;kVWpdC=oCoqI=2OTSqumpMp zwqlAF|9ztLwyQ2C!`^JVGN=_k=DX!1L7T%io5yNm>bo(Lz+B+ib+Vf`L2t|2%y}g%I>=$k1 zl{kY~pal-0+rNK9%x1{9O{ChG?o%fV*KIBvq^r>0&V&e~LBEqwfq8^^1#799aAhrD z2;jwhAXpQwNI|HEe$waAx{PZ#qx?5Z)vviPt%R9ct;&5d)52j>IyyNXM*g)@60~)P zAZGZR{BDJ=%IY$4ox?B}>cV*_g~ z?v~^Ni`R_&r|)8GYLm>bqK7>=Q9mCG0oM)>V@K z{<4|&@TCi9##S&?mI_*sPyPy5sK~W~&D^ZEtEen<5j$TWHPG;Zf~15|@g|1{wgX*$$w|OR?^0JgJJYn(em_1LqdDg0sP!r?Q(N;X+iD^iId6t!S*M0R8 z&a6m&J~c_HNSc${cy4-Wjw~G5?edh%3LzpWuE4-{ydE@(1@>>E|{U8A{k+phgn=RI`QnkCoj=iiYIBrC|jj6 zh;!d0?P6)ZF38f4+Ou{;SiYxYJ<#;Jtxr=%mq2ffv7>ZjoA1q(zF2C7ht75F?fH@h z2;W$vVKn$=Zh4E&&1fJKBO{*O$L6KU_$_z=byg}Oj(9N~^R=X#g*qC{3~$WdmPi~N z#%Y`R{eA=QYNCp(0TeVJVD$qoS==}C;Ssbt$-zy%L@)#fQ7`l1vlR>i3}_jLQLb!J z1nvcNYJtXbJpt!-8y8!)FPmoyel(_SsT!gKL8g@L$VWN~U;C%xsw=84z3#iOE$=spIfx|f zIVJY5SG zvf#c4OwNWw&7y*;ABbd!_2m<76l%N~?)@FhHmAMHP zvE{p$v?L~~T(U_@@c>OD(Y%gZdGAjF18SWd;aWUhnpGdWas?&2%?W?74d01ss{=T*XO zru<|};tk|?7_1n6eK)$5=TmIn^3)sWPkD$9M)RERcBE58wW+Lp z3N}#8-MJ|BX+gZKj6PhG#N843G0>K29R=sJhAQf4x6H^t)3f@B_%X(lCqTuB39D6e zJ;K-*O7p~ncVbAS%W`uH_xr5Sr&cb}he|zy5eG}U{eWzr5<`w^u=LL$T+PGUc>3vr z#2=m!y7vFhE$ABL(S4{vzt(A;AY4ax(gxe{FXhO>b%pI;xGN~xnWzRJ8vAPfjn&DF zX~b&i2xT7?z23_xpu*y3T$-Z-q7be8hZ~yJC;ajjQK1K<$WZp&i{>kX{)`?rLd%P`%KWhe&VaAC*z8AI{Wrhhul@i~37TAC~}`ktA0ZcY+J-S71@ zPvsLKr4SZ5!z)4R|tD&fCRi;y!oAxcJ*nk8!k^aOymWA_4{x&8(17n zs2QY`#)mIEGSoh$CM^OebDFnJazOmBN>v}ocIA7T+}h+@-5$j*+VH4OS*EU|sjCFE zNm$MMMgd#>+;cwU)%#sVmzf5oC7-fubL9KfXS_}8yMGg5l69R!%2h{lb29xJ_tj)6 zS9!rpDL47j>lgi7&Ij?_W1Td0;Cp-mBE+zGP6kyih8VSb_7{)a8uv=(l}YzV#O7>0 zexriyvOFJCey5Q!*5C(Y%`!vWMrLi^U{hCPM%>I{geNZ+*|GKTZ(E!jX3l^alZ<+z z#skV{X+8mt8y&WngMu7&{X(f5l zj8R>-s4FBNNT0%;&9Iw&S4(`5`xA;yDr(sP$`bf3SsQVYVUG8cEnY|NT)4b?kysu_FaDif8N>l+Ldpa7K9DeGvl#x;hWHYqhX5^xw;s-7*gBfMy>xn?;3C zHu~TzKU+UeDBNUdTTHe~d5PqtaUs>#DDmR8d5!a_Mz|29D~ke{x2NdUzFMIj*(Zwt z1(6Uf=Ps3OYyY@8*4DQ#*XiBot~vF;bA^@t-M<%g7NuT4(~RtH>CoHFL6To(%*5dO$8;>bS4Hb7dZg1C2}pDXzKna*L92uS7uD#YyDx6-_R z>}>#~`&9I!SW)xV_sE3a-YVF#$1|p8g-Vm`FH+mS?vkn7Oh%~<{$4`y@+9y&pDy2nR zZ@u_6_IVYPKqNoa0-sN9bpJ*3EmB|s%tq|_#YMrTxWYhNDXTlj*JZYp`fmMRXbt*= zqk)`&Z)}t&Zm-sU+|}vv%`cW(G7+zCb1fcqhEeKO4)#@pmnEKxyRra>*5?krt1D5F(yhCC@Eu0^)+nTK<`w7ys zdiL(a%m)C8Nh@C}d^NYnQpRb%+1JAS*Y*ak^i<6xm-<>AE}~pWN44{#c>0X3xk!at z4RK%7o+k=76cV+#CCy!>0O-@ZTt$!#UZs4J!cO&>jWyWDR`zS4VL=mf@%ZHc_W_}; zish!-@_08ZflgVnW8oImUMgxjF&|%KeZU^~yUZ*`d*?Q~D*s7upDy3ACe>W9dlch% zSF#p06@QKRSHaXls`7sJ=ChE^8U z)ZVE8k6VrF>m2F;vR%oum9eqjwhM%{{@5lEB`90n?j1@y*XpHV7pOo}F|S4imTuU! zy7M4FL%eWuk|glIbF_~mg%0-tI#S0Zr ziynt`_)w(9BIk-?F5Q`oaWrXoT;URzF~?|v(CeaFcr}PQBdb@3xu+0lakVTFC@j6rbMLB}&Sf=c9i-o*Vh4ZcAU>|E zY*y-TgUH^AMWe5!kLbFX|B4LXfi%hn&HM$2YlHR zUMkKACh04*^N+`qC)xedkdBw2fQZ?tnksP98pc z&-Asy8}6=Xn5W(J9c*gp0~y30_A~44bu9+aAycVsi@{~0Px5!wLdW3^#>T}WRCU<{IOJp;wHs&Mo0n8qx!bQEL+Bsh)7Nt;{)P?bP>P)v{Iquw zRp4U%bCyl{3??D}P*{6w-7`Z9G^uI4`%Jl)6B@Xrs9^J~njC3uN zU|{tpXH}zh%91i>Yms($POx)0pY?X*Xp~;|1A6=jY{P(0uYXO9vFh!hTvpM4B=3;4 zNu5sjTiV~m6Q=XQo_m@RhrhC?NXqJKg7!h{2_J&rxY^gCcLvq>0>5P}5B`PdwV&CT zHb3g=whk`Bi&Cm*GMl{OquVv^V=3S4Jg?-e%s4OY1!7j#NJU~;wgqhJ5wnHOFIX*% zu4>mb;rFUfIv5E?83^$j%-K9M_7(45k}A(Tzw${d^025lENyjSc_HYJN5!~{wuQ&a zqvp1f(d-QZSu|1h`bW573C?jpVd%t@MLp_hIUye|OpyFAjt}~NR?Pm03cWB{WmP0smAy%&IpIwd@8-JXP7ZRf zTJ7Z1`AJcC6i`ddR-s;`>6DnvNmA5%|5!L$dkMv_d-;b*^9B)=gR8U)z|8)dq=z64ki4Sv}HBNdq%Uo{M<*Nd}Rc= zF2S;EKcLV{I@cM45=bS9IcJ~SmkNWg2%r%|*A&EWc}Rbpd{d)3r`S~}*UN;2L2(Nl zz)Jx0-rHtAEb14!3i6!y3hwpXz2IWdEGdB~Gxe%!bK@j!w~Wdo-&G-Gh*o@~U4P~n z1?vt+H`ce2Y6TA(JJ>*PBb5Xduj;VkTtaSskAe9*TxGRVAAQ$TzKMlF1SRm)g6Bfv zu>P)v>w-ZDXE|!YJLl`(nvyW9Ts~sd1$zxanw=5k0_~zd!;qILbI&hql$k4whS1Jn zH&*0{HZOPzti@etVqqqBrzMr9Sn+UOyx>m}mP^U!b2#5s-mW4Q19NmM7%*$W4e;lX zAye(DK#00h7g-c%7$IQ&nDRQc+loopOLd-is^0G!P~HEAfTo-LKEr3dX)C6cSECM zF|Mwvd_<$hLeOjGrboBh*~5+f#?)`Am36&Rjxyim7;}+W?qln7g*FEO9H8;rh|+Wm zKE?;2IHn7uQ<`tGWgljzH=m2veS_AD6lJa8urlQSFk!j3O&~C0yNjPDY~TLasWP~Y z(!`(XW`b;Np5eCM5^x@&FT+LTrumJ%C^ATLeC?k(xTz z5BUiO9sftsd55#%etlTgUah?;v5CF+O03vw?-@mvsv1RYLPG4lN0lm(Dpgf9h!_dg zCfya<(6nDvl^VY{?_c>d*OlvfPR{e3&$;jYTD2{Yh|+#)#XEtYCJdtx`%{gBl#9Ea zA~SoF;=Q6^RW~~`WM`(h&~1llq0}3yjXD?CkCVg4-WD{1=79#kpya5kj{$on>{{6LSAX z0X9ywmg`f|kM8X0y^$p^w|>1N^Z2|;F$!DZqq%(Xe&{RAGeayApzdc3ke5|em-V9nj_>hJBPGRd^U!#{-Dv43 z?YZhG)?t12!s3Y%yUZO+*&_T_wxf@M)@ljVIs~$j!#WA8473_sy>LE+tlxxR&DVPK z&trc+uL63oSUawHTPp;kuvrPt=p3v5l32qr*+Ba>)sP6y=qFLUtxFh>2IE2J>)XZ^ zZjCp8#IBkK#v-z!_kztEZplgqH^Hl))*5S;boJo;Gz-khPO`^tZa8JiMQf8 zF#^!0nqr~kwtE3p4Z$l?>*F1BMO6IBMmk*SeK`P$gmcJOf*I_cDu=u zP|ZQ(WTXMZ`L+`z71#K-L$~#areI-nMRk>4WkG|C1{fF+r|UAdBr6}hYl^pHxPk-@ zbt%V6%dwrR^=R5ES#=QH(?ZYC9=!)1KQJ2ZKVj)?iNu~cLr+URq8b#QLmWUS;#K@Y z9N&cwz7(s!W2=1h|CG9q>${(Xm+bo zJ(LojCd_?{5*j+vE6N44MO!$KtgRJh<#@QXf%h1B5*0MAcHsmDIzptqO+Qvp_#^mo zCm5?*!~Zf~A=Xl9xn-i-C)iE+Ya1YUF0FuR78__3=hcnX)FG}>#Ve*!1K>i4Hm>x6 zZBAy*akcA#iB&SVjuMWs>62opx>#E7$2_d!^>c-XU#sypfikIXrN8mm% z%~~caPF9g1{UX^k^d5jBFl#yL8^KpE1YHogVqq)F$X7zZz(#eIBS7ixW3_QLu{%{I zd0>Td?K~7P*Gj6(HKvng7Swk08QYQ+U3}~)#>sw8L}@0mT@xu*t>IRk#OJ92M1Sna z?~4z?5HU)*FnmI>lm$kK?*6e4%|r}$1JMRd}uG zCa0K0%wD4ntw~NHpJD+^X^)k77e0t1S1O?p^>N|%PR_&S@KfQTRoqB>wr@wKxUd;F z?@bL2N8@oN#0yB!V{oj#M-0E za1)uM71PsA`+d*UseOjYHcvGJmTNX+`v)_VT=hAifS zKO8No-^d4dQtuUf^-MUhSaGV1YKM7=Hy^yJYSjBD5GD5b*hJ1W^u)N8i+5H{NpHS( z^C5)SrVvN&TSg}z-1e%ebExjuKZ81GpFMT%On*h@0gAcLvQXY~9G&VUB>s;MCm1Cv z*3bxfTOzBiY@HbDaaXn`-$AK&gm?8{aySmxZ#%C|yN!iSVE&fk#S_Ny4X(f!5diYYsO2DuW?zvm!-TmgmdN! z)fL?(;)qbsf<7qvC)=bzqdEc*TN~^RJQL!Rtm6tEr~AlJZ`3_*tX6i5?Wi9+c7h2mj{RdNWYhkpy_>LfDGBTvTZuF3Kt-lM!$GK58@r7 z-uF>?ZR{OB6x-s9?yD+1C#L;DQNX>LC zJU6nfVmdxzl+LmQHLZG$)h)Q@)1vymLAh6ZztjD)kWcdwpXLH;ljxIkhV2N^71I#` z0Fi<|-USDw*iJGZ93S56$7_7w;aa`ZyzM}+)+*Jb>qWj_P>(s@Se#n^F zC?!V{rxK9$6$W=KRI1p*tHc}k(YQMYVFg)80xncs9nSGr=hnBH>yc*KeDV_l13yY* z|2~%hD<)Jr`m|Q#a_&S`VRnTz)c8I!pZ{nYbTd9{GOBK=GEma^+?yKdR!!2n?Q!iW z;Vn=hy6IDp!F$iNCV!22(J1&TR@G|PXv5%BVi%Q?CMo4``RNEYa_PWvqHHdKZdABNBqTked{Ea#w{BbTh;w5S> z&9m(GxzX&`Z-;*u&X8w>qxjyVltDc?Wlh*4R2t%@7jG5KyMt4?RWVvgp!Ee2WgfKX zsP>55O8g%!=eMcaeW}o_%M}NEA#hq!Uhwgk>DAjSZ&Dqwle+R{6|UzV&)uWKrMzEf z*(8Uf=2luYQOR$X?y>%lE`IlF?S-x;ucL$5+Ek?7{&v0KjDtqLPFb9wrF z`x-b%6fg=Tfwxw?$SRb)VXYJ}uEJrUt+*m{MtqOHWJT7cJk?OWtjX-|!4 zKSMH{3?EH%hRoEMKGXhQ&^qle^hRbrJg9%zS>SfYdwo)E9?T!cUiWT9j1T2Jcg^-^ zo;!TRee0A)#cquM@=-#x6nG|#`r13RCc-7y&Rv;FezO@FjUiHSfBZD;q;)1#FYKps z-tI9dBt*6tw>Aq496`yu(IwKU0*D+~x-{%qRqYRpgZ`shp|jiyvrf*~zW>pcfB*m+ z00g_qV`Y3@6Aeo?e36WCaE*kNU>ka;zO3r_aW4?6ixRp!6kRg6?G^jm?R)&g=M>$w z_e`GDztJK0W#vWUJ$e{D4;91%d^>u=@C;<-HC%8L;Va zP{$gOWzK0K$DH9(4n*bbT}RxyT&$$0*j8gDvcR+8_=?sWM!v$i^+eMC30ge!epsf#*`QO} zk-z2ZUfYq{x6JL+c)ndJ$MQnM>H{r5zz(S4MZ=4r6P5$Dg^v4^<$t8TtFKim3td_% zAgXm#Dx!9^!EV6|kWU4UMUCt<8WZLz=;;tmYtW&4Wt?S6!!b8J9+jhMt$KI`q&MOM zod6!Xnw7hFma+^dggoAg>g;~VYRLBTFDsp=Z-m2#+Kv|dRUSb_BYJlW8t!;_4ags{ zVtF<=eG@BQZTrw8=dV2J&W**#_d5lub7fK3PxtxQs(BB*#yvP0!pkvc!^p+AWBJ{v z=lSiGIu}s~S`zUi%t!(7GiEnfoVYVK*cfi2#j`|;k)62W?jVPbJzIZ>%4CfQ^wSs^ zTpk<0p?-Qf3E_{(?39Bz@kUoYuZ2WHS}WqJ$}0>3z*vX)EtR;T4?sA1)A8peZmiBu zLVn}en+kRTzIWR5SBe{r&+6Ur)C}g(pB8K_cQPtZ4Gc#Qq0Rb6#(y7~2|Y6ks>DLK z(^}+fMI}Z0#QmM;rAJm0G;yc-lRoeN6pbegMgF|5Ra{1Ucxc7`82e!R+eB}F>L5Ve zKxbrq+e!bsaEq(QI?T5wKk=5aYv5u0w}dFn0?k`S3!FGfPLr#ZABRInI)p`g#XB3z zOzsljoQz9tc2>A#aT6L89rS+OiMoy0J`NkjuP3>yROx|DRZd)kVBTBn|JWPnuwpTQ z>jFFCu?ATp2c8Xot^YW2OpVU{((<`J=kT5aYqs6;`5)Z}-+rw$F7PIKPqN=}AdZ>R zQ~M9XT$sotBm(=<}!-btJnRLHiN1D1K0xIkMMwPrBK%w>N_8C4II;woAMXxRU` zK3~mgN^HcDUM~X~k`^9sNmV5v4HX1lfE6m|Erv)fuEYW4Ij56!B9NggJltG&jmuY1 zjxXua{lnQp^T~Y4_PYOGzO|T}E+S5{*yUe(z$fyKO`7Bg9UPF~pkE3Pf(ra;%l`Zl zQiQg1h19lNDnZ>PWk=Qi2gh8yu|^0S932FTO%&i?(tWnP6Q_6&YZXNHElCmKS&_f@UJ?(ixhMif}_ zlqWP_n!zfr>y8JRpRgjFBL&Nwp;0m$?Fe6GoMlr{mxwHo<3PInvGnu0eH-Jt4e8f; zpBJKQU;wGULIEX}P^EG>@zr9it6UW1MFFE*sW?`V|?<2f!|> zwPUMS#gfCMQYA`9ke!-I5gCWR%Aox&j_bonI6bmcOeJJni5~6D>v7BOFvtJy9#4?8 zhO2X@{~lV&`@UvHq-Ud2;TXZrTePG2bI!dx2b>}v+E>U!ic$m1KyM>Mq2tUr-Ppn& zoB4JLXh-6frD>DwUA&W{_`Me`9WAB8dnpA5p+x+$@UgP!RhMkBWm?x}pY zs#K{L3E!7{t`UpVtG z&nnnWKYAoFA~`TCDSDJS&lGq2WF-L(8cqnh(QbyAuQo;PU2!_B|2F>}ygIAG&xF3K zf6H54p({vUOmnWm#$#w)(xUeGzX}n3$J2E2RU2=Ers#bw+??wN(Tpr+Nu^R*g_QTs zPXCy>Y|4}xGK}=Q${JRSC(7XBv8e(EII#-!PBqr0N_3L_`@yY)#4v1usph`@^@F6b z=eFO-Xma%YsO@Iuj$4{>trnMFpwAldtov`h&I%2gw#i{$UVMZ(|474*B2O^*gP5)lJKyDuc3EBs4af>G8mhu{r~(ECr`-Ta>S%5g5--7#Q0fkH&Ad*N^0ZN|;b?0Y=qc*x zLcTCtLeI+!8%OV+I(s=+Nf5FvuLIj<{iqIeDlnCka++5z^r)r;1Y$IAw+}kx>FD1Y zt5fJ<7s4!DCh-o{nqRBk3szs}G)wU03Fd}RsAA;!hg?kO}w^mRt-U{o#n=f&YH1GIO-l*J zJ`@PI>Z75$YT)2l?b%Ua5)YLRoX9CqEJ4GM@wT`@ifhpJiX*NDLG6ke`QK!R{Ob%m z<3#w@0kzYO3r{rCF5#@sa0fiyA>LS?Mv;~|`J*UEcsOk_TpLtSSGQmWc%hU7p&K&v8I@_@cESK0^%y&s7!1FMj>B-q6940WmxA>OAJU=xjd z$bL9n<|Yg-eCyC8;A*<@^TyzBuoxRaHS9g%T~*TU@kb!_X)0}B+R%pC*gtZON#J}g zD$_lfY;*6P35}1$jkh9q;~xMyo?Qk25wvYDVLvbkh{${7GEmiV6Qc@u#eC;w67;x} zvaDYjySaS)Qz+G#Uz;}P;1UZeku{MhlyxWIw#a=a*T|L6!a|nb?anFEX0u{1+$$4u z)l5CxZCCbw>ilxIeW5Qq8o4^Ar%GDE!VNNeUW9j{j+Nt10TYzgb>URjM1!X+$?d;z z^Y%1JYmI)$JIHTm3EQyq|0t9+tQmuZ z{%6KJCL>$pW+xG}fXV(tSX^@26^9k_oTJ6FAbEPz+jehvt3?wMM?$Av%N(o&KDOLU zF?a}ecHOe7Z1!+V4&K6mcc5ScY+~>Bg_9?gW>LsazWd-$g^j7^`8%DEk{0Bu<3-d* zpSNG8(-CKenh!0=n;*UXixU$z_Yigp_W;R;%$3fxjQ|BDz}nG@WgM;KX@@=LHZ@8T z6Hj*RQW-Vnn#%PMaXnIhccc@V>2jTyO$A@#obQ{U`F)oA07Tv3+PF zHE~n|qEXeTBvh3YpiOwU)gW0G4|!Wg#N}tsb?vaK?ImuBb@O?k0&DX6xF^{h9(WDk zZlyY_#cqGn{ETvrw zv`j_?E=We2?i?0@;VJRur-ctI+tyfZtjnx;B=cOvoeRT;EtK15qBp4fc}05kq_=;0)Dk2|6CwNLw(+zr)3?MMyIu`1E&Ff6bZ;e==)eD>9uClh-(Bu4q^YVXfaa?!kq{li1x;7V;W zJ&1TMCD(M}lPSlM#${|W%Y67==vnDFN>2$QyHEko zA~dLOQP(+c*okvyuG)1~YjvONO&4TB#tqggOU~U*289)7qiPR@a6FZE?k7eD2iUOg zc2oP<{Zt=Wl_NeGn_pO;avr(RJ4uO{dH+XD?fM_46Sfpldy(o_UV_pqy~g#% z&z}WxM2!S4-+UXEa?zY~)!p8;@;!;^*Q&g3%F4Eyw@Xu%hwHnqco3Q@J03t3 zyZca~<-uX?VGueb#s9X?Q--svJ|Uv$$fmwEaU*eu@j>Iyf}4`xY695Edt~jV50B17 z0dwA;7kS+O0gREpmSKe-`pARGVUP~qfw_j#8Y-zq{kHBa4$D-tLhUzrfdhKxCKS4Q z;A+Yl{M#|1?M8mInGqW3GWxtep%9M|FX*%iU|bkT=qY$|_PUs^xN&n>=Gx%jw{AEeJ~hjf=K(3Lo!* zUq6(+hVZW-*0*a~^(f{9=3FBLF#a^hx)de37^+AHmzKm(1-w9?ax|GH7u8Of|3}xx zVa*f#dD;XH=H&grqmE~%Iaof;42k5@K6`kAgWG9C0}#RM5c1fbmM7yS&Vm?nAPhYG zHHaLQZbFtcf;)!VO@PwHqC6LJu0nAUGk6NikFa1TUy~MrIQ*L__tt8UdV(LAW4C8+ z=E(hItS{J&&-YYO;EtqJgbw8K7kRwtHwiUsg0&RP$7I&L?LMom!jYkhhYK<5vNd>F zh=_rBq;aWq$o!zdSr^d;!v;a)brYvr3w~_Q7x}~VuoDL933}G6cDcVC&+<5#>Z9*h zvT8~B3U%?+xT4}7n>7@n1Yx&kjq`U22M?4{% z92RW=e2A@Ok{6ckQiWm_w+9_*@kDL00#$LM|_Iug)%N4##_ zM@eN}5&HeWEXJ{FVdt{;A6mzhIGQ*DuK%zMcU{=FIf_y?pEYSZL-roZK8!3a34OhPv_s1 z&>4b#f(vbGDA8Ziv(&ylWha{)vPDihjK`eXoe9?RRQc+xbI5Nrsl@#4jMSs5naU!P z1q>BFb`CnDM(}B#Di!nJYIkqqVjRW(N9VYWevY1%NPDwZBYcw!ITNTbv)Crbzj~8=#;CV^9D~E&kMKKV?OAUpT z4_Qs1e1M`q+5;Y4u+Sbp=&PxNYN@q3a{g$^*D$9{w;jgS#VTVjs|TN!-Y4!NBE8-X zNmDrBpFz{a*U7TB>&%aaTP&q#MnB%Kv=YmnDz}KI^5ycQ>^_@QdQKVR8p<5XG-+06 zurJ=(*MOgy%1&^y?bleYl@7tc1K4u#l)8i4Ch)l*R_nvuqD%mN84ZT)pd(+t`rxN+ z&lDdCvG_N$`*B4d(Q8=qcv(r0Rx%k0UpZhbk-JHrsSr20rmkeG(ugALZKj9H{G{Wh znXelaU~Rsvf0Df{Y{OM;nKaJXYePDa3_aL&ChBVgT3 z*0#m=pQtOy_+EZWjD8!b1vFupU^GFRWaq#&DET0YTBzX2V5NDDb%|y;CHtBsSVZMo zxq=Kp+(f`vkwJlWLuGhEq^l2^9lC1k0~q0Q8l1<}8yMCe7-|i^I?&~~(Um6l0Vgkz zC+!1jj>7reZS#rHVx(ESWhIu zd0X-TQe8*)ka*s7Mv#gMpC;r!Xf!Bs-atQvk{##WEim z3Ui|dCVd=+b9_VQ&6yd8@IsU%ZdbJvR$Y6=GluL+IyN@eQRcA=?R#C-mvWq{o6O}X zGJo1rg^CWPN0l5)9AihP6%PZhWvdawi`TQlyITVsh=Q2h1FuHM=G74_q#(^V= zCbm)%EfESUr2 zgw+b)FA2q#S2ZGM|1kR~aJW(iJ*MQZ5efut(RcWxx-)_cH{D&w;PZ=BQSLhXL;i-$ z$k~z_r0%+YpzY|oPD0SP8;HM``GOy*9o-tU3-L2dG0^*m!6%^WF$Q;<&sqL_irU?q zcM7O8xw4jW5(pXbyih}>y?(5cl`YY@Tq|nm^>0#rJU$8{)}kB~)$|8Ki|qVcxt9R9 z)H-)R)|gk`KB)PnhfZt#5$}k|lrzngdH%J}?Wfl2KWE{vSyiy@Xyt?Rg(rif=|Y<1 z8pg{1W_xi}W}A7+hh-(b$$GgQZUwg5&-=lUTQy$)Fi%NS1oD+%q80z7)VPcv4+u9h z)Cj-$X&6bZ3#%1BLww%@aJjeWTx8DstxakeoBHH*9Jrh3y$FAnmaVVfWBR&ansaiFsQ@&Rb33C3)F52#~0~ ziEZ(F0%)zo^mPBab$jzHwX0&IxoLF{GFu~&IJ`+Y9Q&^iDSwe;^~U55!AvCWufz(1 zV&~{5tdglRMvjNRxw$abi!jtk6zi3ba-B}8*CYpxD0JHrzYT0VCUXd#A*qh;!qi_S zXahUEE4>k0GqFScKR?BFN`5jr1cX%wwhz9$^hyCO3kt+its9a8)NYGwY?-kElkKIc zFKc4hGE)rHlR9(SW}plfYOK zD$9LSdw%iSSY1asx*#-b*a;}esb2q6T+I0o3S}h7n%PxVBHvjv>Ty4|#{FlJp>?b% z1fHADCM+HJvXXU@z1B*`*wvZhN0B>Zc##WoQ^QsqGNS%7hida?@YQir;Xj6<+LFjX z^B}Cs^sXlEK%ma6lRjsH4Va!C0?LLhUriG!-AfbaZE%Qk(o0~e^6fa!hpc(9LYt-4 zwsdW^c`h*v5(koIKsh<)T6=klHJ5mMcvN4G2IRo{2=Uu&O*vI)DVjb>G<18*->`hh z0cdkMoH37`#j9J8CkLj(86w+(w}Zl6ptUioQr-$^zWW;Lm3TCt_e%i3Ui;(F9%VMc z;F?9g(DWKC)wR?IRDMnR6v$^KgsSJ))Dr5lr%^pGQ!jgn2BY1i%x}C{C<&)cZWR($ z3oPggUMhe!l|hsijP4SEbk|%jL>D+DEXbS1q^BKRm?0kTjKEg_nqNE1XU_C|#K+Nu zimVdPUB)x+uXA=hoL8y`Omgf8&qLCB(8{59+1$fJN{vvNLuGF2$5#tg)i2=nsVfiF zY~-{OAcArq>kXw;l$=Ow7;IuaVSd3CLHa(ty?-~Xdm%2XoIp_A|JkhSth%|=bh3-+FKw0WFCGrcosx;e$oc0T(2=xNaYy4d<+{zQ!8FGPvR z{I1dtsoMV!OpM(7%e}Z|0O}@6B(vMKDU=Aw{H!+)Y95If2zut+&f|g0duW$WMgNaZ zCM{FNYtwu?XoP=eWlF?it07S)cH(VkZ;p>lE!&bg;VuVIwnX zW_>ERdzDPAO)RxAo`?^LPe$HOBcHe(ZvOkFqi-h>#AU`Yh}=nh0?l5_9myHQ#`@OU7_SJ_Pciwyh&z#lmAt03i13v)c^e~4tntA?Em32>KQv+M zcXb2bTMMOiMDZpp74Xlr14cj{cANh8f+FAhOL@~-3oaDqb;d&)qIb6t#C<7)XF8UX0|^~< zlf$%CkpvIy(bR_mr92)vM@o8roN7atsz!MzGPw?xM0hTfsfwGG^b28OseNn!M+v7( z*BppasYLW}RVlFUqM79AAurw9X3XWh6?)?Yz>7+=*4x(x;1p5C2~OT$b|!4BL`FAx z`B)V1`wppm)kE4qK?sx2$KqfC7Ui+?Wm3_7#8fUV#CWvM*&Lptl<%F?uVA__}ESyX~0gUyr|v~%Yf=|b?Af&p9AZIinhRi zfZ(bktiWPFDcR*K@a`GB=y3uv$AzXHbm}e%E!)OO6S>L(i zwvC$n?0hsm9#TcT5}~dr$7vS)Bm5!D8|E=PDh*ilh{mT>W~J+(CWR{VKcjJO!pQ8L zWP*|Whq+B0EM~-p{7?C1=JYQHE6@W%oa-d_go5D5(|k`=$NLHs)P7k~0KjE>#xcG5 zra;uAraPpkWo81Stkwn45DDZ_0!pBci}u1b3Jq!YUm^ zc-I;phT|>Uy}C~LxQLK{7!E4|9Uo6PiuHLqO5D~vL0_iOYA?2$e30%wQ|0Vq!cvuN z+rA>AXxZ%g^&kXt^A+q^sHVB2g2}yWMJnSmFpHiX7{Fg)4CO*hhY!nV}r^25J}&mE%WFFQ!PrRgM+IqG!0sMpX+gP-HGOYhe`kTWRgtvE=f^AG-ZIaN zb)md$m>EW<(OKawm!Gx=bg8Hb?w3&8e2_wfyY)^wwmXg1khJ^6g^}E4F4=f6wD8MS7^VAP2=V& zKYV4d#Y53nl^VV8BDN@euWYdG0ZL;6%{ z1DW$by5@YLiO&&!j7Q#-8?sbk&26>&G8e8n<=5<{LZ@Ssu1h~6_@x7X(sSof(b)k7 zqkzlOptmpW7~bMb{pd}szRsb|7cK*h5pJr6Y(?dzY#!DnPLm53 z3aIA7G}-(0$!wR?Rk7&|Xc7MQ;(`XAy6ARawvf^56^GaJui24;N3TdB_e3rk;(jP}=)uFzD-r2@0X_=T5b;XlXt77QsNz)=kO4za zN@l2YBVzeTDm*?Og>A^-&!npqJ`t)mrkCoQ#K%*^6?NzHMWg^1)emDyNp1`3mM~dpNz1dY-I7yYB{!&@b-G-%px#Jz>lp z8k;BHlL{}jnUNlKx-BDRaZCw?1x=?7<{5k_{iVxH)<$2p@?Ny`x2Sj=a(KVWvcOI2 ziMbtT1-}fRrwRj4lACo+p=~>F43q$~0|1f=EIkCW72X;7L(p$l{u2mv8Cl#Pks(l0 z4AxzsV+gmbGh>d7ow|HaajsA%F(DdnRq0AG@tMB(g_(a0n53cRT#wFOXR7i6=Vh&{Tx zA^bauLegK;+%8K_ji&Y(#9}6>N&GU*WmFB|J$^%(WuXXXtETt9yahn?o#Qi>6+yMc zMCcYye>QfjPx~hq!iH8Z@SmcXQX-;#HKIyegi}7^dC!?twR|;ipTzV15Z62=^;R_M ze?D+7fBin)$RFyd?dxJEexfli#-rW!-KY`eESk6W(-h_jPpmTI&~(~0c_z1_`z}KM zcu!&Ob@v{V-EwcGOjBPvDl;Y04JZ7V@$GO~ed~o8VJ90*lw$g*)w+N)rU?Y^y)dWg z&JHGUwQ*Exnwf-V9%@Bl1DmiPW5<7ccSl@vYs{gGd+S51q>lAY*y6#=8nMM$LJOOq zed~B!t-Yzz#>ozY(T&`)`4eSwBkFeZ{H^?^SY#g);7db=UP4!FnT=W5&yjmxyDCVI z{>T;MpVto!J>N!}8ue|6oK;_q;@hyDUMg|A;2_E->K*ivqm0BAt8)Jt4jW~^V0%-j z@N76GX2kxTaEB&DELrl!;@n!LuoAy@W9}g0M#eM$QcE5??x6P4^pG}tPb4{48H7v>h0 zm&oaK)m^MEF8@pHQ=Q4><`sA`w`JKM*0H}w!(RySErGK$@)*#DY>Gz?T`s^Qbu9M+ z6Se1%9eP6nDM|ndsBgc4S#&*k_~Jgh(qt}75eSDJ^Owkh#3^b#YaLirT&{(Tb142k z@LH|4!ITj*Xtqpgd>EnSnHvQa({v;%&XfMgGNbm)36U^iwiEEq4*yJbn4 z-ST#!p?i|)(>T@fLUx7RcEp8bHf}gfl#k&mrG2dfSo2IlO~9E~GY(d9%#10co%oF6 zQGS3?5m3Zmm;FAIJNG7g5V(-eAEH?fljYcFY=00#C)l=a>rv+>PXC$MXOc&puom9U!-YSK^<}!!dsOb>+H+BgJo#l zc`~a#A2V7+Y#WN?$)TInX$oazImKH+g>^IJo_4^C%}T zt~oGDTsB&4+qGKwF~Ntjp2O@_f_1UiG^p$D($T7?RhL|q^quB;p~!-@=z3JbQ1GmQ z9qrL}8MB2Gdmgw6{ie1$U**1TuK!w=^*Uu=v+p;`{_2Ah+Pb*D4r4ohb5=AhpzNlS z4yfD6q_lp*4eTs@{Y}9l4{nFFKYbb$Igm0Oj#0y!(G=n%rfR)g-k<+NzWqm^(ac-g z)Zp;mz&qi&e@ZIWe{vE})pT8kZVNl<}vc-x8}B7jZ+S??iLBPQffU~S3kJz5xC^tn@EiZh&_$2|4JL6 zY4{Q-WY})f&{i6F%$d493v}%id;d-X?fB}Wu(A-bRB>|n@MZRU3M=cv#PGqIR(QF2 zDJeOs$!oeNG(2ZL3{<>7SWZP>2Ytqx(mT|{ zrxrXaN@aTRFs$9_Wd=vaB^d(`H_)TXj<0x29?;uqC^~=7K~*{I8jQAuAcZe&3_p=3 z@en8vwQ`MbFRpm$Oq^i6)Hcv7J%o% zKNQ|%4`?V>_vVlfUhrjOJgxHkn8PM4FhSL(_v7?_&E%Xg#P26us=z_Gw6|NjCoX8w z*lYDKYU1xu^VMS1mh9y=qYo}+3-1=+ATCNjz*}51M&7WRV`?u_#q{t6 zyjV=)Z+rN%Dpq@OgJt6q)B#c7Dt)TsOj$K;UFZ|c)pXh@Dc_Mww4#wZ+%3R*qmuch zd0eIL?WbKvWml4u^(*bQZ)?~PNyVmRHe4BEl@;-k2#0eg8|j;*bs8qf-hj44yzmQC zv1n0TIu$3X;m~>I!dLri5@KuO+7`SsR%TgW@@J%iZBk;&X_Il2UB|6yQuA}+3X4^x z=%(w7-6X&+w|gHA^S^KU8nFtW(*w8ox0WO&e7}gYLM|6TOf{(A?d^u&3P1V!s$0?I zp-ynvdFhxOvfId}zJ^P)vn3{E{tQV#4ABS=%~uX=Y=TP8xeXG}#hMxyURGRD?V$vq zHC`83O8A}-Dqs8W-5v^C=4%h?4@)&@kuX{qd~3saa1z+wJZRl;%cIhY44*JeIqsH! zPobu@$Q;aSOIK-ubOM6LbK{?)ll0g9SDmprfmyXY2W2yZD;bC>kjA@!Aj0cI)4NCa zdcO-Q;2`gpu^jdO?RIt_?}-`nI7lbnv9ZG89v?dS8vG6mIAt&@W;Wgre4`j0o5ic0 zur*4t)Os<9DAc`eFX6W~Wlf9Djy^+wn)fzJ4 zbs?v5(B{DRe_(OBG$G6bY4x)*gSq!M@IQ|o6K>jTr+zrQ%h_uFr_|otS$X+YjXZP% za;RS~S^8x|D@fe%>V^~C+vGvy-H0T3%Dkf6kjASpL|zno3&zQ_z9H;eV-k?Oj;d={ zoV+3sRclGvI3C0}3zj+Cv~y`WM1*N8AfA`pD8Dk~K=&go^oLj5R}J=9{pgVrIn%ZT zZAAuEwSHD@rDC~~o5lQbL!!hFF&01COr*~&2Imah?aRcPB~!tV#5JX6XA5j=fZZV1P=Yz^6+HRKR%&iZjf+-QcF~I4Zwg$2Vpf`tXA}r3-f~+nc+^+j5WvPd@iC{~(?J1g zuY`^GG#$aiD$LqZ=qfZ7n#Eu(QtF^0UK{3$7Ku2$kLHPNw}cFNg{XD9JYu|Bp`;9Y z{KcNTersAa=$~S8BEj0%!qrw5eM19+K3@!;q`%K!y#*Zd?^A!^y$HyXgprDnTsPOb)Fw(U zr9P{Wgz)|C_wW0U{rNgO=kkd#Rju`8tokVeJ0!~s4F=qzG9`bXFobj&|A|xiQt7quc}I*YA$F=NdfKf{)#6Rzd-rU=Ph#%E1s)j>nRO#ze(T zL-_%-_x6&Qqr=TNg`DM&j=hcHV{0-Eot%2=hfxjqu2Ea^P;R26=?v0EsubEv`BF5V zeE-q1z^=g@UoKj_Dty#AXyr#b4#x*M(rZ|6OK-pN^t(~E^3JGWEq$Dv|3og#p>H+b zo*q zX@%qHx?DN3>V`Yuw_lUqD7-uJm4VXybBoxv;9+49V}5_!*h%|*|HCcbn?J&IVhO+x zF`DTWU8+1uCd<{6yx)!_>XSHC1^%N?R)KHZP^W}G+Pd6UJsaMHkX6)t#qS<|Q%kv`y1o)KxI}`OMx}!*!ZW?xN_nZqpwE1r*Yal z^?M->H5Jdm{n0mh6@_^y9IFH?NzF@^%f`8c7H7k|c2-v?L`A!mpC&ywC9uE$^xW^a zISM9B{qA&^kGtYRE_jXD*lYGEI~Jw?+JF{TImxuPIk#h;rH74gl=eOk#hBnO7({h% z5Nc4>U-nt_WqSZ0)AxTr#p8Ta-}bYSz!ERm6p?blf~X6!?xTzhywgdUSq{ zPR78r{(JjrMqGiLlp}-Zq6qHz-XSMLTEg;4smDSH^A0J>?FtgxI(yOhdJ!7e7aTd5 zQeg(%o~P<|_;&kEOcin<=^^3aY*|!98m~pr090<@UAsjnuRTPRjU9qt@3s}l_Jpej z;Z*i-0Say?9fej|42nnwAN zY-RN20s{!HpZr%Pl{+yDt7>V%{M^hchU_a)l@bsfX!fpKMZ@gV8+5*c`%QOWPY?~K zZikTDw;W)%R%Z51Pw@huW3=}SFCDTbGGzoxYe=_Ko!J8HR&*{%09%!P0pjom3vu>0 z;ecU$%l7aHlQW|IzO!XY1Z))1vD*?FWGg>l6pgSY1nH6B6kX?P%D8ry%FQmL{&9yN z*~LL>vfzS=e+nI~QH|Benrqj3f$g8mro3Pc_JE1EITm~>+g`9Hj*@QCfL93xRL*}T zAi=GlH}YYIFs4jvOw`du(qL4nacUk(FebZ~;>#Cp%-nEr6IN(3%HcRc&+sFU3K5@D zV9`&kN8`EE2LtDYh|zWwcMYiJU*-0og}GJ4RJSLD@BjeJeC)+}^#Ol+9-N;NB?@tnXA7Qu25l8P1T`Nv7W6t5&yaBcMofQ)1)Vs$>w zl$fVdxko;AHb`9B2_JsqE3*6f7#s~447Co5px$~yd8U_?weuf7Dj*UnY>q99GtgHb zbY8kS< zRgpH<)^_FK0^l|p{xrDEky=_8RA#Xy7*yd~G+NvO;@uDz_*|3sAKpFJTTt;`3L`%l z9k6M&DlXP9_VLE;c@`gHgcVe@^Lo~ji23d(i&Kp9{acV)a{6uRr(K8@zAlUsKprqI z)8JI1Q!s$^pbxb6W$f=2dS(6nkbLQU^ZP!np;$QwG3_8L$Eie);h$XA3yR;=h#zZk z;r>Hk6Js3tYz_=oA!IirD}|++$08>We20a5j<4wtw93 zt1FUQ{{tTFx@p(a5A-N>+J9f-t-$q_;{J9S(EHK%W&EH26VHXBisVm{Z>j}lZ1LrN z=h)Bvg8{|McKg62b#Hs~O_B-Y;j)ciBY%@UZ*+a=cOIpT8Rx9Lg!JVIGZGf)0?!(& zJr~66cOgId+FTKjA`e3@BaBA3Hp%9CEv~YLU3GiF7UOX6=*HXKP52Me1p2f6&mDc! zoVNWqWuI+3k))f1;SKVc)p)5Q`Rax83MjA0`9 zV$5Ji=&$c3vZwpV*>AU6i&aE#L{OiJ-Ib|sZ5dM$gv>bhvhmar9m1=yrzHbEHTTsjs=SZsy5SWD;2-EXpN-J;EBZA(2NX#c4UE#MLWRj*R(#G>e z)FX4MUq_#rBj3Gku}nG_bF67&c)M6!jR;QR?}Q;U`>&w7c@G7}(MWxbx7ljdIYMir zQ2B}oD~^5{9Ss9B`5`-4Z4gI@X8@SF@-Z~kx9DBUU%Bm&RseIUEyN)$PDu!pH_3AC z6IHWNx>?HF{dV@YexG1GY>_Lgji={yD6yzAF_p>~H@ZDncKH6CKY%&|Q{Cd_Qc<_B z7u*7!Vs)+*KcsN4LTj=qF-+TxMd`j$R=0+7P#y!$dN%s~63;uY4+13<bwJbK}$C`q8ePQ&JOIvsk4SCKzPqt15;CT z_ipj0r&;sQMgHZf5so-ig{Wj@)No`sO9wnlwbFI@aZ!?}0WKJ=vA#0lPZy!9Kc0}h z=S4--i5kf8v>ILSxif^GO;xa9wsX#>5jZ&Sjj1v_+{-y%Xpa)XSMYPW`t zwnjf-W1yQ@Y% zee$mLfz+6!dSfeZ%3dgn=?eg8%)xs&7RfUT-O1ppKwL( zc*|cphEL9rfTO)(8cwo}WsWX2v9E5ac1DyueKj=+vb{-nxw9XCa(83n{hr}_39T3@ z?4}pjfZ0B^2_h4kAYu4TY~?4@$TJ1mO@c~2yxFoaNk8_1nR9t%Vep2{AHsM`w9vEp z+Q_Hu;+vDqAOGyL*QNFvn&dJdev~7l^uZyM0mm>U(FC}yuH&)sj7EK2&ky-X+-WW5 zFCN&cW_wdX1w{(Y@#Zq^xDEIGO6c=^@zAy`D8?d1>ay$*5#eg<}%zAjrP z8@=yXPq~$AnD@-xP#ExwxFrbLM-FzCRHkA4G`f;>@7aHSF_7b-(5&mdV~>3vI>F&9 zyrC$1#B0^}X1J~5nX>C2c_oAuL)IHw!L03KNT+?7=c(HDP9~A>a5Y7G-dkJnG z_?IXzUZ~W`s$|PQEpd)m`HCVIsH;`CAuj*#+}xoe#J~gna-T=K5b(cqc_%^aWqlXT z4h+-=PKTY3Wp_RM=3c%*1T;Pu=RhZ7l&Q|TS6ym#RC>X|w*l+(w5_dCZ-p2Q@O7JP z7lmRP7yf~GoI)Yn@At4Hrj*57IE7+ryL2o7se8SC?%YgV`#qz9nJh~fPx0THsLBqX zj2<`3+9030oeKf4m}>ph74f3c><>GHF65qeGVEVoapL^e+B9XrzW<(x$0@_taE#4ISj%wk)%BkAWG))4rToYFXlJ zNN*=HhKb)Oj#X4~;`%p^EUL)}BCS@Phs{2%mb(ZWP#j##rksBDn^3nHqz21*c}%q< zkB2i^TFapbrO;_8kfDZOhw#pa7!?2i4@sHc9d5enRqlYtZYS3h)Wn3q#&&pUaq zT_?_kMDc?JWhv##wD)P3LgPv_q{z`@R*Dh!Z-}N5G8KLHe;>Vm$oopnvwxO)#k5QC zD{e6jU;C~`J$eZJ(q+^?QZA0}h&rCi&@^`Rvm+GrQjqcSFxlg16y+3?QPo8+s zcLBRGgNkn1HiX&Zh*pwmXdG9tr(V>}4p&_14sL5B(H z4gTXPe!OQ2nmBrJk(EZv}xv zchs)TXQbnNW2aiBw7>G& z=YQwA#T8b$hKnAB)?pmMh(AUgd4Eg*gi6S?$|+41Yt!lO*Be$aTP&vczjH5++~8k6 zZvr>z4_h}L>GO>*Y2wQJ3{1kw+F|a>jE5Ps{YxC3PWIoAb6G>)tO(2spBjJX9l}C= zC6?|JjC@yXq;PFwuS9MN#Bv-~X!L<(lA9Y}y@H~J77!RudFY>x_3|9R`YGiFi>UkL zB(kvLJyBA+S1rC=uOwM^KJ>2S%J+N0E{;8M2|kMU-#mVJoLOBAdb5d9{@s^sRr@v6 ze_87vVSL6-_oV9M$tl|(x^f|2*#F3Z4Mv~Y(*792>)3pDIFK4!q!lR%U0 z{XQ_3DC8Hxp@RpCUfT~{-3$edCxGp#Ph$WNC>KS7PcQL9vmSIA^og_M$u_)sbMYbZ zuC9VVI{(SrN4s4uObb*vV0GgQ8RRMX$mkikmv4t^K2aGh&YX&LBf^kv($#+goTQz@ zD$5MQ3>>ExqNxHL4L$TLGN`6SyzZ2o@#X&FO{J_jjEh+;+}=~pnDcU4lY;K%&Aj@5 zG(JQ1k))aq*o$tBFEy;ghPH`QKdN0uZK-`D1c>^sgF0~F68=z`DylLdH6V!i++P5 zliomPk^w{fW|CTHN~c(OG@2)X7M^n!|BM^D?JuS!;RqUNi(7Bj@Vl z{&&u@`o9=kwsDwpV>Ly(vHQv4D5B8P`A}K$eZV$5OZLW&NOqE`ytM#_ndqOYqjn6tgrfT&NMYC%j^$H|(LPxHWwQ{l9ZL(w{M7-Kk@_Ng`RWf0uR? zB(PN;N+*tKw;Jv9DCNAG@JYbCOp~-oK``GmzpUXhXy8p^t&`k?fFo6zw_A~Kuydof ztWrkLN*YRK(I*(M@KG@#byA4A1)!q!(wXWC3HYN-N|xec(=X}#M7}4c0kVtBv^;oF zSGBWL(P%(7{mHvjM3Tg5S;?FH95;77mXt94;&x>(Y3z}WjZeI898}+_q@b6ubyQ)q zmS0Q}%WaN271n!=aQ>sWHY>W6)L^Iu&>%~mq2S;5Uf=uQx$CO3b?go;EgEs%GLkOS zYX!leScqz7)Qd2v{s*T6bVMJ6g$Ehqo6MiQv%S|}A9rQ@WI%!dT=lwCa0gnG+^nAL zaSxzBU3X?x=3^UgQhsXp?di%FPr%)k-#(wLPayGNhO{Z@=GqQ~mBG!JpL?xsj%#5>}ZiLIUXNW}4 z-ctMDImEZ)#ezrk1xZ)rD<{JqF2-_sh#8kMpl&4kpU;QQvJA??9rOb$Q@{)NyJ>eD z2sVB*K27NBEbv?IeTvQta|RXP=%d*1(%NbL{gzGgw*o)$M<)s|CoCJ4esHB)Zq?LD zn+uqzS9fl_8*7AbR(a{yshgN?BefCnIn}O-r9yi;s(~&Y36(h&NzAs3n9*XQgrQK0 zt?NEWBldc$3d_@Jn>mb?)DnA<PGhsP|p$ge+S)efV%3u9A|hlYqYs6 zk51+>SfCX0FKaZ=Qj2LWoSMU(H&J}8Iz43d(S`cUQQIsaVYmp$BbwdyJfA|R{a{eb z8eW(uvFN6yy%ce>!&5a_)<9+d;x8B#jK;!gtOsuNz9W%LgzN#sA1%*?H{Fx$?sN#RdeR6e#%x|a4h%p^0kJX0ZaxTGs@1=p9C}5b`fBxJ8`mN?h_<-*mWCb?1P=`6hkJYT^uL=NfwEv z+zgaL=PcS+mmq37Nx09%#Si-W~B-?=`N4hyw13JD-Xh2+f1fZ<#ZtV^wxW6>ju;=k6$E0AqrG4Y|Q%#RK)TU?OLJ#iG-vJ?C9VCT-p@6PEPNviby;>~Uq z`@4&`3sU+~zn|B8Ii|Tn^**rnLJ>r|QP-~haIwm0l%D|Fmp4|CCZpP=^%Y^Hb1b`7 z?>uY~rr;H7^Pyg44u>_96BlZvn0|{?`pdnVN2g5N%%qV7$`XR2OBy$ z0`Wc0QLN*S7~h-n-$~>8?F!-IrWSuB>8}onA^y$r`Uo1B@acD?-Hw9l9${)PPyqyN z`&ZS6#feo(Pi8j=D_Mz%`Ro4>cR^wiFQu?Dq`ku^o0%&~yZT42_{!0$|DDsV9~v6u z4=eoBs>FUP10%9upk}MI7seu5*$q!^>{MSVIek?1_X=;ivgUr{X80e9+&^8Av1&kq z^)lM?y>T;3`!&T_1K}fgBh=c=Z*!H?k4B=VZyrw>y+_)s-0Ga z5yCgV(l#c&ARIHQ$T%=?*h$na8-i_B|KvvD@%_z=O1%(Qn^0T%%UcweiRBidFNZOX zmLJLiPhV-+r2MLhPZU>o%~7K@2p-9(7!n*M7WkB#cqVSAir^nV>45JMb!G&}I9Jdq zS0Y=!UY&eN&<%HVtgrQA-N&hl?4+;m9RKPc1Z0r2N)cXIu}bm&nXQb|^Eh8d&E%i3 zES)7io*InI=M?)GulOmJUT_J*W(M%Nb9c6(zLfY(xiaHnS0Z*p`8!j~4(r2S4q!Hd} zvc*VQ;7U+1wnV1kTXZ&R8`tCFfQ+kxp?Iv>2!h!%T1&~ImO3KB==$;ri|50ey};5u zd{lHlchRIhfIElngp~u?!5ztKxw#;OI$-W55mg4ri3RU^Rf(fvMkSXEVFwPSQV?P< z+ciHj1pWxSolfM!8z?g2Y0r3DR}G7V!*<;nw_qOr#X z{Uzsh`&dQ^HGEV7--2T{Gs^?T?Ov8~GceKf{9j0`aYbQCxXj&$1!Oa_#phjUDUf ztN}6>>>$M8rk5-vk-3|VmGQ#w458R>XVr{DQhVuxL4(&Whgdct5W=iAULw$&otL#j zdaMpE+Y4|ldRiUWy$^T=plampPB;h8*)U2dMf>-SaG?V#cZFqYOeStJW8N2zj84Q$ zitXN0`%-qhVvk~(z8UI?sX+hMBO>rwuS)lf;W1Y3Fp{*b)OW?ZD;L2y#AVu}nngr{ z{DRi73c53kN_Ym)9SzOZHLp_wD}_WFNMk|f=!KihOiFR$V0Onk>K!yDSD0jl_#jBQ zA`(vNH5NP4uwLraFC-LCbkp9EYVUUiN0svd>J%&z5tFnAbh*7zf?ZBoN93YRcN}*H z1LuNuPkr+OI+~%~%~%75PPrg6Qlr|hn92@N#=frYtcsl^Z_@Y0w!~h3R|-=!VvW@$ zYU1|y5A}#qGS22iIUsyuZQ)zxijjf0h1?LDa3 za;_CuxT7**pZ`V21cwtyTf1AB2QvOTtO1!;eNZc1Ahh^D$X?ehHal?af9G7eOiU6y zL?h0${w0m4oYV{3J_ML^-x9s_$({EXOqDqAXNBb3HlH!{ZnA|+@&7IGx7CsILixjjwc)2 zON?O9_9Ui-9_`C^kmcYxKdOX`5h)bDw|VL%QU~8CFu~|s1YN3_kqMF%25ys?>!AHy!nW8072kQ zT8Z+MbG7c@oBUR(HrX3$Jz`MnS?hIx7>Zxrbme{8(AR>YyzMqq; z)-+%hAp0LHL!mB8E8Pcff&ir*sE%&%ZZ99R0T5+nlye<>Cq_{=3XpLD=goKZ3j<)^ z>g@EZI&M3MW^b#AS_L?BlbCyMZ1>XqHVD$~*N7h|{-*$>(9>MFnssC2Dhp0$wfEH$Tf#ca7+2!8jnS3I!$anM`e zR1dg6^lHYlG1X0IHpy9V!mjzEKvN9(@-V14?qaVB!yP_37@(Y80IhDLUVl1KYBEu0 zZgZ)rN5ejdhT{vZh}V}dwH^+<&Z`An7Q`8Bqq^{VQww~c>nmkl%AcNR-`1=NmaU(o z3orW7Fn31vpD(E9g4uSJXrIPOC`=iDzGBi>5&g~nF)PC(jy(^QNcMoIvVDE)?9sI% zi_#X6L9>}q1WtC3t)NvL4q`eOGfO-VFcq@}i$AIfd@HlT+c^>){0uotS?pvY;A@}A zRm(}HQc7p@IfbKSVH3-7IwAh@M$cgYjE#B8nM$%i>-XT93P%YY`lk#X?6h`}UfG`0 zBqSK^y(}Bq%hvcp0)+TV{&9VrU%XZj=L~3|4;9&lMbXBW$_Us;-Jq{Kw>_WkCACgg zx%BgvHNd2D?Cj~0Eix~<>QLyiUcG^`W!qVc@iM|JNuI{ggpJ*MryO%({jkNFAK5+K zM6(mDz}W>@5$o*2bn}N!URKIXMeW#07AWS{CWiromivsH{s1=8iZ_6Do6&(2m9>wa zlGZWycV!c;6c)a$9URgU6->aXm@&~pV8u-4BlrDOP$O;HOZ3n{iB!j$jFB;mtkFjX8 zlcj6r$T+=MkDg{HS^n^&cvQrMf7vKL@DvN#XT0NUlqcE$9BF!xrQQTX#YFFpfjxwS z>T*W-aX1UU=fN{5g~F5TQ% zv=c1FCaM)YuO+oqc4zDWg#;P%c!k+A0=_l~fwY3QR9f5hiN@wjBeJb>q5|~y5DN<# z-!xYr_c8w(Pl8xe4*DPr#Rbj?vPWgnZ1E$jMIRf_`vEe?#nX>L&{eFGu+Th(b)EJj zvI&sqh1YVMm)@{Stml|3t!YaEr{JB;6}PM`7&b*-7cclUMo`n@9ma^fAN!j0_r&v6 zT;{EIlDz+4jpEx~Rjn~96ILQ!laB%=d5D@(oKla*#}s1pc*K;Aeh5BnV!(dJ<}LaMlUVngzx-J!|A}zAZ*fSebtl*1J~O zHxA6jr+gu@-?rt41}3XLc;z>Jv1;KoEvhnxZJQVUoA;NHg!wk>9g)CPFBRlL2(d}%=^JIRTPn>XgK3C0E!qnhEyisxv~Ph2euCw- zX*j#`dZ^+*2z(?<%_}7GW(!f-Wazud5%)cF=udp0q4)uR7M93%IHj$cMw#7<@ZMO3)tO6g2g>rJ8P%a zG3j4yO9h#*VWt{1l=KIku)k0n{QV3;6v3!l(V{k;B(~?kwH)-9cGK55eg9k&HqY-4 z^8P}#5Jxk=z$RpHO=663w2|M+M2;+6K0S|QX}sn>YXJbhw6buaIOlLc9V$CB3cZ-D zBLt=ALWn~$I&SdMLc}UoHDAIhYGSV|JS9_Srt0#%{>$2enJR%M-iauiE+1ZaewJEc z3||Z~NPqA0MB@#5^!jQFhoi$_@PG+7k-%=QF;suYwov%@{;*>8#?wvR46QOlk0>7} zFv@g;WdCEQE4I$>YiW_zeq#IX(L$<~pD?EpL)#7&8tr<>E*iBLB(p&BMQn#`HU`8T zTTP$dHT_%Fq#cLJjs4C(o-03ar7{e?F(l)Xi`}^CI)}*O~6+gB)40FOO z=fPlqofYwVh54F~0OT5dKH5O%O}>spA6XWD}FHD8<7N%xKrI3OZy|6TqC_4g`Z36Up_-(RxSg z=M2CcJM5o;J=B{`9nshl?uqBAvsfyB&Xx|3vb6DtW(*5IKk}zGMrmoFC>Yo0nZ24_-k?axaI4 zSiWRDykPBbimD2;?w+staUPgg0Nh5mPHTmd2RQFTWAR`<(nY9#%^eEf_LxtOYOwve zs-%zhkmf|MC228_K`?2WHHSSUYfob?Z}E#sZx}HRXNsu4MhM9K6!~a6avcBBI64Hf zrS=+eiBoiic{3xP6Y8lvvUJW+?((e?7qEDGxpbb6#dWw6&B?k2RA3!~%xA_ujCNt{ z2%sqNh2-;=!;g5}E$IzZpuYvA`nnyX40$Rr@Ya=$^X5bjAN=_NARgr53@DepSn~~T z&r%~IbG3|LbuA)}U&oe>yr)A@e0rahN!Gv=+R~i&zhEIu zcG8>wog@BG$8ie&guWwhw}1h+WI#AFkz(O&-yUUJVCe@8;gw5^@hyT{cSFg&=Ld0F zx4?Z$$(H?y_L{kEB6ml6ftR$3;_x-)?o?+k^~*RIa2|wa1dtldH}LQ0fU+ZSsLVuz zl#Z1#4;tB+vo~krB?zncQigF;2)zC*k8YQBHbXXeigJW-20}6f0hyZAj4EtCrN-)y z=GX1{kA3QU3N)Y+%sEYkRu;TBVe#Qe$GTw0&Rx-2%f^LY1*1Qr5!dOTQ9H&RZ~S(Q*u8Bg(j3gKV4zSa=^&+lq`c zENS=(t?j=5=*Hcy+Fnsn>#x%S%*8<;oy6lW8Ow*3FId@5VQxxNqb3O^KFDqs&qI}| zcBOneFS)T*{j?CPt7PRr9|cuA{YWAA96UZbQnUNBy+KkkcDy39UUgzTctvAU5xM>S zv!7Dfh2v1oY1E8O{j3|8?zbpGC67-oub+MunfRRJ1&v+z$v8ZH`YKJgW+P+qhM`_U zAY-v5gS~^36I(zvR{6{17h_dPRif{V#YssFxEJN?(<`c%3<|nikDU}m%5K-j-t~Gz z42oNc$+ZByb93>Q;h0DFCQ5ubzK?t5my>FRk%GtjLL)d5dy6?+Zd!?N;p8Y!Nb#75i$^~d(cdu`6{`#-%F3TB z-->he*IZ|~lH`4K8U#|NH(RsKnfH{U$A&d3n)*3#FCz8rbTe%abw6(n4bfQ-O+$u9$rv4IzL6qLg?xgh_61qs9?T8jnUMCL0(idb@-JO+}MOqPAt^u(gi^u%}l-;5fHCK zR_yw>lN1mReq)TfzoL|KklirihWO=9J&|4mA%Z|JSco!=^EDf1F;PptAjK>KZwM~k zyp8gh+%+Rr8*Y<&`~}{k&39EUhh_D|sRfk@%pFNZ32VGJFQbB4{(%bYn`6M$B6H&> z=T+CHJuSB_mxPHTp|H|v-~w<9Za-lE+jiXEHG_bUY$hDF_K zM}lfCUz-7-5La^e88%}AByq0H&hZA?d_%#ckwc#Tq-ghcSbGY}IXuSKncK$W9L2hN zyZHhjON)*5@(8T`G1iXZ1@C0ebLWj0i~}2<W9bqeEaQQQ^xIq$>#5Wu*z>em=Mx zx9ljXSb^HZri^uWB*Q!ma?QBguXqvtCf=d?-HJPLAe2juh&q7v1c1_X2A9 z7SL|uTf5D%x3STjMWyhXMj{f?qMYXf?q^(nCzKeX4c2HqTh${F{($=wJ}~z7D&z`s z?rjk^B!pF??qH<17h7afU%kx*PD-jEWVf(3KlC8d9#ML>CGQ_orr_^lVCh&nuo!EXGfHR=4vejC}J~ z%^hf2$E%C-Dv%?;3{pkDxxPo!fplVS@mzMlSeFIV{lYScmk~9w>ym?1ZzBxn4r9VH zOY2z(FT~65b;T$~gcd1QS}xPkpjzAs{y@~Hg3$LI-EBJv>?(@m8`(PPz3fc)Lbtb0?ROqOurgXu0C{+Z zMRXapg4AUH)I)Vcp5iqjojjS-Ey#Y*jB>>&TF`WIVO;AGc>*iaDX*wm9wa#Lf z6gVxcy`WcQJC(2h(Y>5NJCyW7ixVV9J6~MP-*tV|>_5iL3cJI5@~FHkw_J0Y zwES|MRw*P_P=4*Xzz6-O3m*%~#jWEivM1`Mpm_MPmO508kg{!rzP=ecR%ja?r>ucq z|5m?2D6Yi0R4oZ^z<$2iuFK3z&h_Q!UKNx(?vA9rw^CS)3Qm_Sl+aw#_XydtNmh7x zT;&;<>5{Uh88)r7x2!v{(5$a# zOB$`-g`#OHAo-|{twZgmBSm8|&yXcgeY2}{;EP0*?}8|QH|>3H$j6)#8Rs*r?iQ%^ zbloQlLaE-tjqthVr*)swVwj1)`Y&&Vu3AnXZJSElg>Ls-S?y)d7A<*JhCQdga-2cr zJ6XdxpKK8qqLn7sWM`m;B2}p z3mEyq_tK%rfq{owecEIWR6bk-+*N*QZTeA{@QSK@4)@zdL~Bs<#I$^Prk5}Jq$mVa zc_l~97MMGhDNmiSybLars&#Zk4aueymSm{6Vz=V0)_6*}>^~6&dsxkFI-cQc z@aTo<9$X02QM3=a^LDRK!)aiAvuLWTh-QSP6^zb)NuLPGcsD@->8zf6_xRzSL3@BZ z$r}EK1>gzH=EaE*Z!cv+Pc-#ku8OM9y5A>>=|_rRcCxJU`m51e(06|GFO!whm_e-a zEXeyJ`Sfij^#)t6OM$o6#!%8w(0Er!ptXQ(edvj;x_VeVWu5_vyHQ?@m<-;~usOdG zT-%hg@zYEBNBZMPX$xR8)sOrUnUjvf%PO7c2~o+}S8Wve3l^Z5t9yZynL7|gOo+aJ zVADKyr+@%BB18;Emw#)YAEcMF_YX87%HmR!c*#YF{RlM3*o8L6fr#yEIVVgdz*|@F z9G?Dp|R6F2kZf-A~?2E(E#h7p+s!n>f2b!{wwd?Z<;I%Ex4uZ$~kXPPbO-e>{j+{3nW*~aPbR%H&$_^p$5qQ~M5c1YEl zc3nEkW%Q7(NCkfT7ZFeiyZY^6kYrtg%%*(j-F;g?_><7r za8d@Hb{?l+yM1e$mHZ49)gGx2!+T0!K1-=Gv%U2VS#UN=j_;0Y)9B~SIje@=ROBV< z^a*EHv{f48vM^db(TArOOMOKDUdojtSgu!GF>MI1;C&$7uTZWWJ182~{W4NgR*S5y0Mv@=onAwo{%PVvLC6nu0 zsO#4Y553B7Avd9R7sBCRBO{Mq*deI>P8^3HRVtRZp&WB>D(YlEe3Rb&A=G_(Nd{BF z=R{E-H_>^hch=?Y54&gDEGSx@|F6X9ty6fs`Vp)g%L;qsRUy%`wwF+9b6;atargG0 zov1wpZIul6YZy!x$F#;b~34tGT7X; z`x`0|b+5mH9y?d@wDDV}ec^3MC?ggZt5+u+Uu9Z+sxf$1fbuSR=>$t_WoVl*U4#!8fU zxC$T7burN6ANlgaMR(_Gbf2M`OCe|Bt+8p>OmqKcb}h*#c?C0Dhh6212AW3-ZjpNbnznlm3$;X@9%Rd9Nq3Zp`T3cfx($B`<#x1D7iH>&eQH6w# zDqV9}78L$3a5=bzH}8e0_O45pR+EzOc%{a!<#JbFik$fQ30!1oLhN#G(B7B5=+vT- zTX{1kszyc8VNb>d%})(Q3N@3Z74>LF`Asegvd0y=s;lVqJaq0E)JHa28*d7w+b4MD ziv6K(<@@FpTr0&7qclM$mxNEV)`j|W%HM}7&wmilmoG)h9+>D=s>OpR6N^e(WQu8V zs>_-BY~@N5tmI7Vo9eN$uzV_Q%Cc(T?&=(+KW5tueD)Nv<6O3qzbKt&l-xc z#~SE$KRI%tkFvgh6*YyUyJsc9zLG+12FRqMPeBPkwn2gz1KC2X<@14IXJEG{9Dv-V zF7ck2m<77?)!q4#4fi(;of=96CZV1s+6m5NYM5HeL0gT@{N76g^i=+^$+z z6G*+rpx4Mw%_Y5=P|4#w&4yZwg7O6R^+<@Ef~T*%Vj%C{%&poHWBCtmY%g-v@D5#d z(Y_ece}N&?05I_r1zynLHCQD}yn!X-vO8xgtFU9<#DbLm3(kv1Q+QbEmL}5>ypAK% zI}lof4dw%sM0BKJ%;Gzw-G0r1*v$S)o*Nw9IA?yQLPKG{(zGrOZE?u7`G-;>;h#qvQex|sb=4e zU}muhZ7EnwrZbc<%g$QMKJ9J-6eO{zyA0Vx7 z@n2_=&Wxx1%v{r0>xV;Mw#iJlIpR35MJu#*q)FkE`C1z__9?18Dkw88H_SCb_#$=0 zdMuSt59D~3>cZs9WAGPbuH&;6rz&=!=A>0Ve5YCyH^Z@2_^1Y@{1|JyL}b(lt}BF2o5buz3TqBJ z-4fx&PwDm80yCEs>b2jC3SE-EleRm^9jozAcnh2c@}qlWJ!HL6!j7$R z7dtU=eEMl1x_!NJ8KZMx?@fF*(K8eCgGOOawU&d(@>+(>WPuBy-3&xuDMiGR5p-ea z#)H$O>8UyH%0+XxV=hn{3#wDmg%rHL3sipJtsl7&CSeciO8yH{8Fj)Y3jH`OdO-zT z#||+Y?%6tZmVBaBM%3gbOA(CXD9^+(xln}5>J=1ES5+{6Ahnh`M4YBWn?(q`V8EtP zQS|_RV*i92R%>p%8HR1g<;&1gBHnnhq%~hG?NEa^&yAEiT%J;0c}}~X0I#DKJn?3I zJbZqc$pU)S^qz0#@uiQMc;vZSzwL}UAbyO^)r!uin2N13t%g@GUkbFYsIj!K8s(18 zep&Q_0&iC6gcIB+{>f*bWt~lqav?*cR3W^=07p_XEb-!1W=o_$3>`FqWW8%4BarH} z#+_%suX9<8Ln~EX$A&HOiAhG;D1L5q?s+wSI9PAnP>PQ@6hJ^fJ>@BYP^PWSl+oq# zjUiKv{PWOv66}VyU`Q`S&3i7MB@O-dMvVafw%_OPhO^gR#iQ)YgKV#T=gU*hhWAo* zK3vw`$u@HarO5Eg@E$Yis2c*)Va^6z$ly6XhCh2Sz(tr@DQmZoYm{C4O#5)#@A3yN zJ8QN}P@{4}acR=DMi5d}XHUIE2Jw03Th#!NdN^)rcOXP?R%AcW-<=E&Lso};cfC=_ zU%J5mwN0W*AHI7(nCem-B=7ySqvsTpe&5**0enkF_Q1!l+{g0}qoP%Zx7l{J4_Pa8 zlsmJ9sUF^;jkU{AA1`dXV3)$;>;b$05Gm$o{~uVqX{E;c3vB(PU6{Zf<@&Mo`9Ae1 z>8;#Tu~Nubys@8(7EB~kzpCX8TITD8q6Gb5ck56bN>!bd{4cki2Qjk@PLDxpq(d%C%Qj(|q{%P*rZ+=)VK6J3-gMZe){ZI<| z^7^n3D9W!#7~Ub5|D6L}Au$SFGDR9ug_@*f|Hx!heBJu%ok4BY_UK3LmLo*c-{W!D z_^1DwAcEh133gZ>->^w|YO=QXPRwc7HYqB{!96=@kpL@b&?75-qxiK|Ma_KvvL)1O z7UwVGsnOW*@zY$ZUQq((?w#*Szc%+1B(&}YIn>tvBjDAJG<5fM5GXN&n$A&4evCI# z@AXe*snVCt?hmUg^%E*SxitnB^wSb3FHLvu2Uc2dL0p@zc%jVik+-NM+YeSI^4KN0 zPRIPYsaW~$T5tob*`MTOzf_a+K`sJMc+aRt8w63*hxFf*o~d7_6!GpfL{(NcTp+fOO}K0ry%AF0FCQI$5t#;>6|0hESdQkQuukQKPRo?YQMf z10J~KajGu}()kjNP7r54GT7HFo4ONG2_C@Z{0or37$ z)f@XZO8kx;S6&i_#+|^af`y&;9FX9$2_3W~qEr?q{1)h`?dinm!`5;6K(s}lAwqUZ zsR#e&3bfr+o~EeIw!{gU$s~(h;4kR&Ne1bIGpH9DH|N}$%pBKW?I0A9Yz5GcuB;Ep zLn5`8<+c11CY*hOx_aOV!O9Q2=P)km|EAO+9QY+Pz$jes$Q%1uJ&m31x7%vY9b z#=tnqb<2x)uJ4BK;lY@)1Wxw%Ayd}O0`Mo~XsDGS-Bko$qjG05^Ayuu#4fai&74Ne zy?wbs^N_HSR5vd*@%5#8UeDLUFYjKWf zw>uljdg??4ZB;qrgJ|o^Zx5&`y$$LK!QX3oNd36-mz0`;6`Vfh{pXDsTOYn^piv}z zrh0`VO^+|;9&sREspO@$cGg3SteZDz${X!%`Yk^J&%RU$s~M&~Q8ZFM)7pBSevq{5 zZ}JnN`GNe^QFKDd@+JVKn9;lVzY7kgVegOKeg0YPoxXEF|9wg9%9lKab(A%o&M3d{5M@7BuY2i>*;fidi@}$#d;3seLGlAWzb$+KMwD?tc<6;1G%avYFh_~4Qx6N3Fx|f znC%F*IJd7me*H1b+RWc>Mc%&6+H5lf0dpL|Ycw0{_US3EImcm~s3Rm6U81EJq6YUyatUUJ=Bwu^Z?G)~*bIVj{Q3vBT&DZoX)bOi z{HNZu01OkJP2jnvZSiR&D{4Pflb^d&y7K_;6l*11;(%vO6wZ`Wv6DNzNRjip>M7O7 z$&LFctnJbBV1n>HHB+{^{-n9d((P>tYH5hl7L{Y|qk6F+P8yt6*5~DBmTjli#cBsD zPh}wX97M4n^SAbpwP!oJ_+R(?_7`Nq`bm^nJdjOYMai_qg*ENs1BmoB$pLtG++ZPy zJ$j4P;Fvf_7%5nc5n;qBW_2D)X*)}o2v>ow4dpZrQ0N}`tE!<4%?-C& zwAA&k@hOu4v%o>{H4#1$8K-Hm(Y;z$7Ib;ub9p+&7XR`5-du8CwqReD#j=jeSyjK- zKSoolmaD9GMeEtlWa092lK=L{H!@lR&Mf_o2zpQcxggS6(>nv=eDV5;a+!Vf)ORwggDT^qWul$ZHx7MkD8 zCbJ-tD;KQV*nu-`$%<{{Rc$=AiK-IGlobkK>ZCcfIP=7NUng|rE*boVRB-~n_PY*B zDx4zApbcuSJtB5;naLsl=BN!TU}@kRBpVd|M6$8$B07OyJ@*`~#od1u5;%TtlrJo} z18e~WbDC4*1BI}d_x|It;{2P4?b4%FzD;_KapTCL#?b?Rj8ur1ogqz%@obRdSS!< z$k#^A?;0pO!S&*)>H{=ccU5NP1m5zera2c4@d&f6DXgSw&=dFqO7cgz?+t*6x>vrO za7$=O+Z~OO)o)ujq;Ru8X;pq!E39c%czr%qZ2aw6ZTS927{VGjwNI`!>^t;&VrDMh zBa2HCODuIm+;oo^sU2Ix{pT2NvA2U;yRk_rHEw;JIWl=#E*0dUv${8psl@ErJP;WnS;7ZL=K_- zYTOFCrII?rrE#!&Qvb|kF->CP${#sEdd_Br^;cx8nBm<&z>weOhCZF$U+N5#i0N*t z)nhfzF_7k$g2sQ!hw4?GNXB7FAtbq#aQ#GIuc2;%{wmGdHW$xLRU1ng$Ug_iv5M6P zqr3E_QQ2px?lM$&J5DnYQMMYmmYdEBv{W{Dem%L(t;_#yDo4O7qM5y0o?>Js61NXP zWHjGB=vUbKlbU{OAMF|gsFq!kL%lrw)gS-+7Gdw#xU=JzrTqCD%`eZ)In=&v+!}3? zR}G$>`gDH9hL_eQk?NC<+=_d@zM!Y(C=nn;n>|pu)k&H87I>?qrkj|GP8hbh6G)94?uo2`>v+OT8ibC&)a=gt`ucL_(ou@3>sHUU_@*Gs%LZnK~0id+H7u3u@t5U zkx_eYzTa0#sPGbt$w$fmw5yzYF3!b;aSjN^pED~qo<6a3v4-dL^Z9$L0$j?C3;9hX zKn~t!_GG+_;@*#DIxj_AJt^%`7-YTL;p!=&J#CZq{bHb2 zUS{bH3zti)*3=doe21d6_f^UY_UesgP~$S0S8uzQ$TKH#m6V_Y(R0mwUy$CO$YAOTq%ncll_1Jh;32-hWx%cn38%*oG(``en^USY$b#u?z|hRat2Yhy^WKF?k1a zIz{6b7^m&rvxGS-GcF9@E8bHmE8Gnjh@e_0npJ09f7#20bGNXOWj7~ZHj^sh@AC!$ zdCfbrrnt0lLHwkHvtTm{YU z>>`YnPYIFCkk(%p8WjrRp#o5X9YtziI_^mS#UoDb+0-UWpSDMvV>oM(2j!c=brEb9 zz7d14omwsZf1Jz+KG?|*4tsd2w&HV@y8L#D2l+>=T{^|gc26f*Hfa{!3;UUEw54kd<&3f=4 zr#fQ48nWaQS-r`Ri1GJ@?PLC!9)GmkKJWMsZ7`KpvM=~+MZBojBCZ{HR(M*Ge3Xbp zN2B7FxqnUZMcH7Nk^XOvb@#R=>|OoTHc0!4kHI<+eJ@%@;SfrqaQ`kW?#eMo0~A;VK}ka9pLG2Hbr5DNMIGv zG2D!cb@P@X?kEs`o;WJb9^p&I=aQJ*ACZi!t`HUi%o;FD+YQ&8mCghQRab%t`i#S< zL6yu43H5@!u#p0)&(adD-|D~z!abB3ihoJIWU=}n_s~-T*fGP=?@i`a$ujG60WE3a zpL2Ez9Lhjo7rhzKhs>j8#Z+D|(a)hN8Ni4r`2p2+B9Py@8=rxvtGkU7^eyVV{I{f! z<%1%;rCAvkSWN<*%6OGqyaO9?%z-I_V3sUUd9vaRB$#_R-O4!(Po|SvxjF89xBe00 zS7GjCi^mNM|5vWdp-vN${}lg!u%9sFJM=>u z=OBF-vH4p2>}KTZ8t1fZ`=T1b<{oEO7iQHH@YNFh{IS+Odi~wn$(AOl74hV>0>^t9 zlzU`BXCtKu;vTu1&8u$pF(7S;^U^-5*I5G&TuoK+*?h=UeW#%@a5l9YwhWl#Tqr9Na+!_{88tX!nla0u57d?0+=h6cl#g^l)Xy~6W`I@^1>jXN8r z@P~|PvKRbgXw+1P0j`&59#MUp@%H>K>Wdtizy~GbbM=;sR#=V8&N4v z(WE_f+YC1)%MMgxC7c&nHzNgITr3`ubo+m*WF`hHlgneN3!>9ev$SPIS0f9BGnj1V7P3@MYN`Z9QEY{Oi_1k}AkGX%)y z1AJlK6Qq|oL#%B#Gk)Njg0u+Y#bdnaquwYjeE3GXZqnH2DWQqV?B9O%02i;#a|8V_ zGY9A7UyefMM~Nia?%Vfw>Ym;=Gz>Uu4wuiDuW_DG{HJ@0*1NVHSCeij;q$}IhY^*a za=YKk{^@mls~2qFEajl5M*iy0#0VLM?HnhLXADJGezf;^$5qUFG*bg>e6*4}&XCik ze+cT6^i?+`CSq7md)CvhQ)ZECBV=lo6BU0;CBT7;FM^SkpQGMaBwKmid0rE=NH!mk2jF8HY z=G{lIXKzXtIfLbHC$S%fY5%pNysgRo7;a2)m~dA>Kj%_1b0y$#B9jLM3nlqbzY6*_ zvp&+vYLJM#YidE!H`~%6+@`&aK4Y!nk!{*f80)k0g1)jET(W3f>b$T>6|tm+rsBGo z)#Mp8&$6>*FY$ZJi(%AoRFx^DFwQL#w$-OhR_Ns2v@hbfNtR~ik#?@p^s5*i2^^=Y z26^kluKQKoIANP3m8ZWVPKAUx>ofe14wik1r(EvSSLiFKBt?)eK2Qpr?)k^i9XIz_ zR+>AT72?OEem}IPppQ4S`|LuN9e-f$M~eH6^1!B&B?}_zI)2X-FTi_7b4LN4+5bu( zX|d4FWHwXQ=qypSCF6qTpmAk-8s?vV5Ti=K^~4IiXyF~=6q64#bb61|qRhk@9)OfD zc*mQVmkE2pwkLsi908PO9pk}A(D64Rk>L|2B zA)qjl*=-shYC@&2c&0#+}VNP3>tLYB`{flZpO^eBh+^s()}X@!vQ><3?EOExWc z4?IeErt@4k^1r*R}5(mw8W^+>tv8kFo z;AG~ZG)!0q!*U@Ql&o|>uyjAKHw#!Oz~@kJ;jD+(yYagxB5bUX;mI&{P?H|_;U9vY(V>j_*yR#M6RB(Q z)=lH4SUZbk5kX-pCs#I`%Nb;Rs+RDGU&St9Acprzqi`5lBTOhvxaOBeJD;rVVeI&m zrR_US+$GHpa?e9UZqG(##>~B(C{?vCLZSCNhOz&#=d)UpTA)epTJUd% z4iNib^3SwrWP>)ouSo1|b`G_{@ox}C`~|$eFRUy9{$=}D3#B?HC0ERW_PgwdrE6Qq z;RJmRq-ylDp>o9#Ul7yI?dNYQ zC7c^{L+tfPK-^0dKx53XN=m+B(I()id;PVsL%_K!|8J7*xkdMp63z`!(6t<3nXz~+ zBNlM$PPAZ=i7d#0`rp4<%ZB}o5;X6PpS`7*5_eF6!?k+X`kP=6I-EbOf62h|c9Kb} zL=OV>==TJd;oTeD+oe_x7ByC+qVd~hn@av}=T)C9F9~U|+si607@n)Zk6w^w(#d80 z!_I3XGZQ6hiT8h~p7Gq337OExfV|v}w)u)jgFGK%#p;uDO*buj$e-gm5givaRfF4?YfYpUwELXm{ z3~R^K8}6aEw<^v?ZH2<`3Nb$nFPz8$a%k0K@sN%u!Zw32hLN`W%^%7--ROoqw2tx!U&fQkNyIay&te^aLM1{e`8Jf&_Hlfaw_)Da?l(ZsF__ z>skqV2tAt>eu_IK-g3*xGpN-{fq;W$IpFlHzUM?l1+_O>X&$H^D+PT*?(=_xw1*1i z8@BdZXe())y)`+~D6(be0&K;YZ1vFbkRTHRWQ;iv747#d&%>jdE4)9SW2| zP8g?$F7BFz!W_4Y2c`6tal9%>$lB7QkPgWbRQmeTB=ixnIx_21o?U$!|A}l0?eQ?> z?&B=`@hNKGRNztsba;g53BuFfyGW%}WZLzOMf6POFr}Lx5=50GFS}Sg-S<{ECCAa= z+yiG<#)naxn9{O708G>Z$tvz_sg&Rn5IQdvTq;kv>~)W<6#9X*d?LSpkrzd8<1z%n zukhAE$)Z{XD;f@>0$+Mv3j@%cyoi6?jgI0@|GU6gXWgeBc9%^Wo3DFPa_va^;D(yw zMM1S`;jtn!baC#57ZDlvc&$E2;JuGn`qd#!oDANwQQ3-Ueon>@c}^yBY?iTx%G-#z zzs=7ov~NG-rgQy(sco#}u{v#z;De|crm9xH`J()Gkq80aoxDU!x+Lv`P7HgaYn$FH zizipx_ccTd!yt>NdGPge(Cu`$Ml5_Jxx4iQg)4rOM;KT43(J_0@H? z$>8T{_huufC=0@L9)N6*5Tu>J4V9)b`Jt;W5(5I0cqYMl1#2mVr9o3Rxz+_sWTq}J zot|c~MY@wQ(=?SUhkb(iSL8&|9}pl!R$u7ofPDh`qzIy$#(vAP(+`#^J#?QMJ5yKB{J60j**o{^7-TsnaThy} zY)aXJh@#MxnCcX64YqBhA-8Xrz1urS~+lURR4M z|BqfmSyR&sQoi>4P-i2`uX1{{J+}q>;4yiQF!}yL;g_!iPx`s;=7FDC%NdAHj32ys zCV4yrsS~mBLZtLlbgm$u_IrpPi~Y0uFF97tQr!vh`3^1f&rM^k2A7GFjh7L9I$X@J z4?ZH*Ggd=AO24Oy1TjC+i|#Z~`9OXrB%q`Fa*xjO3fieFGGQf68EKx)kY_|p)2H5^ zHYj^YPN~^gN1+E~kBIW%Cbb8_D+x#~0PZv$`xp>2{rOmPdut##>W5ocdh-NUYh$r` zfBN_M#zaNLnoNB#;w~`c?J4ovQFSOvvF$sm%r}&1dULYgUZpR&K}g1$QuzS^3J#-Z z1ceV}-anIwDm7f4dqz{sur#?Owf9^5{?3V|qmY!fcUs*er{9%jgZ>k?Okf~xabg7j zU%8?44n}PnVYRSc(`&Nf+=k)4D{fq5F8ZVS?M#hp0%NY-!Fhf~r+iKM;hi*jot#BN z63e(=q|D+q>v`Dz3RxRG6E=%Onky>VFNH#1rnK>n(SF`QAseU3aza!OJ6Q%_12 zxTcb63Gw_-dZABNjgY(o;?^>kIrO2t_;!E>b06O;nZHYmx37GOcxl;$fJ+)m4BIN@LG zDOJXLfNQ>}&N*1ZpXlFf`-#HQ`b{Wz@df|z^JKnO^^a$Q$bg^}wh5(GR0yjQV^Anm z28ME;vyp9*$yWq}nF`9Ub`Zk>#b5^6r4PBJRDN{9lfX0{aE0k}Q8j!aq-12N&;3Ayjz=!AD6Lb(d!0WkS{=?qRqqJRqLUjRmiX!s(-FW%i7pUw2f;&_O5k0Uu)5 zN4-ySx4ouNwACFWI3?^MCVdm-eL?nsox_DQrJ_m*zi{pQ+)_`s8(32`P@&52z?+4p zP|Y!twR9TcD>(7m`6E`|a48xu$9aYmlopk;8WQIBD_v^w!hDZB&B?^SVq?8ld>P2X z!UOS&8XA)Y^Jbx~`L)0dM2{4~jf;i&%s3%(DdqlzshOmCFaz>(*@63I?|V`D!o}(> z)iO;|h{g~g$Ajk{7oyt%cHxYP!8(n>bi4_%tA@Y zLio3^V;HPo$M7jlMfo83%Z~Z0lDSDbE=G_=L($d|YWE|IVg#S4gsVw#%x>EuL#^T5 zegaqaJ+9lTWWrj>&pCzhjxw;8mA~Ld&yr9V<}AL2o)oz$X~BBNhUq~n3)^RcvOu4$ zR+Rzs`XdJBzpci;&Z_5L|NEh5&f*ikKa{lyUJ!fwm)jl(9Jz6%* zcxdKY*HTgBcv-n9rfxSwLS>N?$$kFl$7|AQ$9^4MqbWDDPmTW4F-?*tn*Ujr*NqQv z{Mz=DA<-@b5TdJnNs6r*`g(*1M;BtVDet^DBWA?bydwaTsb(?Da1%Pr^EYvOt~b+?em zRBFh}Gb=+Em)F3>sVCtk+S=q!mkN>982)AB{r7bBBBcvB+0$3R9kw?a>ER#D7H zL}OQHfUBoDB;k(7!(~607E6e+t8SXhDp%Y{DO9%6|6RB!Xk!Nr+p1-=A0C@t|5o$N zM^wRBIknc(qX_eOHdeq5+a@yg+(35 zD^j=DY{1?XqF;*$A{vgeOD`PXBBV@JGPxSZ0vtF*dP$4@ZDr=xM9>K z3D1Tl8BA+nw); z;<*x}p?cv5m`-=^_&5K%FkyB-T*9Y!@lA=Fnw8dYu6eRnaOUia{)+X5#-(V%L2+TA zID0!s~jtLGj=)>+_(b)JidOMT2Y?8X{USDT3k2GFQP!R zOK8Ki)1bM>h5l^CK0$@*vR>ln#g0QcSP*0zePO(JL6o3+IPjITET{87=2v(eNmI24 znAa0E1>%j$)npg_2wT1q^#1zGtQT3ZEs4!m;%XoGIjHOtW~t9P;l^opXu$t2tbTCo zpCZ;Wjho8(Wri-<2PJUS94fR0iJd4BAEDOKjQIbSD)B0)HijXPU?o|})EyHR;qy;H zel0t>_u_+edWN70xmak#)OJ`$H3Bhr`>w4*!Mw3rou8^ATLj zCy_Q|+W!$xv9s;Txtw;giag&AJ+?jvHr~;kO6Jk7zxVb0`pq%PE&-KSX%TAh87}&J zgW5f^cD`8^M{uL08L{IMyz#yt<7hDcQ33wuy*FOkHdot}wuE|ys_i2fuE)PYf;f=Z zMy+njZ@g+;?{{Hp{qkJQUi9ig(1gBUk(ao*S~y^R#@Gim=~8W&Z*~W`R`6FuzR8wA z_Usg{oJ?P1C!Ws8u_>lq-Zht13cj_`ANO?%9{|u)1pv=5iE)E;Qv$P(d4ra~+|qtJ z5V1Iyvn;}KZ_0o%zhyEtvi8-(z8}5pgTUAbn~sA z;GtYZy=VL()60qLn+qbF5waLr*!8X^V$rEefTe~^++@21d1-Ih;3HvT^6@zwzSGaa zMf;dX99s$0HN4$A2k^2T>p0<>+?Ibbs43pm-!k{sGn7OUHf=pzles@TgY<90a_1Oc zdnvg2et0%3DehJa;rrJ6)-=_eTN>tjA#wYIfAx;lBVB$yzU-5b{Mc=8dVZ_y#!knk zg5LFvc7%xzmuGALz34ag+OGWX%g;xVaRUT*a-^OS&-kbOxGzt_kTG*JEswf?5^Wd3+=$lOW_|X)@_>&`oC9CSO{)LL^5VTKx@dxYCO8n0FgqZ(moCYJNa4#XC z;PaKnX7&qH(tDe5vV_6o{J@de=J;#f5@_{2tnV+EL5(R*>@YmOdS*s6_PR!4MYSze zyPq`^qFQoB+J%YbqbcgT+DbEab_EcA*f^XQ5)X9{~_ z)l@`nbp>iq^ow0L&-2S$D*XU=)ZS7g+ZH3_62GH(KEF(`G~^2Ude#!P(_(AFid7Ms z)N41Wz9n!JAW>CqWmk``>g*AO3+>v_^}`o@o#G&n7;KImX7^2wWpJjHsClsHbqR$| z0pqH_b9Gtj(f3+j; zK1o>&%)l3ie_f(n60e2KonH5$1q;b3fw;x~GUt3gyYQK!J=GX6r`*q~?NsPxM@&#s zf|mmly5B0==QYApA4FY zqC>j0AJRmg2vZF~r+x>9uos|={V)gDvbc|>8MIf8U+W(2{L2#wqFXK}yzOR$l?NJ| zm_>au3s(aF5O#kyy<2^eY|(z^wvZ5_^6(-X*;EVEH-l=gsCm#!TpQu6YOCxu2~nFa243( zZ)7)-t`Q&}<`qhMEnXq;X|nyPsC;gdqd3o#;6J7R7zBk1qhy;c4L3eE1)Dm$TXiZT z6tP}LG}k#GybuE+kX+sD z%}@E7SFkgIaeV75nj5e2d%@3Q;%`o1fc%hGQ+xAs56nMdj;~5PiC_Jrk(gg3J|u+_ zuetT5Kd214x0fasT=a+fLbwkTH__x7h4oKO4p%ZvA%EI7!_OMuq1+?Sln8#9;lr>- zj4lhgxw4kMDJ}|Gk{zC85DB1$sRaeoBJ_)i?wF;2;sUT+f9NyHNcZLVtX@Qd!ix5n zvGg|sN4wakLYyD4@Mj98#lneyX)$9H|1<+%AH+;#`$;6&eH}a)lQ5Zc#13nQX+-lP1y|_tQvVqHeh|zpg=_;GlU&&oD#8NVuI1zME%j zrYU9dg!|OiDn*39*xAC3AJRj&vh={L)nnm(*K5foX+@Ld2D>OF0kalPme<{ZS3=!U z&YV}@UuS1jqcj89CM4s26}F1=fOvsl5DVg5jcU2et}mP-z^v2k???e+VWOg$&Z<4!|!rq;f2Jx;Iwv4qGoj{wH=MT(dbeAdeIhI%32YHCL!3I0ZWu0m;fd zEK-jpkZZzO5vh{FGVf0GeK#O`pUG>9Wnw_FIOO7pX4~@BHtAWF_1~c1Q2G z3brNg_*is4+}MEbt#!-KIq7A5U(PDu+sheG{y3IvDcYS~KjpaJH>kZ?_d)dwVAo;? z0f!gu@v)^*?yEqsS}B2h!T+AM!QSC!W7j{AR~AWBKARAcS2So95=O69EqRv+2{cvl zRwTA723UsZNIM<`Jbcu<@!(kYl4f1nZXb(^oE0Rp)$b!L%|oV01^~F9b=L8DbW88c z1MRh)^UEQT+fDW3Y}kaG{QEX%6LD$Ao;xuI@#+RQ9qBo%;CfhT2D8lNr+v!3)}s^m zD+{e5suXbv6^LPUTEkrxy?2H!mCxqaL+TTaWOqsHrLOIV96dJLk#8T$_`ixKJX3q7 z}`w1D-}h>CmVYR7=l~l z;|PHPs}bU*QC8GJx0xmBwTR`$(_~dlzRe6_^o0efG-TL7Pp?Zm9MKm4tO}%!g<5Ma zhstP~V&y)O^xAi2NuR2o*|)LR4!`*g#18EFC0fr^Bf^F_>W0vzH4zWv*B^t+ z^2Q48jh>Go`+#}NV4AQJpwSshdgjC>Dvgmkmt@xU=t)L>8r7u@Oq}QG?$RHJyhW_& zwfDwcNLtZ&fumKw(d1%&r06=XNU*vaFg&YVYUHaM={dn}CSOEd5Uh5!E_TsR*WfEk zR=Gxlm)K|14g&y_+phz)%)+!|3A}0baS2J3Yfe|z`=Hg4{7eFucnDFsS2sxZ^|#Dr zPC2m$W7p%kB72)G&1LZZbjV~OICE5*F@TVWSBI3Dku9)E{PY3WxdNsO>>?^#TcF56 zS#&=7dIg%|KO-Vut*!xdSFn4|m>rrTQtx!#1s@?@sDU?NE_pOuDDf&vGtgQL|I$^C zxi{Wp2NuIt7cU*XjM12h9*&KQ?!)ZK0cXTpPHalu0)sc$~;mVTBwnEUpai%(lS^SJ+H>?Oee< z!u>woRJ^nhwZgdi)7E@e@g77Wnnru~=s?|9~2%gAh${(tSv~q`>zY4k* zucbxmnofexMIdt!NkvSh|&9Y+@batqF+$W)_)CC$n4q{`TF_9IfelgD}PT zjJuRvKgvR1EO@jrLa?O=m#dDAMA}AFFJ%f&mE9y^+D4xET%9_4+buB>H0skGG~nID zYl?^wI@*!*B|p^Zf7q*%xQ3Fyo|SML0i`)^rjJ*T*9v_Msp);7FETpyYs+3=Kkg5x zOAnCnV@cThnG)fP;#{>F=x4nO)GM_9X;`dcNz4I%SeYF~{d`%}p-SpX%bnmUfBx!x zoXdX9T&uiC82q?ydo!6&CE9#r#9^*bm0n^D zwaz~1q3T)uCitJ%ET6sny8oxmqhapJ)?!Cd+u~K}{-N=XhquZ~njZrSEI*q{sCb$7 zq0=93mKJY|c-vn8g&>()ugSY#kv8@%M=riR<9t0borSpx|rPi%Il5%Y1K{6l}X<0t=T3H*5bt7nP9K1rf_>bu6esVB~9;l;flrN|%*QXht z+79Y`ncf86i3|5Psw;rSfQ0nkN!n%A;H)7NBdt?gW3UY6?LEng@Y8DI*ShX0I~55> zjt4zYJ2jpug}00Vac$~)OZ)x{0Ak;B84y?TCs#)?!@u-G?Bwj@)alpH4|Tov+smKp zRfJW4%$Imw(sofKa(pVTPm@U5v6RTMZPI{NOR1ii;bhERJfyolF=y-8PBWYA|Pb-^a+Js|2^MDV28)nPtPR2 zX2VkATu=pY&cU5ML}{(Q>TA-oIA@_>Lcd(_qbPcF`0#$E@{BEP&blt?b2pFJ5wlpuV}i02f-!OhiYmBK_EvR`m zbOWa_NDg5xr!Ui4plXID7fYpjY_0zMwcGC1sVXhd{#zQBVM(IDzxPT&ljoL24VVXo zwxBf0l23wYk(<}Gp;Iy-I2CQR#34T??YU;X>+3#crOE$lZj!_9GW9t-Y;KZ(D=wfP zqL)Zl>@X<1r{K#J&qjH2kp^v{#G5uz;SDRd+MY5CRo!}Kn^su%ltP=0Px=LU3R^`Y z7%3Bam1w9R@7(ia719HSF&2vbT6TztS}0>ZvENH5BXqO3RvKSI8))NqO4p}$S{lT= zV0a5qhoZTP25kLSXDrQxl8b?hhrC4tHd05KqiV(NqSW%G|HRDIHi(G4*^W?XET6gpAi~?7$+-+cog1$(tnE#4^z=>zi4XIXx!iQo*Tv>1j;r^L{#)M~d z(ui&7CMLm176N5T{*JpjY4a&JR6V4eYg+#NZIbN1k0{&qt?CNI0=x3bk;bgMoR_%g zh7Nz%5VlvF(`wOU7Xcz{-HRdHs-ooVWh5d^!op?Dv}bc}uPpRz?aHh2FPD1_Ys>@J zu{&xX*Ls2mDPS2azAu(P5W@F90k^RJs zlXop1UCCv~Waow(CPHmPv&MD}w=jo&{+ExfRZ9>v6jzAax?eYKCppzb;*v>%K6jE& z^pZkw;;)Vq^=4I}f1hUk?wc}yFmlceif-8YFjU=2I!+i5adCCuMb>(xOE)T7176$q2X^U{CkQK`FV6Yu`na%8Rm2U!L(5j@M4qsGk@Z6IfN$!&yMf&GWBC zElb~3reZWc1Ur`*^pPjZ1dZ*Qe~qti+vxJfMw_0QP-L4#;Sfw_l9`1@>$S?F- ze<4!K;>Zf7eyp$_Io9R7RlTTtXsIN<(yyq#SDrt42X`v6wG!^PB#mw3x}iw;--Wdw zcAHT9Yo}YKv^;BCkCKjGh3V&3Jyo!qr`AA5q#B zvvye2dRj=l8n&=V!j0T5(3@pVnm5j7DlrchoEYIwjQdQWV=|kYg}DCG$0?fCq>pX2ZRK`qLK)|3M93-25r<{}tp1l7AxqA)?p& z3```PVya)%7nj5>fZ}TU)DA2bk#*D#>yiW)HLbRXkoF$6hvuS1*DgcOFb}+OEe6FH3-dK**tsX$sF(P77!q-(FaJ7Wzd(Ue4fi!8lrtk!0IfI;dh; zB6OpO_4PY@_(7e@4OznRHCI2}m#y(H+C`2c%fc;)Ux=IiF?nuh@8mp}`JzW$Dzf%@ zMAC9v96Rk+9yo!xnzw8oTLZ; zv)5?})#d2{+$;M@EET-{&(bZBFN9g$OHAoKItOwO9MK1GQZwz2TaY6wSGdM!3fd`N zERl*D%ISa`uU70M5CQ+>6lsr}_rNXFI>fdYL+PSmu9L_F5>0a4^eH1!Wk!Ncfh<#a_pk*~Zan6|n@mb`l zUCNl`lY#qIJ>YZUsf?^U-7QUsojSO!r&2EDfb)$G^DTuvrnpwTMzxctE8OowH8F|* z#J^e12(@~vxGZ{c;k81y=|Gz4V7ZmQ05_@q&l@0#p2zN276_ij}?2^Wm z*|n$5OqJQk>icb5nB!jqGlYQL&@(0Y3$;_i+^(wFGnwLYLUCyx#D9F(l3~55^snCT zY2WS8S9_5a6FBQ-BNjsLI>LuLMLI| z)#l@hiq6zDN8B%umid-^&sK#)i}uO!Ho_T!JG%lR+_qu>fD0!Qypnh^Cl+sxSJPPn zM)J??id@3()3)D^?$10I1WC_yOaE-v(Wp5y9eC{~L!Qmk5uyE1QQUleRQIhO)c4_? zWl@Dd@2l-~64pbNfJx6Hn1E6Zfcr`EG$p_f>4+Em<1Pz&QbLv<{K2N*9E7{#bJlGg zXg5>u?+rAC5y;Ki!1}sJ3(wT?wOpRN4%vBXJrhJp<#Z$UFPNToHk2e%V(e>{Gc2r# z)}Rxv7{?+iiF-KLKYTe}u|@leIe)*j;B&U+z^3QD?c?sH`iU8%Tfe?VVcS%3Uh;A? z3L#D%1VS=TH6M_#FuT;*j%pL|;O$rI=S)7t+ZdV3>hrhnq>csGs<%GOwysOxOFn1r z=YuU_D(PFuD&j*`o`g6_rp9Jk!F{$;bVdI(Be;Gv@6k@&X5XElS0(*k;gQaBuRC=% z+=E~9rOUbj&}F~-^_9$nkyGQ3)+WZ_n|0LfvRVye`4TE?a&XPO!N9HKNEy4tJzLs# zYCBIb_V#M3VYtTpYTzk8$stTWTf@=ExNBy!9kcVUA;Tr^e-|X6^ZIdLk72Yn4&qp~ zSwJ|WOHgpd=reej_KSNdogGxz%{-Eu1&qXBj35PnmvXi*on)%3S}eF6DP4wgWxN$f zWmXhdx97S|e37G9_EkURA18wOtw$~MTkR~o&NOj>yG1mJrhhNNf-!|vLr)NGZq38r z(PwjeNXYq&shs~%h`{f|(=*4saAou*57bIjb+m6N8*P`z49O{8WOIZ#Tc~7>V-m|n z2#3+5{qDe)h%7P!r~m@gTpvD15^w1={f-<{3-KSYEQ(^tA?(GnPBlU1h6H$Mo z2`&^gJoSGRo%cK2eH(^#s8XZ$3Tp3_*t1q*t66)G&{&~rtG$!jViU8a1XbFq8bPQL zI;7~3AT(`JRTR&g_b>269G~O<-uHE#C(PfHC8EOrNM4ke!`-4OAy3PgB2p|j+OR)2 z=7jq2?YC1&bYu*NKM`*_k4StKOCnG-)`sP4<#e7M#MS_Ceo3`@`t2r1?vyMFQQiUPQ9UjJ{3w@qaS#bgR-K3^VY{Zdos zDWoI;1lRnYf|BuPzNdtvGB`IN zo~$y>5YPzY;JYOy<{#qIFq~>xNWRCGGt=YNOHanOeu36ezxXy8r7QKGY9a}Gqgs057sW{iv26l5v&6n8y5G%m?=9A`k z{-*zE_|aX0GRLAD-D$g7iGgq(*CP>#d7^(HF14#^51pL0Izh_^=03QT`ctWcqlNF`BfLE#B~qIX3)Y@uQy8!??^l@Z>B zH)pOYHuB)kz^+_H^U@BAd-Ijq6}IUCpo7iRHw!YkIMVzo_-qMoxgD4f2Mr)zNegqh znk+(81-OhoTx=;Y&VG)}uv7&1trqG{Y?(;?zjs3$_lWZ~sFgH4(D`i1EPo^tiSC=h z5`$z_Qo6ZzQn~}kFDF?CpWBSsY$IkvIyTBjXLA@F8G;q*4d@8V$0Z znsmVI9mC$q*ljz=-NkoqB}xC7GzkCYB=6znwmUaC30CW#2af*KU<>&V% zYdh=CKNzu(nd1VOdPEi4<_29oW*JFO_15O@?*E=t)~QPjbJbKbbLB?;1EHsh$x;LG z*8gY%Gf4qfk2NB&gz|`iX$+y!KsldJcv4;QiX{#b*uF zitW8SG+XfC2!@r11&LOFdw_0XOh*^-M85PWv}&duu=NS%lhk$v`6DZQ){F3jd_K(s z!!jOFWXX}{2}VOL<^W>3y`6;$CRzdTq2?%DeAsBh%2`kACyuz^VOqM3%Kfy?pLN0v zKdoG7o#(bzYi+Vje2;W0S|)Z8<~IHbxbvgmdA<8q3MKnE6b`TehKcMPw|<#gnr zw5<=O)X1dG@YhQJk!X<#Ye!aP=_Ju}zX^zVimiehTk&O? zwolIS?3d*WR7d(UfY|mgIu}$ecSxBgHI)3LfSU}dPuQQn#Vj6c$>hxAdl{v5=?n7V z&9XZCbiz z5Bv48KU7@I@g<ik4&!uzSM)|@M1#{E~AQg5jN z&*>kv0(~nBnjp224O%dQj<2W0Inq2rClQX3_AKPVtdiS(L#vNhUL%6om&Xe+YcK&9 zJT`|}Mg2Mr0ry47>_$s$~Mp~JWEvAYuk>jF%-yQ?~y-b?sE%8=> zv!0a>88!c`g5Rmj*J9)LPAAqmHz|;qD>A6<85MyFZj9OIoEA&}iCySH68p4W#c&Z0 zU(Md0Y(T_qQ0BI#w}%;4)|u<%zLS=EB@lYN7wgrL3zTZ#!8>nPZ=yqc4*ac-B;x#d zhAA~!Y1GA*C)V2P9}43?0EA2PvKOD_!9}c!Z{VsUzS^uj5G!h*I(C0lQv-n{2=U%E z@h2*#SH&$!UtLfxxsp#d%D)@bK#DBsE1MqM_?+Rwk^khM@*$M?qmc;~!|h;qts?sY z;$s>$z@hYQ?(}^@c_=UOpKx^0mM#ccrbbvMS>w~pNjPhH0gX>+nZg}J7L{%hi;iRS zC-O&w9#J#`6u&NEG|*r`u;QV*g#NpymMZBJ3m2OJ0+e&n9r?i_lNb{hYLDL8Uorqz z_?TS@^y+s!eh{n4aU7=p0zI=m(Xvnzcp7BGBKABZ0Yt_ZxW#4a4{vu)Ba;U|M%pABfxh>Wd=NL51r7s9>;Y5yOu(uD%$xj8qzrq;Ei<=Dh|LO5Qj>zj!^b1z`eFIcY_E$uakfs%;*Rg}X3mcF0Ls#306pUZNSrAA7g zXDN4~^LKc;zgc|!4gs1v+dxpYp({w+aiK{9DQb3Hr-JZZGcn`qvJSExr(o33;nfD< zG!4{j)$8{em4$v`nozJjifA$1%Cr;GVtdnK0yMA{$(nGF=M~J05e5Vn0FP7+J{M@T z*rCJ31A2bo&9LGDKh)TqwD)GLH@c5$iKPivf~CQN3c<}}2Q->RM1V}DW^ez%+S)hE z)ZoC01vhlEb64foKwM%iXnErY%qwS2rrFL3psmR<5bvR&5~n{p}*mh>@cR-pbhUV2gr1n1bl|sRdcP|^yfFy zlV!qdK&E&fZv4>)%I@BYc|43XJJnUiD~TK*k`}*49kZR`T-K1ZBi$7BN=#%6yh}*y zkIt_mT+QnH^sBM~4gb-+I}oWTTGjOAI^ys-RG-jzGxTdr>#`C*&-vAc_Wn#Qj%fYM zgb_CU!o*H>kCm-+>O`QamgZVz%zd$CFtgioL&^6bnRt%RlrYGEI7Y6`gK6w3IJ=Pd zc;QGDWy-A0wtr4vjJ6~dKLJ^_{!1RftNCxmVCTm|aP01O$HUa9V4aXGU9_A4+kVx~S+P|}~tuESPO<_b#lq39uB@0+GY$^hVAdqQvG>q^S4#6u7(LfZ0ov|HTcJYe2j3-nk#~mZ z>u;LG8_2D%ulO|BQX}yuyyf@V>l(e!cgYyp<F;f+VyKm*`r(dd) zCYK+B768=(Vjfl&<6MsMhJsxGw7k-j*!Rwv`{{0I+7Z7~#U1*P5a)_fq@GG=r$0P! ztV%<3|M(^7g_cfx5`Yi_F)v46DMEIpj-*Mvd>-IpM%G2R^3?k$TvqgXn(j@vR(8Od z#D085wIa6#Qf#M8mowk5GLeRr>ED@KkABLC z{HFy7tU-+MNjFCv_qGw%HZ1-aZ-efukMYUev7)1cYW2g-R`6cv>UvJX%$CnGp4^uA z7VuQJt*J6e0i%YLuMkkXnqvQCdgBLvVIl3#umB!<7h$o82{_{2`rb!ZUywa6UXgCa zRx0a*`{KJPKo|2*;(P+ff7?3K&eSywWR<}5sO`cD-i=+^*E&ngvvt}jz?J+#Uz0wb z^4wg|>vt3Td5idT=<3#a^Hjv3izc-i&b7*!XNv<-n{%e$rp~c5vKCIU2N!dF--T6| z`;@<4lrI$N>xRtRbi`YSF`L&UkWW9z(T|SQiWZ(j#;CuHqEt6EjCjIY`l4Ti^tZxQ zFKOqD2d+5hs&Vmr49QYjC%Yen`R0ujWQRleOM4FDT=YerQRmgfqF2@zh~yZJjt-;c zvMgY!?`E({aOQ>S80!H%IwpzDv;O3Z5NZ>$|IzFKo(5XqmA8-xc8`3T|7T4fS+mI<`O+j{;Xj() zA;*?T*Ap#FVCY@^Hhg4#ZXI2rbH}c)V{~)ttOyGTect?-fLpdNyKiG~OMVP4# z6DYCCsL8M6|IxhPm+iuJQT+_fKWb}|#i}Tqkn*knXda{~M_Ey!QVqw6)s7PJf_FKC z4hlY?w&D^kYji$eFzuwdJNu{SA8uXTJ>F{ktPN>C9PBW(JL=JWP%s3b$11dUo0K3q zhwl3gy~_C7@FF~@IvcScU|al8PxJthlmwdJAN-Fdk6AfWSZCz8`8A)mHR}_Nx@X*S zn7v(P!Y{bYoh7}tR9q=sDt%&82Xq=_6;*-^qT@d|isN%w5T1(HeLGlMR?B=>-OA<7 z=2p~f3`j5NSs?Fh0^gIMT8;Z<)q@9wC9M9t4ewfAfiM;K;=cHJojA`&A8KAG=md$T z@FO>!3Xcb)PX%rtrYs-1Y1k31Sx5Y3)T86ODNRI2!u;$`9orJ95O5M=_EshyO@Ym*l4YYDUEj7V9anYNHz`D<*?Gau`iH$5<^*0)*?9HOvf9ZyQ7aDpmWr67&;=ou&U%M_w0HwCpw z++kt^s^}We7AN?@7rsT)=9zc(lnhcH`PkD%E0KD z$=y@Lcgo(R_DsL7;3y)JQ`9iL`K@c(YaGOPW*KYs;4& zvo@9pr7mj&-200)Vz+Jj(Bt)`<)h+IW$O3egFXK~cL8*DYBk1mvy{bxo1c;dotw^V zy=O&5A%&w2Y`-vT;_CTUqy0&HKXe6l48;5vIF_4`q9*#wlLN8y;e5`mpA1E{lIrqn zGtG2k;x3$ouo53ld`f@E>4d#B@{?Uj23tmb^wY`Hd5qNF2+fqf5$+?8S&3Z`bugHj zNemUXtuBCC!@3EzIj0US0xt7gdu>^6)|qka@3R4p1kc)k0oD+FN=vD@uHA=)+I{YP zZJiYRx$*onP~>a!M$KdVk8eMu?&to=@keM3kY4%y3aY(m{8OOFfiCn&sB_YP2N)v8 zZmU~P&2DQ>VPC>(M9?QmwXqsW0jsy_Ae{jbbsAmzQAK(%Vv6G0?o%})t-acA=!S%bnKQ@fL+1J{bgMt?)Q>&$c+WDHqO(3E+lkbtWb#!#2%>uSC*^% zf-u=Xu<9m|<`V7fLr~A_^M7N_e|p#=_czLQdP>aNcQ34TuD`x3;k>QLdt);`40=Gk z{%gie@uf6Oae>>SmcPODj=DEUQ;I^!^vq&u1wEC= z`XZPUD}8Y@t|=xrUAb7hyN3>&(l60^FrGe>DKY!-Cn|$D!_k$js}* zfAhV!+<~1kgYNG4d~zySa}Oz6A^Mzi3d9%K7^$2-=ISB4AMYF?($a353tcZMtH~Fh z!A)2MUtx@H-!-Slw)#c1>WCGiM=#9jtyGV$APQdP>{LGiC+;uH()G~xZ)N^`M`fH76 zIt=R@JVh9}@>p}Fr7w{FR;wJMRoad@>fEIoaA;YwxKs2``8QR4(lOi@4)pvG)gtUB zFL2B4YU>OJ_V%S%%w2-$$_LR!@(x!!hey^#GS^B+LdFUcwYJEWdPL`QQ=);2HFvlJ z1Lrk4a^1zGnzq_rKca$!ZavcfIh)fNorU!poNn+fyEannL%41O*X7O13!u{R9wjKf za}~;&&-RNRleHvpQv;M)sEmeOR}sbYN)`DAS3bw9Dl&Qd0vmU83k};#)u}xhaF24d zBh>FU?oyu<_SunrJbhF9r3QiY#V@R(H1O^KEZ!Kb+*WXZ@b#)@VgUXfk$eOak|hWv zt5EMVvk)N;@_VH8CMh#hR_lp;Q%x7IG6}O&b1wCZ`1PNEWv+3Q@8_x99f)DTO@Ni4 zn(M@up7ZwPL%(wUM$ns2REc0LbI4}1XELMDwGVHGSgjup*;*ro=0$po8>v-Q@vCdA7VxGmixqSlXrOIH(ll{US|+io1B7@D+`QQaa0Y zs~h{$U6`lx&hk8NT*XJ?SM3e^f!?Z(R*4AT&E8NJRu5eP7HjKOAed`@$$(x&X&^)vA6@FMvjH_5Jeqd0X=U=TcN#;pFe~1*6Hs z#|8ew`1D-FC-ggT3bGL4Wx|f>^LBLbx#RpX|41{r?YcQjLz2;Z_b6O6d`Pe5L}V#& zHfta*5-SzZjg~o=7%K;VUo!?u&xWOi)dw+dh9R3qIe9unoiw#L>#RSF6T78O60eiY zHywZKX?#Z13{_ZY)c`KcJIUtCHCh@gqTjA=giOtZIK*3IiVbtq{pNA~u5_Yfnap%t zV^P5_TN6Kw#-DU-JlKmI(jaP@0pc)+f6~>h&693U!)wQjrt%Iv&TBX8fX$`yMYYA5;inKyF7DBor|QLC=_*Sxog= zR|Rex=@dgy@wB;%?E2^`U zk-x%^=geN{riiiy*VNq=&|XY-I+veH%hy?+BvRbHF!;I2Za*&5*uDq4ulQM*QGM*^ z1+kuUm6>4+er)&=u8rW-YKA4uKCFV^1kL9!Tn1qa^BbF{ar_Nu<#T85!8M&g!s@q= zd76FT&7k_}vpepuwd(m?k952w`LkRU`^dayUyC+|&84X_-x?1ybTvB#ai5k0@{_Rz z;uq}#@iA*@R``)F{blIZ`>ZbR3}}o7p^Z!X3WF=*IpEHYShR?dU^ZB)*+#gSmRrrA ziq~HJTrl*>tWVwaGaxy+L=)(yP6fh~pp*E?zrFGl2K+tBK)&fESNY(o!4p~V9kfiK zcY@a9^ut+IuvB2ctUSuBco#J5BaJFevr|R7sz_(FVCb{C-IONVEdpP$D;ZSv3?o_n zqxWZxaq`N}pL2^YT8hMX7Pc&4qY}ZJ7Ds_*`f2chyBRXLc&SUhl%j;&&$~Ekui^Sk z&VVIct@)S|4vCpz&Uo?4cZLa^P4d@9O^P06aiu~ZGjgR}OASf&QL+kb;=Y;k=uxMC zwh<aL5{>|!WZnzlD-IrO+% zG1~5Z&y8JtAf$`;pbOP7ard8ysMIC3$j^8@RvysF-ds4?D>!dj&&?fV0eC&9L5jk> z{g{=YDarnlF|<}k(R2}&&#}Ye!fXZ!>dVstknC2vWqAei-g7+`La2oizj|$oi5Bt) z3-CO4fNxgs1L9iGM96?=$D2O+)Fr^Tiamq)sBRm{?{*e|1^SuKP6>)$GiZcaovg~M z=Jk4`^!oY=$w-tNBog4)1oxt{*3z5>h$payd$M5a zw#k-L%t@2k#V|wflvZV|ieixb3#1A?6xh5F@}++_@+8jx}}&-qsrFuznP;xSJTJldtnB zhu}}%sOtE{WcD;$`uQb#y29|jh43I_{=FaZb_ILSWcn1#{1`cVk3i4j%|T9s+yi$>?9Z4p9e{5R2oFmHn!% zi~5k#5RsbbMb}V@&Ec;74@qcv`>EWw^xxjr_b)8gd4{#cFjk+7zQ>}zRWJ;ReT05H zt*70Xl{*&wj|Nb;bi{~hd-fGLwtR2gK{KT-kl98V*IzjpXl4&0l@nH{#)Vvd*H4>Z zThr=XaBhK?OK^uNg$xq}qm6;FV#J}aQE?hw9jL_dfKdhQexJCtJ5H|@O%nT37dAKDL=)fO$5hwYR)Y{YYx zxUpB40Ul6|$ito*WhSedn!`p4acb+56tIh;t>&7YuFc=PkPzTh|rsN zkKz(hF@ZT$B4;p+nZxY7l=UdT6bBGG%d0_|} z0q3@389TMiYT-grD($2N=II{`s>Gm@KkA9O_%+_ z^hhD@V&<>W$R4!Zp#ZS9WAH>)A_M{|LCrh*11)ygd|S_&R|bk6?3r`2%j6n}h+Vnj zaD%rIew#sBzjrz1R)yzRkf}z`qd`o?MZu*a>dR7tu1s}NpgKOq3&I#4)2om+p4#cUs&?ZQ0dk;((R2n9cxzEa3U|)Py1F#wO z(^6U=@`NoYt%t5A3030(<@67Fu8>~}8#8e9=GAo7$PGI~-hJ=RcH#BH{2pya=$e`r?$!NMAqIg2tRO8I4|xQ zVLq{%JhY3F z5c5|B@Ztc*WfZox|ZT6vC?OPHnfvYF&b-|%qmR;(_;%UX8k`7_jwi5XGE9c z|4PGe73=IGDZD?W0rqajO@8P8s<%}O_2vP&*orCS^K7@}p+U^!z;OFb-@1F5JZ*G> zs5-B{Mp5yYU}Ee#`tG)!LppJ66KW&GQZa6+&S2Alv6 zEY!dwK?#3vEFT|7#VyFyv?R6RJ3ji;Rsm=CyCFjt?s-W0gWvKbw$0r8H2*;^rRC0GFD^FH0tv_u zQd9v57W@R3Xlurvk{6D-b_6U+j`7D5q6j%f$QF z@pV!6z&bzY2oYM!{^?FOU0kjpNvXr}ti=2d6(-hOQl;zAM1RuJst`h5OqBNtr>nF> zzZjy8-4^0@^)PZzmp{_~p9Fp@ppf!?ES{&f<~TsbNWRft^RpV@G|=Vg!_)5hP+zBEq*fk#aDn_(g)tZtPdEu@Jz$q!vY^%PvN%F*I z87>z#WHvxyH80P<{dCNLIsZud*6TFWSv(ItRAYy2z}^RA5zS)b|59eG+4m|hNjVQ9zXrmqUl24!D?c0S{$RS)ICW; zHG9Y7AD1NLsYyfW{M$H+2W3b}(T_2!;XKnMgXE15Ut2(t!^?7J4&P3KgOx18{S8ae zD!@eL#Tg%`7yR@goqvgsPB?Sc87Dh6QL`D@e$^+u{WBXLE`)5+m1s~>O-_K{w+c#0 zT9AK`XgA}Rz=A}i0AUIdo+Y%EBIYS8eK7rt_(v6?y~>LFQ&XtQ4dEsIW37;=rQb6M zMFNUb45EezK##e;LTa>fRn@<&PtCFGhED!Ow0&|8?8$Jtq-A?wxt%P}%F60rq3b!5 zh0b`c+4d#=Tzm3I!Gc9fVmucm%OR~dfiv3PZ{qjC?bbIwYB!FxMCKVQDaIcIb@rCk zr)R6U9JM5R&TDoi9ILhq=8Bn=H0g*9Is+U5w=H@cI$#B;_qq7Tno_D|w#Wm{6TSJE z2V>DNml`iWpE{eqx>hx|rzo}gSD^wLo6oE&_~3n9nlCBKh@`~)tCZbmuBzjH=)<6l zkJFSWD|{@5UkDJ|5R_%H@-Y)@+wlsRsbXuElt$k8k0u8=eddY|gPF~G@WOBV|3_mq z_(^kUKMplA@CD*QWRG6G61D}a)*>Ka^D;)Qh z!`ZL46b_DXujk|5%$|6f4h|)JvHUX8Qn+Zp-d*Yl&YXVP_cne2P&5Y!lf}K4nwdwo z>}_KwU#$=Qe9f>Cx&PFEjk*_qe^!mQ!<})!U4%k}(+l?0rL_Y)U*-Ca64!T83$t%7 zzCq-GgDOW*(z=+bK0r?2`|6#e^LuqLHM5%<4&7v z5X@lxFG88AzqlL7I|1Uw_=oVAUE{bf_Vru@DTna(>wVEjLE9}<&PDZIADtHzM+}#2 z;O6v@W5#xn7Oz6!^vrxgBqU5qs?ce6Uxra-S+0HOg-mK`s3Y@}3kK-i<+tYiJPnl# zOcfh4hB>9dG^d27dxjG2PT995dzKebS^*t*o)}_^z0E$+zMg?MkNaZ&PeC$`u6-f9 zuh!`#8VJq{DP+&QUfnFa1Pn~9B@c?c^cl6)VyeQ3da9z;t`EQvMNkwbuEkc#-_xq< zx4y)L#-|%sE#FhjnJogYbJ$uzMPdq6Z|SBcT^sf7d4Kss>J4v<+=Pv>G%$vhPc%Ty zIu&;LBjqIn2x@!N7;Opv9x&v}d3``jW88pa#;=XfFvdU4760IfskG8kOBd0_yZ8BzAUeRB1k>a_c2 zD@%pPw)#R5Q{bTff3`y--sYLYJ{A`7=I@OH(IUs_=lLxW%^(`A69w`3rJS zQqYqH0+NvA)n$oy)y9#_v&37hxWeM&PieL@iX`oS z?Af&|JVUWQXRzVXb(7^xu6gP&JrIy(X3$?N;2EZs9>n^b^yg>Pf}wwlL%bm0e>8s* z!X~Yf3(t9z6eTMJut$Z-@7^Qn)uNsdrn5^(ZM3lUEMP``jcdiY(r=|Xvnh@>vCmb0 zv5BueZ)9r&PMr16#ddA~qe=c+@Zv>4TljY)xXrAr2kcd`EusjX0qmZgs;_aQA}`J= z4l+qg)XP}!^Hc8b><6bQ)#=E5AZaQ8E^Pldj(bOY#9!M#b4wcTGqcH32*6cYToUXjKx9MRfU0`?dXrwOs*A6iQp7vgxK;j*pS0sa%D zkF)B(zo$}9`9fZL28oybqto3M5DUMH+ffR#OY89~oA_?leD4L~?JJbDNWiQ`pXl7C zOm9(&kx}4lMx9>GL;=&uvOex>XvD8RU+PK&`eM&UUp<@8c6ULu>VC|8eHYv=apZH<&cQrTJ-2fHXzSQ|47h>A)EA#m z_BfNuE+6LE;qUrzLb)WMQS1`3QUwI2_4vE?>vb~^j?soDaf z5sCI{iu5$4ubWHdtx$T!d%u7M^+|4@Xxj{4k3LHE z=D;U$o-y!USrfBmzmCWYdDDP%61u&i_@!ZglHjQ=kftui@$fy%RKC#%rTuZEcWfqh ztTktQ`>sF>3K{;MM?x=8E3Gp=`VEZy!j2wX_B6Os3+W=B0Fy^ew=z`m zdZ{C)a@Pz*mg$;ZmB12g-Vz?<>2Z7Mo^TUFr;3Ff+k3vTG?7mtyR+!4k3}dM^zBkF zcv>1w^Ttw*VBCuTXj;b@=ocs*rq^cR%I%6Go|&r(Z!eG0(xwDrGM>H^adQ3MQ+%o$ zvruo!$wz;yD8<-Kp4K?;gh`}nKvkX{wp(z!sd9$4K|b^G<&MjfNok8xGZzomkTLI^xF1@cY4Yz% zW#b~{F)O%G$q3*W$}o8Z&9}NXJ1HV5z}tI!U8<2ir!fMJsuHLKfjhsGvI7~9f4-Tv zrjr#}K}H281_tqQnG$PUy(eJzFd>VPF9?zGuO2Tv7;7mM6FD3Kmfisp<3cO5NngZkZIKYKsk7_M_)@edt`6^ zk(}j^<0I&Jt{&q^r%K&NDlNKJIo%1r)m#HS(YdeC6`Zc~)V#SI z@$pZJpboRmUuV(Hbj4p>!zCJL8W25*W^)soR57a(xoVbF^9tb~=?90U(7xg&mi+^L zj@TM<_y0Khjr#=j{y!Rvttjl*^IA^QH*@-K^k%?xo#k-Lk^i69LV02R3u61-(;Evd z@gqV9zQyP_@MBaYy!oA*Q`~F8=Pc@XE#D3%bE^bn>qkT1Gg9w1dCeU)bxuLND%tlQ zO5~=wG8w=g#Qz zfOfToNu7rqOU16Df{VofcH>obkgon}Un5qSYn3p^dlUmbi@pLLY~GL*lRg*VZ2WYy zh;5zDD_T%4=11O)0rz!vimne8;&>Ethl$e}U$U=-_f#2xou%AfVEVHHWf9$R#Xe(4=CZyoK33Zulm{%O#?lLHaoK1rcKfvJ4a|D(Ag& zmNV4u_h?8)RKYXUlpC_m#%Q{n)ye82t}EO`bWoWL#K zt1!{f%;A(}!pXsge`L5TkrKJ|9}TOpkBN#SRDxxgCPb$Fc~kCL-qb_+%O4jfA3|-h zrZ=g|BufdKp1ZcHZ&6W89JMMf;st)r9;E&FNip?UgUX|ERcU4Ar?YT;AY ziTc{oTLjH)vI{c4VG4`q^pW%=b?)Tx*gKhs&8ng%+-@K7)1h68ujLwWHea))`H*QE zb;>CMXW&|7Vm!K31ofv}P7%I*HIv$RrZH9Rh8OvN61ubq!k#12<-JXpxc~u%4*gyg zL!F&eCjTw5POrMo5n0vJMi;IEluzK6OvLL)G+*H$pFX+0TGY1@ANJ8hS+2qjmR#-64yUI(RkRqB6%SaMm?w7)RUY^Tr7Y>Y=bbOy-?`Ac zajc`*W+rV?x3JthX)dQ-@LpmP7$p{DzE*Fbbok)vqEd{smO7oH#gk`^<6{0tOD^&@af+HmqaN-hcZ0vDU6?%5T7h0dPr;E=4 zni#D4C+fYs-qIN^{i&oQ%s3~z&NdW29x{%-_2y64$ z^K-$~l4|~b0(L8M-+EnEL$C3B9A>MTYT@bO|!*$8~n6p!G%f!`kD zS!uq|ewvP}#{X{E3)XZ)ok}JtpWBgRwVqV{xFzozowV^x2%8ER(er zSx)$l?D^XI!mblA2Da6RfiT;}@5`;3ll+S--p@lBv52{dG*iN}o92(&H*ArH+gInT zpkNb7zN$5DsJ-&QuUV#ZmAD!5@J#6TR4947&VPV_f_MicOMR4zMWb-D|LlS=c`5_& z@uC9@gYjGUg!43Y$Io8KpjMiLN$SCR<#h$jZMrBPG=6e-weI&)zJ2Y zD+HFvc~*4u*}fqYdHPT9qB2>C8Lcv8(r6i9!50&p$9o+c^hp`V-v{{< zXr>sYbUh@svGZCxSk@#VlM64^N8|5-$f;D`Cqq-4fbU|={|V%A>0TOUBohCs`%M|{ z85Tym(l4m{!e#O`Q3Hf`^ShFYpj8HNCQ5SkQnnIrl|b*)Tz~1Rv^=Rys%eQV1dnlH z<7~t`uu1hxk@Km}bG#W$%)6ONeWo%Bzzs!IrhZ0~ceBZ&8LMJ($|d@H6#2`!6m}p! zKtvNtqhOWza8-Jm>n%`W=JiZ(0b6s|rN!hoJ-K4WY?q?hlvhpA2EVlhzkL*+EZ-w8X)?7^-j`fc&+_MKq$WnHi4-@Z$boUAJ7_tO+< zqSe2Dm%4k4>%T7R_MhY`oFh`SD}*N2{{f`qGe$)0%7k^k*yU%MtkSt@z6&OA$Cp1S z0TD{r8{l*Ep{3Q77x)-TbXybVM{d|0k6-f}9l^_SBB?i&p%P61z6vL_Ab`2R$aZ#5DB0S`9v zr%shsPnTFYh+Hj2EwqGt5WD7|Qzx$_+rCs3v`~f@G^ZDImcnd8YrCE2kO~@|@L>IY zG_ndfy=<=T@ZCw#pA@xORl@f2h1zMDjga<|QcHh#41eh!v9#iiM16Ay!F_F{1Y~w7 z%F*!ybzHbLCtE%>%b(v@I3lLU>)IbS`FAtAz_ammM0{BY@qpn4D9Yp8lL6ZwfVEd< z$%e;knae6$RnujF95XCoalBkP@AW8e(v5uasSYd06;xMMubG*v8>_faiBLBlHMw$U zF`VaF$4!{^ut%-J)x_2ZJw$6=fQ|KkH1dMkh!H#cYRjKf{9yMLy@Jb-BGF*#a*`fYP#iw&-V5>lR>c0Q%G=j&YhB>^$LLrg;c%KI8JXG2mcUgv z*(|j$uhi+*KW23Y+>;6`ze1VJ4duY!Yf|lFzNB_jmtoZ5%CcnnOR;jwH7SSoVklj& zw&dW=^}HrAmq@TT?6C;F2>Ffoq3elsljM;%2rM`!h0CoH6>g$lY4?>a2JXH6$v7oy zN&{?HgfnFU9oq5;Ei_@$J?750|pM15Gg_F7%{qGvY4Gf(+14IM` z{_oxo`@Cbvjy?N5_kCUGDfgtMDuf_gCvpw%_Wcrm;VGn-T8t`HQed(OXaUn(CG)Q92tGD3QRt?F3S%3HSgJ}7G2Ap}*6oDfGeUny|7 zo0Y_u4&fl&Lg(SB?5wn~mhFAVnJK7u$h*8jXId?fv2t)9^m88Unz3~6ph&q}InmU# z!*gJ2l&yyI-hVVl+)4a0LEBw?G$t?d2Aw3DLgvo~TwcjVmc?}>348!@L*GlhRSy+-Q z2K`kHg`7Qsu)da_g@5`82_0Ncyt}j}&Ylvh zpo9hyfqkgESE3#yVbwh0;MZauxy|eG$`%X29XLidve)?VnKnOFZENDOheXS<(~0}I zrMkS$O)|Z)pikWOjked1XG0w3t;;I@g5Pd$?)xeb%4by1jX{nWVp|m~L^SuLUnPa+ zb)8;3d`76N!#O(8C8v>=UD4Tzp?|mwvsH}co{bS>t-r`_12@4*a|eNnx~{JWR=RgP z#cpl`Uichr+${tctaz^7ZLQnb)zZuSD_)n?0VCOe^Xe~sEbo6D+xNPHgC9Mta?s4j zw-eub&7*ds34%g3FMXqAZr+=R{dvr?6m(6^?;iJK_xC$a8|sov;^q&U;N>P?Dq zHDy5KyCTn@Cly1YjJXfP%5FGOweWoq{5UkyzLr4c96V2Z7$%c7>yMKEV|a%#yEV(^ zkwwT{Ofa}hLDx&z7CzbF+u!pgNH5h=WfxsFf_PQ&=BXKQV0Rt<1?J zY|NHYlmD;CpMr3^;a(Mdl!y7-55mfmBtK#0LC^D%zskgQX8QzH_nMAPV}`xdtzXB< z6jgm3WUW@KLS`XlE%ObNW}QY2whAR37z<9ded`x+E0%ZGKLKu0jt)Z39AwHEizj~V zcpe`=5!~7)G#RXjHn!mvStjl(md7^ zHscl)bhONkOv#8NKb5fd?kxoSa!np9IWk&lIB~{btuX0ZETOr4Lf@0QO@E1hZ_uMq zt*zM+?#9o1By7=)XC_$Fw`6Iie|&TA`5HB|T0g`;&PVIj@+17XM`;mT~8 z4S(^s)%(I@LNNnGwfsPpD>dUH_kKPilNAG=2egdY+e0<}a_w3AON*%UUBC9Tz7=Al zC});iVqM`a3p7KtnTp5R5VV~B@A+vcFsExb=d)u{oG?$p{o)NFLjI!>KLz#lD&|$w z6Sd50(ru;6ErRL1`%3<xj8$zE{OzlHw2=#SR}jR%gB!_x(uzp}kqVgy;c8v8eMg za7dT>gXT+W02CQ#JA@0C;jJF*HflRVg~fGrKIgakW#=+WwOP010v8c{1eIPk@H3NV zgDwHOo{BA|y2*5%6s6vjQT4zt#tVG2+rs!ky7a#B5=34;NGapH7eqC@bV58`kIRS2 z_&yV!sET%64e)94#2rvEU0@X z5%H1%Tj^T^8e_$lU@LEstc7OwE04r`kWt4j7H!rP2Ipj^^dl&19O&es%F5C)4@@tp zwgrcFDmhb&GH<=MSL}0HTGLxob^}au&jGW?TdnhZv_gE|m0vLu2CVV+*$W?YG+^ zeD7A&DMLM5d5+!>3%AAI{svdp7N#5eiCZBpM*jF2T$uJ+1^D66J|W@fEZ=kI{0%4Z z`J4H}f-xQS&z*gXr~ac6Ni@IEMz_?d03w9{=_I~y^rl1s62+zdQd_V$9gufz=OS%1 zN!bP^jfuhe{*P{0>=g|zUwKnkGCuRE@cra6j;`aP=vXuQfUxviRK0*I7tbNad=o5x zc-IPja=p;nf?-Qt!Q~OWapU+pFrpSLo}K^4cJr{ z?6dpPtb&lcOZ%PH)`6^(?w!WK#?S@4#6&0Qa;ki!tU{4dLh8{C9Jx>mOf<7|*$Bo& zN83MSz9S#GV;Y`CZxvFx5^Z54<4oSqqw% zB3%5%iOGjk219hi*dgwSxG)ju3{9RE2ctRj8CnKl*c>Vno`bM`i%_Q}sV3dM6EYVT z-D&BeCCTpTXrTKhKJ=lu5Yf>c+uKrpm)uF*5;AMw*2*!V)Jmb4dF)Y~f;2o{{1z6> zY*c1F&gz;1v3Web3ri;?0j_|k!GRojx5MD8eR+YGx0yq{{N~gIEfCF@*OGZDX7QIr z_X3BoC6VpQWAMyeM|bC@5f!Q1dv{pY^Z`k8OKb#FQqkux6CJa`f8acSquP zDqH8{cg4T&B{OmiyrZofU0#j}?hZ>uAM2~eP{X`6gaTAC>I4V<`AuK$IC4Mwovxvv zkg&2*cNinT$yo&~M7^Qr5>cu0eBzX|2o=v(I*D+fZ|)w&gcr^W({G~`!02Mp{35Nl zj?N&HHm+hkc_%!MfA2AVL$o98D(pdA#4Uauq5F`V(S*1Mm-e8Q%#4mdz^aOs!K&k> zkU)ik9`7xBtTn%TtPb(E%tl>| z(#H$`(cDKdhJI(UJHFlgMMn7ke>9}+*Pc|G6F6v-`uO!QBr!+uKN?~cUqOZl?`?1W zdgyo+n|0%z&7m)V>@Dc~{KP=MgN_yBuGkm{1(%{NY+sL;AozBY`fcL#-?FnlqfDvq zDIU^-YB7>b4>zCmSBA^h9~4@vql@(uRCme)Fndu+K4~}+gC{Z~(@xH*5S`N@*<)?_ z8(cStcsr4@aOd-!`RURqul1V;N>m-^P>D0PO8!roMpE)B%C@j@WbwJTdEc#ZOj`E$ zoY(I5N#4>**4!Ivi3j_(M1f;{Ba4H0-cgI@Kb93yJt^GW@34!0f}|I?spxTQ@P%t! z0_wcXkdZC*k!9naR$I-xU0AB@m-J1MLinaqM<7WdsxWo|RqGV1S@Mc^?lwv*iCTkS z6`QO0C#n^`7iPJBdN?aJ#wH}A{xUX%V{TQq;$jURf73Bh(mkls_77cYDrb?_WO9EK zHft3t43m_%14S`H)rJ8FF-4L3xXO7N?v9yvE9dT z1@z?TWbjyLV7P=u^YcwlYShK6rw}#+Al5kIyGlrUn@bNeK#2ZdHgOm+2XFu9$>ze+ zVXZE1b1We{as>gLE}*?uMnDRErF5K69#YN9^vLu`C+qu%JWyV9&Nye&<~CtD&gL~& z2vUgOqWLSSBbXLU$I?sNM^J2AJX9U@2rJ2r0(Nz-cUEGCdFjE<7epcQhTsB&KdG$*}-&gJ^h$M?V?u{c@MNkd*nds8@ng0K*cxnUP?D3g!7e{ z<=X}Vec=P?_rP2mm(v9W9p=35M) z1#_R5%!wQ3It1UP7mF3Ya;r(t6wu8{3M>bX<&^WhichbzC;WQv`Qf>jj1c)(4SG+y zn7WB@jOIDGuoy3!iv5|eO#ahr7dm_4kPNs$*!aWuHR!UjDFvuiCFU%f*+Kj^a|NPK zbW#eHZe3{lcsW4=86EoAV36(td8T=x4{6k*m+qm>^VS1E{hxsk&=^D39A;3l3F$-l zn%)qGe1jUf&_OragjFxk-Wn75RQSlyFA7u|U!<*``{A`OcQpE`QfqePqw|VF?BI{c-8v~Fu#zIhg(&Mx2&zu#+Y&)^J+UY3JEHjfNvT=p)Ff*5o@h1 zPE=3&Ki-F2)6OTsK{L`IrSv)bW!2z4VbBz$%hm)19}^m)(gsN8!_RNz2SkTRD4Nn{73`I}qBa(%Sq? zNPWL(3ja+ymej>8R(5vZ31go)4VzY(*ObKH`jra3aiZfOIuJKz%;zTJ%f>?_?uEC; zTlw(s`G~F`yyE{c;KUXQ|NK{@`Qx5!=UM&xFKPCU*wfw8aTt7O|15EL?~!KGm$T<$ za!L{-$(PO=M3tGwJiGR>RTaFI_NmGh#bue2((ex-QAWCoUs9Lrb=_<&UXNIP4=vKm z&vZ@m-NM%BpL;#3T>BZGEYS8D=ANuec8o6owlKA5~bs0fAOwf00W#m_s ztmOU~W&QA7q3Bbc-A}<~$@NN4?pOW3TsYg$e*KZqVCcnfJB?>QVIMzLLSJzD9hGVa z9;HGA%vB_eEmup)Xjclv9r&OWvJPVso(v1=iPfXCp}C$QG`wo zT%YEwvz-v;FeNZP*g4hc+K*X$ik=IFs((=+g*Z9%Z$=xc8OS?Z<{Wi@<&aDK*JN?@ z7@DY4R&ef~onc4WTYTeN|01j{arWeKvF6I*&Y`hT7(q8N5TMsOk+hViEfJf)CS?Dm z1hud)f4R8P&2AeVsw)86`f^^VATuJWLD&+~zOd!jj+fBY?4#ZrYDKe6FQ$_rZfd9n zy1;HBU`WV#>!r+9sJZY|bVHp^P%ZB=iq4(sMlVZmHRv@pU!*21f1YbXPk(id$VowP zHzNlDj?w-Wg>+Lc4`e&+bC)6{BrU9vFa_FX2EQzfCr#A7GGH}Z9*pR2dkNQ1%bzTd zrMOiuDC2>B+J`J!I55%pys`$FuAJ|qJf#**ftk1hZc})8)FjSv#o%^m3$5)56BVbX zDvJm?<}WG7nYOyIx&x%3-hmb{kX}moE3M!p-RE8|t?0sYWPT@{KwAiRg~&9Ya|gxr z0KVI->m|x{#OgZqaR(`{AZ2zW$j!U8PhFi;3kqv@)$&Ds}b1LbGq6Z!tl3*Dz-J!i2IAcK!?gJDgf-3=IS^VOGe6pJitb~uxSVg%RviR{gy z`_a<)1s-F%hgK`1+E9OnQT;QWRGYRtI`yHYkpLA7oL5Ve<;ZR{A2n=j2@P!(U223D z2n`0#GyAf(K2fpzkEYnSeyRGM?$A>^A>CkOcKF942YMT(R(_dF<=*gj44$uoD>EN7 zTGnJ7EVnk5GPeAN8b7L{rgkI;?JZr-tJ{Sx4H`>uf49C*))B|#UVW{xSD1ALSEM>l z|CmaCD|T$h_tYm!$I4`k3H%B;(RWFIjI2R-@XB911OR#u%DCQ#nU@uh=x%d6vk=E9 zL*s!M^-d@PXia{h%Ta*-S&2LlXvkPc3#;xQpq|EX=glA9=TLpyLNJb~}Rum5AB)no{lM?`02J{H^1ygV+jqR@D zG~!a!+ZQPEkXI{};BrO5ra{zM7uX=3BxZd$pR@SyQj>4hY!rE`L32>tasjunkNuSD z@UB!Ny7OZXPv*DF5-o41JbuFWlb(pC$OYEDhS9kfbbb8WDbnqyc5F~ADYEKk}p>E(Wmxh(Tu+M!=zzlsh?9apP*zoJz{)r?+ zCN~&t`$Q@irCL0%yWHAhEz=^`m+BD&n<)SK#+_Hv279c>jrcSdii~B9EDSx1`6np% zkWi}5aws%~$Eu~0Vg~4|O$i-S2hGt>qMO4E-l|Hx$gs+qZ-ITQkV1o8;qdFbJd0*N z>X~DUcY9l$3`MR~v~;N)nU=9t?4h||Q&OIO53AhncArd=_^VV7yF`Ff(?|;g17=&` zmrHue^7E5$C})SlZ#B<{5|S{v=Ayj2}VOAyJ1rc1n{;wk@Kq6)e^)87yGqYHY+WVaNfF}P6+(t%vN@su!xAjcqM;DaxStb z1+}CMiDr*!i`Bge872`{_Z=*xDVnV{3$N8V7XPCO)ch_1Ts#)PLUUD?U>kU?l`hx9 zzZZ(KP;4eHWQxIZXq)meKafh|Cz?ji6vR`h#vFQ#if@;p~^PZRT$}3IlrtqNLnUu3_nVC zPfYc5z-n!OJwP8!91oq0m`rL&-yjlz(zX~cSf(|?$Gk185ApKSkAOv4tt;Juc8EMj z>Wg`*=txU_9_O`tQ z|JdHNRM_lWdqm!!yt^stA$kF}lwbJEeaf5N4nHFQuJ=}r-AN!NBLCL;iax55`amF^ zM)hIumep)=ki!<_2h~QwQm|QsqSba5e3fo&S%*l6ddB0%cEb##>8f?4V9D-au_Ar_ zk)6=Tqmadc;7a${L^*w3gWUCg%)%et>p77~l*Vz0`L)@049d(##$JxSu+YP7_sJVX z(0QiSk8~+7Kdm|0tRnu0B9M8fOFBn@gm3?Z4uZymqm+$C6a+Y|KF$~Ij!0w~Hh6uo zjtgxRL)SAz`OgkcGMOb!p#kprblcyJ^r3Q*tvtHz$EQWuXs3`p!R(sH$ zr#?2nh>70(?9@~?`QR1QJv?FWAa$nC(p!ml(*<<+>y#Aro*D{$gK`b39i01Mhu|Cl z4o?48JdH7{*czV8Pb)h%4C5#eb+7F&`)X8wQllhqZqG*fgv;8xNyxSXKB(f~UB9G& z?Ws*;+lh>9(KnmNsUK3ar5^lsbw#hOHO`yN0j`)I15yxq5W?^QynaXdWwjUR<9^69 z-hW1@#|eQM^tNZUMCA1+vpKV1-(wjS39pYmUq8I8I!|A7e>=!7RVtWrpj8`RtN&cg zvC=NAEXI#AKUJi&8|70*g(&2m%Nbly2X0M8;g691y^H(<9)KhT&?@NX?ZMdC6}ypS zdYm+C>1>Ur&Ip`eAz0?f`**0pGeMbTEld3#ef~23rb8(?v-RW4z5?Rm+wYEaQ*XLX z-h3eD`a$Ky<*$(@`E2#uxh?CvstR?AUsEM$*R=DM)SWOfg_wS^M=I<_)?T}bi5qp~ zW25m3%N+Gj&yiKyV-0dox$18L9^cJh99u+=Qy#q5TIr}$$L7@uYitb4N6eP-Rm)N0 z1coeNU>`Y7e3~Scq}7RObj>y=u1eIum>s?xIVLpwS5HS|Y7VGUD0IKw)Pu-Pn3h90 zyHUK&Q%sxHlFRQe4hUUV@5-Mm*sd7MtZpA>&_I0iV}$*oPordUX_nehu2%(na=eM4 z>Bw(>MgR3gQ-HVkFIa-Qh}Tm(b{>^MuoZLmLUO6C3uN%#CM}<&yA2g=#0KdV0tSbi z9BTt2Ys6u*LwbBiQH{oHOX~jp>c@G~uBo_MKcKlmqySs>VOoJYpEBn z4!l4z%MOg;oR}a>0XM*S8!5s)dOqHGXP?XJ5|YY!KC~zakjQ=B=3O3;Fu$qvC8qEq zJ*KM#f%43noJy4_g%8Tv0GRh4P1xKcZefH1F8IzGfH?>^Wu&c%mkR=L0`t9k<`?rt$9bfx90^v_Ij zwg4Fn=au`ReY-;RtX5hKlg+^Fr_DmDU3UDYPD1KTCaSM4nV?NW=q&CDGZZ*&(v?`l zCybsJZ@BmfoSQKvi^eWLuI5_2urbnLzj+iL7Hj;lo!<@+752d94s^CkA@!p{Kc!o3 zN>s9yUkpG?3XO?+Tix*uQzLUM4ZWkFN523a&@&5_obm6036?l)><((-pr^cO*qR=x7@ zyjn4h8Fs;vEH8$FW9}o9Vmh^s9~Y zREgJ`T+uz^2rr*dn&dUD@N64EAAFMJy|@(sNA87Umj(NlJ%ZZnAc&gRYnp)Atjh~c zVJa%$q$8G5A!2hry7nIk7MB^cau71QHFRyWtU#Z8Pi|)SZxz$rEB)$W)pDMe zbtrZfD`;A%;SCy7UtHvsr}84!RP=2nRRCq;7N7p=iB>iJ{B&V@(Z0|hSl||<_F&G> z%A*Tb3B4`e*5oLA>>hpX`Q7DrO;Wmx938OoIBmLdUb~d~_hF!-uHjv$rGqiS7>|sD zQ;k^QJ2%bmNI@BCGM_ZGmgto<^qH1^9nuZ3jtL&MjvT+&K3ya`EH_wnF->?1dnu=V zyA^XTm%*OqIx{Tn(SCf_7T}VT?>A5V-)Q&@F6Ro=?SC%);+Oxay~S7fAksg}*z+7rCGkDSZTL&kW84_R2U#1>=6J2wvtIPZvvABzm?DND7S%&6XGw!!4 zN^-i@)pnsnXdOkQ`Yg=MO0DD;OrwkH3-gBn$FR@-O}6i zaSfcF7|xE|?5kEuoi?!Anwajs`BLfOAAX=_56x0dy`#~@w%zyp&kkAmxAaM9ASdpcC|+Pd<@7}teepy{A@ zoH9XiPN3Q*iJRn`zNEIquNGx8EWj$KDtf-yrxmJ9;fU!*@{wH<{0Vjy$&x|aD3!i- z+VNwHB^ySq}ZX(ar_C2$zzcN2fst0gXfn)$4ekDgVUEvB7BjvJpKP?SG z42=4hJ;yf**ZxkUNbhK!QsK@;x#I3^Dh2N$xPC@bnqPqZ7F*3)>);KvQ^x$s{{6 zPEtn3B!OJ#%YN|m*dsfOd+bU~>7S6)(6PBiA#Q^}`)n7suqQD_zRFAM8Jw~pR9OhR zBnm-29FH&cwK7ykNJk>~LuNVh+kA@=IXFy~&=eG%3%wMPW3LT)pKD8F>mrky@gL>J}EW>;=-R=6n@&VDOjRQ4knV zcs*)mp5GdtDUwRNFvJ}^0;}ekYb(^uXizJlt#Q;%yy0Kk8wMO zdOaUo3Ae#6ea1<(N_*Y$McLzrM*}RfcSsJRWpU86j;$c*S)Oz7BGiyrzwJ^cGLst9 z+MxZf!QX2BQ>FGHM47mFCq7A3jNzcOV=49Nw9_=HrOcl(xsa#1RQ2zM3X63z`?i#J zSnkquuSEW04xBef?Q_4Gu;t=^V75~)rX*fqdAEVie%+;!k+JIb!WWkLzN*o>a#B$> z8`(NiOkKdOi&*0OKbbT5K2ptRdy^{Z#Z#{ zno0nNFG%~85c|QD|7cXoV{KH3f5m=Z_dcqx;TmUa(v9^Jt{V1`a)poPoO2q#K5r~z z_nhKH@?$>k2{$OO%zzXVHjhhAKL7O)?hG1sn6EG%s~+}@u!$JdHo9FViC|j!P}Tdm zi##;sqChnz5AST523GZcd3wlGaV6$ebe+YRQ0&xT2<%AgK4s5WzA6TQvxIR6?ZL44 zA3T|#Zp=e&L-GfMmz4zZOLcMd&dmN{ao0+f4EcjTpI0`-2i3A48;J0%VU43Jv53gDV=*UX;-KzODMC0ElJqqD#r>cYBkofXB#viU=j9+w zbg!&sql?b9js=rkh#Z8^Dpl`lskhxg`-n72BSGd_*@_q_2}jUep2D4(2MPl)WI5XHe9u?3 zGp}`=)v*Y7Wag2OMRUtw;JVd7`a=nD5hwsu;$ZSmkiAB+s)xs%Eu_O%p+#uQw<@57 z1{RRzZgYBtRvOoWq>)0~6_(;3T$xyuBJ;Po-JA4^j%U0}&x=NA3C7#V8r=hWGZaAQ z{wii(b1LxVbK?_Iwa(#FV$H{!OpTTQmGlmvhWz=@%3WZzPseJfeCYDtR#7hVcq_aa zfGM!cFJE<+W~h(GPhtDMs;jBlI~5g{FywxdUhG^kFleyBv)MByzn^~R_ggE$-0b_=w% z=QFXun5^|qYBzVbVS?6*hB}OP=Q3U^DJtF;&@T z^qUmE0WK`curPl>N~tzl!9UQP$`W6jRQQ(Mdgss3K1;!qR+j868xCUBvhXv?P05No z{WW#v?}wHSDg-)3w&k$3&bM3YU&qhyG+gQ7)EZmpkjZfXd}I5*5^t~(k?o_vC)4T= zoyRuT^gPO2-Iu|<&yGM>@@03iflbNdv%hOvW1^wY1Ss_Fp%8aQ@?x&Y|(C+UG_W)O@1)9**ZL z$oF5}xn*G)J^{2J-R>MI&n58J??@|Q^2y#5TAq8goLz#A`$n?5XVg?OtO4yfHjd?uzL*CF%2Fsl_vq=h?d{U=FYM#mWoNgmsK6=FZUN1Yi^or` zzCN{P6iybXxE8RP^`p0WKvejbb#jAL-kc%Azb!gV%R}oaH^zWvn>T%ciu~@+T9~~R z2C``o8F%j1dGQW4k4zaa)#cweiJR>joP+2I1LD#hPr35cI7IK;)I6GCni|Ux2362x zSkV)SmLXS<)p-nR2GzRmXNU;7D!K!|m9m%z!e$`b*?58#d! zTC^Y1AUg4i;~)69k;GxOo{pK3wm=(is+m< zS8hov(2CW$BplwHrO7%sXry4KhWQzMO=DtVRNY?sd3JbD)_r5NjW{@^%3Iqv;=T7Z-q?6_(Ye`{USjloJ*g=NasUR2TZY227Am?JvbA32?}i-6_i%`ch8-^iZ`l6iDPei(Zq)@+nnuj`We-25->2}jtGy) zuFCv(S1?+-<}rgur+J`;X<0o2Zz2igikD-kRnFVx02PssOXLrT-9ReWcHoo>43oLp(d! z3G_!?mFYEOf_xEkM@Snep~zb;=ULx67stKYTxg7sH{1)S?uZ&3KOG^!%JFay1tw>>Tj z{w`UvQHSPQz#GNum->}E4>(WCC`l)AfD4c5?K|IG zH`LxwlFsjxoq`fNgn#GR@U&kPB{`E0mF?F9eKcG~gNCY8I&Zf2=gV1|bYIOhcI(?Y z0(rL?sx&u=*bPJUb+&hRDxFf7egj0c|LF9!eV)^PE1F!x0a#hLdg7D2oXQvC^NlSt z>eZva@=SN`(ledtS`U=E&;FH3YqgZzkeNHXTK6ERs7&+l?oH$FgWwEhO`e87+aEzV z6_x5wl~H!1@$n}DXKJS@pRYcXV-b8_mnvQ?j5KhjeEOyHYaaN19P@V96h;Euc3{sf z=bUB>fDva8D$14FDje+Lke6$niZ2OmXe$(@mh2|yI2j*>zN31FK&8e|}H5>DnUtauK>;#&U6Bk1*M%jI% z=&Zb3NqFDQ3#o3KcH}PzE)5pWPjR6O0ht~r?+=|h$8CahUh5W% zjsT+@b&2G1POvENso zsbua&O4gLJtH3|idvlUq9mC;W&1;ve%v!fQMK`Zlr7Fp@v4~^g60L+#nUJ11-*@+J ze#pz8c!z^uuPCJ5EC@unxK?wR!=!H?UhSZ(mMw;vi{q`&*zQ%JiSHLu1X7Y@+t0En zvTfk<0^VM)@O5E9vK?JX)csdEx}G&@v?`>LW@3?9S6jAD#om83W<=L~3sm^!Yeeil zqHG^~!PSB8CjmQGYgBh=G50)o_0+aZ(QDivSnjvnD^+Kzb>hRHTDVqCG;=H8L+GyY z{NwHAD)3FOQI za4oyJ_&G38EsiES&{S>)<-@Xwck;nImArB4hXz{t$&!-1 z2A;4gsF1Z%aZ3x+5?QH1oolME6y|1C2eTINyYfynLR@?O{(MR}D>EOx6oA%Taf`6(l#RqN zUk_n(Hsd#W6*q})=Wev~nyT22MxrIgm2uEZesl2_Pnums(v6_g^Fi%=qw-^giI_EYO-N|VVD>E8hdcnIt?J#K zp=)$W~{T5N54p&kdp+AG>0cBa6pMkp6{xD`(Y4BnCk>{J(Ln-TJXU%g-U01J()kaT{ zjbOA6){xSDR)4+V;ynOk3L&*C4Bjzx$;vPmSp}w%tWO43_&YCHV-86j2ikVZ#4 z`a_o=9%#R+J!O|ezxigQ^KB88;F=S1BXSmGQTPFBQ4-wQB5oI zEYWj|3T-S9`N=bKP^)U@|Eu$R&D!s-)4%TS-%i?AvWBchJW~wX)(%d&d0xi>lx;Gm zoyyBckHtB#oY;Str<}ggs;C6tIH=Tk{I zcd{UO9^X6%u_x213k|vf9R`;@>om;~tNF}1J#l(gAp^SNgd!wPD!Eo|zra=GE~=J| zk#Z@b;E*8?jY*O_Yv!q78jP7Tl-WrdZ&|M!0V!?+k5f~j+1S0!iK?Oj&-j;XX|ig_+e0YPO~mFSWPPs+$Aye423zL7+7@3zQEV3#^WD z=2?5o;vdaiVmpa6KdUw9Y(>ZxH9g`--w=iiniYQK%iPamxYrhZ@b{7xewVH#Lbffm zRE{;8A|%M?EGJIjrs&ACA9-Nx@Nr(MPu@JZ*=&$UQczVllh(z=nAOy@ zWf?7V&!)+lR*h4#_ejz>4$lVGE zfaRmD|LB6|o%LQ+ueXO9VBTfl>PraOE+YyLBy}?-2%bjUPs}dZiUkepQfKxr7T?yF z+ONdJPho8lv-!;f46LcKgE!}kFS6k474YRU5lLW$I=aC*%qXfx5Y8E&2OChbC3UJC zD=|J|Mp%#lBncC?%j!l>Ye5|_G1g%{by#Tk2t=`aVo({{hC>r?4Ucq$2nPf`D35FE z9A|+*hX5j)`0qR+7@NNu(G6B+1)2xq`{G>GdE?>Y((AFhUwcjvL3vcIc01RA1wW=l zh#~L04}Cn0w|S39Jg4Q!X3w964@^}&ZFY`_?>(x;gv2{DzZK}H4cxWU7gr6H@hicLd5~b$94PIIe zVehq3-Y(5TXZHFy)|;gDl7#bQh}6=N;GT7%b7-p^@OtFJW)ag@w7}MRae5?KR@q~x z4u$%#Y_(ZX!C$aw--TVyL6+ALKjPN<(;Vi1rVj5`oMC+0>~N2C@*L{0UElmKil`S^ zOAg`r)-3Y+!P3^KK49q~KTJ6WP_f?I#Z?(3+MSpK+IeqdSQKAE z_T*G{YI{`#61DBk!!P-iRtHVhc)RTGRckqBCshTPI$r%w_#_Jo@3F zK@&Vj(6#&Z(r*Lx534M%%TwSVbx$To)jJxn$U66uhfzk%Hu>c)gM8O>ElH7|QRU?t z`NwvMc;1`+uAx*kxEwI|)4rbR51V;6f#Msh80Tppjh*Zas*2!+J26Dq(s-^-pC`(M zWNo!MHyed};5Dr>TRh8vkM)x!6bn7Rx5~IX2jy&BDlL(Zj8k?FAK<95?Qh-!^!4<< z3_A?T?1tS5{0jHD>#2)etRF} zng6mG3p!$*MfC_zm>!Awj_0elA zm_0lFZfmvkVAL?@=t5JJzah%fD5XdZQLG{ZwQGIA8lB$NRst^h<-oAu1fxa1c`kn| z#29n1eTdMK3+cpJLFhBg%x&JE)JtS38!} zU00qd3x}!5hnJPgX(+1%<`)p(2RbqEeht8)?!6-lT)}~zZlIxFroin8{VVXU7ShvW zfZJumYlgM*XX;N8`Qn5)O@1qH(^YiMrCpr^YBZt2eB_pLg}=_$A2o;((b4qb1sC z&Q;K%t#9tl{i;$k%A_A%(}WXW10x@d8=|~StV9Z=VTFVB!2Ib8x5<@C3ypyz(me0K zED1JJT>^vxb)tY{B|wiiSy-eQ=qx{P0!u@w#c3(F2&8I7%&dV-DJd`~mTUbz-s*`$ zp+AJxY+M({^ne7rf-*sI=U|a6UEc4PVFlawL%VI>3aicFat5Mi@CfAo5r3hiRv7g? zT!WTgVh170ONnAZu5UupXh{)EhgCt9&@VyzZ=8XrqW0bUmXgIow{ZU=k?m$ft;2Iz zYxNXrRsGhjL*AaxLR(4+?ZL;AI)jMS3XK4q;nuL1F8_B}rB9Gyp#c0w)ixmWl(W}y zgS(pT75%~^yb%8b;6LI6{ocCuKit|KmmRzNT$f@f1XSKzGVK@FV8rL2(LGwhv%+D) z>%GI8Ehv*{!h^00qauG5vGT@Zt0BATGp{OR+7vdzI5>TKf4`^+QUnaIJG|vnS;A6u z(Aj)Dyvpqewr~4t>2AMYf_{8WgJsZwyh%c(8f0O2La0sJBH#2WQR6c8!FZM_m#jwc zBx~}BYCB(=jBU2MEg#Pw{~wLQv%ug|?$T6yTxM5A`nS5~^X|AC#Q7rs;~Uda1*XN8 z=K15kg^Oh-2U}$Ku)pNdB+b^c1;#TG#tmvL#u!S8j?mgu^Fm%yPIFQm*usGoa|&c^|Uej|LjoNbWVBD^-U$_1QU~G92h*TF8vO|;N96TUwITxYUf!Br+lhC z%UYJN5ZY5&H$B+gcXt;^G`T5cq-#w4248WowBfY5^5BT?%#r&xcU^qEOsisRf9Ldc zv^|p35BlS;JHHOtY3p(h>U%~u$2!_8+B>4?)n39p{Nthco=i)j(;SKLarn`+WUGPQ zi&n9BOW{In14*8DgoB&)#Dc_IVdA%-eZkgu8*~2N;9ZQp(c1n6cOhwf^u~D)TX)yq z$kQz)hn*Coa+V`mQ1q=|8Cp@%w$dHcdjNZNY(P5HuC+g(F0)6)^)v|V{}bqwr+k`< z8Wresyt*h$JVf7=*{=06nux_O7lw8%CyIW;1DiU*DxoRgU>!+6KKrG3pMk3G0#5&M zH&uzAG~5;K%HoR_6~AI8Fr$0c^+ft+R9ToYN*{IIuVVUhj=XA&$Co%zb?niqx!~s= zo$EtBVKOK&p6%Bp7sT$b_f95@x78aP=fPxOz6Nftj4>XLQYBgpT)BV&n|zsG4TX=- zk~!wBVaSFv8CJjqB~Y$zS5<;obu@UGl@0HsJ;_M3T`fbd7LanD#WmS#zu7iND~Wzf z5d`^z)hDV9!P76tqU}byt4!&*6DEnjF8WGkY)6)jbe^~!H{xYj^yT@`oT~~!!~;}o zRzB&rhe*Ov@CWm7!s~2(U;cS{@Wx1MMOpD%D*q*7TA zmup;q&?7Zc4!+RI6&4~5ibmfwBiM@D(ew6p@#tg^$Wf0?rqb=MOBtDiEDBgjB|&wE z2Ju7?+=E1DQuZV0_F7jd7C!5%znD3_Te1Ic#zLsKT|a=xH&q}s9XOlAr>sH*E(dA` zMjVGb6LJ8L%wL+8@j;3uo&>qBGug3L-(RFsY+=d4?MmtzM9-l6e}oy)eA<8kSiblI zB8jVd0kf`3#^9^A8x?iN@Z@*J^Kw0KWx z^U)FP-6T&Mqzx8>v3ss@MfTV2K@T~6z2Hh-g(h;rZQ)cC`kXCa1Jg#5Zt1;_!IjJd z!Oo&;A#Eon$7ooz9ChDq+SwcGO%@b~6(Vev6$|-!Z0-kRjEUp`U1Ei`@PQsUNH6~8 zd}YPuDrMxm+uvOlUddMT*66xCBNQG-;W!jR6V1k`MNf@!pq#$N-E7QgpA9eNCi@+c z0++`V)Nb)wKuBCorSmX%c`mHVS2)3XRm!jXyJGmPBf_%grs+Q& z>wivEKP;DCEeDJ{WDsIf4u9^iyC(iAdg9F&@tobt=xxaxHXHsPU_`I5<*ZK|*(OKef zO~z@X*LoK-N;Y=IB&g%dZ61p@CHVR{9N75D+306KELZe-?sNU*!9Na5JpTYcACv25 zNa9_ytC=abWt=JWP7gnSGvxyNROQSFN87L)`nq%D>T>ioH(V65|R#)WvH)D2Yhdr9O9NBSs5y=D19CCfoSnF!=^@&3Lw0>qm4Ui{sv0?B$fCFDn)hStrl`BlT{7$HTCo7XJx;YuDc^&&5E>x<{ zXN;ViB<0za?wCJ?FfwEDU7D4snR89Iqc`*jvpeswkUr(mC}u*@PuzwwL8i;L3J7$D zNF)+K#4f^+<Ok_o&kuVti9i1FK9PB-v z3@uPm3A0>!2QO4ey%mw@B#e_=6vj`nZIf&OFn!CHK!S%yTho$pJD4MDX9LqEQakux zLq+~2vVT-FHXDtkV9Sn^(bgNce_}QPGju9aqVh{( zCm~w_C6bYzQf>BJrFsBHg!HuP$?Q=9KrKD?5(Fe}!jD4chT&Ia$q`9?nI4e0 zJ%^W8W^ZKKtL%5=d)O{t`xRud0K;sS1(u%7YYd$fi%2LXp^(@JY!=2yC~i28QPEhV zW0Is{Sh}JN1+AKaTNcm_TKgEmXuuIPXPWpmO?D$9>;N*!up16y`xTnUVSlnad|qFQ zQB2@NPe$%5{m}UR9w|%H+InRF047MDlMGUc<^2nDkMMe|JBeJRxf*nY@_)tI%6QbK z-5qX9(TWgWOc7s+IR5}s2PX&W^l-U&s!vC(&y9F9&vT(tW1{e9E-|617Kuv7!ZvSC zh^sS87P>R!#B`?ksGRJWjM9rt>STeBG*S@KMpQG!HFgbbDCl4N5g~GgGL#0j zVa6BG8WEr&6GUAgV+slB7(NltW%*x5X;1c~#$%GM#!Sj%;~jKVv8EJVqS;i_88K@T z709STw1=q*&kr@CGifuMEWVC5M&#JF3uf8ire~a7T698RvR!RiyMqc=Z*3gjCPuW) zzvQTRJ31nUE>Gi&i*AlqeCnkbtv6=gN9m30*yGAp*`(-9lchy0(#GWCm+jbC+`K%k ziOR?0P2tmYy}k*@XDns;P~JXQIjA(N+&8Atj|1_`-$vQJ+Fk6V8)&2(lD1W)7T0D> z+?nnk#+m;BiIOo-GQO-6Z^SN6)RG&;;pEQzt45sM7mhY|xG={Y5qjufGEtlwNPdYb zEgUgQk3Q16_cihSpqIe4g}mK%ZiXo+?Py5G_GrbgNq78*9Cj_WeHwAojA<31x@AWf zx<^mbbHff*EPqV_JE@0 z>B_Lvqcj_AteD$<9cXYwj6mfgnVy6X{TV8D@S8DG7(PXdB0ZVERCqYaQPXWliAG5 z?d^tAv3fN2XGlHKYC9OBBV#sac7eC=W|sgZi{MbEE;iY>j{z8=v!j9oDjm8#2lVeZ z`)A=PQhgq+bG)N*YR?6MG|s;hK1E9H5O}Iqjx5SDcF#jTW>1E z$?s*O);~apMX~a1T(TsLlI1jv*?CfLL3zJOr^t?v<<*%v4&d0lQ%Z! zzaz7gmL5&mhXoy*a>ug{djr;xVJ5_9npTmO!qZ{S+X;V*GVtnJMn`wDH|!ji#mLq& zWNf6tY^yS3jf)tB#fKRTf-yQRKY$d7G71=iv1qg~!I2c1e!u{6kjTIK5SVI0GHnjB zdyDeXenPfIp{TUQd50NTt%}Wfv~0yA1~;=-C$m}4B+c+;P5z+c=#&2d7BM3{+VhDf%-Aq_(#X9psT(df9@E-3PtrBbuG!{l66z@0M7@{Jvs<)UPok}U1n>85n4a=EdW;~fd@*|=QD7ui(GZ*F9 zf0sb)Q?SgEGG(5Lmp5iilfQ8ruvsTGB2LKNvVg!-DSri&U?LOPp2e8O`xg{dHWITK zvWxx**31S(TKFO@1XeR2X1H}mY)fXStrU$4*>dTbGMgVpOs{M#3DB2i7W-_W2C~+R lQu+1-r{7^SW7bBMgXL^ee#m0%)n-g&M?r`~V9iE9|JgQ&cM|{r literal 0 HcmV?d00001 diff --git a/demo/composeApp/src/androidMain/kotlin/com/kmpalette/demo/App.android.kt b/demo/composeApp/src/androidMain/kotlin/com/kmpalette/demo/App.android.kt index 84db792..2d15189 100644 --- a/demo/composeApp/src/androidMain/kotlin/com/kmpalette/demo/App.android.kt +++ b/demo/composeApp/src/androidMain/kotlin/com/kmpalette/demo/App.android.kt @@ -2,6 +2,7 @@ package com.kmpalette.demo import android.app.Activity import android.app.Application +import android.content.Context import android.graphics.Color import android.os.Bundle import androidx.activity.compose.setContent @@ -9,17 +10,28 @@ import androidx.compose.runtime.SideEffect import androidx.compose.ui.platform.LocalView import androidx.core.view.WindowCompat import androidx.fragment.app.FragmentActivity +import java.io.File class AndroidApp : Application() { companion object { lateinit var INSTANCE: AndroidApp + + fun sampleFile(): File = File(INSTANCE.cacheDir, "sample_image.jpg") } override fun onCreate() { super.onCreate() INSTANCE = this + + assets.openFd("sample_image.jpg").use { assetFd -> + sampleFile().outputStream().use { fileOut -> + assetFd.createInputStream().use { fileIn -> + fileIn.copyTo(fileOut) + } + } + } } } diff --git a/demo/composeApp/src/androidMain/kotlin/com/kmpalette/demo/FileDemoScreen.kt b/demo/composeApp/src/androidMain/kotlin/com/kmpalette/demo/FileDemoScreen.kt new file mode 100644 index 0000000..e1816f0 --- /dev/null +++ b/demo/composeApp/src/androidMain/kotlin/com/kmpalette/demo/FileDemoScreen.kt @@ -0,0 +1,45 @@ +package com.kmpalette.demo + +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.graphics.ImageBitmap +import cafe.adriel.voyager.core.screen.Screen +import com.kmpalette.demo.dominant.DominantDemoContent +import com.kmpalette.loader.FilePathLoader +import com.kmpalette.rememberDominantColorState + +actual class FileDemoScreen : Screen { + + @Composable + override fun Content() { + val filePath = remember { sampleFile() } + val dominantColorState = rememberDominantColorState(loader = FilePathLoader) { + clearFilters() + } + var errorMessage: String? by remember { mutableStateOf(null) } + var image: ImageBitmap? by remember { mutableStateOf(null) } + LaunchedEffect(filePath) { + try { + image = FilePathLoader.load(filePath) + } catch (cause: Throwable) { + cause.printStackTrace() + errorMessage = cause.message + } + dominantColorState.updateFrom(filePath) + } + + DominantDemoContent( + dominantColorState = dominantColorState, + imageBitmap = image, + ) { + if (errorMessage != null) { + Text(errorMessage!!) + } + } + } +} \ No newline at end of file diff --git a/demo/composeApp/src/androidMain/kotlin/com/kmpalette/demo/sampleFile.android.kt b/demo/composeApp/src/androidMain/kotlin/com/kmpalette/demo/sampleFile.android.kt new file mode 100644 index 0000000..3083828 --- /dev/null +++ b/demo/composeApp/src/androidMain/kotlin/com/kmpalette/demo/sampleFile.android.kt @@ -0,0 +1,5 @@ +package com.kmpalette.demo + +actual fun sampleFile(): String { + return AndroidApp.sampleFile().absolutePath +} \ No newline at end of file diff --git a/demo/composeApp/src/commonMain/kotlin/com/kmpalette/demo/HomeScreen.kt b/demo/composeApp/src/commonMain/kotlin/com/kmpalette/demo/HomeScreen.kt index 68caf04..b66fcbc 100644 --- a/demo/composeApp/src/commonMain/kotlin/com/kmpalette/demo/HomeScreen.kt +++ b/demo/composeApp/src/commonMain/kotlin/com/kmpalette/demo/HomeScreen.kt @@ -46,6 +46,9 @@ class HomeScreen : Screen { Button(onClick = { navigator.push(NetworkDemoScreen()) }) { Text("Dominant Color - Network") } + Button(onClick = { navigator.push(FileDemoScreen()) }) { + Text("Dominant Color - Sample File") + } } } } diff --git a/demo/composeApp/src/commonMain/kotlin/com/kmpalette/demo/sampleFile.kt b/demo/composeApp/src/commonMain/kotlin/com/kmpalette/demo/sampleFile.kt new file mode 100644 index 0000000..a331813 --- /dev/null +++ b/demo/composeApp/src/commonMain/kotlin/com/kmpalette/demo/sampleFile.kt @@ -0,0 +1,7 @@ +package com.kmpalette.demo + +import cafe.adriel.voyager.core.screen.Screen + +expect fun sampleFile(): String + +expect class FileDemoScreen() : Screen \ No newline at end of file diff --git a/demo/composeApp/src/desktopMain/kotlin/com/kmpalette/demo/sampleFile.desktop.kt b/demo/composeApp/src/desktopMain/kotlin/com/kmpalette/demo/sampleFile.desktop.kt new file mode 100644 index 0000000..739b420 --- /dev/null +++ b/demo/composeApp/src/desktopMain/kotlin/com/kmpalette/demo/sampleFile.desktop.kt @@ -0,0 +1,17 @@ +package com.kmpalette.demo + +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import cafe.adriel.voyager.core.screen.Screen + +actual fun sampleFile(): String { + error("Not supported by this platform") +} + +actual class FileDemoScreen actual constructor(): Screen { + + @Composable + override fun Content() { + Text("Not supported by this platform") + } +} \ No newline at end of file diff --git a/demo/composeApp/src/jsMain/kotlin/com/kmpalette/demo/sampleFile.js.kt b/demo/composeApp/src/jsMain/kotlin/com/kmpalette/demo/sampleFile.js.kt new file mode 100644 index 0000000..739b420 --- /dev/null +++ b/demo/composeApp/src/jsMain/kotlin/com/kmpalette/demo/sampleFile.js.kt @@ -0,0 +1,17 @@ +package com.kmpalette.demo + +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import cafe.adriel.voyager.core.screen.Screen + +actual fun sampleFile(): String { + error("Not supported by this platform") +} + +actual class FileDemoScreen actual constructor(): Screen { + + @Composable + override fun Content() { + Text("Not supported by this platform") + } +} \ No newline at end of file diff --git a/demo/composeApp/src/nativeMain/kotlin/com/kmpalette/demo/sampleFile.native.kt b/demo/composeApp/src/nativeMain/kotlin/com/kmpalette/demo/sampleFile.native.kt new file mode 100644 index 0000000..739b420 --- /dev/null +++ b/demo/composeApp/src/nativeMain/kotlin/com/kmpalette/demo/sampleFile.native.kt @@ -0,0 +1,17 @@ +package com.kmpalette.demo + +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import cafe.adriel.voyager.core.screen.Screen + +actual fun sampleFile(): String { + error("Not supported by this platform") +} + +actual class FileDemoScreen actual constructor(): Screen { + + @Composable + override fun Content() { + Text("Not supported by this platform") + } +} \ No newline at end of file diff --git a/demo/iosApp/iosApp.xcodeproj/project.pbxproj b/demo/iosApp/iosApp.xcodeproj/project.pbxproj index 05d4b09..2ce84ab 100644 --- a/demo/iosApp/iosApp.xcodeproj/project.pbxproj +++ b/demo/iosApp/iosApp.xcodeproj/project.pbxproj @@ -51,6 +51,7 @@ A93A953829CC810C00F8E227 /* Products */, 979913F6AE5D271756D4649D /* Pods */, C4127409AE3703430489E7BC /* Frameworks */, + BB33396AAA5F8D0EE2AE568C /* xcschemes */, ); sourceTree = ""; }; @@ -80,6 +81,14 @@ path = "Preview Content"; sourceTree = ""; }; + BB33396AAA5F8D0EE2AE568C /* xcschemes */ = { + isa = PBXGroup; + children = ( + ); + name = xcschemes; + path = iosApp.xcworkspace/xcuserdata/jordon.xcuserdatad/xcschemes; + sourceTree = ""; + }; C4127409AE3703430489E7BC /* Frameworks */ = { isa = PBXGroup; children = ( diff --git a/extensions-base64/build.gradle.kts b/extensions-base64/build.gradle.kts index 7a6a014..4cc8f86 100644 --- a/extensions-base64/build.gradle.kts +++ b/extensions-base64/build.gradle.kts @@ -1,5 +1,3 @@ -@file:Suppress("OPT_IN_USAGE") - plugins { alias(libs.plugins.multiplatform) alias(libs.plugins.compose) @@ -12,7 +10,7 @@ plugins { kotlin { explicitApi() - targetHierarchy.default() + applyDefaultHierarchyTemplate() androidTarget { publishAllLibraryVariants() diff --git a/extensions-bytearray/build.gradle.kts b/extensions-bytearray/build.gradle.kts index d2e4947..cb76972 100644 --- a/extensions-bytearray/build.gradle.kts +++ b/extensions-bytearray/build.gradle.kts @@ -1,5 +1,3 @@ -@file:Suppress("OPT_IN_USAGE") - plugins { alias(libs.plugins.multiplatform) alias(libs.plugins.compose) @@ -12,7 +10,7 @@ plugins { kotlin { explicitApi() - targetHierarchy.default() + applyDefaultHierarchyTemplate() androidTarget { publishAllLibraryVariants() diff --git a/extensions-file/README.md b/extensions-file/README.md new file mode 100644 index 0000000..3aa95ed --- /dev/null +++ b/extensions-file/README.md @@ -0,0 +1,57 @@ +# File Extensions + +This extension provides `FilePathLoader` and `PathLoader` a `ImageBitmapLoader` for loading images +from an absolute path, or from an Okio `Path` object. + +| Library | Loader | Input Class | Demo | +|----------------------------------|---------------------------------|-------------------|------| +| [okio](https://square.github.io) | `PathLoader` / `FilePathLoader` | `Path` / `String` | N/A | + +## Setup + +In order to use these extensions you will need to add the Okio dependency to +your `build.gradle.kts`, you will need the `core` library as well. + +Then you need to add the following to your `build.gradle.kts` file: + +```kotlin +kotlin { + sourceSets { + commonMain { + dependencies { + implementation(libs.kmpalette.core) + implementation(libs.kmpalette.extensions.file) + implementation("com.squareup.okio:okio:") + } + } + } +} +``` + +## Usage + +Now you can use the `FilePathLoader` to load images from an absolute path: + +```kotlin +@Composable +fun MyComposable(absolutePath: String) { + val paletteState = rememberPaletteState(loader = FilePathLoader) + LaunchedEffect(absolutePath) { + paletteState.generate(absolutePath) + } +} +``` + +Or if you already have a `Path` object: + +```kotlin +@Composable +fun MyComposable(path: Path) { + val paletteState = rememberPaletteState(loader = PathLoader) + LaunchedEffect(path) { + paletteState.generate(path) + } +} +``` + +The Image will be fetched, converted into a `ImageBitmap` then a palette will be generated. \ No newline at end of file diff --git a/extensions-file/api/android/extensions-file.api b/extensions-file/api/android/extensions-file.api new file mode 100644 index 0000000..ba55c5a --- /dev/null +++ b/extensions-file/api/android/extensions-file.api @@ -0,0 +1,29 @@ +public final class com/kmpalette/extensions/file/FilePathDominantColorStateKt { + public static final fun rememberFilePathDominantColorState-1Kfb2uI (JJILkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)Lcom/kmpalette/DominantColorState; + public static final fun rememberPathDominantColorState-1Kfb2uI (JJILkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)Lcom/kmpalette/DominantColorState; +} + +public final class com/kmpalette/extensions/file/FilePathPaletteKt { + public static final fun rememberGeneratePalette (Ljava/lang/String;Lkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)Lcom/kmpalette/PaletteResult; + public static final fun rememberGeneratePalette (Lokio/Path;Lkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)Lcom/kmpalette/PaletteResult; +} + +public final class com/kmpalette/extensions/file/FilePathPaletteStateKt { + public static final fun rememberFilePathPaletteState (ILkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)Lcom/kmpalette/PaletteState; + public static final fun rememberPathPaletteState (ILkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)Lcom/kmpalette/PaletteState; +} + +public final class com/kmpalette/loader/FilePathLoader : com/kmpalette/loader/ImageBitmapLoader { + public static final field $stable I + public static final field INSTANCE Lcom/kmpalette/loader/FilePathLoader; + public synthetic fun load (Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun load (Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +} + +public final class com/kmpalette/loader/PathLoader : com/kmpalette/loader/ImageBitmapLoader { + public static final field $stable I + public static final field INSTANCE Lcom/kmpalette/loader/PathLoader; + public synthetic fun load (Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun load (Lokio/Path;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +} + diff --git a/extensions-file/api/jvm/extensions-file.api b/extensions-file/api/jvm/extensions-file.api new file mode 100644 index 0000000..ba55c5a --- /dev/null +++ b/extensions-file/api/jvm/extensions-file.api @@ -0,0 +1,29 @@ +public final class com/kmpalette/extensions/file/FilePathDominantColorStateKt { + public static final fun rememberFilePathDominantColorState-1Kfb2uI (JJILkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)Lcom/kmpalette/DominantColorState; + public static final fun rememberPathDominantColorState-1Kfb2uI (JJILkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)Lcom/kmpalette/DominantColorState; +} + +public final class com/kmpalette/extensions/file/FilePathPaletteKt { + public static final fun rememberGeneratePalette (Ljava/lang/String;Lkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)Lcom/kmpalette/PaletteResult; + public static final fun rememberGeneratePalette (Lokio/Path;Lkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)Lcom/kmpalette/PaletteResult; +} + +public final class com/kmpalette/extensions/file/FilePathPaletteStateKt { + public static final fun rememberFilePathPaletteState (ILkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)Lcom/kmpalette/PaletteState; + public static final fun rememberPathPaletteState (ILkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)Lcom/kmpalette/PaletteState; +} + +public final class com/kmpalette/loader/FilePathLoader : com/kmpalette/loader/ImageBitmapLoader { + public static final field $stable I + public static final field INSTANCE Lcom/kmpalette/loader/FilePathLoader; + public synthetic fun load (Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun load (Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +} + +public final class com/kmpalette/loader/PathLoader : com/kmpalette/loader/ImageBitmapLoader { + public static final field $stable I + public static final field INSTANCE Lcom/kmpalette/loader/PathLoader; + public synthetic fun load (Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun load (Lokio/Path;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +} + diff --git a/extensions-file/build.gradle.kts b/extensions-file/build.gradle.kts new file mode 100644 index 0000000..8703167 --- /dev/null +++ b/extensions-file/build.gradle.kts @@ -0,0 +1,71 @@ +plugins { + alias(libs.plugins.multiplatform) + alias(libs.plugins.compose) + alias(libs.plugins.android.library) + alias(libs.plugins.dokka) + alias(libs.plugins.publish) +} + +kotlin { + explicitApi() + + applyDefaultHierarchyTemplate() + + androidTarget { + publishAllLibraryVariants() + } + + jvm() + + macosX64() + macosArm64() + + listOf( + iosX64(), + iosArm64(), + iosSimulatorArm64(), + ).forEach { + it.binaries.framework { + baseName = "extensions-file" + } + } + + sourceSets { + val commonMain by getting { + dependencies { + implementation(project(":kmpalette-core")) + api(project(":kmpalette-bitmap-loader")) + implementation(project(":extensions-bytearray")) + implementation(compose.ui) + implementation(libs.kotlinx.coroutines) + implementation(libs.okio) + } + } + + val commonTest by getting { + dependencies { + implementation(kotlin("test")) + } + } + + val androidMain by getting { + dependencies { + implementation(libs.androidx.startup) + implementation(libs.androidx.core) + } + } + } +} + +android { + namespace = "com.kmpalette.extensions.file" + + compileSdk = libs.versions.sdk.compile.get().toInt() + defaultConfig { + minSdk = libs.versions.sdk.min.get().toInt() + } + + kotlin { + jvmToolchain(jdkVersion = 11) + } +} \ No newline at end of file diff --git a/extensions-file/src/androidMain/kotlin/com/kmpalette/loader/FilePathBitmap.android.kt b/extensions-file/src/androidMain/kotlin/com/kmpalette/loader/FilePathBitmap.android.kt new file mode 100644 index 0000000..184023f --- /dev/null +++ b/extensions-file/src/androidMain/kotlin/com/kmpalette/loader/FilePathBitmap.android.kt @@ -0,0 +1,5 @@ +package com.kmpalette.loader + +import okio.FileSystem + +internal actual val fileSystem: FileSystem = FileSystem.SYSTEM \ No newline at end of file diff --git a/extensions-file/src/commonMain/kotlin/com/kmpalette/extensions/file/FilePathDominantColorState.kt b/extensions-file/src/commonMain/kotlin/com/kmpalette/extensions/file/FilePathDominantColorState.kt new file mode 100644 index 0000000..3e87c8b --- /dev/null +++ b/extensions-file/src/commonMain/kotlin/com/kmpalette/extensions/file/FilePathDominantColorState.kt @@ -0,0 +1,77 @@ +package com.kmpalette.extensions.file + +import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.ImageBitmap +import androidx.palette.graphics.Palette +import com.kmpalette.DominantColorState +import com.kmpalette.loader.FilePathLoader +import com.kmpalette.loader.PathLoader +import com.kmpalette.rememberDominantColorState +import kotlinx.coroutines.Dispatchers +import okio.Path +import kotlin.coroutines.CoroutineContext + +/** + * Wrapper around [rememberDominantColorState] that uses [FilePathLoader] to load the image. + * + * @see rememberDominantColorState + * @param[defaultColor] The default color, which will be used if [Palette.generate] fails. + * @param[defaultOnColor] The default color to use _on_ [defaultColor]. + * @param[cacheSize] The size of the LruCache used to store recent results. Pass `0` to disable. + * @param[coroutineContext] The [CoroutineContext] used to launch the coroutine. + * @param[isSwatchValid] A lambda which allows filtering of the calculated [Palette.Swatch]. + * @param[builder] A lambda which allows customization of the [Palette.Builder] used to generate + * the [Palette]. + * @return A [DominantColorState] which can be used to generate a dominant color + * from a [ImageBitmap]. + */ +@Composable +public fun rememberFilePathDominantColorState( + defaultColor: Color, + defaultOnColor: Color, + cacheSize: Int = DominantColorState.DEFAULT_CACHE_SIZE, + coroutineContext: CoroutineContext = Dispatchers.Default, + isSwatchValid: (Palette.Swatch) -> Boolean = { true }, + builder: Palette.Builder.() -> Unit = {}, +): DominantColorState = rememberDominantColorState( + loader = FilePathLoader, + defaultColor = defaultColor, + defaultOnColor = defaultOnColor, + cacheSize = cacheSize, + coroutineContext = coroutineContext, + isSwatchValid = isSwatchValid, + builder = builder, +) + +/** + * Wrapper around [rememberDominantColorState] that uses [PathLoader] to load the image. + * + * @see rememberDominantColorState + * @param[defaultColor] The default color, which will be used if [Palette.generate] fails. + * @param[defaultOnColor] The default color to use _on_ [defaultColor]. + * @param[cacheSize] The size of the LruCache used to store recent results. Pass `0` to disable. + * @param[coroutineContext] The [CoroutineContext] used to launch the coroutine. + * @param[isSwatchValid] A lambda which allows filtering of the calculated [Palette.Swatch]. + * @param[builder] A lambda which allows customization of the [Palette.Builder] used to generate + * the [Palette]. + * @return A [DominantColorState] which can be used to generate a dominant color + * from a [ImageBitmap]. + */ +@Composable +public fun rememberPathDominantColorState( + defaultColor: Color, + defaultOnColor: Color, + cacheSize: Int = DominantColorState.DEFAULT_CACHE_SIZE, + coroutineContext: CoroutineContext = Dispatchers.Default, + isSwatchValid: (Palette.Swatch) -> Boolean = { true }, + builder: Palette.Builder.() -> Unit = {}, +): DominantColorState = rememberDominantColorState( + loader = PathLoader, + defaultColor = defaultColor, + defaultOnColor = defaultOnColor, + cacheSize = cacheSize, + coroutineContext = coroutineContext, + isSwatchValid = isSwatchValid, + builder = builder, +) \ No newline at end of file diff --git a/extensions-file/src/commonMain/kotlin/com/kmpalette/extensions/file/FilePathPalette.kt b/extensions-file/src/commonMain/kotlin/com/kmpalette/extensions/file/FilePathPalette.kt new file mode 100644 index 0000000..7907883 --- /dev/null +++ b/extensions-file/src/commonMain/kotlin/com/kmpalette/extensions/file/FilePathPalette.kt @@ -0,0 +1,50 @@ +package com.kmpalette.extensions.file + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import androidx.compose.ui.graphics.ImageBitmap +import androidx.palette.graphics.Palette +import com.kmpalette.PaletteResult +import com.kmpalette.loader.toImageBitmap +import kotlinx.coroutines.Dispatchers +import okio.Path +import okio.Path.Companion.toPath +import kotlin.coroutines.CoroutineContext + +private val loader: (Path) -> suspend () -> ImageBitmap = { { it.toImageBitmap() } } + +/** + * Generate and remember a [PaletteResult] from a absolute file path [String]. + * + * You must import the okio library to use this loader. + * + * @param[coroutineContext] The [CoroutineContext] to use for generating the [PaletteResult]. + * @param[block] A block to configure the [Palette.Builder]. + * @return A [PaletteResult] that will be remembered across compositions. + */ +@Composable +public fun String.rememberGeneratePalette( + coroutineContext: CoroutineContext = Dispatchers.Default, + block: Palette.Builder.() -> Unit = {}, +): PaletteResult { + val loader = remember(this) { loader(toPath()) } + return com.kmpalette.rememberGeneratePalette(loader, coroutineContext, block) +} + +/** + * Generate and remember a [PaletteResult] from a [Path]. + * + * You must import the okio library to use this loader. + * + * @param[coroutineContext] The [CoroutineContext] to use for generating the [PaletteResult]. + * @param[block] A block to configure the [Palette.Builder]. + * @return A [PaletteResult] that will be remembered across compositions. + */ +@Composable +public fun Path.rememberGeneratePalette( + coroutineContext: CoroutineContext = Dispatchers.Default, + block: Palette.Builder.() -> Unit = {}, +): PaletteResult { + val loader = remember(this) { loader(this) } + return com.kmpalette.rememberGeneratePalette(loader, coroutineContext, block) +} \ No newline at end of file diff --git a/extensions-file/src/commonMain/kotlin/com/kmpalette/extensions/file/FilePathPaletteState.kt b/extensions-file/src/commonMain/kotlin/com/kmpalette/extensions/file/FilePathPaletteState.kt new file mode 100644 index 0000000..d58e276 --- /dev/null +++ b/extensions-file/src/commonMain/kotlin/com/kmpalette/extensions/file/FilePathPaletteState.kt @@ -0,0 +1,59 @@ +package com.kmpalette.extensions.file + +import androidx.compose.runtime.Composable +import androidx.palette.graphics.Palette +import com.kmpalette.PaletteState +import com.kmpalette.loader.FilePathLoader +import com.kmpalette.loader.PathLoader +import com.kmpalette.rememberPaletteState +import kotlinx.coroutines.Dispatchers +import okio.Path +import kotlin.coroutines.CoroutineContext + +/** + * Wrapper around [rememberPaletteState] that uses [FilePathLoader] to load the image. + * + * You must import the okio library to use this loader. + * + * @see rememberPaletteState + * @param[cacheSize] The maximum number of [Palette]s to cache. If 0, no caching will be done. + * @param[coroutineContext] The [CoroutineContext] to use for generating [Palette]s. + * @param[builder] A lambda that will be applied to the [Palette.Builder] to customize the + * generation of the [Palette]. + * @return A [PaletteState] that will be remembered across composition. + */ +@Composable +public fun rememberFilePathPaletteState( + cacheSize: Int = PaletteState.DEFAULT_CACHE_SIZE, + coroutineContext: CoroutineContext = Dispatchers.Default, + builder: Palette.Builder.() -> Unit = {}, +): PaletteState = rememberPaletteState( + loader = FilePathLoader, + cacheSize = cacheSize, + coroutineContext = coroutineContext, + builder = builder, +) + +/** + * Wrapper around [rememberPaletteState] that uses [PathLoader] to load the image. + * + * You must import the okio library to use this loader. + * + * @see rememberPaletteState + * @param[cacheSize] The maximum number of [Palette]s to cache. If 0, no caching will be done. + * @param[coroutineContext] The [CoroutineContext] to use for generating [Palette]s. + * @param[builder] A lambda that will be applied to the [Palette.Builder] to customize the + * generation of the [Palette]. + * @return A [PaletteState] that will be remembered across composition. + */ +@Composable +public fun rememberPathPaletteState( + cacheSize: Int = PaletteState.DEFAULT_CACHE_SIZE, + coroutineContext: CoroutineContext = Dispatchers.Default, + builder: Palette.Builder.() -> Unit = {}, +): PaletteState = rememberPaletteState( + loader = PathLoader, + cacheSize = cacheSize, + coroutineContext = coroutineContext, + builder = builder, +) \ No newline at end of file diff --git a/extensions-file/src/commonMain/kotlin/com/kmpalette/loader/FilePathBitmap.kt b/extensions-file/src/commonMain/kotlin/com/kmpalette/loader/FilePathBitmap.kt new file mode 100644 index 0000000..eb9527b --- /dev/null +++ b/extensions-file/src/commonMain/kotlin/com/kmpalette/loader/FilePathBitmap.kt @@ -0,0 +1,15 @@ +package com.kmpalette.loader + +import androidx.compose.ui.graphics.ImageBitmap +import okio.FileSystem +import okio.Path + +internal expect val fileSystem: FileSystem + +internal suspend fun Path.toImageBitmap(): ImageBitmap { + val bytes = fileSystem.read(this) { + readByteArray() + } + + return ByteArrayLoader.load(bytes) +} diff --git a/extensions-file/src/commonMain/kotlin/com/kmpalette/loader/FilePathLoader.kt b/extensions-file/src/commonMain/kotlin/com/kmpalette/loader/FilePathLoader.kt new file mode 100644 index 0000000..62ab5ec --- /dev/null +++ b/extensions-file/src/commonMain/kotlin/com/kmpalette/loader/FilePathLoader.kt @@ -0,0 +1,18 @@ +package com.kmpalette.loader + +import androidx.compose.ui.graphics.ImageBitmap +import okio.Path.Companion.toPath + +/** + * A [ImageBitmapLoader] that loads [ImageBitmap]s from a [String]. + * + * **Warning:** The [String] must be a valid absolute file path that you have permission to read. + * + * You must import the Okio library to use this loader. + */ +public object FilePathLoader : ImageBitmapLoader { + + override suspend fun load(input: String): ImageBitmap { + return PathLoader.load(input.toPath()) + } +} \ No newline at end of file diff --git a/extensions-file/src/commonMain/kotlin/com/kmpalette/loader/PathLoader.kt b/extensions-file/src/commonMain/kotlin/com/kmpalette/loader/PathLoader.kt new file mode 100644 index 0000000..80f5bd1 --- /dev/null +++ b/extensions-file/src/commonMain/kotlin/com/kmpalette/loader/PathLoader.kt @@ -0,0 +1,16 @@ +package com.kmpalette.loader + +import androidx.compose.ui.graphics.ImageBitmap +import okio.Path + +/** + * A [ImageBitmapLoader] that loads [ImageBitmap]s from a [Path]. + * + * You must import the Okio library to use this loader. + */ +public object PathLoader : ImageBitmapLoader { + + override suspend fun load(input: Path): ImageBitmap { + return input.toImageBitmap() + } +} \ No newline at end of file diff --git a/extensions-file/src/jvmMain/kotlin/com/kmpalette/loader/FilePathBitmap.jvm.kt b/extensions-file/src/jvmMain/kotlin/com/kmpalette/loader/FilePathBitmap.jvm.kt new file mode 100644 index 0000000..184023f --- /dev/null +++ b/extensions-file/src/jvmMain/kotlin/com/kmpalette/loader/FilePathBitmap.jvm.kt @@ -0,0 +1,5 @@ +package com.kmpalette.loader + +import okio.FileSystem + +internal actual val fileSystem: FileSystem = FileSystem.SYSTEM \ No newline at end of file diff --git a/extensions-file/src/nativeMain/kotlin/com/kmpalette/loader/FilePathBitmap.native.kt b/extensions-file/src/nativeMain/kotlin/com/kmpalette/loader/FilePathBitmap.native.kt new file mode 100644 index 0000000..184023f --- /dev/null +++ b/extensions-file/src/nativeMain/kotlin/com/kmpalette/loader/FilePathBitmap.native.kt @@ -0,0 +1,5 @@ +package com.kmpalette.loader + +import okio.FileSystem + +internal actual val fileSystem: FileSystem = FileSystem.SYSTEM \ No newline at end of file diff --git a/extensions-libres/build.gradle.kts b/extensions-libres/build.gradle.kts index 6c94904..25cb460 100644 --- a/extensions-libres/build.gradle.kts +++ b/extensions-libres/build.gradle.kts @@ -1,5 +1,3 @@ -@file:Suppress("OPT_IN_USAGE") - plugins { alias(libs.plugins.multiplatform) alias(libs.plugins.compose) @@ -11,7 +9,7 @@ plugins { kotlin { explicitApi() - targetHierarchy.default() + applyDefaultHierarchyTemplate() androidTarget { publishAllLibraryVariants() diff --git a/extensions-network/README.md b/extensions-network/README.md index 6961caa..007fdfd 100644 --- a/extensions-network/README.md +++ b/extensions-network/README.md @@ -1,6 +1,6 @@ # Network Extensions -This extension provides `Network` a `ImageBitmapLoader` for loading images from a URL. +This extension provides `NetworkLoader` a `ImageBitmapLoader` for loading images from a URL. | Library | Loader | Input Class | Demo | |----------------------------------------|-----------------|-------------|------------------------------------------------------------------------------------------------------------------| @@ -20,6 +20,7 @@ kotlin { commonMain { dependencies { implementation(libs.kmpalette.core) + implementation(libs.kmpalette.extensions.network) implementation("io.ktor:ktor-client-core:$ktor_version") } } diff --git a/extensions-network/build.gradle.kts b/extensions-network/build.gradle.kts index f2ef956..bb8ab7b 100644 --- a/extensions-network/build.gradle.kts +++ b/extensions-network/build.gradle.kts @@ -1,5 +1,3 @@ -@file:Suppress("OPT_IN_USAGE") - plugins { alias(libs.plugins.multiplatform) alias(libs.plugins.compose) @@ -11,7 +9,7 @@ plugins { kotlin { explicitApi() - targetHierarchy.default() + applyDefaultHierarchyTemplate() androidTarget { publishAllLibraryVariants() diff --git a/extensions-resources/build.gradle.kts b/extensions-resources/build.gradle.kts index c71dd24..cd87072 100644 --- a/extensions-resources/build.gradle.kts +++ b/extensions-resources/build.gradle.kts @@ -1,5 +1,3 @@ -@file:Suppress("OPT_IN_USAGE") - import org.jetbrains.compose.ExperimentalComposeLibrary plugins { @@ -13,7 +11,7 @@ plugins { kotlin { explicitApi() - targetHierarchy.default() + applyDefaultHierarchyTemplate() androidTarget { publishAllLibraryVariants() diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index fd3bf36..0d65012 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -31,6 +31,7 @@ voyager = "1.0.0-rc10" kover = "0.7.5" poko = "0.15.1" calf-filePicker = "0.2.0" +okio = "3.6.0" # These are pinned for Android instrumented tests #noinspection GradleDependency @@ -58,6 +59,7 @@ kotlinx-coroutines = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutin kotlinx-coroutines-android = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-android", version.ref = "kotlin-coroutines" } kotlinx-coroutines-test = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-test", version.ref = "kotlin-coroutines" } junit = { group = "junit", name = "junit", version.ref = "junit" } +okio = { module = "com.squareup.okio:okio", version.ref = "okio" } robolectric = { module = "org.robolectric:robolectric", version.ref = "robolectric" } ktor-client = { module = "io.ktor:ktor-client-core", version.ref = "ktor" } ktor-android = { module = "io.ktor:ktor-client-android", version.ref = "ktor" } diff --git a/kmpalette-bitmap-loader/build.gradle.kts b/kmpalette-bitmap-loader/build.gradle.kts index e76a042..699312f 100644 --- a/kmpalette-bitmap-loader/build.gradle.kts +++ b/kmpalette-bitmap-loader/build.gradle.kts @@ -1,5 +1,3 @@ -@file:Suppress("OPT_IN_USAGE") - plugins { alias(libs.plugins.multiplatform) alias(libs.plugins.compose) @@ -11,7 +9,7 @@ plugins { kotlin { explicitApi() - targetHierarchy.default() + applyDefaultHierarchyTemplate() androidTarget { publishAllLibraryVariants() diff --git a/kmpalette-core/build.gradle.kts b/kmpalette-core/build.gradle.kts index d2893ad..3907f19 100644 --- a/kmpalette-core/build.gradle.kts +++ b/kmpalette-core/build.gradle.kts @@ -1,5 +1,3 @@ -@file:Suppress("OPT_IN_USAGE") - plugins { alias(libs.plugins.multiplatform) alias(libs.plugins.compose) @@ -12,7 +10,7 @@ plugins { kotlin { explicitApi() - targetHierarchy.default() + applyDefaultHierarchyTemplate() androidTarget { publishAllLibraryVariants() diff --git a/settings.gradle.kts b/settings.gradle.kts index 8b3f48e..c7f5afc 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -43,6 +43,7 @@ include( ":extensions-resources", ":extensions-libres", ":extensions-network", + ":extensions-file", ":test-utils", ) diff --git a/test-utils/build.gradle.kts b/test-utils/build.gradle.kts index 2fdddaa..5471df0 100644 --- a/test-utils/build.gradle.kts +++ b/test-utils/build.gradle.kts @@ -1,5 +1,3 @@ -@file:Suppress("OPT_IN_USAGE") - plugins { alias(libs.plugins.multiplatform) alias(libs.plugins.compose) @@ -8,7 +6,7 @@ plugins { } kotlin { - targetHierarchy.default() + applyDefaultHierarchyTemplate() androidTarget { publishAllLibraryVariants()