From 8941637520801ce62457141716d623f62def8fb7 Mon Sep 17 00:00:00 2001 From: tfpf <19171016+tfpf@users.noreply.github.com> Date: Mon, 29 Aug 2022 23:41:16 +0530 Subject: [PATCH 1/2] Provided `adjustable='box'` option to set 3D aspect ratio. --- lib/mpl_toolkits/mplot3d/axes3d.py | 71 ++++++++++++------ .../test_mplot3d/aspects_adjust_box.png | Bin 0 -> 78713 bytes lib/mpl_toolkits/tests/test_mplot3d.py | 20 ++++- 3 files changed, 69 insertions(+), 22 deletions(-) create mode 100644 lib/mpl_toolkits/tests/baseline_images/test_mplot3d/aspects_adjust_box.png diff --git a/lib/mpl_toolkits/mplot3d/axes3d.py b/lib/mpl_toolkits/mplot3d/axes3d.py index 05df0c16f220..6912262ab681 100644 --- a/lib/mpl_toolkits/mplot3d/axes3d.py +++ b/lib/mpl_toolkits/mplot3d/axes3d.py @@ -286,9 +286,7 @@ def set_aspect(self, aspect, adjustable=None, anchor=None, share=False): 'equalyz' adapt the y and z axes to have equal aspect ratios. ========= ================================================== - adjustable : None - Currently ignored by Axes3D - + adjustable : None or {'box', 'datalim'}, optional If not *None*, this defines which parameter will be adjusted to meet the required aspect. See `.set_adjustable` for further details. @@ -319,34 +317,65 @@ def set_aspect(self, aspect, adjustable=None, anchor=None, share=False): """ _api.check_in_list(('auto', 'equal', 'equalxy', 'equalyz', 'equalxz'), aspect=aspect) + if adjustable is None: + adjustable = self._adjustable + _api.check_in_list(('box', 'datalim'), adjustable=adjustable) super().set_aspect( aspect='auto', adjustable=adjustable, anchor=anchor, share=share) self._aspect = aspect if aspect in ('equal', 'equalxy', 'equalxz', 'equalyz'): - if aspect == 'equal': - ax_indices = [0, 1, 2] - elif aspect == 'equalxy': - ax_indices = [0, 1] - elif aspect == 'equalxz': - ax_indices = [0, 2] - elif aspect == 'equalyz': - ax_indices = [1, 2] + ax_idx = self._equal_aspect_axis_indices(aspect) view_intervals = np.array([self.xaxis.get_view_interval(), self.yaxis.get_view_interval(), self.zaxis.get_view_interval()]) - mean = np.mean(view_intervals, axis=1) ptp = np.ptp(view_intervals, axis=1) - delta = max(ptp[ax_indices]) - scale = self._box_aspect[ptp == delta][0] - deltas = delta * self._box_aspect / scale - - for i, set_lim in enumerate((self.set_xlim3d, - self.set_ylim3d, - self.set_zlim3d)): - if i in ax_indices: - set_lim(mean[i] - deltas[i]/2., mean[i] + deltas[i]/2.) + if adjustable == 'datalim': + mean = np.mean(view_intervals, axis=1) + delta = max(ptp[ax_idx]) + scale = self._box_aspect[ptp == delta][0] + deltas = delta * self._box_aspect / scale + + for i, set_lim in enumerate((self.set_xlim3d, + self.set_ylim3d, + self.set_zlim3d)): + if i in ax_idx: + set_lim(mean[i] - deltas[i]/2., mean[i] + deltas[i]/2.) + else: # 'box' + # Change the box aspect such that the ratio of the length of + # the unmodified axis to the length of the diagonal + # perpendicular to it remains unchanged. + box_aspect = np.array(self._box_aspect) + box_aspect[ax_idx] = ptp[ax_idx] + remaining_ax_idx = {0, 1, 2}.difference(ax_idx) + if remaining_ax_idx: + remaining = remaining_ax_idx.pop() + old_diag = np.linalg.norm(self._box_aspect[ax_idx]) + new_diag = np.linalg.norm(box_aspect[ax_idx]) + box_aspect[remaining] *= new_diag / old_diag + self.set_box_aspect(box_aspect) + + def _equal_aspect_axis_indices(self, aspect): + """ + Get the indices for which of the x, y, z axes are constrained to have + equal aspect ratios. + + Parameters + ---------- + aspect : {'auto', 'equal', 'equalxy', 'equalxz', 'equalyz'} + See descriptions in docstring for `.set_aspect()`. + """ + ax_indices = [] # aspect == 'auto' + if aspect == 'equal': + ax_indices = [0, 1, 2] + elif aspect == 'equalxy': + ax_indices = [0, 1] + elif aspect == 'equalxz': + ax_indices = [0, 2] + elif aspect == 'equalyz': + ax_indices = [1, 2] + return ax_indices def set_box_aspect(self, aspect, *, zoom=1): """ diff --git a/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/aspects_adjust_box.png b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/aspects_adjust_box.png new file mode 100644 index 0000000000000000000000000000000000000000..7fb448f2c51d6da5824ed912e83b91a27dd6f853 GIT binary patch literal 78713 zcmeEtWmnZvw=XFO2q=w|DBX?Hf^>IxcXuNVB3%-a(%s$C-QAL#?zoHRoN>?n2=~Pq z1BXKe_ulJ2*POqap|a8U1-W1`1uq{qU^#HgoF zZ^+EZ%*@Ei$U#eD>gZ_e@P&cF>i_;Yy^XyIL*?hp2k;WFZAH}_prFw7UVcIU;mbFJ zf`)<;6B1B#{dL&l;`+(V3G!UlO@-CTq*;wB^PEptbfl`ikIm2!`jCCtU>B9lI6 z>?R{Pvli0Vtau+ZuR4reQ#O_!Ao`R1&lh=ug%|Aq`xi}b-b%s=p#R@5X7moB|M?T# z2iX7p=a=L7-(&etQT%T?{MSYK-*Wi>r5wCr$5|tVNc~C=X77~$yNj(ib~~5Y@PoJb zmr!d~?9)4;Y&rc3T;(FH)Zw6E<1X_W{Tg*S%x(46JQBoCr_j=a%0482k|lo1#vBTG z0d((=W2}*`+&}Wn{uGLnMl(KZ%VEAkKqx3E_+4Hu3x_Fy{+(O@ux;HIw`rN)qu5sP zw;6t8sX>LRVGA+`fxI3mqJR0|xYIJGD63SLenpZ%c#nREc}>>AmyaJm#>K_y)-8q# zXYb7B!hA!A({so)-BCpON%k9tJ5ArZ5CHDGB7`Z~Sk; zF+^J4m!0;_86Y4aybk=z%E2*6M5C#aqg;c3prxdwsAObniWt==Xl7=%;En_Rt)A%Z z%M{Q{%qlFzD>g*_s@Rs1@jQ%!OHP7rddL9~(>a z39%y|RVG=_SB0>#%Y#4e5Lr}_37UhCvg)W@WX`5;54E$iW6Md9=Ue&TFZ7>rqnD@` z*N#s_HV^aTq$`T?+z&02Z~sERF9K8qCnqOXR@SkxF@7VXTtrGR z$PRuEKD{@!*&O7%feuT_w0jl^^WwcaoHwZ5#+`+Jd1YGg%J3mWBOBG~6?dLclwtZv zfx^>8h?Jd|AxW*^xgV0sSEc+!5tR=>=E3fIZWv{Gt|@~aTds^E%I|E==SzjJ!;zXy zN=hQZkId7WUAL9h(Xm0I#KOWd&O@9C@c4KVy{3)+{rzi$XC zTO>a38I}(Q475~KOxJTkL9dXIk%!CriD(X;QS2Brln&Z`p1<30KXKNYeoq})68oz3 z+4Y3PAoz5WgeMN*^8YxWJNooipxqtchii*JQwL2d&uP;d~$6HE?%N`ThGtP*4yq5s~(XOwP2CY9!3JvTy?R za{WfnO1nErjk`o&`JUkmVV<2fND7OR?pD2tHZd^ZV4#@=_a`PMSfP84oby}A|AKQj;I1f>_~bNfZcbMt`P`RXtXQc_&ZI_sjPMFtgVd=4Znlq09QFVB}M&I-N?x3 zrJCmEM7_Lt=o1GYQVuIRYjjI)1k*B1_5+ANU4-krvt78|9`{leADF)`#u=NOH0T|A z6_zEdrX~h{C^9l~YI=Iz@r#Pr@(^EGmTrwYxNy#d8+xQmCpq{Q_<7c+uD?`ig9;0W zMn>c{G*a1xrPysg5aZ4#*m4d%UayW$W;{6_I(sa%$>CrpJ)H!a&iKC zdLKfCIyE<|s;VRakHD%u_R1>NM zW^#117+!lfV7^hO#V#x=Dkv@8sa>>Y@sf$yk6mBaBaKFEX=%B*x`Gjd?m^st|NcD{ z4b32RW<+Ep6A#aDg+brYX!x{wyx`dzar3K*n~xp^wk1q6Mlv#J;E5(ABw$%E@UnJq zH64>L%)H`1g*>8(uiQ$%lQ>YUP#t4?lYr`;T(3zFYWQzQ00J~(;8!!4fuSK31qB63 zDJi?-rOzZSEx%h^iSj3@V8VX7%rLXhfVSatgJAr;BavA+_x^ps!xn`at#envb7U!l zOqhLxCaAUXi3ynYjSc+;{EXC87Wg=dbXS;fa(@a7#W7?-gZxRKsai5q3^On_g~^){ z1-|jE?03R%a2V@BpQ_+Erkg(CM`md?gf->PFMYRSPyO$slq3{+ok{U-=;`TCZv}pQaqo+eeDg(Q~dHy?`K#e!QtoS=YO`}3OUT} z{PEM=(u{zBg=N`~_<>^bdL^6)Nso#??;(IV^WXfa^zpdFQ3Q54meM5uto^&fWowRL zRKkt1--7(|{7k3`f`WoKkKW`I6v@AS4W*=&m6i3a+ZI!0g17eYzzyE#+2?naF=n(G z_|N2d`N{619NGS0Awt0XXE+QubL_E32avn1Qh|boSKY;%>Hd8s{c0I7~eaFfr?Ys}{kj z%sR;`wR)`f;ktO7Jmh!&*03?q)AJJ|)gyu;Tl{F5a2Wy5CiRh*yK~E9Me3sS8&sI~ zgZ==-8z%v?s$DTb!#*K$sy1xeoDDvX>$o0PNog1fGdqxi0JRKV79Ss{ed8io*s>15jERPnqO`G z-;0*(cQ@-%P?VfbVFMm~K_!juJ(rl_ACyhX7}e0~7Nr~G(UM zqN0+j=YF#obBlBEU&Cg&J_An*!&@t?g^3Sfl&eC#!$E#B`?c=3qI0#xVGWb z`|#*rVg-z9QIgO`;MSMG7h zD<=fdW{J@-fyDSqrdLEb*?qPNQ7K+9IuL#>lp-B!4O!;~rlzKbm7RS8KmaGF8aG7I zH_8!w$pUSlkZTL`rkr#uR1qIq+2O{fjeSxi5^O`=GVe2~Q63<_H~^D_5two#gAezT;!Q zo|BAl7VYXXEW*UXDoIHj<<{hVy4l=Wp9qmKx3Gx4u2HO^6eH}=t?|NBzPsQ=CCWLA zy51Bd2;47eHrn73nLGZha z9?i?yq30w7nJm%<@IB%w5Z|FMY>>Y3!!I3@k@wiyTca`1)%6u3?O0nQ0hbnvli)|S z^Y?*)0X7bZDQgOLvFMo3=FjkoOl%bS%VC>}@=s%*WtJqjTdwuXiZrh82GyjU7U5zg zi1NYSd-rK6W^~ zmQwQLA_L2Poey$hSV?WdfQ;ua|5O|8^9Ag|iIrTd(ezY0uC|5svvCpP9{mb1mcfwJ zv$g%1l7fGpY1)iK0y7X9lxG$Z6}9QyL`6v{Duems2lMT*3x-t-6#psl1GEvu6CuGe z+b=QUR+w6Hrfc)m_Tr!15Bi$-qobp#O3L7@XzA&hzkC_^_m47)_l`0wi;59PFu)cX#eAzR4LG`PJ2|B`{>TD0#0zxqmau${yVv6ys;A z%qPt}B${DHXAOypV7x4C3e{?r6iiN3Ba2w(br&O^E|u7we9k#Ccrh- zFlr3jUog&77ZK7&&V52hWaQ;VZLe#4w5qC^m@`oDlH!MpJ0Se{6xp}w2!ykLW527J zW;!ySe-)s4qFdQ9sg2)tpvi*MDR$=}%kJ!Ujr82ObU$@(A>eXG(VA6LRb||?25^{{ z@24jbsC!(}4}fxP;k=dnevokKpF0;{B)Q^*Q;`e%>)NR-`=8A7_Z7&)-~>FYLl+$l zO?GqhFAeJkc&*t<;Y#CF$_?kH$;#YbJ;uagjmo@Pgo0jwwW_0(-Uq%Xj3)+9=y$K* zk&(rD-VljrTvfkm899q1V6(Yy#fl&@5aj>tu!9mRr<}$cQuv zRc21@iEH8moe=;0GN^P@^qbSD1pGG zj_z(afQA4#v|sXZDnd3n9uB=~#?A-?uJKk1&>eA@6rzwTBTD6Y5=U)^0&tG{V$dr(R$zBLc?pFP;V zIo%}S^Cr-my`3NR4(i*~`!7ZT;|B$(Y(zxF$={Dr#nkWcX9tz|qc7h~4jVPHtMLLP;PJWzZ)ceztbSD&l~q6imH4(RH( zEHi@ph5H}e0HVQbhw9!uErt;n5kVj%B;>Co;2{S6C;9E!p!>83lsf0oP(E+ZhRZV+ zRG$>b3+RPIxL+T?AD7SDJ)Ex!=JB|KLJt+1Xnqe+%J6AX@5Rsk{e4!*tEOe^r}W4c z)@acrkH!jTd6v*h`cgjo0_TaZdd9rBV%TlhJWv}RSLKlNjIP#dzU?#o55zFjxU_tTGv8=Hg17>BK+^oKO$9Vt)^M=?;;Gk`furfD=D^#aPH2WpX4P2>@pO zD;47_u=94sdVL_6VOeXAUp{-@F!uEH{A(OpTGCv=AH{tA=9w)!g-r$enAYMgw>3Vo@ z9UUF9Jl#*q_1qft~Q-TXXnzeo1X*Wz~EZU$%65&0o*{GDSFw7yTy}2fKBaY6#k&Pv2ACZt`ibV@0bQ zr@9|$id{PRZg*vZD-#vP!pAq7E0I|5xc3e!H#gU~+~(rIHo zp<;eKeEf}ckK=W&)!QGQ((E0Ly`_yK8!oMb;K~IOMe3LQ$viV4?sDoo>Nk%Qf*G8E z{QUzkVrS=9b#--9Gc)LfVTMS{2BsfQrlujmMDBmNZ}74-0nt<|Fk^y6X9I zlMr`X|GrFIBQBr zPeZfW9f|?&&d`u#iZ2*$_4eCHDy5pxF*{d)ecpYJ>Gy4ls!{(~Ba1uA=M{M)hz2cd zdr;CZH?O4hS<3_PfWbrtg`Lw+&tGTFEG$@J-xU_h%gcYYvpcN~AF=4cDInD=^o>z7 zGJ5dQon~j-bT7c#?fniUNVkh|k=tOv?cPdSlf2wg`WFyJ0m+L#B>;J5RX$dM;Vs?UG&pef!aM%F45BavMkED#Ke5JD!f+opnhY}tN;%7^Mi)^C7n+t z1Qd)^3^(1QgjcY2i*zvJ>1qsW7)Qs(XQeK3jEqp&$YefeeK#v7K}sS<`B`T8X=!N@ zKYrLh+}LTd)1c9N9f6^tS#JxSI^4UlK?(?|X-d%O?&8dx!N=1ccO~Vnt}eC3DFF7( z{*>j{kBRB2z40(Fl2c+UL1My0%EkMKG|LC1j<#`J0Z&HUt!NRVbuen3-I1k9+NVVL z#7{(?;e8K=@TmE&n2L>Z&1QkRSX;|ZPEMXgKnShtJTrQ6QGNU6wsYOK+-8;cif*_b zEx5~!?0doE-R?*l3y(rrc=+k9XZNPvAwa<2MOU9{J|+`P*bPHC6(N6)`RUDG|lcy zco1wtJgbtO3Mi3)z^kaJXnVFL2BbD1KpxrRMGC8=q0RyB>E`C93=M|fkE<(Z=?vaC zv?`g7PEK;_>gLA>oxQ3Ov{O!LJvKfRYI`{0zi&O~AdTTMINW^s7QtUXsB38Wx|M)h z(7vs2=))Byu-p9LAA0g$!nho6uT!`>J0P^_n3RbVPMIdx#+zm3`L+=Y+7qDDni{O8 z<(DUEmWF3=b>=qaR8@Dq)ZhT-4`^Qgqq`EwrFCJ0+Z$^g0R-Hx=(1l}C%jFrcd*U5%VIn2d*>o=C5Q#^w z7TKXQKS$;F8$LP>1r6S~Ox2Wr04*8~!w zNCB5{7};l&yXSUShiaDWi}nZo@&vNl%Ds-7n?JaYMY$NYTRoG3g5*#(>~i=s((|Yd zJKQL+;n95(8W{;`V&T)^z`#%~*(OVjy5Cs`n)lCqzQ?`h^EAlP+2e{S?tNupAage8lXMsA3{$pONgS6|Ob zca@ZuW@K+41H?Dbx>I~B$IWRCj5srb_%B>sfP=fXXp4)BgN8Bev6{Dd zl-JOZyt89yyhQ0@X<-3wQy7rH0iVv!&fdYT0YH;wjspd47DJZAqpSjv(jqpz!s6e0 zaI*XAyXS2fnd@x|+MOlc=ajth$;mDtWB_60cd7OE9A8i6l1PS|7jW8s zq%SqOFccOt^YPgvY_yHkz87cW&E{ z^Cb=`($gOm0H{1auf|Ozvw{|9k!+8KiptE+UYpfYl#}xva2a!RbJ0)lXqfBDEj^Qm z>pK29;Xso;7dy$ahFo4S+g&erC!(IM%r*y2@I9|mqV|RPG^OYQOV7*83k3yb49sgm z!7e1bQFO@&s?R`m#5^FO+QNqsH$DVd)4y-C|Nh*$=}HG^vrbNI08}qIFIt&>-8wm8 z1P@Gz^eq^V|J2T=8~Z1|Rj>=5j_>NxwU`AK7&GF=3GTj9vndzYnjj;GxZ{M5k5`Mg zosw0!(*d~9)RYQ7?GHjOVJRu8h1p473yF;6>C$9;4>0liB6tAk#lyq<4cM>0zdx{v zqPNeJZ>!4cqqwsuk@$#0&U{7!3&?IGx^{AUce5P!TG$a^1<32!2mGgR^_VA<8GKaO z-97a=)c)Fb0}pj<@_>zXy%aEgAk_qHO`sIK7zCjh6o3BwVI&qBRIpEoKO7hk2W)K2 zDb1GC@|6IXt!7@S!V*Hf92em3{UG@4zicfs>r@EHj^*Cknr;d*XAajg2hcUVdI3iW zI{kg>9p)QDXz+5fNzw;2>b4tp4;l9a=g${xP>1(da&D^>wnSg5k1ttZuVpE_K?4C^ zFpJ5EY@9vf@B^>ttD|18(jcJDdboesdt~9@2wsKcmz71yQVQAGRZwLb)>3bEN-HKA zo}HJP9Y1+ftk?IhBT>xsY$R70k>Gy|r*T&{ zo2Q(K3_8YOv?%0Dub;Zc#H&e3X~Hbg`jHO1CC#JZVaW_&9!>jZ3%aZ}9Tt_pYLt-990 z=d!0SW}KSpDVBcC=OapGsU?*R??P=s4+r1qvScSRvBtJ|oiZvPX}MSmaOSt5OZ{L^ zcizM9FN2t*N=inao=dFzPutUoF5N!ERV7j9QI8^~)O-~i_!BebOf!}pZ!XkowtH7Z!lKz6Rd=d|)vfklsGBT!D)+G(612#bqJ=3qTLn zP1B4~6Zfdxr-$Cr7#l^YT?U_p(PuC2`IzUdE+Sm09&O#$)nqL47}tghU?tx~>XncH zw;rif+vsdELx7MNp((AhuI0^Wk#>W=1Dm?7CHs4m(R8hfyj6nPHwy2Z%FBX;<> znmcw035oOC0(=Cyvf07Y&A!jx4>w2{MV3Lq()p8zEY_BmInB*Wm@>@Zntm|~tk6HEv=QPQHbz4$}J)xrM$ zpOTX8Q&Ft8eWES2qkf?w1+)Z~m~A|4q(DQ4k?5L-36MPKzi!JoDT_@g4jgr3$0ELg zO4!gpUoAGGwyAzlR#LLNIaycQjGQv@sSTTn)UBGAoYWJ&gTsRnx3OVZx8*EJ8$P(S zPSt%ER?vK~`sKzbirBY~*MQ;KB7^u9e;t-#8aF0V;E)H7^~)G^<~e{rZOmhOmU$NH zN_@gr0#+ES>}CJGEz#%74RtWDs%vV-!3YGdUKP=ke3kHl)zJJMI}SFsd@y|mRcK=6^0uYywn0%0u*BM2Zt&Ci09w!&U z^)oH>L2TFO9P#nK5Shxjf4i+9i0Rs*xODyjDdRNajh2oaX4RP)aImvQqDm=4hwr?o zu*fwo161ig?gROPIja|%U4v~}8vgLL)NX6W#c3pk2(;^bKmN+&66{=;LjOI#fRRz4 zBIx=gfgxyUT^_5!4h35)=VyrucR%V3#7;ZL6Pq)@z~Ho9g90%GrZR)4GNXpT ziT{8NTH2iQ@}Hmrs)=sW&Q|@lo?O@3p-~Aq`6)3sX4{_F0Epd5|H8r12lOKY0|V~6 zf7!+oIUhvd(?tVg5;v%!*CSPJm;z>CAD77&^iT>Kyl&Fh8@n00caIQ}v=nvmgl4Q! z8lB{6TTTqYKgvq+D=RB(i^Nr4kcl_OC5&p}M`47e-z0JbXn&t}JRj~LBvL@n9n|nc z{R*Vfh>F+^S4=9FD%8O*UP|nW;v3m&S`GNZ7P#Rk?>wuMlZ^k~u!s?47gkoZOEnu} zCQ~@_QpwufZt-v1L8t>b`bI`%KQT++FpZ0@;KpksBO`;b&Q|W7n?2J&YTLAMpDR?b z()tQc-N{lHmTFL6%yYZ)&nrn*^a@C?ARLCCN|iQx+1=xdO!=MI6CK``_aJ#{$w5XP zjpx(!EzpPok#4x%NgbB@{JsETZ0i0me0UE);9a}t$?0!{%wKT6hsS-RQLse|P6Hxm zvh;OqY^+&OaJ1-mP+0&nLl41*eaLccS@{KrnVmE7w_F?28!Q~uYhIJG`3aib=Zevf zA1^If8#XwzdO%?LEBvLFgW}P-Zq@FU>?~_!M~495ynEsqi(YiZyys?_4a&k(kn73S z)eN?ejTq1#j45jjt+V~GUf!5%grf_67B*!Pr7c2dvSGuaDeIPK@~_gx*bQbaGuGRq zp27>FyfI;*tG{xv5kFD}wmmMIJ(FXH+ufcS0a2*_az+DC!~VOJK`X-|m2XA|ejHcw zT|W8c<&48V6tgX?DvnyftsR?~_$ncR{1av7&8ZHReKyY(R1tSN=ZY(o6VP8N8C)DQA&Pj+|ML$ ztiHhUS8-M<)4>IF{8~MDA8qMv_NuXv`F@*$<$AjfR;sJjhFA$S+`fquUrFZcc_5Vn zgaF*uU%Xx^8*%1wN@8ltjjdOP1ts#bvbwdNcpD2qB{@Go2f#VoOkMqc$9Q4BksPM^ zR>LZSL5Rw3@%E6IU|Z->{(f1WKo68Jdf}%Z_3L1k&D9ihRI(|kWq6*3o4TE+s)UdM z?m9E0Op7fsgZ)cVe)zE#-&M6lxe5l3arljiiOJsH-iLRgNk+jy3baTevflBQk6f^B zdvvZEokKhk5f%mj>_9pKN*R$7{7zc1JsWR@0 z^j+pOwa$sOtZ4xS3_Pp8O);AF74uiji|GfauAJ@{lp;|?J-Er{Ar$lKq>YX1iBlgQF|F{ZJ7Z!t zgci=_qTogr7BScjkjn!gv+~1e-c*ZAOTw>6{i^winWpi|pN%UD1_%Z%I>;S{uJl70 zUYpFYEP6!JnJTFzG*CZ@^s@AEiuhN?yqvPB-$=f11;5h4$;L(!!y~)6>&pjF0jn@alx{m~$mNg59_culpnZwml5C$to#1Ex#sz zC9GC2U>2AvbIgMn)>*b{A9G6sE!?<+yO;8jmDnK1;YakyXDH1cX9ey8i>r0o%9MB+ zkj#3YULWV)J}d&*?!8_aq~xq5YV= zUE>Uc!IJ8ks`+%iG?1rHJ7ehaRYe5{kQgYC$lRq(z`eILzo)l^)UR36AqTC>m>+_q zsGO2h-}l(?kI2p2i&i%Qc7;6BttV#&1cj2vWkIebrSf|3kOFf$KLuPC77C(qw{P9^ z{bXHqZYpqnzNd75I-hMR9Y0$H0K~_~XJIS&N^Wh+1)JF?^*CNQ9}VCb%>qF;0RQL5u4qjDEswOI^NTU2jTZk zd<5zx&-LxTKbNJfQ%V~LDoHnwVRZI!s2EW-A@z#>$&X1A-r-u_*9Pvy>5ehuS- zPb|*TNu5pdw7M`IHZoBZ0_ff8JRW1L!vuQVz&Hn$FP)E3HrnUnq15VShV6^9tk@Hr z?t|XMHn@^3SCB$?N~*sa8Hh;US*qLePRMsG0FCK(<(fR+DKY%)x+Q7@r?vf|QEvrs z1yd_4__?1r-v#zn_2wEvi3{?AFE20q1qWmH*1`CFG1!NP-vTo{vyG(hHEjc+M-$}2 zAQkSQ-`&*`8!<9uJF(I=y6f4!5n3#4-J#1^=RLP7%M6bJB(`!j#6C9C*K|h^iNfVL z#iq|!8a01jM~3>r3xCfK^iHO%@pO=I4x{_OXpZ2eR$ZD1kY|><3t5QoQ z^!LmuX{m}zzX!%Ulr7ICm7@1emuh0K0KU~*prC?`(%Shgr^i+CXDV`>INDaOTW(A0 zuu4+c^` z(ln{k^hPTN*cM%w#nNKB*rtl)4S@eMaC5_nfJ&emZ6~7z(Fi4U)Y{D;e!tG(lk!XY zsv0)ebKi%c_egZrB3=j=N=a=#1_R|4wDnvIXZ+=>_uaw4$;}5^LWx(1fUt|rFRlc| zY(hb2?~kn8+U^V`zd4#NT0Ot2g);FOUb@;;v?GYYK&8ktxgCo_a5dz_BW^a#h@U0! z|NM-?n_<)AQK=mWSntA&bEPe(B*?h{MW1z>GVJwYIH)Q%lNJ)~mttNIAM&{@g5pd; zle_JgS)Yq-4F$%Av9U2O0l`oKyb0UHpk*S&E?*9_M{zhcCFR9M0Hq65bs%7BX=!0% zV&){bTRFpwnscT}gVd~y&QO;N@zIvkClBMO*~E1botmL5cNG5_YGjv%60wd?rN;L& zTi5fnipO;Ne!$n1DZl6Baiwi`jH43g6-b;r^ebsU1 zLl3X43_Mh?RF{n%?jEM3A|@aZn!T)!Fa;626x576Gva5+sUh-T2^q!nmDSHbc|IEc zjKNbciMtX$Ow}31Kq9e!;*N!QqlH#5mCsXp9b{~J4O>h+m1I$Z%K(^v|8Tq$Y(nm8 z22kTchUJeNFvEek@sc@Qlz0;`Q{m(EHb2UEM)+;kIvHUU1h_VeBBd3>3t(W176K@i~Y`>bVvCE@p@YcM7)f;)l&PDgcZEogo9V93Ve zwUW>IFweI-?1j>k-}(Owr|)&&35DCZNK4IwEU`khQYX#_>o~NBPq%J07-)^mbkz{j zm^FLTPyUK{%`MCpKOVr%!XgNsuO02fDlgY=Z>-uy-Q$(^(~0Bb-K=sfMg#yQ{qE_q z$8J#m(lWIZ+~x!7Ph4GSvhE6lcuYC z`}?H$kst;(Tp%;A-t>Y-Ws3fV3y~UsTLt0U$;nATIGEVjdO(6aG>a0P62+p+{y`{a z+?eLkw@KDRXD;U^o)VbtL7gXN5D9pATz&Rhfp}4fVHL6X5X0AQsfT@1#wmjJg95VI zoF#ku=>toiE`C&D#O28OiI2|L*O--zSVsHiz6C|lBhRk5O_Soo0+1NrjV^^~?f7Ub z?kj7Oa|gp3bt>SBIu?l25=G_rpaShy+fH{V1tqj#>9Pg&7;*`FGGcPPS>rNg^t`nH zMVzz&hXNB}B;p{jOV5&BL%WdBTR}~tdxrF_G4Ev}t@kb$6sOFu%zX^vK4pd2$(k2E zm|jaCM2LZH83~-6szQ^hoX3R3tAn&F#`%9NSvJ&vGrZ23v(M$4>EA!^UPsv%GR=Q6 zS8Nl`mQ(n{e)YWh#CruJH~p2HNaxgTPP$|3cQDb$>ht63XQ%zCT1}lf0$@PTe%HMF z7XXC#7k6)=6DDDUbb#;TLm0^JW6dH3etq${m6X61#Y&cHR+1HZDjrR9njtSO5LCCf zx8o8iD83sa-$fR@?S)H^gnLXWJx|s_IhhWQ&2weoQ|p4%hp)YEKOQmvQ&32~ZhO;+ zEeYCTl=15YfE!$0lYlw`wsyL}zJbaE5$3nwe}?>yLqJkeWK1yg({@?nE~1lS>| z@5!l%lg`h$*hQcZ=og}4%Bfag^oKE!st6CSwc z6^loy`+gj%SIhlv6<5Y!ZwZjFWNj7U%Sk}rDpVs7h+IjA`D@F|Z8f^nz{UiS!rFl~ z=9_b4DarbtfWQ!_`2Q7p4&iWL*xVH_A#hkw!6|am z;-H}hJOn6j{0rW?F6w67>f)oW{u(wsAxboiZ<<6JcS2raplDyQxPGQW$Bh31*pggL zTgX0akC{PW z+K0heXj>vK;cc&Ly|OY5yAog<(`z*fSy|DAWm$gKh+g_RsbTLt2S<|owSXx>)yImQmE?ua{ z6X3rF#>PP}K?1xZ%bYMm?4rQ^NA1FEkA_QlDIvkv!cDOP54O7m&^~det?<3~*ke;U zernt?x>+pZa?>>ouU7|5@+?T(UkWa?2RGN6E5mDE?uT;2aEyI+U}sXhLA5OIv|>R^ zpRk)dHAg3ByC(NU)8Zh{qU)5#f`J~6zp@rx!s4!|BDAsYd_$ErIjCzvj0S1~+b0D!Hn7ex&U z=$F7RI@=cMHA^w;Gm}79EK!~LbH!4K#U=(u)o;kap`CBI~>HDY)2k$f!QvMOy6%hP$Y~P0%cSySQf4< z_cr@};@ki5d+(R!$%&8mGbOK!^)77UV4#DUxwKT5_Cw7jh~1^!L+V;D=|HSv_35e( ztp2bE_IcWl@?6_aN^zX}<23Wb#cBls4EUo`o7l_K_Gf6*%D3WdSSZMW_J5L>F(1C; zeuM^!*^7__)=0Ro<_z5WOY>7q@gK-veQl786dg`!)TGD!_5oe$q!vQnO-BmElIvaLxW-<$B)xnAtN%rn`R%gPp)6092)C+urWQqj5C8CSd{z>!MPY z{KeiCjO{}nxgVtmw2~sYd%q0+bd8$Mk}~ltDBT^)v_8YO)e8*^pw$F(D;{01QO>PI zCl*+4SDhX3@%U-N)elp27}u<+e5!@^E(#0V7k)ZPGsjhQEq@ z6(ZRde4xb$*o9M1ci@gOHJ=;tkK7sb0MSnXz2SuP=>JE_+|Y;dYfreEH^f>UxU7GF zH7AMEG5p8d+|p7qwf*NlS-kn51}&>srJba$yt=zM7^vwM63PiYm;Z=}{!X~R5`(^X ze^>U#Ct>Q*#SNmR9oxI2AuHPsw5wUH>dK>*uy4Pce}|j}ky?8@^PK(}a9xGzN~?-+ z9AV;kOO7wOA_B=)mr% zbjONy?TxaCFP5MPR%TxOR%hn~;J22bi=U748gyqimUhu&NwR9~I3zJdXR4@f5jpY6Ln$shWB9uV3@_Juk~uTx@)RwN5R6vT%C>1$jEU6fe_ZW4vqCr1?~2y zMTz8$i<6RTfBk8y(%K5nXk9((&Q8VerNQKKv`AP|fm1{m@(zCm)x17nA6%8}4VO;Z z@O~cX^H~Zn>>~8=e3*t1_8ts)pJ-aZjBfoSA@lX&MLgd6Jq{e|Ye$~C2(uIrB-E%X z{KU(dbP;H7fzW6VUV|L{}a^GZ0X!`eR|Pt9dey7^^19?X`bG!R=BY;#b#BM?sJeTP~Bcy zv+Gq=M%tBw2-laS`UCoR0fM?U@@IK`UDv@rNye3p*Z_5dkQ!0qV9$$iO>T0AMVw8! zgL?$9n_Ahxmy|KrRUgMwog)RPhkgZox5>#A_L|-}l=GXZgua~}V-T{qeFFYx-6LDH z=!uBWg~*Zzq{TSCzPzd4TZXN(6!58cq1}aeGIRvSI|>>4r%lgD{2l$VFR7imN=tlT zAZa!_hJu~Z7utpWX~%s{Gs*}pb{nC?8gb_w4^fR4yIGq-yDSkTud)iMampmme)vF4 zsB`2EXWb57BggNvDkv0wb{Iirl{3rxF&b>Rl=C|~{6r(Y=Y6epYyN{lGZE)xcu8$CIC z)nKz(UmqravcZZD)7GjN8sF$b_;ScxUu;c;Pk;X-u~gWEHUrkRr)f_&ywv2sy}g%> zppPOyWK|MZkjw}?YxTdISL7%^9$I%8w$%LEBQv@YxOsfS+N^rR7ZQ0KRrQ z{s+ChZq-R*n@iFiJ0ZC;2S?CB(NPEIFC!%9(p;oiTgl~%m8Rsmjw7eFB4?Hf)Zh$x zKb_a|TFn{#t?03^;oo=kFL>FdAO@3}{Ay{b3xZwo^dE(!lzx_xaO-`@LeGoJlwi0m=S8X z8_V5{A)}scq_RUyL_Hg7IL_5f6yLx*Uk*s}NF>sq&eXMH`2vd+tUtINXsixU z@ZI(|%XDC}zYNUU=milQOUL9?t>Ut%(6;(;R~?;+rTsTHnOibXu7M3o=IB0PdkScq zD$UwYM2NFGf&K29_{b*-5Hv<&Wix80(}q=>-ywg)DlF>g?x=c&w(vAFi&FJy%(eP^uK^hp?Ok?+( z?M|$4)!_)xS*ZO0OQj@$@NXA8EoZ%TYy@qkv)H4ne96|}M zzc^>IL`7D*4@(rXU|1P=sDW6rNr#ZJ@}6W2J{kFVntZhJzS~#3nEy<%}+d zB6$BE7G#OQCPFCRIqtYeaWr1{egLDc=m!g2Qbc3{XcXxNUNOyOAv+w8qep|Trb)DzTthJ6&JFJMz zW-!{=HYla#d_1`l#7@%8b=E0X@AJaKQr~GY#;=Y~Y@Dlk!r z7L4b05dR2EI#d~P%1A*ak0CqyY=JyfrClk@w!eg=?bpYq@-jUwZFOr4q8jPA?P(8| zXF}f2o*s#cJ{aS!TsfSLEVm(v>DtX{!R z=1`E{_lP;EpAd;!6qpKtf_`{k_nbn7@C&ho*iVd1-RI}ho*7?=|8fN!mSa#=x;_{#Au&td^tTQBa)6<)ztlx0r_dB#^I3{ zvWnl;F4rhQ_FBJ7RCFh`e7a)0FQRLw)_|!U(R~(pP?ACSdG(!SLsGr{DG76mGC@}K zGk!SGy0eOS)nY8awq9o%;UR3Kf6!j3^ZM}<>7?wHj2qv4t-SJJnW;>0|J5qf_6!`h zGc!FvTFHdxZt*>XG%a?~a}8BTiA}-Lji@=wjDItr=19qpu>2w$ri|bK#HZOj<{Ec1;k>Y*`v~1>J*qpaKk9=OsLlNA+GIi`+F^%PWBy%Hk6(vw@ZF&>&XYr>w~2DsaipNb9Q``^XJ zw~?`%qGM5g z=auUbwNg%K?V7m#&8}N6LzzlmARqqO6R}_ng4{qV&JFbq>l4lS9U?I<@4CYetUFG# zZ%xBX@+@>&;{^Cj54gayl?ZXyH!td8NGi#9Mhd-6T4iPQ!Af7A)9EDbn4?0?h_N1Y zJ8;88e=L4fa_MOL!%*j;SG&0WSEiyP{0h&SdXcNA#77^UZ{1r->R1m+MGXb*M{0`T zy_xkb%y5oims6yWS3W~E`%epJxm^D6bD~f@k)M!V{^$Fj{eUQ)49DI3pVCt?&!&!} zD#C`|56p*fk7PtjefpN6eVZf2Dl9P6JX;wDV%A9Z}7C_A3 zJ2iV;YW7q#SKuAlbD5L1J5~493!ccb`gA_zI4@QS;L8dBp!O-r?c02SvL`6Jgbx{Q zSnG#JZrwU|f0a$g)h!`C_b<7>?D!tvxF@Qq%L>gM+4RH9p1X=?F-XC50ezfmy=|^# z6Q=&XNL?FcS{_Dww#AFO3lVjfOQjl`<2W$pb!d1Z3ht4}`1oanhg0P0)?vDN3jE90GocXFBUwWAq(>u+ED zWOD*v31eBp5Du21b)wO2W@PHuua^N;Pz}MbWe`4acbw)f{$xxjQSAtphZn8e@J<{L z&dy3e92VSym(FR=g(Qr}X=6|(W$)K6_LzxJ(;RYg+B@AxvdDWg_T@4;QTIsLuF!>o z13!6XfXb05P6Q8k^m(-2Vuqk+R!-_pEb&4z|N7gJ`B6dogtIG>EQ!Vm7SV43#_G!2 z&mKLH#w6QG%d65R_&s8*F0K9VnB#2yT7{eh@8&Z2t`hmHM z#m}~hQszIS9C?XSQY-V`lFTulK=m0x&GboIaviV6-h{bk+0(WW-Bp`gg%UA&KnOy7*V5yd`5-sHPid`uY8Cb9JvowY}Jeo{WP*3JBo z_ta>G#mXQP5*=3mn!R)C6dsImB?b$xPYOL3 z3r~<7_@S?GGP#Mp9vzayVRuV5xrpbu$krX>NmSu8-#?Fvdl~wp53i{+EM?usKe~vb zj9l<4(**C&23z}!X<~3yugq1QHUzizZuGJ3*14IWhdb{KWnhuxy1KAW3Yot2hSnfl zm{2b&C-AyK^Z41-xm||Szqx!0opQh%QS&*YkCH_k$w5m|0pcm>1xCrV*4i|vj^O`> z5lMGnABJYm%*5!WB7*^(17Ke0UP(ZzVy+XK{TDJJwlr|8{HZk)+ z89jw4&?}v1iAuGyucSQOOE&qwFyviTRJv)cuXnc|tY4a4t$IiOxADpg(F{gUf zo{ZSBArVcyvE!^3t>Hs~0ovd}9PT9D!YwnlDId$RTWn>34Qr5=ukT6E!T#%TbdA1Qj}Zv1%na_EhM?}Pk1ih|?=l*$8&#Hb$qHdmFnGz8usINYvzz!C~Z zVmy5OZ@S^LFQWU|!t`dpcz6%QhqtkA?vGE{WyZRscY?vBV(+unKjjl1j4R(C&;K3r za=xDn5%pRMJ&x<-6}F^}V9na#y15)jb~_t#{qolcN#typnywl2WupVr(~l|}hyT86B1Cv^m{@VNY-yV}m41ry z6SpkqOIgdV&2<0#^gAOY@fNbkw?pM%gJLcnsOxn|4%AD*#hn`-UdvLlCC<~3bwzjs4 zXF~;M@y7*j`p6W2!45eR}p z?MUgk$zd#lNTAP;x1aUUFX^!<}ih%`;_ScXCg%5@OFw9Duf>=kv6=_))Znq^GD6F=8hq2SY1n=_blhc`ZTqlA9=qCxjk@Ng zv;2fV6-IQg3;)^zzGT3i-F;cm?a6UDIYj?|-JxE_ab5U`+PACFyUz z@=vm2EIK`?NJmCmK;Lf*AWY`cOHv-uK$myojdgS-3DSxU%H@=Og968=af03-7i^s0 z<=w(?j?FsK7}F-uaXL=kn6rPsX1KZFe}JppzrRpWL}Y|T?hBwc#4|^j{9$S}S(5Id zA{alix~L+fNSAYU$+h&By}t9DHN6FQ;yQYSl+EuaZl=g#IO&oJvtI;Fncw#PUoI~( z@!NMKbn?5pzS^4^`EEA|B-KQn8-H}#{K*Am#ox=zJM$$_{a&16=u;q9*JolsEbso!o+OE9%8=g49cA<0TN;uo5U%(ucI)#^Bf^FSp zjsMg0ndt3P+9txHAA@&3?}k4AZExy_{aWgaC}SxB(;#T@h@9~Hy0LlfnZA3&3tsGp z)Vs~_rbx-OLfrtmi9Js|;qzq0PZak;gw&SQZ^8+3a&GNh#NDml9OjypR3Q+M+-9xy zQNdRJ3)y@yX+hAuCXkmCxpuBGW5T6}$N(OaJxri}={uA=W;_zB}_C9M(;E)=en6 ze3PDCpCs{YiNylwZLy|MTI9CRHIPnD&ZWQF@t6?j)zrM+*--PQe@HI4VNN||xjIcZ z;%XAai9Mw!iAo+6T7v)B%gD@3U@T--#-v8_zK88`LbldT$Kvq28^d;%z_?XSElYBd zw(r6(v0L8dUp+e#9kLVIKxIF4LVxf*Qq&pg{`SH9gUcO@GREf;Qp+-@oi}#wcd@2a z=YzJjnIcA-K9nPZOyf)$%ekQW-DVjJ~z=;wf;1eR673l zo-8siHV?8U#jhN;0Jnm%U?Eh3;b}cr2mCk8HwSLll8y5W&_GPRjx;UnNGqtN!|p=O zi@#G9Rvtb6MRYNoS1dQkvLLIyw^p@t+)fl1L`?pt^NrtYx&uj-2*#kQTXVDWyiPqP z97}Y)rc&x2(RwNo;}KX_9%WFrXr~g{AtU---$oznO<8izyo%yQPOC8y`7gDqgZUq8 zZu)+9dAYf1si}JJNg}WW60>uE6;{48chyHoXNG+|@P0lj?RgUG&pcXHue5U~@a8Y| z>%h44<;7Wb@aX?GwBaw<+q1NGd$78?T0c*RNb7I#oi&vT&z=ygH_OL;*OR!u#BM9~ zC9AI_B7YS*Z4YPSVwh& z9W=M&FXvy}7l0G;!jMDlox14xqw|q=)>ZGe1+{AXpf@k_lad6+juy*BZ}C>GWz8RI z$jN>9^oax_y8nw$!nX)S10JG4s(3gss(HlNnE&l7@-kN+{O7{`nCW}k*cB+PQC#u0 zA+qy#@^7k+xsPCr-=e)eN9Q#(axcVWUi(f5HHNx;UX)g_PwvJzfdX|*%`lr&LGkqu z?=xiy_PH{WJPXH2r9!7jH4A;S*7#p$G7z_a@l5U3Z_Ax;HZ8%XV{CVK4Ms40NpZH~ zSG+a9Jc%pC&=6u6105ZA2<@o7j;M$LER5;utpfSdgCdrKCrgrbmfo`&PXr`rU{I3` z{_3tZr=FT|o%b!lN4#J<0dp{7LS^O@)-4fjs**Fx(m)W5})lEOlec!J@&kcxEOX7y~>~q;f%vB@<`LR z!~+!yIV){}&3sZruTLltWkz@$jjEkqkH;xQ2ZRlN$qxP0N3{}kk&u$O$nc)9$nU5d zL*wVr!6_zhAO$pMcs_slA@`B`<39&`O8+OZY#!H34#hfykN$%2X>@-~rlqB2;N}*E z;|6T}kf2H_={Ca#f>aff*Xi_?;;qxI_j=V!r8@5(TC3I`R~n*V(ouEdjSK@g`Tsw6 zeoZL@$v|5`bPL)hkt4;N94ioTr%I$(&AsE;6|&9j9t!@F(3w zwvZf{i7DX?IOcqB>>evqO_D1&kP0PqoKAuCZ`RjIl%i4-*2n$&MNtoh6%Bw^$zD=ZnOr+hjg4Yf>tY^ z=`)DPt6Iv(l|aGsh`vi?{Mer3%=zcNf5Y)NWSZ6G?W*R=i_4V;W;_0*gQ`|c69G!v zWu$VWIwiVY9$kbi7l&x#p3}&{!KE4I+#kjZ;3;{)8bqMZGaO`E7YpMIXby}S>d%PL z7d|UzaIU_kQEOiIwK}It59#nsEzy)!_a`9$^B$x|fo_8czeCvhzgRWq^XC@jElk$I z3me;iR?O;ZA_juA8@aVvVr0b4}8_`hj z5pL0FY`6|iF$M30ByEc6eGQrr%Vs27acnUz0dqZq^aPS_EQh6g0us44gP8rpEuAPF zCo^IHm|$b}wgl;qJef?h+>&D{e%5Z9R!HbBys>)+p=~TTp&W-+o(|Fk%C1aB z{xnyJ99O65Y(cX%rk^zm=`oehetj{@lfq_lUb(4V=tRz&V~Y+q!ebV4`-p=ZDaDhv zDK`>MIXHSpT(g2Iy>xRmX+$@Am;WBFsg|b3O_h5MvznJE|KVLsKK>QRtx@guS1lA` zK`;eF#DwrfJ|F$dc8IWEar$F+oJ2QM8UKtpz4T5R`6Dl{5ZOH$RoXF8oYxo_@bhvHtC9o;PFBi(~@j?Ex=mGnT$wiBiJs6pRtid zM#ZZCovx6Mj){R0jgrkm(IhRx_TbdtwM8#tz6j^wqq086LEeaLJ_jA2S&HyZWN;(% ztGO4^24v4F2 zEV}oj+i;VeY6!WeMS0P;G9DL6S0W}sj}B_jykBy&c@d1^CP7h4-PuW#k202KD)eC-HZWGN1*ykw7==q8=JeV*s2Z{JpD`$X7~AdhYtkva2rT6h)s zGBUg5IntePW^=xI9v%8@4b4VVjvm6f?%ruehbJc({(>l;;Xks}m9&GeOsIYCpia?i z&`=F^GL5A(zH*|-l+KecnKQ;A;%U`w|3HdNDL2My8l$9By{)oQ)W5RWzefEyE?37& zC%Dbk2IXUM=x&O~TEnfPg_rtm@0%Mt`eu{os@_Sz$DQRenT+ld!+8zLE;DmTI0MV^ zYWI)%UA0Jdmm>e`wI}9YVRazdIIMq@IoOCX5}m_Lo6o{%>Xf1uy9d_nY8_M8%*^Ns zzP3R=W@6;1noaz~{*{y^F;+T*%z@$1^^gG0OOm%~xep>M@q}t?G2GSFVNBjcHXe&` zj=oEj>P-!3otGVhV#D-))riUHoB-wIJhc*mOR>u)J!vF5n6F;EU!|FIResq2$l zK4`G=@OB!>1}sPQOCr*&qn8#fha;ym%g@U3NszqY#^Rk6ox^x^Zy?l!Uz;?i@dqL3 zQLLD(6Lmywo(B&y5Xoln-$5S+{}vn&uLSaEDmv1xU`CGxy1%i`7Z!F`<(tn~$b6c*SlLk=V&FObAL(b`Of zI9vy6B$_T;QIKTAqSN!%iWUAUX&d{_>t_&NDeZq1r8Mgc9(>3CN$;9dl}OWEW$nWI z=pky&0fsChCMGm{_5_dtYF;G0bzp6cN%rhV(>!69dtPgFUR}sP8|S0F?ax=+EgRZJ z6F|%6*=xr5(WFh?C9)cy(6w#uf?SA7f@2j@4?HbU%PU;O#tZV9~*uJMWWSvqPZ zDi}-Byn^fMY7;b4Y&(jw&%Yvl{5Ik&p4?(p^JCs{xI>+P)qo8%y>PtYxn^ylxMdr) z*uOQ;ym}wh5PZw6+13Aw53%P?aIBA96Wv1f;laliWhzjj8z$J5v99kjt9#gRW@vSN z8GIxBDs$juk;O$);`<$m1PS5q{vne50aJ0RyN0Ii8R!vP?F6a%Vvw|f>{itD(#326fS{L@gh8-ut86X+WSrFt&5!<#r>8ijI`n`Cs@9hkR50n# zruY%tTsWcmu3)}bDH-9l#yA9*8~g^KygkSp69stHpc`hr_`|t6-+W+<($jK!a)FB6{k7+@v6yx-UA>{|ElkQRYuPD~hg(D) z-ap0OIDcC>w3d>V<_UH#dFB{=Gmq|%UvoFO+-~}x+^j?>-m)Lq6X82_f3IpB#6lxx zwaYLeVLPbHY_kIsd4MvSCai4$zG9^>p$z~_Fuv9u)Ux#nLUJ{hKw{};ltp7GD>Bw% zRmfuyrgd?lpb>-jYWk1zId~QUa}H1Yv{e_Kvq3iDxJn_}^GDL3OL)cQ@+V~l)!8esW4Rgg0yiHJ@sulRItGSNDvoTfd#QenYsZ4+Rb>-nd zdLY11ar?h}B?>=Mn`ivL#3jGKO-VnaAZd`>Kw|$!%GnpJp7bmne8QFe1(#FWqep77 zy4p;FUlg>R6_&i7Pgz!)K|0j`(+2v*XDow0XEOtj4i(5EAxKJ8RN4sLONX)Od2vn- zno#&uL_|aklD2>}PBhv0mPF7t*X&K zYdM=Y5FY5b*l?2+GVqz#E)*2)l|UvRYt&_q(JCCdvg2)NW{{eN zNgK3Y0`eoe8!4<6>71Lk)8_0TFF~vWVqB{m8zcme(@Unef1vEByc&@}CC|tSin_>8 zGa5^^ufY?vX@e6PVz}iq=7>oarocovYW>Le?Lyzjzyt;9^izong8K`RrW~5v`8&F} zOY9o}uHXqb7OY&s-HJA_|bE?u7Nr zH}hh$j24{oLWcT&nwnd}%z;PtJlwA%Qvxt0TxRf%wonlx@I^vkIeq--6?NMpLHb(( zo%oZE`!O>jZ!-if1tMj}c+yXZUNY%HA2iBRu+Gmeep6v|s}mnJgJ11kQ_wT&XrBTl zOc?L-ihXg}ARy?&k|?J$+RkUEDJ z%i}PMp>O@&#<_$kbI3&GS>hcNK5HgcTRG-@8~{m&6y3$~)~C5zmp4`)*l2y7I|pmF zCW3JG#7SlT5yni)Y+6OTOJ>0d|yP8rfZ8%o_d_f`vjv^rha_!8TR-TpjQbh39d zqfwV(q8B_#R57VhU0!alu5h7;C05EY>cZO4Z0JHjNC@6{^TcYN8e?W_5s9?h`o>*b zF!t^apW0%g@;u@dyM;-1lNaM%=oukr*m1EW$oZvJhY@jTzIdVqp9HKRIIvqRw&0xz zewcw0HN27pOei?0|7W_a&fSq+mb#avo>)8a5p?xizC%w1;XekCO|{)Op%-s&Dsa#H zdQ#-k6$mJoY1A>&=4P|ZbCz-qcG@bxxFoj>?wnWyN(Xic&3^_6aM=ulJtwEqFIG-U zI!<;N*MO!g)eraw$W%ZSG4hj>`on`auHr~VK}zc{1ggR z$ZYC3I^qGB0z9+qyyP=F1Z?tX0?HaE=7Ha@%EF6oMy*)H4fH7^F(oUPK^kG=#@4r` z6`P`OE8q-CmfeUB!R<~8E@4Url>=5b{Q|%&(B-A%!{9C+`q+u%tE`|PNcwCd6zSuO z=)XC0!V-@8%9wn|N&4|_#a34q-B{Mm7nA>NmT$XJjGIG$L-MtZYm_%e%Iq`@7)ZUb zoFPYFbvynD_Dol)zkdEd9DWpCnWw!@@ig8YQNDzUEL3vt%I6eghNVV&?9p0~zV%F^ zgn>jjd;n=_Y2A4h`~AH!4<}Sy{ZSjh=nG1ob+wFfYG)@$dU^HN@clc`swR=Mq~+ej zSrgfwEBb`6`T3zCoe5ju6CPX?+_K{};LoegdA-FIMHl|<%~$x?-z7c?@Y)#KNsnOh6HUKw)HtY9el`;v0rV&OOKOMxqCB z2Zc1pjW@2URtPcq^ZXsq`3egQ>9%OPK6%Jv`m%0JmMCGu8TiML`d_p4MtC>Ua~$@v8SYOKkqaB-f{B$sR^MC{AS%Ic9s3HR%Pb%AXKml%@H zrCfFGLOGYx5I9xkB9&;vZTLmU9>V(ut0-#z(q;FzTiZ86{9#PhFSvh;=wSx9+bx}V0_{LTO1FgNt@ zj2Kr(xO5CGtbl07zKGI+7`i zx;Qu*ijmx%*1rAf3*MFUyZ#3lMxY^B$wbc(A$ghSE%tAP8D{o^wEKPw+MA3l>sy8> z{={wt7`}v;PU+)rjql8go|jS7<=#~MI+r@HLP9#*4F2}_VSxO8(DT>0$c_&)a&lmt z1G7>X=K$0JN(GOpEw=9kJ?Bcaijlf~#(2uf`15arsUkT{u`$V%Q}KlVV47K(h+~Pt zAL6vzCIH+yA|l#jQ?pr>yiB{ToTC8Kp&r^V#xafc_4S!%s2c@^?^+pLX3n6DZ)hTg z9dCjh1QHij&c%x$hQQ5mb#(xAV^`X5$&+g47 zu-P1hJYA+B`NG5SZNxm$(G6&R_S9Awb~0@`wzjr_{(T)`(xRcFpx`;SAwGqKbftZL z3Ujt7U#a!dgBC@C1;ZY;VoLqUT78=2I*lok9EAqgEGSu7k1hJe{Hy1jZOGHis#a|8 zmYV@7T2ah)Kd|l7gBK=Yf$6TTA=hN0Bhs7B9>S$>RvaF}W{a;0<6u#n{{WsZzwNT@_-$4PE zIK+1t<2N!$BgQ6L!2Gj`x$xzlc}dBZRR!!Q(PT6md_oMnvj#tG+qkG${b8t>Jyy_m z`R`5$BKx*@_a$p2TOt21TJA4PIDc{lO0WOH%Tit3Th7zLB;9g{{^Bnk&*6}DzEb<; z&(`kGza|Er6eYiWedGMd>08+3dm`p1eR}Rq`p9i^wUcH`Np6qs+bf30_l+p^?DqeM z7Ypps7tJD7lJ}R)R@Z)pd~Yg%w;2^q9DZ4e_8po-XJ$huYpuvE*KOba_b$BC8Dz)dm*~luc0+} zfWjX!GVpN%dsXhkYiI{&Ki*LTRL{X}viw_?4>&lSM zm8rS>%b{*}M2|{H?XF?Lc?5j*Grg622@bD>#AL@eiuO9556f;$2!863+vBp@N?TNW zC<7+y^`45*)If8q9aw}2HO=PcW~M7yMhYL&3#vyJ0t_9bBfGp)KTXS~;@Hk;trJug z8792@-GqmIKQ&q2Ef!oBNz?i_tz#pX>*r5~VFqXx0fpG zx#I=1#b9m{U$_`H3Ngxl`Vnx&EO=NAiw`~^Y|Ghl{Sn_QKC8_XY89%uS@OBt3lY

vW4d;MrI2b$GA)LnIFy?L_be6_y$vkxGrNIn_S~jTi!hBn4Z$i zwGBbu6xaq;?tI1srqy}KO&h({<2#;&O7W7A?PWz@*l;;jhNbmpneoq$@~uu0nUY*9 zDBZ2_a%yE8e4}t<_%XF2gxALA1fz-;>3liPe8EycfBN|Nl;4Q_taE)O_D+^VS+RY} zf?mhm`4`fIN~_$?$=$w)L81%~g>XN7o&W54l%1#zlkI~R`a5y3OQ)uW@GIDcNDK~y z1f&)0BTbPe1aH+f&Wl2^ntQlO}R1ytHOET<0F-I{~&XUeMSrnm;;**7mVO{!G zE@BJ^JCHoRyr97Wfi0(IhswPJd&hLmv7)U#CPS(ZlNk0Z7*(6tzlQlWn8>2TGN<&E zroj{myEuR*3OPh+&4dJR<9FBK1ZaPl5u>EvZ(c$=g_VS2*43IP=&cTKXo+B<`8`<% zVTTtuH*@m326Gu!$8jpre;KM-8WNd5xi`_b7Ccu9!5~nn1|5{@(5(7g_X}TRg6q{Y zAd{&n#L?HTlbf3znw=T2v}cnF5iZ#RxQ|7g`FlalfWRi=dJeyjkK40_>TWx9mu$nZ ziw+0M|==S{m9 zOPq^0q&mkV2GNed$u{rVwaS>3EFtID%qm$_vvBV)-kAQQGh^tieHsQVGe$nX+IeAo z)jfs@TKL$ZTSIVz*Ioi%r=vp{@D$w_;C!OF?6l1$YkQLWje~|)%={1)qaO3HCun@? zulBRRHbeyqGXekv@9s9CTR8Yf@69NTRR(QNe0|!fpn8rLRQ2c2&$KjhczRR=FV4?_ zx(yoMV@ZG6`^rcJre0cB8#!fzlarmm4FDX*BQ!KX@w{QnUBU@KY30 z3Jyf9cCzLTOQhEBKJE92kP(VnW5vOX6tXoJosyiZ->U@Zy9RUB-EuDk^@8Hq34B)M zX*&c; zmbAegQzEL)46Lu4s}rDZ;}R047Fow8r7}-VPv7CwoJe!6Ra5SLM24Qs9<3bHqpvy< zTqLI*-2X)frH7~A0J1^yS?nfZzTW(7XFySqMRT(L26F?5-N3IKM&PQ0{u z7-1W^9A%ZrXP+_CmMj{MZf+3d&V>`SkBN)yKr^3Wtxs$7M1|%iIgOH=2z_K9>AB?qLR<-kQ6xD~*^R zshGAl*iI4xS)<|qsQiUx!M(ywl8E=o%d;v5>Q66miD78)>~2Smo1t@bK_esJN`T9p zK7@eu8kd+m`pC0guLfTKRIL7orT-65#@8%6_HEqu4G%TygGfH^A9FR1A`S=ciHlXb z?t+Sea4>{I2$My80eH$;ME11HiHsMKEo#y-cNAULq<#(E^LoX7ArW4%qif~f)GgG{ zLKsVg%EV5jZ_e{y-*0*!R`?X_JV}QhDwpmg^nh1T!73SxyfSwPScNb{;Q(&{n2sQm zZ@&J*_};c~kVVs6yd4aRfu`}JF+{C4_Oj~u_^}-8Of|#KKaZD@w1lJSX0v zOJN{|Ny*L7c7k%yABz5!->sEM!!1p_=M7&>M!GhUNwIwPlwyMW%g8_BcZvkau#yii z1)qxfu@ZH>&F)=x!$!WxRuV7ED;9j?WX7%uJELdJ(}BDX2gJL?U!0ZYd3op&PPYZV zoq6065b#D*9A5OBx6`*tTBA9c-%u~_B`u13$}qOGuQU&vv|w3Fv~c9GZD+Ndwn6ct zscX-UGh`w`G6sS>z5cEl|FiR{MXS z&Be_8#`1j!gZd>jf$7Ulu2&8BKFtX4=>pM9h~fXII!-ggt0h&cd59kEH4q>F>i=SH zvcDfS$L~Xg#^maM;X-G;&!94tAJ}lF1JKZXl^l3{VUNXGJrdv7zLkY6%`56W$C0d3 z1*`Z5bEn_BSYm#(29Mu5fxjE_-B5U2!Lq=jFRn#M(!OLR)W(R1z^~7*C-#Njd@px` z2n^C-%>I9SAz%^5vWIGXelcmJq4GTpSZDd+)mW-l;bgmrP(XF5GUl^r369)+R5fe%Dj3e!hZt0?VzU$?Rx4d+;P%S? z!_Xm}&34%b!}!6pAEvgvF<~yMvB4o0evGA_n#%tfnymH)4Su$1fB6!7U5m7P=A7pC zp0Dll^+lXs0+SVqVkAyTyjVjs4o$W2PLZ5UTOGb|q#P}FSFTZqGMh_}OOMgyvBUjT z9XTP+hc$3bIP($10SjO5K9Hk4;8KD`wy;-a9D6o3h(XKx`E*seCW%PLDnSzK@u&U8Gh zBbV?4XDb%&+kmx(7uFcs`V{Y+4R(<(S2m?@#XFU|J86b)dMEgr<`u?ch$@S_7-i>o zEhQx-xdVp;G;@ceEX|%g*CU!*ARrt}j@8<#S}dvXN%?7EwoiVno5e%FcL%Yl1@;6K zcaXG}uot@abW8h4GjcQ3+OdjZs95J1i{6-tXDLk<8KA?4;O;{FrG<=Tj~HC;j1**G z3X^SJlyzmBv1=Fm=pCz95h!4jcw>cF`AKKOKHXR@o6hXNDuFOof-@9~%jw``^%z@E zH7Q!DNu@Ve6OIx!`QHGnRueH-gzW^?>3IaHjeM08IlL z?7#NOP6U)Lm%Bl?gi5dC^iB4Po4y#%RD1lVfY#Z!=pjc+TL$n7DCIl}Y$`}*|5Q>M z8PW%#8c^qrmLsClw(%SP92OZ6@3__|p6ij=xTL_^D)~s590Ix*R+C( z0ir2mxnu_NOrv?y74i^EGtoG}BXU@L>Uw>UVBw2^44j7WpJ8ZR{(Ei>Ya>^#&Ks9O zWNPO&2`KHJPyC%pjhGfmNSIUpWM>=n=X(N+8)|CeIyyRZ`HOlw7eqB_K66BADy4wO zE+d1gXl`I(&(xJR1_9vsweR`P+|ib9K+1h!+rg82*?v5MW$z-+({lTQSd!K0pWWu$ zf(JgF3giBntwZiFyqdm&kO2wkzdJYAJ7q_FwoP|i+MlK7mZ+&%`N>Sc&^J5ziY;MH zZ9R32g>21B_&#Dg>v=^1T?u{4+fr5I3wvo8S)vqULmG8(Kqi;r|mc05O6In60Nv|M(~-aY77~dz&30N2M5mlX+?fG6T!()phU|YgpQi0c(y8;nghk>Z=od@mqQR2V` z6NIEHjVaY-IAu!{!ltg;>N-=HfS$PSoWP@WImCY@JDW#uiiWTs{4z6Dp{^)hgxwt= zGN9+rznE>mv>^Qz*rEd4&Oax5f?sk1AV}I5VOVj0}sfW zM-}XM2rd_t!BqGQU#7;LlKg5YI{$26;Zbn8H5>%;lJ&g#%#KWsqgQJCJQGj(=^uo1 zV<&1(96dCw^?O!KZCZFI5#WX3uFf8tUVY2Lx?o%#&|C6wk{LAIxXxcW&eQFMCx?fK zZHYWY3N*xh*$l$4hct<@)AKlV4ztiG)5(-7;Dxrnj9wp9mwu69|vQ+77I0RjWs6lr_~(~1ekL?*lu zEb==-N_#|d($U*AhP)ia9iae9_6D9tbVnF1l7!H93s{6>&L?t_WXAGLzI(Pr{cq2C z^pHk8cnU+0=N4~Fw;j9aIIAQXgz;%&g(Ue*BgP|yNbM)OG+JR5&B>e_zeXPWPTtG^ zeTyMIP0h&TW6#7M(ffg%h2TbK7~$cgEXt}kOU7}9(PES-aKLbBEvAT$5JNc&Ul#$>!CBX*jBn{;?YRZ(MKd%c$q%K7>E>dwvz#Q301GF!J{E9^`2`CB$) ziw`OrXKr=*qq?5=W;Uz=?ssIX6)-&ze(A2RvRS-*fkJT3j|}&ENy75pgfWwIVOByz zZ7p(`SET0T^soe8_1e{jSnDn8SA>UjDFk3?RGj24D+c?^HRzI1;+pAIeJgn!wmeyq zU1M7$ZXf;M)aMs;-(de7%PnQ?DSOy$pa%ds`yr>kqc>mz{sGz(>*nZme3&4<1CYkN z(20A6v%Bp)Iz|~LZR{*WAD7-4HgptKro`;5(gMN>qD}$g*Mef*Ih;sX4mGvEh!LZ( z-e@dx<<7^l?ANej3FIQStH}z!C-B&U-#-&{sg+~>iTiIuRT=UQ5j~7FVADEqB_RC77DGq(ckU;~)&8H7!&{&1Nvl?~T`J@ycY|&h-es6dIg|23q+^AL&?h9*?fVA&RlQ|J1G-9RU{*rXW ziU|GcEPH9;;(dpL2W&w~lrog9rK~f`F1abSJ4$-~aSUsFlti&X7xu1Muk=d8ZbED8 zA}W#OjL^UboP)c9udZB|NvKmP@F}^JdUdp(f`Qb{t!`~jdovx<=|G5{xF0f|nO2I% z>RI>&y>iCCOAoPjdKu>wHUYT;>4p&&A1A)|I&B2@u66uDZ1r4gNu*k7bcN;mY}Q64 zXC-HhrZ5{DO=M(iOI5p$rfI z0k&l8vXDwX8P!fynY3_$g$fjM=)*=wTY=qMHtT58JHmAa`-Lmlvi7dv?NipM%f*s6 z5F`ka)Htae+Y3p!{9)mCF$F0?*oTP@doM@O)V)il{u`b|(Q#(!aWLNx8J5}dH@(aX z5`AG2SyftG40Q4^7B8_MmY2JI1vXc=X#et_a|Eo^{7Cv8V&BKJH|sF$&9E+nY(skQ z$F# zqlVn~LuO9jbg&SyP_WWg%pkU-fej0;5Y8{FQW9A2@Xc%({85=(RW)c})b#7dv>Gz1 zCC<*~`ULC@MNi&Y8-pArn=%>j#-J>J_Ig7}#c{qoJmhm3Q54a$2^@UEiuUe>;1)!SQ;Ysq27m7VJ@O4g{t>LY~X2qp~W310o!i=WMsg~p`!EV zCmAr6<9Jdof-#XE*5Ge+9xbwdZZl3xDI(*B+$QgXIy$Q;LvxH!G_-dz=<=jx=_icE zDxJV$%xlj?Beq{-Tes(L@jG)JRr>c`quFuBNg0Kh}cDy6pE|4xrQF<2Je3o~Ev0+aWt&_a)7eB*wdn(u~iz%NS zyMcM5A6ut6yg9`F=9S|MiENt(DhBmQS|-$urFD_PE&`#OG}-{A17n)?Ga<;?fcUt- zZ#C3zB~YKYGl&`z`a)ek*el1>y~FnY+p4{9g_V21ML>drRbB+Vj-har$L3W`Jo?3` zpftvkza5W?@rl=>q*0enrmO9tqmLGLKA9?y>(z#4%+dm|z8vzT$`yznn*>cfgr_Xq|coWRyPK}_sF4>UD>^(uYe*CMS>TBKX;(9Dbc zwBO-zR3aN-L?=A>{WWz|yyaRa^JMEIuP$rL>TrgL=hs5QS(XWvmw7fG-i$9lmW@l< zkYzo=N4^L5&gJ&b^>)C_n1saZB9$DYkPSanjISM0%G+v9dAh7@MJH)BC!+t3%(c|f zLwIu31*GB6!0tEDFg^kt82n~im-M%G>3{sDrHY4sCEC3tvi9{uSQjXzRrDmlWJ97e zDkf$DaA^?Cv^-oLKzrDF_QzcY^HYxn+@CBiGahuDMnvSs&Qrji!XRke{%_=+f`^WW z?@yDgu1z8+kFQAfU8vCdCO4Z3e3`v;J?6QRSDrGY zB|^HNPEE-n|1G{>NDYnjerUWy@dTy!H-Tq&eLLJ#*PCtYznfS*-9A@=_8hT|s;|!g z?bM$!vvOjrqKaB9^fcJbTj#ARYH1+~`4nrb6+5q#0?k9a*SP2b;u6eC*;a_S+PHyU z79D5niAGjEuXWsV78!*iChLPYiDd+uL4o1ni>uwx%<=691wKK(XWv4j(GXF4NaoBp z7p}3P;>eNhQSh4ezXfdI=gjOBt>-sT;5Wm1AK829LIF*LMs+*vQAF5gu3{kv!gNX5 zyL0taWL&aY+Syxt&d-dVA>5CVf1kLodV0g7g{V z4PQA&;JbZf+soz-aY94*{;7?2uC||ujRs(q+VPi8Z2^h*Q=X853-(#({~SKBwgy&f zLN)b!!%^eMl$dSuSF`+4tsi%)Sg9hj3;6Lr6`&LGz<6ya?O#KV-*zC&bqKy;^ zFO?^hJURmG&mai*nuRXfMkL@fV(aBEyFzhe2BtTOk)2@Ns;Q~r#FsbwVft1QVzV6- z3C&x!=}}cGPHyfC{Ifrwp+BYkv$Q@TSqR6O)#NX%nEMy5=*L&E!sx+p6!KoYgAVTj zY3_smOKF`z@rF;bT4h>Os(xl}jCvQ&p@fw0hghuDQl9QsslAT9|FGkE{}8djWC>ds z^OflIAJMS)Q76zWTKvhD*6;tM{0ynlG7N^nrp77hEjq$ovCBTnc(s_1)Vu0=)fpIn zuj%|6q)Si@As;SML7KW)iFQ>%wMo_@%PhL1l~jb&%Hjib$=w26etF zwdysNj%QT*%0(Bs+LQ7$Hc!+ z!d=`laz0uw(fS@>q8}r!hF?}%3U;Bo^lJYZ*)+yyjHg%A(Si6r!91TIgb;b9TkT+Z z$KCc`Q(MJJC_j>S>e?v|qZkye19iYWR=;I&Ts6-xRc}pX2T*1Yb@F zzFh4h3%3-XEBg$m4v!M5LQO*h3kK{F)BLK{$28Ew7<1u|AwFfkgv!xxM_SylLcT|` zLU-xp2t@(f)hO@-78@I%hoK&U!<>F7gDdSNw2~{WNN++lZwr6Uq#AH+a?Z|tYd3?h zig&7ZzxNsO$@%Q&GplQ8NXy6|=;-K_YO+3vu$b+|d8rT3 zJ6h+!Vnm#5a;!2dbac$=)m0^cnS&X>p2c29rXR5=bwZ`rG_-?KH)2T7#yo;6tzw&J zYFQ720s~bc_>*pSQa-o{7gy$|qZ-jNcY@ae&sa{d;`6S-`Dpa)xNr9-Yf^Y=DKq8g zeHyT4T&N4QD6w&I+#f#)y+`?T#x?k4>u+hK;+Pt8)3q2pr}-N#WsKqF3m0LE00|o# zv{h!cig~bUWsLP;#N=P}cIH@Lzi}NlfeW`x999aeS6~>{Z14=nI^8Ga(LA!I_WLfQ zQL@ny@_@bI>BU6_fM5WMi%~$}M^!j>R_U4#oXgAw44;gh?BW^vnOfbf8@et-dQqNb za_}Z6q-B}C{;q$X$8XW7=ZDdkCuiy#7PX>%wIW2ECa%n1V&b1YX~e`}OJ-vLY7d5| z)yWHgza?8r@xf2UG-KbUR_7lCAp``dh{`1zT2O{TPQP*iTO#f&`@DMlDHrOJ?eTy( z@*3Z%S_Ch2)1Z+>?Ts`6?<^&(kTYrsE&vTvp^UwKeIw)Ji8WY4MYdqJ0b@DEKk#xl zH#dXlEv{hsYF1*(4_#o&3IEW17@F-5HgsR9%GJu%!H+ao;L$ZZ?_ZjWS+tV< z)7Xnb=dT>bAru=pr;3}>zo8m#C;cHI49K+-6?ed^Rf49D&nQGY4fkz>Z-rOMaLUXv zjX50r8MXo$9dRP>Qhaz?RC{Hx5dz~@&uG@Z-uj*WhIi;cvH1G;nooN$!tF(~!vW}L z0d$r2^*U1p;p#S5y{vZ0_Pl%OP23-#;T0FB>NMoUTO*1ni_BWG6*#}Rz(M%(=Z|fq z{2BtakPu04K35u)7(Ez`GJ;&7G{>U2CjSlPQIh7egNCD+vP(5q-}5Iujx2}EC|3|y zd`Ak?_)n5oF8Q1Nj0O+{0*gY0Ru!$F;G#kQ&(AZIZ7aE zkxPvq)dudinz;!bzI`be1Y^wHUs@e~!O5$2!JqJOEkCZMsrNHUdlTXn6cu~znl;|N z3jrT>X(_UVR(4=e(8Ms?Y3hZ&`%CEHOMj#nFT@E^@zM&h5zvv~K{Ls3^Mkr+`HMj1 zWZ5Uh5@8dO_i~QAD}DV1T$211Bj^n~8(cWR-~*rv;wU**cmOpeq(X?MS0?4Jw5{!4bHz`+pDBc;-Ciopjh^3TC5N{aqwA~-{0M(T& zN624!^%2ws~(Um6qF*h|k!!_DJ$RMjm@%>tniw z$*j-V0t~86lFq_n2+#yI{qc)pZ z@3sjlmCsK~5~lhi(5xJOkjM|{+~^_a0&e{LxvOq3!;h`?Q7MYX zsA&F`w_7B3kYI(w@GnQ&HzDT~`po%%;dD>afgo>yZ8-DzWki!`5^Hk_7Bz&1B8ucw0e z#py+V+s_h4YVmRKucTp#+2F^i4oo3-6{FlN8gP+*~o6DvxzAL)&xuT&-jif?CES9Jq}DCLriaQ5sNIw4B&GN-r&ppfJ3BAk+S z)B&L?ps%C_$|Rs8tZ`b13U}#Ng^v7n38hY?w=(odjZ{gE<)n~Tv-c(m!?-<|LOa`aqKoz#M6u!8T z{s2cWlJ%{3YWIJonM|%8EGF;=Zxh%UQw&^5iVT!bcGh&| zT+tg3gg01PN`gs3Dsde?3yAXdO0N)t{DfJMUDUDlF*q8sk{z4w#qw2YFNJD}oF!o^ zRT1*+@MxM+))Qg;iI5T!69Xr9Id0^~CPWVt4wefe1xU#|Nsho$u^Vk{Mo^JKY&I#_ zu=VixX!d))UQrH)n5+vLV+^`l+8aD;7yw(h>8gwN!C$038M+%dtx*}%^leRaI3GiA~Rk45n zs7lzfk(YYK8g?SZZRV1r9=7dF8%7&%?1Rm?_2hMP!oOvjV`3Zx_HRkX7n0CHcj3Qy zi$yApIQYsD@Vf-c2Nyf&*3+UzcJ6>}usPrZ3Jmi{? zbi*dBBT#DJ*ZP~qzae4+2b+ij%d8PFU4oFW0;T8XR;$(k-3Ab*$pcvfC9d52+H#xX z69&q@cST4kf*m<$-;C?L*beon27BdGZ@7+#iHSda_yCioJQR#UHf_mwbKSPnronDL z83H8Fpb49{TzO>~&?8}LO8@U|$aKd)X8-+f+c{Fdi*sVreU?@jC!sKAwMaCoDBjpD zFA?9FAgm&?2VUP7>^p5#9`zk?3!yK7Z@NGUlU_h9cyUo1+_0c21XGc!p5F7qJrqpL zE91)&uV0iwBM1f)UtpV^?uI1GOI4Y*JKVWJ96$J0ZuheNAB{z!9ExLY$18xiRVF967%CnHGk*T3Rv#ejE%h&7Ljp*v&`UGpVfYAj3 z2?>{yGTPgcSI`0#ucSF=&Ycd6>a947BsMZCYOk$8OzU6>N=`S|#TO_E2y zxH{k4$r`cs75y#X-V)dpSliHA55t|@{gTH&A2{}5U|!I#!T~1Qk5(pthaXu<7n|E* zroX?RI-J(r2@50Y_!{H|NJ~j??Z~aQ&XF}hQn?ai>5zMgd;3ecZr%TT=m5o_l!=c49}*9^7oLju zphoLfC0kqqxi+VQ(H6u!wY1_O3_lx6e^C?-_LTzS($dyeWRLt@lWU%%#CZQ?gC%%3 zDg>orF^VV)S$fr%iS=QKWv-+_AqPxwBN9dGQ4}LH`uf)f@$^914@xunu`nw>n?YOR zuWHwaU+#gi$#gK9vM0Hpj-=@a==E2^pu8OYf`nPPdVwIC*6BeQiyA(DJ+>x~_gX zPw7B5wM&`*YDxnpLYgAZLppWbyt1~07eP>UvL$3h-(4^hExY^PJ!9ldotP0VCd?J! zjKBn*9HA|VjeWNq`gsR4k-`ESk-$RZSaQ52&Zi*_OYFwa&kqJPZefv;nHkPCC|o34 z+E3=E@*xfRNCR-by|ezIP(y_(;m|HI)v`wL$$^zAheg{NXD-utFGXNIj>6oZn29d4 zZM?QW7ibuegS6?Uck%RKfOyUpTw8nZYMlB+C)8l^jXmR23~&4vNmSsm^wle~;cd zkw!PsCV#prOsc-!ey)|k`$~~ly&K*lhy*-p_TQLRrq0Mz@$iY1^z~OfqD(CGjCc&I zUgH&Xis_U7U#$j(ac5}^T-Y`FtGKB!g&bmzP=ZTZfZvFt;6i+_r^vwGUkf-&RZ7|t#)y%@$Os+$&iw9vNeJr`z5kJ zb5mcXdSzT5a_ifk`9jUMJF2sPD@t5YL zn8y+B+*Y}osQJTe*sa`$95jDwu&%AFrpDrExoJCx3r3WeGMvkh*X+Xwzm5(OICyw4 zS;~}Y=5zSKPGr27kJWd6QKFIcNb&t$O*_}ydbu!j2y!|D&CMI!YFD&qMZ7CkUgLI% zPv%k3=S-ihQuRw_4frqx^b4NoO9XNN{n9{i!5S`5CdP@mMb-a1JsP`bV&lFy$aqx6 z7!D2&JP@8iM19_lY2B=R{ckFWz)=1CyUkb*kBmrGX|?a6M-^FKuLkGWxU9ha(x~(# zGzK@Fv~<9q%Z=MdecJ~HNPcA{ddO@vwV&^|?QjE0Y*lt-i6&~8ZY8vpx`BB*{hW9CVm~h z)i0m7Ha0N{i;9xPmlcXC&d-O-nAnxoo^sV)atG=Yu>2=qm3g>DSnt#%jj zyrPefm}1d)3OaF9{Wd{ry!K_eR9^&mf9m@XkIiyA@cFG?tm}h|hKKS%EfvZY&x`l_ z6x=eRrw>XXh!Ifh3i18V?V5GdP1!1nC-2VLt8-$xUu58u8wQYik3Zt^jj_c2zZlh= z8$_6ijd$N&Zku)LOmAi9ai3?@OL>CdF>A$$f}cI}ocB|#8PvP+9ZZCE|r3f*?FF28*htgqf~MXw_J`x(~A*DNHY zr-#p54_NYjE@KzjhS=MmM#dbwo6EmILOQ)zFlzGuHup;dCs!_mBwB!%e1xCp>tf`X z<-k0jUxn3h?3)_7B*I8mhS*^lHzTHS+UJ$SfB!zm+5kA|%a<>v&P{kIq0*K2`xuk9 z%ussBX6N;<0x(Yg{p+k%rORJ%0yg5L7hF3F_9&quDSzQgi)33VsIJ#$GqtcN&}8M7 z9W+|#UoV-bh2Vl8-BA(;2Z!5+&e8<>K24USrSE6u#}28-E!F+VH>v1V&B+i}sEDB^ z3JMCFehYSy`a#z*1IqkaPJzeM(DBd#FSqw*NntVDYYWLLa3R6Do^1|*6rK-!q@dxC zqhk`?9*LAK$brwEu$Pd40Y9ao?78LEVlpj;pk&#szXquZIawm1jJ+c|+B?pEYo~h! z5_BXWsy1bK4*cv#Lv2Q)4m^=)9o^TUHzZ*Q-5 zn{(NNyX*{F;jKj;8fu`%hlPNrbL31EQfRtlYw_vzb;`nK8l}=}kVp)EGm(W-C;!I! z7(J%}c$G&|LP8+MShw%}#TR*@j6?_N0ckxzvZvi>iGxPSCSkuc(|LwmUJnnWIe09& zaw8ZKA7A_=2p3!vHeF**Eg)3)F2g}H9ozHIv309e$4uf!N zWW)Z(RlAf7FYr_EJGZe=W!Pi#H}!3NJ8<@4J4F89)bf$o1D^b&NU19F{v2v0W}IY5 z#3@Th7t92YmgGFO z$vcsNF?-5;C5~Lj$niK%0TN$YQBeS#DrRHJI207@G3)D%`5s3`t+~}vU4-*Z;?!cS zcm6TFTwJl=zDdLdML0qP~Ik#=ak;D)u(xY@5iZ@}IX7@RX zvf`tjT)KtUW?L&R$pnVYSQY{c@%FYUE*{>Oz5NMDw`$dNUa7=lz5O91Ju>z771Ei`DYNk4Z2&B>tPC`% z=&hlIGE9ffIT8kcMPM*+^x~@Txlyw#Y;(m%nw68rC;Eu!oWxx`7a!OY_&5 zP;-FrVbyzJ8k%yY;iE z1_;xg#OB;w>Q-q|e0;vMI(J&VBs)3Rzb?Pl*04_Fv{JtbnsgIcv5Eg${y9A@VP;kY zrG#Uad7b`_O6si-Hp1z9qhhy9+|Bs!_VZV*7>hRJ3IQDY1B}c9IJvmUim22=F5CfX z(+nb$W$*8OL(% zjnoI8wEg2_5N{g-2ARapiT$fp|NM5+6jr~E#+vxrgC8W(rj#C8(V_c*Tc>Zk70N8?rtmAXRdZTX?SjISp;)VMl%fb6LnS4PBJURHhL8x*54=m*;S+2-KVh z_h-m0*8d<}I5FIRqzs|~(P(Wfk$gHAY^PvUSRA*+S`Db*5T!>LO|WBdzQ@}yafl;A z_!1k74e;;h>mGE7j!cd9_3Fxgr^6MTrn5roa9xf&iXLjosT2w0GdLN>B`z|ybs6)` zF1j0muzaY2-|QOwX3GYnvq1TE7S8(PdG7mk?HiguOyRcD<1{7u>PRkxv*Q%*)tVPC zH#axT_V#wI)huJS@4s6eCg>#5M=PiBSq?O+<}s@SIk(dbWXg8Q+=vKKduFTtOT?IRq!m%hl2}3eIW#J^ntC#&fPd_|5Dr#uZ zxJpMwL5W*fiD1_SXxsM596%PC9y>NlZBNcez<{BIC5_9FIRW3d6Fp4S^Zh4j;y?Yx5!Aj1ue6e_onyp2_>*ciMWJamoABH-l>5V$6fo!}zNTux>On*C_f6IWKn$7v4#=&+`fNw#CxC5{5c9m-%{Q;G9*m?^XmvYp*ie{6mYBhOffO`9>5Gdxe-No^(P5!yXiV- zeSpndU;p3_lCqSP28`>51DoVsk7!iD=geX0WW`1NoPjhF&(J?$kV@;ovzz8GC6PrO zD$I>t9ZqIL{`2=YoyDkzS~5+z(S8Y9b@(tvh@@_#0>`;1QhrZQ&$-)oUwk7TQmT~D zYi_zY>C2!a+Bt8IlsA+K6y)Tfp?Z;}ym$4Id%j@R6D>SjSN~8#`T5tln;Nw_S3p)o zJj53T&vyZol%7Lnz-q6~U34@x2I&rSbHzsXWyV!bSi`V?N#00NV zKRJ={)2OI*C{vDCJm9_mou_oydf#7JiD!c|yfkM+FC{GvHh-sIU1y-n$>~LRlqp*@ z7STh%R{81g-+O`B%}fREt)3XbCuy`l*WM4=i|pWh|8a79=Y=3CL9i9WI!M(WRTt{* z`X|Yp96U{(3g$1WJM4yk%ay#1jU`u5KQy+TL2W~VI!5ML6zr0$3Q-NZr;ZmNR8(>~ zkgY|tIm@W^TQ~Wzna2>I4y5uS5Od=S#87R%tYTfw9oIYc$?_=6ny*4C4=^I9 z8zEHrS{0y?iyM(P`)$>D|H-YU)n_JC!8@=K<24u=(&o;}^B+}Z?>F4c*o?d3<&#K& zhq9CKTG*c8uY@Gl7gEH#AlSk}Ic{Q>8Bxn*C3bn-CA_i_#yumRKC(@mv*Rn2%~kQy zg*{WQID)LS$Hr&_M{d?wt0H{Jip#;<^`OMKa zjksF_q20&z}Sar`FJS$q#4~ zzhh`aF`=+5jkaFFvIoC+I}(ajnUT@Zzy#!P;6AgHsKohStG3*}tx?RbVQ7oA8#78q_m7=#!r`GckPt&uRG36W^ci*S zm!~^!iOb`CVO6O-`1S9l<2icCtlRR`%eH#~GMrX><*wv`{2PF#oV{&ePXRb;pjgOi zYcD4L(laa|(0G|67bD#ksrAZ3-D+@YCC0LmmNX>FBx&TCU&P744SIu--f-M)Q!x|x z7EeM=Ev_T($AL3w1N7$vhfKK_3}#RW7&Y`gk6d3P1$@@V+~= zgCVAFv%X5>mmmw=yyZLjTmy;?#;L>4A&GwGg+4Eg&8Wab3QO33iDMPTm&Y6!%g{xsgWjnvE{siPwoC!vt_!0ZVS!P2di^89R~|ft)h<`p6sngI1(SLd+Ush1}qA@z8SwPSnpBen_M?w(}?QpW4d zs1ahJ%uh}22i8OyH~&2N^QW-2m84-QQn4t$XlHB0R+J9Cp}t4tg|0289qY&Z`D1!r z=hL4zAGD%r-}v10QJoKo{{!aV=y75lIJ*WuKsN)LrNigf%nWxm`RA|eOCO^DlFy8u z`Dx@7yb$y_rw8nKW+r)a8>(u~zpPB8d4js+_#&)?w9aGyPE1xt^bm6*Gg*56nT!KYs%C zoz< z1pcJ{H(!%m?uF=A-$JIUe~X-fiwC@BfV|LQII=pIm6MyqzCEOYcFdDyH`ecrrMyq{ zjbZ&k_4ZF}+t;-(1{*1`TVX;Y( zC!N=nplt+Tuk!sKch1ADm*A^s@fxrHnQ-PF>Bw1X`_<*82NRzlyQQHw_S=Cm7|ns* zO}AAIHsqMp+k{jk&}Ps>@&RTF9NM6!015&?@Ei7m9k|phvWw$I+fYJwffuim_-8h0 z-faFgjRfZpxIfM^)*gaExNr!7FiAuyC9whYz5(`jJg+1^pHj&b?76%AZSl8rD&#OU?jYf(7#O|*yAp?il#x+=?-^WONt#?`WSJ~3KBAS62^L3L z7~Tp70+|K^H??Tuz6@b3l5EhZUR;`)*-ypQ)ye`}k)ff)HrlT<)RH;e@;F%e`wlpy zfjB@SPj$RyYR0R_z4&K#VP&TD({ZviOurG&W*12Ma=$&+I zk4q2HRod9tnDuo5ua8H+5$hV&(q9)41nXoZwYA8~%MlP{+z?bHy>MHmMW!cEDOIz8 zM@1C_Qcm02NDF3$fhYjbm77fqhFkSx92r+znOFuhGbY{H!Q(+U@{o8LX=!+nVbec2 z_eu>HOkYX6ZAjT3#{NfnDz_-#AbXuJ7+} zJ#H^NI`W^h@yax1k&i%_XiXwfXs>km>htoK<3il&!YL;9PY8Z!CY2NLO1$4yb}UUYWV?cY{;~{ z+>-w~=^+nbk?&@S_#?}wjUJ@cJM`96)C zNE#?duX}Ap#T#YTGkgsHKL4vE&Vq6uc)$97J>v0}gtrCb{v~LmT#0owj*@<;N~#(Cg^h6O}1OQKhB5>>M{B;6KUrK8QfR@;B-H~1WgKqmV`F1rWdx6r=w~Mn4s^Fe3->LdQNgb*1u-vvr{Bu|qm`l{ ztRB~)`Q$F6CR3zdXE{R)I2h0=Z2_M+&w=o2>R5H@-fIy#qx>$edR=_k=W`ZS)ZN|v zlc=H!cH@Y%;8-*uP{OL0U9kSdc!%%P_T&q*P{N&MW@np%SX&Nq{!Y6~NRpn%HY>k$ z8A+8CHOEX&U?M&eF1;e@=(BmQzCIq@;yT_ue>!<1P!k+BSG_42?IQIHLde*OX(17W{d_!|3PC2WZ8W-ko9$wu9B@STU}jUXubk)_kj)r_<%Q^h0SV8 zBf>qXxZ_QD(w>FOEG%K*lP7tMMk&WJA7ALFb6wg#No=Ug>9KqHHV)nv?w1ugwIw%z z)xq>V{rl2(r3EKpq#qtjgo}NMm+JBMe>kXBpCv@loy_zp48PJh{6{||w zeC^^H{{B+5bOt=_qGW~?AHlVn!ar;3gv}s)>tc&tk$~Gdd2rqRBr1N>gXMnIv;gp( ziAbu17tJe zW6ftk^LhD?0U*PHMN73JL$&;yb={U@tGO%u@n1%$oUy&V>eZLqQseE`sN=3zuU?su z?ZYET(dL`teWXX3KUgaeyAwr#6uz`1p~%QKnyH^pd9c`75&@Eww9xD8Ybt5&=ElZh zhXl&=ZG9Hre8Ja&BMOOF%Pj@10hE#>DO!*5d+H_%k6N;WR5C$icL z7de?lVlA3(Sc!aAXGl_HDE~3LkNN8W6EZEE z(EWgttl#DIU5q^2{o?f09`Hko@89QCikvaODag++UiaL*{e=o>-Gt<1Ib-8Zp&ag2 zYy?=dK+NvYXJnL1@WbAhdcx`oWV5`FuzA+LJo5B^J1&3dJ?wD$ZUBk*`w#hT2;cW>lq$vYRc($+sO3aeW0;&miM z;)elh4H`4vGP`iC3I;K;>>mQKDQNK;-?=jM!4FLrp1-g^3GMG{`nft9kCYLhFf&qP z0zYiHuax|7JLS9kbM2o1XZOQ-W@N9(#W=6m7TFpwQY3+|%>xJL^`N_|i_u^JrEwLQ zEuOW<($b(Z=68$bgf4W44t|d|AQ&D=3_;fSY5Ljn5mTTZuvJ-=@>ze5$6F$$xzh-K zai{f2_~j5D#Z#-Rn^dFtM*|Ugo#_Z}vyQ{gnC1Ih zR3H)kG)=3>lWjV%%&zfI5AA=%^%(aFowo`c9Nad)M$JM_gYudCWf<+V1Pu|55PFbW zjHacw9T9~T-A;~QDC$SIgDIAhMB}Rk*6VHUW_;Rx)qRTr!qe{?J5RhW_b!aQ{*z)5 z&^hhO6Y*syW=gh4JddJ>haGsNF!N<=ql3wVxdhI3k1SRZ?+kfXmDTWBI5^CKVg#t# z^=mEs_vCOX2_;wj-9hi!+)M=28Q$KVJ_2juS;j!Um&75M1fMWK0-&i6Z~g74@+qN4_?# z4zd3%XFKF9LS^U!*Yw<+jJvxaps47)KA964$|b#PQJP13^ZH=ahBj9(Y!t4#mr_4S zlsWlYN<`*mABtYOWK2^EXt9>G?K%oWSWFOr66M{6e)*Re(nLiD5E2H&FFM(eKVB>O zEoG^jAIN#0+9fJINlHn2Y)%B)`uc}L`U@xB+=Z)PVPPxvTOHM9+CyriV`7GO9A{Qn zqh>70Q);i6q4*6FsdKu2R@8q%Q)XrJ$0kn_=pfNoSH9S?aUqnSL-ClD?f)#+k#IKd zwY?PP(OTSEf=#&KI%C!a(u98zt$C@N~du85*FDiT3oYUO~Db!btY56#J~^- zWYI8|%8!H-btN!dfmL}l_YfW)r{c?dq2=p-yo>CdoEY^odRkh403Zo<7|{!(+xdfb zeNsrr7*DoKdujB(GhjdVCVg>iuby{j`4EU7wt~s*)}I##|9AF&U|%fdOoi0_XWSr` z!(*f*>})DX*riT!lM2|EdA!0ajR=PRplznLd%}U#oo#hpdG)*Fo}vv{GI;{=D<&qR zpkOL+y$Bf%%^sZt=>XboY-}u=;W&mX6R5;$7B1Kv!nbCL;x_S}BS3HK6(>*W5eP8J zIzUCEiIv3A$`KxIrFCUbbxh2{63NDa!wh^WD+YP>@Ro+2$USByoTfr0M555U*0e!BJkWlHo^^){xcQfJY`zN%Z zGR%_iF<_pLtG%p_>EGLe=ptibSuEju`y?tBK^0=;wO=5#Em&5}PeSj&4#}ex{U3od z8??X7_O8+TAQ4e#pCg&WpRe=viC1geAVIW$V8ZL~h1WqiYm#E6R>i}oqv_?}_K+4C zl%n4IPbXp8z*htch@rr1Euu$)OFb281rBIl8a}&sVvZ@$!v(m;kg#PSW>U8REg5V<08 z5dT6a$vaJ?jTRXWsEmL-d~~11f0vG`kY~penLH5A8L_s9~Oy`WxKopRO2NgL?7{QGJb$9^*H6dnfrNcrA z85xGCE>|^IOQ;p<9j>SNgcYQ$NK>|TKp^r-!+vij&ExOcoS*Uk%fLkI}%9{XzLNL;(e$g z^7wal#cj=-S4(B$ov#?x;O6(5c(2rV#1t93tu(0<=ILbCu+vEUGnOl2U_-FzvUhXt zesxdLoLa}W5pH!`V_TL+oSzE%6vp3&8h{puMn^LW3zI_Pw}pNKakj_ga^GRhKanU* zrsl*~8YWHcBk>C2KT19mt$=2b=X%8nYfAh{kUSSUQK)&HpIn1bNybw8DVN>nyq04094a+TW9=SAh(aWOyj}0vQ-7y41n*W0Qz!& zzje-UFgI0E4DN645V+F}ES(iM)!`rt27z>1vhUtwv9q&-Z`++gG}EbaP&yU)(4jq@ z>P2t=tV3jYcrQ5I>gu!!mawAT1#Fjs*E)|&>*2-@y9t##osV?f#dE-r3RF4Zb^_uz z`@vuGC1l4Bh7PxK>vrU$qSxqjgwtSPvg5d58ff5D3A64JLKvqytARVnufB@TLC3|rgP|9iu zm&^JO2}k`bl2qJ> zyX;k!`eE^*hG(OcYpe9P?4is0=t=N{-2)#gZUVecY8!%0qr`P?+TGn}otb?a6-Hf^ zASdR>^{ocNn2<0z$8SnE7>oLQ{Oqnkz9Qrl3^+DNN5>V`BUt#hXMsPnoTl~g`x}OQ z0q-xNp`j$NQ%1gR5fBg)ht3`V4h)xwD5SL+4yI&Q_U&5&P|X_hhtIz;hI^HjN15zO z@+pXH9_}P(8r9Q_i|2@XUY$;S@<{;uMLrD1*oZx2J%s-WivpO+^1%JNxoJ!&BQF_* zQ!#rqUHyLq;|k`lW#myU-w?nra+cZcIV*e!vFQO#ri;(4+NT+6S=t&lV;C25yg7(poP5 zefwCanF@G$5b~kj`I-N7XExA`wKlv1H%sTLUm?Np#cW&%o^@AW{jqPokR7kyW^*il zqVvC3X(6ZB(m=43b{2;pwgDC!SJ4RzKPyya)W{cz=Pt4`DpTIJulBGP7_ZLab-eBe zM-g`OkV;~9-$F=>@U(Q!_ zE6zVx3a3ymg&>UMCGH5#X6aFqhFc+M9m5Uv2|Ae(L!+;m1o&~@r6VQqNmy8vi1_e1 zI?Mn2lW7M$g4|+8JX~Dsyxs%eQD7XqUF)M1!Fve>hCL8vR6qKrNIh@AT&DSi5WkaM zkgq3G*)wrF>QyAfJoBY{qAF1SR~obv0-^)y1p$5*Y>_&{D{=zVpoc7gUuD$Mvt}@# z@01Hfry`lwZ~yp%e(MRYhyH4VcK3&~A&;Al5R0h(v`^2o^FUDp@8w2(fK*;?RaF$2 zhyi5(rMD6$Qk#NyG~PGQ<53M^<_imTQt?Zl@y*D~6wT&YTLBGKRj!Y?_9~L_)W}37 z$j{1CrEemK0h5!;(K|%vksSW!LFw2t11f!*`d!QezgvOcViyFEY`JycQ{>!^TW}l- zij}99S}sHvaK+Jw0qzaVOWLiDMP3@3n8Yh(=)t%$MbRDGoH((UB+2@wwzVK(6cQ9S zS^!3?R_*T8z!31a0%Yb{&xC@qr>seGG_uvx0_J8gJFoU}r@`DQu;*EA#AXirb!Pz` zk>Z;-;97Bv1LD*#YoT$OXYnLrhk+x2Ho5_+eV?ASbH}Ug&&>}5Ll6KD0IM;Bf3URj zmyoGR**Z|s+Lk}@GEwb^#^6)(1Lw${=_?Q1=AZ!@-q#mm29^NK1B5CNM}gjI@+mMP zkRCH8H5xji#*F`e+|DRS`!uV`1Daa^Bch35>O@pf#t!bG@}vWdNRQb z#b}w6^h$kznMv_Z2UH`%3zU(DhS95b*XpK9DXpCbi7nmbQGKAI_f;F(jZMZ5Wxr8W zTx@k>!V>+99V7nlhQR^ruhG>y9n>pT%bk!oWo!V9bHHW@ehM(opOW#>QJ=T|6EE;~ zp@ONRu{n6^=PhL9Odsp(`Y;}e;ALuIbhqddb0p19S@bMV!X*JICRjX{(sbK=im;AxOm6(Hcxf> zz&?S&McPNbJN!zS)v3F=AC0r)8=i_t&l}FpX9t7%9}%XA)<4fPQB4z(NZqlr@(w|K z7AboSD+@kq;sjN`=&1*S4VJ)@wsN5eboq|LWHZi!lrDqBwcQ}v{F1o(^N+2WY(dH# zK7eJL@3s!{5B13a5EQgKtYR>4yYBNF%&q7v&LGM1g}y}2 zD9rEJ2M_!og}S_DgF_lrQv{M88MVJSjFAivlSN!WE|U)o4S|6OKo-4fK2UTI9I&D7 z2c_>7t#)5Qrdl08)8%u*?Ws#a+!ITVeP80E0*yVmKTUwRAN2p8X+J#=@j)OV!J=%~ zi*h{=i%>R?VYA(S;K|nx2luqde zk&u#-PU#Nm#zLf}q(fS|JETEMM7q1{q5JORyzhs*?z(Hue3)?tp68r@?ES0FjYE;# zJ8S*c%$a2#m#02NUA5488%HbdH=$K^FbG~t&4(M<1~q1@bfm6Gq+-Q%QCy5-V;I}| z{-<>UdgGrxZDc*?ySWp_dVLkD7`kaZh(g1-=KFd7$l(@9v?&|MImWw#!3L%;hzvR(DLf5thd(=AJaPmZ?TM} z8N6VR>{s|a#P(A^FV`OT=M};hVz-*$<)gH_rB_^u@i}0=F-cFgn)8)(!?py;9W9B8 zq?f91hZnde%i*U&5D4VgGy*aOV|nV|BU>L36UvHG^D% zgNg=YjL_gu3DSHX4O)_th%2ZuxjN+2LQ_v~^@YHtVz0b(u0?TXrQGP9zxWuuB^Zx` z(47SX$w*wQi6=vWGm@8=*SB>Ik{AfR>r5&->L52m+n-b2&+?AIC$F+|ES@c!4wL~? z$P(R2xZs^U+i-L*$-|ia&qcfh`Die3?$al5+kO*ucju#&jztcEfm{ybUE8gjb#Klw zv84R93Dwmvx(#($Xd9KgI~W#>o&2dlEzGH^;qTpE@y4dIJf}LUP>|52y;X-^(d7Grm_sFIc+kN{N~Nj#WK=6K>11!o_Ock;B3iAP#l@H4xkF4;gc>MDRx4iL z$K1>JG~0pOQmJs5jeYQSmYf_wprETz~41jvX~m}LnwI<>wAk68!vm#nHz=e_tJ zUlH}pLti=v#F#?#rQaR?x-@h(XX)KkqH)t#%tz=qArb@x5VnxA4RiogOcyviWR_J# z8~=Zvjy}}!Yp=&>pjLkiVg1-dL|rjfwc-vA?B3`^Gt21-hP_E5Ya=Co<5iADy3Mzp zSv;e5m;ur;F}0d;8h!gK)*x)SW2w-gAkUEG#B~3=@@j=meYknxWar3I$x;~JLY;L1 zczPk14hm(2)5`X=`dqb}NsZH=j7_H2Su>{ECm8UWOvMgmpYC%#^Ez@A1sGMMe$gUw zg41;?Pdykk*ykc0LC~V^$|uel(su*xnzv}%vR)>3Pm=TI%S#WR4#-vRk}Az-$FN6T z*wq&;fUC+mfC|J6FhutEvYoK7@RUtOnrNid`)cA_UeZ1eA`eG!bT*iNwRj94=+8Yg zP?zNpe5ZI@FmJF3+`&LwQ`6DSMH$7Da&t!m02#ABS|&s5!On9-{^lh%CLVm13o3w@x?*0{j$2YfS`FCOMMYb#Nl?k;xSp>% zrBs}?>5F0f;AFleZaWc*zTCQV7i0)!?Zw$<58Rb{YmtLf8=W z(|Fk*g8g<)%HywxUwNhWEV}qjiWxTeZmkuf^Od8WTTK>eV(#&6oxl4T?$?L_4It$M zTYa$_J?zLS1n>>um?&S;yL{Np=phK!Ls-pl(863glYt!dR!BUnI9|z0pXX!1MXG9j zk|bCnctyjV$Q^xtcH+E0Yy_rAgTY+QxrK!gkfCc|Ri!Ojf~&D4IUGBOlG98;GAh|$ z>m_3zYjp$dy}YUPT|J?-8>LNFIzpW{uKZ<@)RN-G5O6IYdbKFFTOnNg*F34^7VP+o zYqYAFGGU?J@L~7%_CU*nyqTRb+n(T<7}ws-6S;Sf(NH6_zE9wEgFk)o;fgWQqoxHc zIWY#<^MRR%o9}qsv)Ru4^mD4W-hLbYY$Pn0)&B8zjr=vod`eDjkxEU>f@-^Np&-pj{PUTT)QtRhVPdzXu@)H5PnKF zdAh*iyjIW(INTdR3Gv+No_V&f+UgWHG|4DMezCbN@9217jTM+oGXC9Fmc81KjEYLS zoT!erPHKeL)LfMg7d$qgZF&NV)fXt8p}Xe|rd`49U!RIMLvS(lYJf_k4qhbpPGOQ0 zXTzF}_lTl9Iz=l?fyQw)uP$E30~LDOb8#9JM7KR18|hgkPr{%It_i%_t?Pg|3_+^9 z*_~qSs_StSYiT`VBk7P}{dd`fMMy zkD^>o%eM7EHzr7)hU>a~f?HtYqowS8ezhTv39lyv_#dWh^Kr88-lA|?yp=*R>iL;8^GW6K*H~d)-K6R$332i7U{uRdFOxP~ zTSkgSK+j=b-`%Ni#8xB4K8p#S9ut@pPp7wwDuBsF{)XOR5e!T7Fym-#tO7*Dm`EE2 zMXpMnN6pxJw@R=eNE_CP)?>}N#0zpF@su*x5knr`mZkA(e+@52L1!Kf-0d@&FOw&nxbi zRp@;TFenf6m?QU$iVP_0aW>x)lcHxr&2+B6JdSs2>4^EKc4!n3>)9;%UTqdCOS&B{ zr!Nk8>7b?~G!Sc3!$t{v!Q}k0cnI!f@(}>z^TSyLFh=lFz`zT^-3WRns3*s)8}Fs0 zq&!Bu0?LwE2PR3P)W~&1txQj!h!yQ8&vAa@+{t|-IfgsXn*B08dOSA?T;1W}z~J%C zVr?z&KHL6E-Yj(eC}{UKf5G1vq)aw|!HQtJ(B9_yAakF%PdSLJ`bRDS~jjcS!cPVBpBY6;$DGM5@H;&J@VDkhDT zp1VxDwa)KOXhy9sZIX|*DNb|C<5uO_dcAlLLR4VL$)T8eN#brd^5-hAVXgMjFXd{F zS_l?GC*cQloT(4YI&;YB3V$OCa)^v9@VxM_tX!smxR60@Pd*T5X*kb^qaL=S3_74{ z03%}PVD!u0=l2bAneU=s-7Kr=IkDJGeh`)&sL{1h-evAPDjYW19Khhx$)HGs15KhW z0gnLDr}lS}b2~Wn4|dgWeHHe|z$4C%RqHY~T^n+}-vJd&V5n zANnczHLdD%%9!&V`mnS9FEm8ycpmuf-S_CkrFdJjx)_~wNAVam#B6K|2RBboPsODE zWd|v3!ni<0u$I-2a^dB6a93I9I5XS!nGoFgVcyIjet1GZ72U*&g;x=9%17*Qa=U-R=pI>0s$XT;wmZEh; z4VfZg6Vs8Kt2Qa1IU&& z9LMc7Y`fS_j|c1aVJ%AC{%B9&u+F4wW694d%0Hy_EYAd@aJ%mgp@j*1q~Hyec2*TFFjZ8ZY*ZZ$l-069KK;)9 zr;AH*(v%R)h`jEo+PmFhdiIsF`(>4(*4(t1is!Ks=gi01G6iHzZ?!xplHH$(c1HzC zUBF2(8(jeNz1q_XLLnoEhX0XVijfa{EqBp8^GWv&wPP5I_Z+l|LZl z9U3kRMI_$Ev7~hZ3AYPAP^e?4-%IDR;Ot_#-t(3CTla#K_&tkeDLS_48@**C(HfWfT8j5N0-~kB((SJ4{?zliW9=G;K zt#)QfE*`?njENf8ik)tr`y#;z@B)jE-D2dEXtLmU*|wtG<&HjsTZhZv`eF;>zjvyN zrYDCc)4${zv3XGPq6>=q4TgmeuUIH9A2dDb`FzdIDc5%8PWj6fP0nY3YwqgaRh@z5 z1_QO7j+fKjn-4`mK!zzEqEh8RpX0uf#5%0{aX;@M`Qg&fX}tFBIk1cxwidVEkm2Ah z>VpW3MePQ%;jY1?}}h5In}{-u-7&CJcXej_KUKCtc5?3ML&nOw(%jO_i)} z3uz^G^-q2oWCP*RCghTrD%wKy%RJ{iwO6i3s^u(1o8<;qSs}J!=q6^rdlN$#R*}Uh zyTj&07hnz_|7AQBfhe+c&#Dm^q!G1WCVeI}DYs2?O2X_SWdCS3jPEy-=c#hkUQN0Y7Gxu}-R#d^FqLNYzl&c8#>^v9za-rF|hf*wr ztW|$-U_f40_Bni;Ub$e-<_IUvylH#)2i&Y0#A=P~FY#R>JO=Lhre6UD5U3!q$<<6< z<4={R4w8`gXRrQ`xdnt$@Yvy!@Z00u^dyfv35-@cvSDI)>u!`P&A#Lldo2Zet>tI? zqeo|(o&xLow=^o}_QVvI@VxW2xQBnLcu z*pgy?G}Tz~52|EB`|z{J^W64ma!|weUfofbl@ln{hpHSIwU7TqJbd&htSUlT(;kOA z4jo{I;U)vg2p#sA<)x*^b>s;R^)G&D&KHl49wn|{1SER_ z831w&x?2Z*KT-Lf+xa^d50_e#WEPxIPw8sbGF5%<)jov13=Wcy{iX(RKj8^u1+wey z2&Y5fTe9qPA$M$aR~|$Qqqzlghl(QI46%qcHx}8)dQB~_L&%W)S?i_Wq_Dk2<^K$Q z8SoPUcggwrIn3~NI;&1j)|&{`#k-O!-=6j=W~kT%Tj1iThYNfe$Wr8)JVHlURAp^< zHaPSaM$Ga=AZ;WhQI&)aQ-Fuuwo?21fASdb98X)G~=Onk@-!k_ZZCE($ zqQlVKD3RXV-w#Ph5HRsMFxScC$7BalS9s28x+7*B8H&#{czhWIqR?0(C8wt2cyp)> zKbKXvD}TLV(fvn{q%<@hfsvV6PF-7DCTZcuhnrdp!tXv@K6Xl9Cz>#EZS6=rL=AOp zE5Gt=I&4k??gTn|2<~E3yFa^43$7a-zzM($B&)eYfO`k>s&rW6LtZ+jMJv4Kelx$1 z!aWuVHb{!Ix_L{VZYP&R8ax7^?NR;bCaCCv1EJgGiH5}7-ckV%fL}j;0CVu|aLCx0 z{Y?>1Z|#N9UrLW#&n25g)og2}MO_xExf9?%K;k@V-HxtvkfkMaaS}+2&-6w+Xl>Yp zl50CemeZQ0@_q(*YZ$;8TBYnMD;NzC8|ZLsZSvx)XdW~F;WJ4HygFSJxX_ubb$`TZ zeF=2HkXJvyF~3AuK_(7nE*--s$S&x>&A+!gxYMD1ZqqX1$p0Kj zfLN}ldE;PVfItl|1Ow7*MTb1$`I1({B6vC(7FqK`v)&3~I0`DX)^}6kNIDWJ08%q% zmOV5>EG4D<6BJ6g3>us-jX3#TTz9zCU3j=Pv9gqFcz-Mc(9EbvmV^89z)Fu2v(4pb^qk#W+1->SBJ@t$**Rc6^lKsAXVH-f8=}xey=IfHm0_#0ztD!g|>x1ud=FNVgs@@5Sj3l2=m=l`gOapYgPu-m6>HgoA|zCLw|;X%QP_ zr!cY(%FQBZf`BV5pYf#~s&VDuaoivSCD?h@$hrf9a2lIU3AZ9N(=T%a6_Kn{m&-3M ztv($r(%VKyz5*|~1zG1pXxKOR%K~)@N(RKdo3lhoO;_VpB*kac)oyYaFpvm+hF0e- z6d2b1iptwS5DdKh7JJjMC@MnRBMQWY+kjYuP~8hmnm^LxXW*Y+VqQ~qMzSqiU&TMz z#rth)60ZG{JVOP$<}<)~!{u+Dl8$^;6^H<>2SOp&xa|37VrFF~Bo^(EhhUND)PLZ) z#345^JdEVkAn_03evlZ%%4#>Zn%|GL}J}jB>J%OC7_<5-e?A3$m0X-xX|(%&w@%?)eE)LcEq8!8kS7fS zbeN>nt=bTc5%JFqw1W<@^eQS;p_IrCzI#%+n){TK)2Z{`P| z_vK#N%Iont@l#y+y$S!CVe_=a#GkYcR;5gwDnh+c8VZ@119R0J6^rGR?u3HK2;n4cNd-n%>-m@oL{wQ@zqEO|z54yt|)! zDbzzL=t5M3vfVS~Q*P00ht4ZIK#eDz@I}?QG{BTVPy74(o7A!2_S=6`pityCOoE19 zYu@Qf7$6FP-f+Y$*>P8>kem^bsHUXP%&F7RM&xPDi+nrX4)R1sRm|-TY8#y$@AbJ5 zV^8kVMk%v`aHcG#1~WY zZ68;<7$Y@hSh7G2_h^ro+62zvB7Q?YkIZFpu4o#mv~ca-Te< zvTf6{7&_+{dW!>!v@PZ@?%lXLsO3rz?L6W<*v{#}Lkn#u3n~D|G!{NSHLVQ9-dwJ3 z3q>#ZsHRBob=8aYE^Axfthgg81L-xXcmcZVzF)1KCTxvW-C-Vwdm?|r^^mP8r zHnmJJFC4_nNnm`3ar7WFLQ*^dyHudTxu!&gA6gq5=U-H=v5Y> zqdCw1D<6U7Y{4GG<$lZx0VtLP01M||)Ob5-E!Pq&QnlUg(Q*CdkgH)$?$Xt%MHu>? zO#JV_z@NW=o8Ydzg&tpNHRXlXgIy1+QERmRyj$zRPxpP|+DJC3Zy=F_MpOh+gKwfg ziX5OaBjNY>Co?t!m8!V7k5oLOBQ@y2wXwAwhRzgVLp{qjr7RpM(e2IHC@aS_J89H$ za_<+^Y`@<&4;cLgprx>6FLYzU(b3#bJ#L0J|9nGk)a`b=gxf!MO>fb?x|!TY+2BsA z>$raV!KsEDbK~fpL|_P4bE~>J%DB2XUH9pF_zoVy2TFva9**t~uVL7wlJfFcpiqO- zr}EYK!(tF~+Mqg}cZXc(25-q;x1Rq%JB(H5WzV!~*dJ-l-qLgXwxe#zK#}fI!tYgE z3b)u+)`8GUBw})2Ji!w)AMLvY=93=KTKm%<5kz_1z-dQja z2(tYSp8--DfLESBG$0xCjDUYYf5iC{LENFVZ)DTup~ z>IA9-hN?B@Yl4aC>E7^|I8;|zWwSC|RD8 z>`xduQB-KDpv3<|`5=aj(d|QIWK6fK8wA8Mf9K=m{6fnbyD9eGuAFS zAZhT{`NlXt(7~i9at;o>8m*o>U>}^r>E;?!|7GctU+qb%0or$ebFv4zx1sX4$#iFd zzPixb~f6=uO-?FkM=!%Vg1C|_h^6H-@HkTWob?j%n2l; zJQ;iI1cs1Y-}@9FJQ(=deCd`qHVnZG0yybbp66MIvVYGdARKm=`w$z@+GJe<=zt*e ztG%ns0QM~4t1dVqn&X-eOGIf>C8T3y`b<{Cv^(^q%Go?<33WL-Gnl4fOd>c~Sol4@ zX1AA#|6)9Uu4pk>Lixa(9)|E-c1czX)mexX0B{ z1s_KL`K76<_cYkm)pZ#3IS{u4ziW~bC&3T^zX`XUSI{=Jb}-iYOQ-Ao$2}G5G~NL9 zJq!zmDuzgOMRD(es&B?p)|N}o{Pzw6d(#(FUMcVWy~xC2GAHy=LJkh4<`P_eRC!Kc zPiZmOuN5D*KW1+8!tl=N}cXUn=r zDj|*%I4c;Y01o^#b1YsgyrjQ`2a#kxd4u-(gPc;|+}`fpKC*()F+i+bA=<3^6xGpZ z)5(8`^!w#x)4?}g+CqUG7|7FRbY#S%Q+Z~Hy@Y?+*xYK)srBuzxcRW*U-^0wB-m;9 zY-2E5tSESxU6pDmj!$~zHEf;|yaF)DO6HI=i^@hugmx1nn0&IA>!_0oTM!yD08xO^ z+rybHdIvjBI)VQc2!Rbj>R&9#*j$v%;A+2-YmK0B4q z*vh=)yHMMf11EhgGd=Hc^*{MmWaL9&HF=XmmQPPDhSqXY@(u|F1@ZBA$CP3|5=zDx zm-6_8$MSLy34UFA!pa&3wiVDpAT2vG{1ODur~bl9$Is5TgyV_1?Y-w3wMYKRJv=!9=*R4S%FXW95Mq*?! z!i33bU)o%V8gDmo16wS}Z}wJPd@Y*8q9ubLGKAt?XAEf%ec=ASLUwkx z>bgrr#H38n^1~n0lTT?(QD&*V8*?p%6f4>2N%xP^^bHNhu0Rb8TVFJ}cMIU0P#C&? z9G1OUKi%kE0caYMwFSRg2M&IC@<5`2$dByl)2rbUUd_6}tDmAb2u#D+!iFR>h%&;p zC7-{spEE6Ou`&Rq%ab#PF}FRptw>i4bad&}J#MK;I#L$BO)sKQvTb3_n-|b&Y?K^W zPofp-gKG>SZ2(fD&8uc+^kE@kc!i*u49;*l>**z%b32_L{?m#f55234oRn0jGc6y8 zIoJnw@3~P`<0d?*`|>w5Kce(@32Iz5o><;7OCC&8>|Q(7)AnQ{Cr=Q{Qhly8Ksd|a zLg731dia;?f}rEfhk@>UQ4_Y?#MA&>J_9iXO8oxfrT7jiLSU25Q-s9~7sjpav9yQ&5BI9eA+uhx;Z1;<0pJUt(8z52h$=bNd z^Zl~d?1?)%mO!{qo=hB+Z?_Oq)6nQ%oS#+ikC=hPB_GHw1k|jwU#%9+gEFw0zWKo} zjx4E?Khv=mL8Zd}ca;on&Yae<;UfaY{-E!Jc?Qj>#g^EfvXy(MU2jC6&(MDGIw?{P zB$Wh`0^!*qQ5gB*wI4jb0Xom=vP%UUa2`%v0L>7c0@9EJvISJk?*4w|8HB!rAfz|Z zB(X{9g-=D3S+S$e?-vNg4$U9#bw=(*mlc}|DjFIXixV0i&bImr#uhT_GJ8H(Tk*uk zuP~GES+?Ok0uR3;F3w z6Ycix8Du785a0eo$ce@djC8cKlO5Eg45jS9+OHMVfz}f_aGzPmCLYWO5G2s&QnMd9 zkzReuf8{hHICwixT%afB>*uQVaW`lC%IeQ*bh!LGQ9W;ph7miq;TT?okJlM9)NPRL6m2KT28iB4M7e3!g(<0hYkcP@tdE0l{cb>Wq7RN zj#@p=I#s$^e*MxV=4x?aL4^w5eVhOE2cPkoNY++qQ|8ukj7zrlb380MH!XlYr&Z@- z7yjlZX|`CD+!k_v?!kZ5E|b)2>?Ysjd__D2sTPqd5jd`NNIBd{)Al^ugO$*BBa)c; zX9~Mqj&&$yz|{bh8TEDYVYy)x?~a$44TJ$w(b2{Bmk;zgt6Ot&x2se{yn9C;>Jr#H zJ!hNR^;czG_!gE-rIbeKx@JBRn4drx6a^J3I-JTd3l!uisQd4lb*FR6CjKqI-9M6$ zCxWa8Wcfi+w#=rqBrZ;CMZZ|Q%o;8~|1jCA=d%MG0N*~*RTzKxZS3Z=5>1JQuGNDw zsEhDq5XX{Xdw68)ee1FhBU9VQVcJ$Z=)`%Dj72DVLE*ldE)H+Fz`l7rOU>;Fes7Q(^Z{0e`~>KQ*B(sWz>M zO*AP{tAO2&4EF?8%vMegzZB2E<);cktMzZDkctOx0>}aS3iiu{1QMhUfNTU3TOllw zV33QC@QiTvyZBG1<=*UqDQdUG!vgvV9#k=+Ms%?nzd}C+hw6*nI z+kI#MhH2}3Kq8Ta_KjY>I?R^%mMhYWRmmVAxlYcO{MDx8)?ah&zqZ1uKHWJ`dG-)p z_Vo$-2qi3HZea>EiJzk zI-EK%uHm_~6I|vHZdHQd1bhAe%#5LS;9#`dbL`EwNc$@%@&3o9Do)-J!gahZ0Ob*E zUj9tJ`$0UU(uV@ZWkfAz)H5M&HEDuNe@ybEp)6siphg<6ES$sE@TcgP$J?L!nsOgm z{TVSWv1z==0lE9mXM2P0do2%;TnP=0*s-NiICPMX2S7gz=+Tii52PIk{aT5b4mAAs zH240}m{Qw+lOIrCV0%$Yrhf}6yh13ueFS|L`6yr(Ab=Gf9zZj4DUoszEiH42IyawP zyOshS*e0xgDsi`>iJu??4<(2B@vz_VKi2;Q^lbh$=h3sLNK@=a2Nw?_Fc_-y6o9ku z5x-j`2tu6AjgC7)*99 zsW-czIN@_gDJ#4OC;%IYcQU@57m)oAKyx8)Sw_Z}074Grt08qf1S&~QIm;7ueu(0> zC%S(1y28E^K!T!9pU0*jEziCIj2`Ue@avmex?}4aoj9FMuQDi;WHDa^Bxs|!NX&>= zjN^%l?^B4mjZbuSv#Dyyy@PrexlR#_FSInP{DpIRS3q75OmI)F`w1uX8GzA2+g)Tf z$bfWt!%kSAtMc!y--~?~n<$@Y=c*Vm^!xK_!*KDNzU!`v_IA}`7UKtK_r@Fkkk>sA zA&WQJnDJDvx?CUYmY@RRRvYuZ00H3eY&F*wTpwPxLgU{ z-LKPWo!T}u=04<4xElVO%^FHub^M>OS&P`ei3yW%C1L02SY`}Npg;xmw z2B~5IfkV~bB>4(Txlqd4fJoQVBZv|+UNTP4 z;cy5%H}^mcsiN`_f+i!hTzmk8-Dx4T!XzPK45ftSq-XgcgiHsbg_o8R^Gm)a)j#>A zVNg6gI@d}io6l{-ram)1izVkFhiB(zxZ@r6ZG0Z5#1M~sBhPf+qVJL^S-h-jg?$NB zZ{C^*ZPkmJPN2w1EiQflihBrV$)>?)uy>O3=bICUeE<+F7aZ6KZ1K-yl~PsZ8p&HP zRZ|%czgMCwRV%NI&JG`TP)M$LtAZ7%;^Hzg?o<({UnPmJzAN`gzduuXtMAp=_=+te z4faa9OiTKqX||NXA#a;KDl0Qn7xt>#^d0Rfz;;o=dCLQFmg&5hH2}zmuyEwK*4Hl*bIT*Kl*8k1MNYKqtKqAr(bTOsHQ55tD;`&Ov%g z4^2D-lBX6Cxf_VD4klcK6tk2HU|U1gEG{8IU`t}h`H0#1kFmL3C}l2l_kP@-{22La zr~!&hF#$n%z#9f>RE2iSfADMSq$w;qZO?>p&~F0dLJ21a zau&66ohqt|w^-mBFcmW$I@)4;v^ev>6ltvn;CcWE^X-9Vf#|-nE zXB{D^AueNfBUhgpvpl|Y1vmD9Q}kud@PBTItkzfG+=L9~OW{^@(;2k2v4QG|jGq1; zNbq2xBRU@KlaaxNIVT1KXiZ?=2q1X&D`ByhN}x6bwOKG(yC3f|j;qOUR#|=One63k zWo2seXI?U7?jN8-ZCR)3BID<+xFJ_u=+eKsWH)Q|;HJhC$2Ou@htWBqG7H)J66nYv z7GzDKLKEg7$!a+kX+kfin3VVZ<-lNH1Ry1XM*$BF2>=myJcDFp&0f+{j!Mff&?NuW zlE^Dk_TUppC0W%QECP})qE(BZA}%v$-Fb!3L)huCqQ@~{7$`o!v0wv{R$yyk; z{=dYw4QkEf!Yxt@@|Pg{Q7ZoL;9!S`0?6$i19J&C3uLhXZqF%vlV}7TaC*QcK}mO1 zaz){?M#Yo_w0?YyavVgQuic=bHK5Z(5xx-0d$i*kLuGRydmJyYl~EJg6R74bA~*N` zCh-)k;3<#+73Hd&ateiz!J(v&`bU$pu)L;_K?p?#XCzV$W-YyHp)mbK0IGop2RN=L zn}@9hDr%jIKFV(uj}=)wJl9t|ynp@5!+KEeySrN_?NmEy@eFmrErs?ou9Ud8&@@Ww z8x)jC5SXu@pL-@BiQ#pSYTYCeg=6?DXyf7#n&ua69_E7wh@-Hrt7}ifd<)L_;Rm_J zC1Ix%ZU`%pQ=%25j#Vg391%%Xp_5{JSh(wndTvi>wZEGzI`cL)d{o)B^)+{#G(WT| zujS;J7T1ogJaz~ztG7jmopz9%iy&SU8t9$rv}@hE16Sp}$;3et>`eYVN3%+aLIy5* zFb=|ix#7FHgZ+}>Dk56i#3i|E!X}Zt;scaL|_C*L84Gqm)#u1DP zvTnvv&WDwY+`v*&{%$oe_j)*M#ctF@f+!Wr+GQKN_PlhZ3{~us&j@+=kC?(#Q@@ZB znw8;vv~@3@u=DbisItIhx7IXU;S^W=ru(MrY2C%a1#&C_q8nd>(ddou-P$=S^uGu@ zuo`}i(^GIGz<9v7oVRkSus^muPgM}tvLe>$^#L^Ql{lRkMmEXA^)eCBpD;L zQOvUzZa`2B$tmS(v;(+>D3qb9*V|YpZYT#yu%S><4DbC8u0Gcr-g93`${xRYpUtaE zTD@@Xr>yk zff5DDbV7=DM1>0hM99Onv}Ayr=qQrQ-ny!V@a_#7H5yI>ZV~v>B_$(Svzx=kmOhg+ zI3i1L(Fc$7<}fOaoNCfZ`Y}~)S~>OGAt*%>6u{s&rJz`t(VI)d24VuFb>~1VZ4LK$ zIOJk1KD`{oGzM7xaG6!Ypt&vlLJ&OL+_!r65T@enRvnuRu)Q{?Ps?xR=_loXHlg{j z*}}kNsZ-24D532VSz%FNVy}~ASq*pe6<%{D8zG0Z2YI1qN2=aT01m4|E2mNmo7gvb49W zCeI*A0vTuwyEFVOgEtxL#>dNg>GzXI#7bnl01AAVedDNv^>%|#ADd5!Bo2tDFpMEPbCse(Vxq3hcN7y=6LQviV5P$LlU3Iz0P5YxN#Y z7BM*$Rm?7qC$TNR3>(3bZPhLC8)879D=$qtv~Y)_b?%XD2(slCd2P*s=Vjm{9YC5M zaofQqis&H`tgSEY)vV!Pbvj%)4l_)$qMlXg=s(cOev_DuBK1f=Mkgs(N_;V6cKc33 z56XeYu|i|a^WqGNEkOhyZ|aX)-3P!Mi6Hry!)W{PVmQ<@vEdV6Yd9^%*@P4 zat!<$gh2;Y#2fY)1HA@*R}%V4TnTgXxq~^^s5dTH!lg|XQKb!V%}Kj0osTZ+*ZHaO znSbGB-V>+%*{Jk1K{Jk&u;M+>jU$A^g*i8f@?;h(jKm0_LS)T@$`a`v;FDEt*2Wkm zxWh8F&=L$GgSmg4AX`Axx@QNIluw@uDVe0E-lNTd0dMB)$TY3D>P#Y6MHIf^pvn#8 zn;`iV@+dTv1ukk_q6XVOEVBJu5XmHGUl2z;*yo1%rf*H{L`FL!r2ufh$ZP^y8K}cs z4&?&Y_K{I;KUPxIGAKag^Q|5sPSa3O^8KPo|B;lq<&r&cLy7L~O8se2A5tqZF7%=vr7Cd%>PN4@1bnN7wva$lGbV8IQ~D@EOQhL)$}x z%``zV2cl1d;X(r#x{lP@OvSRa1M-5`z1+Q2G?k7@p4ta*WXv4qAjHgrw2A7aHMh9T zmAvm5zjT^?1)Pa4`T|7HSud-?OknM^6=nG0`LQm`A2EuqgE#0S1|AxeVemvd5cLQ2 zFu(>NDv_9&4#YiUM_8Xz4s^udvVPmb9WosG>jneNjMQ_Vryk!u?s=%Pg$R=%2_9qS#s?}2An8m*mA6qDn%i_?SsAk2pf z5kMf6v%=4aY|XI>(~4@Yy+;?o8K}p59Gd{FMGxMXwAJKoozK(TTs!{jNFfUWr-&dI z9DRUgY5<_8l{^+NCjy*v*7tA%<$K`@@mX3AeRUm80?`^yQU)LhQO zCW{+y{}bQ>ALRw7O}FG#LFfXZUV;S&;_jxbLzIpoV6~qfqk(+%?behaLYeVwRyTs; zO&_HX*_D@2qWN&;YDqE@RiXn&7rVkWulUf*RA?B4pP+qd_wB4qY-pP=v_}0^yEKr? z^BX?5%A?AaY~D8q|lMaghk5!eD}-5y78Nux2@n=N$zNwO&LVl39&yjE87u(Rv@ z=Q}Rm!O@ogBlN<|Hk7<<#Kp<@fhsD%%Iza;N^98l6}RT#+(EeKj~IP0;OJyU_H3%lQuL)R@I?IcaepHQj}X zx}+_8R78!JwlV_yP3NK7OaWGmW5P*qY||fOWAA5APY~iD9(&tLgz6!2p1Th|8Yw}+ z`Z1z0a$kVowcPg<5uzPhcnQEVK+U8NtZ%k@Ss=`Jf;6tVIo2rawRLjHi2$0&`K}&( zcw2Yw#ZNtYrj~$m0r&!P(|1T?0YG+eR1{JKg7%k!oLq!B?`u1DL5zz%pVvn(gSS#?zhy?Itr~ z-9-XJe*`snt9}}{TtsLQz?q&wDTZ|7h@lngB}C5xj+64>h9s&#U}=(y=QRDHr11K; z_VYYFP6MgD0b7Guo+A^BziO<%3X)eYiOxzY4Dt$EZ@GMHtkb&@6bH0EagL8;C4^Ncg9Ea65_@w1kl-oe$6aq0fhN#jD*iM4MKYs12t;IhF;h zZ<*D0rMQZ=!tfRGMgQ+EzZR{qpLjWOW5Kmev^PcpbY9IV`vY@FMy=}BMN$r@?iCG7 ziHV`z#30rO{u9-c0Oz;|l=OW=Lr#H4C)WJ`D+_={0@hRnoQDX03buoPNDcmd@f-S4&O1?j)bXry)&|4uaIIj zCg9ZLYgFx1CHvfQ_&;_80p3#Um0i(CU=|D@stCq)+!AA9t zG$QQ*Kr?svn942kD)9a1;0`E)4TvZhKm?2w&oMN!!Ibd|wWWcjI;fPqOQDTq0vj3y z!=kfwKXQ*4caJ-qxwfc1IE25AnXgVy-`Dr~FOKbBLM+_7wn?9N0$7fx{)tf~wo+N7 zh#^!>UcSMPv9|5~)titVrw{k&+C)tZlqQM&ra)f40DL?=+zX~37>NUF1|Oq&*$#og zx4_i;DI+7JfU<;xTH+8s<#=^$otq^klYKmcT#w#|uy zEgK#<+yfPUmMd(%^MfK@OVXYML_W?(A3BB!%EIpz5N^G$cxn77&{BHQ;>8s$KM%h; zd>6S(j_TY;VDr#3Oh@v;0TSSH+0BrNvm=K3@%!K^azy}W2(R2_g&Kl+xgck5aczj- zl=JP(HN@`#5d9*^xtsqlf&$!780ARPN+ZenPfGsnTcA1}0)ke9WdGBavs9P1|8Crt zzXAhHDbkAJ%lsM4grb1pu2)Z+OLcu;HEX4z?tH}krG=fA$#dv!cJroJ&n4@uk{Cut zN&MF`NVR|jXe`FNcBk_nN7l0>K?WE=B%q}1hzJUJxR2=!x`5Js_LVjJzf@*aON@yf z{2EUWvrhj}k3h=1ce)%`P9|3F$DFF4JiI8>zVUO>oR2rQR!oUoJfsQ3^H9j+WOUL7 z1kKPWbGecha3u$bv>yfui1aDbOiy`JG4jvv1m_&5!NURJ39VqKI%6J~XKKFDz zAW^q>-+X(jC~-&ZW}}`3(=%_@(M#0LrTz_ZU-SJGGdfK#g{P|VMGWB^50F~xeXtac zTK}B$ark;eC(ZH;Ke0o(OcAvQD{96C0t5FKu03*kciUUn)rB{G@w|6buZQ}z@A^?Z zNzcm$5)X2>NlLEwGLs1hL2xJ|E?pA$-Cz*w^M2Ml_KPPADuZ%>hKFbL;PUk6z2YYz z!!ZR(N#%O!=$Hi$sEmR>-^EV~3=GT*p&X#CZ1phuU`ICM^X; z%WNFfA@4zCq$n$!NEz?c04&EtUgbQky$rFliG$ijemtot=4QRx&|Sql`OUh$M&EjN z#TO~Z+d~;w>82#bw1w<|}x3=;K` zI?p=Dt15w`$o-&dvLC>|3`oBfV=?Uf{gqT`j4%NV$GI96NwiOMmr|rN2h_4`*B8e; zzfnKYcw69COu0rX{s%iQVb#-P%e}e9gDnxs?1vfb1JDR5s;ag}|MZAtF$x5s27|@u ze!p5vN(vc#pe2x0vOFvN{ky*(vgw(_BO=UZTLL^T8p&DGu8j6)DVIP69{%lHW_Gp| zWKG&*_{Z_PSAx!&m;JjcPxkS_7tgHri4=^{?p66tzm?l}2Cs|??9~Z~Ermw%dz_ZT z9?Sqg#VT}%UXz{)(>#2WH9#RlxQEGD`P+?Oq45qA6D}d{d_}$d1!tb9lp1N=7!iuT zD<%FKG~#L_&LUi|DJn;8H5nq{whN1i$pY%NZnRUFM{ntg&Ib=Yp2nXh=H`DP5t-Fx z*BCzB2%q2uT$Kdeb{SAYg@=Ub+C`!X^4UHDt4uL`88B^DaD3^E<$4Wnrj@ldyNJ&) zvT)Iquy-Jiw?d89PwKdg`ejIQlY=0w$FttquNyWMyA5|3m%!Vu0P`ia(V6#+;D-Pg z3gdj`!IN8RHJJ;(@uoMM&`tPjnfw#0u_{YzrjCF%<_t6RgXR)7jc9 zUPl5%UW3+~|&b|ueJzG20SUz0TCV&9ZP*e9p|A~W*J)6tB9OX3-(=jivt{%gGeyDf0Gea)o z#l^P2U*PNG)0-ieycDgyUwAF!CLuKVU6`TO^JyV0;HmhehhE`9H^EQ7uJ0@%-y z60->K@xbCv1NCNCJfAwaSCJFPexVcJ{WQ;$TIvrhB>R)~GB`p+0ipT}3ZG(7HP(Ov zO+reF_4w)aV$cD{@iK)-8)Uf3@+czO@1rEiHC`!Ol;Vr@b z2Z^ ziwCAD6#@_|G#FCT(pHcI0zP1`&J(e{yCI&?ciRJo^eTa06Ec6~U0f;wG2Ml=tw^h! z`xiu=Y@X+C$&KqD9Yl8@|2xXAzC-#!{$BXA@W{vvI45fWEU$D}j|S>P@%8IuNaE)M zC5TOh#%{;W?{I?m4-V2YFi69f15~XaMh=0Xh9+4^=$$Uh&DrnV^hNls~9vrlfocY17fX&V}{8q?iR!j81X^ zxX}Rc?Si4F!?a|@3s37A_oFGo;Ai!(ba<}5xJ5o)?1oclW4el*V}F~GcPZK>WE+9lunf_wQ_3o4A7Tudqgd@%6of*_ zVd^n*z(8M<0}SThd``?Ukd{{H>u zjl!khco!p&-vG}=4FTdHq^$<*i}me{@chC80TJ#8DJY%bRygjY6BiTv4QGY_t=k*{ zLX}p49H*wI)554bKxp7JfBYP-q2+Jtmch-s+fJ4RDi5%+^<)(u-mRApSg@&pK`5!9 zIyx}Af;l7>`S{J-*LSrO$#~1JcaV-JK%5-CR<(*zcPvtfAXg_Wj(0Fk^R>KuNM=?R zU%axivKc(X8zNrsaq0SvA;Ax3_CPT7AfOtoW&?CN;L~5qzvL!KCWV<_PW_ot7K^z0 z!~E9`8CWvJu4_zC;QfG;7S1qH?@yPE*kcqmG_s)#5+A1zvA4Is8;yZguMjZcI-v@Q zwy<4`!G~D`ypgE)jVbjvOSB(ua5O)>8}{jD`Wx<)lTd&EyGV5cI=4c#9QZ3FB{DLS zUs3I6fC`*~(1WnSVSiv)3r@w5SiwX`HZ@3f_^F)iK3>goqv`5_0>JNgJ?UTDLMw+$N{S+z)38?m(%tDvPP)%mh>Pp{?FoFmC=5;F5F#e= zRMMwtLAuKE@s-7H^$!emMEHdKm0{q7vE?gipH9d02ki!b3rEa1-_aEExU*YKIP*2c zd*c=|ukg^tCW>)DZ+_zqekRD}@DNZrN+;9Gun8;JYO((Jl$GRMyMg55Q&97%HbDJxjmnDe?Rh_0ID5 zyxylzokqvT{Ac>};Ap=i$Hk)Ou#qwM&HK7lQMv&~vE#40LkM_sSM&rDu7Cb+kF2sp z6^dDYpx2Mz`Y!1~hQ{LM$95MyK-gFVe5p)Kl*}N7V}_QLfan;Y>bJnPU^aXiXe*Nu zvjvF{LV%w5C?$=eA~kvn&kcA8t*Is;F`yt`3^-ib+WL$?#4N7E zv@A?PeT^RG^pXpV&`=mh#pymD3yU~3c6-^{x9Axyb?(-wi{)9_ki{MAu3aQ&7m`-c zv};{q$2A#E=f7OY{+kGmN2i*I2AWzSzntAJ)Xw-^~Ta|o3H)@raD_3DXl%TK8sg;t%Q*iQ2<35w?C6V*X6Q{&)z zX<4EaT5^!%*|WOk+=|tu z*(lRr(U!D+NP@C=WIS|-j0^+ReM2K7Z6hN`y!8Bo7q6qpwv1xs2w$M!b3B)bFTUi_ zZl-CAWo{~D4WMGw>)-guzwu<2x3~A2?9w*D0F0#;-Z3;RtgQ&|nghl>z5Z?9>U03C z#|3&yz!T-t%G8w}^Ktu!bT<2}UJlB+RiHTVK_!1vPu|T|Oj&3{-R7598D=%G;1iRi z;Mx8>3~u^ViAo9f(knf^%{&t=ZCp5{a;!>Ecen4GiB=d77wpqCvK`U}wGPq{(u3a^ zChMm1JuEvipQ5|De93S~0~}Ei=w~n*L`Arwc5Yy^4vl69U(SWsXP}mzH$X@Jus*%P zp9wZzhN37R9s(#!Hd$r__*4WDFaa#`WwO@9Ac#i{oSux1j_y=di&Ijeb`XEevcoH) zLhf*U_M6BqEB~D}X9$<9qVzns*35z;#G zL7s9vx{@h2a%bNZy`Dp_Uv=;>)z6H+Yqb8F%qJB5Bjt17pJV;=V=Qm5qQd53YG0*( zHiG&P5Rw0;a5evcU)Fj~?QAYoGHx_AIpSFF9cLY_*^E9~bFcTUaMNZd-OJ9C=^Ze2 zedhJkMKz$~Oullqu}Q^I|C*_kcwTLgVHBAUbq7IsVPHlXE5)0m1IINmiFiu z6%*1S2Ct@w5&1cg9}r73un*qzGd$gcf_(w zf(W)uYsbQoiAkYXhbc|5WS}>@ZVI`|^-~4&+>(de4>wE`MBtCZ0rdm_9frRu4#Gj| z(3CW>`9MRmpR1(UmKG>YicU|ECU}XE~_lcvYtZFPg Date: Tue, 30 Aug 2022 09:22:38 +0530 Subject: [PATCH 2/2] "What's New": `adjustable` argument of 3D plots aspect ratio. --- .../3d_plot_aspects_adjustable_keyword.rst | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 doc/users/next_whats_new/3d_plot_aspects_adjustable_keyword.rst diff --git a/doc/users/next_whats_new/3d_plot_aspects_adjustable_keyword.rst b/doc/users/next_whats_new/3d_plot_aspects_adjustable_keyword.rst new file mode 100644 index 000000000000..5a231024a759 --- /dev/null +++ b/doc/users/next_whats_new/3d_plot_aspects_adjustable_keyword.rst @@ -0,0 +1,34 @@ +*adjustable* keyword argument for setting equal aspect ratios in 3D +------------------------------------------------------------------- + +While setting equal aspect ratios for 3D plots, users can choose to modify +either the data limits or the bounding box. + +.. plot:: + :include-source: true + + import matplotlib.pyplot as plt + import numpy as np + from itertools import combinations, product + + aspects = ('auto', 'equal', 'equalxy', 'equalyz', 'equalxz') + fig, axs = plt.subplots(1, len(aspects), subplot_kw={'projection': '3d'}, + figsize=(12, 6)) + + # Draw rectangular cuboid with side lengths [4, 3, 5] + r = [0, 1] + scale = np.array([4, 3, 5]) + pts = combinations(np.array(list(product(r, r, r))), 2) + for start, end in pts: + if np.sum(np.abs(start - end)) == r[1] - r[0]: + for ax in axs: + ax.plot3D(*zip(start*scale, end*scale), color='C0') + + # Set the aspect ratios + for i, ax in enumerate(axs): + ax.set_aspect(aspects[i], adjustable='datalim') + # Alternatively: ax.set_aspect(aspects[i], adjustable='box') + # which will change the box aspect ratio instead of axis data limits. + ax.set_title(f"set_aspect('{aspects[i]}')") + + plt.show()