From 133ecfbbb67c3394f4ae9ab0adc4848e84d5fac4 Mon Sep 17 00:00:00 2001 From: KalenskovaDA Date: Mon, 2 Jun 2025 00:32:27 +0300 Subject: [PATCH] =?UTF-8?q?code:=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20laba1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + 7112 | 8 ++++ 7112.pub | 1 + histogram.cpp | 42 ++++++++++++++++++ histogram.h | 10 +++++ histogram_internal.h | 8 ++++ laba1.cbp | 5 +++ laba1.depend | 80 ++++++++++++++++++++++++++++++++++ laba1.exe | 0 laba1.layout | 20 +++++++++ laba1/bin/Debug/laba1.exe | 0 laba1/bin/Debug/marks.svg | 0 laba1/laba1.cbp | 38 ++++++++++++++++ laba1/laba1.depend | 25 +++++++++++ laba1/laba1.layout | 5 +++ laba1/obj/Debug/histogram.o | Bin 0 -> 81702 bytes laba1/obj/Debug/main.o | Bin 0 -> 133888 bytes laba1/obj/Debug/text.o | Bin 0 -> 49422 bytes main.cpp | 84 +++++------------------------------- main.o | Bin 0 -> 49266 bytes svg.cpp | 68 +++++++++++++++++++++++++++++ svg.h | 9 ++++ text.cpp | 37 ++++++++++++++++ text.h | 9 ++++ unittest.cbp | 38 ++++++++++++++++ unittest.cpp | 56 ++++++++++++++++++++++++ unittest.depend | 68 +++++++++++++++++++++++++++++ unittest.layout | 5 +++ 28 files changed, 544 insertions(+), 74 deletions(-) create mode 100644 .gitignore create mode 100644 7112 create mode 100644 7112.pub create mode 100644 histogram.cpp create mode 100644 histogram.h create mode 100644 histogram_internal.h create mode 100644 laba1.depend create mode 100644 laba1.exe create mode 100644 laba1.layout create mode 100644 laba1/bin/Debug/laba1.exe create mode 100644 laba1/bin/Debug/marks.svg create mode 100644 laba1/laba1.cbp create mode 100644 laba1/laba1.depend create mode 100644 laba1/laba1.layout create mode 100644 laba1/obj/Debug/histogram.o create mode 100644 laba1/obj/Debug/main.o create mode 100644 laba1/obj/Debug/text.o create mode 100644 main.o create mode 100644 svg.cpp create mode 100644 svg.h create mode 100644 text.cpp create mode 100644 text.h create mode 100644 unittest.cbp create mode 100644 unittest.cpp create mode 100644 unittest.depend create mode 100644 unittest.layout diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4c7473d --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/bin +/obj diff --git a/7112 b/7112 new file mode 100644 index 0000000..fce8b58 --- /dev/null +++ b/7112 @@ -0,0 +1,8 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABAqjR8VKL +iXqwsebTTkYzLtAAAAGAAAAAEAAAAzAAAAC3NzaC1lZDI1NTE5AAAAIAMVcWMSwkHQ796Q +v12uM1/L9QSqCC1guyCtw8nZgqYaAAAAoAX6y1g+sl014TmIQ7zX/gv2ngRTEKBcujJq8O +UqkMywAQC10aGheZuBego39vP3S84Tf+kKNzxIUWu+kRpbgi4x2bIc5/kYbYh76DGK+o9z +zCGU6ju3j1fNVHknGYkR0aw2SSu9/Q8GjU+xMd5Rdqj567rbHY/w7Qt8ZYImEKVvYoO/6G +BenNIJk2c3S/lY26lh51GG9DF9PKMrnWNhZIY= +-----END OPENSSH PRIVATE KEY----- diff --git a/7112.pub b/7112.pub new file mode 100644 index 0000000..2db8a5b --- /dev/null +++ b/7112.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAMVcWMSwkHQ796Qv12uM1/L9QSqCC1guyCtw8nZgqYa aleks@DESKTOP-3A8L66V diff --git a/histogram.cpp b/histogram.cpp new file mode 100644 index 0000000..25caf89 --- /dev/null +++ b/histogram.cpp @@ -0,0 +1,42 @@ +#include "histogram.h" +#include "histogram_internal.h" +#include +using std::vector; +void find_minmax(const std::vector& numbers, double& min, double& max) { + min = numbers[0]; + max = numbers[0]; + + for (double number : numbers) { + if (number < min) { + min = number; + } + if (number > max) { + max = number; + } + } +} +std::vector make_histogram(const std::vector& numbers, size_t bin_count) { + std::vector bins(bin_count, 0); + + double min, max; + find_minmax(numbers, min, max); + + double bin_size = (max - min) / bin_count; + + for (double number : numbers) { + bool found = false; + for (size_t j = 0; (j < bin_count - 1) && !found; j++) { + double lo = min + j * bin_size; + double hi = min + (j + 1) * bin_size; + if ((lo <= number) && (number < hi)) { + bins[j]++; + found = true; + } + } + if (!found) { + bins[bin_count - 1]++; + } + } + + return bins; +} diff --git a/histogram.h b/histogram.h new file mode 100644 index 0000000..8e11782 --- /dev/null +++ b/histogram.h @@ -0,0 +1,10 @@ +#ifndef HISTOGRAM_H_INCLUDED +#define HISTOGRAM_H_INCLUDED + +#include +using std::vector; +std::vector +make_histogram(const std::vector& numbers, size_t bin_count); + + +#endif // HISTOGRAM_H_INCLUDED diff --git a/histogram_internal.h b/histogram_internal.h new file mode 100644 index 0000000..de127c5 --- /dev/null +++ b/histogram_internal.h @@ -0,0 +1,8 @@ +#ifndef HISTOGRAM_INTERNAL_H_INCLUDED +#define HISTOGRAM_INTERNAL_H_INCLUDED +#include +using std::vector; +void find_minmax(const std::vector& numbers, double& min, double& max); + + +#endif // HISTOGRAM_INTERNAL_H_INCLUDED diff --git a/laba1.cbp b/laba1.cbp index 10437ba..64477a3 100644 --- a/laba1.cbp +++ b/laba1.cbp @@ -32,6 +32,11 @@ + + + + diff --git a/laba1.depend b/laba1.depend new file mode 100644 index 0000000..c01c32e --- /dev/null +++ b/laba1.depend @@ -0,0 +1,80 @@ +# depslib dependency file v1.0 +1748812442 source:c:\users\aleks\onedrive\Рабочий стол\laba1\main.cpp + + + "histogram.h" + "text.h" + "svg.h" + +1748386910 c:\users\aleks\onedrive\Рабочий стол\laba1\histogram.h + + +1748730472 c:\users\aleks\onedrive\Рабочий стол\laba1\text.h + + +1748808306 source:c:\users\aleks\onedrive\Рабочий стол\laba1\text.cpp + "text.h" + + + +1748392747 c:\users\aleks\onedrive\Рабочий стол\laba1\doctest.h + + + + + + + "doctest_fwd.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1748392232 c:\users\aleks\onedrive\Рабочий стол\laba1\histogram_internal.h + + +1748811805 source:c:\users\aleks\onedrive\Рабочий стол\laba1\svg.cpp + "svg.h" + + +1748810901 c:\users\aleks\onedrive\Рабочий стол\laba1\svg.h + + + +1748808114 source:c:\users\aleks\onedrive\Рабочий стол\laba1\histogram.cpp + "histogram.h" + "histogram_internal.h" + + diff --git a/laba1.exe b/laba1.exe new file mode 100644 index 0000000..e69de29 diff --git a/laba1.layout b/laba1.layout new file mode 100644 index 0000000..617a8b8 --- /dev/null +++ b/laba1.layout @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/laba1/bin/Debug/laba1.exe b/laba1/bin/Debug/laba1.exe new file mode 100644 index 0000000..e69de29 diff --git a/laba1/bin/Debug/marks.svg b/laba1/bin/Debug/marks.svg new file mode 100644 index 0000000..e69de29 diff --git a/laba1/laba1.cbp b/laba1/laba1.cbp new file mode 100644 index 0000000..e5bcdf7 --- /dev/null +++ b/laba1/laba1.cbp @@ -0,0 +1,38 @@ + + + + + + diff --git a/laba1/laba1.depend b/laba1/laba1.depend new file mode 100644 index 0000000..a1b3543 --- /dev/null +++ b/laba1/laba1.depend @@ -0,0 +1,25 @@ +# depslib dependency file v1.0 +1748387373 source:c:\users\aleks\onedrive\Рабочий стол\laba1\histogram.cpp + "histogram.h" + + +1748386910 c:\users\aleks\onedrive\Рабочий стол\laba1\histogram.h + + +1748388937 source:c:\users\aleks\onedrive\Рабочий стол\laba1\main.cpp + + + "histogram.h" + "text.h" + +1748388603 c:\users\aleks\onedrive\Рабочий стол\laba1\text.h + + +1584205420 source:c:\users\aleks\onedrive\Рабочий стол\laba1\laba1\main.cpp + + +1748391445 source:c:\users\aleks\onedrive\Рабочий стол\laba1\text.cpp + "text.h" + + + diff --git a/laba1/laba1.layout b/laba1/laba1.layout new file mode 100644 index 0000000..593c06e --- /dev/null +++ b/laba1/laba1.layout @@ -0,0 +1,5 @@ + + + + + diff --git a/laba1/obj/Debug/histogram.o b/laba1/obj/Debug/histogram.o new file mode 100644 index 0000000000000000000000000000000000000000..fbb05def6482748a7ee181e8b691a80d0f66ff10 GIT binary patch literal 81702 zcmeIbd3;?}wFkb>y}8XzlQiiB=|oc~&@uB^+L8{TNt+IIrW9^(lG`SbCLy^gEf1Lr zN=39)P=qSTQy&T_;#5$cWe|}cDh?n|1V$HUa z_INUGKmorEV$I=_*8cv0)0})2;riSH3vu?dlNllj$ZIIs?Z%bi%-4Y1_=v(%HX1}( zLrJe2SA_IefZL{VBQ&nGO7WRvF^G3PdW#F!Y%8s-F%bD1#c}c!SCVKbENdvOsdpvj z;oo%N4r;w{r^1z&RXBkS_)`YlgN}Siz2%j4P8`YW_0wBkTkXYN4%}m2y%pstdanoW zC9mF!Dp!U{?-PD{E9%OOAtK-kJ)ReN?`iJvd#yF8`6aDGIl^f~p z^2n2V>ndCkNP0iy!AZS!^{#x7-kX5i;?-N9s`n1yc558f52?4lHpS0}{q)wSmd8`T zUE|eTURLfDSPVVS0e6R2Z+V%kCQ&}#@zYygR_!bh!evbr;)|(zYn?dKTL|0}se0?3 z6@=uK0q5MLpUcb3y}0?n{Uk+id8HHA3qei59o4uj{Fi<%FRyhLa52&k0ax@G2yC*w zqIRRaqTGoi`J0t&S@XTRaUVRW#m=5%8m5q0oRbC zx3bDv;Yd^w9UPm|TUG81e9~K2>;QpO`KYRM;z(};a2KZNt#$=8T^Cw_b8bp+O@%Z5 zNblBSC(7upaRoH#Z3pi16uq@IPI;ua7dYpp^wyO*{X%-LDt4lb-nwdM!$Eql2kzDs zy>+fQCA~KR=iHRu`bwvLr1!JMPL$DGUsvWxCcXCncgU-^qO79QfdfPw!r@ts<94H> z%ypq5dCw8pvB~nqb;eu1uN0%rPtjZMx`1qhoTI?~Q{%GmU*@->!qrgHC3?*?A z$$0kQl-}Ah=LL!MUJu;2Q}otWJN>c-xSN3cg~nOaDBw)}y1qy^^B0 zzQU<@8}z&jT2Pp0Utb=7mqN7m^$I5y?yT35X!Tp@5jOVL|b<&4t? z;3fliEJbgfEB;8{R$smKDe>0<+`C@ARb{S$3bh+ak33m_tIDdJ?Jl(&*LrX=zg1l@kkA>bx{4+OR_c7-dia>gme)h)o)X&l$zs`7fLUr62)zIrRFob`inKLc)Yir&gH zXFVtS2yoj{^j5m!p5zstfrDdH`9OvpX@r{$+(jvRt7@G2XaH^oaM!2kt#-A~B(K9) zZ;k7EPPim+A5GC)>uO)t0CyE|_c?H?d~2(n{YjGdw6ET}GG`nR?pMJ5&>>IxrOq`l zYXI&w;NH}@5dJH@b@g6(GtR_G$EM`fr;IDA2={~n+HqB%(jRZ|$dh`j%Ut~pisx+} zoYY&L+8^ow?i8=y>T=frvk>x<9(hV{d5tsvWIgiWl-}~xdIa436ulLdPI*+mw|L|! zy_K$s1}eALJUFGdDy1I14cwL#z16Pq+sjD^oPj=;#vMcjZV-iwO96A1@APaTUOot{ zW7D`gXM1oJ0wnvhLhOG|0m)R2bM^0gf&0Mcg*fRK3fIE8nsR4*|9FlNf4NJDQO_$J zg|?FCu1ANmgm~zFg)v8stMu02fo~dw`lb1+((0NjXFb}DQ(p(}gD)ry#6xcb{8Hl@ z_cS1V?ja%W*EnPg?WDxH@=Lg#z&)OVt9A8X2zM`VzevTo`r}Q&{SLU_r{L;bGhHOF z`T_K>ehmVfZC`zr)6We!Hvrs8UR+I?Yy3;NuLCzL6_=8aKLNKe6<6c!hgCm_{!l8e z-WgX^KL&u?o`Q2v#F2g91@5v`oU5NhxX8DJ_;3oY!ZjWwTqAIIrr;`F{RqNc2i!MO zajpp+!hILGCsS}$u6BrUk#7s}LMqNRe?Wd|1nyW0uG%#ZLh^0~Zp0A~*fXzw*k1tskoFlxEZ*ODY&{6KR*N9 zMX5MfzqmobzW)~DiWFSEs~soY2H-xLigS${33oGapZDTw%UtaS;hq8R!4zD%tG_|G z@!!GqHx=hi(tUUmcEt0d7kwuFly{B;5Fih3HPf)uhDB2H>vo;5Ibv zd$norn+;9-Ru(qx+fdZ9udx`-1||z{SXuZQ5yuJ&@u#uqSixxFd#0Gq00I8Sckug8 z)4qo#C;q?Y`G2J8#tqn!t})jhPR5-7NgL!f9#tv}#rA^I#-qFP_20&$S{alUMzJ>@ z1>j+Mo|5!=hk`e5+~2hKv4#sC-LS6d>NjtpoZWcO^sDH1-^wy%xei%wfC)b`CN+Jp z@oAg}Zsm_)?$c1+(7f;a&HJ8i+V=?DQl>KJFn2nYgby72|Ep@2on0*c=RG&cEQ%{n$XcHY*yAMEkPB7A{B=Mn|q29nP`FiclH- zr|rG>tdYwjU&s>wofT0jLcFdC`kjw~0QGHUz0`FQS__+yO;p0BhmVAttfwz{)XEA) zlopIbG{3IP2x`=2$%7b22;H~=yCZxkl=ePWrZPa8(3`Y z&!9%`eRGDRIvz%KL>*aqSkw?<`MH!3`0vGMLg zrym?XxN%KXx?`X8N*dqUJgL5M_Vwd@@u>Cpt|0_OUKcm@u zx@F(W=inM@xbVB-iROI{cgvO!NxIonh4RKEsvg9`jl83JsFIoBDHp_iUKyf&S!9)H z8=;)g>-5EN;@svzl&EmuSGZp~-dQ)Mc=e!O5Xgxc<-sT^ZcOe_F~f6 zm-T`!Mwyq&{{24X60MHR7w76SxzL$Mwx8ObHQb)ee545h@$frgc`c-Kf+Ixr7gSYK zJpe~#FpUg;Cr}&ds27M2srg(#{kl)$l-j%x0V`F*0mX>hqLup|c7`ss^Ekh6P1M%_ zZ@paW)T`Tov@v3Q1KXgeNOcPwx&NLNC~f#&LzMn#x{zp>O>JK*UeP5ACo~$G*hdaFO61(4^_hXv zLkTt(d4q@>QRlVE5i@3v!Yh|#Im^Rs9qP0v_Gn&)wiG!s&tp`cQOvsHy%E7&1B%mY zUW!~Z*W#5c{pp`)ucc4z2QPc&dip(F2bElX zokxGUsNfTa(Z7u7-iq#>nI@XEuOm2B&yuu$Fnabq>@HKK%_-e$zpKtsSsp@vn6|0% z@@U)R=+lgI+LBothz8akGa?31kA)tppa{|L-21+FxY^in6g~8&y*uBbE_z|~jhAH2 z+WQz?jHUf!?0(W}ZOgAQCrk5ucVa@9Sgd9+IqU<#dCKQ&)uHb-InN0cJ_4li>xK{wr=Q8^!0CzcO@?F-@3Xxv9zyq zS7PhaM_&B>Utard@gI-<{*A3&@z!|x){f5pWY3Pi_|B5H-d-^TM#--2wtqtX$#!wF zh_1rIQ7qQBdpG8E^Rui)S#E+FvC*{PFdwL;k z`RLe|RV&sd%WG4(np<01%NiTocC|L{5))v+P1tY6o--9X#mINVAXiTwl)p=}{}inM z!|b`S^}T|O&x^%&NkWMHm(#f;**BoQ@i%1sxV<684aphh#u;Zq|7WoO7Zt(j89Rgc z$r;3c1p9B8J=GbO$Ug>Ojgm2-%WBJ9@=rl5)_-Zdw>RF}m58+`lJU;2evvbflkYll zX=k#-KKp1+e&KqEvqrXzydf;aX!a}xU{oBp(3zvpe-3oE~$d4 z*0n(Av``jBelzGXK3Fkwbu~$~#Ml^gwhrtNxfS{2Vll3OvEF2#$g9e4Mn`D;cw{@8 zw>tMM{5dJM(t+w}y(rO^6nW?7-$oiwCS=~aLTP1rwMSlgrAs`_U9(HnqODkrJ?B#p zP$Z>HfQoo~dtYL^$lH*Yk*s=VfeStear=!(LDKpXU5R*qLga1COk8=H%>;qJgs>M` zU=-(eB#`ON`MM?zlF=H)06~2_ggrBC7Q6MSN(3Ix`ltTH3P^LYi67BV^B{ zHVUR)nF)%oYg9RV0<6}DAn6kpkVmuxA?OE!Nq+y+`DK2e`tMs1+Wyaby&zr<6ZTeuh%$YNszFo95D$ zB@&Abba!@lCOhL@U~Z3X@9gS|bKxv zLSe3RV$h(VrF;&Mmkq3_im+!MKPsnCrk64V{ ze-eAqJo4h*G!Zrv^VcGKuQiA4%BPbvp-g0d!kT^tB2p=Oc!-MDtk@-Wjl}e~t*eOs zikTlLg$Jy;zd)s!J(BYAgTcg?m$fHcSy|J*N9h)(|XHEGVVtOXjiR{l?r&AG3pNt$3fttM$(tG-1t>~oah?t{B23*{ZKq(5HoA>)M zXqt-P-=fgwQO{y7RFybZ$MJxj_CYEFsQNEF|l5d4*Gb zbGr&CJGFCXZqG!RlYV1-@(S^3Kjv)z?SLj`kb2ZCq zCt0PZQBJ#cg~=du$m&YjLyytZU8q16G4UkJyoh9qY^sx?jXBxtL9ZtT>&Gtvo&OSm zBM;Ka-=)<^Jyi4>F@}n9nc@=I3+eMPMbm&iXBVkb!v09Y=-TRUe}FXd<@J#CVUl(^ zNz0~6AA0>HS?4KvtgUSCEP_3jfp7N-HNeZrJw-YM?66hAqIZ9HdI= z%T%@Iq!(2QQI4wwT_N5FF*mX(5?&f78nR)~*b&-pOLO^syuXdr_M7V8l({J=03-9((V zviaC;O{Dh2%BQnR*zJMBbPci!F*#X`U7Aotlol!Tu*;fAF11u%?oKDIU7Ht&h+S@h zx57p(l`gZPF6(3}9xI=4O7xR~q9GR5%sK?SI^_A-yUmO8M)7GDx`=(GT{$EP^a>iU@~PJDD0FxUAIJ1Bt#^7v@jV ziPTcR4~hT7Qh$eNRZ{D&P?3iEb zK9hZ7x4weIH%X4vU;8VPleDUPZ8`rNV2v$^_^rR;ASQ7B`=kSo`rA-NXW;>9K_!^# ziBWk#G5$3`so|6=cY>?mR@o*qCPLvbRr%ENs!;&wl^(nsoL_NpOM~+Qc&pl!#gg+? zaJ}K+R2~(f@d3=WZR~St_vsTc62z`U1y@}PmQw<_tL1rEEqUYM+hOz4pbou`0M;rw z=G!H&K-O*G`V4c{)5tM2D}d1+Fly%K!1w|)S6)j2RwtQLszps-LaN<^38P5}3G8<5 z7mBrI5LVfCw19J~i@Qj*9mRCz@A4N>UfJK#*V%n>EZKvpmn7U~-2@r88abkVCpBIJ zK^bq0_r}{glY78OS8MCXVEj2T>uSBTH@QcIt_WbSPSAPq%1N1g+%+{8yW*V;za;v0 zB}Bnu-)jJ-@#J}QyR2p4T1%W%CuFxl)ZRx0)?-zSl`Ydz%Eg`jKIq&H8N_aV1czHa za;_#hy;kj1Th7-4vLgi%zx5mrFOwj0gEFY{5h{j<0$9td(4Xv!ckjUBOh=;aVptTK zf;*aKV0Q?a7f*`NPyMq|5l@*KW;C$977K-uj0ZN%u>K%Cs<|eS~z-f)QT`WQ)vV40ZRdm*C|DpOUnCI8|<`B$T7aS>PtnEfFbBPz?NQf&5T zuj}pURoc-c{1+JSHOyjCA*w{dF5g;-E+T4WvT;>?EViS2KrV#W#$w$)eLJ!8-I-Ji z*v)HJw4+Dbh-s6mnCe%IEXH&yc9lK4Zm8C)o|J_S`Wrb!ZSaHa!|Z~d_q%mThbUe5 zo)BF@oiS;^U!XjDnk%!iSEdYj{Dc^=$M)@ZsQM4LIytnGK~#T(fP+tu_|~*)lvjTu z)6!Jl{TVd<+NDh>9StW!$GRFFFlU`A#0u<=fT5@nb#hfKw8>wYSp}m(-21>yFA7i+ zXfz<|+OX!^CqkY6+|}|lS{~~G@O{Vdipq;D`0%hlQ+XYlcDd|g51&+bKlC0X6r5%( zu*;;fI}7rj^p{sbvm)(@?eT%GB-WhF(hglQRzubnmpn1iLj5WDlW%2}7aeJta}W}` z84^CnQfS1jI}$NiRq%o}h^!1-0M!7NxtPgkJ zWLj->vlPld9kZU;9TBaXrQcEwy>jGpYoPF>eo9Y6+=SYs z($wpyoc)#^l~`8-gV!}H+GPJP^kay6k;HMwr|3nvQB>YZdAKAX57qF#Y-wWgWQ>Y% z4LbPrZ2Fnll{<(MwQ@pzr!|u%>#RxdL#->g-8U|%&SlnisW_BPSLh>9ax1H(I220B zJtsuTx@y&Sh5iB^*_aw|#Jf~h_G4;Ct`G1MbrE;=>_RcCDFd3sz-7k&mM*NSiVLBl zo7Kpvo@H`cTdMikiBN+($HaG`;u*J^_fSpLsw_>doyCh*`EOy?a+=*}sc9s$OeLoE zC3fNNJuIc`j>3HIMa-L*(u>e+Se2H`qZ!Vp7B9rI>97)rlHSOmi z_>4VUz~EWa-qWb&eXj%H2JAT#5&*f^v?T^}e7IcR1IRZGtY|u6-D}!=8r5Xpj}6GI zX;an)UDFQ8f?4A}c@9=W%^EkY@@KNfjavx3Yusnd65@T>i)JAMMIQlWuW^%|`E+u~ zYuu@dXpNh6{obXki2e?JjT_=q*SPoW5i4e!jF2jon@rZY$z0DGH+f<|i7TUm&18)m zLWZ`+O`d&=Rqz@&-K_z~Bg(PHO+_FVN{H~Rar;L|%9^)7jA}itfiJFbtbxxe!5X;K zWY)kbh1bC853hmKpR{Y>d$0yh1;wj`yaxUo#O|BebDGGv>DIu5WT;v8lDX){V3%@= z*4e`R*T92>$%V$tAm=)kb)J-!W)0j|mfsrqPayMomK!6v^RF=X3dkiuzxxM##mm;@ z6u4dHS2reRP5n191dLu&uh@oqTLWOaHFcvRU==(8OFs+|H<7-J$?UXi>Vrt5viTJx zy+qP5hXq^pn!0RbC^_w#x)GnUrcRvIrMRSGSAx^6scSK^nZFnumk^iCT)H)Nn@fe= z=fHKJ;VinGa+7XN-Dck-j)3hAW|ixqYCSq&P2It(bWbb8!>QP%)pB`O8K9&Dtf|{l zWT+>=-^(&&s4Mn>HFYOD#)+Q=>zA4R8p^(64_H%ov#V^p2L5+kGITc5t*L84vKq`R z$BHp_=?9-R^=>pT>DSb?H1C=^HEZvO-~&duS_3ajx2A4HdDql&Mfx$syvU+Rcm`|g zMxOtg`gF9|rP%Edu4lT`zTMTV*9W5mg8?$o|m`E=HQ z&D|De*4(cJ_9m7_lopv!c}TzJ?viE%J_8Z2y9Is{HfpJ6&7Cg$RzBhU*W7K<$TdyZ z%&9^)u}fDK-A=joUvsxP)tY+(OufwbIh)bD=58}emD<~%1?$(Co%E`l_^-L!G8}8} z{|olNun4liDZ;zvZj11pMBHQ6+!s^}u@bv-NF33sqz13KYsspcemPh_VA#{Fxoaj~ zbH5wrTMvNoF~h71!+*`)=9Yyang0w%tHu~E3&elT-DVE(gpl&ifvj^`9yual&0WiL zthr~A+&v(lc@w`?}BCIoN(M`p! z8VO!=|B)>wWzF3yhuE!d9FipGE0jO~HFwRZ*UqK-&w=G`Vv}uDz?!?8PpW$!JTJ34 zUUQ$)Ou4@e7No4XYa#YhIk8)(*J1q^yUxB@bN_}dCuPk&MG)~@-8dvkkjlURn!9E- zE9cUJ{{qv!#Hc(Fu;%XJlqz2Y*ZsWKY1{^mM7Zq(0SrM@2?qyxO0&T}(a6awg zE>dlW@0z<7;j`u*Jqr(SU{?Vau;y+u?pSk|UTXy73S!pPI$+IRv%A;auLj=-m^X0E zUGqBE+`k2`$BEN+9Iv?_!{E%S_g!<>lH^i3v0LH!$U1hX9JA*BPg_pPn!8gF@mno8 zY$8GA23?Z=YwnuWZ_WJx1RQh=@m+J*BGkgU%*X!&u4jqU_J{wPyNgv?K4Jl$62k7V z+<(nov+~NhRJ;_N%ZXbyP62D~UQVg^3UFO(^on_E>D;^Kt~t%hxm5X0Fg?U7HDk(} zyN6S%{3E#jVyje3=iW7U!>CuzX|~UrwGhKD>?)V@6l2PoyN5F$kzloh>muTm)x&?y zUGurt+)=%62iq5oQeCrs*W6S2SA+cpu>O|WzeyKe|222b?pkx7bT($nv8xRGuDNTr zj90<;*lX_c!hQwBf7qxfqU(mrqyL)w@U+1XQrGLy^EbCH=@9=l_u=UZ>WoPPE^fdg zICfP(WoBis%zw>&cm}97cd70dQ1u75I=gG>zvixWX1eCCN>h2aX^{}?u-lmnSaTni z4q9`UnffwRe8;6mMorL~yH@60bN?f_-(?BZdkUEM``pE-KiE}`@LzM+OhIez zSQ_q!guO%Zpy6ombp1qEQ0#}8+t@Oq>@|0q%=2G!*CI1t zb9Xddq3}8A|6x~=PjTqK<~~d%wB}AiLl;BGf4KA%NoD?P?#4?)UUUBmRJ_D$@|0qT9a$;a%n4n875CpPg!&KpCer;3P+db7GY?;fSwQ- zT{BVkq38u3@xH$J9x-~}n2*r}%L1Am99=DEcP%=N`#{9#v&P3dg&KXi!ZogLF}6Nts< z`wJY#3k{;bqdUkD)p$RJdY3{huHIJQyydkVZ?Wl?ukPvG-n_ZL4|pVX_Q(3$;$88+ zX1vaz5x2$4S2W=*2aPo``PPO;^t9yb4(PVnYvXv2<_au_(@TVC3^e%b4v=Hq4~WOi z#6)1#z~@?+Nr}VOZKxqXa8A zN)ue~d}wK*dx=&zXXu2}d|!AG;EbR*R|KWwjTUc9n=8uv)C6UrU?sfyaVyhuY%s6G zaK9|$#Km!%>~*QwsHh6ELFQ41iYceHxc6aw1zIf`r@ul3ETcLZ17q2Dy9C3>j+#5BvHjiHQu{ajn+1V||&YScbsH1=J-D2!n<{wpB`34j* z_UsAtN;V+cJ9pr%9Aa!k(PLoAjmfu*2zmpHIK4Y@sd;AE`ErrSyxdFA#objO55Yuv zS#aDTU+H4vmyMjV8c~Bi=RK&^tmo1dWe`@qV0HmmI}CeK1oc=e1(MH5d(inXAL{xnRayWA|L<$@t-!Gn~eAl=|(zh61^oQ z(l(eg>^sPCo9ix>gF_JZ1c|1SDI%(f-dCb}MUe&SG3AN$_L4|)F!`=KyXd)e>m&rq z8Q7I{DgvoOOrnR-B3BRU3g^@~*=Fs4u$?539B$v2De@`)QDNjW_U7J1|98#IDdzX& zjH?()PmNB+@1b1vyITLAoTvWN%U9-%LZVpma~#H9IMyAtXk45+)%$4L8_R2B>tfE= zru53iPF#}cQS#EYa6}d5VChpNG)^5tN8kksErU?Jghjvq3ir%b#>7=5>m10E2hoU2 zj2PEGDI?}E3w=(}>&!)%R9vLJBBa0NPV^VI_X3s;YE7iB1r zvh1=@W?oBrKS|n|nIycKX&s8{()gbKSmKfa+|;gxyh9G_9fA<^;w#FU79wA6Ic{Dx zz4#{o&+Bj}1T`U@Ob zD7;uJ(I>_YESd~){MH4>YZs=SusetaLe29?leWjVH>+w+O7B%yDA|>chW{GMO>V*0 zLTHdb(1#_)qzJzo8ZGbi4OO0wa0*Amcqf=M;sc(n@;-U3@AKWc0nh(p&v_JX6g5($ zT1<3Qq9KUHWd<+3u^xlS9~rSlKP1_5At)RPS4^FW)@Po1wcIQbo}eBE9EQSniW<^m zRd2-b7JJUmq%Mk?@Q855SeLH33q^R!u$A@F6OE+9x)X=HSXuouXwt*eq}*ZTp|=-e ze+{dxze41DBvzJ%5fD_DYi(yC9wWs6i9gPaAoh@X-vKca_={? zg%VqJ9AdS};mxSK*qtWR%3-)(%3d)HH)C;ew+fYQ5PUHSr%)*(O4QOl_Tj8>UA8M; zW-k!o1;fovZwnO4a{Vz>{E8G(xhjPm{+XWS}jH}KQ;%w}WJh6(o$VKCD zbFs78FKWfj}kFfK=-}o0@DW{r2B53t9TyTUnUD)g*};d-_7F| zbido=^YMTMcFA6JRLaPt`)(e?*b3eqhTq+Nr%{^jSP#~H-_vM!-|2YxzRQ`z%)0MREm)lR0jZh175T@m)DXqp_pziVqwf12#{(d;`z~{E zDTIB1L{rHW5jEWI`yTg$8F+1_u%3auS6MnKlqxdpzQbaEG-H>v(mDf?HwU})gzDPR z6tBpqr+NnIz6V5f@C1N`ZvFagsvCb0Pi#;(zf%AHUH{T^Cv#px`9$W>F!0HP7q&p#B^pG+fX>47)V%54Bngj1Bs(C%le>XO+TO5<`gyDxB z`LbQ~%S%wJ>44estZe7&iN!K2%KzIs@ErfLPb9IU%2B2$vOR$pkg}6U(Amn#!j~WtU}T zZSU&ATV9q~A^9Tie0mDKDN0|4Xo}Jo5tbEZV61>IBeNUIzLZYl)zT}XO;K70Xo}LC{9EL4 zWqYEni{5!XL%#}prdTCGEgJeHpiNPFp>5^jkS*%YPepq41Tt+^#iug-0WeqJ6`I!z_CL__G_ zHAU%VlP%HTj}owuUc1_&Q;2Sg(z_9xqV!(emgubogi$HfL2QZsax5LM9Y;rc0pqHu zN~dF!Ov$Im+*d{E&4Eo(>QClVkGUm!8jej-8qep`$fHG`Yl_nKI-mL+Em7)CHbu$T zO_I*1&Qyy|IEdtyC>@)kbZN|=fR?c(N>B2(MCmcgmgooNkxsTmscmhEzKCN}lpX}i zZ<6rEC1e{t7uO<_p%ipelpapWzZj6FC_N1c??@meH$`c&IG^q$Y>BSM%>^ydcjS?t zg;^y}w#Z{sRHe}K8%e~qjpBo=FvwQhm1{RFrzS&fm{FCRbl2exgTs&$>Ae*uwe zZX$X#RIJ26$XZ(IGutRlSO;s#JhKW1<()}dyqm185u2!+xe*w%Ar9qc9c)AD=99y) zL0Trnd95*VoMcF`mMvHC9EnR`IIKT zp`3X>IWy8Wk^0~8dkqB3`mwOh7FifnVr+_d_Tn~P; zp#hVdbufX{xRifD#Ix~-l%7Wmsb;Izgmv&moF3G#Z_jr5_3e2szrMX(`?VDrmoKNF zwQn)v-7&Oa7CO))&ZD7&+0ewu%{n;uBIB$dSf|>~>J@nDdnt7jVYjSv_`gs&uTX5E z=kZ#=X|^g&SO+_iDnslNhvV^Tygjy)$_V-PL8BjQ=xfDU~YW7J7>F zD-Kx*Sh-mTf0!z(o8FgPtauUK^sxJ{fC?SMK{|PradN2b^mU*`J4sO&3w~gprf-_f zEm52*AEPhV54|nv(q`aixhAcH>ya9l3Q-KNl46AWCVC{Z-+{NA)vJ)|^oH0%_m$r6 zz^-N4PZ{iorI*zu0PlL5F7Lh5mjL`fi|*GX&s|6l`u+l3q2J*kb5GG2>xD>KE*9-1 zGELT(R$vZm&Q5Ise$XqDn{}`nsc|X$fDjkblhsR*654?SD@sta8VXsHs5tN^PJe3T zW83Y-pGGr+T|dNmH-KitSXyq@!N-sqmm1;c7W{#q6=`^Sd`o}vG*;lKs& z$T~?#V}SeR2}{f2i0W=*2W|>wOBNzEE;W%O&P3DPf|L+)uGCU%YOCEwaHw_6C8xBg z((88uXSQ5cb~jSvQa&lW3pL>Zq=X(Np{D5;+Xyv?4)}MM7|~-i;L6K73XmF?VxeOb z&5V{faHAM^7E)#C{z6?u#f7w_(~Q*6HXNiq-^VEwe5VNKg=fhHnQg@8HqK}8MQ`Ox z8LTalRSye2{|ymlo5J?|2&r+Y9wD(7e`MAB*;#n=i34BE_*_&2X}_yF-5H*&tCP6! zPIM_J02Nw}gUk;>RaD%O{)l!`AS2AYepojs$Oql{ ztRCw9AV6j_q;>Faka4LRc{vq-D7;JMZ()4C{4Ej}(mQY-pg&LHAnl_oh#hS0B!(=Y z%ZCi%caUHWZH+Zp|?t+89=)e{;_InZ?_^xfO{3jhR5A!Ux2NR=TUn8ka}I>F|O5SGLl9P1d;4>i_ju5`+B8jj&FZ zpwNM)jd#$v4BIaK+p4q+Yl7xGbY*94mJrI4hR*ruxzcMF!w0UqvQxlt_2-={Hd1$- zwo{Fy?JyWGBAqx&zE|%+Y~x?`nIjU1H`ZQ+N&WFEJ8L#h(O$UUobBqtn!q?^{e4%q zc617BivD}ol@fH(cH9_1H*?9HX60*6cC2;Kc4k(U%7Qpwx+$xX?mQyjD&Do~Z{fx! zE#x+1hH*$#Is_v;hd(;lAE5)A*&U$+Yrt%cwoZ?Z%?(ESM84F}?E@A5>dPKfL<8L$WOPfET3oO|uiSQ_e zX$DiY#5#L|Qc$1U9c>;ve?t3MQk4@C&10*;Fj68kixZJs3h^W(uS^n?aiPjT16-IX zf)Z&oX~s>ot4gqxd-3Y(awqaa67=1+(F zToH7}WH_ZRw*rnkQ}S{csNCR{Z5(unNfI_w#~1#R$XU#W1Qk7mn(afc4rL5dIzce*jzIR7srAC7-*O4IYBAFG;%$BK0sC1vO%dLvt0}jeXwJZ|+ zp(3eCWiw@3>+}gZvrb}lP414`D(c-roZ&Rj&Eq_U7d=q{o`NEtuTb65DwH^d%>rkA zC*2EK4q}N)#MXW`pJJC#HXBltaTl(xdD<0=ofS<*+Y-sfg=V5{sXJK}ePfAm7BFFP zo0Gf9$oOT`MQ-jwG?17}EC5L%)?6i);b*yQ3w8ZiK_}6#DAbshXQ5tTc5<=)znW&+ z)>Mh^=(4fYZk?;iY;+e&tYu?ITVt{tiaxPe){k`&6^_Vi^Vkr26zh?o3r{6%(6x;b z8*|Z=kAbvJB(2>oZ!^iG#+789XRG_TQn$s)qSMaT8j(GvaVs@f#D9S{j?Y}E*o$R^ z#*8WF6Fe^4Tcij=2VH!r<+~dmCzuWaUr&oZq-V)k5v}z(DrFW z2gj0*KILgGt`kPEXD%wySHAjO2BFk0$2DJF_EDgYjd~f*t=RbowCT>7Wb}Yso9S?x z#9~9}-_f4`ri*Nn2m9~n-%FNa!>E7FaLFW_;hg!8D0OY#|6cuOL~fYQHH7|M>-q21 zXJ$?e%*^eW|MiB@zh)B4B%28^^WRLsng3q@d-)3tQ2);H{P)WDmhTb|-fJ(qI8pKT2u-$%ucCFctiO-S$I+rO5q4|IywVN$l0tuJyen~W zf9dM(#8Q08Hc|TYkr#jem)Cw<{KsRzf1|W3-Wo3#fUfE5+0hr@S$s}sSE9dkNl$xX zF+Oh#zLlNb%QlsEb+(r7XlpCoT~`yUshWE!c8q#N7(H~Ll=~I7Qj~gKg0Z2TqC)ym0`pFQLLcn;}jvkt8Zyc}cdld2=HlY?O~m z_A3G2$C`<~w=aP&0^oDI?evV8!nxOqk%lZgpFmM5j-053w!S1pkqq?r=C=-Xb|vR_ zcB}40WRu9za};=MRb*UrK_utd$hdFOapJc{D9aiVnlT2yq3Ha`N%T7+x+0Q8#5Ix8 z1Cf)SjO2j0H!=}P;YTA8`gt&7)kL-oL}o?56)8l56Nm7)(AQbY!JQA@YbH5d-z9&)_ogW(EgZP<3)I1oeH;6FQ z+ujc!9brW#MbD4SjD9*YXL~4{goNFu+yO||wUJOVGV|hrA*oJt%HyCfhONlSQA9#?M`U(%d*tLz_!&?NJkZbh z`O=et8;}8%-lS(kVILPfg|mfwBa@e_>_yz!`yuXfF1%{Lh7@ zGwm_=>X3yxaUhcOR%F_-$hb|BX#x4V6~NICMdn@;IV~9peJYY2y*4z~Cknoki&%;_ zM5etQ2}NIyWMAj&r8iLw^Y=#1)_Dv?LQZR6LPnOp70C)!j`ijK8f=;HHsqH?W(`oR zRP2qM1*`6fWbgH5xEl%o$7jJk=1-ARsd6SG)97b;WS*+3vVAE*L58v-=PB9Q?qYok5tf6t=``q;^}=J@ zThKiwx->F+Wh4^ap+tC!|7mz_$%85~Jksxn^y0T5e6ug-Ti_fU&Ox)0{Vk(C$5|jR zLi?2H!bpYjj7K#U*hriY9g9p{5t$jz*&NA!OR0*wef$vw_q6CDWa8((rd$P0XYP&6 z`m_pu5BE**@uHr9HqvzbYq+dTONu)Ciy?aQme*OFQu?5b2=4fwm;>6OK7ttTx9|f!Qo%#}~stUb5xQ{i_Ct^$RUBNhdaTMI{ zufhn0H(gv^hx!uR6L@U0Eg`Pp?k?$~Vl&>VfxGXPtE!cPX*y3P1jO7=2lfa%8@DWovY%s;^*ar|jzKY>%02 zvRhOxmn~T`uXu(YY4rB=ckZ6spXiv2%$Ch5UQB)6;?_OIas)YdQ%zMdYR^UZX8Fuw zIcCHH4Th?8ccmq)-Nkv?(L3~d-gNh1nU~)djVgS9Xi5Hv(5sIFErgjh@~(SI+@euM zd&A2{-DfrBjVKGB9eQ-p<72YbJYA-Gi?tm_@A*n?#&(-oC&S-0M1C_1X83mw!tb30 zGqaYqKbDSaXc{vj+AW-^i0PAlYntro-!2BDA#&2d*4S#Zo@nlvP41ezs`ORvB z;cp!xzlkry-!nx1pk+M`{BB;{G+avZ6fkR?8Z zBkl(S^*oN0wJcG9j^RW}Rf9TBQj0(pOX@yQO5R~mO5V>vDS5AfQu652tF*MACEjLg zB&Kndj#EG>c{4%vf-6hjF5CkO3D^d(hmmS1%Gdj3S{|nrGDT9=Sr9Zgt$7tiyjRP# z({RLHm{Kn8tdeP@Ls5jgPNq?%wQ;0T*`g@I?UQMfaGZlZOUz;lgrG{QI21)3H_9{| z#287DUPaN_12PQAlF2zpg@c0RKr9)AK`=m@G95qu4M>Z;)q6qgX zndZh(^eCL72=^J8R*oY@RF-JMaiOHn!|^Ohwd1Htki27;;57VG@)Sk#J}1*~5Yr_^ z7AlI)enF<;AgGa1yo#c;_sTRJq_5Rk@_Jat{8#wwTuG5+MG^1U`D_`VRTQ0lK&Fv5 zreG&dyt*2@(xE8AJtWg8s+VHV5;Zt3lN24RCAAhuKW`9L$x{@`dswE;!;voPS>hZV zl@zxpsmW5jiXz_c$~5X+EyA89=Hs|hQaH$eii6UXhrTZR}ZpE%}t7IC{iXz;LGL7na47b zBl{BA6>gJEBU({}`<+a~K~M)v`Cd_U_Kz~{R2)07D=8PqG@=znxIf7>%H<`N!EKXi zgi{pZ{wmYR`irqEd2KR{Xhjk3A2MwMj@{U^WSiC}CD-GBKkL{oam1@A;-$syupr(` zuxH7ZCn+f$L??EYOGOb!L~_vCEl29+!B z2Q^7j{|#!2q$c7xRZ_PxH6vuw?qX_r*raV@>ZeTogQ?Pp!SyorAX65MQQDR>bqiBZ z!)SH(d8SH6nzUM`Zer>XQ?D?!B-e1PVd_?>6-?d0)GbVXj;Y@=RWr&+zJ{rvGxai4Z!@(Bmq=yvN0_>Usn?h~1($n;yMU=% zn0kS!DWeT;D^s6i>Mf=gjxo3oGxaJ{ZMcz9X}gK3A2RhKQ`6A(P`Fa2E@kS2Og+Zb zKbTrH-tb<_)VPyO+PO@9n5h?-nuczc(%Z+>RZKm=)c2U`MK?ilT*1^KrXFYNPIUeh z?$=CBMAt#3UBJ|BOszwMrOw8gx{awXF!c&kpPphke$Lci(CtuCYNr}%7gJwiYErQ| z`vIn+(@fgsOdVnBFdAMZx$rbYozK+gnVK@)oNZ_73rwAIx;gtXre0!d#u?^p4O6!< z6-866Ea+kC*GxrcnzQ4WDrRa9Qyolwh^a$NojJ=$sbcC1ruH-SDW?9w)VoZz%r;UE zF!eT5)*N$o6jMD+UBlEzm^#SR7nu4TQ}gB;dGBXxc8N)=WvYp(o0)o{M)IXW3 zt1?n9Ve0Ely~EV?)du%nrb0C)Z7owbGxZy$-eziUt>HL}saKdf#?+iTgPX_HN%KtF zI;K9%)Q_1ez+geufbTK&3{wU3&DkkTZDwlB0&{i+Qx{_xqU7Dp)ay*0dbT`|uHFEVLWiw$)xQ$J#A;u3TA08`H~HD#$e`%$K{8%^3qrVcXoMWzbQF}TZ_ zdYP$p%gouEnEEPHPct>9$>63kbrVxlR+zJAF!c$hX1AELuQK&}rhd56oc%ddudgy` zr>{0tCsSWw>Kjaj))-s?QXK=jIIROzr%bz^({5$zL8g8R3c_K_>zp>GLyg8PF%y*1QNh$wrY-}u zP4XV#v1PZ|e>S|C*@&}nZ$kcB@A!vcCxk!zFEwK`m;@Hj9 z=Ru(|1NRe9Xc9pEmd_qzYShJscQvRciQCR;w}C=~2HyKQ?Rlo=!nJ5farOdGXGNP))M=ex)+p^`~XvrGxbx({fViuNh4(= zQ@1kp5GW<@`%FE<6j?OhqIrQrPy^DwVjPvFWuR0(8bGOBt^uXIu?^H1?3RGTwI{Cv zrM$Zzl=A%@pj3I>2TGOOVNj~1p9ZB${|G1*B}YN2$boPjSB0P|k#31%P%2K#K&dEh z0Htcc8c?c!Yy+k049zO4x^)#ORrB_PS|R1#0cw?`?gMqMqz;2xFR7SlTBf>I^8o2jcnsj|GDsr{f- zsouiW9iXORx5Qmc-3LmQ^dY7WgHmPw1XE9gQlHZswI7sZIkxB z!xTlairpwv6wfM(iI~|osMPd^u6@S}7 zsi?aal!~?6L8%CP5R{6mpMp}+^e!kBL({WOqs$0F;V|UxQL{ z@E#~t`ctB&%+Cj#yCD$9z^6qq$!P7TU9<(nNwOVr%l5@Wph2JsW>3qS)6tz z;}&q5iVeb@&1ou1C~Xm^sd%BZC7h-rhte83O~nwUE#ov5O_bKmY4h<<*}Q_&RD=<3 zC8w!aqqNnWrlOA0&gC>JPbF_1r>RIJ+y+ilF-d8gI8C)kly)AcsW_#y^EpjLETvt* zX)1OpEyigoiYYD5Y1{Bm+1JKtDzXWe;4~HEl(vJ@I+?eV(^T9O?qW_;HGtA~a+<0O zCAh0Mfppsb`5wu3KYFIlAOP6sf^ zhYvHxaQ#B3%#d7Dv=+CnsbmPY8NzT~s8ePmHEfNNXU)M__@9h1TrcUA63LZo804?v z$~#RZm$0rfokDRNw*0xaFvjS*LZ?(oF8@-#pD~8(h)$`MTo>Y)>iJx{1YoPREz~LV zkQ%nA)ib%Vsf~;=x_0T51(Iv6FV`0tW4NBvDGid#-}9p>1h6%*g-dnH5~PN$f{4U(zY(02j7Yi>#SAhp#fmaGi99!Zb@Rb&c|JtzeAdx=g3ENUmxeQ!V@! zV+_}yb;@eVrLMzXU3rv@Z8dvivQ8nNhb@YbR9!0>V|4A-DH|l0e|z{9#u%GGGj4`?n>J*CGFfAMTsv`GU_^E+rhdn)F~GsHEdBt8LUn1 zWsK2vr%u@^xyIpWZ-)P8j4@n-nlxISuJr!vNHEz~Lfl8d6z-i)pnD`7;t40cL4ZG|&lZ#=F{IJGmF%`L5u6HJ)JnT? zCA~Iggv3zqnke^HNTG)_Kv9-IX?q$sqqcp)oY336e9C ziU`}u*n{M()EFwMAUXRrW+G!i=*{@&vl>HVryx0pG=_Q+3S*=QF0ZFFhPtFda*k+B zF=JBY(E2lN)3680iIz%;yq`8~72}T`&n91G8bg=WAUT^ghAuWie%`Gy)P4rZxkY2B z5e$;^g2qt86eMRl4H~ggI0nhNNMk6Bg5=QZJ8h&gNX{=chJJ$NjG(R=Ho7JT$tl;E zN{Pv%BX+f!ve>FIbd^-P48o2ddVx1>G#(DJ=W&gxlNkTL-!YA$t4WZYQz%2&&cYtH zsJ5oYPou`nml*$ib!iNZhJy0-8I3ucF{%D}R$~@PjDNdYNDjuf7<*8@mTSyX#t?_v zOj+#Jm_{TA$@#X%EMtrof*&L2ZH;MSOlrR7R4KmYj8XsTXyo7xZE{}Z*Ils`DRg6isXEFsKwl&y;%Bxai&SgxhoaGv`jxiwgX6(6KW7Z=*C|_UFn2n4v zQtW)arZF^^5+vtTsx;Wn!yc5cO&UYJ{UA9X(wMCh;~$6L(wGa<$a!63VvGTyH{+kF zG!(oum8F(CA2!AoZ^y3Cm`l>g`HaT& zrIGWP#v~a7LT@Htbl9Sq_tfo>#_X1u zt6&0M#ogQYG-eNy!&WaaEp7n*J)<#~NzCKu+ES0fy}hV0|AFMNb%?s-DchSGb2-k0 zExID4Zhz63_u*97BFj@nWzmHT+ZEWuRs)X4yEZjjW3Eht*{CsBrNLaOF;`0rwf3pH zey%asq>(d~E~MD@Vh^&pLu0N@gSkdyu1kYCs4?$PgZYNWd_ZF8ijbPGS2X7OG;&7L zG!M3Y*n{%5QDZ)s26Lyz+>i$IQ;qph8cY^-MzGz8J;L6|Q$5JEp~7EqU8Z;%jiD}I9HOr_2vw%f1=VYX<@!8DjpXw0Y5V1B1D zpH73Bu^1<@-HtuTp7k1YM;gqH8uOVnm~UvzooO&Lm*Aw_igitIaHYhyw0Etc3yur3 z+Jou7l&%wMBRL&7FK2wF$-}DB+^j0i z&FZ67emX}@%2KVjKc~Y@jr|=Jzi<3FEaC61_~LBq(&N}-FU-@xrI@A82dh!%jrd_i zG=HPX&hv3eVN;JwipkJ$BD0EK59f-+))f0-$W#;8HWu z@2Q08gnH`c;83F+cYl*e65LG?;ZL8U6JyyLf`+JFtV= z;=m4Of~RnTw0jCBJ&Dp$ro3b=a4o76J$+j*aWa@q1 z(C4c6LAfsv;&j+KM4f{g%Te$8CgtGaWZU6p9Ng3Zje}ZR3%9yosp;y22RhZCZ*V*P z`35z!Qoha5ybZE(%^v4KA<#%auE9<8&s(n(HU7^5o@$-((ol1!-p?{z3lv6ts^L1$wr;~>$Z+Al^v_Dro9{`#pRSy zDS0_;%|TZJF9&BVSzhCKcV%B3Unppn{lUiaGW%VojceDH#Zp3OXq-+XhsJ4#Qkh>M z$uM$9kt=#KXEG)tU@~Viu1t54$AwINQ`(N5%;3hNwBJ{?r5jsNzk^&{$Du}L>It`u znb@wOXfoEN%epJ-+z~f4HnwnRY{o`}K!tz1)!for-q=`PZO-cEOhqAuVI?1{R`(z^JsryEPcO^3!#S2o8C=wv zR}{NCQ<<|EQ&wfp!j8ZtB!)M1C;H^)I^Yl0?%9DRuk8L1qc;u2)>B5W=EnQL&1JgL z*#ecv@J?>}4t=b1d-LZ0K1f7TXMe1}E#4LHYsPiF5g$R`74I5Iz`(|un0zgA%x1v&6)mWpD2;{ z;7z~mvdc{Bc6^SAA@Yy^)UBHPPzI!d+4Hi4Le0dg2WVI6*sTyOzXUmlruQDp2gdxpy+YdCJ>$t900 zhg~V{DY`FQH8{KJ82tSl)b(|Z^VH0V$2i#_Zp8c7@vQ-8&)hNnkReBaWtk7^Gt?6} zLeG@nbVHB_e><~I22x1vrm#Y-HH=ItDKgZyjd^^tR6!|g?uE(c~olc7n+~^o~ zSDgAD!|la$6gwAKC zqX^^AbS)mQA|MMH;f&qn|DX)p9db3kNbepmnl+@e$5jk83>n1!6g+D=G2<1P#S^l4 zkV&c8E|VjkLGtcFo1CME5TnDq+FbxbLOzo*$TYHhpEFg)vYu$-NU(C*d9=&kz#}R2BcJ5%+M;090Oq~b|pW);g@}5 z;|Y`KW8)CVQtSxZrXfmT8=RGAXw%tj#PCJ16^@Y@i*=;AajG}%#;G(9PL9kxIL{5N z-eDH{Yqb}- z3$JGU{W2c_%}A;z$kG|$jlG}_q^p~+)(+TedD-zP`d-iat?L2qn(R3ft-Wubd@#_1MP|ttcRmyY+PQTVvz8#i=)1 zIBHR*BRci4rh7@*71@~z`uCkq!*Uysn>kAwY(D0=x5>@&|P4GiCShX=lpq*K>CB;v)X$w#7dbX5(Tc=vJw#C^x+}ha=*IKW&)~U3&w$=`QzxQ2x?fHb@-{*V&&-dN^JbSOb z*Lvsmu6ggZn|BYF0>|MkQtS%RUAibvCblK%Rv(CeY^D%L${AElMtp%-wXwLlA=#i| zQiL^P)sf=Ho*rj%uJggX-$`)YZh{+;_SkGUFzD6HEpx{e;BmqnA+jo!d~_|yUA1v; z%ng{0_yvG-9yPfopjYmU5(HNVxIB|y8lD-hqQV7NfTy*9i+TB0x#5UjGKg=qq|!-{ z;C2FTfroGLHn&~c0CzRu&NksF+iFBfO>vhSZUN#y1YCy+H_U{a8;w=r);bDsS5}Oi zukzS0T3&4d;U*8~TEOKv;MgwF>ZlWr^wa4O%*T^UDw zp90)kFW;Ek(8Tu@z@6`)$MTg%UHa|>+#7(~Zo*~YnfaEw`4YY6xwtqEMbEEq7vR3` zr^L7tC=3C~ra|HYjdEl6DnV;`rz`f|@Tkf~>y?}e$0mppH-TIQ9MTroRYTFN( zZ@J&jd4L;X!ddxS;kI)D$Q1yt#6gewR#YO^KFH2Bt{AhtRl4;cxD|k#=jB^j=_+sq zfZG7L4PL%gQI}s4y=_5!tIAz|N^q9}uF=c4syc=w>)439{eatP!cnSqa_v2nvMLbzyrs8qfwWkiSKm4 zJ?7&Zt#YE1Qe}wvr9%(aHyVpM6()MkPDDH_zOf1~To>Tp@bN7zal+C4b`L$px3tu& z@7*3a#kaK58BOv%h=|ZU<@c69N6TCl^eSZN5x^CgaHD~z_?DGB`BL8G!qfg~!Vy)) zx4gvZfW)^B5t;M7e9K)9*af(?fGafNEWe6Yxa^V#xTgSDWy0BfE6SYyLVRBV+!7z( zifU&;DgfLYfZOPxr}VA#(Mxw40C-B@suHiAa{;%-$G6H=5p4wi1i)Qs!rA(|3moaY z9dL&n@+rR6rCz@K0e6RwZ?&r;$_2ecfO8(KZ>%KdY^bRm-R*&6zOj-jXEgg2BA)W{ zjYZ3x6%6_F5x~9f&_nT!RyiveqIcBE0MCkVEarv#C*a=o@r_kD;c9>%L5627Q2s|( z#kbT|QL>*p9mC>VTH&+{!L0>co=MLtN3k+jeNX_njev{!_?DGAD?p;RGmx*l!6dk= z0k^=h4?rb05@=~W=h~6uKeBBKp!My>vW*^^*GRjkZ(EU-seb&d<-4GJJ z0;fUotn#rf13mORz1$ zPQd-zr*C!C>G!1Xy@7nIT@5f$daL)lQ{UqhjL-5T0Tw3Dlz!1GF zofRUU+0LcWQdD==L2%at?tGJ;<vaJK_)y9sBNqtckK9(pa1Z_L%M65n?L zx7)|J)J1P2;64Q0VF#Sjx2(ijO%S~e&VqnvrEgi4(@zPm8E{WH=qb2zSNm1~xGuoG z=F_*l(rdr{fqcuWy>N#B_qLC3g{vN_0pB|T7g^}3uSzR?_0U^^d@Ey4KP7$t0=N+- zJv)CZE1mXZ8_h#M*2lNXXXg^YIS*yOs#0flLVOnhZk~^Cl}nETz|{e6gP*U@pEn2c ztuFEMO#-gb$G1A>gv$lrogRA1uc|AY?n~|9eh(b$TUO$$H*NylPA^}$snZW?K<_Z% zZu9C}7WL74Bam;@)qy5E9|hch1c^GhIKE73z z&Sr)9KINgO^sRQ4U()w49yq0MwJ(4F3AoihzSS@7-Zv=NW;J)bNTk0AI)Bx@# zz#Z}NEsHs;W1{y;Am4I-IS1VHKECBHzt07|qaJ#kzvUIa@t`;fz>Y)NxuVipE=j%! z;NJ4_b+;cifXf41W{sykDzEg>TN}vN-!5zfT&_vaDo5p2uJ)4jZS&Am`c{`Y{hs`J zy9bW-#jw%a4qgVhVlUr{5?8xVeD{0kG2e=kYA@g0J#dOI2GpRT53=)}fLr0?8?AEI z2ZZw=;I??}ToEgE@+Eq21oDl!CTa-oDBzMlzNIev6#(v^9(qdOQlGvP76RCDD1FOZ z<%9SZ0`58=-?D0F`KSS03E=Ma>09nY=CjR=fK51-Q?eaMpORvdq;^6TNf-b{uTy$}-=4 zU2csKH~RRNRXgibfQSjWJm}N6+%=(1e9t9d$D#OExbz^n%{3T@`uJA5#`{!XB?0F= z*sm(9T;ovktIKMfQ0DlkvdUL}uLj(&eSE82{<0CIZUUV1P<*R>`hMtvV|}YI!RtWg z{8%i+M_#^Fu@Yx_qw<>zxcnuy-!tDT_q-3$+Xy)4q4<_Yo&7|DYXe+`gPsZJnl~d^ zw*hXg31|6LRherZljz+U$hX{Ak3R^w%|5;ru5z>y^o{^-w+WYyXQgk2Ykq_LpkN6u zjzj6;?w^u;C4l?7kFUFbS^&5O9(syzRn%D@kYAnafm3{|eDy{%;9m6cbVisCGLcvEAy=`ajl$^{eBX}x4NX- zS??0uYk(VJ(zE(G)lnC{F2KDDxDp>JP+UEretS#kBvD9o_<*xBG!94`HwLZ8CSG!LR{8zwjHsP{}o*;S^t_547_t&XXyy&Or zdJ}-)DvG3d%?DTM8c!2kAK?DthjaBi3GN}lMOu{oY<(+T?I6MZ6>t-La8)ipCAf-d zQk3}NeDj!nfLrE+t9H$o5WR;0x4{qR8aEQ$Ujf(Vg+ue^bOeH{m@dW6063?B1lI?+ z>-}(1=c^v80QV5!?hJr)b`XeO<_sww^TWkT9Rm=8I~i~<2f#T876i8&aBukGN}UZH z!94@G5B+eMIYXj()F8~9DMj`sj~_%!%A5{Ea3=$HR1SFbA4Z_`kD+_>gE*uct zGk~iLfb;5`IZKLj{csh|0YA|@8E{`XscoSR;;5Pc< zTpdb+y902^066CY2*JGxxGVi|t_4DZE1E0Cp#V7NLIlCJ0PbEtT)EdScL44wKb)%p zA$o5D?iD{=Wr?TWC@PWS-2gae2ax3hoM`psZiQ7IM#z&RHf2(ATit9)>=66ZoT!QBD4W8*&H)m^-2u1<1K^wk8iIQhaL@VS%A5;Q1Xoll#jpKvM zb55`ky*mJxzQyYYG1o$I9pK&sT)rQ!(m63e^oq;S5A(xe z35dEqr@dUa_q3Pa!o8^5H;Qanw|6K#nNhX3*X?=26}7h(DC-dYxW*do#d@~(P9jma z7ueOcclH$Fj*#xOkUTVZ)!r%Jc^Lu}c}WrCt|R##A@;vBrf$!Zw&Z(Wu_!abQ&s1j z_av*jS*xn`IYN+s{rATo1N)V_eUNb9x+C>_p0fy0l&RadSqn!5;2EFd_q_7XEE2+z z{7#yRuwd#Og6(>0GYM6<=Xc0~g1UXSmG{@}daA%q+H+d&o^|=VF3y#`lP|qE|KpE^ z=*@S+HA~QYk%We)_D&|ecip|Z>P6h`h`Sx(bDU-} zt>2?{qpAbULHxAaPuugji@h6%iwtbFxAwVXL9x{|WhXH6S_gio=Auu4a75jVAJ*-8 zzV7jl;H5t_&N%C+qRqi`yS;}*a*;OGc0~fG9 z>Zjd{Bxkgl|4*8s)xjVq-GGMN;bUeS^F^zTxn-&x{}ow>o@r>-8)@?IAq@QXq)+~8 zx_CGpZI7ziNo*l%X`%{;S>KlE@&O^CEWB+N)ss|wYn6v4QLEa`s=ErycdG>gsJLM% zlDWhsvMST7bxmovH@ZD{)&Btn)LTAN)?xo&uZwh@rftNz^DO77x~+-OgL$7z_qv|* z+Hesi;`mf-kM@!4*j*Rri{uz)zxT8P@(72MXi1bad*#vVWG;DByQ@0n0rfUf^3s{6 z)bi-%a$;4=xEpL2EH51z9MIvFC#Wq^UFu-H@L3)o0b`*(>s|r1*H96fVSAWo)nMj&>8x&AR7cua{Ts z!B`4yf+np7XGhGslWJW`ez|_n52?}F^GluG(}VO`qU+K1LHg)&=5SrFp9I!L|JRoX ze_FXZih(;1w793#kPTKB!{Pyy7U0(jZkPj^_-;ai^Zh+eDWvS<1g@ptkb7Q|cU zm&47xdX0DDnSDD_%}LwSkF?s!XKFu|q?1!2u(Db^=H+PTtg=sKM3)b4YtdSQ42ov; z6Fr%9&!sLmz{ak=sILFbdT}xL^E}dEa8H)?>OI@3_pW!9PW#Z#?_HN`l_d1{ocdUF z96AkDFQQ~l2fd(tcjSo5cdvYU{aNSv|JDBXiOK`{jj9a2g}`eIR~trt^Dw4Y=s3Z2 z5M@G_&*lZ?FZ`rs*dLGldDw7d>^|;F2Ng)mfwkW_@>?$>1h<1`J%Yi9IZn?|wJmu! z4Y+k9t$KKkfr+wnlbQD$^|WftTBTczqNDfv?AY|}H{$5%(_rA;djP*)wJZbaRo=0{B1 z6#RKut{{Iqswzr7kQj@{T%^?=MWU$N)&8NZ+f|zzc?aDebk24?#f-FITIUhAf2`4Y zP2=gnegO!j?h{adAh0taRlmmS2Q1fooc)@8c3$~&M+xmM!`AqJ{TiE60la!TEL8$o zQ3LCd;xl-hZa>moa{=?I-*c3Dff^8{=$!N2Rlt6km64GZ%S=lv32oH#oR+P0yTfgc z@L;;zyx~s0DNm1`_t3!3`%kgFx#&WUe2hzT-Q&^|5RDqm8jlxHH^bYKIg)AS&(Tnu ze#Uv`DECdK4QMWvj#9iogjacRL^@A7eOr~q%WO!?z)~tch9*EZHWtd&RyA&Sk~Rz zmpJ$3*M9r{-`@H|!Jq#8{yXQkH8eIv&uwpL?I>>Q>JrC+!pW4zD*Z<^fW_T@!Uo{@&@NVOm9Dd#S2Z#3> z!9hr@@A|KjjlM$T1)_pmXY!$*wMIDFLT=J4Cb zK@J}?zR%%zjJG)ao-tuB;XQ6F!`0xSPYLjURIOjPW*y&l*1GKY*gX6PiDL)IHJbh6ALvyB-#Rpu!4BAKJmr^y^bue}NG zBXibgotB0dDCr^Rtep7Sr>{v?cXTE{g*)4{Z4gGgmhztLQd8^2Dfz_@+gsF=A=dI%qO0S)Ts^k$+o+Lf3%Mgcslz!}>TN4Z|q}8sId$u-o zVL@VWWXcG-b~PJrHp*lrPNgadEP6V-65S10!7XU)>}(Um_EUKrgr7F`HNr=8$bg>( z#Vd&_J86>IuLei4Pxg1AFx^bj4uWp1BnTg@#uKYQSZqZ23gmd&u=?Cga-_6j)#E6l zw>zQgG|T2o5ytGY~kEfhnp6z^kLOEu4pW&tyOvUClJ~8{=^*oLvo# zZ3(k+xVLx#E%wzeiW+o?|u8JZW5xAws6;A)BP1#O)jn+lpcdqD#ZX6(qG zZD1lioPP18LKv53Pr=jr$!J2bGYREWKjpQXf)lybg&g-FhxhuBTiQAsl8W({UAVV+ zaOV?l?FG2V5i7EOkJNMNVZ@4AaJx0hShTA((UjQQ+LKU)r@OZ)se2}`0XlRZ<&Fpw zm%ad4F=AyoQI(=04s$j3ZW1G7Lra=AH=w|FH?$^u7SKIJ%^NARe~2l`x{2t3ZAp<=mppqQQXrO5GNJXa zUK5QAV)?knl|;!jLwjc*6j_~$3MJRBY9cz~CeX;p0Vdrzm1yeh>KA!ur=mg0P8#(A zG$yfIG^QY--C|W!e-n#wwMBweAzu)a&P0LB+meDrG?wg)D`!LVf!u9n_j-W{-3EQc zAfos>iLk}0th7do+9wVO5&0TM__ z)tKmP5qaBEP$@+!Dnw#D0^@`@18+|OOd|<`VBHDjSt_x8<-nx4ERxuBYt@1D__ElWW!n|8f-h?VMOo?2W z52T=_3iDQNr7MUS(NV;>FyD|0l?$_l`h*A7D$F;hz;_g8BBBcOP|OC&dr1JkxC`^0 zDJa>6c`Fy@I!#0u<_A(B>cYHL6=q_2jmA}lnQb~k73L>WQBj3?>#F5j`^7_`@gt%^ zH%=u~VSYXp4ON(J8ly+}X{f^dqZA~p!o0PAD~oZKMS=@6`GQ%Pf0=@WuP`Usy>22x zk3k=^Fkc}j)3i;P;#FaOH5EZmVcseT=PjbgmQ{uM^_1A|!kpA@T8uKn0x79fVSY0O z6|*oCW4kcFodVcVn3F8)^_rC`%v7pG+Ncua378{oRMhw_hcP2`Ej^bSCvsSB{FTEB z&wWWpXu|H0D9+2T1vHBCCF00uWJaZ0p57Wl% zFz&pL!kxx{bGX}h;Cgz#+IWe>ea7!NyvFz!hu0dTZlLr7Mx4Xzjf*(E(YS%bn~nQ9 z{JilphqoAiM0yC1W9nUp7{7c!$xz;a7~E9NuXh=I}1#`y77Fc%8$$jmSa5 zKRS9p%kjbJA?@`1*U{5B{=?C=9R7XuT^xQi`g{)mF?tt={~Y}sh53!fd6!YxWc-Q@ zmY*=*;`kOrV3sN^f0Hqe!_7vF!&YMjhg*ym4lgivaM)&inZtJDISxCFH#xk}2;WR} zx{bLU_84n9Od3fJdyRt}_8H&daGUWn4*QMwIlRR9n8O{$sLvCfT}BCqml>yWc)8Ka z;cjCGhgTRkb9klkAcuR5S2?`O_?W}J#tF9&oqa|Lhu0dXa=71UPZ_;|v{uOrrb}g|RUZLrrWv4Cp5{hML%Dim$=!TMNH?F2*;7 z#>Y_*D6*%&qbboG=aCS`#jTxUd~+y|#>+6sgw@7DGRTBA#vD|!X%p6}8S)9|8h3Gg z!g!v;&Bi+%wi+3?LS3lZ+7$1EwGs{OJT{nJz=LkbI6w^<3Krr$dvrL*f*o~DD(=F~ zXzJ*Bh?w1y06MzE0#ZjbDXJKm)N8|RQmuoNhh#}Dk0vrGc~)ssZh0am5i#+q$s}@V zQ)`FFUNC~@Quvv?>99g8;|umoi|vdit{>zyd7O z3G`$pun4s}fu1PgGZGVH~pf zJPc94avPd%>mr&h=ml!zejL=BE$U496qEyLT}a7zZwG1J+R%p1cQZ!fUHw|w%y{=ko1!wRz@?%I3?$qCS#rGN%Dmr#VPT%SjdBB>uK_BErwn_JQ~NR z+?uggTYt#X5szBhj}K+fn27$6hDDaEuU$H{!m|rF<9)dg^-lzoT&tUS!PND4uNB$b(T7oe`G?ZSq(w$3J+@-+p=C@Q1PcpL0O-US+Hxy^6wKvL7|f|-v0y(yZqZ<}mtYguV)UA^*Me0I zz&ACJs{BQm%v)j!rzdUL!K_#m2x~~^Q13fGBsk2UMeh1 zlV1HA(x|q|jK}aBGvoc@Bk(?B5_G=^G-MO*#N@YNg~%>Bo8$^p;^aq&(Lq^Ag9F9r zaos5%B%@W!`@hws`iF$aT<7IXiiH8WQk@XcPZ>5CjAr{8Ts&7L`o}ru!e@|yUq@p%fq~8 zN1~exH9exD#MB-Z+f5c^*=H>llW8(Ma=DyHbB&WfOG4ivr&1PVY(Wa$pqg6GADwY; z#qzDA?GKPvEsv&=KTUup>wh*M$G#LxP{K;hseB< zlyV+Ft<|gdsiEmn9mnrCtIAMo5^;HM$>W8PQH?SWQW!dN%mru1QrmXwWIFEefTv1mJLA(3B5O<+_cn- z>xLXNg(?RUM(X zM{~_V(PeAN#vcq!zLX?&ib{!9%>598`2dgQwO9LjRMVT9{L4Ub0w$==i^icQn^H1ABC(Hguq-v z?~Fe1wTMwWa}mhwwMY?ho&gjFKBpI<@_|LG1idBhBYTvw2)hqSi{l_1X0tK>I}7~#5<2+CRH5g@#vk>no;GoP!EZE_sd zA2Lj-ir5!Y5;IGX%$bH(8Yhb&>CPlcU6)Xw97iUVVM$eriqO8ep1N0e-><6T}!u)kgp;j{DUx4(nh4>E}@wJqQ z%+ge+bh;2raVjGbU!{p+uID-ZViR+dL?6(1TO>#VCy6w3-osA=d^r&JTgaRt3b{2Uatcc*VSWl)uUYiS5W=8kxzP4t zdU_%s#h_Wpku!xj5vQXNkh_{B?i!dxO1WA=F=eBx^p2U7k(^gPB)!YxN0T zK8VYsM2Gq3UqDt&%JLqY&hJx5V-q5L`7d13W&>O4-^~U%8Z1K@rNRO%K?RT&5Tdex zLi~FQrW%u3b^)u;X4%AwiBMXa*}3!NSA_xqU$)@af%%{Vn+48Jfm_z3BxcOFfc3ru zQ(07mMx{WmY_e?5a!;Rw{cCWVrb5$8&N3+lb~&d*YQ}8_-WD5|#)s&7q(Cj>;bR{+ zL-ICY9kwus&>%E4GX{aFBIyE zW1w=~u@abZ7q(P&$9q&p+k#0%OM5nB&i#To*5O-PlQ5e+2pYF)I${V)CyGic#hV(s z8k$;@{Xpa<`zJvBB_W%|y1gseFG823Krc^FI&k@Iyxh5H1aKep)2w(mRmp6$JnL!C;^pF#LCk1M>44umEhK@~mhiG%6=>kX;qJQSi!s#F~ zv>}NXorBegH6*njX9Fuin6^C_^LHt@D^!;J2B6*UW;*0)GQrVcuH`M=m?uFNvH^b# z%wK56LLvSm1yc)?`3{W=F%qZgIE@WW7l=@1x*EE9YNj$u)htg2(h5RU^`Sx>&WQdt zNMka~oxs{{v*e#{ivrBPD zmGD&{-m8(tgnNLO-WOOZ(M3e5OxB)`m4Qtiz5GE4W{x{LyW8<@sh()BU$wj$Jq5EF4K^|;+&9fuIJ(4k-B zhA@wsPlE>*PZXPl^V*G!h9Zdfqu&{EY!;+bAj4G*a0);y*Dm?5~)eRank^ZVY z2CYHX0IC8|9J4C1D;Q2?2QDHGV?0aM&9YE1Tbhi~#!$PrQPX)2h_zS*iIy00HS#EZ zM+!3Z@rt)6M4gh*mqF!gnvxiD8_9CY047k{$Gh=<`(TTWSuKTft1$nH)8WyoTAD@P zbzWv*3FSOQH>$0nDM1Uo$IJ9`FuWm%=_%xbP0ZBaj`Bo0cU0ndx3;#Q-mE1nhkgQ5 zZxA`F<0F5&8`d{UsXKOI3LVN}eXeQZ4S2hfUb#i#IH4N9h{CDNL3bkmK3qcWat6=X zO?U*&XZjZc{esHe;OZ{rhg_$Gt^<=>EtcemLNU4fQ(;1@zC<+i5qM-_YQW*|%xucN zWTh)pSc$rbysT`NR+_{>GZXyL1QzE-16W*WvEiwnd-9-@V)MCAgAKmT5YK_dD{eNo zXMv41{aInHe}(@v72lrNm6n=D(kotKZg-*&AFw)BdSF~Y`?SOWYc>>LZ%sTSI4A^WNYn6vHZgXugA+5NR@nl=Ui`a@XgX=<$83)u{V z**G+8X91*HgUOc(*1eG3U#q6wF3~`GA^UaAV;plKJB12*Vf(3tSpKAfN(7Q9V2huDhFpLVUOIW6J5I%|Hv^HhRC<1+;4{R9>_kaN*m5t9U;JWct?+ zORc`5U;zeP__nF2&ySa4>IbKy!45v)!nYG0S0NW}qf4!)Y5?Oc`k5Ta)rGe4`yo zg3M(WDIz|Ig>OwSc;Wk5ko%EEl6{DKe$-mn4Mdo_1$yB-xZ*#q_5thRAD?Beb^if| z=S6Qa65mi(@C{WLeDgL`<(nH3vz&xUwJ>gKt9o3AYw_Q7oS`!EtKfxk8$mgf`~?u+ z&`5F-VOk60RKLhDr3NpI+r%(5=17W0J}IG1W3`)S>^2lg%=~nz)H%t%;vW;-3q|O&VEpW(2Q^+t{2LjC?Z? z4_nBbA;D|nHgXC}2&VT3(E5u-j|`DwP28mCSQE$M&a`^?KTe1Lle?x^6ZeovC6~My z6tA?XvP{;Rcs=?nDb~bI^43~5k&xfVsJqi}}KBmIKc z#7#tVZJXKG0p)Z;<2owEnz$Q}+3f_*Zi}6@CVu1`(mrra+$3TzWfQu54wwHVI?Uf% z6F=)*i;izi+((G;VLCiV&3rQml!4Fq!3Lz`Dw2nQ~2B z3v8{4vjv|3=5r40;5Bj0*IW~4%zqNr3QJXU#XDe4+(dS)iL=}bfV;$rAG{`RVq0tC zjJpkZm)N)|*2J~c=9)OSJNEsS+?dKzXV zaN4Cm#hSPmb@g)89ZkUOabZhUcLc79ng__h~w**2J~qjx}+%+FL+;pODRB zonlSgM0c-=7oLtr0H?xDxh8JnI@iR{2UaU#QkmdxgS{sHdkoIxkia!@lM*jw6S}+u zm-{?)^qTnp*mQhr;!Z+@FaL>CT^kzt%;YdM8^rIgGk_-xJg1SY_lF6 z!0IPV+aAGd;x1H{{4St9=w=$cCT^lyE8EQY_rQElGfuT8?!{!jlUE5b4X5ci!E53s zre4`*mS+QLBO$8#FvXg<2a{P|53JAIEY;GscTHR)nk(Bh$0uI`(vNMH3emSF?!kP7 zFvDk{t;4Cb3|*hqBx&3tkidWCEx)ab|ZhSY794$Cb4*@T=&5`PRfuo`YQzSGlRI z`wlq$)x|Bvn)oN;L2Kfy)ateP3o%ZI4asX#t%;k=oNMCO1N#dW1?s)0Toc!#@{&2N ziN6fIpK06_YvLwSsx@&e-Hu*|zvYm1+*@7(FKLMF5(PDDdFn9ZAn)8X&TEO<>^Tj{vh z#CyTwa*GX5^$f5k{)yPon)t85;$1fzdrh3C)_6^v7qr4}W7cw^Z%sUSj&z~Ooix|@ zHiqca=?(r#72~)MMcdUjbayxOi%IiFRL}&=^ha=+RG!aO6(!?64KZo{$aP4J6k-@A zCM~3G7gMy!nEhO}9P`D80sbJ)P%CxX=}r;_F`ZugpH!*1k7sgA1}29F;!nW*nL)E^Q4sn zp__9ojC?l`@3)Y%;meBQIK|7; zuY>9j=B-U3R?u&OEEJKfchii*2JG)g z6>)Djrh$?o>yK%}87pL*n}K&yLgver0XsCP8UGu>_Yls|MdW3R7)if}9E`-X^e+MB z6^$n8PHeaJqm5*|=^@`uX_&0cU78NyIO< zXMLQOzX6)cp?cTVnIdcC00f(f8WE9wxNNtn-3O9cA8E-nwK)q#)|dgvb^C2ce)hAc=2+nK4c z+uJqUUSM9Nu}#G2fQTmBuLJ23ji}gK#-Am!s+mS`Zg#cRZd0=V4+#95h)`Bax)b^2 z<5?f3RgQzt*!el@B$0JeYPq^rfF#@T0Vn&bB5BDrM`SGFN46Z+>-DdQ`X7>WWYqzHszSZ;Lqc5I%KfRe3+_(61;%bj4fU| zI~v+}cN4u&OHq+^hut-De;Cf*1VWW+ci|s}$MnM5v{wpk3d66^nb@=$j#+8p+l%JT z_IN{6Q=$i3)Y8sW__jBmY}f>fLmFguS)&jaYZBHQYeN#!+{z%T)3Boq?}tJgAv0;i5i8l6FwKl$LId+Mm?P2idHdPhY8+7t~syO(&t6<7?4NAdCJFB(W7IM;0S^d!oVZKs4mL zN_lKb)zzP3Zy|h3p|%z(;|-XI>-J{yALJe}%!=#WqbJAKLdXFg>~_G3Os`3`8IX3X zg<{Bi^cFP~Mv>Ckw9!wq>*ZqwBusD22cSqhQYkUnPMm zlH^9^&joe*W=E}GaVa%h=fS!{3Q*ti9vT#_?8A3gn7-*|Ygznw zYVpinW(E$hvs;6w{&JS8H%W3!V7-r;?GHZ<*ssa_5}{&w*JTV zk5n}@{N@Fp-)P6-+5(*+ai3;OzQd}p0+uJq*QwYvYuB?&iP9;ENwe0;VqzK1V=Fs@ z#U<8v4`O(xH2N-f{#`3Vf7imLs0~{P4E@kJYad>l7%HWq{+<+)2K_w={}Slz>JbGe z8foF#IW!HF7M_zsBWdiF*wNdb=*AwR>h}V)hdTd}0U>(3lPj}-2-3rbK-J0f#@Akg z`&;3Uljp1Z8R#5NUNn||05a^SbYGKCFd1(Eo`+*;W1chA4!f@yYG>X5Hq_3#Zy0Jv z-QO8%N8R5WYNy?|4BA=u)aKScG3KXfn3l3XA1y^>?Y3=#2v)bFFgy=q@C7@{e#1~Z z&E9LMoo4Sd)K0Va8)~Q72MpS2)~_)C`vF_cF3>-LnB1KGG>8u?MBOxb6YDdK_1vQL zd|e{`0u{f4VA^b*`Tr0D@X)>?!DME~CuE|3VByI*OA(%tadNu;lXBAk+3;}EKEjNg zTZAf)N$Z4SrpMfmc1wE<-w)(5w^AeLx1MH4TiPlP2?vLR@Bz(%?+4<*d-A8|(6hO- zJ4t(;DmE`V*c`dcX2bUbv3UT%11MronOUr8&q{5xUpX}5`+-)0!{fmEFk#r|%lT9_hA3jO#iZ!0L+zcm= zMc?&h5^aMfcY)sLEb5d6%tB0{?M}j%9@7-gm%LcEpMcmei69x=p1%-b@^zF!-i1xi z_Xc;c?4f|163e3fiP8{uO;Tal41ZvTv}5RsXC{JK>*rzdDd%H9WT)4bxp}HhRGVv~ zm9#mxW3NyAT}3(b4A45%14Hlzuv>l%%2OI>X~W@osfePZM>~g_|1HDUnWb^@9?_y6 zkQ!G+uR>N$X&yf)f-#b^tGlzSVH52($D5L32Fv{ZQ*E0PeTO96^hpUiKPWW`8gSMr zTLwvxRCY_v^STp_`2UYJ(34Y= zInMz%f}c+&y2X^<#XkW#s}twgo8`&fER^4&4%49dD?U| zBeVK-TX2kKM1P<9qdqKx;0)b(8*+Y7&4~VN6{9yfd@Gjqa5B3552i7gW<-C^dIoUM z)%fmagnRIVYexEO?PjE(>B+Bx=r@V*J&;M#oz;vyKry-*;kDSoH6u6fU8d3Y22uPxmNQ-aID~$JCknUZkGKSELSZ#3b+*YOOi7Wg zP5kRtz+RwW(=(V8&Ag0DSNtiWvJ1bHO*Ay)j|u#n*TOsH^bWveMv}N*Dy>xfEuH|> z=JsNvEPPDncI_16v$CM@37Pd4phwYf7uph{@JVT$L*w;PTXoD+GN%DCkqefh6IJ-M z%-V{l+)-Ptzu^=x_?T>9;2x{7UUqwa1~mni(6 zijPqIW-QT?5J%*MeSpoTxYlM-__)md7M=?k7l@lWyZc4qvvS0UzTHUKuitAw6)_` z%7s6a`L`gZj$(Q_=0_@K74eKGTianryb2=J=scYY zbOwr)D)BC$Fagw%tmI-QWX(Yc`g8j^kKIXZm^vqm@;s+G(bP(t;C12eJV`ONSe2xl zRgVF?u!|SP0PRP%p{7rN; z^;-!sPAJGBXY_C_<)rDHU@r0lY?J#IKdZi^jbu_!B67&bwmat!|Xkfdm%@zCty2r5l5a0kD%7X2kICyuIL z6wPGA;He3DUo>k7xn3lP-;xkTvpF$0C*IQ5ut^ln;naLQwxYT#D(1%tKt-!Wq>JWq zOaah)TksO4C@SHI!kl=ry{o08p&eMtIi`!q$@MF0MN#S4mmu7USbuNtipS0Rr0CHJ zJ0T(pi6c$5FQVxCoMvI@=vO#;TqwhuHWgu-`7BAci^8HaGO~IuM`=yABQu&r(drDA zj3e6d7p|f;Dk7aA;P|l2S``zanD%D8!CJIV#bk3#Cy>^wh+K;3r~Ubg&QvjZ6tk6) zHmI0V2>D7X0UeQqs~mSY=k zibnQsBvWFZU{+5fi7>VR$XR|1JHGKpv zXYyY+Sn|<$!q_TZ%~OgnrDR4Z3l$D(s@Kzp(>g1iN)d&Vp3Wjlss)5lT=@9q>p+giHYMNx&)@rN!(TNs8h@zVn)Y++^dJ-ra z*DIhM77$l^>n?ilelDZhIBP{ zBS#8V`Uh4zsmkfyO@u#HrH{fp3o2(xG)~7*K@?3>$z@iuiB3i$^cz$!#b0MgWHc9LktR<8*qB!UlJH37~GxD4{XJj{~4GBl)Og zcgaX*4Sew=-^KMj^;Su9qOo_A z7+GcP28T08&dblrhQYHV?Fh0XpTRZLysDU2awwkuD4rcT1=mdTs$#x80zFv>RE2KT z^b$k<(Q~(O90;003T}1HiN#ax(@{5!3T7hC2|2 ziZTM2QDn`asEC=I2?T&ooEmx*-#NA%j@V*L8WpKTm}|@Aj4rVxQ?W{%s4br}I%Y|! zVwGs6wye(RGF##nE$}>tz*gk^G1_`@ic{h)aENQio@7f)kxJNw4q@%sMfuvIOjU_m z;}DfVRqSF*QktNL^_SUTW=t)Ej0@$G=dpz2()pf6h_qnX1;iPfr&6|s>3`XaQ6ZVL zM^je~r`CjiH?F$K)JYS&rAnsR7%}yX$uxSdp>bFV;I5D~iosh9Y64{Ds!4^2HKTY2 zWab$+- zfO_boHH(?+bb|TCp2cGQbedQLhMj;pGd10zggA5D8;T(h!s3oesF^S1(j-%6B=8VE{8$5XWStkZCd90Z^Zo=2?vYi1kiS5k1L)bfp8=J4qAz|yq94P3jB{q6 zC{H*GNtqD>j>H$E3x$`xwsv+mi#Y{Dsf3|~Bk3xchY@-oGAL3!e+2!+J?FyS&ZH<_ zpoVQZ-HCQld=fvTi--a(UYM~Rka_VojaoB;{`+pCF3zF`Rw&dZ`~XxFws>jALjbLz zTn~NDoH`++_0XzscQ^f1N)+E+^k)F6Nc?}ZTNK|@NJ7srhp+h5aZ{5h9xK^s&RBfo zG*OOR2g;d|bJP`_EQqZ@1juALdK)KFA3`T4I{I4iD+^IPO%c%XTdjoI3QZ?;ZNf$_ zkS!)h5Gx(MRmWG#QBL}uJ=mi=*@7P-z`Szo-&p`Ei5ju92YVlj;>9XW$6{ibqfhol zw>NC*1pIP;LMwi^Ac|M1guODi_}ifom2GAg(0g>FR4#uzR6?avjN)wmcBq1@R$+kx z@1*kqeqy|#y|L{AnrfI^K89pY$FO-DhGxZANgk%Y1Spw>Orw;}7E!!Uau@G+6wig4 z;#)=Weg*$8SA3f&zD{z#Y}5@Fd}9wr`c0cf@r`mgx%)CoqE}zkh5Md-p#)_2sR*v- zS|sj*6zOnNQG7@aC;z^P(#V(0)*Qnw*lN}gaU0Cy#^nH;ieo#@F-=iKMlDQ3pL762+q7tHxckvUlfV$Q@DTO5=#}(W!&Ypyru{6YX8|O$#pfJriRmI1g@!j1h<1?14logJYmNxu1 zM$A~DQd%4-@bxA!<2049!<~R;TFh9flD?pmB;BECQLD{!TYxzu#0BL!g5mt*!er`! z&qq7Nj18gT^!z4)u$OUx8rfpbO3gT3@>n8#vuOYZ!X!uwEmw&d=Y_b;%%x2H)CM{|rWX5F0Ea_v`lSo`3W;7_34_e7w$Vn&2gN_Q@C9Z(JWdYG0 z?D96-C7FQV&1ej91@{C{))p@|$s35ja&RQ3}ug&iJxQY1Jug9x=Z=f#w7z{#qz^2PLsRN1B!z ztr*>`ai)s-FaS+B&$uU)`=EyBT!*hGl6{=WBW5ws zm{9k<47-oGCMge+Rdj5qhOGOfM{FN9cv;%!rycqWkb^ z9IYaTqpHr1&^0qMVUge!+SR(0g%)c0G&>*KXHJ4<_iQ(KLf~)99T?%6phLkF=5*GEj#k(TDsnHGF@p?=olwv z^EK0q*@x832yNGq8KLb{Vy3sy=XGJ)>LD{iTStWH1NiI+#V&yj@x5N~?^UqJOS$@T zRosmknt_4wFBT2_C?;~`S+19VV|bf5_*;wm)>?dAhjp`Baj*^DHXPgb%i}|C*j6jP z1murD{&)vzWWU8sAMSbh>aR)aTWT?sr`IFmiEUk-9oR@CT2d>%(T=UT&K@)oyk#9g zB(DQII?2IPNd!{41XPxd^eB|tknQxTy;_T|74HGJV9=;doCjpaN_-izW6*imW98j- zz}va=5|7HMg;kiu@it(7Jb0GdESCRbmgF!vb{rVA&nODSdI&04_zWF8+T*9JSh-~J z3d~CMHpc7Y@w1~PtyDL~n;Vi1ed6a5B>=}H6<~;RodhgqQZVaaZES=mypMpv3Qtnd zJ0$d6B5pCUQD^WW51sray!B$uqu`gV@h%~w+>nP3PzqYsPMRFCV!Znveim%3x3@=s5AQEwH;2*mDG0cX9)|@#JkM0mk+j0(>e)2;cjYuK(*oK|K_9m6i|>F; zsdpw&Y~BkMn5x769kh4CTxv%{2O^^2x!k4HC4uff#Z$RG`Rg7GlBa2`wCY1?H_hw3WmglcqklR+*1o5Uk7}yIGeIU_>pf z9}!kFBqL*3pQ;v7@yKi{GA&j_r6aRxp=q!pDjb>3{IM1k5o2j51$|Uoq^rL|xnb@^ z;otN?*(*0K*JZEVv=dzR%1xVV+DpvYvkfn_fv7&vY2rg3+KyOu-$UqOn3V>;kQ&FI z2ONkL^SkgQDQ(1{54+I*9_Xoz&@;_tgq}q%BP7S0PV+hWC>dp^RYa%Ju2LU>aA@eA zLJX&}bt%f$^{6UaMOJ3|iLW4CoI$M7#0KsZuoOGW;7j`Dz}E-*#(c;_=OT6@(?1|4 z{+sw5h=@6_Uns;y4)~=O{1*_*CR)JmNA+q4K8_hj-*Ex8nC99zGdE2zaS&8m=KEo`H+XkB9;YOqXZIjmH@WO0XxltJy*lp z!go>r@>hfqUMZ0)rmaUiwgteUBra@p!VqT=0as5Z;M2$$z8?A(;PhdbH}cRC#7<Np0zWjvh!}h4Nt!G=qZZQQuVOg_pR9?0{yoV1`O@ zu}ZDOp^5B(4&AIAx({&rFw7fyXa`~^GJQDowB?XuA7VlWabad%Foc*%P*f8)&}Y(A zI-W#?K6ITZ550)kiHuLBBfC{YfUMQ^c%=lV1>5h!n(ZxSG5f}lSnEh z%_`tdMCij-@;<~)WJ07Q?X#kf_2!K{H2WK76+o_GHw}6#6V)_Cbq`u~bTebpY%o=? zE3;JcCW#Q9+_DX;t0J>Z=IiQU&e1~rz6p%ZVTx@ zw^ulDAF^cCqE=`g_HuS@20VuRNbHr@qa_GPYF_w06 z(T82ur{3$dg>RP>Wt3f^m|2{dF?MEIY!-U69?TVU4$r}e7sT{o*M(;wmK8UJ7h`E_ z7Jb-Gc)e2;?Sv*@?S$$PPB?$65Dz%m*-rSHW@p=3IU)U&S2s^CC%gp(?0sN`zaUMNAs{8d}>#`l&jy zuA@c)Qw5QJb|_y}5H*0st7s;Pb5(TOfrobx4Q%9r*%GYurk@weC5_S!+^Z8>FoA*v zz4Y@{3RN}O2xkjwgVm5)A19hO@=#psV$}xs1-kA7fU_!Tt1G2l*HtaNP;FKVR&7-M zCzSOcIr!&T{C}hQo7IDu_C-|L?;$oMzG=D>B{^J|P=egaEV1mmi-4;S+jZ*@JCSL_ zfu{Wq-J$h}32k&T!cWxjH~@Wa+rI!9edwN&Jai{wCo)MY8V9I?+mQ1JB113YVpTd0 zT?k_UUI9g8tZs(D-Yyzb5Id1Mk!JK8xe~;Lmg2%}=ebKifiv3*^&9MZUF@mwU4%q^ z)R{N(&}E37$V9=Rx@oQuUvj_|Sa3%W>nVIFSzk<>U=|KB=eKai-#BnDv2fGA<;Nvw z$DE!BRi))?64QP?9eM#cREP^JNJZUYSEA%nP&)@HcrFt4VJnzG>_jF?CftYyvj;Ju zi*d0yh?xWxL>Oc3KJiT?>cjSm?;>_0(*ofeWqSj@Y>~5hQTrVe`UW$Uhe8hvv6KMj zWaV?kU$YeJHdw_e&Y~rZv;(*A5C^3_ohsxoY`fx~U?oI-Xb$oaE#@%gT!R484v5U9 zYK=&*3JvE~q0oU<=jgf=RV*J%TZPOYPHRS7q2PU0PzV#n)yr{*C8saoK6F1WY^yzV zGYqIao}76N9$_?diHR)r8^q|tw$xjQoye46snxUu1FOkx^~bk6bWTA~IvHNXsFd z%wfVnEHo}+8j;b!R>%}PgpqR;az~_oWXxDFws|Cx$N~vO2w}KkY>4b!llD-j2yQAl zLmm9849prJg7`uD`jLyqE`U0@848Bw59PyJh=BB@>Ig4srQgV6=~X#zB%%yMktPL3 znXH*Cu^vrim8$h4iO(3eBhtx^`LK+Y8Uy&)VtLBQ;dr~NCjZ7IY}IjvP^I#h0U2b5Nu3Rn%&kA! zTKRW5Cz$2NnS&Lo>`a0Hl`w%-vM>h%ds&5tB&~L;aZowQJg0+`+s$_}QaQcAb}bX@ zq!7GUB`%~}rz0=2RA6@@Uu!azsFAXsOY35b31_CFw4_XQL{1qw0YWUbZKI65Y#!Ai zAV|Jn3q$8PS)S}9=QPeKB``rfldN-#rC8Rx5mn@=?nv$L%O@bis|<3j73vlXETE5~ zPa>Z_8Od{TvyyY&$_Mg{RVe>fEuxs5;dVvSuB*w?s!q^;y{6jA)IAck*7~JW9JTG$fPd;kRgljXFZE;UWgGOCJ7vzMC? z3Ad!GniHZ$MR!EXz?|gXWWlkE+NEr>o2IimY_)LM3fe2SxT96(USJj~P$!qcC&?p` ziR20G#keUOYt(phPlBuRGxi2~!c@K4(c>Fm^%~W!_d(GUx}NB(QCE4zic_JAI6b%xBzmu=e51 zQB|zAJL@k(y4VuR$|w9G)n-ndcUZM9d(TcuT?o|`xKwglhN?LT__K)NiUaiMc^55DW8mY9=Zb)#~dg6rG4|uKxGqLfbzDFUv4v;R-A@t7yz^+(`$@S=bIop66Gz7aM zLELDvRJBCCyD2>AN~FSPc`EU{3CW%Y6zb1TM`sTq-b~}GzI-6{oeFhdQO6$ZSq~UA z{3ZIv3=2HZUU)rb(_mhHXXpeo)I((*Jxkx1p&rWXXgy7#pLJJWKYRHfFTX{akQsXE zReRF)grbht6OsB^&wc7=$H0)I%5;JmuJ=42FMlsQ3bgBpxt{D5IvuSSL-eyZf4us5 z^J}(7G()dF%021FE1wtMYyUhC{YuZXUh&n@j@6G?HCS-2#oE{7h1Zz>TOVmlsPKR5 zBey;Nw?1;)gf&)rz(fTa46|J?7wNI`|L_04@0~B_wW`L4dP!m{_V~-hhatm(l9)t%* z&uSTTQbT53GhV7RXxm$Ff4uYk4@&>`$;TfKT2MWwx*`E;RdeIK=IVu|$K#=hmO=Cq ztTDJu3cV@y4JVv3XhHp)LGx;A1}z;iJUx8qz$I953-P=qLk15TQC3k_KB&H-X2GJ` z%%GY90|w2Zw==b~&CJr)b~f40=EACGS5yQ)XrH@wLt4tV5zgc=xm;G$gd1QneT^5> z@$`OK9UThOZ#*Q82i$NoEsJb&YfTLi_@QQ80d@JF4~MYW^GbM#QdZHvrrXu6UN8?2 zO1ETOiF_xGC2-Sx!pWmpPj42?;Bg%szSo!+un|I@^pC%(L-zsWQCc>_Z#QhNrjAJ} z0|uaobL;0J6+?%L+*Dm}xu$}VfRh+{q{@>o-sMn>mjW0Y{0z5&kYa!ctZyWQGT}yL zxQSuHPVj?_^h7cq%mM?2Fz@Q(R20K}T8wa0^$o|G z`0tb?I_Z(uz8j17LO=|a^~mC-x+I<5OZqx{tZ_P*403vwlskKT>g)-)Z=$F;xx(pl zD*|j$aZ$<3&K^shu1M%yQs*Q~u68=7I^Vb5+4odu#3rX#$vmg?CTGM9XWz%15v2V! zIP;4;JH1oATUQh(on&fWN!fO?*-6-7PaY;lp(G269^Qc0)llg?fn zi#mp+{uJ7Mo^ZOp>vSx+#uV1C|FaHwvguQ&=o6>!B&T>Icok01Bb|<)IQ=F$16rNp z6;8+ZLT%sHG3oSv!s*xQ90ty}i;D8ize~3NuOyNi@mOlGU^~$;dv0>}4lmeEMf560S$x^k3X(B zb*8Lk6UAN=TTsItOHOmTJm6G3=j^l6>A1q_a*NY-iqmJcGmJXLT&EBH+lo!9!(42O zQLFgZp~FntRyd`%I|se%l$2cMIH~?CoL;H)%#w9Zx0NN|cKTo9bbQx2u;`GU&SCF@ zo$OFj=Im!cs`Er=Z$d_1vc~C2KPEZ7=-*28Y5Z$t#?AbzWD3ddcZSoyO;%QBdTw%+ zQ<7>Zb9$|Ey1$F=?VzicoDYAxe^OKu(l|RhC!K>ob;?#a-Bvh76P?~moW0(4I-t{c zd_t-+zh>T54Ox`k&Trtd-RMnDanX@`v3HJl5Pc8*;DGRMcrQ9y5xPi^Mb2Im(b9w1 zfUhHcg$#C2?e06te!!|mjRupxh3hm(SMk}18b7aY}&d5(V**D7HL4EIu zHr}^nty8qt={3pe`?xb;qtmx!qtkt)(`}JczS`-Bc13UNP5)Lq<@lE}-L1oYC@uB3 zNzyc)2(lg}?EVj_*YbB)SXj99p7N;=S9aUs_60msBV3Yw*rl~ z-$rNu)tr4tZ_~bvmMLFRl%hH>@g}{1(Af!t?4Xjl(x{!Xd(Ed%J$hrP>c>#sf0I+X zI<&QRz@srMok|;Yd`Dk;mu$ zL-3*W@9=&mTiMNP<;hO$V#&zRc3X>fJEUZ>GX{k>PVAa`^I3fnRXWJFhA-*wNZKpa zsbr+naZ_kZE=RQ-w$eGm#^DZ*r?J+eR(tMrDoXz36!i@)(L2asHw-cC>h_)F9G>bl z)9Gj%U^j2aSXGjA_Sxj@cOSRCul+uOo$jeU;Aqz>3Y4Ll1xw>=PcZ8?g{jy z5>)+ajN&8gDE9THm(ZK`ecU;`qs(+naY7zAC*ERoZQ()2EfY^6uWg zdIQv>3-cKTC{)z}S=HUi@dWrkfzr=(o*pZl;+4)mi<}-MuQ)w7qU^@unrghwm!91- zPqt!94>8v@&r77o;t+m%B0arHz7j;wgX2@~=1Z!$WhR3gID?@N-z4za=oUCVgFb3Ya?hu6vOa=9<+5jIri>Xp7TGu# z=OB&E^g`>VM!fjAy5_7zYh8T{acgi2g*VkodKxbdZ&|dUHNgdza|~kEW?Z||@Yzxv zw>K^^-@<`Ebl;Vy25al*&dt!mFN>1I6Mj0!fjJ|{B|cQE08>=t^>9DUQ5 zbDCQXAJWxLcn_t&M2Jtj430NaEvF7~0%8r)W-a2Glk1 z=rKR93oBrndQDfi;*-L)34Ou3{}JUx`uN6XyyU5Ng8hCssCau4I)K)Yw|YFyV?L;D zJwO&*EtI*Z-B6NdyrhbHZ}2O_Ae-K5tw{G8Fu;4Jo3P(0ODvYNvP4>4h7I|ir`x}6 zLwnq+sms)yW$r_#den3MgqD>%N1zIj0rge$@NVJ)R}bCQ`$a76DyF^Ai1d;@bLKl2 zZ^~-b(ev#@wq8RkrYtZZO?B$P!#Tb^N2hV8hB9ZnMsZI)-aLnzH4oO~KYc42{S9wj zYvvv(^*L}L8rIxIsPzZ$cnZJ-4fAe;>>9<3Eao8$P>n&AKI>#3E=W&knL;m9ajU^I z9YW1-@4yA((aqJmxUs%gBaL+VL=#@V!y{J>a*a`kHXchEPCFwIA4~*EkEYXSGa4vI zggLzYJYBtLDZ8=&GYUG>khs9>tm&xQ{A?* z_KPlE(G%v$L~?0q=Z+=o>?N6lePp?$I=V}@i;BkX(P7pvKn7=5>H9BHerWwM`H$|> zYh`L&m#XpIJ9H@e!&w%bB9FHDx+wx?MZo;+w#jLNh$9P zTVCP$ADI{45+Be1V7~B9-Np4Me%j(Et!%oc1w?EeU{3%KoR-bL{5C7ZSQ*Jqt{&Y@`_VmY-w$`8A(jfV_ z7MQ=>A|d*73e=ZdL`1*3Kz+F-Mf5W{^!?*OZpktFp8eUKp8Z+A<3a3;KaB5=?TE>OR%{jaU{-`3-U3Sa##D6sr(jbCz0rPP1X ziR?gB{FHcO-A+u(_TL^KnEmm&ygQDvz)S0y0d{;cLfj~nG`23$Cj;J4b*I`+zQ0H zcLK5Qy+Ew{1Q2UH1H}3M252{|#fjIkZ82891Zp&Bf6Rrn8gw|&B7=?rqI2Qm#PL9^ zd#cLjt85Vv+q(?tC8Mz#=mKM9lgc&&U1(%404+DD2iSWV4Q!AT9xOFmMl|cR-N=a7 z6D!I2kp$)uBV`^@c+H^B*fzj&DnX-+5kTTatgOL^^xiNs(qI|A)PND?#;MfdSw?Na zs8myF1hTBZBFdL_%T+d15%ma8r97z56enDt@iRfAhCO9Op1xybq%i<%aiRj-GJ~jJ zQQm$l#APdt$jYCMY;SByzc_KYB057HYGe~t)&fL(Hm-5%@obL~+53x;VUwUe5T`Pt z)Q^pfavz12eWpEKae{oN)$jBEkg*j;WaSehqnen2m3=8SGQy0A_nDDVZpUL~9>qhp z$B1~;<5P)au$_z*JsaD826%95$S$qWZ0OR<5a3c?tew-(<$T8NszGz)EAh? zh^%xlJb=U?O=U!>yO~tVliTP!KvS_6CuS?U5{Uc3T|g&eElzB~_IC#T8rzu$eTXeZ zmf}PTR$1dPpfio^D3whCVk>8;>>MEOVfO)XUA+&q7-OqA@u~85!*AyG1!CTzKuZj- z4BMp!9gQu=h|b8}9hY?O!!^W+>Yxj(rxHVe*k_8EoQGGJ;yddyBHivrm-%OJ5_m%h&RUYXbi40JnET@ z$iGXB44cI1SUC?yq)U6sl!@V&;TPwTRvshbO*A}ett*u`M|q5hccS4@-CwP|jPe)} zZ>r{dt@7%W$B1|{3=bf2mZmbI)LAC=FrXW-viA+jV??|&)ymnL%7{|us4q9+7h9pW zlkd?$=cxy4@r&z}5$Uc~4{p;`MwI$PlR5zCL9Fb-dgU=9-kpZ$E$@$% z$B20M7#?~05Y}R|7k=0vY!dfiW&aqF#sfx!TI*4)?7{uYV??}%3=bf&K~ot~>LZ%^ z6HR4AsT)ly_0vsQi_QLy(J1_W(#Wt$Jc5<|V??@78r?mCp2k{i&Mtm#5H^X&u(Adt z(s;&b900_1Fi;V-7Rycm`XyE_@8dvhg%Mf#g|PyVcuG?lQR?%W`i!PBqSO~nDz)nK zSUHbpmB)y9FB#tPK<8^8+NwN8#M`d9y@+2)b9VLyWV6(L;*<1jm?nh$E;`(Ibk!Ry3u9@HW9M)*abN&~u6=>?SgLlLPZkRdk)AI~Dyz z(U8uf(V%Ez7m;0|=mkY@DC*Nycv}@Ex{2&tiuUO)vRR70ujpPyA1JzRFVUz$808Wz zQ1pPJpDFsgqJJqmwzue>plJKPA}ild5FNm99-S0@s_5T}CgW6sc}Jx>(UZ*hz8fbVXMydRx)KM+k3`qLqpsSMiEOr_wTfm8lGIv7YZcw6=)V-*RxTQ^Df+TPWXB8^ zv`o>D6&)}{QopBY_n{)YP|>@Jw%}BZOSIQ;L1!wuTT$szk~&Y(eTw>ykksoHy{BjZ zc2bd}faihif)ZAAmVEgIieG*QvbitbkQg`#7R72Vqu zJ)mflqCUq7Z;+yqiY6$Uq39+>|D|ZiD6w*xq8AmtrszXOBSwqHMT%}v^roV{#|Uq_ zqN^0Wtf+Kj>t|_bcLd46%C#$ytRrBoF=ks6zx>>%5+IR z>|{aBik?t3bcUp!t7x;LVW&vyJ&L|iblglyoucR=MF*ZLsTV2wOwm!ZBz1QJtb&6b(94c;_p6L6MV|)Uk@rQ}nf>*JlfFziL6(%n|gIqK_1v zRwJnwD|%1S!5K*%sOU;XMRO(fM~XHmnmbQY8x`$aC$b%izEE^hy`&b+7qq*g9*Q1U z^sJ)ZXNksYMSoLt;{r)tuV{m!#}#c=booNjxKYu1MH>`7uIO)y{;jA}gIL*HQC~%; zDVnFKMbU+dE>rZpqV0;_QS`B*FBKixC?1SZG)_^KqSF;!qv%#e_bU3CqAiNPQnXu> zA^O{!2u5hNAh39#OPK(Kbc(V@5SHN#}$=^ygdv}EFIMJL@ZvbjK86LfBW5fC5$U9ad)MK1t7Yk2Rf>}y3` z*Ng6fiY5R(V>D)~Y$ecBMs}0R?ge_>$evNz8;U+w^p&E$?%?^CWa0=Q_IU!(BgRUz z%2p^^qv%IKKQX)~RrX6ozgP5yqW$g^jpKnf7~L~~IN$St?l-b)RCcqXI~4s?(H2Fo z0NrDBcdD$@kHqrfipBup4{da+%DxMP3W4lKmEET39z~BS+N$VPMV~1ec2^>Co3WPx zT5HgGKwQf8KtC|DO)C4jqW@I%8PJV}x5wS0+YjhEBRg7UXDPZ3XpKpI7U(L2Uf0ww zfi5?)DpVBva;l=MfG#zuKLNVPpyxI9w~F3V^bbYOy<)E)&`P5_MrE^smK)j4K<69u zCJ+WVYWy?heXXeEKCySWqA@@SJJfC}n-7Gr2-)>O2)#h}YwE9nup@%3FFF;M_XtI^ zfzC3iSE}rOpgJS_4N%6Q_cirziV_cqyB@oxu z44^4Swoqk@6|GWq3(!Qv`>D$Qs_1h?`}`Omp5r`#IFD68`^}pAlA^a2 zB_HBzn#n{jAht3@(MUxNK;JUx4s^KT{Z?fkE83~(@P~1w)$mRM;yf+| zI>^X2s%(p*6oPoENv!~4jbjvLfc7`3R{-s6(0WaM4rm`EdrM{AeIp_Qf2!+#`EtyXa0JU=Eu8%!Z)Mwrx6Anu9fK*t){D4@{>RRQq`m<`0^qX~#d)N&vmgR6n6jK(^k zX$EZonqkmpAdUyyfH=Oq1;jCD2M|XodIuE8wQfKh>q>z*5|#rs7<;3D&NiqDsMVm^ zKuZj20^;bs9EcU)g3De9%DR8fCLqZEx-M6JwL zW-4j|;@-Yg(Q+U-0iQ2Xv>J%Kz>$oibwE58?ozY?h)2bviZ%oB_}Hpw8xW6_R~5Yl z#AD`tMLU2>u_hCrE5Z*uj!G1D1L6_YOHnBhkFEZS%7J*4jZicSh{xM_MO8qyt`yA% z8fJW{Q`7`B!pN2?S`NhH@)AX>fp~=8sAwI~Xrp_Vq76XfjOF_2&hY47DMrhIIBr~`Xf+T=kQ)`P1L9b6m!b_o9914wv>Axw%T`6( zfH=~;s^~2sjydlu+5xnj>rYVvqjsf{l_=^4#1W~NqEaA^P5l*>196lZp=cBk$E)#* zs({v*JZ37I4RoE6)hTKMy3xp%Dq0T2aqSXCtARMe-Kc0C&}~NdE=3!F)*IQQiZ%mr z{M)K%8xTjrR~5Yl#4+)GMLU2fCSd$3qTs@DvP2O@J&u^Y6qN#T?Ch_o9EhXn2t}iS zIG&DIR0Z^m$#l8HsQB+DMmMZGuNc`&$RAN#`0&$#t1&E{GKY%#a?bAUb z+;@ODt}O!MXm$fosj;#F=pch$1Ul59&ww~e_2?+EX$TNUq*H)64o!h09DObT;+S&- z5J#G)fH=PV5oolr{4bz!2KDJA5#%T!jvHqHakMxeh-1WBAdU=A0C7C%y_-aVQ-FBv zF9qTee+|$algDE~8H0WgRARCWMLN5j4ad{6AkH+5s zEjRXd0If8rYiAj6gMcnIvWY-Ew&nxzh*|~2<7gcakDjN2c+9*B#3LoShl~$=JjITR z2|(+Od?jUqySz%Bgpua${yXjNtv`8h{M=C?JTiM4dd(p_IW6QFcKrFjl zWvf;8QqlaW) zs;m^hxV-;T8ILI9eWfxUTO>=M*4WB zJ4iK`SPB5 zIWi0F_P8MoC<>~Pt_Eyen+vWOg)@zB^5@i7F*%E=v?JUUhA!d8ZxTAUR920b)X$S z7D`AZ!)yLX<%rf~D>=q!h1dKl<%rg!R`PA56<+giDo3;uM}v-K6xLMoIBbLMHB>pG zHOETE8m;i&yGS{rwZck{H(K-~nAgvgBU*p9k_krZuu!dHswylKw3Yi<$z(`VNjlyO zw(?lzNM5y8a+1+H0^6X6KU9ury=Em-jn*UBcEZYws2ec&}i{lm|yFl zQ7pMoJ*=~m6-Y=WX}1)t!^e~(c@>Wa5z8v9sbqNHC{vDTO|_Csj8=HxxJ)^s^`wU`B=r7FmXx*9SB-dq5apuJy!Evb{#RC8 z-CAuWls7%&?qAC0w9wAQER=I986=f8yN0NhQb{_(2`=~Aa&Cv7?1W9(dLIpj%HJ+HT%y_FO6=Q+#S$8bup zbr&hu2bR+dNm1qMG@11%R!5cVaLb`1pC~&MEN6e^uwB}UKNnce0m=!M>nD~|svH2j zh@ICgr!VAD{v>H?6w5(aqsrCaat=0}&a}nKi{y2Zm6x0;r<+DIRj(toMt(L42MoBgX7|I%PEhs^MvKlQC3tv z|F`7~iLtZ)Nl3&(u{vs8OtqZh$_dub#g;=Qit^_H%b~r0RR4L|a=v9a;q~0L3W-=K z@oCAay`2XJh5Eo1bPQ{>-tQX5|F^xxsQ;4JX{6mn>&djGaBG zvtwC;HOimSma|kjL4Oum&N+q??#~*_IXA}6gO+o?ascci_46moxd8I0{?mIVD=k+J z|E8_j$ym;Jl@l!2k1c1Va>xQNVkbqx0Ly=1jq>MY%elyK!s}oUmMuHR^cmWXrk2aKewrF0-7gV(dI(IjdvrylpvalmlQFDOa!4 zSa1#gMV0F$%el^Q!s~g3q<**KI#m--6v+QU1 z7iDK`HFF*_oNoNXZpF@G%h_l+;q`O3W7}i+oc}bO`y6j7|GL+5UNoHJ!YGMHEax|dGYVU`=z@M@IWNUX3-#FIb~|KG||UG@S7Ey3BGuim|iBa{fEUPLFydV)+p-W9soI1;)`y8V=Oje1`F?Pn5g9KzBqhI6##>>0zk*>bkQ7MJ<~EBUobp0bieq7)qZ)FeJCYZsExLhn}LMI>El zYRW7k=^c<99FPnNNM;2js{)c60+Krdl7~H#^sL$iRg3)|{?^B7Sh7qgrtAwd3+Ypx zRwm{8$fHGx#rDXYYYZO%UW%{iW@)8oO=}%epjHpXFLU+!;Pk8$hnWwf zj;*L%oZu_AexbQU>lf0sZ&x-hOq+#1Z5E35wASJLW#tLA)2b)bR#y7lh)7qP5$TcU zeSQYieJ)3&N17kbU!bjAmQ|Ah8(F02a%7PrbE{t(pAn}==fUYg^UKf_%PK1)>&lZJ zV&0SPny(lvUzw&)2TOyyQu=y#AWt_rmr|A^`77n}ZtP&ssF>CoZklO1Jz!d{Jjdmi zC)0A~$+TQ~RveA*3j4pjombH#HFJ6vscD^^);c0RF4NN5+_-E)Rc&qM;_2yW73rzy zoYTwGmF@`3#S=$z@uZF>1xD;p`be{AD&UlM-n_c5UqfBWI}dH&Aw&J`OXp$f`nl~>1OjE0A=4s_=K1D%0 zqrHcurwvX|onDc4s}JX0Z8asuXa`eT>2xq33^yW^98WX{{dw+d{DEUxY@5k`CQQrC z-XCt_w6yKAju2({lHDGm$&#ff+_>6V^;TQyKmMnX>_6CdWukg?Iz6vpQMzX7(uyGs znI+P-8=HfHKQ~p}Jux>`^2Zn$ZiiE2bGo&;y1un#0(ahu^4g4!w5jORfn7ymn(AG_ zd1g5~SdR14)r*!+m^`PVvJ!=@)norkbL222YpC&#*Pb2Z)XH`;|GcssjH(lNhcR^$ z>eB6cf$nFm$!kLvZ9R}Aig z{D%*rT|ZJ&y(>7+EN64<7LYkjKNYwO%F@bqGXK29!RRKE!;w5%Q>f}nZmap^?`cl& z(L`JZLAAX63aW{Zlj3r7chuPzIr3Lg-||-xzv55fD)?}xVuXY!_vF&-4QY2cB#m(7 z?uroS<4y_-u&AYKH;Yo}*tXDp5zaodo1+jVb-fTJ@h&v(V`e9C2p8Pz2}|>jwPiB| zXGCxZ6uJA!-ut-C-X6VYLY9p6JFEp3FMy#@o_993b+4^K}U<{R?u zZ(RyV0j2$|YfIqtB#p_lOmo^ytK!fR1@z9FL{h{>)K`=hHy@ON8%n0-vinX&I-O~# zp0j`^b|%bhX@*6J>RZw+HPs8Mn2bahQlrllnUoto%w!$9*9K?r zRgBdZA_FguAVceIfKq;f1yg|Wm@E?_t%2@ zhK!`(Zi58BYUAK@&N)Y5S#xG?Q)_dX-dbfT+47+^nP%v6esi0v7iQeMqxhm>XcFJ> zl9d!N5xBx0YAwJD7$$cDtgPFNvU~`o^4&s_EIVBvku3(wi8AWHtVP$}y}BOv-OJ)$Qb-r^ z%vyNa@n`Ijm!-W%Lb61~1+NeLv?8n5e^J(}*ACY-y#}){S^87_jV1lf-&l0c=+*T! zmU~&yOQNi0KFyaBeVQwGefShmouLz+*h72HZ}n}R8FIPBOQ8@DSumY{q8bfp|F&Ox@H&H%;uteH0aW-E2(R7j(_7zl zW|`#oDMZyuIFkEbQUT=-1Uea`G8WFb@LBqm_lb+LxIr)mQlH>k9IWLbmD~mB4 zdDd)e)^k)HJYA+?lXbIRkf0^UVW;nrF*%WjchQNeA5afJy*5SlWfabgu^e^=9%?v@ zm}S@3Bjj90&vEq}J*`gLu%mWOOV@Gl>pf}}E5sy8cB{(18>rFv|*ePVD zAgpd>ym(r|7dv%Afeh%6+#dMPR57g(=Rycw^6=D_PCxi6N#&vyGML;`!o}oEaI|F; z#7_JHb<|7+c^7w=LzJH68sZ#AQDAB#v=m`PwQCMo!sar4lOJ(y<)e!2woi~ytqs9p zoA+EZaAzM?9!`Dvj$po`mvuY4j%U4boXVm<#M|K5k-_Wlia0$8tBn}CorAas}a|qcA5b*Ed;N;0nS{~EckX_X^rTSZfDWZ201xWQi_V9 zqbF*LEvA8^RI>BR5e?kwIL;?;y5xq0crlj`c#@I=z&Fu}v)%e+OZI!J^lq|jp^s^1 zY5Ds??yXoXRAyi{kSA}{d_;P*zAw{&ey;qp=D?$!$Rb61!V}`rMmRl0-=3F8mc)~u zrH=p3H9PSX)a$4h=@|@O~meX3~^mxt;A~hvX&m2j} z#JS{%NnV~>a%bknXhgDThm2r%Dh}6=#Y`@q*o!~mjhu;> zY`&qoDunhz8H;27VWH=|13XfEc^EQ(dYAWlcwYtGgTl|H}{CS zzsNf|H52r~&{@Ms&FnmLOzOE;1hVRc+9ux%1KD{+dFciid$(vlMGGitPKD3*Ykq~R zO0Ec0c~AaJc7^D;`2?>RXwzVP2QM6mCPkje7VuvS5ElzllAPcM%_p?w3PN^~+HA}9 ztDUYSWO>(K7RASykRkWwYTHByBB83)sJ4&1OrV(*teKr>jyU07VbB`o{bOu&$(UE*q#5?PgJZjH^KZwFPyf z5GBnCy*oIwhj|?HHU~8w%Mx24ed8+=+Wp&PL_CR&A>Iz?Ip~V6!LSPzk{iyvqpwtC z6)cV=wlMnJ|B8kBuxqS~?`XQHs}s_ZVklWwcKx-5EPr-=W^Ty}xisOrScsOJ7qx|V zF8&){(a_$*jn_Ulv;55WYK2=N75S=2E_4 z^VE<$=xCz7uTi+wwJVJC0|>j|X>{L{4cXT|LX&t3KP$=qtRw2yH|5ILKeALpp9K#X z4rOIsrpRTGFGfVNWSY}_WhB5toXGPULY}HTS&%20r)cveN6zMZ^*z%ZA#?g(cE}8w z&c^$gf%cA=lh3IZI&mJ*^0kai8)Z)Tp#4w<_4vMC&?|Nr-J zdGI-@3xJZBMdbF%MYc<$}7r}A0Ti}~jrnECUm7CwpRHBiX3oL@6! z{>@9FN{Ome_tf_P9xk_U9gm!!3f5}=b4@m(301J>CER{^9bl=em8bAH(M*mM%>WJ7SUiaYWeara%Odf|i`yaEyL7^UyO(0zdQ%`KHv`8h2EYZK{{ z87(C0sUBm)&kx70N*Nh>W)cSmM(?a>lG z_F1#EIz1;duf8E&Q{7rqXC=*<*1G1#CH7YaF4$BQkH)e|rLWh_YpqM;rE87NTnLmA uFYx5lIn}lN)eZBYB96N18(Yk)$A(V89f{`j)!hB)m79}aszrX8+y4OQkI^Ln literal 0 HcmV?d00001 diff --git a/laba1/obj/Debug/text.o b/laba1/obj/Debug/text.o new file mode 100644 index 0000000000000000000000000000000000000000..57c4d7062fc5bf5641e313a9d50cfd9d2999cc0d GIT binary patch literal 49422 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 #include - +#include "histogram.h" +#include "text.h" +#include "svg.h" using namespace std; -const size_t SCREEN_WIDTH = 80; -const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1; + struct Input { - vector numbers; - size_t bin_count{}; + std::vector numbers; + size_t bin_count; }; // Ввод данных Input input_data() { + Input in; size_t number_count; cerr << "Enter number count: "; cin >> number_count; - Input in; in.numbers.resize(number_count); cerr << "Enter numbers: "; @@ -32,83 +33,18 @@ Input input_data() { } // Поиск минимума и максимума -void find_minmax(const vector& numbers, double& min, double& max) { - min = numbers[0]; - max = numbers[0]; - for (double number : numbers) { - if (number < min) { - min = number; - } - if (number > max) { - max = number; - } - } -} // Расчёт гистограммы -vector make_histogram(const vector& numbers, size_t bin_count) { - vector bins(bin_count, 0); - - double min, max; - find_minmax(numbers, min, max); - double bin_size = (max - min) / bin_count; - - for (double number : numbers) { - bool found = false; - for (size_t j = 0; (j < bin_count - 1) && !found; j++) { - double lo = min + j * bin_size; - double hi = min + (j + 1) * bin_size; - if ((lo <= number) && (number < hi)) { - bins[j]++; - found = true; - } - } - if (!found) { - bins[bin_count - 1]++; - } - } - - return bins; -} // Вывод гистограммы -void show_histogram_text(const vector& bins) { - size_t max_bin_count = 0; - for (size_t bin : bins) { - if (bin > max_bin_count) { - max_bin_count = bin; - } - } - if (max_bin_count <= MAX_ASTERISK) { - for (size_t bin : bins) { - if (bin < 10) cout << " "; - cout << " " << bin << "|"; - for (size_t j = 0; j < bin; j++) { - cout << "*"; - } - cout << endl; - } - } else { - for (size_t bin : bins) { - size_t height = static_cast(MAX_ASTERISK * (static_cast(bin) / max_bin_count)); - if (bin < 100) cout << " "; - if (bin < 10) cout << " "; - cout << bin << "|"; - for (size_t j = 0; j < height; j++) { - cout << "*"; - } - cout << endl; - } - } -} // Основная функция int main() { - Input in = input_data(); - vector bins = make_histogram(in.numbers, in.bin_count); - show_histogram_text(bins); + auto in = input_data(); + auto bins = make_histogram(in.numbers, in.bin_count); + show_histogram_svg(bins); return 0; } diff --git a/main.o b/main.o new file mode 100644 index 0000000000000000000000000000000000000000..650e38a83deeee0158ce1439158837238917ec15 GIT binary patch literal 49266 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 z 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 J2W{;4{{x)Q%4+}s literal 0 HcmV?d00001 diff --git a/svg.cpp b/svg.cpp new file mode 100644 index 0000000..a3c3f71 --- /dev/null +++ b/svg.cpp @@ -0,0 +1,68 @@ +#include "svg.h" +#include +using namespace std; +void +svg_begin(double width, double height) { + cout << "\n"; + cout << "\n"; +} + +void +svg_end() { + cout << "\n"; +} +void +svg_text(double left, double baseline, string text) +{ + cout << "" << text << ""; +} + +void +svg_rect(double x, double y, double width, double height, string stroke = "black", string fill = "black") +{ + cout << ""; + +} + + + +void +show_histogram_svg(const vector& bins) +{ + const auto IMAGE_WIDTH = 400; + const auto IMAGE_HEIGHT = 300; + const auto TEXT_LEFT = 20; + const auto TEXT_BASELINE = 20; + const auto TEXT_WIDTH = 50; + const auto BIN_HEIGHT = 30; + const auto YELLOW = "yellow"; + const auto PURPLE = "purple"; + const auto MAX_WIDTH = IMAGE_WIDTH-TEXT_WIDTH; + + + svg_begin(IMAGE_WIDTH,IMAGE_HEIGHT); + + double top = 0; + double max_count = bins[0]; + for (size_t i = 0; i < bins.size(); i++) + { + if (max_count +#include + +void show_histogram_svg(const std::vector& bins); + +#endif diff --git a/text.cpp b/text.cpp new file mode 100644 index 0000000..9965a5a --- /dev/null +++ b/text.cpp @@ -0,0 +1,37 @@ +#include "text.h" +#include +#include +using std::vector; +const size_t SCREEN_WIDTH = 80; +const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1; +// Âûâîä ãèñòîãðàììû +void show_histogram_text(const std::vector& bins) { + size_t max_bin_count = 0; + for (size_t bin : bins) { + if (bin > max_bin_count) { + max_bin_count = bin; + } + } + + if (max_bin_count <= MAX_ASTERISK) { + for (size_t bin : bins) { + if (bin < 10) std::cout << " "; + std::cout << " " << bin << "|"; + for (size_t j = 0; j < bin; j++) { + std::cout << "*"; + } + std::cout << std::endl; + } + } else { + for (size_t bin : bins) { + size_t height = static_cast(MAX_ASTERISK * (static_cast(bin) / max_bin_count)); + if (bin < 100) std::cout << " "; + if (bin < 10) std::cout << " "; + std::cout << bin << "|"; + for (size_t j = 0; j < height; j++) { + std::cout << "*"; + } + std::cout << std::endl; + } + } +} diff --git a/text.h b/text.h new file mode 100644 index 0000000..7256762 --- /dev/null +++ b/text.h @@ -0,0 +1,9 @@ +#ifndef TEXT_H_INCLUDED +#define TEXT_H_INCLUDED +#include +using std::vector; + +void show_histogram_text(const std::vector& bins); + + +#endif // TEXT_H_INCLUDED diff --git a/unittest.cbp b/unittest.cbp new file mode 100644 index 0000000..7f9621b --- /dev/null +++ b/unittest.cbp @@ -0,0 +1,38 @@ + + + + + + diff --git a/unittest.cpp b/unittest.cpp new file mode 100644 index 0000000..37e5da4 --- /dev/null +++ b/unittest.cpp @@ -0,0 +1,56 @@ +#define DOCTEST_CONFIG_NO_MULTITHREADING +#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN +#include "doctest.h" +#include "histogram_internal.h" + +TEST_CASE("distinct positive numbers") { + double min = 0; + double max = 0; + find_minmax({1, 2}, min, max); + CHECK(min == 1); + CHECK(max == 2); +} +TEST_CASE("distinct negative numbers"){ + double min = 0; + double max = 0; + find_minmax({-1, -2}, min, max); + CHECK(min == -2); + CHECK(max == -1); +} +TEST_CASE("vector of the same elements"){ + double min = 0; + double max = 0; + find_minmax({3,3,3}, min, max); + CHECK(min == 3); + CHECK(max == 3); +} +TEST_CASE("vector of one elements"){ + double min = 0; + double max = 0; + find_minmax({3}, min, max); + CHECK(min == max); +} +TEST_CASE("mixed positive and negative numbers") { + double min = 0; + double max = 0; + find_minmax({-1, 2, 0, -3, 5}, min, max); + CHECK(min == -3); + CHECK(max == 5); +} + +TEST_CASE("vector with all negative numbers") { + double min = 0; + double max = 0; + find_minmax({-5, -10, -2}, min, max); + CHECK(min == -10); + CHECK(max == -2); +} + +TEST_CASE("vector with zero") { + double min = 0; + double max = 0; + find_minmax({0, -1, 1}, min, max); + CHECK(min == -1); + CHECK(max == 1); +} + diff --git a/unittest.depend b/unittest.depend new file mode 100644 index 0000000..f345164 --- /dev/null +++ b/unittest.depend @@ -0,0 +1,68 @@ +# depslib dependency file v1.0 +1748392121 source:c:\users\aleks\onedrive\Рабочий стол\laba1\histogram.cpp + "histogram.h" + + +1748386910 c:\users\aleks\onedrive\Рабочий стол\laba1\histogram.h + + +1748729850 source:c:\users\aleks\onedrive\Рабочий стол\laba1\unittest.cpp + "doctest.h" + "histogram_internal.h" + +1748392747 c:\users\aleks\onedrive\Рабочий стол\laba1\doctest.h + + + + + + + "doctest_fwd.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1748392232 c:\users\aleks\onedrive\Рабочий стол\laba1\histogram_internal.h + + +1748802937 source:c:\users\aleks\onedrive\Рабочий стол\laba1\svg.cpp + "svg.h" + + +1748730522 c:\users\aleks\onedrive\Рабочий стол\laba1\svg.h + + + diff --git a/unittest.layout b/unittest.layout new file mode 100644 index 0000000..593c06e --- /dev/null +++ b/unittest.layout @@ -0,0 +1,5 @@ + + + + +