From 63198665ccbea27cb8f61e6ca270758a9d83d9b5 Mon Sep 17 00:00:00 2001 From: BulatReznik <90419704+BulatReznik@users.noreply.github.com> Date: Wed, 1 Nov 2023 23:05:45 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=BD=D0=B0=D1=8F=203?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- almukhammetov_bulat_lab_3/1.png | Bin 0 -> 74789 bytes almukhammetov_bulat_lab_3/README.md | 64 ++++++++++++++++++++ almukhammetov_bulat_lab_3/lab3(old).py | 48 +++++++++++++++ almukhammetov_bulat_lab_3/lab3.py | 77 +++++++++++++++++++++++++ 4 files changed, 189 insertions(+) create mode 100644 almukhammetov_bulat_lab_3/1.png create mode 100644 almukhammetov_bulat_lab_3/README.md create mode 100644 almukhammetov_bulat_lab_3/lab3(old).py create mode 100644 almukhammetov_bulat_lab_3/lab3.py diff --git a/almukhammetov_bulat_lab_3/1.png b/almukhammetov_bulat_lab_3/1.png new file mode 100644 index 0000000000000000000000000000000000000000..6675a87de91a191c0b258b23bf2bd13fe37076b2 GIT binary patch literal 74789 zcmb@t1yCGoyS5vJBuEH^;O_2DAh<(t2o~JkZ3q(F-6y!a>m<0l+u$&`%fK){`PTl{ zx7OZkSDpWy^H%jty**u1HE(xMKlgRtPsnF^36wXuZ=O7Pf+8g;s`TW^)6~bU@)g44 zo@kaFw#T=pj!F{3Ps&H|A&-+6rb2Q;Po7joA>Hf0e4M|wlhky4@&vW>_x7~cw$SKt zr@pz0hLf_5xt*M`lfIF@lm6qrCr>;{4Xw=WKHHkxI60E?YI%~nk@7Orle#~?dei@F z#?JE3b9Oe?|2pE2&wtN#yuD}XOrJb~b4!T|skrGLWW3hKoV~3C4pJr|Wm7*xcwvlb zC-hGHvyhlQID(Rra=cb5HQzdx@(Rd4Ena3RXJENVZ=H%Q$IfUUW)H^v{Hgn;5k`d{ zaoB+$D|o04i;n8$I&aU`9uf|i*0(J;vmg** zo=P68wkq0!_zAS*wbQ#JWnH(p!61ud9Sh$ zhhIZsRX?zCUp|iSYTZL86@I^maLJ$h#8}wh{2pbY24?Snk1v?rW7NM#Ep2F);^)U< zrutqa=f~q1E2a(<7kV67sw@!1G(TsojsiJjGgnjgY1hUN4PmzR6wy@Fph$20SALio zcM1j;qEE^rt<4S9hMSmlch23!KyMf%(1v!WY$+WJt~-lZQ|pdxRxL90>bWQ?ZjD>- zo`V9gj(Se#wcwOhIH2eTB<~n7%HUQUrj``Q6dCJciFW&flPew4ba9#1%!K*M@1=f4 z>DOjknA1qv9VVPt8NQIy#YA#x+i5aF-r7ROdHtq8815UPWzb(X(|Za^2lZ-#;I+%{gOUSC|2;Ev_`@|w@ zkY2Aj%nE~#^w&}tl@C`$s59MsrXpOK>lf2~ilVE)7LkMlvihox6k#`}UpZW{;qaR^ z9;BGVMg(XSyMw|BGkhN68g4G=agPgyA6&~;3XJp|+HY!lvKl}|(?=dsjKSck<-6a% zOBLjh?7BB)?z?s@zAFlU9kayO97wQ(L_N^bgYqk*o!||RH%*WQeu#%93)w;fI`ft( zKL<(rN=AvKOsjZ^eh-;O%R2!}!coDG-&xjRC)EtA7H14c2GMr{{p+qfEczE_+1c4n z64#zA>GE_~m|H*lxDwHf?ZfAWXqRCRH6PButfHV&?4e{t?7Yf!w?|cwPw8u9fpR0% z$#7{h2C-)cCvzn6uu-viNa{6PoJmQIY?W)g_S@%P@or(_L1bKI-iYF#f2h^aUu!+> zC5bS0yg3qbi3mAFCK%WRql{=pc7`*qc=Qm1>XI7*W~sEwdvK>4z$O3 zPGoav4})8>=6IH4L8*kJt%Lg_FV+p&sIi=>=iJbF?p|hQ@T82dk=)cWQ65Ss%A35A zgXmGc^-A3WdHUKrZ$`<0ptja^m9Q5ddx7B0&Sc(Oyy-22Mb@#cp^J7+GkjT@YaumKtdRSbT6WX@A?C6f+VK=zmUjTOR<_aN5z z?W?z&%XPNzb+dia0MGN zIGeC|wBS9yQ|MJbgPY=MgyC1z`tTH49c}pJt*7iIUC`@evr=JBPwmM(52r>_s&!RdWMbJ23#u=y5em@ zWn&vU?mC&z7Nh@iVG3w8f$q${$fC;u;zSs3qdwGoRbd0(;h_&8E4eq}`+bePp4-9R z$Tps(vedYf!%uv^%}h2`zKz-mI@>h~^1sWWVPw^gF;fUa-QHX|?r=QEs@jCPx;b0e z;;W$aS}r>BPCj>>uUf0LfhbMbMinukmA4PoN6l7lpNqubjv7F})d!+c5*PR+;FyS+ z-e^<#v_i|W#1190IpI*lQ$bV%eDFt)``9JRAxBxK;jN%iQ5e8J;Ov_wKf#e%Y%3$m zEGUL@E3tmgvh?%fVu*r~V`KNjD2SX_OHk4?Ie)8o;zc`b&}1YDFVi{cv!716Jtd{O zkIgeb-ry?Ow8}02D0)>yE6nS~(F~N65~460!F{zOrgP_$q&M;^Kj-$j^_V9&hJS|n z@i{J;oPzuEcB{-|q~5!Y}VXMnXBh_txVOQ|U8N zDb*V3u8b1ezd71o=_ZDRgDO%7gIw&^zI<57H9X*niz-Me5Mng2iJWg^J=)xkP4i5v z?#T=ZtaQ$)fibM3b~zl*SlfWxN86`Cg%t<0Gnt7sY57`739i9#XYLf9wS^6Sg)wiXv2_+Ld+79J_7#~u zNIS`g#(P=uvzjgO#qKHJ`u^dkvo*P{T=Q{CqMa53Dw;0Bgd_cgxY?{<&OT65ejGd?5CE(yscWr#l7Xpv>-HGXG;_;0SmwalBUWu7`z4I>F53wp*@Y7a)9}=0Q{mb*%xjuUGePdb&Xv5fG z2};4GSry>2wh)&5GpD!0z3}0Dqv5psmr5skaQc#@@+A`q6-Y0&Ldz9ip}!_#79A*4 zWgnkrcJSg?TIExd^rhCM_vYr?Cdg^1l!ioe7_Q3%)7m#SC`4Wt6o?f@(Jn`xE+Nl( z-oEYpH1e&uI#^3{R*JVSqz$X=^m6v?dqRo(`lGhp!_Pxo0q0%7NrS`1x1dN4rdfEy zxq6gDp`Nn4Rbak3ZDXZ7W{DakDuFJk=3vpWxd<2_h9@&rLR&PI!6CctTUWQ%KskeR zx(w>eJWMjjy46Z79drF~i5!#OnirfALlf0b%*|@{)pI?P!a?D(a)EB(a!_vKRZVH> zGs}G_68U_ufbld{P`}H89Nb2nj5HaMS^tW7Xw=&1(4q~%*~8V!K8fuB<>JDcY;lc3 zph_(((<6{;047c@oDR-{((ik}sYZSFNTEPa8w;kbs$5k4ul@kDah5;2JtOZidYEkl16pJ$$42QA!W~ zbpM)YXKWjEdOhhPo5}ekf*KAS)gvG*0?2g*e9-x|EX`J0>b&^DiCe6-Z&CTV^UI=N z3q8s9cz7HMn3#cxbxO##A)3aF^Yin~WFYPDsu`w@IU0F}5{S1aTZ#L$> zC^?Pv%N4=b1B^88Eu*yu~Zcr=dC^|N@=Hd{Hdmpu+Qs(Zl_p%YD zW5tuSJyffepzLHnOj&omtG0i^sHmDMGqZI(k7L^X(_X}`aNL^@D}DOQ`dg~llmt1o z83yU^ff8L2Bn3WNRRZr!pHc*#H`i)|Jibf-WY@+wDvEsQI-BNP1BSlp<|gSwMC2LA zRbVoG{g;LGrBxnwhcLl_+Shrul22Smd+n-XiYl6Vp0*&;iR1r}#0yMc4%dljlcBPD za~8e5HBnw{llATeFHR>Uvm#UpHc=pkHcEfPk&`(#nCpsuo(=CMJ{h9k1zy~z*OCiy}RaWYaAH>hdScIsHXo|ilQ>UyS1Ot8Y)iJ7>kZRukc zj^;bN!8wK!R$YJz?PXNHP9!!SD-T(d)~G}sEqOcGQxS3!D%({2*u1m18N%T5a;MX% z_k*UL)49n0+NI>3pa{peQM$fM{PwY}yu5Lri$c3@9PN(Z~I;cg7}$1p`K?RMMTtgAhg5Cki&=fv&D4+ekb z`UY&f_WW?~!f)f;x!m-#$qD6o{wQ&+7S@tyxWUycS5^bVro6BMKh9-RHw&oQvt?}y zU`2fDPRSW7mhu8RFG=VVE_Hs90+tC-I?_%#Wb5%PGG~N8d)r}(+6f-UQLjMDk2;E= zWqS_8xDm_*;Tr8VgF#5!u-cqpXmdlsPR`Un1KcEVje zDZm!2L{e3EIlUaAYd*}0eK{f{v(bL{NjxIteP_#OfIbplJ62~-hfmL<>}g$ghB~!K zAo9DYr*3u1!mw3hbd-++XkxR3oa{uCy|CWoQS!1638Zf!IIGCBFHY5yiqdOVHYa3 zzU{LHQP|^mi@!}nveNWPT+EhVxC_EC%G5{$=!^4i9c6{%a-{nLtecz&$0IwON^1cb`hTt7xBgBYv@d9^**1`7Ok$jxUKvlgeje@W3*uPQ&BM zbgu6ef>Q&Ppb5tQRsMc`lniuG4wFv|ND@xSmi`oQ*cZ0k#T8VCaH~^JwJeH(Ew7^T zf`rf{_vkj1;q+xQj(OMy)|)P&4FcXv+>YSBHRLyYe(u})?F(-4OT}>5{WP%_h#|MT zJl)bO(v=6QB@klskWOcJr9@hjRO8{(z7`62&$+ro_gdC1PQma9ubj3P0d5UzsD<^7 zFPzd*Q}-EmOr)6e7r!f|rTI~K{|oigsttrdnovKjRQUX+Y8Qlwpm=F^c!T-=J?>5w zPO1cj`68KcC-2 z?kmVNT=nOMQUY9EyS8;na83m)?Pchjrt?2~`ek5|704S!D^Qh|oJsN3_*XRO<@TM( zmK=D6q_V_32t;PLMq8eG-nwWZ^IWUe95wci{pzT-W{yf=V% zVD0St*ysvnkr;tiWQA}~SqivaF1W=qI?Y^94b^;_f(&~{VgWmh*PoFiIyQb4sgo0m z^#+eLS~g}A-{L{w9cke+>067=T0Blw*bP~e*jA1)7&P61Ew~bBRuI7*4)KNHwb|oU zGii>eig6I#cf*?2dDO?Bx<>Vk3%haZt!^T7lBDejc)y=q72$(ax_@XYWb?pW+vOb$ zF1~7wWXN{6jw%oBI>q`NH<{dYH2Mio_O-k&EYEE%4WF2JlkO)zL18O+H?s3t&4itG zBACu#MtgfGy=#}m8&cd)MZu$fjpHr!YW=$)NHU2|Lb5prBxtl^kqPmN+2|L`Uh<8x zr6(C!*C@k#0@n<4XE+f*G@VEb)njrsK8YI*Iim?D_zDUtx0$1ck;G^f#86^f9S1PYbBQaULW-op{G~ACDLcXRtSe!-^slUU_{P>O{Ic zV=mP3u)ek8mpB;;b98eU5bcQ=2P>JCwmRBYKkA0r=ACc??Y)+EVt2`xl zxI*IRb7alw6cL4C#<_@1=~=@#%k_BNUseY-2p0n;S&04e9e9A8zB4Hx;p6|l2d>94z zp;}+UQ*gFj4Q^z^UB|Np&pYc7)yPy$k})&Z95cKg@W;hMn z`%gLT&hS0qOEBx3(s^}t{K>>Z`lAnNL>4-_COjzNV0`a5;X*&BK6kJDmwkgX-oj^! z%zXulBXw0pYa8FD;^?kM`es2mRU)hv>(*Y~K9e_)Glc z5t8XdossTBZ)PKFtJg>5Guk6CTW`nic6&-+_i=DV!}ETFjVP(fY&n4uS3Y^A;I@&3 z^5Wuv*2RYY;o%%null1TOgk-pkatV)n<_&$`s6f2mx^${rX~a41{%+?ruHVBV$ZzI zFbA5$^=2Tr;XjHuF}?zEbNEx`;cz(4a{ofRFNVAGz>Fw#A}JN)?@|?{?VHw;wicOx zNyk(nl9m~8**wg{^6+J;^|X|G@Te_hQ|*2g|u;a(pv;L8%1X!A2G@c|#6Dm(#-{7&Q*j}5F=0XW4oo6;R1;%3GIM?lKP z*TBm{@}nVD*!M+<(R)uc&LSfDnRQ2tk9Nh%?dPojRd=rYQZ(dGV43d=W+v@089^M{9`w*9?mi@P zkUi&trI!2LjWIV<5|LF+OxTHumi08ZhI>@R%M8${YszGMuw$=$Qr@y{_R61BfucK{ z-R0fB59_IInrpt!ZV+Kf!WhBukq@i06};!=JVEOx)^IgkUt*c-1`Hp)_qJ43rK-8x zH&h9(X}y(6tXa+LzpyVOT@$6pG=NDF;vXk$+TWEUVo{1#V)`P}5bG&8pX{_XNE%F*l`d~;{cN2!4KZTlCFA;v3{ z5z!$}-}di|w{C-&8Sjd+ZYI>!+OG+ZL7;Cw6q*K}=ggiM5oKa%^e2RZA&~_eif?M1e2tyje0&1&-gOU%u7%5cejrpT|Dwiwq{pt$g2Th$yuM|d*C@@Ro%OwZR0KW3u#GQmhJSVuFPB|Y4nD(aWdS6;tB0)MxW6U zZaRcWJU@|)YOVxs%)Q9ItqaT0hhs;uGc$>50Z-=X&(`AB z^fz_fbgb!nm32Z4@iLm6W1?=)BNFxMz4D2Z+PxmgRX)sUq@=A-I@j)ZU|63wB^W3B zN(!voZj(0h`-UBbzH^Lt?xObg?fQ#^kH1DA(qp!JZ*G9ScuOA`7|OQC(^#G}ge*HJ zFYyNURWE8#x(W>T7^==Cn@fd*gsmJnaTiU7pqPLOegu&?5eI3K6_J9mh7vlRd$N!{ z!#{*wRIQqBCQ!ykmnC7?V`g*xFY+t2k z?(dhfdQLEw99E+uN3{@oSs=maeS7~p_3QS7{p&C=zP}|K!l(E7af+)#H$(b2Ej$~0 zm>n16ZHmSwcAa)%0e{np>sX>WdmL*NCT>R6hJ%^|hXjzhsvK_a>R$)Gch7pme{y&e zf%S^m(pdI8l4*{*Z23h;VCVxSz@JQGaVwef@d?zREJfys4|ur!-?W!6d0J|8aIV*x zZo7xtm-sGiImHH#Pq|(;JxZFra-SMlAcmr&Pd^h7M>ees#mo7kUfzZ_gG|@t;r_N2 zwx5)|t~`{*)Zo}1K-6_B?-65%<+vo#*3)v_PDfb5HlXu;|76y!y5QwUs&>g>+Q8wv zNo0~eG7S$ldugUOSJouWk^&z!&lD=pMRD4C#n)*g0b3L5s#MjEF!SPP1?Qm}SN*=X z=`!p`(s7d&=1^PzHh0$E5&k8XB3kshdt-KCux2ERbXDj?re5|CXDQ0}T9GLVOPe?VR$Cb#I zbl&8NLK~D4l**UN*l>M%8fZ4KkIP{%uB5FiC1&6MT&D5L?Us8oUxz8vOT+>Q-N;Ci z7@M~X3P>4b?m zKm1U-oe${To-{G@gPLuEU^_97Ps2DT=Ls(;Tl))Gu2Ix6H*c!Ea6T0YzWm-hxZ!De zi;-8H`z`wn@jC7G5<{CvKbeiP+Knw)Fq^-Zec+ENpkK$vr<8H(d$Z5&&iOx1Kp}q` zmBtX+KitSaMNjs>t)FaGUvPDop**A**msLv59@)=^du<5X+L(k!Nw{QOcHdwAOQ+bufO^-OFFJ71-WD_`>ypz0}I`|eC0`d8` z4^$WzR~xYvhE-!Wj_#8GY7_r1=;oT#-sOsC9Hlwk>&4IzGYF&8)Sxx&11yE8{NvY_ zzt;BQ51;>gY2Q@Tc-s`+e0zL_S!aaO?Ch(g#VLRUsl zrieW=S`!!U_oKSu+>(((r?Su*Vh()TlDR zr2B9mz9PmqZ`ZYZLwh>t>gIZAgFaE7BgaF78~tW!Y1zpk)R5b~KV-}|(9!BO0lwr_ z5r!F2vN3!3KUU}#TkR{Te>C!6Hv{WHskhMmeC&c&MIUF>zPpVr$r)q}*Ad^O6K zW6v(XEr~jyUpbJ9O^t5BvH_u@u-O~O<9~LvY*qnHjBtUgJ~=87hmp z7gb#|GB6ZGEPQa(k;rwI%p?LuFrnsi4kkDzu^b0)X>|`^`WUQfonu3mk$rZvNmwe% zw}mR$>oj(^PgKP*am9(Yh1`T9qA<@Y^%eECF)` z^61-4_YiYMNJQzC17s@%|6Ms(>jU8q4v*mtI4UJx>cD!Mk*Q_BB!6Es496|tqFeDm z^2J{&$~Ng)P22Dakki`AaK=D@oRwVZV?n!vKkSg7#{H&T=FvrIuACrQz6Mh6?-rEm zwxzxmfW{LPU4KZHbYpPl27nFOezMl(exf>=%paki>PUn1TIDU57EhC(Ux!bW zga>KKk(v@iTT-HkUj8BxrQ zWVV|SEuG%I`M3J>izQyf8k0RLb-uc$qW+iyg=_b_c1`1QMbH*)X{z~i!jFI^C`;bM z(Vvy)_*m;_`SQnS1Gvjb#L###CX#>vaxe{~3UVzVzoc!7{Xv|T{)S6f{N>uwdMNlO z1o@KH<-}yg8&cH#NxQo0d0z;hLZkwbU%0nA#%6T7Qt^lTGR|x{cJ+qNkuN_NeuY&MDt!Ji{G&GJe(vv8B0KLT;jd3j>PyX0XqW%f z=XKE_-&!2B>4XU$Fak+r5E4Ks{Ahhr2!x{IM zrm;4nCB^baJJ3m$m-0IadZ4b&pI##rd#-X)e4+Qys~=Ed{37SOkwtrQBTsa47Yzr= zG?elqX!`PedAR3k(!GI+-cbgWD=jF$$CBI^A@#+FhZBKE7DK@{tw2UUvuE#-24YgfrAijbo-URvZ9qrtalj=ni$Cy4l+6t%X|tQNCe=F{UN{xFkgFx0ZyTnKDtZdb+oP zS0%No5%0Yyd|yMsF13^#pd5(9MS~am@~%sOM1I}I?==KVxLYm=7fZjPruC_O{-IIJ zBPdp4F8{u;_9`@{nl$h6LMx;W%>Pbqt<_^nwRc<{m*~F^`toyjCmw6^cZ6$TBIOVC zn?3Y@6Xp8H;z{sb?(v9wq{sK!%-4A$Z0#0hzw=*8Mn09A=Vc}13X%_t$I6;tzH!VYNpLE z_qy%NA4EpHAt_bF2ML(6*JZ$&CTGyPo~fw&;wxP}?x)v?`x`d+z_v?U^zQu$;w)uQ z%23A2+kyeJ8G+9dLZf8{^0pb1kzW|SVU$F`cB-^?QJM9MFrD47dm9Z#VCkH+M+PTj z0SNa+0!9wt96?CRNB?%jvQFwT1;;aAc50b)2#tqxF zNDS9HN{UYV7Di04D$uO$zO_oUA_q&8vGSGI7TKLQ7WlGCr zcOCkunX=|LPaO_~jNS$dCQAa4h$>N^zPqSu?0Puo38c#(t9KUc zs7vUSay`XmNg!Si8HrZ-6O})b^h-YOR3*7jQ%23|qK;}>Gy{BSr|0T87WRP*ct4`>TO&9#SccE@KGHK*r>n=|g>snUY`@XFab*OzlD+A`G1xR8n4&R`D%#%u#kCCq(td3U#U1IoDQiJ{7}~$r?`KV9 z^h(3(bt$mU*dqG1kWg8mw{abogfsCr+y56|J{otLaqP~}TY*B?Qe7CX$l(hXZ%YJF zbt*XAZfqI8yObwwm2{m8pUx^KSJ?3vY^V(HY2R2p?-(Mm>>P^GYc)r6 znFLJ~MP4fiEhoe+Vr8@|rJNo0Zw>Sm$^!$fRK@MiQ-epC6jhH$Y8@v$QLhb{Z=Q7y6ik+O8T*;seT zle8$)wY8nF1e()i_f<&h=&5xJkB{8oWf##LfnH>Rt9si~J7Qb&mYrLtJbLa;1-|}r zx#)o>;u=XPMXw8Hw*hQNWLA+4#~f=ItZqwu8kt4bruXx5%5tf%f4U(~+t+59&vC;F zdA@n1oggyQ0~@+Xr@^l+L&Zk5e&h5-_WHpdb~dRnz9v(7scwJrZ3 zB)+Z8%8nG7v9=*H|Bx57`HzkWXus(9{{OBcJ}`Zd&_!u#^)iyCVZfkfvenIX*edxo zJem?e?6Xs$mzh7|gR6`J#e9KDNCq@eDZo2`_I_#SHH-oQ$F=fAp+|3>jdh#Zy6y5% zX%;oxWZCT=D=!#zk)Qck3$tghE83Us53~YcvS+!SnH?-ojlNvI0sq*OH=t_yfIl)vQKVeS-)H&779AuxyZqfx{(>!g#B& zbegg|=TAp~Pq2ue(?TXANt0m4+Ds(Dtz0mnQBPH@u1O3QH2Al88(w&NF}trVygKE4 zD{y3*BK~WVWqQbX6XyG-KVo$)LK3UZ_qzu%hCaIKpkRt)&>+*JZ#drCPGUw6>wO3M zfofpo!=WlLT4Qu;umTWx=4vT&yLmxHs^b`y{^@w#-%8NC*G@Ic3+iyWSi2N|Pg9E@ zhY|t45Ueujrd6ZA!D$O~sa^{nw^v0$i~CP;QX$Ad$CE0zbP6@4Z8V=h+g8>QD!1OPiR{aX_P)U zP*f{BVE`iAZXQ3Z>uOW#H2bXd^LZg{sMAqW%^6)+P^sU2DSeyFcB@jcTrp7I>Cix= zI@!m(D>yI>B-Gy_?a+TiSJ2^N>JWEy}_?P6IY~0x;u{F-c zy6_6&Vs%XM|KdYzYs`7F*@!9(RhVW^gR`h$o-_3DXrH6;b#@C>jON)2ve)Kgt31rf zs5GX*EEf$E;iAne+_Xbt&U~J{vCW6d0(?di%7HFv&0`pLgvIo2&pl}$= zKWaPCQsI9m-YU={#^30odES4Vs%CUfh!3%R!S z_8JEU=$w4^A2nX`?8<0GY1w~iynNkT*|l~vW+LrsmJCw)3ax%UfZ5z+5zVWa08^Bl+3 zgEJyX5zu?RLYc6m;f!>MTeRW8YS-#SB=YY6MTe7{ahIvH{;9h&=iyU#?gd^h`)xb6Ksm&?s<#IrEk~$iC=dlSt6eVr7b8+F^BGHHr31BR{j(KbFs^vP@4b)U zA;0=2pL+sRqBI0ivqA8ARCGIcD8cuygg*o3{h0+DV(LoNA-ww$rdn!+xy$*Rp?UY*;}*FO;Sv&y|PBdmvK9Q+z1pn_k8>v7l}jYQK{w zR4>~PDecm^gl+qeNFcBJDqQL)2}>Co%=hqu&6ISz?Gw1;(5rPz`XiZ=mpL6B*fZ)H ztoIWXOJCLIp4_%xsx16jGt0c>mlFF=blPd}qxVTU<7Q4f&Q*Kwq?u|&4KM~!)Hh?0 zJ?&j^Q`~z@^J{b8)77DvOq|b$U*HKd0(cuI=j)^IQxgRK4EYU6Zb0|NT?Ks`$;RV3 z#|VukEBv)#oD{aj0L(9ukL$xY0X42m!D*iD{2%T`_~5huMd~)AJmXMFT$*5-4-Rqy z#;{5c(kohq+gq?(93>`U^A_Vaowj`nipCiVyRfj^TftT}fPN|aaCoU=@U|ze%>Gwh zo6rrn89SZBR$NZ_*&8-1tBa_*TIB31^A#;*0)q$K5rZOb5uqVH*v+7fQprns{W->JWy1kr~S&Y<0ffpemzvS-V1w}KO_(2=A z886%#B%fuguHJkjfj-?ESR#c}cSc9^@+LrmEH{m=yj>)jofkW;_*vD{l$Eda9P6Fy z2jMlA>d*khHSN@h`k%yJ`0p{5G?sBd02^+Xc&B;7I-4GHbpf8UrbJEI*|9aJ>Es-j zupfF{{*s~|niclZ6Buu`#<9~D$415#`CUI5Di%yKGG>czh<^jM=)S%3Fw9cIj7v|C zxcey;;L*H3ZplyftfbK+ZyQCF(|mT|gk=+)bM1yOEk$JGKvVPrtgrm~XfNAVu%dk= zSJ%0>K<`}u#KR8iGlVTl;T{RU zPk&ls+Ly;(qRvh5cmTp%lap0u=(U~yMO!J@CGeR&ZZWz;<3DBJ^n@9gB|b`hnjx&$ z9qO&>wc`(seCNr7B{v%KLJdgCIf*~&D*~}Q|8djs@HF9Q{}&G`#Wo~=#2o@zay%aG zQ|!dv1ZTERf-6tQP>w=T#A0^}Oh2#9MD@jVzTSt(_TQFS-H;@lc`)$|+aVFseVb;(P+4SOEtI0dN;Z}ks!!b@}%HlBblEuGz*ZIYqYT8z!c*j zGV%GRzZA$bZk{X%eS71Z^oBf$M5L?vAVPJ5gb@qd$!Uj^g1`@3fH!tc1aWdyKp6`p zA0HzP!GK}oaQOMQC zV}WQzL(*=jeb#-)2Tm`bxVz)bJv}cPGcj7wI=Q@90axSD1loksc-fR?VRI;Sx-LpS zp4`e9cCAiRvM4Y_aDs&L1C}wEUWx^JPJ+?1I@_P}(^sU+W0J@prbXezxc~sphgsG6r&>5dK;`Jfp$#5jO^j^Yn zNK8fBaE+q>Yb3j#iGdVCB|d^p$)kswrT2WDODa{9mpC1}ES)&3vyrWHa$b%agF1?! zGe`sbgG0H_i~(dGs82?QJ+_>ApDb6pm{uM)2&vF01)jx{hK7bq^kynLG4OPsZj$QU zne)Q(_to1UeMJ~Jo0G5ii@hdB4p#RMu`C4(=Tz<|c6>T?HGesQq2?J{ z*K`lg+rGS?d06(iY|-K`uo913)$S5Z5;B++*(fK#y^6A+|Kt-Y-f?% z(j(n%QXPVnIr1tE=2d_g)xJv$k_YB!Z2}fk|8WWWi zB>C048ORfE?27pw{i@GB4imfk`P=|K@?-G9(^Eu@exD!8(b4>tCVJdMzv5_6eC*XI zy&QMZ(1eJPV6!Q51^Tes_d=D~J8>Wbr2;xDm<3%>+|fFR0j*FMMg|Eml6Y>yXT&nR zmS?bG-_?#iFZEktzf(o;*gOWe=e9|yl*lVef5d=8dW?%%+1WOaE<=wt2=c7Dk5cK8Mer}NF;lw#4% z_r$#$1^x2N8`P}dCD2V-NJFLdHhwf$M<(1!c)=fj_bm>5#j_{h8HopjMr8%rsz`Xy zZlM;-m$j+UIy&*uTMS-anWgXTiBq-`bF8^HHG!N5mMmMLX(eG`1+^&cDH}?dF>P{a+*>p+|I~1l(PYmVXqCYd^O~syo`24yZ<3!~Os|&& z7}j^1xBdd-{Sycspf*EpFds13?+7BA+K9ZptjA4sXES6b_Xw5sh_$^_tcfc0hj)Ug z&wM*qV@rtLX(QN**A9n_T5w!J< zXXsTOTi@^r?m0e&j^phb8w-pn@-rcGSV1R&vqNlsmDj1k2Zk>lBkz6F4dG~T-LCcS z^}d2~t<(?7(&j0j+}+Pf6DEoN063NZ4dA@zpvgOa_^h6v$ES>}zV}u5COfugL!&NCFDr!8fDBkDT-VtY7KK{3b?Cl=@UlwvF0Y~3%@5Bes2uur4zSJF} zDTF#_p1iys#>(7M{DiuNTsIYA(tUVk?8k-Fcg;AzX%3d=N6Mb#kLe-5MryBjM+>tu z3-_J;l+ur4Fm`pkq7Ms>vCDBQZA9>jyDpG-NUuwZ3ppE@`O~>1<**`rj-MQe=8zV) zpdEmHho<78gc^8q@DF!_@Yvmh!28p%Ehf3uMUd6DR}%^2fAvk~Z|{TUf|6zxCU29R za_9p8PJpUr;)+`zUOJ;0-jx)cxo1)gVx3=|ziZUm?;Px{I061N64~H_DU@ndg<>KB z#E-KxthlrFOq1~SC;+#p$K}g%!VAu|G*n{Gm42r><>l>>shD`)@s8O=GGzHb?-y`> zX1$D= zOiQAG|7&x5TaomN;Ck>4a!x8K?H-S~CCt4-U%ykiEA%I%q z3WbAi1f7DP({bga$&iAQ)Zd-V}%;bSvz3sq-7pI#rKyEK6u8!x!)k-+tIL7&Y zill%nMX$j>23IfSAr|K3-sU}IO|zUYAp)bmznmm_M8ba&rV_U6!}@mgzBkRKr+*}n zTE3zI0z5x>3^SwFT9|9Y|B?QnlrPCe=w)&IFKox^*~5mr`-5;IqaF!v4rVL4TJ|H` z@fQ1E*^d7IWIM%wupJa-+y9`QOc`ySe?mK#=F&cJ@6v9e21Srkudm2`V!oy_u+))T z{Ga*P8K0(Q4d`%3N6;8CN|M0_wQYTst+t@t4k#4~T(;&P)xNo!fIKncJ<4cL3|UiT zi!RMtyP?3s(SJU~-Q>{GN)j)MP6&+A!NtGJSi|G`DEyJGPTokg%M& zm{;3RWs^U?I(Nj=Z1G4auUWy?>rE;P_T+M<#o(;ssPY?n4s>K6OtD#~Ze&bBoZ0J; z4srtfq?YCYtG{?8o&P5*i?ecGOPRlW+^g^si*x^+k$_H}(R99HXOHRd96ifrD2t$4+#4W{(KqMNc|NXI~4~m zPq!>0xJ4i1@E-SX%7XqtJkGxn4~x`)Z+?8aQSJNVEZ3Haj#0EXT2E2VSc;Zv!**@4 zCCSGB6G{R_!-Wj*I?1wW?jNm}hUvHwsV!R+fsv)+HeR-4Bt{75q;1H`rjv!}ld~3e zW)%hKp3Iq65lH2SC>^~*hMFE&e=~qkF07y&-m^9e*!+ok^U>nN>-&0RMjxFOnC=w~H)oV{x&}$Li%r{=# zZ+}Pd|C5r%&6z4kQm7rqGNps!Bu?3HuMCOVxj(~#_`Qat`4JaF@X&uQpR;IN&DhZ6 z!1^}z77}I{*!@0H<;XjYx{3`?l*`^S=eWv&-3+w-)x%-Y3!;X#^>Z1n#|>uy0G$`OWjCfrBWPhE0;k1`1~P*AS3l;EfA?{Vi#a%#ccvnE z7WvqsKBUsTKqkEX+T($|ZChayZXiDCy9yzi-e~O;1u=6BQXJOnSF@+!vT@t9p>Br& zw+Bgf6TWR@GoChqflJjlaQrw9nK0GTDaqK`anD`CkWZ~zQ^)NDZ_1mW`kr{cd=^(` zsB`h;WPi|+%dG}mfa5QGhwvNUiQ-+wU~24vE@M6du_KLt2w*B#t){%sWWvB#b4DLe zp^?xjE}Fwig|UNlPLlh9 zBw27i)8Q307^DhooizIe3H95G?jF-%!4vMri;cf{4?%rZYu#Ai{`^Cb896aaq)LrN zN9&ir0{(^k@PKVg58AHkRZMt(&8mHg2EN`83$o&1ddp8TYbSnQ1=m35Io!8Ls(^sifRlM#v|JSz> zb)%&>@h#aKCxTHi1Om#GH4zSIatg)H8(SbOQWO;>I8?4{YYbF<1CV^J3}hJ-cDiIs zq}}x7ih~`C&CFYo4x&{A@@+{Kc_6lG`V0`UMLQm5l7fOtPD$x{ADvO=+^IG4;`*$= z3dC8~UIgRy>$X&_{^vE3@k@3k<~}1mq@n8>92PdSNSNDs@j33-&EHsiN!EM5cxJ)o z=34VU(LTD6g@CkDl*idjbH&i~*l6T^)Ajh`GK&nak-ppPp|x;oR#Xm)UlGw}!{!0& zEyQ!qntJ?Vnr}iw|9!zA?7lxhHY=?rOL5K0d%n9u1%UKkq;Xoq;**{Jq7V$!4HGFq z582qR1gpC#2jV#h)t5^5dr)a5o$<@RZg~jt{SW7w|H)jQG)+KxC6qGf;Dr!xOcZ_v zGqrQ;BfzPV4GJO+df=SGe0H4s0TakRj-CJ;hd*&oim$IvmE~q#tAG$&h?z%)tV^FZ9pri zPq^P`*aGDzfay_xI=*y%v|I7SVh?vnj}PYYCt4{}TKwVOSgfKum^`#}7`HvK+1zFY zUz9bTeiVlp-hV6U59!6dNecB?n)*<(ex^wzKPGFMl1vQf8t^%uF z$7Xe4l9rY(Z_kqEc^l6q(e@6Zu@}2$pB2YTIx_XUI`o+DKjv$XyWN6hH*O};qap!m zEKn>nCv6E1lAhf+-+G%44bhNyE?AK+MRxK@>gM^D#|#fNM|-GH&Ms9sb$C`CmEq<8sa^tY=z_(JvAFL63j{k?<~Jdi-;j>=Lr{)-SJVnWG6R$ zWVwFEjOoY8$TH&+-W>J(#j&vxjAnXq%S5p4kTFfHAX04frWBr=#1-p~SX3gbJ+$U5 zAVmxYI7{dsEZ5l#<}k;%0JCn06z%n$tb0kr^pTE!8$9JP=58$EEvuG4YH(%*crWIK#G4@!2g`TD zJ6X-z5yHrasN*Gby?-R-#ksXYVyp#TYNbX@{t_szv$w;Z!s@+S{dmc1eli&FjgSl@ z-O~~sYUmlBtr+G+krjnltJdV>%;3FnswAh2j8k}3(aB+|@lI5p(j~KxJk;L6BDn7` z!U@_DF4ffLGPJC2k;3FH9HiZF!RI&q>ApeToGm_2z*A#Put6_FB>WVYwi3H%1i4|fcHUDXy7bE>d%oza`n|TDw`d#J+%z)1PX>UtkN_t+1tk0#K z+}k*n4Gyo!HFdez&y~Q*94D2usszoVT8%|t0W;IQ#|sT;r3 zYykMG7XA?ztDJSUHmoT6K(ITulcayne5x&kw1C{$bRI%T+Hs!9fxK>{0;UwCg9kLp#C2Qq~f&M%FX z-*u{7dl$Li$0U5plmW+i+nNc!2-+`wKYEWr!oU`ND3Xtkc4fEt9oqWe*bGjfy2T7> zb$=x3-*g(@g?n}M;9V;QUvA{M5p;4xOX{6^Y}OR=wQ349JXy*mEvRvIAGGk=4r00cJ{XJOKJ94j&yHQ<35k;h0bM>CIf z5@F{o5_Hse3eCyWh)%UBThLM8>2mo}$Mv`Tki z9XhgX1cBj!YZ$Aqcs0Q!#0D3Pq_lxU1f>^HmBOQ|JQRVO99lXlCR-LDrlcj`HLqdW zmQ8Caa5uWX=kXdMYVl(+93ER9fusEB?_{Ph27OCkyx=R1Y0tW^+jtyBt=lLTwz;hQ zy2)q4p`eIVIUabI@Rb{rs&7E*RkChr@xgEER}a6`uf)mVh`0g>h1g7Ts&`LY3pdX% z-;vIN^MNJ%BG=)1nd0SHbDM|%6RKt}2?du-V%Gw%I7U|#OmN%W`A|$Mi*Xs4| z1^WA@9lq$K>5i$<{BQkkfsCz=O{sSe%ucN;0 zI)M@bDFG>fPsbx8A4$x7jreIbPlK## zpkVwh(T+}1Upix*Rmc59*yY^|g;3H8R`gQVVnF5<+mY#?w1w%4wk-Kz$iIM%GoXh{ zE9s50jBmsg5@YlG)Xgi~?^FkAzWd+t4cCik`;jY==oAoK2l3--9WwSfx3_0t^2&ym zEw{XdP?Cg^DlRWiCHzjCe(k>zm;jJxSEvev^y%S0=OoQI1_3jobPqP~Gq~A@sMVx1 z%4Yu#!MH?6cv=!G@Z1RSh#CaaWaOsAL@V<$tQuaAh+(%qF0@!XI5&b>puyR~y=n`k z>d&<9P~J7nL-cVZG7x4?d9?0ws-_|Fy->>iqXo)ZMBa)s*Q=W(YX=2zw(ifw+tv=} zQmb7S3EDhl_5KmGN)knY_T7>2sE94Pj!v|!y@*gD(>ByH5}R=ii|vu#rqek2i9z5=ns9SrGHgW6lz*^0^(rZ^@j1WQPI;66=tHM2EuHC?dsbigM3 zz_{OV^7b7O?W7);#Zq6`^6+i*N5(Evq}uwKYSnyrEest9OpnwA;pM+tH(Mp#TkQ;5VTFWYUE|0@XF~uwYK_J^j0@{c0dfU(2U|lS zB@F`feHueNKCGS@URsUAI4v{dNS7gt)tr|DRh>6Ck9dEu6Uv9bvXebwc_xS&mYSxg z5E*AheEQ6s^hkXc&?^?h6!Df=9K{#a<9BnAOC(?&2P)!eMDXeN z+VwYa%ogofbO^-1#{UePp6Lm?Uw4bDWz#rij5A8L72zq#H6_Oh2YSMGg66~L9D+Nm zs!ZJEn2OG^6XKR!x9_Dl_qvr&$E9C7m`PUFE8%FYq-R?8*Ygq!p=kvJ9gie|&29Xw zR?}L)grnk%68pmA=es-!Wvr*;0-_fmamk3oZ<5Pw?TMFs=GJysYyh}>c+fv5L6)*+ zX=gE6J24Jx3(qkByRlMPFJ0hN&h)4O1v);>qZILaZ?*vS33p)D;vy>cQajXrIW2r- zRJz#;+51yaE9qHMKfNlwrYMw2iARO52}w_Q4wz^_pJ3A3?$djoRd1sr*W25}#c_(= zm(?Nc>3K0+ut7a) zz6lk7XBp<7o+be!wg^^9Uq5(=9Tdo&x}j|0iwF@d9m^8kbJ!cm9=|Ura8LKmo5wwj z=*OdNsVnj#2pa|{vAv&plqxYvcjNh$DX~>tiz6NS(jqs5!o}LI6#Fq&{2F3($))yy z{}@ZCsHizRHN%B@MD$MS(H0%>%O0BR`j2w7_#En&`82{WdH$mv{oBFOmjTm%8KLd~ zV86W2fq6Q{=?{1X3Egp~6uUb>wx>1RHmprG-l`eZmgUqel=Dy)(99me!(cj##PA|q&K%|QRCRd z4)y{kgu#Aav(ZM>Lv)^MM<)9M7+^f@g?M;;*=fIX)CEhcREBZa>L!OI+Mc z4)o-VZ7Vw%2Wym1Af?$55fJXy2L=OiJ5^(28{Y4=Zgkv>pDQX=BS$@FuQe%tx)*VE zIbppw!zGc|C|gXVxQu;z7r@*b;9uIwv^G>!d_fANgC^N~VAw=Wl-Mv60?fl@KrwZ1 zmfyF(Tn68;WPDiN&Qm}GvN95`G7a9+=WlCiKq00Va~PXq;}h9U6c_a$+E z{P+0dH9I99vHE(w#yLAc-mhO)EP4*cL_f~SczSL+M756m*kYRTD1cNz2`|?gYk}90 zzVO!EKs8Emupkpg=^BIX8i^qKrkH{R4@GBndD7tHym#1FE0!rvceK1bd^e+lBS|vo zydUu*DsI645CV%F)<<)MF``+{T)rMST)URS=$|NKFpO@~ni4?u)YHj-3lJomDPygp zm*Yg{VfqR_8nGH45g~1`*!QXEOm+IP-&jjX34t@Tl8QF%GCa!8;p&Y8M^sp3R{F>R zwq4^?z=6`S9c+`rA7$Sw%J`Z>nCU2>?Va9s|H@-vU#V>Sz&x%m|q2=a+Tq_N-4Uw0(loEoVZT5IrCzWItQ8hcf zYHAcXB7Cl(btneD8#m(@pATGqY2Y&f*S1KNKo@ijFM^AI*sTxnx;@??ZPhv7&r@74 z((h{Zmgfb#DN|hxIzKrV-w*_7xl}U&Urn>9b$$}kH|fBNca|(3t0~np)z5BU8qHZ* z7@{~6Q@nUD4X;7qS|GzJs|4KD+BSoi*MEpR>8P1G^%7HLrVIwe`-k1q^gFx7!7s^@ zGFE*58mieq!dB58yjNz{)a`WRgmO&oD;IyF6|u65Ujk?=AM66`1APjruMT3OVULBL zqer(6FM49|4Y5ShMN-55j3e|x=+v&*2d!s^%A#dNyKi=N6M8f0aOOtQXl+)mSE+=4 z_DmO3q9o{UVDqrbR0Xdzv*yFwJyg#7(u~1~(D)MDL%?t}K}O*l3g@pn3vEoVA-qRu z$-gq?oRN#UV~(iuQ@eZS6K&!yIPCFQ!rSF#trJgWxAY)FV=a(&?^K~k*;c=7n448# z{mQnwAP|$~UN`|f6f2!iz=7nr6Ytk9BBJMA5}lBL%}ez_^NQ;th)DohF}$L z8Z(m&h*@z;v#|J;v8hmi80T;ipD_*gAE{cOLmAAy-{-T?CuTI~ieg=y(Z#W=n{3#r zzCy97Zi|VI1?M|Kezw0uSN-fS!N@cDgo@_p1br>PC31E7{N1Tfu&cN3hx}3&9uo+jh#vly#!Q+E7CI5+Orj zG5>x+(0f{Yf$Ya)BZE+?=QJfjMQ@@K}UT~?ao zy#Ly8EB&S6W`z3_*SyAW7pHms1J^VPf5kP~UvLf5H(y4_S}h=V{7+otGvf}87av^T zzbtL7vLCT(NjN;0vjh*^qgCyG6=&tot$TEMa>UfZIauz8)~N~ZL!j)hN{v@sg8c`k z`PQ`LdYi=E+jN?vqr(fL2xT`e(r*SNu{N5kTCFCy7|@-j-bJLI|A^3>y8;L8yd}iq z=u~B<#>QoTtgicLHU=p>v2Cjo=`S;?sZ+NyodLhQ_Krph&Gwcd=ycw@vzG5);LG&g zKYjxowX>`A4zYXGR(u(zQwLwPDM@_N9$!3Hvz{CIx9E6*?JNyDQrM8OZ^n{Bc9+lW z0R=t&hl4R((84L04#P}~8_xCKYHQpI_BPtDw|8dyJx>$9py2gI3XKxHK((*0!((EYA_%NJX;CMjNwaS1w1brPGMY_xQ}0ISvxfVK9QrB5*?>#}Bst~awP1-y9jz}#V06n4ZPyI5Bp zeShwUVFTQl)MKk7vcqEe>>n0)9{P-?e%4=OxKVrOhNFyaUuF*VlKhx;sHCyx{%b=g zsNtHQgqG;VsJvo{J5!dup9TyEErIn75x15I|hKvsc6J=hf1i?>*Vk z1bwje1?)w?DZT(v!5D2;=2+rok0uKNsRcIZRUDHcz{3vdx|6ca1$5Sjt z@x|jYKA5D#YCvl2iSf3l8>lqnBs8s->Gyu{8*fN+SumL%rvPMPb&loDi8;IA2zs;) z=XL*P`e=VOeO~|5^eK~gV?R_G_3&|uR!3o0MhQto*kR?t?yOiPk~%*kybcWwwnLO; zC{n+c^`2x3rmmUT`y>|IqVNOw$&hY`mpHSM=)u zY!n^5;D&D1F6&~wWReYo^FI+IcZ)C<;;^wwD^&m{;>{(5j^sjiOKwfBysg4uphUKP ztZ;=SshbsbsKI!=Cnhy|Ybi9KjhK9oi=D^$zV0De@b6-M{>tEp@as-ZnHWR84;AL0 zisRt>OUUt+M)pxNYie2kM>v&H8bOuh($>_y0g6m{btji|dAuL3Jx~Ur2+jIq$H^v1 zqn-?{n_A6RsDf;IiK;u((=eU9BuJ}r{TiI>zGPNL{co3w)XIAXB|8z+w=-tN@o8fo zotlQiaQLRwruIEZsiRr1gJ=^rR<^|UO?IDC^(-&e>jV(%xyD?!lTrgLQ44w*-Y6HS zK19Z0jUjpm^I{~;V~i0IITh@6o&5uFHn*>IFnw4x>Nj6@@T1y}U{2ai^ZycRC++;L zA0#=?lh%u46R7FRzu)KD-Ed{DTP(It+Wcbt>=LJEICr=|ZsCg? zcaMr*4CxG{(WR)geUOBI2sVGwH2uTjCFzQxl&kh`hn}8ldY=ki)K}-M2Q;)*IgdU5GBZHB&7i;zi^c6sUbM(0EeXKVlpd zPNhy0@Z|+t&2AL)Tb&TcN~#-zLBs}jZ2X=V=Ddq+6r|SHBljT?)>=HV>4O-5`~ihiZ2##v z&YJ=Q?M-%Sk7c(&BG5?(43?MtN3i3!ew$WQJd#EYLc8VDnlO_OYlGSSW`eH;8JJp< zY+mbvZMrcAKXz|s+bPXVTc}Hb2jZ0>Ykqmhf(TSPZ$0a zhOC!Znd_E=^~LpUT}*9Aq-DrWEf&+G4u2=#j2o*f{C)@aqUU+S6Y$hD7cO&j(I2|h z`SF`ixplwOHCOSgS1xRNRs5N1{7*30Yi;V=tul zOQ^l6`MKvBdEk2uFIgdp8-`gC4?e7pssp|>;O%byIJ*{IhmE)f_hl+3jYy+^kNo`K zr4A7kZn2oinR(1|gsSdL{5gK?skF$Km729S2$cvK-^XG5O9s)o^MofN{gxiqd9nVo zeo4gs`%#(H%#ZG^SN7`8nI>=vMA}G4tq3O8?;6~~3VPSQDRf}}?4n$zZuavi z5|0@1-*P`aNd@{6&^x~m`ZUD-WN9x6n`YT~9Jl95e8)+NXS3(U*ChA7WObMf2?vVb z&w6Mu>SE5#V&GE1E(j;8NGr}PPfHe6o&eEolIf0WHL9ITG^sW{SxBn4?m6n*8g|~E zcQlzTycoyMHj?Nj6(0qCvd|ncog;d_Nk=_zznffGiWs+}RA0#1Gzj!Y3j+y-@^bG~ zKLSOWR<;IP&Ij}UXbq)s{e*1>V?yPjB~q z0PiR2&TI?{yna1OkSYj%V}8VhZ99qzZoQK+)o#I&uhH+8p%Lf^Lgtv`B4T-;N{$5; zcKYXey^PDAhP_0xE`)+`KOP%idyXwrjW}utxt%vXa;s-Qs?ZYa%{wJYB_-_iM|-Gu z4ExKGP$gtf6>>rE6{x4GFf|93v-Zx}tSRN9g!VV@+VAUzos2tX3*YA)s7dN%&37Wb zDG6qm3Lq4vTepzGDi6mwNkz;8$A}bfADzJK8^gHw!Y2ItPuw{9Gfx-C*2;IpD3&Bm zIL4_RU(98?@)yUDIT^eotJC3Bo$c*l19)0>%9&-yF8F8_`M^D$H)R~Rg+Wgfs*Cny z&mP$5C`t)u>GsT`{G?zPS2{l_SVo_|!tkQXBVcdV%+FhPr-EBUNeEf#OiqJ;A#KwC zjnMIAd#y0l@H{a&tK450SGm`$EmI`#U(L68Vi{S6uua9nfZ@uIe?z`q{u>-&ji=xZIfo^r}Jnc^& z)70`PHBXr?72&<`!cMk9s>W8+O4Ld*q~&!Y%Ye6Hblv!HXjPReDftDDsr9717MqB9 z7HqjgxHRvlSf_{w9e z9flcUi-EY?XG3qYP`~SvIaEArr7#eUZMfu5kc`?B|MH%e12|qJr0aZDpAwo$Urq*9 zjvb@>^LE`J9z0>_rRX<~)ey=s*rJ>(;h(vA@biQn2k)O#tTx*Nnlm7bbZ|1D8dlF| zP{U@ofw)H}`tptK(+SXxm~0A9Nkv*GvE|3xZ}3|tUw{Fi5GgC&5gGK~riOC0QFNmh4=IK?L5pJROQstKkSym3CP4(AgkVk># zTNIx>c(dr49$L-)W6jix5qsFePFHAz4YZNIr>7iAQwEhX7)^Zkoy~SYVEKu#~n$(>H)5hJ>yiyKQ*4zYQ8CpSYP$~btt&++d6w4MM5HBCT&HV?-|Zq zxXs6BlZE7zTJrO@NfM@7=KRJkAmfC{ot?PDNkkI^rcKE4VK$|l;6 z7Q`dy@%Pvd&x#+yy8O8=J3krMKFa*muFWs2uB{R}A z)VvjQn`d1wl5y5)6hSq6ZWw;8A?@=@j15XD)jKdF4*F4W%Isp(>s|-+9%RGeR2d`l zQXXH?O;cbU&PtQYDRO$0(z9Ze4A9*NJ$2Z;x#XMMyzil~WxS~?Rv2I^uyYvclRfGU zw8;z3f2MO@p%#88JC>ors{CKbPU_%B-|C9Bz9MjTV~_m4ElJJdxd{U}S4`_v_P0f! z8d}#FMvP;%Po|4DJaZQ5ff%8kNv?s2r~8oLG4d};P=NhE6SJAE|I*!29JhaixM{E% zrQL!ELkVN2>qKTTx3MwfFxz&Ep&E8DTP!12@pquEy>{S!VQmsiN$;F5?|0@vS$uoB zbF6A%YL3VWRdMkmn?k6Cz`V5Y(=5A%cY<0u!Py|?mV*q# zQre7&ee*9MrmL>HnmV=a70p`b#q$YYNcs^iI_=F^L%gC=hZp@B9*=J_JM&+!a^&&! zgESWDf4g7MI{A?&xbHUX+bO%jclu8)4(Dq#r_C02K2RrpJCHYEJX(yr6mtvoAzUL} z)+Dfl63Q~?O?i^94X?-28H-mg& zJHFki2G5a)B)GTn`ATsaz1A`{;pY?*I-I!{;PD_xf7Ot}l`Og%sM@r|+P*NA7t#<( zrEtr&O@d4~3bZJWvMv5WMy5U;tI^~SUdR1&>Wf{wnXOh+WxJ`f)Fe}i!@2Eb_*d*3- z(4pNPSsFeqW~^egeUBx2bIJwrWNsB*SI^F5_rmSA*C5CXH*H@BTEY0hd-zR6aPui1 z=XFm322H&e1dpP8s@L2Ld6`gAG1af;WOI!I*bXV&+NRkvmn2KZ8 zeqPNJJ3n2BNAMA*rYJ|78;77T_$gpU zicM0~+$8l>!S<5O)iY;2jn?qd1U)mGiHT!mG zue9b3QsWmzXU+vcKYBzoF%&7}yW>+1C zB$!+l5wCdeFKGyFB^FL#s(*?r?&^*kOFFsC`$r20>qu7_8eJ`LH1k%duVDJ6W_^U# zZ^;Q}tLBx&suW+)PSmvr%7VRgQ?+r>*cSB5*@vCmJW){DjPD*1 zPpWKX?Dk$epu0U2=rm7hs1N%}Kg@cg;=?Z1Dh=6bmWNv%A+OddCR?toeLSg-m@?+u zT|R9Ju9S(mgE^8L6odt5Xjx2ng%W*sRcM_CEOVoWYa3Ea#MD7bxu%=L-~>po_TCAA zO-``%4ADZ)Kkj|n*yk4_OU}@di8Uq%PD_|<9G|9>(XJBGSr;4e_c=K?f3WJI>NnqA zIjz}ItS&b zU`Iskq8fMz&bsboT#oh6f9oV~sT)2A_M*UL+x~YU8^@P)=)i=F_SfA<3c-)0dOEf6 z>YopAPeh(L7whS8Z2YxS91T$M{127l_V9xO=M*y$m^*@o^$(^BSqr`TKoOzI`y6@9 zPO!eETZ=Ok&o(Sj^5K^u7pNkv^0#X&nlXicJphO(*O)RrT2m8`#S(9W^!xOg+8Iq& zz=wNK>iXLHgGM2$A^l0>kg<2z_ci!WZW~@eJ|^!xe21bR*V(YFUUoGMReJmWoiicYq|moBBLfNSwrG$A$1~51-!#e@R9GO;?kd`VxyBy+6g;`B`~XE zkrjLQqxxnlS;t|%^g`734#Y_%I)U}eCg7N+8nzKJ3&1wx3g-L)661r`>C!Q-uw5`t zGG>JWP+5Cicok!L9?uinW+$Cx%ymLk4~bpVbSy_6OH> zOT~}k_02@zT7D}PlK}C@Pyss3Ane6YweZ1ev51MieG$0f9})b|E$7r)O49GzYuP+c z*s|L<%5idC=&1td#yr-<3$c!?`KZ%>#uV>!J^`kOMZmQNOXTvD8@$21xE`4`CRd2S z@Ur@^0h%|w%v=Vr9MPi|8}qoCCWgK30xti7u_TeghVD=uG5hsZj4JL0Qf0)ohuE>g z_xK&M`!rgExfoVC!z?TR(jgW(?C@e`l$Dl?EF6|aG+@|g@AdcH+PPThH)2!x%%3sW zb3`ZG>L0O3U3SpMD=X5BGSM9iJs2NTnF zCmUD0YVgyFIL-X$cRIi$^PH8h{@2|l8vy_!y{3`qge5>7_9sG~xRvuV@QY^d085xL)svUIIPAZyv>o?MqUH`~pVQzJrmr4ae&2tIh~@Nzf65 zb>Xjd98`vtlgw0~gMR}R5jn9fbn}a|<+UQhwSg?FX?iay%`9z)J1GJeS4hcU-NxxF zCbcpnn#`2^l+T!=k0<0*H)Vd>@u+V@(EpoQW7=!ii=l3MI~3jY8JUD13z%(wmrdm9 z8HYk&P7dZ#3x@cYODvkxb?Wl(pNu|`mL4ybyBl(HAKJN%xGHdPBs&L&#tT=|26ot3 z5*7QB&lr4gN33hw~c)W|x=P0hEbZZ)VJ({|gA+a2uuyuT93M$FyzBR``|2Ta(Q zYW38nuVY&3|0>o%dJ8tMwnK&sb1s+&;fKzT@}~GQM0U6MrWiI_J?gl}*knuy0z42K zrAOm`@l~c=qM4pW&X~se{;byg|@j%*&;TI~&OKYNsz%2@ESs`azUtC(N_nhaOs4Y$o;3(shdGjSH6wO!T~10*5} zSNI=YoMp1r!f)Te-wmG#>HpRirW$OL0r8~B$eHsj-r4nn$5uD8*hx6WbqWh3&2&!6VG2~Pza>en#1U>^o^i` zwKP?((GN|J5!rKvM?R_FjZk>2iO34)L{TMiQJ9;DpGCLs&pSk{>q-zk8>sFpK_qEf z${ct>CGsFsRLiEB9Eti16*}P9(x>q!YTuK?;{#SOiFJTJpq?~rP5PHL)R5wZ0j*P| zC*tBusG9zS?^$)RkCoqD~1Lg3?BYuV#*MY~(ve;&E< zBOdx?5!LtdpNl96t@!Le22of-lh&PFMe>j3Inpj+!`k@J@X?{#_#hq~p&V}FHSy1d zeU83_jK9}ZvIV|WY7o8Qj6ZwBHM~eG$MB>@fIWRW1Ls<7O7cOd22GzNF=PKkhM1UW zvCQ~IJS*B?9g{*Vx`widi2eHZ%YC{9b&<%4Ij$ZxbNQUqZ%rB2g16E(wI40Y1@T@9 ze=pkTh0Ut-3WsfuH|7XEukXS1k$BFkiV@PAl-Slqm#NNP{auN%OLAXw$~$oPI%a>+`hUPp=b@0!D1IMwE}pl|GhneEiX|2OQzNN%M|fwJ$9 z`>T+4NoBymgrXng&E?uVznek@@qzx7R{ zxWKL^oZQ>vb2=1Qx@HE&;%!2Whz9XZIYfh4?Q4S=ouXh9;ir7>2b*y~<-%o*HQQkyQhAFn;8sD2? zR+5jk>snQcjMyPBo&qJl{2nNQRQ}*8iVm4trkNRad2fLTU~Pf;E<7p!jf}G4@ATh6 zkrt&gl>hbukd~|*5z7E1pq}E3k7DsRAEkm)B1-D_c^SYh)hV^<-zg;gaKIT^RH*0y zK1;+x0WAdLcxp{{n!~APbcY>^`$oiW>aULJ9lWzE=RG*l3=sD=EkQnTqM z+_65-bW`GmCA`YL)ikiNTnS0EJ0kZw-!d6i8r8g6hPyQxBSrRH9$yje=l;1%?z;d^ zf=Y+OZjZuG5|zk_u{^OaS)-Jp=}%6`jVp>QA514qoT>gu$JDWNZXjg-dsB74=4(>3 zRHQ-oPIU!_oL#g87h)TN_6tX1Bxe4_VoC2-zr)EJ{Gpo4Fz6kH^|CPskeMkKfM$F- z*k2ibv9SW_Pe=TX*A0hHaAH;Ebe$Xm>Ecvry>YK2xt83i`h-mTJf);6ZB0H>$FKM8 zFcTxQY#%5iNph{dPk6O2%KjzuLOkB2~swhmUBlEeNjgJ!ZAOMtmm*DBJ&q?mm)g*PjY9~N+ z^A?9V%$DgXAMq3VXW>ts-#yi$OETpa>7LSWpVGw8bm$c7MJdcGGaU6W=;2uTy4dUd0Tsr?3o2>GBo}7iSe46y= z&eIIUn>8Ua;C8misgqvPyECrsq7XDPCZ_PkMi;xRWA+jaEc$Viq~W={wlL0!K0qpR ziRjXFslvn4usW)$eDT#TV2uyTS=kj5Oh+FKra9aRj^P73e z2d$w#e^Q*H5^W(Np?S|}}YB@1p7^P_| zKuicg+2ZFHDSdIA&y%OWj1u36sC5d7%e-Rmwd ziSEzbZ5l+rdEMpHJB&cVZyz#a`tlJy1@}}8#7FpQpWy`{J`s89;i4Ym6JHJ#APW&A z9)tH44iEN;)=M^=FOO43_49GofH%Rp#RP~eKwV)^t&GnG+X+44R^aO{3!ulXrV0Ax zv)%xxL>o5=P^3IC))&(PVVs!rqk?Ii3a&Cm-4d>_9v!Yb_qx?^>(zarUZ}o@8&gR; zc;Khn!0b}GPCv`;38I^q=tIBa10f#vT+Fc|Nq#uads7zq)Lg)MnkUJ`FqB8%g9KYG#x{+kY#1MVAci8C)0%9}et&y-#Ik|+c z6p9tT0Y)UC4>FQ7woG5!p4!${1te&b3`kbl2p!<(>v#PCI1ospIp@y??cpN==yEms<47}Zz8sDJm<9PAbwWr_gS^bb%z^6vZ+2f$H z+IKY&FUEma@Y7|amBNFyB;F3#a(00F3G^vgDhdcMle+BGxDVlmP-R$wS|Wj_i|>yl zxY{L&gBe>sP(~4Rngwk^lRXA?7^**vURSVs#{)YveRnFVvn*1Xo<9r zP({!!GQ7Z94=>My7*!THy~8h|$_iPYo5_SpfS6{@JFt3CIy9Qeg<@M;24$k1LZg>0 zrq~$X7MzrbYtGLJ+%f42%rb`Jydu-<<&I$>_wMQEeOhtRR}B<9+St&Wg`e+Cre4B< zjAWcRwIhY>p@{2%(vL_JULo&Cwl|c5YpBXt2n2cnk(mUJ?&hhkhkL4mkaVtD-3|O_ zYOA}0)_B|ze&@@6F@x-$Rq+Jkm(8Y|>So@@9tl29#`J@agm9W~Ui2!rP+gnfZo1i_ zm+y$lv(3K7#o}R3e0xw#R@^{TV_A2re2muL?nGaNCjupvKkcYnL@KgtToeueMVt-@ z=;^cEwuzIm==EELn5SKjdv$pmdL; zGn?d|Y|OD4dV#_v{drW-pn_w}#R={aGR^3GgmmfJQ4f|ZHm|{p#0pYX$!dcO@tSZU zAzlJ|*g6-pF&BT`r?NIQbjH-w5Ct|q$>hiuM@O&vlYLGR=ja9F0xG`6d*kx_8Gvj&Xb>hs_&uO;rZA)FSi$ zVd5@9*fA<$I1#1X70`rQLVbBuWXpVesZ`=3+=&$_Xr~cuO<26{Kqq+a=1z8_ToV?V zU}nxpe7qsTu=1wmp@Az|Q2Sa>)J}IWq}Idr3UI8D19C=|&6vWfT*C@fr&w+)r^f7d zc%kw3u?)Ie+D+Tnm({4g8M=p+J7IfXU0tHH$(9TZq7aI$LLtLhFYJE*49$Kar!XB< z!e_bWxf!9p2DsNVdOqZFL`2YM|%p@g~x0qRLLe(b5&wmHp| z?@9Ph5Ah^&7_WvnEEY%$QKT5>*rO5*6-w8-hZXN7H22)+belo#Ka^seOb<5YiR^-( z+?Ruu+G&QnNlG5cN75*_G;+Uz=}ea=mD z&uQT!kn`u7WrMoZ3E!C9G3#)jqf-N7BFP{|qM68_0fi$7{oWh2Y$_8;4XEjsGTfH=> zZnD#>-MhKCw)mb0S9KoLfOQ%GJEOOWr*Q6hA*cbh(pv=e`E-B96aAwhOf{`&#K9!p z^QQtH_Mc4bB(t-U!a*FtDEuQM4!q4vI(~M`F=jJ)0l7G&;Gk<^_yPO=yv0sn(a3%{ z_62HxuSZhLiLJ#Bbt zPDT9xqVBE2+CUe6-|4iahP0(XkpjitAvgt!TXBct?yhNzy9Rf6cS~`H;!cVLcPEgr z)0s7EjdY!JzO(nuzT|@N5PRPD_qQyI87exuEUl!#N#!_O8E&w1X{$zC4u!dvJ4 z;*v1-<>z6O+N3upMhs9Td-x3*3xlyjiHcNxq%_8@=Oo#i*^%oKUi+AcicLdi!Zbo| zYR7z4IeY~&xSRycgktaed(l(lW@Y)383~mmj#mr4@ANvn!*eAsS}T$dUs|~JO+8PZ zelSl1{ycqZ(+rPY&|PiYE6yLji1`5OK3XAy=phF74U;ErZ1PDv({;b%W4hyx$Oxk^ zk_UiQM7e-mL=k#|jxu}_TF=&u7EU|{bt@4wEPZqil#T-*2}*}6D=zg{XT1|P4YMQO zF1)jV7Bj_LKcd8VG+yW3C8nGD1;KilAl|=NjaU+8G4f4nC;U@DAwd)D{_*61&`Y6oX)o@RiiUe-ljetW+mePoU*0!g~<_3aO* z@ESE&Dbwn{Avz>pup_DNAV7Or`0R>rDC88o!f?*MAD4dfVPVw2vPf|bPvW8F&*0=DNVE$`x0_}6zsXEQ1bbBj7SNs9^!vV4Aw`3jpJMB=2+4dmZU zXlQ+@6CFLak%W~RcAp4Tem`$~?>>h|w(qM1@Y*lg`e@Ys$wY;1=WgCqY^ap`^;vZs zg@`D89lyS+NaM1;ux5%MO-VTp7x85$nO#lN$vv_r4XkiOT??d5u+*I>j3F>rKVQma zR*)QO!ty+lXAA%r z)XR{ff6}{}>^E-Rdh0#{Y)x{3+=as9StJCSlT*jvcP+K{zt8#X@lCh5R_`dMl9T*U zUp2TAV>!GiFSgi?i!6P%Z~58u)m8tlnGw83gHb3T$efI$_V$e4s2copHDT^RoJ2L3+{W(F*ZWfrbN+Vwf=edJe5by;cFBX2Utb8&|Ap z12BKdQAJ*vw0FqAVw;B9nyYTCSOwP1mZBv(aS~v23lPwsDpFPmfCuiIU4*8xKGD@4 zx*_^vK4LSzTjt8wGco8}6F=ErCo60p(?&{ilc zd~{xTzq)*OC_|)6pO4X9ccmp;jI^G}`{XKN;BwVmhE>t9;e{P&<;lRCn#MXWxVw8& zxoOHlA9AO+RM)NgetR~O6ljOVcae^g)(^A&xRg!|Cg>E=squ0;%gQu0{zlopD$w=} zgi1<8Saw5GTG9zyczR>-=qH34VEZvURFzyTuAB$?=2KFTHw)4*7*foZcc?B}Wct9? z7sh&2*3O!UzcSZw#^$F{c)Pf$W$!Q^2m$(ghOsiFqIEdu`X{r;B}~1-J1AbISb1^1778B~wEJVgoRT8*OWW0mUKC<=9UKyDIy zuhzuF=H{{lvulf5bCicS4yRfKICzAyfJ~=rpMKpZQ>9OXUw^&Qi|ab%71uLZsMBs! zDb92e=e!p#+Pn=Db9#6#1M6+wWt>9O6w>uBKaOFHc*JH#8uBhJ<<24tm8bpWl)!_h zw&qLux4VxS%5dwY=xIZA&PKfRYL|m>8Hp&z*7x`)M3_DEv`EiLnDr9D)(V%eSnpXT z?>-ARrDn98U@dLC{O1O)=I=a~D0*o<$zwwn&*4g&T&enwgb(va<-hYiHv^gf`Yc(!+XUm6tIA4^oV!pXc;BS z_qOU&UdSTHxE?Lq^ah8cy=~-3b4F$4ykMr+0Z#V`mb|$@?uDvQe_LMW)Pv(iBAn{2 z`Zc@8kSD0?_S;o)UxOl^7Zl&U&hx(@=HY6bn~t2erV{YD!5F$*>TKXZF23P*j0o<; zD?l6%%)=4~k{CwD*V_w2^sxAJdekSJ!MC8@axq#N?_Yb6jV1;} z&5Z2Y!&D$$nSkXLUVa0Ddu1bGaMJS&gxx4CziLg}4XY*Vcs6l92W}DF5IG+eDKU1{ z-1PkgOR6}SW+Z)>MJpp8`6{JsTKfBEvKqe}Z>F^N%1+>$4ja01EgLvD6-F3ztj{D1 ze-UNUe@`V0YZB_w;fJ_Kzcj-w9>t)l7rjeVSD8*EnPf#F%u&Ds$z^IiT9AFk!-n+xx$xfv}bN9Me zA-PT6@U!NTngqDr*WaIom-9J>6TcXTCCP@yE=Ijf&veYUOgx1)KCxCHXX{}2OWnQY zs|EJL;QufLCEy@PQLFUvS5G^dW-t9cZ??=+3Y{9o)W zJp}cHwUdfTTCx99yndfd!s1|heiI2Za?fBF`?0MNijA=TcP3!@2kPXw>ykCvi0+p% z$=9^C=?XWHaxa;lELw!{{Vj#Kp`d2hR`q4c#-upEqIe}>s`nDL+-%2YGo#{M4KT^2 z9nh6N0*K~ZrUQzR=(_pjXNf)EIrPm1VR}Kmxfefo*vQ$5(4J#pp18c`N|i_*IfY)V z8{cu{e4bv~Q^X!>oUV>}&IP;{UFPD7b~gYyH8R?~C_E&vtEC4&H*!T;8x_k*_05 zaMt`^pX@687eDxNlMhjp!Ua_aUSh=Jc_Z=7-Lr(2EQzH`Uy+cwDp)nC()Gyt@z@gD z%OA|Nv`f@tlLt*2jjrd!-zyr8eN+b_I4);4$SFg=M{|`fil%rOb1;SP@3l_Bsh% zbsofQLORFyCxz&O!#f|aPiI8omb^VDvo$YVd7QiEwSY2;ZkndG9HB5M35w46jBc^= z#AQDqVQKr9!8`j8GbobK`YCU2H~b6bXp35H$NgPr7iK z^SMiY6@95hG&+{U-N{&*J(aY^zGBwHvsvY^Z$9nmhBuh$kbtZIqZE}3VMfvX>SVZA z;X0i#YXFEX7i#~lUt)QnN+d+B!Iqgvq4pKQb@SP!keSoPlS(K|>HwdWb;zdcxH9&z z!w1Yq>KtQj1-?-`JHIL`dQlDAht=X*Y}N>Airme^6EL zVBfx-uT?0@{k-z|qjmUPsigHQY)PnAcGdKe$NdfC0&C?Dbp6n(L2C}&cUIcldO*+w zq&vn*xopPjr1_l%&!Ke2Oa z=Y5%+3Jt0KFw}4xexdLXoHP}G3p`V5FHDVbU3GBtyG&1!#&<`U-G*W@Z6@rrs%5M2 z2$#rx&M0-gaFi#GXC4VSoAe+1tDw=W8Y9ofEyp^>g(wvZ&AH-jgGLOzhaChtTxGp| z#9B_cfC`5Nct`)Z5V@-=DUAvKsOKb}SbWRKUk#GG%+F-+kJ{emLdZyfK_zMkO6(T? zcyUHepRNZvpBG!&2;n{Y&(yY{=l&DMN>~o9O|<-Qq7Drw8+6egcGxAdW8@W_CcNrg zEow#ez7>dZOy!1pVaD-hA;5Q>7Wz1dJn5K{^WrwOfOVWrwBxy|F{l3*U zq|Q5ULgku8(*E=J{NVoZyu7`q*Vm1P6bB|t^@$CSFggVBwrV#J(n)*-r`7ms)#ka@ z70b4H*VCW>c_HyiiXfSTl#b8mc8ys>+=d$q!_B?JP+_9^GL^);cNI#jVOx_I1zaapDdQ7w>-@$4%$h&2 zPPvVG|C0Ed`J31LC9L@oWcE@{Gdy*{+nN)1g4_8@2>1@=^IJv-IhXhQ!+1N;&6g(< zlqM;YjVW9S;?6q!Zf>fD-|$QvH9(JiV48OP9O0`w?&bp%oZcHW{P$r7ONJJ?dACLD zeJ4%NNj!iAdpI3T+g$UNqUp+B(R3lib(e;RIMC};l=8l>rZNBG9dO608@a`4w~ zK3ES^Y&gYYz!rC;PB5*tS>DtDk@NsDkkYHMAyWhoTq6VK$#b} zL7w}u&RHMko`80d|8p$!+?d*&bG9bnk-IDU${4d3m0YuQCLL9Oe#Sfqc^Y3#(MAf5 zK1_0J#3mc;f!;-@DYDGVpMF2X5;FbWSd=mG$wE&)L7)74=cpcM)6Om(s-Wzi^37 zQF@z7KwxXTA9vF3|BjzVy%6<6%dhUh5@ z+YL*Q*V+Zmioz&ra==yI?&}vWj*hXgcdBgTr~^V1so@GY+wwG!8rYKu0?N|PY-yOA z#~aDu%_);?yQV51;DPvbDV5TB(B2iV|NJN1ma|L6Hs(mKG~^U--O;?`_D zDLi#XHYV~=@cTO`0Jt8|81LfUQRaz5!G9;^eLPESoqC0XZ!m}lHRHMKt~-1aji~#_mVPM;rPY>YW(&q_1z`^)??{A(wz`#D9JmD{-XUweGxwsszSuAM~yyk1m zqq~yJ&TT45sG=G3{iOVK$ zmd+}OQh3W9N4FOHG4dcLa!h2&(e;7oGLith{?8&8g{R|5zR({cR}Y5d07NJm->~#X zvsh+h5K{VfV;aK-P&%FTb?!9bfS?l+e@L-eSB`1{H?DMyi;IA0j6!d2f32JeeaJhb zM|wI$BTN4A-M-qskjg%Jfq{X0;q<7Ioq@nUE@=X6)q1_%B_ z{?=%&`;LOFc#T)xHrGs|cV=02;}*5pzP}4ryT}2K@~cgWPIl+C_p-@Dwuc95GuScS z_B^_l&F>0h0~Fj9PgINU;9E1Vnj<%_;aft}3=kpFXP2K;pyHD@I;2e3_v7~a%x_`! z3J4k=qAcWoKw!O(VftT`G%}mPHW~RMaE8-Rv&$hrq~5O3P_j39^0>6!j^gVTva|7 zf!?2SC>=?mXIM>KDiA%=_|IdU`6WhECe27~tl~htuPj3pF90-QK`qTMF=WT3O@K?I z>aI>viQIR12rv@U8;s;Ce{SXwT+R;}S($Xd%_ho}bE3<)hjKo(%2$o6*9MX|QeQ-k zC3&zI$v#g^2MSr*4LU4@3#WaQeTRH zYlVJzg-^z7?m4pik~;^wg2)|woCHUZNA%U)7aZf#-C>15*MMHn;hgYszd%*hZEu@* zZ3n5no~R}Yh-p6D^Y!9e$Z9T~`Vq>g+?H@J#e#r_1&&a zIuNNz+l_U#!Bmmz%n<1R)BQFG)_WA=S3qFPGi*=(0`dKaSA}_$Yxp zOeb%`>^M1UQ``9u;dBoyn%~~8wj$GVaO09Pbd6F>%*|4L>k2#Mg>>FCj(=*@mI699 z7D3Gj?$$571?UolSe*Wn9_?M`D*+qUZAvkEc1Of0`}8X!ykd%eq5NK{(=QR=)>uEr zfQeQKILNMjMyfmUjV323O6sEfaMqCx!$p^C9t-psH?3&*wOCL*ExMBI$8@ISeu+-R6vd^=x zE?O8f3tKT)0os3(1gj6dE{b4Rv?YnNEYC!>VhPuL7)n;apO!5#kp3}VVD8|5|IUF; zA8kxQ@1N45N>flUsi5rSl1Q^X^QpKTvoIOaqst$X*<-^!fqF4zuG}ETFROHUICp)? zetVO{=iSz08qb2;ygaepVklO$5>Jt1Z7`+K-|poUmkfPUqFd!lK3;h?fk`j6-h$?4 zk$0HWi)$Uzk@s&+45>Y>u^)3~aZ8-ABlkN-!$0tSmmnmvwrR+^_wYvjUp0UM-lXG7 zmLD`#<>mDVvIc02Kd2YW3~katyiaf|uS-!QqrIE@YdfE(rPoJxAGUNenxKpgx9AaD z^LUZ|MYH1I6a;ZZjo#Tj^sqnoDc4F1n^(Yr*5Q`s*yLa}D!_?+y)~SOG5re)&%OP- z2eFTPSXUa@Q9u*%E7;6I_l$1lupK&&Ebc$O)^y3ZUmMMby7|(nwssP^^6&`xVW+-O zE&{*9{h9E^e5AZ;VskQ`q)nEy8JX;^WlucS(A2oI9@}kqn??Gz6LoX;B@4-?Tg=|R zRx7t97Iaq+=hc(U;grc?@qgWxnyv$757wsqVtw#~q(;dBP%2#;ff1)Yr%YdEhZ~*=td=diufo6AHrhQJ}H2vO<6A?YyhPJP1&iC!P8mCuGTR|SurI(AEQuPNw8I7 zehzhbfzW9p(l{Ob&UvFWyF*K1roZ!ZO)1gwm}-8;-B3?ZoW1*f+-CLG zJw8MwB~EVvm-NnreS;Zmz>ClWP2_G*JR11*2T4d#%RWrtF0&fx;D6*vkdKKlX+BY8xWlle+wSV{rmtOoUQl=uQJA(dfWe7B@8e$KIxnG{FMK zX^N%2OcX>^>O#2${O(1}8yQ&I6f&$Ad?~OjShx1x*pCa3Y@B}Yl8JFd^J}!xAh}6R z3Qmr!sa_#OAgXgWO{(GjCNp@WkrycO`Pg`O|Z^z^C7SYA(fbuzBDXrmi7H$ z*)uD{_iuXDIh%MW(sRLj-FQ6P4Qww{>b(EzzT~!MJnhsS;%vga_3<0?o?{sg33`x9 zoa*XqgTTX^Pu>mN>l~ehePzCgEhoA8L) zG~>}(WTms!3BfuTXWN*0DIF0|uyIS_wXlab@*(t}^a7 zC2Ox53yP&yXvM_Z9%ZhqV#;k^5qlCPU%1mCui__~J(dc{V0R$#Jg7!(Y74^v=$aFd zfyQb3K|4S&Y-}owux^H$fh|Q!NryI5vNS4Bjiq&atr&WisYY{9DG;l@*b!V0*+_NS zI2|>VvMeVsEU($Ic_+azk>my1Wn_AYd_ol0;e+n1td0=@JX~uzBhaDt_f@AS{e#Vt ze$x$>Gex|wCn3S7m3FUGXA~9FkW)gc$GG2gFTcFIj}*VoH95wS@4=ktU`eS-JcBgk z%4M=L)ca1AD;g%d+**>|BD^v0nX`*JbE%5(VWjP^1Yz5b z`>Ix})7c`#awB)_^8TqGu5mxNrfO)k@XX{?GKXW#K;4$ z*RIQMTn&Z&*ZwI}pvUIHZ0sv}Lr&zt!qy-x{=@p(@h_Mst!PMrjT(F}l*m}(cEsn^ zvPym3y4C!QFYMV*Z^@w}{qgIHAND0}m58lJ7_QKh1rze^n3zuS-V02*$>zUK6>Hyi zc;$*gR&kwEiuF`nqBUG~Rte?YJ~LnU!PtGPhLn^!DsZgEm&=0f2ba$6-6mv;JrDI1 zHA$R^CwNM7MR%nCE{YL7$en4_f!v3*mvK7ASk2+qT6gERXiHAHP?+bGcP z#9dqc)9XQ*w7*v9M0ereRtLG_?;P@f*YgKZ6P4LAHxi_eO+4O#mK+K&f(K#| zE&!rQ^DnLk5h3bl$dtt;SRuaCU&MTK# z6*3nSq7Yd--1#Eb=STuC;skOGMlQb`m0)C=;7i_5mXkMPtWTYc(?+Fz>US1w?+1g_ zdjm!sID|XD;j%v2Uc#(zlOH176*czcRdu?MGwN+Vp>Yvet7JX5-YXZYQ~Y{W*D9MVX&ce&x9p6J_F{ zd+ZWIwpvASTq&uiEA-YYi?Cb321AqK)!H`~)Pr2HKslQC6E-aO&Y8PRlGm8&Ld#Sy zq=36TpFFj7N9>6!#p@jzf2OT1#^Pzj;g}dI>~kjs_A&cjIAq-}Vow8OM3t)p0*xC` zL?od^Yii~bfMhz`XN0udfP`<~KKMU+w3<1x+2=3QrPX}8a?PihEVeSNgZc&#wZ)wM znrl41$u~Pk5_7Qb%%TFAzvq=QFvYX`AG5C$3}*xMozsvcLOPUUsQ$~OrALYld6j^C z+S3MB=q1?5+3;z=8xsrg@WjmlO)NT1RtNK>7B$bER&NF0efy;;mfV4aqjTK~+pT!ZTm!pEC)&#ip3MV& zqIu93_TQIr?oj!I(sYxPpzo2&njP(^XK_+wNG6p?jx_4 z#J1%gVYqn3jC#KRUjA0JjW=OXCKYMmw&;^+`$F;Y)!5j|gXZL@x=n~BzoNd{nDd`( z!IL&;y^jU3f&yZw6>C#j4+6e881+s%f26SgmR$nh%X1!TG8N8_MWA0h#hq;d>|86}$obHm>^_%EW|Z3Hn8G();WuH(ky zTPDNLLG|O$o4vYg&m*Yjhn)j(FC%aJkGRcgB>Q9*dwbBB*8%X93%L{&o@+|F)zO6J+0^xi3w@Va9%dp*tM4==FMraV29<*?+DiVA`&I*%_s66kSYMOjnB988+F zEU_os0hGT;xV<;%Y{>5YhWBV2G=!V+ENQH-o6&nPfVuvgGwSBl!x-DPztXP7Ml|5HT|fU2jNau%-fXpr`>hW zVh4;Y=pTETaj|+PZ32IXGjJP8q#J~&)JaZM;No>QjPoPu;HYP(|L}2G`mXBS^>aQ4 z7U7mRIWTR?-65T}c|0+}R5SbB+lTuR{kk?PZ*&H90ff*qsN`a2{!2q|f6Q%=zr_PI z=bbcQPNKHt_~>(&+s6TnrrVf?Qax?1_J_GXJZI!tj45;J;>T7#!J)TUi?^qb=77A) zfOm_Zg<#D{IhgZ4{h6)_M{3-@1K6}y<;>$uReIYyi2iQ5qkTQuH9S?6*d%aRi9yWy z8{rt^(WVrk2&JI^cdP`A}+Ja#OIhDeU{{9Qk zZw}1cu11K94@7KxEic}*N;f(!oUm}$l%^{nQ21&#(xekH-*0TDKi9NO(KN5ELrpw= z8pV-+wR5^pAY0li0DA#b>b0j)MYuP{b*#s95yYQ{lL|v683)NOkowH`yuHBrI;4u< zcWmv?d!yN7mUA*=wer=EMXNK9wPWMgUWGw2H`NXxf<+ITa;^nofv!u}OKwS%&7E&Y zSD4`5MBPUYpYPK>>il>ztuE6@U;_TMxGwA&Z~G>n5RG{^cf@e5ebz+B01<6Or+r1i zD1-k_71YMc^S)&uy0N`!_Jwyf_VM^*d^3uzo=Jh0PJ=dM1+g8WuHs@xFo0P1a>Rh& zpOqSDCd#tYuX+vcmQt_!j+U1GEg)RRKwho+IjoEJR&Pu}`1-RW`}^KWq>x%jz%}t) zsc=QDb_c6tZ{2l$I@Hw+3yixU;sS4Vh|$x`8&CnLI-a7MG&6Q^& z{>@hSygn5uBY(s6zMJ1z!3_SIt))4>-`Sr?%kn=+%WAHa>uGmo!%ns%Agk7yT-rSS zS}MNUa^-HVTjJg<{*FzK(G6QhE&BK4`uM6NsBIIV5X{1GP>R^ z#>&C24@d&Je3C8pWB~$a-5re+zpprGTKXR%GO_q1F|n|qly17#p>yoDeN&llN)25b zBh}=kj}U$9&Dr-GMLT46qcU1cLZJK1ouIRK&E1)ghs8Q%N`E6fK#Ezc{$N#0g@G#w zQn4$IMX1y2sLv(+&M7h0hWRYmJyg6|4N+X-jNQK>?{J2=;ttHVz{>K!*fJ&Sl!eNsMv^T#o3h!h5Lpth~Jf!-nxfZP#iv zcN4-&*Q2XJ^61=L{hI1^rZ1l1Fc^y!#eE?K#v^q4vP8y*%FNV~Zt}haOVTSVyTlhp z!^M|+igKfU;5&4HK}->9DKjn3PNI+q|p)!q*5p ztK#P{m(qTBTypRE!1dqnE`WX(?6gKH;p9(rY> zh~6fjn!IArPIj}Jn6?%D`35$uT}q-X7X1BDyP?<`&zc;aZd)|;6xj1={7s2K4#Xt> zzAia3XlGM8CnDsI-dNa6{zxILIJsC>R-K@ik^3dfkSznfk+A54NZ{)0MhfoOvgOLEmdfZ{dyk}x&OTRLV3EU zj)T$~7s*G8q?}eFPJ@ec1v8RXTX?<1*GUYhmNc>a=W0s6TO~xdSv5@*=c7?a!=bol z#vSOghHU#Bd`GA9F^(U3Hmgq@S$p^>LynKmnEKAC=ERh-I|G280oSzkF-&16{m&fDpu%kiLhuuopAq@k`AWUz*KwRa!3lGof3INbz@Nym@SzQx&- z1Q9Xe%1_1Gvoi*)W8%+wwBr$h(@=s6Yjl8`^$6501yO|#u91}C?s*fYwxu)8#y`MJ zt}>#fdobaygA~=VkbFh0h2d3wv{qi}?Lz@n3ZA5-D%x>rwWP5>8vw*>{%HVkqf@S5 zww@%jG?db3pM!XHtngC0OI3f*GX&O){$>LAHa$THcF|m`kK7Pd@(rg|I#8@wxQ6j1BC{oXd-jnR%I*K-=Cm@-T9erE_gq0MIM@PBABZHKThcs9k@G1?_;**abfV3mMJ@Q)Gax!jsy`x&)Chvet z&wfRljMbg8*%n9o4WcAzXz1lFLfy>S%&k>G_$XB5b59%` z9QubPNWJfHPuNEq9625nJt$QcY4;8j-#*-}GiCSks}T~cO81_PsuyJAm>z$cx1uhI z2CxXdh=+3Q)h@%yOa1P-93`r#A=3Nq1XS2WwE7H-- zt_;G05xtTx0OqIhPFAXE&~MYy^Bi>0`kAH@b*Nv45F*J=VcY%J0z=VPsgI~zhPUf! z0L(za8~v*6%Bp?QdTaEvBZ7`>1K5W&XWS*SLbCKP=Bi(i_5=s#c9&Vy4&E>yzr-10 zSmB5RclQ?WQ`z+FuO7tXG>`}X1FU1Os%a93w{7fb-_f6ob6@P?s#27kbr6!FQMHbo z!w9d?ox3xWEeA&mpja_q;CR%3fSR_n3s}33w_5o&$tLBSy69^5`pg&~AIIf~VInb} z8WQC{WjN8+kF-eA&q^d)&@Nnvj+i<<@ZWR)h2jwXMsZ{|2M0{q1$i%fyXj#2u387? zd5MF$gBrh5@(X2@0Yml7O);usV(?9%EE>(3w|n~nOm{9AYx88lYa>jaNBxA+GAYd( z26tBlYq}ygd8DeE7 ze*!*CnxNzaaE2H2PjSyUi&`%I|8{hnhLl}lpk+v@vry`@YAoiNKXIeo{Eg!%+23iHV{Xl)tK%+?O!)~WfeiK3wr&Ci7uI1^D87JyW?L#%Fr+X3kwfF$d*EM!*Yq-G zGS)@jrTOI~wA46K5pP4oQB6#VJc8Fas;q7NGrhGRr?C-24rCvo;!~eX{VN4-IH1J- zvxqkH9u?J`+>U_Nq;4*K6h#JMg7Q(h>Acl*=C-FMF z1%*^^0d_?AfUZc$nZv4p9p2u0dPShXp#|ZjjObt3i@XT=0lU}NJ@O$m^Q&=(-w6!{ zukj!dDc?abG-PZ@^5ou5_P#hT-8D>G?)SGcp=LpLe5X$z@?SBhB{RS7O;Ve#8TZ!! zk;;SJ!oIF!sMV3~hL`i!Q>YfDPd8C!6M2Nndl6JbK~389IybI*Y<~&fCi(#17fRc_ z%zmcc?D-5=29_}}60n7g`mOGNa@u#Q8rg#um)gCW>^BI1n8`?Q;xBjFGE#Pfb;oN~ zke*5zH9^6;*xVf3mT(rcaIL@aP!bJV4+4iOxRb*ds*p=WoaGD&z6(}$-yR0K1L)PsKt6 zES9EcSub5zu05>V7MRU{B$4*mfk|tOL!*?Pa18uibwazJ7bK+l7S8Q2ZCnFauiI~S zh>SCnC{q&P(iw@Q)YUIp65%LU@AgP1%4ss= zd|9YFOx?eju>xvycpUE}R=9UcH7c;D_n1Jnx6mo%%*%Dj(B& z$lm32r@=Yw#bM2MK(*uIOSlMtjDx>F-+ab{c|EV6MIX-Q|KupSHc<7~wi&-Ckx?dw zE7fTRBL<4E0rt;Z*}8M`UhQ-|*n<8no6Q=G^rhUuS)~a8;agi`3=i;kUQBIbQ_ALSJDN%f z#EjSL-NBM*XlQ8*D{Kv1O--th9wduZ>6UxtxX)ba3+``prhng@$bP-L5S1k*@oL$! z0+|l1$xJtRb*e)Y9&@9#!Mo_QJLNqDhZ>ws=}_>){n_4t$|_Hd#uw9%W7#ZHo^wTi zZl&vQPAGb&sE33kfFF<~=y0#|9n&JvJV0hgfMa7 z)4E&G;rKxA4IufD=gcU@gA0;2lt<{|cZQCUg9tY;X3g57^-P5V5_Zi;k2BALmRvY8Tx*U$TZqOQg*4u`H`xJ2ui^>q#o>D{R#B7vBGPP?OL$w+fb6*KItl#qi9-8srv)dp4o!uS})ffn}#Eo_kyPq|ydry2y!FK(yNxeHuB>njU z8{M#%qM%4_Tv5>ii_8yXBBg#ZrEVQZS>fIPGETe~X@elvEktq%Sl#|zM#b4huEDKI ziO%W6AQfTP+o*TiA8DZ%^55io@}6Od39PA!5WhH}_JqkWly&-;1xi9Jh8#tm#n&Ol z@l|__y3vz*4<Q#~xMwQ#(>#X{x zhp5w2pBDYCU&OrrP?v7S9PQ8=RtJ?lze%e>-QxR7!~>et`2%ZAeMhRu0-s>T_Y;}k z%amTS(&^L%0@9xJ4$oH@*ercUpHx^dwEm!~Db?C2a@yW+fg0nJvbD$WTfl@d*)$c- zhA~EQa(!3&QLfDUd;IQ?PJfYm)0vTAeRmP~LS6d5^Wr`R_ULc>xI$v=1WMsZwfQIM z?G?&LJ(9P3GRqp(A--n>_KFcw=s9?*0M*o#D$a0SM>4~N6#`A6f6bJ77M$q$#$2W6n|N94X|B3`@F!(P3}GrQ=!KakgS<=F-e7!VtYZK9VN72` zf<&bT{Zfa!B|DzA1nY5ZO0m{3_vlP9M1QW#(nm?o;=<V{oH-KbElW3^na^!GUFJ9;OzKN{qSJH}V}WZJ*NDk& z#1uaLqlb^#&Qf5=p~@`qxQNsMP#oXdD{!&C`kFmJ!b{_^3xnPU)0Z(X3r?@`ih5&n z1d6pBGV#J4dlQfn(OW^>l$SW@IyT8jD<8-y?@ zkyN3(!+fTbE|n8sDmcDOwVf}mc>(+|sS@Wf_;IwUCfjn+D^7nYQ2~A^FEAH`hmhv; zN(yePzUtg%JRK^L@O{LoXOv}?q@XG zE~-(UUaAR1aik`tULi0U+0fr-eGReRKry?2nU{`4p?~;QK=t8eU6ppgrx*9&kuy2J zVGuiCb2BXdzxY!ibV{{+GN9Ohe7D;<5+Dm3{Pb9;M_0)R2WZ5E`4lWkv>%`wr*W2 zkeKa@>oTtb-}rXA$(~)vRQhTjb`cOx+Hl-0TIDhn5{ zK3m7_Tg`K~s*uLS}dWNMxTZic47MjW%^I*ES1M!=qn)k_(NsIWSZFyN@kAtA2JM4<_GBh`=t~El z%7~%GjSmQkqFZ@ompl!t8L$eT9tt{Y9A(*paqusC7A9hv(cYoVOWM##UR3Yk3jwR& zuVQ+0j~e4K{SHq`euF1F|9~fJRVx3Doe%GKh&`W+E1NZPNWySU>07_R@tK!ixdavNXJ_c*7Yq$Gs(U8J zJaVbtuAaJuzk6ZLzdQ_!pe~>*sbm3b3M(lnm&WZ_wkTU# zy|sMAec7^}+x^sL14RX2gfbCdktWvo^)Edb)nwkAf=}^b{=b`L{NvYiu%dA7a7tS0%O&-Y5VK_SrA$HF|i;rQ&hsG;N z9TBppeqUy2xC%8KXdt#UmpU-t9a11&Lj9-z#V9w{LhJa_VItlDazv#rA#lGmSG592 z`e$FvLKW-IqbhwxYoeGli-*_eW9_31#)!qrtBXBZ7aSs#vxE20bCLtk`Vyy_B;vH2 zHGOQjGcSV+G~++^l_}uA?JLv8wfF<0%ZU4@z)PkwnUi>3{|bl5c`0+&&9Wb}0Nbl{ zGUzEyuL+E3c$T&MgRyAwB2o)wcJs+p3n1sHEK-ZO=d-4_TB)|jsKz}F_X?_5ua|w# zF17FQH@T8C^|nG2ea{YpG$B;R5l*D6{AtB9`;;=_{|S++TTPPLy{#pE8h3vmuSuIeQI#w&L7w$}!hLY}6x$PLW1I2f5vokr z=Npk3FG63x7>H~ui>! zG+rJxjXc={;k$__=BHFGb0L{)6fgOVUy+Kz6yj}TC+(rKkST$b&)7KE7h0cJa7goN zOq z*WG0K`M*pp_;+JQ7T2_Ss*~X59K;HfJ$DRu>gM2ne{AyXB_jUAEz76xKzyr1>K6E_ z?SUsQ?4@qo@e9hs6UZWxHMH+P7CXfhv(O7L0LVP^C}7tbrESU&$okPf_v()px&-87 z{0K2Wxcu_}v9azaNaNq7cdPODYUZuqgAo*Kgwf!24KW#!CyhZjvkh3` zZJDk!YF`*;JpQLUUnClqRN^i+%=o?Gx@3~zdJFf`KlsL($qYOg zm^OKrS9SWDeowb_|*t-cO0;dp@4^IO%o0fJkXeXODTas3yy#n*#4c9W0z`!V&< z{b}b#i)(vGVK}$uO|*&m3JrXQ87dZok-cf;Ll-2;cMMQ4^S$CoE?$n3YZIl~jkM5^ zEy*F+o8i<@A@_-$^iDu=4nNhU@HTR~27P|jqVJ#yJ~3lwzCwj+uvqY ze;DyFrt`sUuJ>?MEQ@4F71j1DA=i4|i`3y6?abO^V*QJ1-t$?~P<*UVmra&&MyR~s z(||x#HxI`*Vsg+`_?5n~WB6N!{6`arBTX0%!K$a82?;XsUeg`b!*uV5u|pDBdcky$ zMPoP3cho(cD?&zZu}|=9{8dbn!t52US844tQbI3{XgQ;ft>=Ze_Tw?RC$;0DBp*4D ziXbXxZx|^zchm7t`sKU@q7H}b@Cjt=X(2C?%|c_x)x0C0VZYIO%rQw?G)gai;HEm9zYz z(^t6Yk(-?tZ2WFkeF zOCvr_DQmT4Q@8}*w_xGjXQPNI$ge2Ex0s9IOv*vS`Ix&_9KkL;GixTb*cWN?H7$vC z@QNZ$SXVsfSS%gXej`zTbG6(Gh%~U3_!2c1tlql2^G;Y6%(rYo+YprvYsx$Jo6~Hs za9|H=Dxy&!8+tqVhLnYSkGsuRdrh>{-HeaeOLR7o&Db4(EXp*ghKP7E(t{QS z_>eCf%iFnzZtCg}A0)%r(g$U25HI+1#e^P$ploJ0hP>uq6Be3y;h0*GPG#TBeHn3O zsMU!tyL(%H?dz*|zq%oEyfOR+DJ_o6RA&C8g=)ymcUils&4lSU zcoXLH*mM|r?vNDItIO9%K-SDigGhYDZ3YVX4i&EwM{DQg*mdx^Q0B&Pn6_z}S8Anv zIboE4cAHvW?7=H<&V6*qA+=vKYK+ymrebP)isetQwbTUO;AzQXlb`f))} zG|cu(KZ#cev6YuFh4^^9KaQ2P#|3^23^s672G&`m-Cl1KPF6{PHxj@)8ktKQHxDa9 zy9GYY3w%_^fB`S4}$RC%T^AeF%?f(tWE@3{JdK=fv6#spw_On6al|I>;dz}SS zkRUci-md*=-L!Ag+NgX;)?;-YrM^;YA`+6P9Hn}Crq@P*d)6az*>(hR%f1mmOC%J+ zHNiPmYNRRm!4=x8l0!sG3o8;Dr0O!o?3Jfw2dZ*l3lyfLVM95U^3aI=VK$HM6eY$i z&Czj|?EQk|JuQ!UCR%hG!bn8q!HwO`{Z&heKp>Pw7SicQo%FS$cp~1sb=O7rex=sZ zXc_8~My<$=H2>%ch;60h6n_z?!J>*1;|N6g_M8z@vsEdd~?b$HJN4dD`k1VAi3C3|!7~hB`b(lA^FWWdB;&)!pgmVhvB+L#P zN!JBbrqDFLUQY1*P$Aqh=c<%im^joiJxA;1=n$OH2o&}2ojo6$7nuwBM9#hnJ=21@ zkI|#oTob^7k@jl19TGCJ2bq8&?9b;s1PuN!(-OePRUwa89C_YfN5~5w8LP^xzwJx^ z#d+A2>ix}mm{R{bm@)^A+Sh3dTmTr=uQ>(m7xBxCQ!*l=EIW|6fvZg1(bK2f8G*E&aBxr=bF8`f- zOrm@H`s%9fLp4+%lx5FC<|$b(2!d?k$O?3kVlYZC!mPhPn9o6Mt*)!-fji#K{;n+kL-YRinYh%cFA3_b zE^iL}dAp22v%?c134S3qvY(mY)ynshmL%;hNhYJ#w}zMd+uwOl;VMqgggq;@B1ZRa z@Fxb=$%V}c>Tnq{eBnlch>6tiNW55fT2>7<;}uPFMfbX1o}41*StHd-hp?5c|1wi? zAho|Tjib%W+^{6t@o{b9=*1r6+^z8+10cKI44H*ef}FvG7UEQe+?B+SYJl82x_v=; z2GO(y^R$f!{hw4kzWRs=2~FsoTygq5Bg#9~6>o{{Azi{-olB{0F{AoIU#FWEmC{`h zUIVR~9V-%r?4q%}Aa8Qjb+~bhiSz)G2dZGY^M=zgFp^hkRkxc;fkBuvwWcOl%_5{j zJg@!DBShXkT1sgLmk0a{mQ-R+#Hkk%E?(O|8YkCe|3l-%0Sd9+R#=pBFRR$M4>=E$ zhxtk^I>tI3nEGnCpLG<1KcLumdsv`_vav-l++R3!Kb&%NX`Q>MIL{OXjzXa>wG2P~(q2Y6RVCEh=!6v(x+38* zZi-kdVmu~Nt0tf#exF!;y{^#=Z_%=5tg{BAPuV49fJJKQ>5CJptJ9YwH0qh2Jd|5? zscFdI$%?)H0CD?0jYZ?ae5cegXpo>rT9LV;{5ppyeLN2bR^m88_C-Z|F8L7W;(t;$ zyz!!ib!Utmg+$Xc@drD!pkn&I(JTnc#l~Zxx%#YaZ;#KH#v5Cad$C6Y?9-W~svyj{md(0__qHBt8S&ziC#WeAOHs6IF9g2>B=ykg5n1@UTz-G)YCo zGYD5Sn~#fe5Sn41f44;#=d7f(P-?C`YO%mBAQ=wVo=!QB!@e|1hfq-e6GTl2Z zX9+Q(#I#P<83|jcZ zT{7-0$_r2(=^vituyJ;O1&+IL;YS!_Z7fM1SF(RbF)5f^G-6<{#hg)Uaff z01{!v2Mo?x{!#WlPdTFps@L!AG;fAL^deW?7^~lJUT(!B#((szfHql9d1q)*;=^Ul zB1J;Bs#!63Okyf7~+*HSCXQ}$rw0J<5)Y%{Yr6`O4{4(O`>MmejzL@7&U z9|NI}0N2#3_R(V5tJx4?T``bW_h12mTGDkO7M{_m-z?;^uPu}(1F}`%0vq(G<~!d}eUOl{ zL!xP4hkI^yH+%v(p-1l{QExij(W9Qm+f-f3RC#ZyL#O!I*VBeyJOD2PHq(F)ZynA2 z4ouoOFMn@^Jbc0V8>8}ns+{1WT>&M(TmcAtpLJ!lOh7Eq0HfEc8XticH+ab)KUkkd z-8H)vP*@g30vc{3Yrq~)%25m#i(|P2Wl$jVJb`#lK)HXM*L#mo2Z_!7TH2z%Xy(7p z5nG6cwc@vR4+Xc-nXL}D$i0_hdIKqF!M8e=tDOq=N$QXwNRqs-}>zEu-GZX^J_yVN&VzkYQe6^jFGdi!`-rG}t&o0pYAbMZ*zu};~ zb5*kc0bHRUTl&Yy2j$}WH@tdaM=Y zj7?XgLj&(#T+8nrcgN#~Yo&OuQOJ zvyPrz8@LbA9ET^jM;ro^L$Wl*|wMmK*8Z?b65g#cd$itK=nqShC0-4QLM2o@I z890b2G~Y)_ z>*QHuH+yXAwt8b7HW$3TcyuV#ll4oLvBQB%d72Okdx+~Xps}ug)_=d{a@k4o$P2X*F z?%Elu#(q^A$$_X1e;fpi*Etj5Xm<||jl`Fr%dwoPR2dD{*t}BCLx_B!0s5sE#2{)s zY|!?zHhLOski1~#acM1<%`m{34Y7X(C&6spQ`vlgQCI~{!r;~uV^%Rm{KU0TwA%x1 z;YOB0wJq4CwbX8e5Y-f!?7v1m7>lgnDBaJc<4xZAyBo}@_=!-@8uzi5-)$7Z8xV@8 zAJ(=h8s~2@->=4{yW4r$WzMN!OSU7NiS+Vmp{iwHju*lFNc4J%+8e^B!^*igO&aj{ zOQ(AZ+{bQDyE9Pc_${=D`kB;eAK}6O?uNvGP z%glWA37DEPJOHIdW7592RLsA(RP5TV0{3?J=@NtPW(k%+^8$@(6-_TgUs;|IGp&!T zxfu#V8HabnbLn7t7a8F>XK*Q7D;Qf}x0gt_Tm1C>od&`$gWG1ZCx8=Z)ZP=q!vnW@ z`H|nrh2IBVrhha;_S16F7Ngk_fTZq7d<}A()7@qI`VjynggVNX?G>iZTU(-_31~eS zSl6zOa+{uznwB7p=dG6qpyEEIhHC6W&Yj~V>NYZZj1;R!@lovFTCu4 zUi4&@Xg_uAUY|-o)ESN{K|i|#x3s$2qjTL+bJQlnN+ud{>5p#n7eX6r?%7|Ik718Z z>T}c&r)c{xc$w(Yj^4jVJApq&JKQ5(t9))>gL-Th1`w8Rr8XP?UhT}+Kbc~XatHCv z6|FzF&4PUJ_0(2IOL>NT55p`^)YT~ti*rF^8KCIsnNDXkEJahp2Q0wy1D3)x^#b|4 z*UFYm#F9;^t$H-taq06j+3A=6XoQe6Qp~Rrlp6A}x{D6w71Yhku z(lm*#dv%ta*`WURZ@+>QT){^Ej6O%?@7_tY$RE8EfX?T1m@Jei&&8feOpvDfh;uZ0 zyg*Q+=NPQHw+T-zM5!>Xn7b9LCSX-o3#MX~zO{s*ERBD*O-%l1oA5oc_;=f+_*quP zfonRGA-xVkZX0rw@aB?G--NVn_-Y%{F66J&3eh`HjeM`3t07Ch`5V=_bvpwYMyxu% zl_~xmm2$W(r9ZKs5eAMKcxR;JVK-Q&`zy*Qj){;U{T^kc_o3msX8Ix`xwPb|kd7rN z&BB)q$Zk2AFipHDQI{=Y1j)hLkEISNMK|LQ{J)HlWi*@VJ4B`HJ48ja`d`V&L5C;#e~3m3?fUWl zf~fGETPW$psC2-X{Lv?Ikq4-r+b6m3Y+@M`gPf9*pMPkmd!RU$7)^jRd=PVu^{42brtUE~u6gul&OMNJ61wPpaZ5V`l{&=rwCaVY|2 zKJd(uob_v-t4opzv@?wWDqC1f>gn*aAK(_q%87ZYgLQ=>(FSKYcUkBqjk2lb;jULS zDH86^3bgG59O;QyqR(lQ2>z>0!q9uqwd~RVzD{EEuR6(vDa>HgxXkPMJ}q(wTQYX& zAN$uux<6OV6bPK36R^Riqv5DH1jH3yEY+49~_NyluK1dcy?wcJME`98fk6_R^RzGYd{6 z^o`>znA@XX9YegxMwpH}IE6=rWMJVovy(#8!KK3Xh6KwW45v|!uyrY!Fd>~$wz8#%9AHj++Lq4<9Bv+qvzXC;w{81cL}(B z**M7IqdwUyRzRPDe^gK=1wnP=Aj4*rGtvVUPal*5|Gx5L1o8KCe@+1fD5;&1Q*w2l zXmm!5=XIgsqY51c{Md!}Vd~g$0_+vSgF8qMuTjS|vUhdHFE}5Fd#lhT_(opK3ZoO9 zpb9fIbgnIe>>QXKSJfpA)lReZ;GH+Ksogwyrlp@0AzQlk{Pyiuyz!oZT_>GqD8+=$ z12g(FP?fQ|t9JFqj0g-u3X1maZx2NVkEzBA0^+R8dn~uE)*{qMjSHv`?&0FD$!>s> zy$k0)Y#x}PbNK#_$*&6OvuX8`Qu5tjr5g`1>z=DBTr5?zQ#-eoQq-U^0iHQfrv4{C z1*7sDn}Lt%1&uaLnW|9P6PNbs)@)sb39uM?=k@0g39(?mzb%PwJ7{GCu?s)@b#=~c z-zwxl@~$7dcO9H3S`i-RLFz4Wy5dbAFxR!~_Ad{j^bZfBW{HbhbgYWDl}Ob=P=@C5 zwa|iaDR`KPO%s_vCag&W zehW4IBCbKZ5>T3#ddeky&e8@$5L6mdK_n)0JOY) zv)uQuI3#OEzPru)xSGGIgn$tE*DxW!QED+yp6~RNf;G$s&w{@;AWrn{6I$uP^882- zPiD%pWYE_pBs-uA0{_<+v9O$mGQM85_Z!AbLp(zmPv)jGZDCy10Ag=e)p3*qxN~wsYc6VXGSwbsF{*f?nZl7W~yn$ z$t4{mj0T|P7S%2qwtL!0<93B+jf^M04`x1Aro3gcKloRxrB-7bOfNK9K_KBR0W`au z7Y$yT-f$8;K(YLF8y0&5koPxXq$O?>ZEt81-J{rxMZaBY5cIGdzfhI4FZGN1T1fem z`l`b0V7y8@J;QClo1IpLx3hY8Y76J2}pZ<1y&1ZQO zh>x}(`ibsf1H!4&>P{b4QG7DCx@=ag7Mf&xm-%7{mob3r}i`mhJDrTl`o#x5sbHPQ2CC6+&IjJ)W zRW04I?+i`=Y`Rq+qB}@T0roQ;7mwZq`D8ktqn zkvlc|EK|Ge=^M+fQL#{?oqooe1ln7@o@q@gIfB?N$*u_7@%1 zeSBiSbe1x*foMlV1`U~n62{w&^iKR6$#`^xYJ-iB+;w~M&81sxBe;KJLKrc_Z%v^3 z>4rBHntUJLQhdW=eTHgc>`a87_pkEEf{m7m56B{13r}r_JPGXi+?euW01y~=AyUj` z^MpL4vX=9*k4;-wcVBWxM|<5sifPpSfIQlKvjb+#to_91;ItERt@?mxMYaAsC2jZY zh`By|JaG?YDiz=(kGPEM@iTRZGE1_q6A4-973#cE$osWxn+nAjsfT^MXqL zhwX3ywQ+fvT61p0HrW5}fCeI@#MXe#ws7QGT3NXSB*OgeFR%#RKfxjs7+ja{+TKn@ zL9t=;tC*sd4{W~Y0;N2GyMKd3GJkZkV@HRgUSm@9!@<#TMJ*j$g@NWOQQ*=&BQ_u8#9)GorOb?ylLB;&T90wPt zp*EJFxueI@;{N2_g^VVW7mk@jBXZa3jmEisFLLiB{xN9r$4WVa3;`0a;KP#GS{er$Z;cH29;_*W zQv`rAD+|ODKL8_JuC^lvVIO?dO}V{~THWFxj>2P12e}g~KjMfhjdBf=^W>#eq7!PJ zR8m}3_Bff!(`DtxAK5E)Lw`j^yk|TGz~fUVPw$u@uO$RGILdAy=%Bt?W z;e<8Komjf&>9q@Q+0t*N1$4%L167Mvo}W6jkQJU08s267k3vIkXZOSf!I_lx?`JMU zIAQ-mu2!WZ@fM)wjZJGnC$WwIFOmWEF2_O zgXHPyOptVcsTyfZ%X(kN6vy4{ak`HI<;MF;^>=2+BEMvJCZ71#r+sL)>oivwgnF%)?N;ZW#?ac382%84bWT}yNCjGF;1M+Fgj^d! zPe#nwAyKj?V^ixSa*2#Xl5? zIB9Wz$00`RZ_3kiSQf1GZ?-WD6dk_i7xjJM0%47Y2748Rsi5!K&~^oWQ_ZhEv1Y&k zxYnU9(`Nmf7vUI}^D4z6&2U>!*D;1aYiCn_7EH1vuvTx#E2reYMmhH3nIg2vj`u26BBD7!{OJX)Jx(QyA1FndxJZRQR##eaj zftlGdjk23#i)?a7{F?xirG>~?w`lAsd}5Ddpi)z(E7B7Og4Ex6A|X9D6+kN5_1TQc!R4>>Lin!bRI&`! z2rVXXjKL10k;onD z{R=f>ob0?|p!dk<`ehXLWEEpx0M!de{_&CNN?`%U$3*1arfTJPfqTD!uL5m4f9-EZ zj&Ap$%Ny;bSo3Yi5T^Em0ame|!g5trb*(g1ebeq1+96t^4yf0=M{&*~rue)?%)c`X zNo~;oVG-jZ#mt&cBq&MFZf&&QDYZOBcWWS<*W0HGIS40_J3VThx=cd>1yFG-;q!2 zq)JLvBLCDWvSLR6W`-z1xD{|V9=SR?7OTJgr%h4oyG>D01?up(O|c_8sQalENH%r} zNE)}2(go|v%qnsVx1k@)4Dx;ak-;8#1{dNJ<_J3J$ep=a+vwrla_^FEGUbHWP%koY z#r{8d5(RSKFi}xJ~J0NcGWy@ORCGx$^sp=lV(_I+Q`@ETZ-pOx-(17NF?D}&i)Ph3)Miw&voyv4R4cp> zTl>p^=xIJNW>54;L)P01mh;J%N04VA%iV%2qR*IoF?|Mp*`Rcm6JT%>8D4@M(JE9Sl4@4?L@3QJD}Q)?$AJ-&p)w zfinF}AaAYuUyB?g#98U$XfR2+mbN$t>Idib{}f?BN6yY$Oh|u0Jmj8+Q?@(&wlSKt z>-26+FW8Qt0{P-dGR_GWEN|ahN{^}w{0!7(d*IJ?pC>8JXPqT<;%ikcx&OZBpYFzL zIhUZET@^X`5b1K?zWuvm^?gw)vc8c?^Q;z^r0}V!l?tlKExnLki@c0g#N~3P+Q)}h zsarTcz|xcJ`)KMbI(fKdp}Dz29`e^fCgb+6c;eS~=Krg*fs_u1Xs_WP5P(I<#YZw| zjZa@4DaUf+VIjT#AcQ#LeL4$lE#DT}OTCNZx~u%GDfN&acNO+=C!z4=(tR6~=_<)a zPRHZnE8Qur&P!y-I&VQCcJF6}4~~^%0gw`NxaIj-1zg&7_H0k1eAub-Dt!E{NY9ou zX_4zO2~R@P&^2#QMkkEr*PeWiJ3-K0LxsJq8SAsz!e`;SOH??9EJ4EmsZX2NL6rSlbu6*-N?^d4yHweyH zcItHkiiw6cyM@B*% zhN|R4LLtVo&4UAv=xW&|7HhN*Gex{rc!sju(K;@(b1= z^=DsfVh~7jrcg?0XJ_X*eBuSggB>y+`yBG)paq5EFlHvi=Iu59)}IiNWal?z^w}2F z>2ZfAFOnuRd6s5qbipv=O-|Z$FpOtsMQ|QpI|ss=Zq~IB&z!;IJNR70R=y(1v2=%b zaXi#lWcRek!)n~!-~Ewg2qle~lr%l~#WZq^s8%1L&OlW=xz2lRTN>ue1bJVW+0|2@Un@cT=8n-$N>7iq4b&~P;C%sR{b#SjkM4qCLk8~rY6kzh zJo|!_A%<3rkH=_r!sVSYCP|@nH7P+Sw+8qYjh^TRcR-e%k8OjZ2<6m`(uDLgN4d0Ac1qNape}nAGwKb#dV1El~ zFbDc`{zdE17GsS)7zqiuDdFxrElvX2BY`B5OO`W5$Shd@UYsy2c~jahfU{CvFfF@O z!dauyi4*z+qDO$|O;u=h z{x?&VRkp1EkHUoD+V8?dX#lUQ>M!0Yg?*gVYJP;zF;A@H-Aben0XZozi$*R;M|M$W!;wGE3ThU9*{oO(y4pS&~8o^{Ig zqI#!YN|D*0t&?HWQ?;LF(foAl&2ZAxvGz>(z~-p9 zMbLSZlWW;_C*xXu_3eQddp=tXqJAz+md)7}+k;Qqs3Ao;+K1)YCFsW_HT4*BT+bU7uaTQ$f($f^LXm z?l&sBJ^q)DrtN8U^%`~Q8DuI^dI;r{Zpf>c1J$9-g0<_G#4LHAmi~w)65qB9G>dAl zO)L1?iJ&00USXE2fpZs-wy$nh;FUbF#rgasLh$bEJ5L_YgG}yc3@`>cbd;?}u)&ST zj9{&uMW*s)70bvm+7=slv$`$cvdb^DU0p?(YJaL$^=zv~1ZE$mUf#?5eDTe;hN#Y^k-6OS4*A@=qYMj(> zbN2b|?!GQr&cX%JAAm?ekMz4}IhpI5 z8OtAWc;kcqo;0uzu}SXkzGzjWMg{+pSL=583}seKzNmx4 zMO}F#=%d8^U_`R0X{(;sg(#Sk+o`}+wS1@UN&uhlj)3Sri%U>~7cEPvt(0QZM|<15 ztf>uRcsbX^C~05Xa=oW6hNqJdbTVnds@K1^>=F)QB`?3i!6_61V~pQ%gBw;^Vr{Ox zu83-x!F&Gf$;+sfO;^w<4$Rnn-zWr+%m8&GQNZ>?nYpS+=&OOc$s-~O#QK5L(-`Ut z19isB&LPw&#LdTKJi~Rb2_S@{r_F8LtVQ!p%oODSJMZb8lT;hzLd#*6lX|MJZ5nhXZT)2sw?x=C!jP$l-?7txo${m4SBB6XEEAig@v@Cx;MwGHHoZrpKGNA(CGUv zIAD>x?;z07R~^&$NxcgF!3mT%fe&_w`hjztP1ticN(P5RJ)GyUx*9sxpv_+PoDxye z@L8kxPjG}e$11b0Dm&6ms;_YkkPyoEhVxJ+_w;j@8u{J zd*6EFs=Mou3Q%%I_c+&W0Zaq6C)nB*s3`L}pxJSlh$W{@oCHP@(-p1Uf{nOOcew)~ zM|GnMU?Ugj>#)sAES)%ayFw?$2lvyLnwR+OP)SD>$4fA=w$qN_t*6Xh9(%8Yb>|l; z3c2{PE$+Xxh3Y@Vt?p94cmG8$JyDxS^PTpdha~|1ZfH`dyE^qv{S`^06ARa-c2+IV2fc}6i5l+dTwg22wn1grmx>I_24n>j45L_*at?L1 z=5c+@@Pq6{gQe&lc?P(6zrH3EcAHz@*nv#OurrXfuw8U{mv4Bl@`8U|B$tbHwXa(u zwUMSV{pMQnQ*DjTPy4Q?(!og1I;k6BM4!u>L-*s{H+! zJf87`H<2#2Hez5Oj~y15W_Mo@25GsSbaZQ^4iY}}Raf8N&r%y`vP2h_tTP*v2z)rS zqrLAiOUdtxnx30mN{xlKEgI;1huz;q-FS$EQu#Z62C!oSbmvswP_LDJYq*Rm2*VSn zk$mg#zOaqkypJ_Q*Yj+nVqlnmaR-aePvizMg*XxUGpbt=x?*CY8L2& sM?^mkK7Q+uC;ndf>Hp;r?nTJu%$CnCa&ujY7tmj_kCi0z#h<_ae{NYWUH||9 literal 0 HcmV?d00001 diff --git a/almukhammetov_bulat_lab_3/README.md b/almukhammetov_bulat_lab_3/README.md new file mode 100644 index 0000000..32a85f4 --- /dev/null +++ b/almukhammetov_bulat_lab_3/README.md @@ -0,0 +1,64 @@ +Вариант 2 + +Задание: +Предсказание категории возраста дома (housingMedianAge) на основе других признаков, таких как широта, долгота, общее количество комнат и т.д. + +Данные: +Данный набор данных использовался во второй главе недавней книги Аурелиена Жерона "Практическое машинное обучение с помощью Scikit-Learn и TensorFlow". Он служит отличным введением в реализацию алгоритмов машинного обучения, потому что требует минимальной предварительной обработки данных, содержит легко понимаемый список переменных и находится в оптимальном размере, который не слишком мал и не слишком большой. + +Данные содержат информацию о домах в определенном районе Калифорнии и некоторую сводную статистику на основе данных переписи 1990 года. Следует отметить, что данные не прошли предварительную очистку, и для них требуются некоторые этапы предварительной обработки. Столбцы включают в себя следующие переменные, их названия весьма наглядно описывают их суть: + +долгота longitude + +широта latitude + +средний возраст жилья median_house_value + +общее количество комнат total_rooms + +общее количество спален total_bedrooms + +население population + +домохозяйства households + +медианный доход median_income + +Запуск: +Запустите файл lab3.py + +Описание программы: + +1. Загружает набор данных из файла 'housing.csv', который содержит информацию о домах в Калифорнии, включая их координаты, возраст, количество комнат, население, доход и другие характеристики. + +2. Удаляет строки с нулевыми значениями из набора данных для чистоты анализа. + +3. Выбирает набор признаков (features) из данных, которые будут использоваться для обучения моделей регрессии и классификации. + +4. Определяет задачу регрессии, где целевой переменной (target) является 'housing_median_age', и задачу классификации, где целевой переменной является 'housing_median_age'. + +5. Разделяет данные на обучающий и тестовый наборы для обеих задач с использованием функции train_test_split. Тестовый набор составляет 1% от исходных данных. + +6. Создает и обучает дерево решений для регрессии и классификации с использованием моделей DecisionTreeRegressor и DecisionTreeClassifier. + +7. Предсказывает значения целевой переменной на тестовых наборах для обеих задач. + +8. Оценивает качество моделей с помощью среднеквадратичной ошибки (MSE) для регрессии и точности (accuracy) для классификации. + +9. Выводит среднеквадратичную ошибку для регрессии и точность для классификации, а также важности признаков для обеих задач. + +Результаты: + +![Alt text](1.png) + +Выводы: + +Для задачи регрессии, где целью было предсказать возраст жилья (housing_median_age), модель дерева решений показала среднюю ошибку (MSE) равную 117.65. Это означает, что модель регрессии вполне приемлемо предсказывает возраст жилья на основе выбранных признаков. + +Для задачи классификации, где целью было предсказать стоимость жилья (housing_median_age), модель дерева решений показала низкую точность, всего 8.29%. Это свидетельствует о том, что модель классификации не справляется с предсказанием стоимости жилья на основе выбранных признаков. Низкая точность указывает на необходимость улучшения модели или выбора других методов для решения задачи классификации. + +Анализ важности признаков для задачи регрессии показал, что наибольший вклад в предсказание возраста жилья вносят признаки 'longitude', 'latitude' и 'total_rooms'. Эти признаки оказывают наибольшее влияние на результаты модели. + +Для задачи классификации наибольший вклад в предсказание стоимости жилья вносят признаки 'median_income', 'longitude' и 'latitude'. Эти признаки имеют наибольшее значение при определении классов стоимости жилья. + +В целом, результаты указывают на успешное решение задачи регрессии с использованием модели дерева решений. Однако задача классификации требует дополнительных улучшений. diff --git a/almukhammetov_bulat_lab_3/lab3(old).py b/almukhammetov_bulat_lab_3/lab3(old).py new file mode 100644 index 0000000..cb7e018 --- /dev/null +++ b/almukhammetov_bulat_lab_3/lab3(old).py @@ -0,0 +1,48 @@ +import pandas as pd +from sklearn.preprocessing import LabelEncoder +from sklearn.tree import DecisionTreeClassifier + +# Загрузка данных +data = pd.read_csv('titanic.csv', index_col='PassengerId') + + +# Функция для преобразования пола в числовое значение +def Sex_to_bool(sex): + if sex == "male": + return 0 + return 1 + + +# Преобразование пола в числовое значение +data['Sex'] = data['Sex'].apply(Sex_to_bool) + +# Отбор строк с непустыми значениями +# Отбор строк с непустыми значениями +data = data.loc[~data['Name'].isna() + & ~data['Age'].isna() + & ~data['Sex'].isna() + & ~data['Survived'].isna()] + + +# Отбор нужных столбцов +features = data[['Name', 'Sex', 'Age']] + +# Применение Label Encoding к столбцу 'Name' +label_encoder = LabelEncoder() +features['Name'] = label_encoder.fit_transform(features['Name']) + +# Определение целевой переменной +y = data['Survived'] + +# Создание и обучение дерева решений +clf = DecisionTreeClassifier(random_state=241) +clf.fit(features, y) + +# Получение важностей признаков +importance = clf.feature_importances_ + +# Печать важности каждого признака +print("Важность 'Name':", importance[0]) +print("Важность 'Sex':", importance[1]) +print("Важность 'Age':", importance[2]) + diff --git a/almukhammetov_bulat_lab_3/lab3.py b/almukhammetov_bulat_lab_3/lab3.py new file mode 100644 index 0000000..f8b9c16 --- /dev/null +++ b/almukhammetov_bulat_lab_3/lab3.py @@ -0,0 +1,77 @@ +import pandas as pd +from sklearn.tree import DecisionTreeClassifier, DecisionTreeRegressor +from sklearn.model_selection import train_test_split +from sklearn.metrics import mean_squared_error, accuracy_score + +# Загрузка данных +data = pd.read_csv('housing.csv') +data = data.dropna() + +# Отбор нужных столбцов +features = data[ + ['longitude', 'latitude', 'total_rooms', 'total_bedrooms', 'population', 'households', 'median_income']] + +# Задача регрессии +target_regression = data['housing_median_age'] + +# Разделение данных на обучающий и тестовый наборы для регрессии +X_train_regression, X_test_regression, y_train_regression, y_test_regression = train_test_split(features, + target_regression, + test_size=0.01, + random_state=241) + +# Создание и обучение дерева решений для регрессии +clf_regression = DecisionTreeRegressor(random_state=241) +clf_regression.fit(X_train_regression, y_train_regression) + +# Предсказание на тестовом наборе для регрессии +y_pred_regression = clf_regression.predict(X_test_regression) + +# Оценка качества модели для регрессии (MSE) +mse_regression = mean_squared_error(y_test_regression, y_pred_regression) +print("Средняя ошибка для регрессии:", mse_regression) + +# Задача классификации +target_classification = data['median_house_value'] + +# Разделение данных на обучающий и тестовый наборы для классификации +X_train_classification, X_test_classification, y_train_classification, y_test_classification = train_test_split( + features, target_classification, test_size=0.01, random_state=241) + +# Создание и обучение дерева классификации +clf_classification = DecisionTreeClassifier(random_state=241) +clf_classification.fit(X_train_classification, y_train_classification) + +# Предсказание на тестовом наборе для классификации +y_pred_classification = clf_classification.predict(X_test_classification) + +# Оценка качества модели для классификации (точность) +accuracy_classification = accuracy_score(y_test_classification, y_pred_classification) +print("Точность для классификации: {:.2f}%".format(accuracy_classification * 100)) + +# Важности признаков для регрессии +importance_regression = clf_regression.feature_importances_ + +print("Важность для регрессии") +# Печать важности каждого признака для регрессии +print("Важность 'longitude':", importance_regression[0]) # За западную долготу дома +print("Важность 'latitude':", importance_regression[1]) # За северную широту дома +print("Важность 'total_rooms':", importance_regression[2]) # За общее количество комнат в блоке +print("Важность 'total_bedrooms':", importance_regression[3]) # За общее количество спален в блоке +print("Важность 'population':", importance_regression[4]) # За общее количество проживающих в блоке +print("Важность 'households':", importance_regression[5]) # За общее количество домохозяйств в блоке +print("Важность 'median_income':", importance_regression[6]) # За медианный доход домохозяйств в блоке + +# Важности признаков для классификации +importance_classification = clf_classification.feature_importances_ + +print() +print("Важность для классификации") +# Печать важности каждого признака для классификации +print("Важность 'longitude':", importance_classification[0]) # За западную долготу дома +print("Важность 'latitude':", importance_classification[1]) # За северную широту дома +print("Важность 'total_rooms':", importance_classification[2]) # За общее количество комнат в блоке +print("Важность 'total_bedrooms':", importance_classification[3]) # За общее количество спален в блоке +print("Важность 'population':", importance_classification[4]) # За общее количество проживающих в блоке +print("Важность 'households':", importance_classification[5]) # За общее количество домохозяйств в блоке +print("Важность 'median_income':", importance_classification[6]) # За медианный доход домохозяйств в блоке