From d298e31fc261cc30378bce41c0e4cd56af2542f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CAndras?= <“andras.samu@supercharge.io”> Date: Tue, 10 Jan 2023 14:49:07 +0100 Subject: [PATCH] feat(new-version): add new readme --- README.md | 266 +++++++++--------- Resources/barchartcard.png | Bin 0 -> 65497 bytes Resources/barvid2.gif | Bin 0 -> 128234 bytes Resources/chartpic1.png | Bin 0 -> 98722 bytes Resources/chartpic2.png | Bin 0 -> 105517 bytes Resources/chartpic3.png | Bin 0 -> 111879 bytes Resources/chartpic4.png | Bin 0 -> 119310 bytes Resources/chartpic5.png | Bin 0 -> 78258 bytes Resources/chartpic6.png | Bin 0 -> 114202 bytes Resources/chartpic7.png | Bin 0 -> 156899 bytes Resources/fullscreen1.gif | Bin 526252 -> 0 bytes Resources/fullscreen2.gif | Bin 514491 -> 0 bytes Resources/linechartcard.png | Bin 0 -> 58319 bytes Resources/linevid2.gif | Bin 0 -> 111415 bytes Resources/midnightgreen.gif | Bin 226828 -> 0 bytes Resources/multiline1.gif | Bin 107912 -> 0 bytes Resources/piechartcard.png | Bin 0 -> 83773 bytes Resources/pievid2.gif | Bin 0 -> 363233 bytes Resources/ringchart1.png | Bin 0 -> 199339 bytes Resources/showcase1.gif | Bin 150317 -> 0 bytes Resources/showcase2.gif | Bin 351045 -> 0 bytes Resources/showcase3.gif | Bin 285102 -> 0 bytes Resources/showcase4.png | Bin 55989 -> 0 bytes Resources/showcase5.png | Bin 47484 -> 0 bytes Resources/watchos1.png | Bin 74389 -> 0 bytes .../SwiftUICharts/Base/Axis/AxisLabels.swift | 2 +- .../Charts/BarChart/BarChartCell.swift | 1 + .../Charts/BarChart/BarChartCellShape.swift | 7 + .../Charts/BarChart/BarChartRow.swift | 2 +- .../LineChart/Model/LineChartProperties.swift | 2 +- example.md | 193 +++++++++++++ 31 files changed, 331 insertions(+), 142 deletions(-) create mode 100644 Resources/barchartcard.png create mode 100644 Resources/barvid2.gif create mode 100644 Resources/chartpic1.png create mode 100644 Resources/chartpic2.png create mode 100644 Resources/chartpic3.png create mode 100644 Resources/chartpic4.png create mode 100644 Resources/chartpic5.png create mode 100644 Resources/chartpic6.png create mode 100644 Resources/chartpic7.png delete mode 100644 Resources/fullscreen1.gif delete mode 100644 Resources/fullscreen2.gif create mode 100644 Resources/linechartcard.png create mode 100644 Resources/linevid2.gif delete mode 100644 Resources/midnightgreen.gif delete mode 100644 Resources/multiline1.gif create mode 100644 Resources/piechartcard.png create mode 100644 Resources/pievid2.gif create mode 100644 Resources/ringchart1.png delete mode 100644 Resources/showcase1.gif delete mode 100644 Resources/showcase2.gif delete mode 100644 Resources/showcase3.gif delete mode 100644 Resources/showcase4.png delete mode 100644 Resources/showcase5.png delete mode 100644 Resources/watchos1.png create mode 100644 example.md diff --git a/README.md b/README.md index 88198213..69fbd80b 100644 --- a/README.md +++ b/README.md @@ -1,192 +1,180 @@ # SwiftUICharts -Swift package for displaying charts effortlessly. +### SwiftUICharts is here with a new version, giving more controll and customization over the charts and full ios 13 backwards compatibility. -![SwiftUI Charts](./Resources/showcase1.gif "SwiftUI Charts") +SwiftUICharts is an open source library for creating charts in iOS apps with SwiftUI. Built natively with SwiftUI in mind and it is fully compatible with the latest versions of iOS, also backwards **compatible up to iOS 13.** -It supports: -* Line charts -* Bar charts -* Pie charts +With SwiftUICharts, you can easily create a variety of chart types, including line charts, bar charts, ring charts and pie charts. It also provides additional chart types and customization options, giving you the flexibility to create charts that perfectly fit your needs. -### Installation: +In addition to its native SwiftUI integration, backwards compatibility and wide range of chart types, SwiftUICharts is also easy to use, making it a great choice for creating stunning and intuitive charts in your applications. -It requires iOS 13 and Xcode 11! +
+ +
-In Xcode got to `File -> Swift Packages -> Add Package Dependency` and paste inthe repo's url: `https://github.com/AppPear/ChartView` +### Composable -### Usage: +You can now build your custom chart from prebuilt layers. Use a simple chart, add background grids, add chart labels to the axes, add tcks to the line, etc. -import the package in the file you would like to use it: `import SwiftUICharts` +### Works great with native SwiftUI elements -You can display a Chart by adding a chart view to your parent view: +[Example codes here](./example.md) ++ + +
-### Demo +### Installation -Added an example project, with **iOS, watchOS** target: https://github.com/AppPear/ChartViewDemo +It is a SPM package, in Xcode go to File -> Swift Packages -> Add Package Dependency and paste in the repo's url: https://github.com/AppPear/ChartView -## Line charts +if you want to add previous releases you can find release tags https://github.com/AppPear/ChartView/releases -**LineChartView with multiple lines!** -First release of this feature, interaction is disabled for now, I'll figure it out how could be the best to interact with multiple lines with a single touch. -![Multiine Charts](./Resources/multiline1.gif "Multiine Charts") +### Slack -Usage: -```swift -MultiLineChartView(data: [([8,32,11,23,40,28], GradientColors.green), ([90,99,78,111,70,60,77], GradientColors.purple), ([34,56,72,38,43,100,50], GradientColors.orngPink)], title: "Title") -``` -Gradient colors are now under the `GradientColor` struct you can create your own gradient by `GradientColor(start: Color, end: Color)` - -Available preset gradients: -* orange -* blue -* green -* blu -* bluPurpl -* purple -* prplPink -* prplNeon -* orngPink +Join our Slack channel for day to day conversation and more insights: -**Full screen view called LineView!!!** +https://join.slack.com/t/swiftuichartview/shared_invite/zt-g6mxioq8-j3iUTF1YKX7D23ML3qcc4g -![Line Charts](./Resources/fullscreen2.gif "Line Charts") +## Quick start guide: -```swift - LineView(data: [8,23,54,32,12,37,7,23,43], title: "Line chart", legend: "Full screen") // legend is optional, use optional .padding() -``` +**Create a simple chart:** -Adopts to dark mode automatically - -![Line Charts](./Resources/showcase3.gif "Line Charts") - -You can add your custom darkmode style by specifying: ++ +
```swift -let myCustomStyle = ChartStyle(...) -let myCutsomDarkModeStyle = ChartStyle(...) -myCustomStyle.darkModeStyle = myCutsomDarkModeStyle +LineChart() + .data([3, 5, 4, 1, 0, 2, 4, 1, 0, 2, 8]) + .chartStyle(ChartStyle(backgroundColor: .white, foregroundColor: ColorGradient(.orange, .red))) ``` -**Line chart is interactive, so you can drag across to reveal the data points** +**Add a background grid to the chart:** -You can add a line chart with the following code: ++ +
```swift - LineChartView(data: [8,23,54,32,12,37,7,23,43], title: "Title", legend: "Legendary") // legend is optional +ChartGrid { + LineChart() + .data([3, 5, 4, 1, 0, 2, 4, 1, 0, 2, 8]) + .chartStyle(ChartStyle(backgroundColor: .white, foregroundColor: ColorGradient(.orange, .red))) +} +.setNumberOfHorizontalLines(5) +.setNumberOfVerticalLines(4) ``` -**Turn drop shadow off by adding to the Initialiser: `dropShadow: false`** - - -## Bar charts -![Bar Charts](./Resources/showcase2.gif "Bar Charts") +**Add a axis label to the chart:** -**[New feature] you can display labels also along values and points for each bar to descirbe your data better!** -**Bar chart is interactive, so you can drag across to reveal the data points** - -You can add a bar chart with the following code: - -Labels and points: - -```swift - BarChartView(data: ChartData(values: [("2018 Q4",63150), ("2019 Q1",50900), ("2019 Q2",77550), ("2019 Q3",79600), ("2019 Q4",92550)]), title: "Sales", legend: "Quarterly") // legend is optional -``` -Only points: ++ +
```swift - BarChartView(data: ChartData(points: [8,23,54,32,12,37,7,23,43]), title: "Title", legend: "Legendary") // legend is optional +AxisLabels { + ChartGrid { + LineChart() + .data([3, 5, 4, 1, 0, 2, 4, 1, 0, 2, 8]) + .chartStyle(ChartStyle(backgroundColor: .white, foregroundColor: ColorGradient(.orange, .red))) + } + .setNumberOfHorizontalLines(5) + .setNumberOfVerticalLines(4) +} +.setAxisXLabels([(1, "Nov"), (2, "Dec"), (3, "Jan")], range: 1...3) ``` -**ChartData** structure -Stores values in data pairs (actually tuple): `(String,Double)` -* you can have duplicate values -* keeps the data order - -You can initialise ChartData multiple ways: -* For integer values: `ChartData(points: [8,23,54,32,12,37,7,23,43])` -* For floating point values: `ChartData(points: [2.34,3.14,4.56])` -* For label,value pairs: `ChartData(values: [("2018 Q4",63150), ("2019 Q1",50900)])` +**Show chart marks on the line:** - -You can add different formats: -* Small `ChartForm.small` -* Medium `ChartForm.medium` -* Large `ChartForm.large` ++ +
```swift -BarChartView(data: ChartData(points: [8,23,54,32,12,37,7,23,43]), title: "Title", form: ChartForm.small) +AxisLabels { + ChartGrid { + LineChart() + .showChartMarks(true) + .data([3, 5, 4, 1, 0, 2, 4, 1, 0, 2, 8]) + .chartStyle(ChartStyle(backgroundColor: .white, foregroundColor: ColorGradient(.orange, .red))) + } + .setNumberOfHorizontalLines(5) + .setNumberOfVerticalLines(4) +} +.setAxisXLabels([(1, "Nov"), (2, "Dec"), (3, "Jan")], range: 1...3) ``` -For floating point numbers, you can set a custom specifier: +**Apply custom ranges on chart** -```swift -BarChartView(data: ChartData(points:[1.23,2.43,3.37]) ,title: "A", valueSpecifier: "%.2f") -``` -For integers you can disable by passing: `valueSpecifier: "%.0f"` - - -You can set your custom image in the upper right corner by passing in the initialiser: `cornerImage:Image(systemName: "waveform.path.ecg")` - - - **Turn drop shadow off by adding to the Initialiser: `dropShadow: false`** - - ### You can customize styling of the chart with a ChartStyle object: - -Customizable: -* background color -* accent color -* second gradient color -* text color -* legend text color - -```swift - let chartStyle = ChartStyle(backgroundColor: Color.black, accentColor: Colors.OrangeStart, secondGradientColor: Colors.OrangeEnd, chartFormSize: ChartForm.medium, textColor: Color.white, legendTextColor: Color.white ) - ... - BarChartView(data: [8,23,54,32,12,37,7,23,43], title: "Title", style: chartStyle) -``` ++ +
-You can access built-in styles: ```swift - BarChartView(data: [8,23,54,32,12,37,7,23,43], title: "Title", style: Styles.barChartMidnightGreen) +AxisLabels { + ChartGrid { + LineChart() + .showChartMarks(true) + .data([3, 5, 4, 1, 0, 2, 4, 1, 0, 2, 8]) + .rangeY(0...10) + .rangeX(0...5) + .chartStyle(ChartStyle(backgroundColor: .white, foregroundColor: ColorGradient(.orange, .red))) + } + .setNumberOfHorizontalLines(5) + .setNumberOfVerticalLines(4) +} +.setAxisXLabels([(1, "Nov"), (2, "Dec"), (3, "Jan")], range: 1...3) ``` -#### All styles available as a preset: -* barChartStyleOrangeLight -* barChartStyleOrangeDark -* barChartStyleNeonBlueLight -* barChartStyleNeonBlueDark -* barChartMidnightGreenLight -* barChartMidnightGreenDark - -![Midnightgreen](./Resources/midnightgreen.gif "Midnightgreen") - -![Custom Charts](./Resources/showcase5.png "Custom Charts") +**Add multiple charts in the same frame** -### You can customize the size of the chart with a ChartForm object: - -**ChartForm** -* `.small` -* `.medium` -* `.large` -* `.detail` ++ +
```swift -BarChartView(data: [8,23,54,32,12,37,7,23,43], title: "Title", form: ChartForm.small) +AxisLabels { + ChartGrid { + LineChart() + .showChartMarks(true) + .data([3, 5, 4, 1, 0, 2, 4, 1, 0, 2, 8]) + .rangeY(0...12) + .rangeX(0...5) + .chartStyle(ChartStyle(backgroundColor: .white, foregroundColor: ColorGradient(.orange, .red))) + LineChart() + .showChartMarks(true) + .data([4, 1, 0, 2, 8, 3, 6, 1, 4]) + .rangeY(0...12) + .rangeX(0...5) + .chartStyle(ChartStyle(backgroundColor: .white, foregroundColor: ColorGradient(.blue, .purple))) + } + .setNumberOfHorizontalLines(5) + .setNumberOfVerticalLines(4) +} +.setAxisXLabels([(1, "Nov"), (2, "Dec"), (3, "Jan")], range: 1...3) ``` -### WatchOS support for Bar charts: - -![Pie Charts](./Resources/watchos1.png "Pie Charts") +**Combine chart types in the same frame** -## Pie charts -![Pie Charts](./Resources/showcase4.png "Pie Charts") - -You can add a pie chart with the following code: ++ +
```swift - PieChartView(data: [8,23,54,32], title: "Title", legend: "Legendary") // legend is optional +AxisLabels { + ChartGrid { + BarChart() + .data([2, 4, 1, 3]) + .chartStyle(ChartStyle(backgroundColor: .white, foregroundColor: ColorGradient(.orange, .red))) + LineChart() + .showChartMarks(true) + .data([2, 4, 1, 3]) + .chartStyle(ChartStyle(backgroundColor: .white, foregroundColor: ColorGradient(.blue, .purple))) + } + .setNumberOfHorizontalLines(5) + .setNumberOfVerticalLines(4) +} +.setAxisXLabels([(1, "Nov"), (2, "Dec"), (3, "Jan")], range: 1...3) ``` -**Turn drop shadow off by adding to the Initialiser: `dropShadow: false`** - diff --git a/Resources/barchartcard.png b/Resources/barchartcard.png new file mode 100644 index 0000000000000000000000000000000000000000..2e8161797a0ab75693b37594ce0c5171e74537a9 GIT binary patch literal 65497 zcmZ_!1yr0(?>`RXuEpI;aVhTZR&;SM-Qw=9#odY)D+P)aio1JZad&rL^uO)>+;YC} z?}f8xubnFy$t06Z^7*8uB8!efi~rfXtD_c4*Sb!~r@{aN4tLxcvzgn2IhNfrKWT=$d4-KMwWLLlXI_WXFja B; I>pT1ip5t^QVtlt2z|eEVM39P2rYz zZIPtrnfyL|?{Na}_@($_Z(W H3WIEcg5y=!3Y8@whgQT4WapX;>zNg-HlZEo@QrGXj z%cf6r4)Wv9!R7TL&MJ--6&1pvAAhCI3L{`$yJe%@Cs{)g!ocDNdOSupV~JL7T& A)H1AQo+=UAs*MgSL*1HAq1Wy_^m*%Z< zk5z=urEX*0Te^?yW{plZqS!D%RFz)SWdegU-n1eVjtx2YhLum>N}MfxIsV+H4d9wC zl}eQCpZJc>aZO8O(?IJ^77EizBWWtdcdSi&)V!8MxVIy3#~W1r??ER;Y`#EBoq--i z)HPk_>oDGyPT%LtTzAN_0dH>mMV}{xAC7*k)5_UTmiQIneN^NWX8C@jnW-b!rskFZ zvv`m|k!fb7!GNk!V&73Wbd#swbo;i4Z7LS>({S)7?Pj$NDQjV~nwQ>u!*_{ol%oE7 zTvl5BH-_7jk7kyU+eP~|Tz}3U6snHP!eqrHs*3snyyJbmpp=;ei`|5YgpsoMKF14n z>oFzQhqKMXw@aYbvrslPid6infU;oQTX_oZkICNGWyWNg)n3;hZ!7(uh9OkW*_lO2 z)VWHb6VSSwa>d~xF#a1nRMf(Ee03V<@#z<`VBj&8s@EIFd0cL~q{OC3yof_3vjR7K zCRHQm680vqNyO>FMp^o%DlY|kNPuE9siU9#-D630d%a{omD%+tiq0oYd%pNYF1T z-$9p+-mEL?q~Zd=JRjRU=6+XyDY+?jTHRj>l pLA{+}8w=o-XK${^MDEkg;<#=7vRl5wzSdI@h5w`D?UaTpKfdN$TSYR!Yy0No zpC*=BBEC(6FOQeaN?-+9DvD*NEUT)G$Mc^I`n*-}(6)=dx693Y+Jf^nYZI~*=uahv z1I}Z1t=BVoQ4GKpxot0X-!8baH $ubQap@Y3cT>76NE3X7;53HvUm!n#=^)2y~scZleP qx6EvIMlzDl4>vCE3ctVAE?qv_SfQ?3SHhK-*S*=|Se{oWc3v-yLE zFM-MJ5S0;3x%RHKeAK2Q8WXQ!?G<($dc2=)9}D1!z1J*R&1H5zs_x$z7P%OpA!@hR z-5H>X8!3^Gd#v=kE+bOixM-4~yzhP*@x0Ja!ks#=tMq00@qRRO#4^n=H4VHcE1D^4 z|5byeF}3~qx^j1WDt6BQ CFB!}|k`!#RFYt5)3f2mH z#HNv1gAeaTLY+D^x^1dzFuG5v ;Ezw2I)k>1v5C$;DFTSqlUvX?S5&5L1- zQzccLaBsWJK1-$bW!svQno1(yMV3f^73GS@DA{yyPEh*reA|91)QK`fUap;E0IwKs z@d$tLXmaG?*^$&3^s)LT%XLO~JrrhTCwei6bqp4x?A46;%!Fxn(xp@z$Wzmcfg%cr zWXx}ih633>ws_DS+Dv!_a@wCep!eD;4w=J0Y_s|AKSM^L{~?i8v(}d>rn)C^O{E*) zJo=M*z>J}&oHX6!6FkB9QKrh4$=1v4Q 2kFZvMIpt^jp^{$uAEu6xy;mf)}QJldrUmYEr$zR#I zZvkTd!umgBR^y&pw=V z1IZ|`%=&UZ;9+A7+j|K7kEHniP4^UC)0E6i6h}ifm_|c7ng8HxfdmDW5LTJ!)4u8n zWb-7`KYDMHtP&pZZ^cXQNxYL4UX${s`i4bD3NmhoEJ|Y49NvA^*WDvO0QxhqzP@Ff z#q?5Jj^2wff(miv0;f2C<$k6f!SGxr?|{II3h(L(A}o{;L?=}37W8kt66W9r7Dqx- zhpCrdHa`v}M~SY^pf)i*%5SsA{=NfNUZeVy-N^@5B9|FLsg8z_C==DzJn}pUmDK^u zt~hR=9+c-)zvL8knfmz=9C(-Ib1~>iy}=@7I=UL?|G4RpU6nvT+Zkna^+jbjL&QOi z?cO2l);yN~b?x{IBP!c_vAd3F5ub~sTr~Zp4;1W%yh<@OjjT`aKV|^M#^?))45&hn zX!^;W;>*)ow&+Zo$fC{YeUE5vlX4$v4U8Y>?k3{=aEn#u`6+_>H3fPS&~2z@+rgvu zU3DSlE PE;%+v_EjiEu5cy^^TS02ysGf1*bHcB0ypelhHI%b9?JS zTwu#uA z@0A#{;rb}2p*SmJI~m1ahP)BQOPdPk7wB6~I%SW^N!}Cz`@fvN!29l5M85j*lXS;k zH9|sU_AO@)R?&gkeG&seH7AJlR$NFc#%K&(fKP>QJ;XsIH0@wZ u}U)J)s1ciJbi}5 z>@@;@4Lzkn)6kAg315NuTWiZKdI#`6B|iN_CsSqQ&nk4dF-#Q quiY+!6|Uz(g=s$=lv8E#Yo^OOnjvMj$2qj74sg8{E+EHw}SS-1O@4w zX-0=r?-U(AhG;;TTj_XLROl(-wZjpAm{xe`k)uA+ E?72gkvle(9qtCDnWBV zeI(`}_wYPChB$8BbcE}u%u7)CWZ<~iCy>5(2+ {XW z8R^`O&KtsKyET1<%GSb;235Ygk>)Y^3C_gv&CZ6-1Vj{A>aUH;g}rZ%*ypN^ ;PpU-HE9;FwnH&ZEKo5QcnJS{_*97n*tk;4z> N^4y5_*M}B&>Wq7QiJIFA09a?wOM`Ew3y&@}`%H9@o261wN z~2jds4>bI)<6n!gI&t^pl+lz=RHbSyL&G#4~nQYB{&vhDzk zd9xunRM@BvDzn0BwQTq!dFs&ZaOtZ(rkxF5=%irE9@zfm*=xUd+#!mo;au7ARP8bh zt2_v1q)(FdJ}a4pY lU9kyog%B_%yl1T@o_<%z^Pt(*(mf z?|%^l21is;=16Y |Kd6Y6CCa`n 4CCK{j2hpWLBZ7Q+&l- $V!YvgTPwO5$J z5N4U_Q_Y2BuH=V0Xa*fQ$Zf%1u^Kv*#OhhKuB^&aZHaEkL62(0k>PYnsUeRz7(L!T zP`r?tOh4ARGdjan;tdVc%PXWC-0vmBU%blipyWJ$t<5q(xc>1*>pH{!cOF#CpIYq} zj*0&c^{CbbedY1s{V 1|0gFKfY=7^!f~97=;#NF 1BfW*4Ws)S= zPpRteH5oqYK`)Btn7B88x>uJ(fO!HR$%mRJ=tBcaIDpI^Y%p)E^z^m>PpZW^rv`ty zYVZdR^q#)_F0L8)z$AE-VN6hTZS|7hC!{YLyEHSaAO{~i?x&1mjalT7AoO>2DS?l* zoV}BC)X<2HK~*&m0#aNeqVeSSBXy`_e04NZ-yZ36?kxn7DwLTt(Pz +jA3{ z*KdiD2%)$<7|QwDe{Kd^K)m;eYKdI?m0Q1#Fj^HL>#lBG6PXsZ1X|&kIyN|fW9~;C zZ1{}B#L8Wa)J#JD+Zjp1#0ZsE>~NL3P>0N@PjnVhK)DEHso+vcm)>+SG;n++DPPSQ zSw@5K0f|!-J`0NV@|-0(YIwO}(L%8R<8=|mi09@z+a&S>t@e2kYJZRma}dxT>zhF) zn~m8;7rzx_6&86DhR5OediK1E1@b@^st$<<-%`VYp50H}K?~D4Erpv+VwjvQzzFgz zmo>@Sc|_D8hJKfdVsh^v?cc`#g2;H01UAtE0{SG0t)a9DNHws0{K9&B%k52nfyCRo z?&8^*xqUQLqykmfdhl6>u6o{KVxV@F8C`#SB&I;1FXkp%+T;ONSur8|fi=QlH-ZXm z&!_M-IMD2>$@fi!i9TER%|zuDc2J;u?7?dAfGjX+AeXEXCD-b(=o{*&@ms`mDjEQY zGIa3ftG}LL-%g2AM)mvfmKC>nl%F_jCJqE5Q)Ty5xIRHLg^~8JYqS;8H78}5`JLhg z 0pqeixltDm9!caWl2OXglJ@6{i2J@+_#&gAU zH}sU{V>8A+)^`KcbCT#54#r2iq$yj+Klwz2S1_)MRW7eE1dpn!28fwZQ6uNm!bdrY zG<6}xGW B{RlCDBEl=e zh-yu7jCt&A;}^aaTnltmFT%Vky>+?nA-K}c4QbCSF=kKLc>AG=Q-xbfv$X=&az-B- z)z9iRBqCcWHy<6gQvBP*!!6B @R z@SeAL1C8qebC+bIZ7c)HM4*0?1^rkz@tUVyZwb7tx8F&SI7s51i~|s7u~t*IntHkh znkpnTMzY$|T8}JE6*4JMj_44-V= +%F4Z_ mo0X%W+64|gAICWmkXj$gruf|2H> zg{J_c54@)Ap=dRGS%)wsZUgkn_=H{6Noc#_&Q9}|X`%aC<*p{whlH*Y3XW^Y^Ykn+ zNaocc0gf!mPE(lB{lqfHQ{*X|lH>6P7-Mu#TMKJ3+Eqb!j>ZlZVmWiek(H!t8zRnR zlLSaY7qxL|tW^Wm0fw`jGb#}x_-YZv8lgWs46V9 VJkP`F zo1N`n 9j(f z^)gWF;)$wt=iyc3qql^!7` K(%IN_VM0)+||1C0`qe1uI@xt-9sN$ z5gxx(->#9)W)FfXV1`q&JhT41|B4xxIoe7enwjNsqon0350~i`h2{Hiuu(X&9Q}(L z3lB)B;*Vv<+j8c%)7O3nA; EO)JF0YJ3*4 zhw(thaiY&2RR&ch_#Wd|_|m???^ai$9;Eg6*zjL>*`O!XcF- }rz|IE_2} zDwU%6hptqdRton!KyrG{rX@Un+@_E2QLr3F^zzFE8sQwXBYKhncE;HCW1al~yW$ zfAGn#AuJuAE|=G#@q3lagvx!SR(hM0@(>K8Az-#)e2+<+kG&|j{P@eUfqe^?gyFzf z;VwDbx2wO)+kt`6V!;$6ciehElRPq2iNjy$KHnlAu5~KS>BC$gIu;uf9@WYe9ray_ z#qTo|zaexXEaY15&-;cba H#`n;`e>FeL`iVlH z=ND@PY%mL~o6^aBlkea?C0=d9&p`fJOM8Af@>xnLvPlg5r|rbuPlsWLnEk@y4^4-F zQ$*9PEXhPF&+RsoiDiL`-&mh1QJCmWAJdTCNDRNba~e!h6`HY54@P6t_(?uCQI$j1 z#NbF1j);L?N=9Wrey8n$!hM>GtR|4fP=$t*JlUX2FK7XGw`e=*wT=SMnCeetvLV&s zs7ozlDt-viOpC&4QaZEC(Q~kPo2tYog@Lx@u|Y{)yD9lQpJnoE;ob{coQLfJf~0rk z$7+E4BwLN9t;vg&a2vfgm-N4)aVofv*(TFZxTZd4iI^96RBZefiB3aNPfixJtA_Iy z4@1*5jq2NUC2oCw)h&Qn2ZnhIza`d-L~zQ1>QGu_$#h9=+lS8wU$O`9H-7dzISQ qGuh}De%EdudSZ_>$Ka% zYMY(D@vP1Xe}!A~w~ERozx2PrQcs~`%csH9#vOXCe}hFJ2w@Lw_8@ML@z(35f3Xf; z$j~%^R=Dy~?tkC{ft^tS*yWwxCl$N@GXGLUBJ4b%Gf}Si7qx(91Q%_BzT#{z{4drZ z&`6>KNt+E?P;IL30Y|HB^k{d1#H(yt1oRIE_lgH5*o&fk1;L$i?=mn@-+imO!XbphN1c*oN*5j0{Q!bw>P oa0fF%y<%~$JM&g)jgYMNEIQf3*5;Xfo9x^g1Q>T9YSx?$DQ_7rM_|(&tZAmM z!khl^0V}u<(!DsA 8MF1+DjUGAEU2#x7qt_Hm(;8MqG9R54LHt{y};K zddcRU$Tsih8lRrDJ* c5SNU+k55#D9KVwYdugt0sDD^c z>M8ssEiMv!F>kU>k){pKdvlL7Tj5nR?=#Hy>Z%jKGq!Jl!M~7sZO-2%KTrF5X#B=i zzdanCWM^<82ZAG5PFl$Kth-(29T$E)D>#8<|1(J5zIUO2l3#Xw0(yED;s3#E|HcJ> z#Ql8_j)_6 FfLG^J4<%u%5S5i}TSfR)u2 z&nW$-D YlahS2JyuOtJ S|t{!DH(!%EDi+!665y@sUaAJIaNUX)FmZkCLH;rj#3x-4dZi`XsIIe9gAq z<<6-1>Qt%5^4 kFw)k9h|I=>yK)XWk z7}CSm;_6O?cY*KcpSSll>6D20kV# aj^5rm;ihBO(L)s-;FbFVP=?-`phCC#hF{ir@AB)r0)h4S*ngs5NM<*02AdEU zE-DF%Vc>oq$k7##$gH>7XNimwvS<9#G?nc Yl?u1f zW9EbO3sPu2jukjK6SMh1A99fU(lXV$2H%fpb~&Yi+AK#&wqOjiRrxUL1a8sAw&4xoLO#xPEn?-2YKNw@=eb zmhzMLah=sy+2a!bIH8NLi&nX<%a7nVcy-sub7z>&FRD}SWBgW#iEg9ZvxpLW76VxB zAm#cno-D^cpj~fdN`3`om1V-E*$MrjZKj3>Egq%6(F5cQ#eO!{6`_B_tpXRMP1LZM zAufjpVjkS_jLcf)qg@g;ki<+#3lQ`ZH5IR%`K{I1h^m!o>3RhpevfJvAJxF?myT6R z77`vC2Z-ji3vR{3lBE(2Oyj5u5k i$VwFRm4go&j?U_i;gFc$70WpvN^ z#h}pryUn<33yTPPa#rR^|Fu9w*mLh*rZF`9-08B}hQrGC!KYJyUI P$l=ix2DI Me~g{cI@?gz0j^%F<`7<)gExfM ze+>^KL(V+KcsgazkkLQsli!%sy4c?qIDicM%su j5#(Xc?s5^cDCpi zn*%hM A4rH3+agv&5YioOL@rI;`sHK(PwCnEd6|_YXgSIj_VT_A9 z AkGYOV BnnOAFl!h^We1uM(+t z`xs8 Cd87T{xK5$gMi>eJ6N@kXGW+7I0%&+ zHIHGdYZDb~eb0ER&^HCvNzFufZHT@BB$Gv_+cih uSfP=s&x*k`Y@c#%t^ zCa5jCCz*jTv^7a7H2*NiX|oSYG#>8McC#Fcn1;85p{MtAmsV8yyRndo0i;UjG*hv> zPd0N6YzCr@(=t)$!M~3RX)NE}=`3;4YosFJ<>~=CzAadfL7gFb1&~)8ntos=RQ}(D z_I0Q?h&U g-GzJOG`0~t_vh>1T91JLzl@pOA z%N4bJa#0nYX!)M;Wn+~8wY&N}OX+`+!}?}0%$7tc`onY%Us_Sl-f_v{8*RtBWgbG3 zt}&KVF%9nCX891b7LLAul(I(?Yu|f U9@ESOVff8msN8(^poC9(QCg!*2 z;I6Ivs7xJbT>RboV~t1 ?*{hSP5<3hPF{Bv6s2|o3!Y-hL$-(!j#)np zq4#~tO)VjC%gT9jHW&h@5HFb1kHUg=X0yp;X7V3Bqe;n~mK+pkJ7s>E&Q)MrE;j`V zd^Pe=b{u+ZRwfxiNL)jqpFvM}KiA+rq^NyN4XGmoJ{Bj~x9KV4~-kiwC!F;+n zi7ZX9mNXOvmkD_ys&8xtSXKmz9Sj-gxMXp1B1~Htg2(KsCK4*@SaW%;mi-Kh5C=kj zeEqZ~);&ft9^*1sfwvM+9c9ebr&%NuLw#GzcXD>*IdAm@QTJ?jD>c;_0R5j~@&E24 z`*gp;t$4>u3y?b~bLd&Nn9;Wja+?~?SN;qUaX(%(@{^EJg?K=r43stOH!S|XN{dsS z%r8BvNqIYs{&dr-{!1{6lpE;uK9N#`0{&ni6eRNB+(MoYqGg|tKwhv(2C@iw@R7XR zf0`K1!6ei4OSXeYo+|~t%~a<0q(R_XUb_fXHLgvNc+JhSoBs)Og$Zmt>9VhJA;vkJ zOLTT~mkD+!vg4>ILS2egiy)Xa@1&|N!$FCWk+J26BOexYz!io-OhkcPO=r;3<(|0; zUq_isV^2)GP6u^a(^qMi>8PXn9b)3pgU%YXzV$xYx7DEh|1lPt5}C(HIBrZtwta`E zIGI7Peq6>dvi*OP*gKci`9$$2T@E5K#KeDbJgF_~uV79ymuOaxpU_-6Ltx9jrad2y z2x=(52(} (gqf=Ljbk(x5f6iR9FOD=J4}k_Hj&xlaeAEzb4D)))!; zK~+qLUW-J`>XO&<3x2ZRNpnJdns#O1H%yxf)wNfejV7aZ*r(vh#(m3cW9Y~iU-z$X zT%VNuOD(LdAG=kHP3(b6MD zoD3|KJOiR|tK>b?R}{pguc52kir4bPmO)uAe~h(FW)!DEKPQEbDwb-9ji{DW006S@ z4wfkqp<710{bJ6@SdBUEngUEI)9F=gTY14@Sx!&)SG-MDD8_2WAhxZ2j(>lM%y`TX zm$0%h_0nBUE*N!MR?X~k;c3<#He<`m-HItY?CsDnXJeCz_DV`ul+`)8G!qb|as` Ob#){Jb$WjXN{Kjj%K1#^bJ^Qf(|}^FNFOo(~!=9oC#ZG eyw}t<_P?GkaU+pOnD#eCbw~41#JAjH^ykmBd?Oo66 zAzQL}^0!!)512jbiNt+iQlQPZ#6W0 Sz;wEcV&i6o9mi{oU{y|glKgU?@5A?tDd?eHO|6Npp*&hth>rS=HR5ATiNc`Uo zU_qu2TU0X~Sl#o#hI$_g_!bB2w zOByixz=4*8{5)_6nf Mmb+A=9YU~)uN{DKfgw*q(L!Kh$||Cig?C-D)Lfsjf7_D@@S zwPNd|BO=T7t~1O1$pW3>>-{M+pw$%I0cgDaJo$y?@DHrNV^BX?bcd)~KHcvu^+i$q zV>bsz1@kgJ TWwvjDuf-EXadPQ{toE6DBfEMH)5{;e?%v+g?5 zoN+DSaP|M#1@wu-qJ0o|PVU-GMgza?&lM5><4Hw`eMH3}#`1;(C%|fqqU=eo^I9S+ z`)u?^qO=ujR?h?G=1GxMN {#~ho!k-p6HCTF~6fk2S#&a^K*^~V$(Qz9LhBbhFpcw)?vcZ_Eb{;UMfc&hk zGDm|Ab a)q$JM9%wn67hHDIIyC9i zT&GP;*oZ>lS1wpjDssXw*+3PB2~&g9Xf}oaZryLh^&w;|eK_^s6`AAdmkEDqvzBmw zAC598RO~{L#ffKJw=FI*e3}Lf=6(zZ71O0UGcxdL0IGta97?C|;iZ*QSjI1(UEa;1 z!e9ZRz+4G*j6}UIYQMKa%mGf75i~S3^jy-e1+Bq%J tYE6FvR>)mdSok!!&{{YRJ5H-*@nu_wUta8|XQ%LF zv?p~NVURkHp0K@iT8kZ^r*?Ik{3-?e8~7Z|ajde!`E&t;@u3T+*R#>_c8V3+L2W#f zM-QWJ(`1_GeSv2Qj&j&S-aC3;zt|1=?&;}ib5`O-v~&b+E*H(IZAnx!+s;SLGF$B) zMbmGLR=hgFVic07BhiC~i@|rp0p=MlgB8_r+?0*ywp<2V;e)n>9>y4K_q4Y72}ToY zQOi7njN0-#a(ClQHRsZ1xK?Qu!=;2$jk5$L_zj<{W!0u^=lz-H<5HLN7(DVK57EA( z!;-3MzYvQ3s=78OmRZyN5FOVaYCW=zLOb<3s{LS$h?-3E5r!BB(T~q>^Kk9~?qK5n zia?AH2Hg#`_F)kyH9t6=G~YZ3Rvsh53?tDH?vSeT*oPDGPp3JrBLTC-V<+xKYr7AL z3Vf!eDMB6(q%m9~fnjgGMu+BEq}3=eOcjgS7(MB1hc+zxE>Lvb#4F86ww+>cY|{uw zE_nKT*)ap;3AEh^VCiYRcRImk5m?#Ujlz6!6k5YGE34%{2wStw5}N`SV)0IDs*F?h zJmQ(fgiYB?wSD2Ho5JfI4yL`E2eLy2YWips^ks0Fsf}lbO%{GTMyUleL6|3*f~4wU zWslwl=S2Q|C*)E5Nxed6w=D}-a4VX89+=(TpR!3V5?5mgZtWwZ{h1Ngp3pyhv3qe4 zcnLGRk?IZD5^7n#Ly+NGSqTlNpsDMzVSn_f@FQ6F;HJFkM%eqK9#*UeEWBUd`@p~G zhX-!`?lAr=FhmpX7g*=s!FS84$n%g#WVKKo$OD7_%cKYO#k!ESw{1ut^kdY3)m>KB ztZzrY^CwTx*TCMWHxQ2_< Z;GkuHyAg6N^jq9BgP89Y5AB= z%BgVaT2V0 B4Q=iLn%g{MLZ|c3Q4?qf?pa?Y zc!D!p4PJ>7Ix0Rxjy|slXF+0R*NCc=`F=LdQFT1fhpgzKbLD4>dPB{366+F0-HrJK zof9^#^z$D28vQlRn;qt$`-jZ-moGo&mpLPr7C4V=3(b;U!U*^*gm;o3BNJ9@_Wn{O zzCw_yB2eO806^0DVW=|Q?>qelr)R2Us`v=6yT2*&+N@%L_&0wq_;9!)G41p9++sGl z1lB1v`I$EVHSC%)&&g`-7rdGB^KUPZ ?05zsv4$qZyHLT1LYUSg&XA#oE0 z97-Y;oGcnM4g!d7k-3f68JIsMrCJWWnqPcGeSoS h=lf!OO6&H#+TtF5 zzzH6M`dwiCd~qPZjsKP`_1aFqYHYe<=zwH ^8rzLg#eXqJEL%w?+EW4-A!zjfQ^QGQ>yOAyz&B!q2 zj}|hPQOr}^rq&ZS#*s$G+NX}{#dA1eBA$Vfj)$w*BdxRx<{qBu>Vw@=;}E>_)twHq zk%O~A(#OR{=Ehnxy|bzX+o9ga$Y^>ye=?I-RYD&^3RI$b!}jrW#>q1cH8ji@j48)5 zXeg6*5r;~F#%EMo4DxKZ<)IT71|+8k^?Y1{o0=Id3$hRGlv0Qrzk!Vn9vxbHF 3?z z0^>)kFfI-`R_gEE!dMxd?o=9gv~YymD}$Rm)4y@N{Yw5JAFBk!Glj9*3MbcUgxqt@ z>UX3(pZF%uo&&`jTl304w+AB=wf~G8ROexu7>-^4VuePqmTc8Ds^vj)X>-zGdNrjV zg3LHd6;|X>0XDa)nR>cVw;21q{cI}X@bgGPZ~fp8UkMAN|7(GbnB*xp!eMn@=3{lr zc$zP@C{c;h)o3@GVLKqB;F-WClx0viXs){!ZsxhKWIG3b;(Yzdcz;jStRv0X_DVdb zUoc16I|oc2;{gTgx-O}XXR;g{TJ#i8heNUJIOodM%pnd&`+jKjKq~x1wb@JqO@=$$ z;aV*~%Vg%@^!rMaXobBZMxJ&%DIM4BaaRE0_HzWlv38!%BE9N>5o?X>z=O;L07oun zygYut>3XO53+GQ{cXIZ@pTw{&RRo~%m})O?&@`?NsXiAdeN1YS7tb}3?RRp11OLu0 zpiM*q>i5PBw`H1B{Q*c&SZ=SLtJExG*(43SqTc>48byshPUdVbu+%ibEak;*rop?w z;bgY0O6+FVD6-zl^CIQ=m0kFr?vm%WC#$!=e3{2xU*>US=3^emUZ(~!iR_w6-+5e! zV|MA6730tFTDC&jNIQ2`5#>e!n4cHN*HeHQ@i``TUVU@35BNxyfSM_bzS~-rm;mkN zBICs#V5Jt8Y5~>>a _(v9(-#El5PnH`^b@OS1&cZy;AbgNvg{2oGBt?>x{{)S4Ll$Z-Mz@^uE7 zuG_51!f>GZb~_UMgW8UGJ--XWRZB986pTMy<;Wap$mIc2T0T2I6AZ>hQ?-KKD IFE=dJScMBOLHqDx3Q4;n%ovc4J&V;1#$zgMbTx%cqrYl&qx8oBZGOc^ zPf7mTm&_X7D21(FAs5*MCWlu#WeFGHPr!gUM*|y8Jg8CUikJvj&H$pWORuKyTJUcDwO9ZpO_oI^+6U+0THr zvG%W{W>sljt%}1ys{rGCEUne-TK%v|BaFAMq%h~)rYfKiQ|vyK6e~}#2t+b`u07Ae z%?QsmqQQ%cyg&rfWHya>w>~lg*(8URrdEe4lAZ;wl!46oY&N>7%)IXXwDM AN*MX&4>ddJ|5Y);V^4cQYR=x^=&LXOQ^N{$N@<> z%rcP*O@kIPASA*X ur=z?$Ne)34D>4xh78@HxMUT0H-X_`}~B5Wr5E1qi^$6fd{ z+G6 r{sYEkHxpx5RbzZqlw^ulRSkqeCwztcYALHlXhg@7Eh&tg2!ko*~KU+ zV!W=G^MuwqVDvlt1fb-|ptx~^yCtd2CjO>}`x4_?tW(9UTLYcX7!_w 43>ip_ zd!zf ^qB?%o@ ZW#kiK3*uW@}LdB34oQ{ zZi~N=A`!kWkMuv^4|T8R-HUkv+`ltRUN29_0EA;g`W VJa^nPyiwg0?=a5 <11 z0}xHW5-)RGI)EPgrO&8cH>%@tHRaQ_XgkQ5C48xIQ2fJeJUC1QR%6rSelH&Z8d;`c z_jhQA=z~nJL9W~FT43ir)qMbA*E^+O*eDFT5A!qd9pZeythz(6vq&(d2fVRBqr%e@ z;e@>7PXOqOj#H`Vv9B!pyd(VLLYj}O=U&baD8m;+0rt&nXjX`4+yE2j10Melxg8A@ zdOtpu@1CVCV*LIsO8<0qY$~;Ue5JF)YXLz-_#h(tc)BgB^LH 7G zovEserq;&z;93McIYl4=;wCE6y^F|U@@xBfdmB>LD7P{m4_=>yIiyD<3}ojAhpKd5 zk dUdRp0X$E0s1^3z4R^MeNV;O zry){02Yj5fPpb&Rh!bCSCsr}O{?-8nlH!8?kSd+HtvsaW36k08d}YQ-z+?XgOTS>I zdyzaE`DzFC`D?)087wVo4-n#NwIf0gzxYU5cnm&}*9(94(|)?HZAG(?B$ma3-2+5x zWMg|kX>fWKOKIVTck@g1W!#bqVVqccKHmatGTWsGfZey__oc+V#wQS}(G3$&sym3o zlQn_rd6+R3`WSD4r@YmUK`8&k{NtN?XsK}w-c3wy^I3@gkZ+U06kV^+yTH;&+kr&6 z5iH2Zj&!5hQ2a~GgtEdQTz;_Zc7hg{hB}#!scj)(=hTNHZTo#)l49Ff{;)J7xU+Ya zojo?QC*0b}MPtI#hvX-$tO9Z*719H?4ZrU1K!AsV_qP=IVpY^}ay2D1tj_)R28KM` z^3SZZ>>fdIfp8Z*c>~rffM>sBA*4_AJ?V$oUe?S?-5|bMd? bB^9tG^{ z5DxLcU#xwRWIwP=WR+AM6ID9958Fi!ZJksdOx1_riot)#asyO-0-LNvh)h-Dn`k;x zBp&v=BqpTV{;4ctBsc;=7#}u_93EO<9$NKHLTYXF`Qi$A5z!`sLB4+w5I({rTnzJ% zhz3YS5)(};`>^gDwIh(&%dz*M>wr$|bw@d8VsvVjq4@JotTDM4fqVas<*Co*jg&O2 zMFN~s7b7C>EyZ7CV=Y@|Qhl6aU8w2?Ix@B`!LTB&GE;WgeL|levKBv2u<=RJsbAMa z-15)3#q{SL1}nOXvp?J>v2dmE3h?^Hd_av`(RfhWxCnHxL~f){z&W8FI0`+?jRX`h zG6-tsOTft)1ta#k`fT}E3uw~&n*?)e@krxO7-;%+8Jgp$i6?{Jhf|@LMdT%en7g$i z
)`B)Z`GT{WGj6+RI`GN!;K@*b&H(KH60nsE1GBVLfElO(OSvG%aH)E1 zMoEbgRfW3~cEL*#{{5vTE%*4<4FYfAqePfdSJME3=!^FGfy-x!i<0_CD+>L(_Xrt0 z^TRPEPP1Eovd4GMihh_FM(IKcL??7!|3S}mOfp-(9V&6K#Zz5Ns1Z|u4ovL}{fr!{ zK8@V%({eBZBaBgOAHsUP?ciZZK|0c{XamaE{pe9u`JbQ5Z9P|SQX;s*k~g_o3J=HV z-+EvD@_Un7`vie1zfJl0i9sHd4$*g$j0_*NHDNCQQH+?BtHRhIiEi6C*oOylnk>(+ zL7@`S$<{gjmS_I=bzfkg=%>Vx&Sd32R>olL$O5)2 haq-S}vH9Q$-x>mq@)XV*~+R<(TW>ue`%YfcYm?5#!B+ zvNEEIW5SHe#6c4)xFpeftLN9KSuPEkw5(!YH_(b_Go$Bs+c}Vb8^-+5hlq;DIm{W6 zddxR{H!>vR+@L+#u(zH 8s)~oi)A+=O1 ny7L%7PXgM5g` z1Fk}<O0 zMKzy0PL34IyiLkqsAX%D%JL~eVo%PLO`>1yO2=u5Qy*Ez@ChH(y_HjxSa$K7^IO-1 z_BdNSwUOylATXeK?rgCi63BPZ>sK!@*514AZ!#A6_-=+m&?bo|mELTD1CjOufet!+ zBfqW(@1gP9 @gwAuQWB z!3C4ShYaUh)T?cz)GTtX>!0x3wVqJ$o-xjM4SvS$&H178(H2J;>7>rX`WQJq9rNt} z(gqxJ>;3iWS_Lo%_!C`qbx%tLBLkP{&~bWc%@gPo$pIqIZ!+RFNJ~=L%2C&NBIb>o zL{#I=5mBXKZFBMrE}gmUPqH7Sj}RuqUP}6HiCfq|pp#G&lQ4WlX8X8DHR#;z3DhIa zF$4_@=4EZYC?G2LZ_BJ;F<56iZ~@QsHaO4ECxheYp^H>IIL0JIFw@#Sn@MIok*@PC zOp;*;xPYF4TduquQHYuZF#VyJRj+dejY7g<)tGAR^^-B202~GGTsl!;+STBx;raeR zW`FaNv8SlCfi7d2$S{k|+@a0TcAiFnj7@U__O6qR W`3IR$ePXc<`*OTh+( zF(vP<3)w#n+)}vMug`Lk3*F?1+E1zV$5@s+VzQv99i@g2Gh&^|Jopg2%dC0?#Td)> zcbh~T*#Bv|q%vW!L`0>8CFS ?_bk40!!d;yO6IcO`uR(?$F5(A`mBVuDc8u-ppsg z9orC1ek4Ej#cd)rH*3qwKeXwNC8PA`KA)ZTmggqp1O=RCc;1`dgj=~&V2a=@Y>ei5 ze(|bTs4&O>?3J`^G$w>{t?_F_E8-G{JV-p tMk#hfZHmpA32`M7yE~eR1xsU+sG`-&Bka9z;Vb^e3> tx2Wr=TkhTgf5EIbG`5Q;>Vzd>WK8c){&^6ttk%vjnCpL zM>rxYR>4=ib@y?&d !dj&F#o6z)GhxqJwsaQi8}e zexeZA7BXIjKjlH1L`#DzmHCv-L1WGYZ_U(zKFcsXo-m`Qy?`kf_oAF !=>2^n0aE^|2c*eb327k@%Ho2T8#StT1U=^8k zE&wvNZbf(~N3;^{c81X!2M Tr`y801l z6om|kw6%Zn7VrhxDOb(}Prp%F4(I#WUT}($JPpU)$f({j(>gxHheo_e$O-&R%(>TU zGd#;DMHkU1OW^+Huyix0@T$>d1H{-sk>dsny_&v~muD&M-b&e2f_<;Ci>d9L4V?GA zA)PYyJf#aY{jEnep1}mq9Vm;5b}L6SdUqpB_8aL2d?-aI8Gkf3^U+)!4gK{s!En>$ z>Kp*?`YjW6l)<%EshvHkJ;4_Bv57b63JE%2AP?rGekVOMV~=^DvS%NV=TOzy`?LJ6 zgbzQXf7DO$1$>7bRa=1Oi81jFq(>VG7icPoh+={DHH#5s_yfhL?KPTU-q$j(b+qIu z6S6Gw>-JN4v0507`MFFAnGPssvgMY8wpc(H)_K1mU(BOek3zu% F5?H0sp;PbcW$RCgG~e^NQVQKe>7V(@*A>la2YR-* zCT>Ukhih=4(KEQ0;<=7l18c02P=K(Zr;FC>11)iVCHNFDZq18N^#o_B%AAz~$AOiE z6R$mF3}T%|3fbDGU);{{8Xp;hxa735j!UaK-S4j`{H-##7610v)@bF-tJD;?^+Pkk zCLJ*k-l+zHzh80JgRVn W<*3)) z>y(>7{X9hx^Nno%+bz^TsF{SAg^4Or0ig&w{n5i^S2>;gzS&^|-40*iZK(wByGag2 z5loDU#MSts8&vfcar%3XXwdRqC5lxN&i%kI6wNs_7nCuV8*H0j6M|F=T-UFAU8e#+ zpcrp7{K&YMnB&lqahb}pEj}SHc8peRihh>O-~VhDX#DpC4=CYW1N2T}OJkc<=vHFX zloR%2R^EB2O=Iq=!&bB^;7f+tXDjg299Au#?^rz)h`so1WpzH<*R9a^W9aK>$0OJ) z03RuC3SYLZHb^r|73dCky`Wh<_1oEG zFI->;n%n)_Kv#^r(2^W`KYe9MwA!s& 8e+X>0^B4Q-^Bc$}DhQmvWqtMWL5;0m0vtC3 z5`crIUizw<& ^e$9wE zxBZUJ()2q8J4UDFL(P+hF_ZK&k{65RRorJ|+)sg)$~}YJVGF}(N!4Wpu7BNt>xXV9 z{{6To#FV*1KIfrG*So^=70KrXEIo7xxzAuEjE6+jZj8OeyDl~k6=2vI-5z;Gt7A%6 zR(E~|II$ffpr(t*jG#5}Yi3$XpDq)CvF)JF!gx2+#Ug&I=`N09<|F+|c28YT!9smr z+GE6aOx}H`mu+wB7B*o#V^j@a;9$e65~u^ NT@vJDJ??{|-2X&=aMNQ@wfN3abDjK=-lU1YyDUHwHvyYfqq}zZ3u}H!@DKwk~Lt zm_Zc_kz7r(l>7_B4@6X s1Ry}Ydgc2juUf 56J9N%en&UPm< zBNR|feius{uftGgW)W|Qh-watjFqQf@Y_tX5dIpeW|{!H*-vDKXxBBLctX e{v<(m$BE<~CjW@LW$CYC*(Z&GMVJ!%L-`X`@OHn)hvDX^^u}VkX zu=BW$WA5b) s5NzDmr&-+cf4jhAt*xXr`AG|~rXB;d@c zpbC=y(D2EyVfV>TwhiB5W}L3bnr92^82>(xMqzv3A4UHOc^X^AYGOquP2zv%EK*W^ z M7!3r28fcJYWCec~0Fh2@nHBwh%W#@xVMOtMctX zKf(uSKj=4=z$G&cXj1vCPgl*PN~c!@(rEne!TA90HAJ=WG%zt|zLJ<)K@ g(P;&>>Th`BInBS`< zi3#~hYS(~Ma|xhfu-}xP5c2+98ef}cGPN1pwz4(DF}F!ktErzxBPwm4^ZGmRt}rhu z+;aC;lG`#c%d$~WvflI|%yy%OU>iTh7MWZJ1{>Y1_VrsaUca@o1mpAE$chluTp h}b$_&Rmkv^&A~i+>SFw8YP^}9TA$$ zeHZM8dAQ9l!K7B9Yoddx05u2 onF% z`^yqeDA#Sj<5nfdclAvb#t-1C`)j>J+~nSDcBTg5-I24&rn&27yffVrTf2XX=`Z 0-WJ;jPeBeDu7NyNg zicOmbb85zaW~OF8v|h9@GBZxj&+p@s8d>h{CnqP `@%(bm=-=HXe69$%fnOLnhuc<(4sD)Ms#+ z&te{Tj%7>jEG#5g1Rcybxl}GRI22_wE(XHPjYYnO>9?Sg9LwiXrIu23jhAMK+KQ~^WeB)b5O5D;d@`vs zY@ihyt2G1SOig~AFVT*bepJq@15)PIazYXGD YZeNsNd{ z9?$6{j$koNP_jX0A~0Yf^wKsJUILN-W(W|aw{aLX- d4J88tpAp`f($Yd6NlCth{|h{pr7eVB {xy6}BD=W7d_9 z_9IHG9M8Z-Igy~aHsBpY79^~`GqVGByS|@t_X?|Ywx&SYO1!q!{Z^HyZSn+5IIT9j zUt0exE%-lP9W9{VjU8b-kumC+-txpLHz@wR3|-04flLXyo=7@P7QE9ja_L!q^bW4R zeFY64W_yLU(_OZczJxzp>pTNei1qh02Q_C$+U8adv`N(U)`z7Nv4>qLFaEy0ICb4U zq4TK7ODAPlZQ;!;KxnlYOkid%l-)6We!M%D)w_>wyj>6F?;lBG@AUw%MF$|TT04Q{ zR~js%5*AP})A<%z{leSTSc&yekWxH4U5#AN;;rYQq=k)B%uB!g$?YN<{MOc!O@1qf ze)z^z=<|bQ1pXerln5XtsjKvf=pt$KbFxi|t5d;JsLC*v$1kW338~4dvoe?oDym ByZ6|k z%q{Jq9m8{V`8>WB_I%izE--?JIG>(DSUy6)o>GTQqrWKZk=3Zje(c==m~d<3vThkf z9Zw<16cZcju-hA+*Rf$6Eemv=<*t+zMCXH3s?zC~Vhwlgzv#K9WHja>&S!@I#GXH# zw61sn>8sXK#4g6tuaUJ&`NB`8PLF53jju`OZCY2*q@3ryK(Uh=q%gEP_W_-Fu^u6J z+GDrAA4YNQ3lHuNue9sw6N$SvSXGkiBfU6CtUhyJDSlm)CYXo#$J`gh906~;`fWUD z&OoRHGdHas!KY853st-ul8Qg QN}>m&8M;sHwwiErIz8Tr z2_3(n4b^SQE-c!<#2b==G|oVx`4IRXY BasoU9?% zVAmSRD(eyyV9kIV7-MVG1Wsib+n3drG#FrOcE6fZN3gw0J8|!AKF~QCh+zxDhDAHr zrAp9#TT0^ji;5L2bTKFel!SMnt2E=s)uTs&`RM?qy@3Rh&pja?V);#}`^K7tGz{1_ zuBCrm0K1TgH!HDkb-N-4lY8+L=RNnsya3+7``ak+nXqj|g2&@J99K!AW$vZGBhUTI zVKY*bg_P=!-pw+1>!yh>CFa|=&~NbG8b^QqEjPeWX%u>DC8~vIex%lj-DuIM)oocd zB`G|fSyjTrg7N!r3??QX95k5-G*XhD?s*>n XFB&dDYOfD2zh_!Jozj|Hi{nr$_~iz59bQr~M6*7iR=zdyeu7 =)wUKj%ncQa+1B`;7WaA=-_=wunzC&{-2xNKede0$W9MG}`(JK> z{EMQ$EyBxQ4Nji%f$YBgPRDWpx|E)=v$mLRUW1%PM!b+_u0`gx=8s!LzYvyG`K@c{ zL$*#*yYPZh81@o@WnH_v{s)+yD4qmr;qhS3BH_OE4Ax3J>x9Nds-=tco6B X^X zb?yojJqE6>>LLEjE>pX#YMUB98|-k_W^nWo^fkF7JS)Ke=Q(g|*>My2rXxNJlc?Ns z7H)N0U)(Tov Do7!pX$9Z3uZ8PjeYWkh{x#;iZv9s1FdI z=2wGR@KpH9^U(@17!L9A`Q*j30a!}YB3hpwZt`0n2V3PvJdW)UjQ0diTt+S!X`p%_ zzQQ6yBQK95`P{(i?a5oYD!aD95U;Mk%7Wu%j{{{nuQD~vzVKtG@S!6wgW{W8%o&oW zF_PTZnC<1~@r0I50dpwGeTX+4uWK*=a+K!=x2KUvSfvKD>sYA32+Q^HQVJB+h;tA7 z+wXC@_u~l-kAMobdI>~Z&$nYC?DRWm%r pJLJ))2t!!SvC{KY5qa45rd<~0m^j+ zd_gDrNY-6x*~RyWKgta|WF@%4O)pO;H^FzDWiH`miBO{u7}~XCacVE9MMlS+inghd zr^S)nUcqCVV0PsUz$){^#Hq%!ewXS5EIR0=#8-c$?i}A0F$*xQ0zu=ID`W7PP&q6H zW^eP=2r_+0HdmgnYx%#tLDhDgGeK7Ysos~Y+?T)xi6VG;qpD3oDc{1-BB8FLK%jZL zc7T^Fl&GMV@DBFqw3~-6?I}2YUIFr$2|1v(p(vpk)of423B74`yCjZ5{^UDW9tT>2 z+kpa`Waur!!0QFNLMF79&v8cJNP}jhrjR#)>};Ext5?^dFs|BKAKcC^RFykZF~gZN ziW*J5%xb>pe*Sn&`Xyy+L0}_Pu-{0~? >ExLbsAtgPJ=XH0F>ot)S_mV3_NuYwR%Grz3{eOnz}!)|mNJ?_{%78Ul7;4d|M zwgDXtHDMzTdBP(2 qvX}d^hmc9; zr*UQ~-P9}tHe)tn;2j+9{2?WDC6Y1;7W8U?iHWMSy7!^2w PF^=o9;)HkY}ke{9GLIU zD0-LNBRvj{bYM^03$a&28p$=V#@CKsBM6T#aJ|lOC+yNM2=(N}WT0XmG5Hs4%4sp8 zsEK+IGYw?F_@9+q+!eLn7p1ckZ(#bY0eALFPQCzO3xtScWOf%$+<3j*JgDWGpVcGM zwro-{oBE)*tK}}A25{Fg_E%QG&cgg)b@ZMFzD;NZj^3bnfA1?YhU=)`W94@fi*a(y zywuVBAu=Z@x{Qq*kChwVRU9j&1=Uhvm@|TGz28dQLNM;F2b?8Ndj*ohHGy*}pQ!g0 z=t&&R8o%kkGxnBs9-~f_@KZPnZCN5C*n31bkY$J368O1SUDXpY2PNFDS7Fi4Fmt(t z6Sz&o3Z-wk^A %9BZQfK~lz$ pDH7|)r4 z34S{18F>~}Jf`Wx7YD_VxV{>Koif^DS{rWyzVjw1At+dp7%04osy7~~CWdZc{;ACJ zpW MbXD5ZsFj$?cC%X$u}M=w@}r6toJV zDJ{(kWPF5lNUeDbilE~^gJg{1O3QXn`Lr@NeJ>0) sOr^Nk>0 zXbHdaC~08+Fof)0R&?2aGe%j~FcR-Pxn2~}G+&BW7jB{-xFlHTapNoh%kj(N^!bL# zkTA^yh44l$jtD0V1KffQ_Y0zy;D;q)x%7GK*=5I!Dk_WWN>B`r{GUD;N*?Ae6i7GY zHDThn&@e`tHr&8+qu~4Bp^|7pnAV0xMP)4QFw(HoJdxe;*z{k^p~UQmX~#|NB0l?f zZWV`=Q{^KO=|d;NK;C?KK=zKBaeWW cB%*WVd(EEX!kL)jE4?}&>iib-u+XiMi=kl5RW4h=Buz;Hhd+zMbp zxiIqUqvazmbR|D*Xw#*5prU^hTFCE0VW0=Wl=3i);NS(8l*4@47#2YvPw<~28OAMV zy98A3HjL -fAS3?k5bluOoiBoE@-V}%BD(X4j|Lhq;PCx!-%qb^98Z;90J?HBHt2Ed2 z_{L5=Pag)v6?hBBUS{fu!s8$11+zgBpyV1{iJID8@mRryv|x0_Xp`t*NoxGqpNJPa zs_3J(x1Utk8JO`LYNH 8F~Qe?(Syj7-GnG zxbNqA-rxSh2Vl !S5I-VgMaisnKCZ8Rwt?qF^#8A2+}?}7%-VS~cJ%5xq)QAYoz$UZ#d?@fJ7PxPU0 zFjltInE604kw=yq5<0x~0`oJ#pl@UT^rc!^sA;R2a%r{Cgoxjn1gMLYXqIkU+eLyH zGQvM*_N7^w(T?mX=m69JoPmTY89T;89;|1(XqslDYcZnH3agc`U!@z93u+F`POFaz zd qzK`CXvwQwW7~E^4&js)Voy^Vx3zO{~dXm`nOle- 1l z?@H!cL9RBEx(E3cidRY`GUSg5;m^;wl); EzYZC)PBsYm|p$X3yj1!Nf; zPY7-Bkb@8}e_!%InX8!ErEr5p(Phe0yl%`kuXH$IV)p|s^6Y1L`#F KiW%f_O2GOu}J@*Lx>I@j@(2PmLBUY7Bw-p>d)0tS2d7-p6f3@wH8b8{L^2 zf!F!>0Uv>klDW-D>nJ!8*Ra{?syc(8zkqf$*7Z|@X2E1}soNm53Y@C_jHX^M^0Z>8 zm(m#+?9`hoN9kA)!L3w^=QKlABDd)GivxnYkrA*ZATs*FL5S|BxS@#scgAV7-CmRt ztlJIohmFf`>79eNYJ>URlI+)^q!3h{SUQqGcDyK;2^0^hhYs;ODe~Ahry6<&FLhwt zhE)teI{h= VED`kSa1UasoPhP}q#!`q_ zMR@WITbDx^N06_5{En>@{qIe$NS4dve*>IzpQssyV>!BbC4n0U;B~W!ZmIOn7SEz4 zdauNT=ctWjcIDa|aw2X!px294ksN7*q;_%`wti^?fn}8%%2jeSzB8BbzZ?r4;)gB{ z(?8EVQ}?sK$&-o+f-SBu=5fVFWj3wcBYb;L1~Z12 +*xFlw`{(-s3*y9(1gM`ZXmJhgRlXhy6gsU^@IHP$2xcGopZ!q)#1e=-eE&bs|` zvdHZ$TnZ3E(XK5OMRU1C;cQjZf48h9wb3OmGF5YdnlXU^+Ly^{()Jwgb9(%9rZy{{ z(qVL`+PLLll&+a1pw-^PJtfC;Y9$z-4RXuN@32`*;GQ_LdQ{dGxMz 87L_fkQMAu7 zDwMUY0xu3(@bd9n?+aXEJ@|QOw+BbG(^??suy|rne$c}5g6VtPrs-d#W+gqhV2K#e zvnApIlIazYo&brcvxoO6(yWp|*^-MBk-czJ8oA($0iQE`7|Mr-iLYcqeY>3JL5~Lj zom{Nsp(2HkcWjqey>1ZR>l!(rlK5F?2JDAHsk~Bvs7($fX*_9Ed Ms5VJ>;%mb z)x1l6T;7o$5f_DfYMp%78>I5yA{#e8XgK^UDp4O^HMgSSO|ingm{A<1rUIs3Ghy1M z0`(~UL{GTyTy_*BcbQ3V{j<^KTLYfC5INzS7{$_CV8Y$!1L=%;s*G&0jgD%ik9d*MxekfqW?spk `GHI)J#| z{H+G-%NY3)SW_zr$$e*BnCv)^;_$L)t Ef+4k*xl@roJl?WDoHXE zMk68Xy$PmXjLkfYVS_CwoWn5CK8Ig6aLm!S0y%8)I(m{rYen?#6tzwXeBIevulp9p z&$DVoGn|-JdM&>TLtM1vw76BdIa9the& fn~=OxuoY{D4*=#ZTT)6dVpD-?-M*8mSAR2 zI>DdAVLxL h;R~8DwzRTrV~%S{S%oEgmTq=ZoM(-je-feFAg-26 zy^x7-dP(DD1P!gru4c~-IBVS^kcot#rWdVOP`&Z{BS;MU?X>gFY;w~0POH5~{gJ_E z{`ul*6rX0o RXBx#~+SSUN!B1Z@rwO zlPZJSbWy#r9jUFds&UeED7-gu4C_lbvAWcrV^*m7dS=^diOgHg4kN#=^jz*V!Q^@} z*r1ehc{Is*qFx7k#qOpfdT6oo7hmJ<-GzEF1upLD!Va3_ZCKHwtS;7*qXJ{IX z>B|Nz7Nc>&hTp#a&X_MJ6?ouMMVUUm`t1OH#b3mrtV)3S-rNGqUiSH42P%p#^6gQ# zn+RNuBDmRmG(QQORiWy3dD)9fo(G|%)NiTZ=D3l6eb7*nx*vzq77mC|GC-Bg2a#0P zi4hXJrEJB#8nS8`&FW4jZ?B9 )DvyPqD+W#bEgFm#<=ZDj3dl3ItA4 z#<#@A#BXIA_%l-P2Ho3eZf(AozS(8pY+b}2$d3WKk|TO^*aYv_%P02qh9v%Hw3$DJ zTa^eU !iCYN(s?>ZW_<7~YVLoeq4` P8)b`RRcpIoWy&te!-iSFH8Fh{0!i4+w_rEa0R zE%J{4JDf3?+lsaR0ZCszq$o8_p{`!%k`7WGx-;T?vm}x`>x{1{%g2Ad%2(EqBflOm zCzA30qu#`e_P?Wrw1Tl=(pk~m_zhN|SVT{o-04qx%k&`=Z>im}^g8m2sWATDu$3SC z*mYA5o0HL1u?&q9WJWnQHrPgnWNCZTjmS{??=X(TnItOxT; 9 zrA}XR^T*nm0#^l{n~j4DSj3-N2Afskq=I8E+*X_sui(t#=BB@Gc86`x;Y=YBt@2Rp zsk*0l`0rRFEn?B`aH$p)jKX2SQF?BYe$AQIvAc1gG~fX++sP@q*sC3*$tVb0b36PA zyP57Tx-Vz!w5pC&)VOH0Rh`K;Y&FlHM!tXl9SKkW&O(+?fx5E|`y~zhC5mKT7i678 z>0TSZIw%63V+0FhARU|e;zE*jw5cIFC|SS~F$|(oE!TW`RP)(xBV5X;CG4f#>|y$h z=Kl|yVw^95waoNsKe9g?@tSl&{zcTx61SEg#k1I0Pz#T8ZSPhKaSs`gj+zLM9G^@C zm7C&}1gig{@Ao29iUBKQXn=O7d!byTXCGw9!I?iNZNpUeQ&9#0BuXuOd- 8EGjV}^{EMmFEQo1>^ote4WdMtUn(Re$`mO3iOP^IO%b{BG#1 zb(KC!3-m4=l1HjybQ@=U^N-1eHOpqpDR=xb9s4L6L{#n6T#H#2#p$^l+cQPL!R}c} z{l%{OX;G=~LoO<57r9X@YknX0Zd;;BZ1VNzqN{S}{k;8Z)cAg$rZyDuXkCW zwkY$7`hhXXdsHp=RG;1fhJirn3x@bIb@F%=XtLbU^*<ZtLUB3(uNpbxt49LU&3X z9;VBmntHosX;o!!>(@>hvdT4@pkIa&a#girR9wa+oo8U1(`k;vE^_hoB>M+#T`@Q= znkN4|uhptN$?{@zdj+M9{lMY)VpLOJa6D8PH0RP 0b`=ibfvF=53J8X+hoG-qet+Sl{jf z4m=As^OE0;ha|K1z*b*h(Pm{wy%7XuV!T{A+vp7o28y+156M4Yy4h9wEbQU=naUEgGn-D{y|a42tMS6C2#2lGZW z^xbugHsB8BI-;j>p+m_QPV5AexZB*!s4x4!)jT#{72In*>gdh~G_ZYK8t!e1s7t^+ zR!BW`dEg!@FF?0jn1L<6uyJ}+f~_V#(or@evL=p%?^Nf#{{=_tga31Ng-=&!BYyaS zyU9_OkRb9y=<*=>A!n{)f*raySw60Gb|S?43nT4|FBZ=e&_)WtU?=0ECGLaLGCW#l zSK9uNdbM&;bsWQlQ+@=5u&eyyLjsDJo5V$X&G8<8zMs~;nyyaOR54;A5}NSM!v$q? z-|V8RjecEI6X(|uoAzy~>ve&`_@5xHJW;Dwrb7YPw;omK|HN0HgkRk4I~^fiuGGW7 z1Ieagu7$it4>?jAX^pJ0{H2k~eJqEA^9~FJKryuRUFOE9L#AAJY9kXH`GkXdUGF%J z*6AKo46gclpNq7K$d#K8S5HJ|4Nof@8(Do-q`1#ee#ekqpY2Vv^?t3jLcxPGRmGs| zj*9#(zF}6`ZTE5Bz0aeK0YMK|NqJRS$rPOx(928kbRH+T`PBgEeL%+ VDZ!h++x!Q=qz=`B^^M3y<#n170@C&vu+mxx^=tD7t z7}R=lBI2X>^&iUHQCmR>SH 8e>>Y=V xU1<8uHxJk)QvOIT8)ph`mRQ(hW6&tm(@+Hkqgwaq~pS z?QXUE0a`!6%9MASjYoT}@|gJKdCoL#UM%dT+w<#h|5Ph>7%qoccJ< AXDV7iY1VDKoI?iK5IUihiAZ z{p+` 0- zdW;@HR>oWj<%7I33`5GUqiTngXr!y_+VV3-x0$Z{Y(_OBw+S^h{|bypY!wigpS%nr zHW%cl7Z1mA`I|)#g Wr4yyT&C)5v8-pGPc zGW52o)u&|%Sk$7x-tbQJG*m?~0wy@(H7xCQkF@a1T1K|_3Uf9gRaVE5t(^%+NW0U* zV?^e$Q#Rxenm~63 H?cvIK4Zxxbc|yM`A}+Z(%!6-2ffzJ zvet(dnCd);nzsf|AEonN*Cxi>=Y7f>3Ihrqm4%A zWn(?y^S0^`YLUraMfSKmd!L3Ir9Zg}H!i*}Opk*&tYnro?lB*WBMXkok6W#G$*#zb z`=(ktgI5KJAV*OP3%jeMrIwwFPL5U;8ODdW!VhY6j8NCfXlGjvR>z(~woiOk|MJj4 zDTZ0mVh9_MiP>w)O{O?{<@vo5D&l}?WxP^$==Hj0^w;tyz+xB!2wf*C|8#})s-idC z=e5kf< Ub$)0^p1h6Mq{#|?U2mPH=vWPKaDeigd#On_32q#pDw iPV$_Xa?K-iFQ0|?y;rnRHIaaTn0TQ>Gd?@^8Gxn8%^C$z`_&t(1NcBJH@gD@; zBeEX7kYeX76XK8O;)O`|aNqy1qWA(S)3UhTM7~%9XSmSV(nO}04cgbKZ?#&zy>8kt z#SQ{qh+QDR8X@_k6C9MH<@=+nLa7kEn+KkOqLuq4e1)A%pB=uSWTbC79H|k(gH#0$ z_3t(w$s`!3qelFyu^I^l56+W$q4vg$CZ%liPKA?*^7vxP#wz>#@MU2pMX0hhK7%Fm zoK9<&mxi^R$LID*$bXU1_8y{nZ-uP`b9YuXNB5tRW$3s1#n*d$FgXq4Mnjw%>CPwH zFW$aKlNO%%?m&L!H=NUDC(9G*|3!R{El(<>T*b%X!F0Z5-&ceE!rY+(x}9n_PW^aF zU5JGDV6c^kg@CkS!JTx?RisLU-wkqZ5I=C@8GMI{*ye*&9FTevdhhi fK+H#SRavEWJP_nPO5okMK140j$zkkXhE(g# zS@#tubd+8h%x-dvRB?e++tt-uW*L~SvXbrmTAi4o9@sP C zzkfw{7V%rVPdwN&maeD2>jh)F@p;FK;b?@Z;?~Z0cK^AueU{mkI)|**ULxmGV`cTx zu17iXn=yE8x!;i1->0%#Z9{iA{{1LE;_}?i=vKEiQ=1lSaY!n_jzVlChJ+`@5m-cz zFA*WlRi-=dN*!qpo% v3uh{Kx ze9on?_{>#IWHZ?(vdmp)=cbPO#qTELi~XNtzI*WI^aGOl!o*vOv7djm&}*5u7_l$J zX?lBoqH|D4#b8$Y?d=?sLwv>kE2jxIBV{XAYEIR5YS%b&RjS>Sd+D_ZqMc+W#a=>& zk?LU~miu*%hn%c-!E;5Q@n#}TMkMUy&n9~E4PP CnuIwk}A zJ>qML#5|}rX{6)Dy(wgo>Mtvq%a@Qk!I=7)mZPn trepBVa{N^7CbQJ kv9HvxR 9zDKnGVNBoHNE1O#@xJA> zJM91f`+AAL`t}ynDqxO%un<`j&UB|8uG^tR?(Om$hmK1Kgy3zD>-Rn*>i|mMj<#v= zL*Fj-DJ!)`RKc~nqf}6h38ZNZ{@Il;hQ&fymvP3*qQ&NDM!)J;{+pDKlLZAuntHy; z^yV`oECzAk3X?ZaJCscJ>U^zF6d7+)Jq^2T*wTd1hVD}F*p8HLNgQgxEo@#aqhg+r ztD3GtHVFt8cO+YfOaF1KcXEfATl~K?n5uADB^} z2c176#2 (fTn;Mu2O80Wt!=iezwg?WP*e7Hq^U4kK@YsZ_AfNRX(XGH8`ByF#=2C$8;|G_C& zPAMTiRowUGj~A`uUG8F7F$CDFZ#eIs*4p!tt>*LL^O0T5fD_Ea=o^)WqHe+q(=;OP zzy+l8-kmGbz(@!?6)>L+h10K4ZD!wEw&=W#+JTIVv1?TTl<|FLgYMTGw^R2Is`m=i zlS)uDbU$JuHGn-~ti&`C^k1Ma>nji;?)~o>Z;i}%kC#R3J4FV%+TKZg;hU)&b5pZy zTmWra>%9TJcUy}36=#bx@A1fdH(K!y=4OXxN%$)Yljo;Lqv~O~x6q|?eAWJN#PkbG zvu=;rpDP&b-i|tZ{jM*aZpUO;(A02B4jnFwG#7d#Fz`626fu*pgMNYh#1NMgBe^V% zlpl<6TYx`0RWpbVf6=mN>y4wJxho8W+l-TM=onn*8{N>0Gj>Sh6`AmEAy*7LR9|bE zkmI+8sD||xUxTM8C0;J*1fnxI4zB|;Q|b}yxBbW_vA`FUno-dGCg?!>8y2%g#1-}9 zMu6+d#blw_lwUJq$iY3PZI1KE5N*<0CQOV)q|+0rO;u+ca;y$z*+SDp)||zUScIMg z5GRmZ;Nyq;{eb&&0zK`B#1A=WFA;ND_c}&iw@A!vEf5bKv{QM1kyO{*1q=M78N+n8 zld-MD)BWrho#7_ph=E`Hlt6r~!ICKAE>1(!17IFVcC?80BgP|;3GnMHCxD10XfysR zjq}Jfxge@_ G4JW a-5X+T&f;<3tat>J; F?Ll_hhP*zd=@oLVK%+JnmW9Kn#_Oc+ z--%zpJUa9KoKp?u0yTj?_1oqO{;pFNeZE;Rz;o9TJ^&fN8bWq7i4L)`6~rGZ$Yi@F zno6#QU#HrY)qd@~zr^ 9qf zlr$m*nfK~S)XD=1t0*+NJ73LQ|9gXYy%DZ4^SSg%m~BP(jYA*amxW}Sy2f)7pPF_O zhWmx3BlkmT?qRA0=Jc6AvRX0(+>mQjajO3Des!Vx<^*COeQ#9uLQIn{JZh!9@B j5m}d(R!nvOF2na-MGKV^2RzqqF)fLlB0Bo?W$ih7$S#UvDOKfRSLety$$~fF z<-_O~lLZ{1Kr{eaoBEn?+ t5ZJM*v?NBO?Fg9$jLc0X2|BFDeYzxL+UuksL7R&U3_T{P >JgIH;cB~ zrT?j*l)l5NZKq?We|8S_evSIUL|EhQ)k-7lg>Aqk4n;B`+||aJS%Y7^b#;e)wddcD zzX2&ga&|V9;KqMOR=aI!EsjFg!|kaKG&nzvEwx^eY5B(T8{KtC!`W6aNYHt0-hd4* zL+>=-^G9?|??zDyPlQnprgL*5Q#0x~F>(y2poQ%ri~u)1_8|vl#LHIYZMM#^57An# zB?fpHUFJ(nLb$n +#zdmD|ZI;_T^iPqHH|o=!qyQP% z`bhxLkt9t{hRP7!bux^Kf=b@d)*-g)7~&nsJT 4Vj+@bI$Lq_I;_|WP>JU%Rb%YkH?EGa*JyUsD2$K5rx-U`o{omrBHbAK!? z-o3>JFvN6t5YD`Q)SSb5X6$76;$|z^=*T_gdhTrfCfiYzCTL}*d7Br{_ZK}X{xJ1v z$TKlS?nfx1BQQq{qzMIJ0KXz#f;n7-!?0hXU7NCm|62n29_OeGb}Fx>r{INk6h0wZ zhGyaE?;VsW&bpZ?0aB-G6FU*F1An?$0DrF~cbo&;otGouir4gUZ~)e)w2Te|o_}zE zpi!r?(I6zTYU!nu*|3TLl2pazcieBr|05L$yEDb~1F!+?Qopk=v;rKUA%MBZtH%c; zOx;p4)ST$@<8L-q{22#M*cGmSl40{L3-&XY0Tdy?If2KZRqE4+d&~oBt%rfk7hzzT z&6EnJyN!>^3e)*Zp*NTGz!_-3ZwiPD?d9>(bL--@j8H`|F|*qMbWw5JZW&c{?x8V5 z-0h}GsrUXf<5pA3Wx8t{lqa>v_@z2_;IAO{?m3by7E7n(Wcx{uL!Nc1t!iATE22v9 zqDBJ@NyMW&CyiwBin#Z97CFI&@NM6xQ0_~EM1!xB;Walsad&s$QDPBG?#j&i8q1am zH!*2;eJs{FA&SzfL (TI=fN4$w0oq fa6wM6e`Cohd+U9d+lqvK%UtH6crnRILiv{Qs!kN^4F`WrEKo z6$jHV)*Rg%{4{mD3?J%}7=hP&F2tCt?bP9CEL46VsfQ_}`>!`n!s0TBr=P^Hhc4e_ z2Ojo#ep(DZi2TY0>8f{$2J;PDS4J|3_g12IVi6OFU2f{}X}6m!0;Iv)zv>L#A{gf* zDo16b-po#K9uNjgory39iT7WpYg=r}28~ #Fq3%XDO=~&G5 z#Y wBE_$rN?c?Lz#Y3{ zSZF^AQsY-}zjcYyx)9U4ht%yHS#YVKf{H1W{NUP4(~|f$!Uws~!Ov~anq;rqS{$3_ zrOQ3Y76v)R<9^~=8h5k9YwZS-G#)5Kz4baCrT#S{1UiVTXpD_L3dAyft6GBFlC 4BXOUj=c+%<5_k2x7S#$h(x@WVcuP6vdg{cuCNE?&<7E>L z&fG$>7%k28oqNw!oULAOYWgs^5kXtEV<)}xud~(q65P@gD!XjMjwm*qoB;n2{2X z#RB1-l8(b(He12RA2lU!us)!s|B3}G4HH&kb!$=vpBn-M9(pZ=l}q^iAlXjtpJ+@{ z6sZj)g21X+h+l$Z#jh$ksU5Fd;6Wnpz33iSr=Af{ZA9=y{;ltcw0J8j8iXNYB%rP; zna^safz%L6l#(2uTu+VkO{~>tj@#)ZAvbQ6v>n$q7B6~b%1}$+{^oW)FSx`Bt8*i| zrxQkO#@{(%>(#j{Tq4h==&(Qd_w0K9t%I4aw=mZS#LhevF6G;r8XjwLg*>YNxs2X} z!$Vbk$A?+ $txcl`$x{f#8GLD#oRUPV9;HL^McM0(DoL84(_b-hw^o z0%Bl%Nj|DXo?5GyX+HXb0|?)n%WHNt6}s>AN%4SsD_MX4m-}3sc8yfQ_mT4y*45c7 z-RD4{4lpL%WV*>bR~|`YPzNhkE-@N}atoe+LO&Yc0KVkccibUu!y0`j@lC{)O7dm6 zsc{z;XD?QwxxnC%4kOk|i3mBCkvD}*O-B+Xi`A=|gi2Y22?*w>O(pTkx1TXO$2dLV zNtn{^j3toXz-pHK?5T;!Pw|!Yzn#)IBQrS(-pUlG3|>oPg(EUfIan_@6&KzGb2|r` zNPr 32Gm94?Dx#_xHNisV1b6=BpbUFVTUAdkABz@3}mp4Y|D zcVDU%?~%B1CxqmTAOhj6J;OEUaSUXy%-BhpgOBN!Uz2g>N|^Kg#Ox*AO>;a@@c0sm zn>Y$L!GVLhN0ZgT(SLC&D0>T*NPUJ?gzK^r@hIjU9=kzlqjmA5#Rlk&Z*FDTGxwOP z!; cPX?JJa77@S0;R*0CWK&&KI;|f zK93aWG2E}) 26gf{79S>3Ph zaqSe6s`Wcxc+$6)eyP0arVJHn{I+AF7Q=X)?iE)CtnQa(1rj)W8sQUJ2q%0vagj~u zWx4pdw5jgTE>a$GuDZC|#!MHofjH0^TSoy03Un2vn6kB&;++*?O9 lOoVOuMZ3R z*uoGwQo@fhR8<|Wxr#M{id3XCvGGMbem=ngy~O%>x!47E7HPdjG6rYl1)oh6^kLGG zHog`mRSeX%&_k=h{U6RvOCHKrS;&UG-z6(akl|Ao7DO3O>yLk1xpp)$nv5uaK1#eB zHew?^zFQC#Ib1Bx`uqL|c6jO{vRm&C-Z;}T{4FUnv@^pHc<9vg8>{4_5PYzo5PdXv z>Sf>9jv6K5(pI;D1x4zPyI-cH%o>mc@a^AumOxfV5~;@^$}a!|kl%@hlBT==xn5vr zo1|M8jcS*CqUl-_k)LLO=N+n_#4}@bnv3Qg(GhoaDp(sv;6D?8tdZ39SX@G&jj#$d z{lm6WYi*CGAaz&6`|dVP)?i_T082r~(WpQ@-gAw+8=ydWcZLUmE07a_O{J1!MNZ_{ ztMojKgIca{XUrV?mhh$&PaWQnjubc)v&75WueQpM(0B2V6h;vo=~lug1Tyh4J|k KPmCy9RaKu;|vu >vqsl+)Jq*Xy- By7V4{P;==VLt8K zdj&x+1q7C+p0+82K3CZRPUs-de=fp)@oTP~4COKc;zevSFuk8TJ@D}Q=tqb(P ~JDPi>bV7NJR&FE^g%oPb%+QbELTu!W{LO5$dvZ#T(<-ESnj zoOJE{lhj6O-H(^Y@UAN-6=Im}F@I+^9xis bi&S%s->nr>yFbRO`Q>6+!fVjOjp zE(!`N7o!Xw?P0Nri2q2zoFB1k_gBzLc5Sz(G#C--SvlrmZZ5jMJxJn(!K$Pu|F{Tj z>! GdEzi;UprYa39ZC_ AS|@S-3w(xWkOo*69~i%rkJBlyye zNLPRm^6@{mWb{-?Z9;0T_K%0UOg4aJ(GbhsM!q}LD*h(V>mf KzYhKc4HUbna1ZsCWcpqwgq*Qe&~q%nvZswomP9jNwm@K#pi_ z$Q%(8n3~Wjp`K$s{6)2~`=8(TwlVUan9OH$l}YPXPNaN-pt^U8