From 82126e38712c853c1230e8079a98dba4cbec3641 Mon Sep 17 00:00:00 2001 From: Maksym Lysak Date: Wed, 23 Oct 2024 15:00:47 +0200 Subject: [PATCH] Fixed issues with duplicated paragraphs and incorrect lists in pptx Signed-off-by: Maksym Lysak --- docling/backend/mspowerpoint_backend.py | 80 +++++++++++++++--------- tests/data/powerpoint_sample.pptx | Bin 43285 -> 43265 bytes 2 files changed, 52 insertions(+), 28 deletions(-) diff --git a/docling/backend/mspowerpoint_backend.py b/docling/backend/mspowerpoint_backend.py index 0544cc9c..1f939f2e 100644 --- a/docling/backend/mspowerpoint_backend.py +++ b/docling/backend/mspowerpoint_backend.py @@ -113,9 +113,14 @@ class MsPowerpointDocumentBackend(DeclarativeDocumentBackend, PaginatedDocumentB def handle_text_elements(self, shape, parent_slide, slide_ind, doc): is_a_list = False enum_list_item_value = 0 + new_list = None + bullet_type = "None" + list_text = "" + list_label = GroupLabel.LIST + prov = self.generate_prov(shape, slide_ind, shape.text.strip()) + + # Identify if shape contains lists for paragraph in shape.text_frame.paragraphs: - enum_list_item_value += 1 - bullet_type = "None" # Check if paragraph is a bullet point using the `element` XML p = paragraph._element if ( @@ -136,29 +141,26 @@ class MsPowerpointDocumentBackend(DeclarativeDocumentBackend, PaginatedDocumentB if paragraph.level > 0: # Most likely a sub-list is_a_list = True - list_text = paragraph.text.strip() - - prov = self.generate_prov(shape, slide_ind, shape.text.strip()) if is_a_list: # Determine if this is an unordered list or an ordered list. # Set GroupLabel.ORDERED_LIST when it fits. - list_label = GroupLabel.LIST if bullet_type == "Numbered": list_label = GroupLabel.ORDERED_LIST - new_list = doc.add_group( - label=list_label, name=f"list", parent=parent_slide - ) - else: - new_list = None - if is_a_list: _log.debug("LIST DETECTED!") else: _log.debug("No List") - # for e in p.iter(): + # Iterate through paragraphs to build up text + for paragraph in shape.text_frame.paragraphs: + # p_text = paragraph.text.strip() + p = paragraph._element + enum_list_item_value += 1 + inline_paragraph_text = "" + inline_list_item_text = "" + for e in p.iterfind(".//a:r", namespaces={"a": self.namespaces["a"]}): if len(e.text.strip()) > 0: e_is_a_list_item = False @@ -180,15 +182,17 @@ class MsPowerpointDocumentBackend(DeclarativeDocumentBackend, PaginatedDocumentB e_is_a_list_item = False if e_is_a_list_item: + if len(inline_paragraph_text) > 0: + # output accumulated inline text: + doc.add_text( + label=doc_label, + parent=parent_slide, + text=inline_paragraph_text, + prov=prov, + ) # Set marker and enumerated arguments if this is an enumeration element. - enum_marker = str(enum_list_item_value) + "." - doc.add_list_item( - marker=enum_marker, - enumerated=is_numbered, - parent=new_list, - text=list_text, - prov=prov, - ) + inline_list_item_text += e.text + # print(e.text) else: # Assign proper label to the text, depending if it's a Title or Section Header # For other types of text, assign - PARAGRAPH @@ -203,15 +207,35 @@ class MsPowerpointDocumentBackend(DeclarativeDocumentBackend, PaginatedDocumentB doc_label = DocItemLabel.TITLE elif placeholder_type == PP_PLACEHOLDER.SUBTITLE: DocItemLabel.SECTION_HEADER - enum_list_item_value = 0 + inline_paragraph_text += e.text - doc.add_text( - label=doc_label, - parent=parent_slide, - text=list_text, - prov=prov, - ) + if len(inline_paragraph_text) > 0: + # output accumulated inline text: + doc.add_text( + label=doc_label, + parent=parent_slide, + text=inline_paragraph_text, + prov=prov, + ) + + # If there is a list inside of the shape, create a new docling list to assign list items to + if is_a_list: + new_list = doc.add_group( + label=list_label, name=f"list", parent=parent_slide + ) + + if len(inline_list_item_text) > 0: + enum_marker = "" + if is_numbered: + enum_marker = str(enum_list_item_value) + "." + doc.add_list_item( + marker=enum_marker, + enumerated=is_numbered, + parent=new_list, + text=inline_list_item_text, + prov=prov, + ) return def handle_title(self, shape, parent_slide, slide_ind, doc): diff --git a/tests/data/powerpoint_sample.pptx b/tests/data/powerpoint_sample.pptx index 6e33aafc584ac6f623956a7ffb28f40e7dd041f4..acabf415d30e743b42e3caf5d9f1f4da69f04839 100644 GIT binary patch delta 17454 zcmYhiV{j$i1MMAqVmlK|GO=x26FZsMc1~=c*gCN}v2EM7lZoGX{%_U2_e*#6?){~A zb^Z40wN@w3K?KY})S4s1lRId$Ged!aSpgl8i2>_&`y8mgj57ezhw2l*y1FTm#47Os z7tWR6v*rxq!y+`wqE;miE|udaU}x zk3M(?AK2NPo8rrB?5UFVwMilhtSf>E4@I0Q^5m)Y@mzox>jb4Ws>QQYEY6ffnbDPJ zBEZHX>=2s70>#{#fv3`t=Bh(t2ex*NnepLc;oM=Jx3G&#GPh=#K3`Vhig%6HT1+Vv z%Y%XQlJtjlKlc)hFl8F^nk0js$nS$tcCV!Vs=Qy*ua~^c8%WE2gx%ZvhzlI?jIfV? zf*QHDJeVTWO}p7Kt_{xI=P{?f73tl#2SrrAIHwb~ z&{kn$D$6uNXMPznYh^=jLKx)?Q;9tqVAW~EIYNt8IX&V#|>v zV7j7@w*2$+o)P{iX=jo@AC7!U#v)!LPJ#dh^6@e1*bfRpGt&!mOWe51=sUVh@l`ZhaALAW-Z9>y zABd7dQ}Xq<*d2s;9Fc?xnpXArdru^%Yt2~e&hk{2gHUV6%??atJ-Tn-$G?SM**6Cb zJeRci)flM{<)!GiL|@v*!6>XZn@M;A{U7lmR%zF(Z*#}Izd5t=QF{Xpt1nx*O#O-M zn(sJ-Ihd!{3DG0fvhap>b8NWcW2ueMcsDd2-2#X=!zrb=)~FDPKq z2{LQJ;txMr5xyn?_DW(kETcmqA+W_BOsN0kNEiz6hWvVIs&@*Z7aba28m>pmz^<)9s#~+jQGgrM_G6= zTOFJ1O?9RPH6HCuqwpNxmasc2*Um#;-b`c7if3ilQW}rwb<(_-GVK)spQrMi*XMW9 zS1%IyLV1Ok$1XJfs@hg!N zXOd=|zET;GIiJ1uew4Bt<9bz&W?Za+qAJgJl~|z!Txgw6n*XXkKYi1%+Z=W1TQ1gz)CazS6Su)A;{1J&1kC`z$&)(K2z zmuJU~mf62-$c|q{rW`lM3D7Ug-x_r{0?``f*{YGM+gr+c+HrNLa%EkNlkH`}3I(RD znp{^Ye!T~->zT2jb~_rsVQ5Mj^W2y!hx_U$WjRwoNVu_}t*N80BrLe4k@C(1Q#9|U zAfbgp^qGx0B^Jrd8Xc8^Z8Ld}9$jldBhE72aBFjvNBx5gfk^?a7SJbdc_Ee{Dk3Ny zm|7&Ic6B8d+Y_r`)LLba@%hytPF6TNCulg{6F%HxG5+ zoXn-0e{T}Py$#nYpjqhcKVa#SbuMo+Fb+|B=Cd^AA}S_0U*s!g<7fGPd#3ji41T6 z*p>Rv$Y=2y9||%od_q0eSIe0Btgvasfj#Tf?BKRjL?wc~82KllKtqEl!e=J>{k_=` zzfS`^dv-P8ji2a_UJ>07c!J=O?Je<0Nfq{K}L4qmCLPBAJ0jDJ45Zo9eYlNV|z;v~ErdmMv1Xx3r@R4o$vfen((>Ia} zoD#vWhYmr!vpc%()1^5Tfwf%Lvk5r5;#N#B&*8jkH!;v^?#Hfp4?G81Je1ZO=`q@fuf=@2KHzt!s53KQw=Wt$ zJ_U3R{`56$VHNCI^)8LIf_gUPvOqqrPh@X#iA0KR5S|KOD$rgbX+RR!&p?YW!y~m5 z6G}=1`wiEC`Jxrg)Va6>h|j?cB+&PxH}@5Og)Wg-3%5H-xzn0u2XdLk(D0C@pDa)d zdI{qK)2K)#jNsra*b0#XzkhPc}&xV5q;@<*$}xAxUUV>9)g;-CE;@& zu^qPV(ZA2?4CFHsc_in%Zi~||>fcERkwlMTHiWmo`Al5Zf73$&cr9dGh)swJJY561 zU#}DoTo;l#*WR=7u_8QmDtTN#w_+5|h4n`=GcsR_LotdH83C%9VS+f#UUPKGmoWU> ztQU`Qbr@r%Q?A0h^d5LI)A1#adRW)=t6CkEMUOlr6gVlPvE^K25pGnQt}xT*9Xl1(>aZ&!lI8lTzr{w`prNQ}q-w7r&Ps4m z(V^)2BZfyXN;MEAAmQ*ZV|V&{cI?&o(!Ri9&W1T@T`ixdDPtdy*TCw2+7|JSg|9nar4W1k#?Vs zNiQH$*?W;X-XZ<-TBiuDVUo48N3;Qkp4||%Bk~mNz&-@eu-Y545+-2`ySvDni%C8>`x|+?JAo3SkA0 zApVX8zmp9Mgwy$Co2Pr6!?hIruqA3S zAR;w@R2n`0j65|Y4Lq*Za?Cg@BuPMES5&V&i+_aME0||rWO-U835-(~V&?}1L_SVi zkH#pRD!#H{z&a1Bg^W(f)y&=9%e+Ci&*#H4N-2X`+SgY`gPj@Bt$;d@+6*l`?`IkX zybr3`0%Up^d;~f65ZB_`DcOq(uhlJ+(B;D>EW>Lx3jn=*k9%ym5wYCZL@kAkH8(f5 zmm^LmM)&0JqGr^x=a-v_*j!qRw@r!{{e|3n*t`{>zn(?7k|i}63M z6477)SV)8YvnyFiNiU-@yxXoI4QIS8!Ibm$t~vJ8JJjE}JQHOg-g7-R>sY%+CS~AG zPqOZPx3wZT?OWt+ZK$tlm!{;8dpN$WVOLhJ-M79BTf#uhpNMazcus2baJn~gZWDjL z&u7{#Egvd(nOGZ15!ecjA0Nqt+nH(k))mMDwn%DYo9{LgZ>ezZ5^{AYrx}Ybi<|Ro zO)5q!mI#;ceU};z>wjAGMY@XWFyrnvPK7*l8>s0CYMnpTEjg~qvU)w*rVdmCXCo2a ze4a`yPdt6dB?<49LiOp+<}B_dkhAoef@;;JSYOq)vz=trYBoFeHw$=oy#~W3;W^6z zDq6T28B2eSvx-U9W3DvaQ*sqIeVX;|B$`+-hTQCAdfd*IRZLuHqm6OtswJZqZy}wd z)LwgRtk-(l>dGRm9IpJh91xBh(b?I5`8ASAcBb)Z-&@)Fjj`Z*TZRfzd4sJoLpVl? z#0zsu<>#WE?8!E*^)>{m#*Eq@4$#8_w)-2(5T?AEF=3&tC5+|X6P0)@f>k_UXegOv zYO@1Z$f3k2V!)AYal~+Y*`69OJ$Db&z)tTM&ZsMyx0r9>!@GEm2Zy&T(xLvR<=9QY zRGT)f_JCuvT=pJiyvtg|TBOa)wC+|w*449KAN6NrGB@@`ljdi|>YB_AqXdjG3?H zrF_{5W8Cs1pV;KEOPibG#|P`}bQZm9bET)DOWvBnaXNf@YCeFVt9=;O<|E^#7V*Zg zL93U%-s2_q*Ocl_jdE+wTWL5)xU7-T9t9?-fdGzL=Gb~DXf&A_fcrv|*#^)hhKS@7 z^$EqOJFm7=dPSPygkG&sqx>xXFS9U|v|2kF91%L?G78_$5ZA~CQb`$6_j^D!=27R@ z?d-jrH zYggvhex^~(LVKt(faR9Hr7j^)GqfIJfpxVsN=~k=hq2C3S~(Wy%TcFFmyt+(R6Qzc zoKQTEBh(yqNRJ~tJWCt}%@E^s3up&&_fz{=x7coPgFI}o#No;_|LI35j;or=et#Qx zJ0zDM$RE}cm2`Lc61wE_Iynelxm*O^#j3r^Cei)Vh#ajv z0K<#+=1c0A`R(4G1Z#V&8$_&b8|zPj>sZbViWmVwH2wt|V`SBulG2qDMf)(|3_Ujd zcq~UJIt&=tFW@yj2f9|2`%ep%leTYCnTDgpLJ23DKu!iq?YFD?kt&eQTIJ8@A2%`l zb-&YpS*qt;EBXn>_@`;w;-p$;X@E9zbw}Oqu6Bk=wwAnYbBKpD77H3MC04Hn-+-RW zi{A5=nG>dHE%xQwDQ9byR*`>H0h#x}W(Glkm#3F9QT7LOo!qfmnL__)fHuG>u|ypY z=PcL&%XQk`(`HJ=~IiDJDJ~o zY=*p38;WNnn+TQ;KgAN*OnjTw@AAA{XY=^9oTyS-d=^ggNYK=)Z1Zb z&0%pWAPX4JBtzRk?37es$>>}fswKWbh@Uz(_KUmO4&Q$e)>Vh4P=$N`)#^*dPt1iX zD+UP7yoUCJrEF|r>`>*1mo!7Ki{#d&;f5I;9B?mA9*3Qs?;vUWOm$1~gx zX`zUg^Syp9BXZ|-kxHUTTn*G|tY`loaz>9CVCx+ZDN_Ij6*~^Te@3$v6F#iA-Sc>I ze{Q?PzAoeYH%6lpWp-m;k3Z}HB!jDMkLa+g=n*q!|8mwwf@`N{hvJpPfAssxB&?UhSng=b^rlb?(GU1C9+2C zy`PuBUenyR9=pCj>Q>phBkiS`;>RrE6462%90B=7cf<#CMfX!1-HzWkD?344)exmB zwS}~rUb8Yicc{QdEu_lp!JqF}e>?zp4w4ZR5CZQLM=8#Y~~^7s`6w6fU=hpDW>1pQ8d<``#G zr^+|G!#&n*S22wzwav}S4Z$r|%=W2L4~^U6>wz);h*@9X&wIt1(8HBqIPVL9>tsmo zHpfwoD}^$nQ%{pt40@93S7DbMoAvP&+CRyh`jjt{Bbyw=w;waso|~=C9X<*^-J44w z>Q|@jNCkQ6B8xwPufux$(H!eHSvEnK9PW8cXio2 zFx$Jzf?ZsIa?&`3^@EqDolb(x67_=_$^(XBrMb#URhEIc@O$hLnhJq{8+FNj2Q3*R z4^LGs-`yLu5?j47zl)Z$%8PX^LUj|NAH}TMZ99r&LlhwKP;?cF(jLEHP0fK3l>NYX zzVUf+FWzSetL6&f-N~6_Voimi-2z6zXoY1+^NhWSKHj(pjZWltE!E^e&ND`#zRW5H zB##~p$fZ@AEBG|%f>I_c>H^Cc3hPPIE8OUpXA=zQ;YW*BG z7*_D-Zg8-!JV z5-P^VymlAGqbY(*<}WwlB-6KKm#H=CYL@h#%Q*7Bd;yFX5rgNIqfxJC9(QlhkXr+1 z;@ZcSs|)WQPLpq=6~KRy)hh9$sb7XZC!&#bY#TsOChmtb*;?Ug!mWD+ps;F(T zfJ1^0UM9YJU4^9{z{TyUK=0UF8@|;OXC9xOw|?5JRy}e~nx^ag~`KsM<-q za`9FS!M#eqmv zUOx?wzHQIrE`k}82cF!26akf&f>bUX1sBk#A4naA>Lyq*JHtQ5Q{ChVB#0A!j;&Tp zaFySl7>KGYlL*4im6j&Mqf~2nKX@65V{!qf(uX3%#t_;-h3Lx)S3U}Ln-GXYBt5pN zZi_lyxnB8$R$#A~c_C`Q7=tNu%5<ggfwS*-hY8rj#Auu|KTskKSQ6y7x*+P6?oi z968x+6O-T#mrM>8E#G>b+*ofcpp_rJqIR@q@kG`$8NJw*!~THt#%YJn+mWGKw))%@ zei;7H=P48F88BM1S-%bTtCOQvjnPZ@2W)a#B&L4Q^6m|iBYLv5b2|j{;-IMs=Iq{-r?OYQw9@Kzh4OZ_0csBYbl;T3N z1or#%vLD}{?!$Klyp|S4`|(mQg>!xS`8bFrCN|8EoFo)!#V_*d>_d_JSWER-eKfU$ z&mZm5ydw=~b2r#Skjxr8o6mr7ObXeM&WsnHgx7R*vQB8UnYiw6YYysOPZP5^DZ&Ss z(h%Xx4jAN!O{S+2x@Z_5-~(RRbX^QkcVx+}s;U#S}CamUlO)OI$WIKV{@Y;MtM9NuG-mAwo3NQfF^- z_%;H|yl6`(;jv9+2*-a=#(x4HtiwAf6&`>5a|IHvr5Qt1Dq>3+KqB;~={Pz#^3p;1 zYCR1p|9l2E@~-<*e>=4*c65mg%ZFTNly!1xC87YTl>^R%Fp#<)-T|Ev9Cw#gB;UTj zgue@UH6x056an_J8?Wk>^Q9BKblW0sV$A0RTUEnNmd235h%{0fiEmw!)SoWeHdr_O za{8zyRM(0+GO}S0U^RRDjF?ZkQJb<6Qq_g7JUah66tD-irW#xlzVRwOwR7w4wEQQA zJ;v#-Z9B{StOb<{j+YCD;yVYN4`v|l8`1#rt%>oQ!pW=RbxZmQO#er#6mP4`kh8a+ zq;K3Yv4)jZkpN>k*1fgC=m_Dv1YFK_%T6)rd>9FY~BY3Xs>3F94#jmJYlC8T{{iL^Y{vXk`=pv&f z<(td@5k3AtqQ5+k7hL{md_ryfNA%#?!eg3m>TSh7x(OWegzN=(Sn@ zJoIt#=DaLD#|Ha9qDw?imeEACD|e@y?GqUN7Bz1^pG>j84xdc9C7NA&0JFZ%FE1x+ zT|dk#%c>Ab+EBs(-E&wNz+mknl9r$b$QiQTsWb-KP7ADZPVtOZgeqlWK0W8{bL-<)N-U|L%{B}33^qveYtGvt8MR| zbnQHP7xjEJV+THI3rQ(`Gon zf5M4ImQbilPhjWPyK1(l`&Ryxg=_nu1U8||aX?G@MW)MFT znVwUv3CEmYlLGh#o^CNm!o%D>h$#*X`LJ3CRY}Q-S9gWwk|7DXaQ zm`(D5m6xxch=<|9yV+xc)aCcXmsRYVTC7E^gPED2{lDXuB$K3vjdKY z0X>z1G+GKO?UHP#pCa7mKSV3erv~Uc{X_JR!6rW54n27JT{&$h9FA9+U`oaFDu_Y6 zM*3iSF*mP7JVL+^_a9A^@`XtqHJry~fHV5uaIzoqD*fR8ez=g^5x$;WalYF>noTf{ z|78TIo1}lb)h&ON*v)OYPw@yAwC=0O|0ri1|9(7_srGn9+qd~c=1QjKk|V=h!TMr&fLc zR9R%KF@5H--L7tu`q|kY)>fg`hd?OePFDVOdjGTv?2*KVZ!`an=JGEk=mKs_aslix zDe-P$+R`iojiR{o7YoXJV{MVDqC4!$f<(ZFajzdqE z68QeJ53C%V%PMZH<7fBmHCli) zONCncedQ!4yZr&!caK4ezuPtA)wwfmqBA_b-u|=g*XTUQ%oN(v|IoJjmc?{u#N4enxqPg+a&$h3v9#pk z?|Q6+wYamf@329WMMm>eV=b;hUxC>4`vVt50+b^ENK*T8ylb~_OPjy2{?%)Uq7G~O z?hH)qc|AP!T!j$%#FrqxnSg8=mV6Hqb$k)%KU}TEr)Duk(XElTg-9=#F`$eJ&G2AL zLXN&l_Py+!bPu-rav$1N<@G&8ONi_VAVN{8ElR# zmIkKx15jrKp~7i-)!hNx^*{1Zm8Ys{IqYv1`+fO4e1Xt&80P4tF%C-f!*%5_#EcWa z?}g|e4Y4)Dd;0b5A|g6HQ5?U1b3YI;;dK+ju?w}y5T_n-2s9RKR;~@-^AJWy|2-w2 zdx{16=HYJP{c`tGliTI<`3AQsjxwLRnB;28PtXLUKy#dD5{`iUhSBd!GMMx?{FQjf z5`CzwMQQDn@LiL))+5cW?TH*mPv>k}$s#Anr&(@OPy{xp0B-3SM)r*(h7(__{I5~v zfX-63eUp@xFF@u|r6ia;Z7buSyMKK({~vb{BFv7;3;%H^8x^=CNe(n9_)i)BzZTrT z;z!c&f5neA?2*CJ%`RH>Wm>Tom5s?ZVgGmaH}022WSY^~Wrcchn;u5lNc`BT32xSc zr|!*L%h3FkoGo zKDNe(y4Fr1fIu-axl`GS%Q35NBfJ?m_c7>XXR9sMHh)J&pC_4aE9kn}G5p-Ag#K(Q z=Xu=Z>G|AMFS3!brRrqiKrFIY$se$>(ErDSAoi9+iaC&=;f;gBm0hSY9@ka5LPAW> zwXTKUgwfprcD*D%@UEk*vf9FEmyxMzyr3?+6B@4pz%ZbX*WmakUgSipWk6wpg#I5pU3TuGk z)zdl7wsrKX&MgI&%Yg5fBzr(R0kT#fw^XD;2Ka;1FT}>GN{y#5z8`g|he(G^q7yNA zk*wGSfUFr(a=#qZF~PIVwA>^W+&;e=>|G>DU{ zCnd!FWHL14N|<6aLN{CpzKOL=#u2HZB*$`KN2YAbT+TbrFxV19yQT(R1Xb0rLu|bm z0n6AJ6<&lK4J%1g3AT^*FwzQZneOt%W==rByLUQ@PoIeUUXl|E#&t6s+>e0Pn$bsy zXh?iQ6~0ztg$04D3fj&$`e>mliN<>Ie68#ajzS&{jTk1JpikyJ3S7>RE7Ahd?jc|m zk91P%C_D!vTH>sXmi;M{)Q#Yhe8AAss#IlkKegQQk6u7({X76ueI%5luy?&$=P%c>=o-<%55J z@lQ9YJE3oEuZxJBVNd!VL*J8Ucx#rwh&+0#YV>(^+HMo0UhymU-S@~#XTgjpI{J6S zmpEL6ARr0D@+pd@&cENnhcN=AMpiqsGC4OOpYd?o{c;j8TT#ixri?K?6QbVfq6?yj z2@@SR%_Zb5VNYUh8FK|c-o}p=zxajRnfvbs|NP#ZFuNRZ9FayJpdOlG(!zhGW;r}l z9!lg2N6)alL`vISM5ZGy$<7Bb{+A!H5@Z}xy(MIzT!*I8z`sns%g&v?7xX zNp$@T<>W0)SR%|tZ(y^~Qz+)7;(0i<51IcjnQU-Sj)H@a&HS5y3in^F9!i@NP)e_| z&@aIYDVySjKk@(tya50G&z(%5q!%|&Bxaj2PuIC1E>Wx(S7|(?aQo3P+5;aAhNecB z9QnAY;WKg#=+H_TVmGx_)-b{7Y>*F9*UH9OJY0D{7B_}2p1o@vo3F1vS?K^(z3h)} ze?4{KHJN@ouQ`n&)hag?y4WxPxa=i@gfr<+SZuc!zg6Yg>o=H=?WX7)XP}2h# zPI@{I9S{iU@HjBr&Z^H4HMMoR~%Z1-}gN>&<&sVg7lz@v&>jpA{9Dy1+#{AI)&a5~i!10GX?x zQ{AakXKeGCL&4>;AFK&a*GOj^Hh^Hl(ujTm#ry<>i(00ni40Q1WI+MfYSvZ8E5RE2n{LZD?P5m32Wk>VK8Y{0&cryDDS z^$*0mlI+fl_@qFl#7mvk@DVB+#P!i#=pTVlf~D(p+s7N0a@ll%WpY4vUAiNcZ<&89 z5Ub``{5Zi2bn;WjZ^~Zw=kR7YKxLvQp9KpPt-chd6cUmvW}2V}!0X_!(03@LHD-BG zI`4_BtwK#vw@A(f(S0=8)4i4<8j|&B4q+|0X9Br1toE+KNt#@a7_`Vr7Toiv1AUH!tr(m`18;~{@>52O zZ+H@kDfiV!BLi;@?8DB6L$24A!?lWpWu!7wW?O#ZzHYYEgw9&uVlj6_A!M!*&7hgBypZVpWebxU*bO8#m;&ij4V zF`-t^-Gw78^QOL+Fc4Y%+Y0&#RR<#}Se3v8h5HFd^%zPi97i?-GnG~XphZL742LYn zzD5}*lc9bNKp$6(=kJ*U1AbdPHa5TA`0dWV3T(p$wJEwg<+;T9&wb7erQpD*TAxX9 zG=iZ{OG`zYEJui5AD#+?>88NHUaO6fx)2>M;=j-&{btyD1Yv~k_|)}J3nz9ScII4V>ux}8ChV@+8t zDuoFH0FFdJyAz0AIpYM!?c1q-Noc9!+y!H#phR||fByjo!SbM|b1&xTvR_52@9vbI zd~w{!Y?ca#Z9*vQW1p97AZ+ax5rTw>hs|OE(vqM>#@7>-txc(PC8T$347PxuMc0tk zrN3>2iaai$E2o7E{gXD-!2nQ!*i<>rQ=(J=%&&V53LX)m^GEPliVge-*iRsHFsGon zFkwKPvD4GIkvkuA{UFv`m`_FwdsG%Dz@8>(#d9?y{Lv{Y9i#Q$nlA z`*iZkzq#w~5+s0~2=Y#9@t;>6_T71jp`)*|i7IT%&P0YRpBLxh{n}8|R8upR2Ax_0 zuNpQzl-E+T5Pv>3^Z_SH?EeudGMOM!)lfxsI&758oN6kG8imbQn9>eb{xxNfY+!UM|l`WY%P1>D=KM z6Ob3HT}s_RqD_KCzcK7dpCL4Oz7R;=QQ&WJXu+n#|M<6xZmg0b6KG2gyu-Z!FvwDc zc^yWer-%-UV7Yr}TT~@Sa-q1rzPak{YzSXH6+5jzQbtRTY!e?q93wl`z_vz>SZj3= zkpaH{Z=f6YWkzF*gbd&vkC??f67=l=x%d0Yzxn^WeP@JnM|u-G-olB{+N1Sx~f`U)bbrSZ}W}dgV*20-|YgXXVWBMtHtd}_e-;=MI+;55cDn{ z@~KqOwO>vWoBNIe+|`t5@HIYyL~x#=Oo067U;Ci{uS6MVh5=ypiAao&hUA}zP%vIN zh4>w@k5-^TIkjMiO1f^93QT@TOypy&1FqF!{56+SKG^MiCM0rvcpo&?)6!W*Fi2{8LuVZ>PvzJ!V)R)^H%ylIOeeC@`&dqU`6jjUmt#K)#Z|2Rk;`DJdYo4g-6oZM) zixa2C<+czJ%~V-}zio5fi2PKH$;oj+FLrDO-L0l}T?%&TooSq!7q;aM_(ARI$l3FF zi23Ixdt7)6gtNtrsZVcgpnPBvA!tUFFpMw+{#jWjJynS_h8lz9!RmYLoj$&dAFY`s znq$xupl#yK%|hc$YikL}VCD%93|5poqu#!culElDM`+#uer6oacf@k=H^6}@$oj_% z6Bd|pjt+3pc+6eKhsyXwVeNg>kewbC=5|Gu52a%+K|@wWNHM$ustR+d^Y>$-35%*gLqUm zlG#3N#d-KaZ5DFxq1z(Weqp`4*C6_b>V1j%jk@lz*;5jr8cI~T9B-7(%(%mb0+FOz zdUwMw>(PQ=OBFUs^(_;HuuG7n_zpz_c_YPKldp1;4&Sgpc%Wy~e;s4WFB#x4WkUM^ znz>1yixhwLOJlyIiKEFxM4?f!NqmQgx=VM^CA{U5yM121spTeNM-sL)6_6U2GmK1s z#-hjA<*LqeU%bPC);0f#sB5dI>A97ER$4gDT)qiq1@nGgs`IP1p9k^&s>Lkd?__-F zEiAmHvSwsy3)*t-<9?tss@&VzT>h;WPWHo2}eg~+PS=C_IS;t38jvhIP`xu~Ui zj6UT<(t%W1xgu^JUu{wH46g$JVPhXw70?|q4r%j^%jnH}Wd{u9SOrob(Ho^9-46hH z+z>FFp15QQytkyl?&?m!8RNj$G+(shxK~CpaB+4P`zQy}ThRe<)o#SMi{s`cm0o<3)<$XW#cBe2Xbt#mk zj8F~+^TT|8^il%`2E@M~7~y&uolyz)7>1VnXKaqWc;tBN=JrChTS9~xXAKEBnGhHB zz%w~v2*RPGA#hSH3;gSX6NFz?Ki!?~3wHaw{=Fvu6J>c62j#pdZ$GDi`x+>rA1(qB zI=YJ|F8q@)i6{D=`XNwCu(~$%CUY&Ix81VD`YX|QIpv6(93kzPI@eacmjH|P=|72}9~Z~Z zgwr^#pb_M(REZKcV(}z@Y^u~Yxzp#@{nKQ0l0Q?eEchyG{v}Ztw?=lr?BI`7a;ZGu zKGin(UaDx%x`4>Hgt|O5+UN?8o|$Aicb~WcK(g^Zbw+)ptbCZCyJ9yD0?p25xGgl# z0|hcB3iXzK(IYH}H%g}KPD1f{SA0@F_a=6E?vycsi7gZI9VKSKUjyC6akf|*-r;|{ z-OTzuT}C5n`_Zk;kpse@%%QJX$B~<@K=yp8zQ z^WQS?9D~XW$b&A<u)|Bp->IP!FlDEvJI=(9pihAtEW@L>->Yu^nLx{K-IGdc^<2|ydqnit@SH!8$ z|1EraA}$ovm{)6fLsJSBIH1=KpBc4N<4jP~8wJr;2K_goIO#w>n-tyXsuqgj;!4Ue zDBoaP%ib*@@F!?^pZ5s%`NSbXEQp0K6}oMenVKvyx@L5snWV%QqfaR^|6^O$iqk2Lgp6Qo*92PIwo~N{- zci$oL-s@c`i#LkOJa6i7qMk7MyUf<*kCF2;M&E|=z`Y3rH-r>Xkwqdt=Cn3=3V6@m zyGZ)9Y5Y0q2h3n9FQ9->q>E|Me$YIpo9uH^+)MeHeMhwlbEV}cNYPjzGbZ|}Y(}Vy z8WezrN3K3c8t;<1qZ+@MKMg`2*cj|Z9y@^${fLU~%&o(TP+H}laAUEsG*O>FBQ@G* zhGBN(_^$JvI;Uk6Dz0@{(?DZeE2taYx+?GrqC>R(8Ts-z34qpx&HroL4KoR|^U&)LS~EWf$k?zneejnD47v2O^!GvRF<>1SK3##J021`)A`xMf0}fDI#YIS_Xk%#z9mJ zQl5oYBgPEXU-G057o z;bSEkpV| z54)OKl`zhAd?^{>qV^Q?ZH_i(cBDi*ry5$RZjEptN{ z_fF=V=fpHge6l0E#N^a@CQQ8&VCGo~uE~4nX)$(BelgF7>812!K^d{hKJx`+5WArn z7!-k<8WG^2+~mSExyjS!i^?FjHliyEQwA$~3RHyHr-QEOss>n*$pTRs_+of@bVVn1 z!HSxJis0*jdC(O}nSd2t0xCi*ennSgY5`WHxKLCEz6ehoUC|F~u%ZH>BKX=43`HLt zCof!RECZig!x z6ulGyX6h`Jl78+l|TZmfJCwPS#!Fz<6ZQD*J{^q)$_xsh=b@Z>Js<&Ee?W+S8 zKvEV!>dXlq`_BuAvw(bjg?b~hQ;6Oyky9JS4d{r!-sFK#^CXZhT{9$)fHEo6ePICVJtGj53n zaCY3T-1dFC%D1-Kjp)3(g#k8aM*D&fgwKnM=0`&LBLwUpi)N4e;Wmw0_z5p1uw9gC z7iCq>vxCs34tCsP&@kEaaj@kSaW|r^4*aXGniQ4XZq{q<^#&t$?UCko_~LIgQx`PR z3k=#klBY356qCJI737k6#7pimdx^EnT7w_R7v;u4*+c}FV%~3DV}Jn?I+!+JEwme& zs#Lqo=~TOnAy1@IF}$MTG$!D^$EHlGE~Xu(J7_2_-MbU_2rS4ytTh;|IlkJbwgDq?$e;UC$UW^zXK;9*wawWK2a0a)C5R+JC z5!wlg?cnnGin{p)scx&fW9bBon)^Sg@`cY$TS zKc6yzT;v|!t4P7f*G1gQQMDB}yWGt})-%1U@)5(YnN;o(Roau&@Bf8$oq z9$Ci$t%7tPQNO2WtusA~>UdsiF6hhg7o-TFLlxSbNCI z-K1R-UX2c5M_XjL_WhH{{Yppv&&rLPj5&G<&DSC=QdzQzkuXieF8g~Wz!jUw^c+|t zAzTP3yLr;TOO1A-h3L9(sJ7P$;PF~*r=uSzfG^p=8UQLSwkMSnJn+sevVU@%cA4m7 zvHyHzRd>n7%S}D@ga;R(mxdOkv*9Ap+9ub9ARo~H`wcHTRswu|LZ*yRWcshjGn&P$^@ zKpmWd1@jFqLUG=ClR)fb{9N}Da#<(>1)A62&JI|@Xct^}FN@;-6ynnO4G)G@OOff8 zgqKat|5>*cdnMs^oBM!FGEzfpoJ0YGgGnjqpVIgTl?cS7eL9k)4+3aFwm6b+TrxoL zs6EZj!Vt@I<={e8+gl@d8nSM#Q3Q_F(rbjJUj4zIJnxXf(G}ENfj7ad*f*a+RYPN$ zOAXC_=O%Mwjd@<9OE3KhEDORKR$u-4dEoPlS%hWr%ycK!b6Tf`@wJL$H~0H5Ob+oScMV4R$GxLGaoljY3LYI0<)F|*5R z`o4?vh}WRHB9OdmjkPKz2&Ml*H>rb=8sG_vo0d|Q0X)xSydynV1pa=b%vfS}{gQK* zx*ali%5TFEtdt@>>#@@`f?1fZ-=f1;Pk`T>Tk_`9iV}lEj5T6s1Y+j>+_XfnDOHHY z9@V*R?E4*UQ!k&F&{6_h<()=T3vrm+VWMyYx38$Q;FkUD)L=nc5%NYpc{L`-0*GWz zCypeIEJ%i+YRu8H`p~lB*@@wn>+&Q{4?S*mD!{zY72Hq_+2b=9PYUE9<)DZJ&J2#V zp!wCyX(zo+)=w49OjtbhqL?klf+os>$D_2zW9P;K0c4XaejUR0&cn?QJnwGa^>+!E z4)PCL4X9l!3TV33)e32GQRF-o2cT;ysgo*>Hoh}F&D(VxJ=%*UZ?#)@!guUh}A*~0m06Su8NMqDFM(`OZ)8# zCs}%(9o;~|{mDa}9f4+IhK1>>U&mG}!#Lnqj3%YGI?|XCG!P9oHp(f~2Y`u89D^1K z1JlR*V310v*xHW33&77AaMIbO`1~=C5*AM?2K1!{AjjFyr~bUs$*4O}rLk=`yaUC& z#Ifnu{Bmp)J{^T&=|Oh#trPe1AF+C_8ZbG<%WDy3ScKC!xDNx zM&mSub2VBVF-ly(lxxeU0HmR0X7~0bb?H+Ns-hs|4HW*~hj|a#hduIU8d{RbkYGWh zWEEn;TcaY=N;cel2@kR_*(n5rGhME$>ezvD>rv_+CJhBviS9{ooPKy=A3dhdrv%Ge zTPtz50mY4-<#0dH8ELP;c*T}5pgz1xrm(x(pmGL*Bqwk~hW3-U$ly%~JpkwV`iKZC`oTtuQjS)m4(qId;}TT@Cj z;#&;2^TAIxS9<|(fS2byQdLYoS%8en(zDHxJQ{c|{wxU^GF1jEw9nZzFQ#dYh$Y_i zz?u}gJGXG26C^w0q5P--%ly6cj}i*+f_YYDDDfR5#Spy9siEa&$$cuR%&|apvqzr$ zsg7KtxVvKg&IKA1jya(9aJjkfIDI7#a{nlARhPjG@((w-7iGkUskV zpb}3C1&IBpR(u)e07y&bHIk79Wnx_cHBtd`4QC~Ue@ z1HK!2kw(s+PlPqq%7bKQT3EKzr>0ChnNUw-KbCo?6>8H8<_jxAUAybhEjiv-=dC}r zwTIg@uhgTKvmkAv)ZYD@Sp@ply~}2-z}yA!c}pK#64_c^BH&^lg=WH63bfY<8{s7M zGm+!Vv56Q-h@_=}n6DbpKD46s-le=r0bbfrb{=od+0P+oeDYZpNZWIC$5QibNt|Xe z)ZEA!XG>H9UP4$&=@djGMo7HxuU!A{W>pxUH@m-H&+yJHGV#YfdmGalU?k00y@o5hwCuTk6^I+vile@|Hcc%mD z3Yoya5y?x)jmqu$UF_>Wz8Y8sXBHv6P%3}o0!%yPg&QZOj1 zVgB#suu#w-sqGP?W2j{su;QQ#i5~(a6a=tPuD#^OM?&Fi{UqO+PSq5crzifE8_M`E zURGTzwad8E9@o&gsGK_l9UU}{6*bc#6w#y2b?lziEqBizL*o@GhcJM_PWXB@f?7An z>^G^_*O-h0eC2~T&DA}kw)c7ka1E2}y$+r>V3H0q$bPXa=zXhbRNaQ4C|yGA2>f6T z9e#9uc&CBO>wVMo^9p>z|28u29!zE@#|}OoY-7;1yScTZRH1Q~L_d<1x z^jg&dO*oMVv4|g5FnO3dTo^AXxy?~%s$dNt6K$Q_ssld3A}Wu>+mDo#Q-BsqxQp%GxYJOxsJ)|s$E7@6tb|iSrfOWM z1mc53B3K_NC=zOX)JW?%e)!9ddYGzRV5MELI7{u7A?D$=>}FJ1&b)$QnR>i>_3~sJ zf1sO`d`m6}z$n)R2PT#1uWH{x>w-Sh|0fIT(KUMeJH_cNfhXpdH~i( z3+7QJ5bZ_us4ILB9#WrWb^R2+wHm7}#4F3=`x+3{Q#rL83?=`-1RuoR zsOQQ^YQ`^!A7o3=iqpRIR#}fx`|v$I5?;h~`?^N^teswXJ|lX{|HI(*f|zvAgAViJ z0jb>bPpu82{tv7~f4~7(n%hp<>}Wl=vbzEKs}Cf^U{^yk{{BrY@>k~_i2g#C#lWH= zZryexES}Xbjt^uhV1EVfJ50=d60%Z|7D}CGUUM2z?04+4HZ~alX}0aw{ah2BDmo9X zX7i61LP~5Xo60m#of9_u^&a1TuaE2gS%L2J6JI@o6HFgEx)8wp%cIY(zSR1(d1H@e zJ;m+oKhgGVH!hYW^Gr2kRy;O~?xr#ue;BWoq*2XRgV|YiI%%p_7mRrs+Ux{`Ts2eN z&}*QkCy?*j`NuWz8D^xa$2PI+EV=a|n=t3wQpYTJtqj?MkZLtbOi$Z(rz{}J*-mLk z8r($xc{{>T_7$)(%`;EeVPd52vxWy-Ny9eKwvZdcFk*R9znwmFHS^F|o;BMlGk>No zHn4HC8CeJW#j|K)^Q+nzi?&80YIz>i`5#>SuGX9SuSQBXD*M|$ZvKqtBuTGKE!;D? z;l2D*cXSoLA1bN&Ycecw%*&u_5lrDKc!6;3LXn@*B!D#Ci{__o#=t|r{c0;k0NEAH|k<4>F}h$wL&ye))-)Dd`wZWLe`f?H1GXmEFjaz zB^(B`!rsC|RAgWGv8cH2Whb%Z6W6_Ks}aExyUyhzO8i2{ox25>nnKLCD>;6s;A`ODM4jO*#M4hUtqG$eFa@5pygX2cw z`G4XL2W=&Fw0#WF3oQ=72VKDCp)52@!t0@jaYq?W$6j&F!L%8^RK^a_FBkP;cunnUm$`eq52jG^$m^tA=jFFCY z>Y?*u2^LVE*^Jge>T$GXJ%T>Xz+5%yvp=gTd3KOAJBr7D(TO2cbaqBXjJLXL)djW| zt2M$`x(kZNk>*y>)bsrL;4~ar6|Qj;AL1cWpM(U?ZGa z1_Toc5X-Ip-LjZ^BLr6xF`uiq>0A%rC zgbClkR5+yW+=;qsWzZWTxd2C0_q{YRp!lx1;?NEaWMF;;HNpv)Tzv|IRMJwipJ4iG znffXlG?#94j0XHakCSP$Kl~!DOw&*0rjZ@zF&p!k?4m(fLy9S~*}?qb%m)Ee&P*ka zNJ<>b8|OqlwfJmpS#I2ZGoquvI3DR>xC?#Q+xY{K4mx8G-xdi6{v=piv)#j9_gY!s z^WVm@i<8B02`RBGSsEdz)RtQ8md4pbCiT-{K#vFt<)cCX0jVeL(XpdoN4e8jD4%t} zOJ*6469^`pX(v(9lWRY|G>laj+iXtlRL=#`X8HG&pTwVTHw9J|^MQ-(0qmyy9Rc901D({^R zODd%o0JwR&DdFe+FxAVRnw85Bj^}FwoH9$*u`w@#4bWY;e%q>L{<8I5ku29aemE`R zuU5ce+537Zs&7yQg#)Er+#i^m{-jGQVd`f399)ZjWiXe^kF(;anhc5{xt9Ksf9CRB z*OCG-YvstDjOx5oJUYnSo^$rQ*eZ8d@V9MFN(db~%{0)brS1@*jw)@&Ak$@D89q=) z#!C!_`%5+h)$@UL#d8t~YX*l)@DE%y62PzfEl3Vd)}EI!jM+JA|CUl|Uas1dNvdMt z0Ew$eI%eQC?CpH2c#=jG(2yu>_7Je|T)d%4J5i_x$YRA5aK<%bkD+{CJvX|A`Q?%m zR@XHA&U9VrY`gw#l958)sz~Lv;|B^KNxPWT76H(Kd<0-0RLVJ+C{oOP9Ea8(m!ts_ zlL8o}e?1a7B^OvSIG2TLiEZIwr%g<#a<$mu_z!!#>M$27b1lAG{V4m1x=>`tCA~0i zAeS_J!Z2+f zHnP^{LiwALoQ{roIX%;pN5&>r$TwOOJw~c!#Ulq!b)Rl=^?9oUh3EHWCi|V?=lg~5 zB1ZINd--MUbl+7q%~DTfDXa7yrg&m(iF9ucmBnyiAhF%&cmR_8B9Xh%_f zeTTpHL799NTz-H6`9m+eF_>)9v|}b1=R{!xIbBI^`NY5y)~W7Ic@`@vp75J;_>+%T zfZxaW^{)9Dy_x3sR%%7o`jmX;2%5Q4q%xv5#rPo-c{D^gI6tu#4ta)wg&Ra1?{7$q zypfqX0J77W^`rA;I}5+}4$xmaL23wbvlI%^o51A`gA4p8Bby^g{_I@>a%H$o<*Y-8 z$TqO!12|fARM=G~((M`p_+6(nZ;|0V9wo^x5&R*Z{+&d*Fk?TPOMe+4rFE>-}ojzBY7uP4)C@>9!c0tHW`4 zXLm-}H>ml7Dbceifb_PfzQvm(bZKe4--_n%D=?}bV?%%b=nzCGv z0T=P2IO6!1h*P8U=B^WqeXw}0=N2JtpyC$*oo94y=F`w^v2|O>KHGbL)ofCIwAx}B zhOREw8aJK0yt2^dld9T@In{l|$^AauzI~GL-faqa1~H6ARmBl;9|@GwBvB^~{?}WL zJqIygz3ltIo?zDAuDsSX>UaBECu@Ok44)d7WxztT8I=oZ zps_AlhD>-I-|GleHwc31_CrC>4y<2&TBb0tYEX|6${j*6KybTS7I&sYhi;rj7IRGx zDNS*?rrc67=%l-nKEv?#)-(f$*CHDt*(CX8*XuEQC$cB)PXi&kgrCx|DeDa2>v%yz zDYvBTPBPZv%oA#nvmm_${Qd`W*tR&G>~%F4+9F3OC&CwEnU7(4NwM4VB2wq}<$9TK zpxYqDLD+=h2^Q?hEIb%mh#)&6kPJa3ksfpx){lSx&NMWaZ-VO$I%y@i@jOzMNM=3(Oy}^&)+x4ZuETi6&G5msY=QH{3Pr}%zYGqU}NVOQPNQ@SWoXKAL{Ye=_opC^f;S*1 z7PF&ZSy%7Ot||hOTuZFdj5KNeMrJ4v8uWHVU=Zx_>aLKs9`Ee2xJZKL4n&Pw)k?yA zejY!1m4WDrSdMC%S!^hO8$SwtOuPlTIB7cKLq zJyTvJ=}4w)KnP&HycqeU5g^S^s_vbW9ZA0Oc}9&XhvUc23N*y96#HE zCl9tu8rNhN<7#;dg$GQC0=@H6)@#z&-x|peKUBr^1SHyN3KG&Tu8)S9{pifqYGKxJ9TIa}!Fh6fk;FCzC8V~}R9=QDEy#^?!^wViQO{R-hUb48JD-*KQGKI3m-Far1 z`RpXO%YyVOesD)zQzR21F=hL6-jn(pV*p9p^1$eBzF_&ue_*^_AUL%-+a4jaYOlWP zMqbNZa*qv9C~R~rIY+P%A=KZv|5Xe7%a7rGsRho=KhO}-Z-9RK&{)ZAuZUu|Z2@7Gr}m7hRpq=_+%~hJMW;#a`$TSl z2h=*sS5C}o#lns3EkzV}8f+!ZbJ?)Y8%(}L^)r04(wmh5LHWq`jFAuSmq(?0oDY8i zj4RgeNJstht^~iRuHJ}IFd`jD=-gngb`XJ3TeEU>FqU_0AYY(^HGqpLn11=!1u0bP zN_K)`JwE+}2y7Cui_L37!KZ!YYU{K5=F-=L-#@qc?soQf_O>nK3}W)D zU6O~(b;Q+sr>JMxRpD2&bx{vhRJM*i=JImt-V7}IR?Hu{GQc$uRw#XVS06Y#{IT5( zqNbn?p~*WT)J|G^c4JQF?fMX3#iAgXUg{o}AjU^uj3pEZkAI)sCy`|KoTG`$rll9T zC0!#=Q@_vK=c~eh?hb5QjBv_biRF?TryDi2Cy0~*j5v`lX`}}h^_NW=$_Y%8em^QObS&mi zFf42W+^A_I=HW`uGrExqcygvgZIqVI9TwcgNPn_geRE(uH+QEV_CZFW}kQJ`3D_H4bY=bF|{@b2Zh zu47vB2QHY81(43@yIJL8@-lpvRi2SsbLv}N<0M}7oIw}Ssn*M~tWgz`5|gvu!lBdE zPRXt_^eQ@A0y*VIP*H)C)Tx7zJJC)rrl$EH*D-_AnYCYzGrowW9QKBw!6R&dVE~{o zf$3gE{lTN@?A zvvGXl$BWRg{xW=siUbn=UYy4HQ>3z8ab_UDXBO2om{^`O2PjEGZwjV&;MEtU3(#sw z?X$uYWL>W@#5IJc6C!YbmSV1HcL6d?lmv&m&Jy?(!yO9j_fR9jF=Ql|!l?B!$KhK! zk*;$mtyWJuo+)T0axE6eFg`rS>OpNNt!nw3l`t8>560hNa0K6}3Y!J?AgbQxhNXT_ zZTbim%BIv}pnmWp=HZWZG>z`57S$vSANZ_2xf0QCAdI7Q@s-|_o zumBb*myVutdcBKPa2bkzd6~Zr(v8OR>i@tlpz@{+8KQqC1XQT$<$Um0kY)oi8g(X# zh-gbhfx*BsiYD)w{oMhXCmi*+>XoB-ePgXLCR0^Wv6?Iw=?#`+cqCzBjaunf$V+R( zc=2v!2|=?D9S0lV1@6R(9H1+N`SO;Ccgp=9ExeyphZj-Fi!nEHYmXW!NTSsvobeb4 z5@bM6FvJ)r2VXF@z2XqrA7&V+Lq{;Wy>fs6xJ(g_XcPFiD$6U>e`nq>6!Y=rCkXxs zGx_fz{JE@?NGwpid0josB-y??u;RPnCh;tZ4M)l+c8Bukm*~3(FoJ~tg%iXPp(H_i z1QO^brTM96vyW=Z#C0ALXc#m(V{DuwTswf47)zM{spPWK;40uM;A8o4bQbkK@da}h z9c3T&?ITS;~TcfqY?yY~E;s#f!U(Q{vQNAr*9M#25?hB*A z_H&z#=xyMep(;si*#K!Srd(%3Tb`o0vYT7$$*^j#DX-HG`sFL*w zKtux30k=avyt$)2w<>3X7rfmECk2G$udB@0$4hb*A0w8h-m31p73-qUYHBAT&t6)+ zUx5y<87K%5J~~iJVCf2+ef;o1_r3^SjL@3l-JHVvi>Umn|0wOv^)n)~RhSJyGM0!X z0Ys4isYwQidch|IDVcew$8Dn(#x2E0D~_4EQ4D(fJkK-W2fV*R-4rk^non7-xK3J7 zLh)jT@d5!Srb>~<0Sh?d$8!cRFz)$D8W-mv%y(`ih47f>!?&2z!PaDu6Q{IeSHJ`FGR>z z^453#H&5tGnwH=MP(>Dyk?sg$ve4Cy(_h%`Vn^u1&R3&dufb!C**E7UF;GiMc`F>E z?HC)#MiLOrOmVRk=y&fdr!*fIFl?IHb^bS&O==Ze*PXuJrKg6ntxT(;)?8-yvAgxO z@8$ox57XGLs*Pl6vFBJ&#*z~-arUM&<#5jCH+al^rnCi&;y&+IptB`iDCu&A7!snp z>2W~`A1qbbTsih~{swevr*O?~_^3RJBM=2@$kP0LxUN5=YP&;eQ+m`IPThRakNcJu zs6`~C@oX}?8CR<7eyE1zGE@#&X;x#<%V;^ukdM9VVW)9bR>|}vja1#z|2Leq*$uZ_ z*Mn;O*ao}^YntZIi=%B~|6ol|nKZJYp7y^~T27dCrj$LGH5gx?w2;`>0`R*_vg;m< zn0oc5S5FnzPA-R0S7u!Nolh0gT(`m>~aVI$s~!>z1*hHI1a@1^P{H7X$Kr3x4LFTwb*Mskl9}Y}DkH|*U3mjMu< zE?^5#mS#&K7+{8QL>%b*YGR^KzI9Z?9K(3!3rnFuStgni#X>$g?$(UGLnuJ-(JnyaK#J1~SY{=0;8ETr=NnT^9*@40JMuNUOhd zTOhu8d54GYZ%b)CcPcP+?&)d~1VwknyL8hI90YGS{hPL-+WE1N3H>!|a>01rLJrD> zSt#DR2cGmTj26gZ1E~Zn>_4#Lp+fzO#=wUVk)G}YJE(oX2WVA^UjP-7n$4NgP5=)_ zg5tv3CHz6rOK>tZE_fjF^oo-p7Nh~FfHk#gXcAFfM12K~RAEP|$;`zEE7HGj;=7^* zRI=2=7uFf-*=!ta^a^@D2Lq^J$USOV5Bq<;9x1!$Tb8#EY7XvXe9`yTLh^C_#|Dw+ z;=%f+|8xkG2_Y3T!tve$+E}WJumEJQqoL3#9a648$8vY*%lK(l%u3x=6M;In?9U&N z!5<7McPq*&J?pp~w@GeGzm{g$g zX2?*?+5T&B#84PYcnp%lfm7Y*tlcF|N;~))hCM#tm!<#anf$`;OoLChY-Xn0Q{vZT zQlg4D6hw|{lS3CHh{n=Bg1(4{tk8!`Iu_S1^nO+N%^vA)9WSJqdODeiN|><^>&(8O z(0Wy9Vs-6YoFlE4UGrngqqQT_U8dV_E8#`#9A!(iuG;BA=hYFhzV8qGNlFM9(7*DU z2#f!LCod^LmhS&@IKv;IIer!l>d3@s?vR>o5KGjm#*Z3l7h2WUVvE)F0zrWFtMfZK zPf?L>HmjpQ*x0{r$l!bim$`WIZrAp5O8x&JWOP6}$@+f~qMZ_$RXNHKXJ{-Lt7zGW zeN22k**r7=crH$VRB(>dZ^p3pNi5Dbh5*`A8?t82e0xq@R|uQ&?e}&n&|N9^m360J z5`2MoUD-%ehs|8o*-zRG@EUscswc8XZF|Z+Ng*i%H8Q|HzdEko$93GpTjlQvw$8R& ziN_}q3POg)9+lO3Eg~OtEG@k2LwMGBL(z^VD;P7YLPL7{nx+~j=3XFvPjQ~|lmn*U zZ*(1M%%=ZWQp=d@6tJ5OR>GLrJR8oA;Sgu>UAKAu-O~DHoN4yBExlwFe1+8+0!^l0 zv74a{iX_fYd$L;j_Wne$>65c%!k0zB*mSv0MD-6vY)OCp z&1EHW(YI<-Z$}V@`6F#J|MbBc`|mLxb&?hM36fI2^u}ZWO)ZucrpE-tVW(rAcP6p_ zY~jkmMpFkug4EJNs4uToOVmrHkS&!th^O4s{ew@G;Uk2<;54xR$&eYsQovZeeg53V(|?<4TR znc!81csYcJoJfx9mI5%9hw4%wh#jlbYX5@Jbp1e*j8`nHUJeHAl@8a;{`z2hOQO;3 zU$;E7r;j2krI*H*Q$kzB@=R4w^j~CbfihYPwV+h&%cr%@O~u6RSKzn^ZZ2h1jGSL( zuJBmVU2X&Ljyyr>NDPrYY1{hmzdfJGddY06yGCV27XF)8CLDSvoEAZaDTSBeGkMH2 zLKgR2uFLOj5X;kw76+H+ zq9-xF#N(PEa`8v)@4>R21tDnSd|)&#rcvVc5EBE;U!7`p9cQ;JX>Hmqg^hm;1tW36 zEA4?{IH3wapagy@4)w4~QXO)A3jx0UXDiCg) z;cSqy>P!7D9|)^QA#AvDsbo{W1XV3c<1U`;f7%cY;s2_4`261pA!$z&F3C=rvN2Xk z6AC&BQmFIJAtbaZ1ZQN4gg3K8e5af;3@ zZjo}GgnGjXr88;$_Z~tt5V9I=O62phhR@ioUzZ-n2)y-17tJUIcfDLtie<|2@$%Z| zsi`q|$-I-cSyP!bJNvDs^|#0SYj1a@gl)o?tj-J$s7>;9c=wh$okCQ&|3?x&el7Kd|IZ_yT^0laoH!g)JD6wlKfXY^Fm#q(_OFL zk!xl3vO>K&M-@2B!#Q1=yphkjSVF|*mGsw7%5)5GX9(3gI|w{?Vyc!Z>j*sE$jKE< zM$n>rkbJv!MA+s#putGCX(H=Y&Q~dq;{l$~eg?M=nnJFyNG80Nk%)(z%~NM*Y-Dfe zP@_XiqV>^?x(0~=lot%`cIYP{zFxl}!evqHGyFxc*Kp3e94p1?X5XQX zV8(O?)+`&7)ikPNj7UTEsIRm!)%sRlj-MT%fP&ZIC|m_btBp}FVjRMRtqtuKi1i^A zjDOqcf#X@&WQ5X$m?6)9#0TV)Q7X5r?(CPSo;0gN#j*ts>a(K36)D8=LJx(L+`?bE zaJfSD3rNneic!~^%5b<@AM3Lw)WZ?ER$jq%Vua!#?%yrL2b`DLX@BRc$%wFym<=k^ z2NZBH3Kv(X6)8+4c@5bQ(sZI`vb2GGD$4A=i7opu#~g^P$4(QIfbC2l!#n!Iame+W zw=54vmC^kEo@WNQr1GnoApfT=S z>GbIzPR=1riMQ+-%hllxc-Kih1BZRS%lgx5*hE(|sgE}o>zw~I|GR3$FiOVzLvmG| zg89d?rKqr@jz{uaSg5xQWo+1CYPXbF&~zty|5AfjbL-gCzUa#xoj9XBPGzCw?CGvA ze7OlH0B6V8*o#~M7@~zEcxQw#cUFD-m>IG>S?Dj~@aOM^wX3LsC-BXJ76LbWkzApX$3qSMd3sVVVR zRx8kag;qdFzC(`RAlz7c7%;Sw+a3$W5Io?5j&Qu&`%0T?hu;i})Wiy0HS3B0r1s;=DCRMBYXJrs45 zFn~@#1p~%@uc`Jd;Ow|pN2=xNl#Mzu*T!x91vbePOVrakH&K(%);S;?8UhE4-DHv3 zkQgMsI)_q4ZjCP?gGWcKE!;G;jG`gKOBZm^PWAAB6G%*7!c-fXmn_)2Bt@kf0budc zsQw#PB~n1CWF8a#m&}2e8SExHxaci@9HdES6`gmn!^yN)0`uABIM6VT{^nfTK- zPfsi6LsT*&Wpf@8Y9r=@!&55HeBGQTzt z>g-Ni2K_Hwq|7n%I$$a*Drn22a{(zv&U6Y}!x}*iogp>gXi(|&vl^xoV!che`b*`R zdkc?El?fu=Dx@DU`J9it>UwDluD3SN^)$;7vbEa3C~LJy`3HELo!m=4w4Edy!e@-| znc08pKhxCi?C6VLxv{PhzBaw_EjQQwnkMWedQ%^FK&eujxIn|}wc$?5lL5|96~*9T zL1^|VG#As}e07O1W+QSg6ms(Ymzk+*u&wMZBAOmZZ5INDRymI@33I0U;lmJ63*ffe zBdd?gHs}GOk)tQ83;-%i2K>4$;x2LStP9v8)&%>4 zdeiyeXZ|Z80YHWUzee@-*s z-d98)T{rDi!Z2hVG-_#Dm39q_8ji0u%>lqe+EU`SwOV~}t2nIZF+}ovBd)nN|G|n9 z%SnmhtG>N$==o<*bVvRf6w^ZSczyMZz`tRx>+mev?wCzAX`p@S%c~;FY52b@rPZW1 znHS&b;E+C`m}eFK#Uu?l5IYyxE0$^)3tKoHt=-8Tt2PEt+m`MNS?IN`l-+6=H~=GU zONJ8MMONo^8#(j);fKfeEPVZ{ckNb1s7qr@P=mC0_x#bLkcJ0G#@(2cOODp5>D6(% zM$AWusBSq|brT1U#e8RO6Ji%%S-jDpOwx^~}VQPM7| z5@geZLVdX*qa7KM@k!%U3}lY8D!^oyeVAJ@!b3~03)3WQI+>5Lvcy|JSTZ;*oZ=Wh zrV^&f5mOrRC}MCBwl2^3XgLtl<5nguhDwjh0SmH-`_{=VM5Sc_)%4}q=5lm`?6%vb zlzjVzTt-Rxq3_~4`n!5+gb3FNDIi#p3cYitP2n%65DPTAD|k=;Y4|pN1t9958F{{7 zu?QHg8egU3^))9oV=Gf})skA=RWDjpsdyY2vj0nWbb*M4_pQGne9LXeI*tF~jg|Aw zr1e}^Hqq2L2GI>QdcCBin)1dY)0|2xZQ4BnLGC@t>t)CXQ~)d?4Hsz>nN&6F0;XX& zf2)F&BjqYT|NF}pxKXRG6p+>EsPHbzmMxkPr-hcE+=gW&Y(kbONR$UXI*c4Qi1yDX}eiGC)1y+*oxjV;<9D4}kr9lT!>-*<$aVvjif#B`B)JDDAJmTy)Ko~0Q za<4Ev+jh8w!K4bicD;u5yqsBdL1$k78P(px&Gh(~!?6!M;jtLd)hN(A*jeMT&H$pc zF-P1i%thEYTElS|z~Hfw<}=|&99;27ZRrfVc6#Ac)gS$D(>l1)w>x~yW&_V@^x?g> z2ZVU449cJAjo6s+?E!k)7%-ZVxFVIbZApgV*Oh=d!H%P8zHG(*s03%=>g+7~Rg#2h zMGH91((hTP64_@v4p6SjS63o$Jh@=4jD->)`s;5z;cgX#MPOh*Q`OpJ+r0FOKAKl{ zph<*+!UGcEuAKakOnl%7iHsL?@UPzgf*RZV>yCu9y_a1J@xRu%fO+^w*^Og4hK9Mw z*UyYsclm4&(UxaHa1G9=cbj}a{1Z+=OEr>o>Eem`M|z%}dZ z=+}50Cwzpcb(bt+CCS(n${|iCx#WU{Z#{5QOZy?LYp03?XBU_i3RF`$<2~c7gJw-StwieY;rod(ePpE2&JomH+8TH z2hX}|cNnYU;fGA!4~+VsWo!&e!~z357KMmt%uA&J1}NEYFe3ToHT@VKcXMuYw~!=N zfDjXmM2cGEZT|(b9%=C*`1SGJ$tmX_K;b$m)6@C!x6S7zr_FmErzOaLW8KJYdy)mB z#YuYenNcS-sgePEkg7UyL<`HzyYH&T<41lf=n<&^;y0O*W4f*J6X;C+MxVNI+(atP zFU%HZWdPR7R<(LZV11>ZO~3dz@$3hlK8Ysy#e{pHRw3uwFaTYxrs898)ah2L7O6OD zA=wL7OyCyQ4{A6G7A9&Fw;z}6rkkT9F#(R+tOEvNo2DV7swoD6!{)|MIGraFOyDGu z)PG4RlA^r-KOx<5G`0EyQM^kUl1lt@{%kSA(AIE2Ld6+~$X8TscV4}D zgyJUGlpC{!rOC=%CXvx0Q>gKQjcALgVxaptSX}$4=I+w&x_>VUZgt`fNSDyZJN(8t zKS2G$0_dmr3yq8rI*)tnb9gXvhF72Q^Ra%vJZ$7&Gt*l^acY3D4hGZwiveOLgbE1b$s+r^V?eSBQ z>DOa$7ySFZY@_Ptyr=gQlowRwbeYLE_XI;-;h4)tb z{?7aqzqxdd5+l-K3Jd0jFrJ+Jb*>ZBJn_kn>=Kg$=b13glmIj5&og0}F3G?!d8MTM zuagz$tIHs^P%|(n!sS4WvvQL^YRFA)nlCDY*b<4ZC|Mb-Xo529 zH+~7#JW6mMO-#ulVTQ%${<#Gpetf>0xMb#R0N-9F1&d6XGK0X(--}Ec3nm*bj$|qe0SjzcY{FC% z3TARGF=1?)Y`-Lu>0vlnVBZoGrsol0ro>VyY4|9f8M^!5PWD~u$7GuXR(f!$36pa& zn3j~tC_@U4$p=@6GBM7Yd}D<&+k`nFH2_&CQn>&C