From 9efbb69dfd30353173374cc7f2f15bead5194b52 Mon Sep 17 00:00:00 2001 From: KMnO4-zx <1021385881@qq.com> Date: Mon, 9 Jun 2025 22:14:01 +0800 Subject: [PATCH] =?UTF-8?q?docs(chapter5):=20=E6=B7=BB=E5=8A=A0LLaMA2?= =?UTF-8?q?=E7=BB=93=E6=9E=84=E5=9B=BE=E5=B9=B6=E6=9B=B4=E6=96=B0=E4=BE=9D?= =?UTF-8?q?=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 更新requirements.txt中的pytorch为torch以保持一致性 --- docs/chapter5/code/requirements.txt | 2 +- docs/chapter5/第五章 动手搭建大模型.md | 7 +++++++ docs/images/5-images/LLama2.png | Bin 0 -> 928995 bytes 3 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 docs/images/5-images/LLama2.png diff --git a/docs/chapter5/code/requirements.txt b/docs/chapter5/code/requirements.txt index 405c07d..429cb3e 100644 --- a/docs/chapter5/code/requirements.txt +++ b/docs/chapter5/code/requirements.txt @@ -1,4 +1,4 @@ -pytorch==2.4.0 +torch==2.4.0 torchvision==0.19.0 datasets==2.16.1 jsonlines==4.0.0 diff --git a/docs/chapter5/第五章 动手搭建大模型.md b/docs/chapter5/第五章 动手搭建大模型.md index 93786a5..ed0b4e9 100644 --- a/docs/chapter5/第五章 动手搭建大模型.md +++ b/docs/chapter5/第五章 动手搭建大模型.md @@ -4,6 +4,13 @@ Meta(原Facebook)于2023年2月发布第一款基于Transformer结构的大型语言模型LLaMA,并于同年7月发布同系列模型LLaMA2。我们在第四章已经学习了解的了LLM,记忆如何训练LLM等等。那本小节我们就来学习,如何动手写一个LLaMA2模型。 +LLaMA2 模型结构如下图5.0所示: + +
+ 图 5.0 LLaMA2结构
+#v$ND5=@|-^j4;Ny2hdKz zGNuu-n4E2xDBIhzDm_8SD#BmOHF)O4Lt}B!4XwC8Jl6NGi=vYY+|IG$nx!}lBq2bp zC^fMsh}UX2ce$~WDgX*-B|>gj+QNSU;oI-dn#F;X9oP zR#A($)zTMg8m}*lZ*Xn-N~e!dY4 8IUGODC#~em7QUO7 zG4_N_K7aG6Sy0x?p=i`e>esUXwsu0hKDouXp!4dRILFeXSg3GyIB2~4}?+c@S#vtSLgcfNYv|hbBEXf%3AzrMO;9!vbVkj=Taz1CxO_QCijI5_r zpH5G4Mhkqk4hPg($tX6}N1jlW4A@@SiyLT!x(nN7{)TzaIiLH%ZKqIeZJu_SUp@NE z(23bZ%^j=FNa_R Xy8p&DeX7i<8$urOG8 CP9%8angcm!4Pc4`OFN~zaB_?%QHvskt@vXGL`Lc$$ 7aj*HUF>BZsAl+U93vm);XX?2a!lQ$eb*?`wD%n2+!IY&WkwSU_aEM|%BXJTgpw zzENJZDN{(GA?iw^D|qYZ%x$R)zLw?G>E=Ie6SlW4#%yvmaE)bueUOh!y4)EzZq?~` z;+$eyme#kLzO-xU(Vo9Uc|PAFK`?wluyVj~OxHaa2((p#Yky?7-u48U>Zv8;CiP9I zSE0v_WaCs-Hl7l1yj`Cr7Pgn7p0A@GTy&MRl^I}$AY6};^eBPq@kJJC*3G6P-E$W* zG1@It+O4?~pPf<6S$YnxcR!8Zf=Nf@XNWI4)Rc>ky07S}`c^-Y#jGJ#l96 ?N4kszeB0< la*8`Y7y@z{b-wuu`ea^12sMZ@1tIOc*;2k(avtDhP`YuoqzL8R0fXW7|> zNoGbQ73<^Bp) kw!@`)Ha1L7 zyu>VvB98B^_s$pe$wEA=%3yi^rX%2)dTo7)w{d@z7OqFgouPDhZg}3}a4|dMol+tP zSYxzuEk4WLahNY`EryXz*JcvBb+uRHROQguo66^ptJFia(mb-R#P!_GRvsc-z-eeF zJwbz5b2GdnfcLa3*JjEfhi?}Jfi(AZ%F~ups8$VTm!wbNbYJ}oZ)F?8DGLPg!7xzV zo{YMk*>$a@gKbJCKrC#sH&f#gMH*MwJ nNT0SzDKnVq=) zTDJXgkw~nxf$Dbsixks(;kMEj(09X{JS%~G%akoMZ4zA}Xew6Ox3) =GY8s|HCO&M>uWLBn@hrCQ+Dt6j z%^RYl+tST$R_>_YriKuEi5jsD>6RCkCzr&3Px$H#TgDr_dX&H^9}JO-i;iZ?x{anU zO#N$&vt^4)SL8$IH|AJlH4ncP2$6IQ-m(GdR;FG;-%5(czUnhCr^gLdpzW2-nG$Lq zIxCwQuZ754|0c-)U1 cJJ)Iv-n8iE;S3(0&H{w(UcFr;{M`;}6$C;ee zKYzKL*t4LRRtJ^vRB#*a#cRBi@6|t@hNW`+WrOTla#{^{u*KUhj}K4RJriG?&9rtp zdNm-WF5`U#SD;+?NWj0W#?9OLvnBe&7_{o>s9?$N09lid-VU`}fWIv;np~#T6ZJ+e z+ci24K1 1Kr r4QGqLQx z{A2o3?`k-SJeRBO^jhcbhdhx>@Hee9f%df>_6ZH;vi29q+Ozh^ALgi>yf8@yJFqZu zHj^RCjlC+NL0K-n=v=2lk|s90PxKi1!Nad=wKHo@^r~Y% KV`YkfPI)uL5J3 z)PdhILh^|0-N5X4v+vvOaY5EM*S?phU+KqLP+CvnhdX8kzlF6R1+;y^(}Z$1)jkmO zt-Q`{UskDJ^!+rzH2A~!u{_%@H$tzEP#v3b-f8c!mxZ>6HiNulxCTJq#8DRz#|bJ$ zk1V+jHP^a*0;j6FCZI{OFmXZf*|w(^t73@k+nyF6*LsNI&A;#b+XD)*DsAXEdsKTE z$Km!;0Zppu+a7n}vi6o05s7bG+&xIfmWH^9M4o_M35i|I%eUDHatyAsJ$&zFBLwML zw%c>VcQlGy(K`tB<7p{qWL^^;b-V}ix{kx%@-{fycFl@Mt!M<6{;8#yhQvQHFx0na zHS}dNa<^Kh5ox@zQ>Usq$QdI(nVu?D+>&p+*q6{#)RwuVS!}MDXU@q$Jl_PVxVd|v zw2iPvz2uG0N#}`U (2Kdj_DY>=WIT&~<<3uw@-ttn5di4RIt}uD21$$-J3If@)>P_ z!B=A}sUNO+*d)chTMu_+N6Und;$zFw$#PR!294kx-#EDgaI$f;|Enj)iNxe^zQsu} zPY;X#o}m U?HqevaD)`Ytkhh=-WWK;&kMVTaXySh&G+ShQ^rYba>1=*^}aAO2=Jw->M0^&1ok z$1e^VFae<<%twJT!~xMwTWOzL5JmiH9X@-Z=N@fEy96XJe8!z!yOD$6KG*Ct@WSD^ z-WYjPvNRdtVU*Ch!y{R|+2o<)w#DVyP`V+O`Ov53FuZ}6nem+M7K6&;C7?gy!kTLG z`WO}b;5ebu2+^T GtW>`f|W0GV`YHkvO^YyNu_FhA?|z zxAvi3e^FyPYyMf3acq~UdHoB$*NwA$kNG2=I$dqFm~Q07YEm1b=~GvbGaHj@ckT}z zH@Y$q$98%bkj*!L9-7^NuL(sk>l{F6i8bRz{Kle;$Stz3kn%kItG1J)-MmZ?C8*^7 z=>)T_#}zX#L)~>3`*@(6N1K*1b8APdHN0#tUXH{sb2-hM4~|>tUZJ Z42)kYc@ z{0S#~zD#HpGS4pWP}5=WY4OV2Dq$aM*3+=PiT;fF(ese-AL0>}$}Bj;*3VTRz3NPz zKhMYREPrqDveFH}>rZOO4y43b%z1jJS0?zBMRbj2-YAtaOe0LmkG>sWA8F)0n&5LR z`*&f&FJgvPFg$c#jJp+WP|I!0BPqu (r=zCxIUDqQMaa&4KYLSSzP60f@$n}$jDS>WTT)9`mou@*Ilf?zX0@99k ~BaU#l3r$H(2_hL9D6Sv;q?I zMQ^o{nq3A0OrQ1vv_UjA;+$f`oJeu*79M+ PM`@50pVMX_FeoFvg=IkUaJh5+h &xn}$!y#Gya$$ZsXdE3 z8 !GKx3WX53V3kN4g!hWGOuLv7rVmFrotF3-X+ z8T@C vIE!wft8xnFeKsf(JjWr6r&ccdT*&UA(A=NWBsev`@>Ps25Zkv-@67>zPgfo z+v>0Vlg$p?R;TOj`qD~~wV3{f<+S@ls!4M@lI3Q-cKvPsQJ> G$;9+fCaW?s7n+EI3f2+U;v@y_@U)LD7mALg6b92t6@#JaJ5& zVX(a1D59uN0_OMAUrs!)6(J`vul<@v^@(w(&Zk*Bn{CYEHuv4_y?j`FxDeGHcGJ<~ zR?6zSp3-3fx@BP+0|UD5&6oUJYc)0-lqK!wxBZf%4z|jtE)YQ7<*Z|t#_8T2xYBDp zgATvHDE}&5*QV`HO-Nu#0;(CqSd5|j+eE`)=fe +Y6vE-k{|1H zDavoeugx6Sw?@e`7caf(_*Mmw)Q%Ha2%TNq=o?U%
k? zqTupJt;SqdE3KP6hsMNLmhXT9k|iwNt?!u=K9fggxCS$Hhz|q}@eo28&q?$>2y&4X zK^aKcYrj7X-sfVh+22U_bF#`dy(NEH0T$Y)tWW1_MB7R}s3CWur7E$qXrNJ~2I?^4 zWaFdsn4e9qjM;r|G0N9L_3?_KC~ff@#eorX;QG 2|7mWLId(5z>(#Vvn!OPF(O&-ep>Oev82KbR*O<_?rPN^?OI=pp zWSpY68TJJrs#0FQubW;*1K(;be$~J exgkScGU%2dA8Gb3y* zTU^0!<3~1AN~K1!EVL!*NF;pb>(_JRlOGKsXOKm1lO_db^~> @3)8)@D5AUjW z#n2`cI9$sKLz&zda`M?e>gLz*V>@asL-frLrWy_)94=pd8QRR->vUYAtHQf5@8hGV z8UUS}9|}#(M>w`U@7i4sV{+BGr)s*NzbAN5lp7)?3ti)rV<$Ur;IlNeJJ@f^p-)}A z+voj~3zV`$CRxspKph+u$EG=BfE^?BH4ev*iMRDA{CjD2?h12FHXc(gF(1IHI4u7- zA>^wZ%!t7`8=2uvFc9Rc$n3yvFh%7w+D12hl&Y~?&huk@;Hw7gMXkMD?k<4L7H^{q zbh2AVzvcAO^pfbhloCXCf<4 Tst2Kf~IeagR0^}{j= zO!RBHqYR>L($%{h$CMq3VVNg+w#r9iTq$Dp$2(1?6|J>fW0#O!HHa$9v9E=Nb{%A7 z!4Hn78Uq@an4mfehBL=*%dg7Lsi;Eppq=mnpZnHlW8$jn%4XuGPhOWK)S50q)jLm^Z-5^sBdxA$f&KWX8iOoNoI0;^+%}7m zbV~|j_L*B;AEtI}A7GmUE$_O{XtB!?wpEw-74$e+SxWM-2>K1$p!d8ZJHmL#S|OWr zY=gKHX?e#}wjs|XYb($-2npP$X`9agKj+*7UFxF!H1n3v<5XqnLb~lS%lnTCY!U7c z_O{EU9zBSCR1rBZ56c@NA8K2PY~P?E22@)4BLsqsyH6TO!hIp92Cq+8<*Pm6uC>~v zS9`*G?-s4P-%A@wCr&XQ{Z^_gUNc*R{-0JRGAcl}W3DEg4>ypW4Kqggi%>Cdb#*(( zN&}zb=KLv;>%DWoy`lfPvnwAY(N&dHbl6Z&+o#?La~>8Tl1C_W>y6#sSDQSe`AgZg z0uj}8LhQ^`|AOr@*He{Pm*SHeb;UF=C?RKJemoL0{+FhTE+OnZ8#y$3 fRJGGeu#coC?O&2^<|~lUe{NO%L1&3X^No6@d#Ns z$o3dL3AgM2#LbG6akO$1WtQD|7^AokK#-yS2O4~IubFJ!R!7I}`l;miBeLlOlJzUi zuEkON@)pmYgqUcL=DpPcN8li(jHk*&_a1B5$mVhY=VOsi*BM1=(rKF=O&gWlSJE8y z0AjYHIEEtU9{{12KJ_D4gd%jkViE8#9L3jWQ2y}&st8kO_x_^M?*2vbs|E)_bk}2P zYv50H`rNl}%NU^EUtygf8`;$5TfR;os#DPwy(-E8fF@6=PkOnae9v(ULFd=%hX*KB zSU|nc7a2T<1L2X42?RzR$Xa^x!}8aB76UiPr=&58tc}p^eLXgpeG}sJ>TCY5C;1!% z#MYK^kcejA8H0cY$cBmhQnc8*VB%_Wdww OT zP+n`HuuW*lxG9g+3Q&9v_DI%^>*biyol*M`XU0Ax+83ezL)h#jTp0 GpT3<|H!IG1%0$#RVFX2};I%4%yhh79yd7;zX;x9zTxS!9f@rHJA2hA(4v~NXE zd#}IRDMe|C^hEL{ZHZP{GQQd;>dLN$o>=gEkIG+1#?JUa(X$hRRq?`NbPh#NAiErz zUb}$dB9jo^uU4I`jh!1K8}OenJGgm)$AgeGH2Uby`9Sbmt lKm2z@T&UO8&pA7G7{Z{ck-Yagd;(+Wgpn9nj4i~GN` zc|Vs>z=j*6sKHd@WYfW&f83B~ClH&YRXlW#8pR+)V-r-Lx)l8>bJV!6f~aAKZ_lad zmEx9Yq6N3oRuGCQPq-^^UzO-m?ojQ}U0<`dRv#zcLo`mKdKGsZWuNRAXP7qM&BIyB z=vgLAr)}6Xh))c&i^mAuoppjT@=A3qkmMRS&>pbcpC}J~CRy?L{=NFD*;i3{LXJLr zd+{B5?Nf*SyPIzr |;ZG55m;}wWro#E^^I2i{JsiJM+G+tSNq9fv%i14A z!Fa>xe*W9;XW&E8O1k4+MbAOc&{q;_QDv#M6+sp<-}DW*;mNzYKk@fyh!kB}eP}g% z=HRcdg0O8g_^>)vpvN|!c6$`3-{7}AHNn0*DU+Z-lY#PZ5xHnBmk&ud&4;kz_<;kk z;SYM3y9orho`4C1fc0e?p5s$KkjuIgcH%3EB=;2RBS7ohoiCF~!s6-qZ`pdS!tLhX zjgGPSB})kVCx;49gnDdby;XYY=RO@b)U-aR(Z*)vHist4KBrO)%iI|~*v;!H*joQ` zD{o=XnlD&Tm!`FDR57|IhRNOfH7@8qzwVsrQ`zFNrCgrGn;c%B1Jx^rzBux|-#l?O zCf_2p$ug^XT<;E CodN0xU4y~Oa z5pzv!s@jd|RHW2Kjc`m2Yl+h2u`dSc$!FqLw2AVgR&osibA;nS($Aob PV%Y15qk`_;vMs&s{jLq^DHV*>OtW zN6-!Q!3EOU4ZbD;T^E^rq9_f#Av4s+yfwz$>aZ@|-f_%&M||?goY^+I-Da3c;=FHQ zd->;aH;Uus^l1O7 ?fyx5rC+idVSoJ^2)8d)rV8PC2&$T&KcoxolP0+J`u_ z&wrosqYeJoe1mHV x#Vp_T)EOz`tXL@ zSiV?7zD?p`Lc3_*K;;)FWKl&flZNYYesg~00Vz{ $;~5V z`^XJL>+0vrSQFr5ifPycwakM)mjJ7 k&jDuDfzS3c_sj^T8dH@MgiK8QB5#>jx)Ul# ry_C;+@ZAH>SEPc0MBYt`P!;qen&U>d0rH-UlqYk3HDxPH_fr_3(`EDBpW7Uip zUGJbl>&(8lNjr+$fT!=LsrUZ< vq zr@LD+pkM9Ft<9fr*@r@v(6k|hD8oIH8qekd%e8)@*$+X2q;l-CmQ@;$>~@c_V6ev} z-9z$iY38Rk((MvIX$L>n#@f1(RpzFYX}pEjx2S~@&9xRk59VR6W^2&6Ku5ZYtg7&E zA$FQ>l0L6xvwPpry-cHt({`ZH(Z;wbh;oJ1=IIqGK0gB^1sadR^zg@0hR8S_bQP+c zMng+tWn6n!tJy&Te~h$*whV1Z#F`U#Q`8E`GDoUcv^P3Jx)Q65=_7@u+O1RR9WR81 zr9SR`t(xEp6jK6NU_N1)OtOl9yvSR?Rk!T=ntt1A-zqu|wovt8bVaqCA-VxlTbPW# zU>!JA@_P1Zs-sc3!;awlxd1#Jk-OI5#V>EGxZ>-+<$u3Z`X8e29;yIr(u+yUd!Sj> z*FW)QB*(7*jk{jRN#);v1gtb*@qV5o<_xvnISJm2vnoBWmOn;nR@?P+*^jjVY5E9F zS@%d`=gfFBREO|GYS;qhz4{D$Spz%^cKN9{C8uNyFf84QLW@n%=>amamU~HDu+fOl zGPu1`HkPLh#1|*J8Qkk4dt;lobYn+;*eKbhw!%^1;bDDM<3{0VwZ2QeosjE>;fjAC zT*|rkKB^U+spuM9LVH2Cr}}(t%u}9xkKWC3`=cf6gN9lt6uMf5XcLKcXdB|2z?&LX zXFLOUJ@Uyr2v`eNBRLMf8&bQP NZb zS_A(+75R@VYnBJ*BemWVAj{|NSV5_8P09~yMvoc(t_;HsoJ4M}%a(RhJf-#WsdAA0 z;vJC7I|^&^uPJqRcrDSqYG|En0*^h#t_k@hiF+&j81?>-pN1lU2Fwo{+p{am%#2>{ zUc!o3_`KvC@_P7q48=qcrpH&l7(7p0?jvkQ@{Bj;=wrkf>IN;R$IL`PL(uWk(MIy| zuC8a}N!hHrT;?ov|4k&a_jp)C-Jqgq$ ceYk?Et^5?h@H|acZUCxTad!YanP|V4U%&*q!nPUerj9T^v~-eZv8b_{ z-#=W_b^+Op{gp1Trgnb?gk7n~g0Ufo%3Ny>rFIaBUM%0ku*yhN|M;ALPvE4+B9YCl zA@E)}FMY_qmw&Mh9jM3o*H=l{Af@m@*JB;&!;W|vBg03|eGpm=JXH y@S=&OUO;gnuUi` zqR-^0UFUSCH<5yYjPb^Dq^9G_(-B63dzfrC?rZ`_O#0d?#3N^xF}fpGU7sOw3R (RZSJHQ{PTtXQua4R6BQebR&ujpex?2-#Ll`JD za)ZRB+aHi?t0)1y(1hJ)aPy#n&$(a0c|)^xLtaHQaE!=#*P^^bq$Bfcw>``$jD}r@ ztJ$ bOt>N@&)Y_`E9nz zkPa 0P>3bt4booMZ^siAh+3CSl{HXXDqxjhjxTCa-SaE}mr-p8v4=S`T_u zL6n_mT$$JI?^X3tL_LqJBXoZylG@(g{Ix;*o5n1Sp{DSG`Gn%6tW`V2&7&z->8wS# zwy?F$j^Mb Zc-*8TGY z2bdV__FYpnxi+C(ZVs@K@?=B^zXppqt%546`Lk55az4doA?Hde(TSv8d?ytaACGK- z9(}lN@R9}lkb>3q-xaK$NI)NZLF%og1;JImHD_BE6IBCzwe*Rd=I|=xaDy>rdPR7H zvOzqh+h|6s``LF>W2*EHBN-uW)&__*yOUv$9N8_=s)Gx)ho9QuXtj+EQ3&e6PJZpz z5&=l%q243+d-d?hzOHyZ#^qrrV}7sJlcH-opau>iEldN^KQurExcGA9w^u}ghPPi0 zbl?q;wvu<0KP<~x6iI`ifnqF6boTTuSbDs+w|HOa;Sp6$R6Cc!PRgucefCLQVskEP zPVV~I%yQQxD3|k}Z$-swFrUk#t^2Fe$jgbg(s4G^3Xejt&dBl`CE@ IRNCP{yti^Ke{8bi~9V)%<9%JK2DCCTwIds1<0J6BK ze%Q7j)DTCP1?S2?p3bvUms`p|>< U^ zAA7CTCw9v9D>+lZ6KzG3lb1kVnjdMkBy2T?5BC <-=wV%LOm7(m-7Ud%(*TQL+w8n!O@ zVq<3YxGFc^L+?lKtIzXmFyOt`wcsx{kh1G~2eD<0StFSAs80kuRfe1ElkLWCOMRVi z1II(?gmXb!9y5ocfsm-z^hkDNKw^c+;Xzj(F%Y6t-y84BCn-m)Zx?vfFSEZAl}_7r z_S#)Hbep0sos!E#x7?$%xa74%(LSfK!;?E+VQcA~W1;k?j(XTC5E;lDAR6avwziOE zJ~Ji6M AN78 ouZfg&$Ac z)706E9n1H`nOCJeafch2CCu&%ap0Z@7KQs%?o>b;`Xn7}g}khC9QyV)DK$v^pfz5z zd(g2r6MJ}x6K`@YA(%wlF zFeboT98Qw>+RW8Am(PpqJIm|be;eD}nn+_*EI6xRFrunD)J08%hu0uuR4`{qs!=KD zLw8OPit3Tmx#}^LdkM$};^lWRd;4haIU&qO 5XH_7nZ?0wt%PjVaCLqMb zP|G-iV@7k9ZZjSGuqr{(uJyoKps_(_4m-pwAU aUVDwK~^T}QuYo(Oh u3Bl>X*B%iR`TCTB5y5pHsVZuu^;sb-DEkT&02hg z(I75kENKT<3XYDlqCN3!6|KLY5OTZ6)V5qxEZOArU`?>}B)k5`j^KIS=Tv;6S=L zZga_N0L;OdsIE0h*jjh5was^vxIo-hK}^c~)uo3B#H>F9IEfMV!mytbW%zIk{cTM2 zE43YD-4rL$wIOcKRtJ2z+Z{~utq?ff#Dy@r9=aE8$lRVgB=s4O`{~lJZak;B^CGaN z=~5t_81IG4398x3##ApZJT(#staIQhxXIbRdtCk2^J`vSLj0SRgoT*{iNtq{)ma{` z _t>wpZBWRt_51;{lN&v!D-vL5JxB3fZJthl!ym| zMlU2qn+AI34)Y&=IWOb4R5roHU2T7`y?AL?kICl>F6V@2SmEYe-@Y6W3*w%#)19sK zqmlq}G@7_=UVD!`1K1e6hwOT&$8@s12cz@J65SgfS;GX^n9kK5t*2Z{Z+(T1erlh# z!B{=DSum9_V7x!gQ||WwV Ku#V>WD8L&~q$#_VOJ(JN6vZYgE^@A(O1!5A7QDo-P!#tQ8-9YJWpy18zGZRPB99 zvTchwXNsw;x$d27NWG1@T;kzE)cQ>2n$?(kZq*vh)4!{ww$XuJ)JUK&{bB!w;rEuu zil$+;V|uz8dR05SQ3&GijOY)(As}opR$98S84efYV2H?a>`=S8{+E>ky>yJIm4rw0 z1~UJm1o4gYGLu%I4 Ox+ EnY|M2fYH0O4)fH+OUhjwVse}+ zF+~OC*9soG_(4X$qUp%@SNMchWTvMkZmSR)p=*{uD^Wvt!iMt57HmCOEvB@P7}C*f z)1kFi!~9b`k8g237zM?(O5V;KHJQl>Th5z!yH+~l)iIGoU&e5H8x1$Ed==ag1PNL8 z)I|RE(-m&mkG(iV94NFpmt^UqW!f)+-y&xyguN*gtT^;4=sh>)xf+~DLw4mpwg)?} zoMFFo)m`KI)2fDugPxcp17`1CXuXZ?!icnEEgd!2$KnZv5p{Xo;S$4WqT+{qLPBh7 zoXzQuqai?z{N&2^sO=P0f>)S#!;xp1wC^|@uDsV;vW6e6d@1gA@3qv}2DGk=f4Ssz z68TJ3r>I^HvTVH{TE)Gb)8VNp>ZJWSf=7?J^Dx)9;Xdl&@cib}L~9bBgBCP5D$8|% zk?~y3i57Yefve|=q3`*Y8GQ?ZY>r>~qy~|u?FdB;?YS#Z?+LCxs3_3_m=NscLacKb zu~)7Wd9~Klaql* Ui$&(A9Hy|zdzu<($)zc#CSBTSVdJyXb8 zR{No{lTPL#DQu5rScvE++CKqnCmn5SQTXP}+E3gegzHR7pX?h1>Ux`NI$SV9IP4uW zB{3GD(TATlEFdp%=E&&;ca-Y3u1F}tfA99djwtS-8YhU>5@+7B5z&&fI3r#7JtvEj z#o^}aBcDjAiFl4%LXbgxPmt&NSY`vOb$nlHSV`zbJbmu7*BaZ{ Cc~{lQ{h9+n(Jpv+6QbASP`#t{iBFevxQHKx+Vn2+b?w1spJ!n2-6W z $?2u<+?01(?LpxH%-qG+weCguK4b1`VjfxD* zOOXTYi(JeJ6%6@`J6#$z7Bp3wK3gs8`y6G>XKL{Le0LMZ<~PxR)yv->RB$Bx@Fvt# z*qWUTfvA5nU+dnHi+o0h{azP@3Gv=840tBBS|p r%V9OU?Q4#}_r4Bc+HZ=+%C z3UHP)3QR)}2hz@(sTXO|z^N8BTA3L)0juUadR`nR4c^k0=H^}G6w>(poR+$;1Oj=v zt?uNPowq}e3qpkaYnQg1MsYwbQ}QC4^<)X!OoM){t#!#=?}uuTXR~(+4^}HUmm}X% zwKze72P*_|!wyH%7?G5GpONXuwvgdT)&ld|;c@fX1f(BoOj2xfy}GfjdKVw$Z!D4o zN?HghUnSPGnWT`|PVPX;J>}YMXI&Z&lVNs`UXMFizKN+A&p)a_aQPgmd>-5>UnZ8E zw9^$jz@u*rv#rTBX2g_C3%2Isr!#qihbp(rjz`HS&$mw9lXP!UM&>E>I5Y3OaYmZc zy9#Km?RrgVp+>?UQuo% kdb0GBSEoGs`d0IQ)r+9<1G) z<5E_JVv5b2B&PNgYR%}6T2Y!292ftK$o pXWi-<~C`=sM|!frFS!TApUkhUBksMJ2F!{CliD8 zDEB`4k2M%ecy`1s9iUZ7$xuRu7DoitE@LZ?JcDO17?+f#0(#1Ii0mgp?&^$Xy?L77 z1TOCiyQMN8t3p0P#jumbRo>;QIrh7T(|;*Irw+>zSl^yTKkRcGw_{fvdFV>lveMhA z!}Q@o%O!~X?^qatT@;h}uO34_S#VR(;lNtNsbR`8$j9_2Wk X*~Xj0 z&u v8a(d9s>~`fcMfZiN#m*wJyzC)DpR1@SfXe_C3FKFokO3R^(FSR*i_K zU4Kcdj1OYJlX3oi#M5^Y3tL0}ThL0=P|x90>MZ|00qk0V*-dJd@ctH}x)GZ}L8YqJ zfP!9Mt%b73=-I_g*dn6y=ZS_=SHklYQXte)g4cXm!AVoto5OFN7zKh 3>OYrJ}6^;SjNw!Dv*P;FGS<_F5JGO$_9 zFvuIwF>pRk=l+@k(&m7h%yY$FMsBLw=Kuj0TZ5KA!^<0WG)uJAb6oo5p!5E4ZmeO^ zdoi;0aFDLQBz6IBsXXAOftTan7G5qfbCs8)8wNT_< ^Dbgl+7 G9bQn_XtevOF|&E>gOKt6wax0MEvQ!k7+Wd zx;i-$T5YYOuu}70ym4BqdQ1hU{CX2cwNhT&XF=N!7j^sM%RCA}t7 z2VajJ^&w%izY)2AGrG9CEMXJ2q?_7Jhi-8+@Xhze%8AofLVcWM#?%|EITIW7ioD4` z+dGe|-AEBXmP~O -IQi!MW>Ao-y6n*HJ~g#mHEBa~oaqYwAXTmoyu#yC zx9;F7ut-1?hZ5@(Id`h#cygnz6l`N*rEp{Ty3hSqvwt}A9(Ef{B8Z!~klxwpE&W99 zyCWkf!ce$+f85jLIqKQKU)Us0oni1g!$X)8=f1+w^~=B;KFP2I(WgU2+lE5vol~H; zEz@cOgr5kAeZgYpbM_1&TW0B9$GpS?biX|7Z@UAYBIrMtn&zprpdVqrb+C%RpcGlR znRVOrcV_AP!=K!9L^L1RcRAVHq-(C>$b{gB&?dJt&1}GO-aWkbOU11gCv3Y&3*n>O zwA(hsQ>3LIG@EC@IauFK3ah8NckFM%=&uCW_}i9nIc$IFBp(d)BIz~A1vL@q+z!hZ zh2~Qd0l+P*Px$`El$@TktFEDTIfoka?@j9WXE$uZDeB$pYhO{h&r*%e7}QpOw^!q? z*BJ<>;@!4;KYuwamFnKmwcgUe;edDVm{oTm4Aj|FfPxx|@R|^W@$;8wzcmQFGGD zkEsI_3g{ho;X0fV`NK%;0+SOFIbZGndo23B2f<3M#h)^>xLXhyNXTYf_mYYn{Il-i zZ%2YL@VkU&T8flUQ=;yFAqYl*X>fYOq|`BBwFc0%08P4>;$N`06wl`yITaTiC6)Oy zE=Gm4ZdvFTDpLG`S}+R$2z!&CB01l?EECipWCvzb5mr>sd2Z3#4>Ax7;>dIuzxid0 z08sXgE)B|J$@CsEh`$Inybs(MmW1SQnls}9wZijW+%TZ!vc2@ckOgP4zCqM`Hyz55 z>tkTZ(wg4)Gh6;SH~=|&$&y1xV?xR$v7=BjH@E*kMhNm!VYypS-39TCT@Kgx4<%Dn zz@w&MC?#n5Ip5!1j 8j$> zsA C^bI#$je@ZM?3h76f0P+86Es}U} z26s*K(HW{($-6!E-9Jb13>C3 >x(}oGyeC&a~H##ebSOLEc7D-wPNy! z03sQtU@zWM4tjZ^r2c2m?4Lh_u~Of=rDDv|FHo7qOe_ymkrEGI3@4-;R3YTlZ3E)! z-x-@9nf9;5lG9y;2}%jjNd3P23?_=R`Cf=Rol|jEt?B6oIwI=IpT74T*NN|M!AW`% z12#M%*23hQJ4s7`J#>jz^ZVbop7xKr=Y%Gy_VcNSA53N%6)%bIz7+m|`x{v{6u>SL z`n2sZe 07q;%JEMQCe7g&E1jK6tP zhrqci>q(V**loVVBOA@=?=z13ZHdSCtcy`da_YE@Ns^Zs+a07}DM-Q6wi3sDRZU-t zTQKd~?lq@idr_xE*tDf4qB$`AxkyMM#Vbzk`zQQBCzu7yL#h9x5VOqfB-#^x-&T)5 z^~e8msqPwq3AHa5dz*h*2Gejdg8&QWVo5-P|8537-M_#27bVER1XEX33Mvq4SLL46 z^%BW9bEg2Dm!)X$E$#evGgD_ICiYI|JfVxF;ULK zG52m-Krw Bsf)P7PgC(fr!9aRe0#%_Mr=ok@Wh^N!^8B6j zTE7>8w-nKQC4|&>|L{(6N^+J`^Ah%7<8D6)1Mp$ecUU+=_<3dnu8Zp0_3t$}@kRLF zxc2i0*I@xDPBzO&=_=0s4jQFYJwWuuVPdNZShvmW+0!r5q|^>&)sAeIZDQl8ij)?_hU{gj%y@4t}F2Zj)6dKbamW+iUddZ+nw3yw^# zlJd`&8{iFAn*EiZnerqEbj{ciE<2l-DezkBYBxWObMWC2y_JpCb+gSmtafaF^(3G8 z+P*2@t= I@^;Ygxc0`jkLFbzZv+R2%Q;<1RVNho`i|jO z95aGYohHYD7zjq{n1UC43PB4VW9@v-pe(F^A)VBJ7xGZ*9Eb(H2xhtw|9^`C`VNbD zMqgau+@}KW*68Fdp)xAoq?amo{fL*qw6g!i_;222&}0}$Wdes*Uwa#I1~x(UVde |0nFn}|7OKCz4-@FqSFn25(kz-y)yj{!K=}5-nDB5h#9z# zHXn^G_s}ZhtoKry!lN||YAt$l0q;Z&x8H(AG)q#PxL^LsPj@n40meLKT%&J$w~giO zWoUsmT|l?@O9?Cb{=#M_T^4=0k2B7ZYSuHYt}S{73uQ%UeEHh2sH2u5QW}tu$>gJW zBP=N%B@x c9qabPJ!ZR5AL^Q8r46}DqH zZEZSr{+1PMEbIBe-ij1!Je>a?@hiz`t`?X*sv7xuarMc0@fS=Bgs3@z5;!=R2?7sP z{aZRb>aQzUXkP@g5DJm))16A1YN~svW@C&xOsSaevf#wnYy1-YZRnH!s8xSEKqgZE z(mq8AzLV9uSNJBW8e1y*QKwLZC%pM;Z~JRXMmRip7Ax7MPWexEC@C6i0dEYzmt)st zS5g4SSI9KgVT6L_>+zY)b{)wNATR**E*-uQbOMg{>6YQlfM&Uk^Dcoq1jcac4Fb43 z6Eq*>1gTOHoWK9kwmu7vw1TQekJ|r-?{pSR?i#soiVIq~F%zJhK|`KJWf(SE61*s? zc&$MT65hWOdlN 1G>I& z{Y@hUU~fv tQZJX>kqr0YVKkY{^6xYz$M5E5nsz>zkc1dD6A z^!>|fGmnyQF+TD6-Brjd0D$rPT#5jA>lGZ`5TaJ+h&)LIq ^Z0>2=@R~h bvg&&*)#)ur L%@PLMB=aFb})_oc>WaguZG-n+XB&YcLI-YK`KESk1?n zkFi9Ylt40S 9PG)4A-$z(i(Z?!uzwiYqXO3-yUXM zpaLxN?f1@oX$#O9fTdJ)RTlv-5cck5Bh)F3Ov=WZJwtU@6JqeLZIMUCJaul&r>?Bz zH}_u>3Tu`nQyZhBxTZUZ1#71KV66H-2M#TI?^`Ad@#J&HrDKXSKT67f@0M0!nY{E- z+Tru18(#}yOlv2yb398MX6Ek%NRK?vTIrNe-&Qqh3ThUQb8_adP#6_CfDU7CKERW) z{vx{l(5|19H}G_BVpm=bZ-)2Ep*t)J604tIT3Elh^F@oUJr?hueXrjW)zAW4 Dp&X&4_t~`wOIAk*y<7W;|Sh@o9BZ%`DRHJbjOcd6qNvo}O!*zcYwF?-)x>p1# z<^igs=Yju3EJe=jJNaNAQ649HvXk;dn6e;39T%eT &wD>!=;r>V|83RwnozXm@OfZ>~?KHVHh<^2Kzo^%Q-#fzTxiRl@g*& zp{UJ}>bK_;U? 1+hS;@;md|$= zVWO{s#*o`aX6Rcpd;1@0%1yuR(yTMW?{BeO5DhiV41(o`+@*{m4TdN1=aqUT8kFn` ze#4C7G#Ltb%EXOKoTW#{$OW{TBfC*|$i@jW#09g2c`t91YEcZO9<$vCa(XaQtW?NB z-h!*03g9BbZvAC rR=lxycfhI(G8CMd*{OK5t!gY`^c(N(aeDJ> z!kY0C0Qo9>PXY-!UFV;GiPQVxxaf)?(p!RJm-{_}XW`hB-sp;bE$dJG!U|VUGD*D4 zSPP~dlEO1@_6x%L_WU(J_w%Q3?jhc+@iclq4>`$`uV8JMmOLVj&>?(2L|0qqMnbUV z19(q(eXhkobOf*s`lYu4IbXrralB0!p;wZx{;gHf_u}WHu_Oi%25=6+DC}|QQbH;m z_=av lD3=mBPKfqBbP=l#>%8IGF2e>l#daOx)x<=B~0Itm_Zg1?y zj}oC7l(${doN~Qyc9Km55 ;H$5 zP#RQ1X;hR3r5jNM>6DTZkrI$@hLKV!73uEoZX`vzyQMpanPF!BXV80}d!HN6Z@uqY zvt|v xPNkI?%>_OlF@(pP2a|v=|SVpW5m}| z@vVg23)U;b$;2vXqv!SRx|v1RU?YzJYBk<$>Zt4FTix;wM3Wtm>nDl}p=KZN&7T|| zytolaheCO>hO$}F>7DoS&+J{{BN;nP#xM7>iMy=Uw$de-@p~x$1|A?cPnNi;?*KOu z#;-<=ed@qR%T{``DP=-@do%O(3SExAi}3LcK5$9N@uOEJ;SjHu&gJKu8IlN{Q^)y| zc YzSfp6q7*7BDSPyM7uxRCj!4WlgV~GeN=?^3XD+en rHQ8n8 qF%}*H?3PSZuh*@0)YXlva%MSL!_E`$L6aOA8(jL@@TM3m*=Mta4CyT`cW9{&T0< zfQ?3dw;kFeThu;f0$i6Me9wKwb vMJYjl6ehvRod(dI1Mo9!}(hjz=!l0zeUf zTId@9D}Vboz**mDEU}m*jUMC7fT#ztY$vb*Al95gnHb%f#J%N8 Ni!;$VL z2X8aIAlPLYqpbi#B^T$d0JhAval?a<(1fCP_%H;t1a<2q%3uE=x#8{RkN_Y_E5fr< zjGX`T((2}rbL~b+z6?}O9`26meW;4_n6`1*<}o1nXI)GZBng-q_@6hA2KO+5lnVb9 zX>!tv`LI+ZI(Lf1oJTH_r nd9Ronb3@m1 z%oqjuEdb^R?95LP@kFi}QT0i9<}%>0f#m=RVbvi+>re(9VH_E;AL}xHzRP#eKW^S9 zaK!(@D!aKv sgAn;#>3cp7TZtF1Gw=HFgKloXYxtVnDWj2i2K}|VlBC&Y-Zot(f4XL z$2;$oj`BO%vaz{&JTWnGCf_HRVb1b}u^1aOE0Hgvo%=b*ydfaf?T$Y6w@LI%u*HVZ z3Jmwyw>hin(D%(s1+{M71Bwo`K1{7p2?g*C?#q(U_ktO2nyfF3@q>XHqGAHDZno(O zrMpW>#wdF1+_Hd)BpMnV(gN &H&n zlFjUEIsJ @U@^d`;6XB3 zaOt#KyHJ`nH4Zj~O!9#bT)_&oAAJS;tE!nGdM%Ca;Lrgwpt)=#Vy0o89*hBY!~0>k zl_O~SGalZY{WdMq^aq|JMRab{w`n&5wD?LI?PIeRX4IniT?19a0K+_B4ah((N3J+} zVIn09b_`nYcP7$c%jmO%c7Wd}OW+U-!LE|iT1l8`yiPY4z}dW{de4OKZQ5?8sl*Pa zq@@Hck=NhnD$!&^6CEuUFrc{FDVur46pt{ZxlUO^AdG9?tQV`+MH9#`6I~pW-Ykoo zuiNlI^!#jDw (`*|<+5SIrso2C*cB_!rM zPejcWl0 H zL|(u{w7>{{=s+*{94=rWskJK50uyzC91QX*#0|A*NsFQyR0J+KFijHwi&sxcR=Fbw z+UrjPxZoZpi>#%Xily?V*2WS6?nj{YK=<#XRDWEI%UVV|3(orecs-ol~N%s;(N zo7<|c>u(INxZt`6m>W#J_6ysGH6|~)3Cls)9lBWd84KAYBB$%fjif~Msy2Vd2V#KM z;4=BOP^O*a4m`q4Ns79Jw}SkbLXk46ZEpb}2n6qanrYA^E6eOv|2VShIm{aLOCVOP zvM*#}7%daW2Eba(QCp#-F|%Yh*k(;+zp9di0+*wS_gNDEvo3MGzPQUrpoYW-NZR%F zc0KzKaet@spFaTAtL50i!PxEQ4{n?k6V$_x9gYrf;K* sh@m4S>e)NS(L!hh(c0U$RmIR8bqw6u;PWqVYf z)d^)jyf#UA+z=BYzDtJ~Wo$qT2e|R7b_J|?tZ_t2=$-tQyAWp3o&92yFrD;B-it%; zeeb^cky3DJ&IIKJx>@d<-30J=JF!B0&hUKS%jfsFEgyfx?a@kp1UUAWWqQ~2qIS?u zYcdM3(pxB#^gv)B+N^*mN6H!0p+8qQGv3EY{7JrC>{ETaDmA-;VX?{~=ThL*79gc* zE&G=my}u!-E>7v#YgsNBiH0S9urQ;_rX+2x^xn3%b^gj?od>N8M0(HnGI}I{w@55p z&j+}rp`Q`}6EJCXY`_&LXOzz;Io=v7=AIp3#*M!JfEYN9SZ`2QhvVf1O(}>CIlYvv zYWaCRv3OJ4Nx!|g4M6?aA$xR1E6$T%v@zyZ2E&>LImS)Z$?pqV!s;#%nh`F5^{L*l?mv?PHIp02p HB}^H*+S1`%V|L|BkkU-BCeDJDuJtF$ zAV~@bfV5fty}$AEcBUjuge|Mfm8glC^7|jcxZG5Lxen>D 4(jew~q zZ_)-Kw>Qioay}!2;>aielx_MCAvFkoWGn$`Tff&r?;heCFkCgiuKi4}GP7nsxmAYM zT;XWo;^0_7Pkvwfa9Hy)baW!PxdkWEKXQ*thPLv>qSItJnh~BzCGR{}6^ ;|-Or1Xyqw)%Gt-odn*4uVysBlnf$uQWWLZDG97IKSxi zQ-{fcU5T>aVacmI#G*^eRDg1nMhc+FNRtJf`cbV=0~G2J1@pWuP}MN!=Zq%w-%Cx8 zeli_dh26X;;+wfRq`|so0vIP}W%cQQ=yAa&f4v&~kknlCd}!TjQ2WM5w;EJ9){yP& zb4>7=kJi}CHUJ^xeiNd&pG#7{lk6i|g=1OpwJucDQMyV`<)RdoFh+8^Ce@MiX6a() z;+G 2l#L1Vbz0 zkA(gc;lQ6I>+gl{f+#YU$nNm5MRc8l0kz=uhSc#N%Z+}&ew_`RKN8oa);M3bVnpdX zhVq7tO8h3Rzs;(d0ryK0o~gkum0#=Fk@%|;f8BT>7@E=F>l*(dH{v_sh$KpiMLR)Q zHU4W`yWgJ!d}w|RoM*6ZF@0D^S+-+4dkYVMS+WDM{~L2&eqz+yd|W; G+P>8xm3 t@{qOBH{>r7t{*nfp(yHGf*8GT6yZDY5SExz06~^cnHm1e5{=4)F zFmQX=Lno=)9 87sU@vX(I~Ee^Y*GIa_7i1DwN0nz|d zGfExF18h+AYfp1CBe*#CH{rjOQ3B@>IfgJdwne;6r6{C4fqvaof*fiqLaEHsR&Q}C zfGDVNR{v3!FGTK!Di{!C#Qw|MinUpD$-pUqr5V-+TmOC$dh`H1{l@C9rtyX4Z!($O z+?WSUg)>3Vu^g%?rUuz}qYdV^$Y}Tg%fNMZ5ieU$ktCE$I4O45{1+~Ce3 T_-X$*#9=s4sHa1BNtHE$(yl)t^mRh zj=fNWotOY%q>GEr?f008-TW6@=`53sG)Xh@e&gsuR@YR7kuxix`47Efe;6BgG^W+% zvT66f%YZlI0)^K-b-+m8rct1Sia?6-y*tnK`?8k!Ut&3w%5?utfpOCSW|O$nju#!V z{lgRghSQ87IHhXjZvRk%0M4KQV(7riJYndt2i-LRH)orYyJ3n^y!)zhq;_5BA1?b{ zgL7g>?!9QZ2%`MWv;V;NU{%s@^1keHZaRNEV)hD2U@4r|A7AYTB3 Hz4{u_W8SJtIKIXmX#hUG{%a1-&u^6wFQa&)KW*iu~ A)z($n0XK0|rrQezJEGY_ZNEP~59StlT)*YaSehfIOM3Y6o2{0Nz@n_I& z6_QY4RZDAo_TZI_2Y=6Jzl~#+8K^v@NqPN$aPJD5V=vL^xI^7p8{Z`m?ccaaI{ujj zjNW4pIc2ziY+~93zly^ytrpcxiv3_l5mf!N*$1e4;!+_Fr9w&K$mqjbQ?LB_@;{2n zE`FQG=0-w@u8WnX-aVk GX#7$v@8QH 4rb i)r2{{zvX(K^S#0!K{cbr-sO&TD|tPU23*%$Wmbke+Hl -juN#1u)5;<(5yq3KRXWkc+nWx1 zB*5cFfQ{={yc20{+#T7=L)IO+bCp4h6WvBnH|?8EaKK|GY?7?c z)M&F(?8WLGs>srqdv0EH57RBb!c)I=P~|G6+Wr*UX57HIG`@aifnnpKZ_H5|2wKjX zIHIf}=i7g=!P-(_M-;!6rNpdW|LkqcYa55D7&%8*6iFCf9?kcnljZ-2+b%0NcMtfw z^c+W{gX%BI^(e`KQ>MN|2#3>E0%gC HLB7hunkz#qq2*L_r(f K{(^|ut zAR96DIGDb7_fK6Cs12aCWxBNu2b)Fy2*`9+hC%>v_|yo +I6d zWf_;X?pnQB*^x@;J5MY={u>2$NuxgqydM671uRE1DNyxypGc~Ba5d0UZZ?Vur~?7m zF0^B*=lpcqHc4l9wWXssPB(YD*v>@0Q7=ZfpdpjCsw%9^D-RkqW1wnVG!+Zl+y2ej z0qXcUGWMb^+N$R4<&`fRoXpldo1P2@4qO>hq_(ly7=uyode#)1`V)c|$#3{=8Mh`U zwLerC%_@JcB+Y&!O#M%*W{9t${|G3?*bV%SsH)MM{6oV%(5uD&dcxD}F6Zp??^XF< z7`ZVp;{ 2IbAe1uz1&DSs+$unsn7!?xLC zftgpfY0#R)R+sU)Dv1S)Rp0ArXDh*z ` zuPCFv3i?TsCUIUFZXLCnIfEz1VdwiX`bMV};u8N~zCJxXQYU}Mb@~d%G*`{pd(Q+8 z-4-iH7j%1Z0PcHK)FC3#TC{0k4>58P|Ioe#E|{(iIFj%(klzxpt*)^J?4}1wci|;) zRyOXB6aS8SRhwVCcMujzUad>ybCS?Uam5}|Py)4Pv!6|YEodCAxr%gC{=9nxOe=YQ z&-TOv1%rIs{8jM9O$kOJCb?Q=#F5ZQMG)c=B!*9NGqPa1<%;;>WTcl(y~VQZWm)}q zh6M2!4gTyolAeK_2n>tbei4L?egn_-l6={%$a05AV`twk%ZAWrveR{MkZ7N)g!Hdf zyLUN=>sJ159;x!pdVbpr;6GgWo6Wpo1ip3J0L`>^W8S#C8>?MCCRY9+1SspqV)z&Z z)BbXZh)&p<|KYt|B>r169+xmmk}go4jff@UH?}h(NT;kW&1B@|5+K)$4{X+$;omCu zy4oG?_FwGw+hhMT5FqWofvADiIqIlK4SUc@tIsXj;0HhV83CG0by_(i+DV=devA7T z50#XGR0=^irCpyCDHFzrZpKs6VgI(opEJW{a2E%t!FoupErLO-48HyfDMk_Rju9Ho z8S2*z??*~b)Vm$^Xp;yo_{5k31{07VBV3#zm!V@x7a$Ze7hj^_)4YpUe^x&3x14l- z93$7!(b4irhL$J13YZ8`*PQNg>BQ=sXVks_Rltiz0=JozbFrM7(BGVt-)B3(38b;= z-v4nUuqWyZZ^II<^4m;3;5mz6J5AE5y!g5N-H(YW-J1oJc8P~-lsHdVB`p!{y}4J2 z)N}@=wKRVx!r$1z8&u#Y7>&nLjx-vv!m|!Rc{48ZxImf>i%|txmA?)#5I~A4A@Wgi zGkf}D5}3Cc_umCd*x%{+rPPx-KX$quxooVilt0zw0`l>3n2?(J5=KRI6Ap!H@;hr& z#hr|mR2Ex1XE1xA(tHp)DoD9>m`e`C1b?TfIprHv!R%wa-;gCBb7?I5(c39$LT}RU z0>LJFf)S9PqcF4OkqDjF%nEpG>KnFf2-juB_Ox&(K`ASdFMqS|)9<$jVyT=TZ5BG( zc~{6Kl(egJs7-+i<;&6xdF$q?s$*5sC!lb6B}n*p7lL~Pb7OJW-e|;LoZj-1@6SDS zTJLcq4xiDCrEe)6iC3336lvTUzNo@#_QB(wB~e82uVRgP&HgS#e|Y>aw_yE~kB5xd z+X5|-<4bDGA>Y_T`NUqU08Pj1iy^ExP5-21f9HdrA6{LR6|i4!sJ> )O_}- ?5pe9<$bK sZ8jhQemL pnu>k=y~yx^zB$jlStwVkTKohoaR zK-${cwdLu0H}z_7#EJ3NSixd*#1$p_@w%B6PBB`uDz $Y|8%1gAH$N8EX7Cp_0cV?b=N01WEv;?)AV}VInwtuq7vFYA3XHM|oLq~} zlBBERy7JgsLzPo`S`NFG^NWA!a?@hS(MC#M z7_P@|&G>Vd`4#648oO4faX&+YgQJgA!VHP@&)W8G=Yz1#odra zGrmx0)dEeWeQY2!l-Z};<{6tsAIv`V_LrmWNbv^Mi>T^L3eC`8MozaNW szsc@V^-|QhpLNv?Rnn0VH%%jK;VgefAD&`Gu-h6+TNTJ#2&|m41a-N6yZ6Cl zE*8b}`RC5{E0H^kv0FB{0<+~T+f69(!NcUUo`FV($qKGYXp`Y{+A)2HN1m%2nK8?t zZ(rG3i)P`w2L{fN-53E9ey_0lgUpb{SgUbm2`rayU#|r4av09h_s8%-oW#2~%3M}7 z#{&?j)4+b3Bb#SEUkmqI?*)|`mddgqI0}W$O(#skc0~zX;X5KGvjTo>MZmfAAtC;w zfd%+^B>Lp1Q@LhGpMIY(gcxFf@Sf^mZ;ac?9fsGo?A8)5tX1J>#EN+UlYJk6fi z&Iqn8Ps^<`Yk7fN-3`<(k4hDOCh`A4RE%~pLnt$W`ZUPg>h3FfARH@Yq-c07bq@$a zT?5An%+QG2eeG 5B5KRvUVsV}jPvjssUS~frjW;`n- zqNmmS+u=zf;YGUDKd#IZpd9C}v`&GzSiOeD13MQACU4WzD#?LF4yv8y8rBWnQ%>X! z5mIL@TAcWX!ABhT8T5t3epJunDhGj-mEU=@L~nSi;}d$!-IEYT+=TC;pvIlE^l^y3 z<286!rv#IDv-kwbkqb>aIrc88EQ(pV=dG$iRDWrKCUzzcuq)&UYSW2}psF3@K)u1D z40`5zW*eq#27-lmx9Ht9Aa6V!1zF`2E1xxF`MWftmU*DL{(D|)dW!@oSkC^Wve#>2 zLEvPjy3Rc*Ww$Aw*6=0h$$A~i((Q!vh(&u1N{ JyMp!$DD5~Sg_I3tkw88#TRG` uKFFJ j#khA#&% p-U6bCn_Rdgo&%5cral8c6VR+#s;vbp z48Pcn#3jBycZ~J6B+&Ua)tFvQFU%aMB!Si^Ml3)Pg#(~%1R(P>AiWPDuZo`~0l7E; zoVX@#Kj*)QMGt*_HU|M|)C?l;7cT=Gmbd8Ef8KDG-@m+6#tYZ7iNf!P1}b-~&2T0d zfHq7etfzOq=+89H7Bf&H>d1KYM8Sr0 xl^@P5*e~LBsxe)C`n;;t{x0&gKw+RB z+ko(-Q<345ETdF<=-FCp4a!qB!xaBB?A#1t;JWCLbZr;P=90HPEOp*NfATS=7P;$% z5~bBHQ+@L-H)2s4x!(4~c?` i=Q2(_QH=t8HD5Y=_- zM4k1Kw8F*rH)58^ejL%-dYMkx&Wm{8Kz6Gi% z29q5$J$8y34S0qSm#kN`xYU+#p6yx^JJ`Htr zKpNKu7b8Hh{EdDCAqETBG;~2mLIiP>bua1^H1@PJkWy@qWl=S3{k&d3E#XjLU z&T4@sA=NsU{VNLGJo(7OUGX|=irVS!4A{iQS2>rPAwwaQTBnm(H#CF`d$gB)oMv=?R zeZUCfy7QM9%YTEJ%R0%=HqQsdB~+=h*uipONd2J+2k5%8=hp=Z-J`4`_osvd(3r>r zgTuY30C{iV{Ee^jNyBR5daLC({5DOwyri`oW!C0X8s{JFjb01BkApg&8yC5vtgxfs zu$#NTDNz5w6A@=+X65~A))3Ji*TR#C+ e2D^g*bZ8ei^BPN}l-R`mD;=sIWcc8(A>DnLG>gO5Hrl#ZK6xvR8L3 zBRK*D2X+x|au4&U{1U~(g0X3mG(#1&v^VFhbT->bCowxGGUxEhE$X``{*qgt2-0{A zBQZkcw0J*K&jycP6hhxJUyo2cvRpX`^OADi`VoT$MwQzT2)*dN`i C4+)WbcogjI{Iio3Bu6vnaQNs#fZ`v)b=Q^(&Rs(D5eW zFs^&&i}|4G5bNRd7A{ZVT-lzLz3dW0{O=yCaq~jg+p1K>6^;lbxJMtvM QTO7At$Jsi(Ko(arOi?F=oA3|7!QJ zOX5Y$(Fjbu$E4KZa_#66U1TBJe{8-5lvj`4oIzBHSkHj!hEu2Ifesu_;c3Lz@+`P* z8T`b)0B+kbqKS^8QE=`{BuSL4AdkI3@KJ)I{6G&IAo%fZ{;+YsYVRz|t?Dof 4iAAqqO! z--4i@qH;YYDsodj>(*-GPVYYynL8@cKV8w<^?rFarX_x3=)N2%tO&IQ@vCaegVogA zn}U#sYXJht75Ub~l{)0Z-Mn#qdIRKCmGYG*9OFEC;wM`nAn4}}qntA9ac!3akUl>x zZ{- gm?bAFS0$%-*{7D7mb;v@b8fUa|J7kocF| zJb&4i1aL|J3_6WCft}9MQojIEN+VeuaX6G ZI_|3LqAS-#Z- zBoXKEW@My~dhVEV(b^2vTOTKidK(s)B?gDA0qJ$kM9lcavzhBHQH?Nvw<@Pr*jB50 z(h2+sNI6hJcbVq#!n}uWx7MtIUd~zD%+@lA!o!r_lhF5b2wGYi%~ou+@EE$PRc~&x zt<4&6Im?233=V3CS7~YZPF4sE8=2z|&$Iji@H-P!hyb1TVfDOE4O!-T^Cb=9emv&^ z%@%T(aVOsxy81XB@1f*FQjOSKw-m`PZ4A{6coYpy4+c4s`q|F8dTj5${@iQF)P-1c z3rKKVOE{hGHSOv_MkysBf^=PM7Apl=Ndj=JsjG671H))Pd@NxJIdmE>-|?_{pJqR+ zYN(T=n&<8a@8if|3G5VVLMqI{o$e!q)To5rVAy=*Nm(ZM;tB4uAqC(1L|rqw#9apV zZxhsglq$&J<0FJA@qW+!ww;Dq1qs2YGxvy~8m7?iI~?&6;g*rz%2!Tz9mnb$wxg1= z)aVcNH$nwjwa(=|1 0fnaY<@0;8U03Y>5GBu1H2?P zuDTwdv5Z=usz$e|y7h#6YfJ9b>Tb+~3}r^i2;p8Qn}#K8dk!8ygkp)RZ02uM+})X2 zc39${A@a=+&oK@Bn%S;egE*aiGEk}+H@m|+gV2dCvx~d*86zVmv~o{aq5XSRCLgtP zwB7hwypT%_ew4L^E=>em*@USt1>zl!zS#YG*MqPLkWlj%LDn$TdApJ2v}v_IO@(nD z5`FL8iT7m|GgXD{Ay5aEA|1mj;D02@=Z+g