From ff8592b19021d007fd1f5a345f97c8b6964ce978 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sun, 3 Jan 2016 13:28:01 +0000 Subject: [PATCH] Fix bug 58067: XWPF: don't return deleted text when document is in review-mode git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1722715 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xwpf/usermodel/XWPFParagraph.java | 8 +++++++- .../poi/xwpf/usermodel/TestXWPFParagraph.java | 11 +++++++++++ test-data/document/58067.docx | Bin 0 -> 28709 bytes 3 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 test-data/document/58067.docx diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java index a81ab3b1e..57ff6bcea 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java @@ -215,7 +215,13 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para public String getText() { StringBuffer out = new StringBuffer(); for (IRunElement run : iruns) { - if (run instanceof XWPFSDT) { + if (run instanceof XWPFRun) { + XWPFRun xRun = (XWPFRun) run; + // don't include the text if reviewing is enabled and this is a deleted run + if (!xRun.getCTR().isSetRsidDel()) { + out.append(xRun.toString()); + } + } else if (run instanceof XWPFSDT) { out.append(((XWPFSDT) run).getContent().getText()); } else { out.append(run.toString()); diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFParagraph.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFParagraph.java index d9fede9b2..b877451aa 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFParagraph.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFParagraph.java @@ -584,4 +584,15 @@ public final class TestXWPFParagraph { assertNull(p.getRun(null)); doc.close(); } + + @Test + public void test58067() throws IOException { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("58067.docx"); + + StringBuilder str = new StringBuilder(); + for(XWPFParagraph par : doc.getParagraphs()) { + str.append(par.getText()).append("\n"); + } + assertEquals("This is a test.\n\n\n\n3\n4\n5\n\n\n\nThis is a whole paragraph where one word is deleted.\n", str.toString()); + } } diff --git a/test-data/document/58067.docx b/test-data/document/58067.docx new file mode 100644 index 0000000000000000000000000000000000000000..ede9abbe5b47b8e627a5cdd01a6f6d19716d38ef GIT binary patch literal 28709 zcmeEubyQr-mUrXs?h=AaaDoSScMa||?oJ@MO9BK!fZ*2pFP8@3MSXgQ(F2YZ-pGB@JwM3&APHc<)FW_F;p33%}u0kKhxn zfy!ChvC2FbhRxzvfX*Wi=avTg5ENHN5xve!K!0bNEW z*wB-@K{8KDRAJhjY{x|Q<)p`j6<=M;$W16zATCel71i1tE19vUx#K6x(cdM5*5qx? zchL5^bM>E2PIT{gXoH}7vJpesJ*Av{LN zc><=wENF6$KyG*xqC0yuPo6$pD|ZN;W;R*vo*><{O^Tkrqj zCi@4~D^fnIbU#6lJeF&h+`P_mrhYLtVT?WDjGT`2BzhKcflfhqZaKH6TcJo@*}T7J zB=7k0c*}m)dp*^>Zkg#7(PLz{1+slogzEFj14=1#4@9A3xzD+{6=nP7TWFqNeyH0! z$#L}Q&(nu@?g&I{k1{@@xa`JJ#z55io`HuD2@}?4IT28YfKCFe0pL#Fw zi`c!a;YE*alDa*W9icgWtYbZqx`ksD0daNSsi&X^{%g`rySIy{p*PkRydr)d4+p>~ zqbXiWBT27iy0G6zZD-Pva$}wTI2r#UTo|6tl-2u#Czzufo49%LZaDuCG0j4&-vCTm z@&iRFVW#d1@n1C_fUV~mHMH@x!T|u}0Av_%pqnMfFD=LtXyNGu9St9b!CzYw40J4n za{u2xDpH4`-h}-E>P_KWLarKbskMrU#PhBOA+1Mnj+gA1Qj7E(z}Xjl<0^?ougIG{EEeED>^}!oub*v#KFYW z#wU1ReV8_Zd-NuN|2g;t0$K<$KbpEG1T|?gkRduJ?Tt)J7Ty|O)2J+d_%{BR^Bn3y zeb%0)&~A&HruWnt?h?<@2LW$6^nbMQ!FP18K%k+0m{_{hF2n=t-oJbhj52{ycL*Y>?ZLi)n zXG_XCjzY3u1N$tTJ8tFhEL5ckxdpi^9V|&-AhO2odRgE72=M0Rj8`%zU4Nm@#f?SB z-8me5e@K5RL3p4cQ3S(myS*j+>UDD3H!}1(YFeg|s!0KCRtqv;iW-kkeAxoj;W^PR z&mW=fni|!FSdttx_jn|7*K1|g1ubZhYsEOdpby9IKPxGSk8+iOIgX6RA3Dg2W|NDW zrRaoxK|Ta|tYYp92>2pWHb46H&07<@>FIIi#~UyJU>^OndC2YELKmC~xP(q>Xbdwc zBFePQsGAHq1@K&^o^hL@^G!L%4UTq_C{K&E;|N=E5VAv5_j^sgky!*1o>{?t6 zwnAzbR*V`0>Bni?d`cX3<^I|f)~mn%mY}ZGW}afG9o1})*i7+b!_QrHr5cI3?LrkmRdXVPzrkS)>mQd zV$4d2#Flm~_L;4^tIMSfxVwCi42<+|LrOHS*Y3B^oK7zJ`Byn?XzApV4rI?t8$c zhu|%d5|W_jYQTweY}vC)_d|sd;T?%LopQ7qH%-PTd;y@W?w5~s??*HC^XfvXfdfBkWa;AwXDoRe2+%rmP$({D#{@*iT1MQg zs_6^R-j&AKBqMPS0~!b6jFZJuku2oGE>GW96ctd)B$5YnQm|);#C5pKl&_%@HmRg< zE4>NJI^Bu}&wS66O3Pe&1yB@!Zg&DYj5L z9Z?ge@@@1-qYEbOVPui2wI@HmlRK~nla0~(wh6`D2iv5|veLx20YnsRfHT#-dqrhS z+okWlSe_*M4VdC9VD4NZh`{!X6~-{1l%c-KljXM{QO0aT zW7pl)DV%v#vWV!feT?Igq)=jkkiL%JR^53#4~tYS4X0Zf5kjs@Xe`4JvEcfWi1R)) zsyqJ2YyqT{|BcCZLpMwzbxO`woOhKV3CgBHn$dLTxOL+p>xe3Kp@Nq$a9X+hVwY+x zr8`!{A?8ekCT!)X=NSUQj|;4di{!ZO7PxNvNguLMdIt@;_9smGepxDC-t&=t?#=k5 z&MC7O2j+_#SXen!+3Vc$f>G3}*ID*VkJ=V#mun}gRfwc}Z%Hu(P{TB4gJ+Xp!+7J~ zTSVDc=AC%@uOm9>p+d+pJnpfyH`22HLzYNoi*66%Mm*^ zn9d?UO?ILmgRve4Y)3=P^2kd8oU8=xwuro^M68ZR`k(e&u{GT-S=@|IGl#Zd$M4>~ z){H~kDm-_#I6ToQT>-qx>h%saGxM^i24<8XlJBuXXj+JM@a5^p#b7dipw^ySICH%Fexv;NCG%9VRC z)kNT z6AilCV(1LK9)nxK_fd9_lsC7 zv97B>F%@Lnd1ERXXp{47rBF2e@Rfk|5myegFfEh1T<6C13m-_EVrln2CI&)gK*^YK zjKM2ErrpWVRAtS4rz~+JdQmuV6Z znks8G&e0|i*cJKel@6Tp((W{hvgvdS-uK1U4WikWd~MPDz2yEQ{zfYxEJ{b#yy$qz z&YDWo4j&Ot;OU1`LdxO~@Tlfq(SD0LD||bvVkD;FuMRT#Q)!0UUY~!WmyBnnB%{-^+@xqLr#!Nf_rBJeukQR|zOn)J_jg8J|2&-3V z@_4F?+VOG3($i_`wM{wMq>`qGHH+~KezxROHIp{P@WzU^8@Azg8DVc4J!8 zO|&l(6PR(TL;NMu{GBMGU8NkOa@J6@J@G!!Mp)lWLTA@csj?qCh%fBQylQxrCuT#} zs`lhD3B0Nfo?>}puZG7Q`b-8SiG^f3B!KJ0p&Zv+tva}^?ugv!Y( zA||Ic+7!<0+xT&seXo=3(T3*w#@YuZdo@H-8-rb2^HUGa$w54+_4>69s7xo-`Y`!k zl8TX%xMlV=ERV8;u3vdei0Vk4t$)YHnA1BjLl$!>yNxb+v52ZUb_G*4!?U=ZzG!%= zqWN)*OF$?=pKznyaIgIJyLHxYXQ>m2r&^p?0jCSjIYON*ZR;F^>Gq`eqekOHFh-QD z(t@xw-wsgYJc@YW*tNdqqgioce1M$^oD`xqT=gR~f&1ao>3B!9DSi)h7}j*;ZSDPz1-ci*^2k6mC>OX z=Xn32P)40#WWBj5L-jn1KF12Cs-m&UVi+3m8xbR^=bRHG4&5pt>Wa(V!|hWM(9~10 zoP{my_>URl1o+q7(0tibY%70;xQl2PjPZQM0?CQXPCH{EV5dNzg>WBjxg_H>m)g+K zE5j!*^}r2pOJ!$jT{`6r_koL3|F#B3vWWh>Cp@epH1tolS#-}O@u|LrivvHW-@lqy z)#M6i&_tTAdNR+uI!<>#P-yJpG_%VcCsXHjDV5OXR!@Pduz+P83ymaKtrGFk_f z{RbvS)$@eecV3OG5k#s)?2o^G9jj9`bI;t?1W@&#^i?K$g)}SA_*KT1KaVL2j;P}% zJ}&<1fAW;Y>f$YAQ2ZmJ)!z5%v@InV-}-2zJbr}80^QLwQ#}vI_t|Mn5WL@~4XDu3 z^WmTYG;cq#$L9wC9==4-6zGgW%?;?{4joZFoy?uh>>SzcU94>G=k8Yl*a|Z8G5{DD z7=Rq~1GrxUcu4!$Spxvd$^d3)S!4h_3@HG*$oq5dDhfmP8!ZFF2!PIfq3O`YqnCC7 z=se{oj|%kqa6r+1{{H0(`xf?B4j8+)aKF;OEDqlv0tD1-fgV72Tc8UyH~SNSfP}m< z`~xEN_(?zhNn%e?#LXuH>fm=nP+lECB!ceOky_*>B~8^dRAuCqq@juc07xZfE-sF+ z)Bu2!vxl38tOT{5z5zATJXB5+=qeW}0L{$8-Q}5@n$iR21Mg4lKbiqMdgr3pe9W)i8SH=h3ZQbNF{z1RBFq77V z(sa=DFD@Pu59#z!`oPmc`x%sm`W!5-wVRCgFZ{5=ezsb=P?`{$ZfWNsul0{~KWB3l zRVWQD3;WIisQ7^M!1KkzT@q?b04_c5pe7HUr54C^D0QcS5 zQRSg7sJ`%+R_;G_gkr*d_psG^XaUf&@O&O_TK^~uZ(waFBmWQn02jxfz6g~KzR=B6 z<3TnkKKz)Oo3t#HhT_1VSUGDy*bPb}5L=o_J=m5VN{a$?V9Wqk03g5|dbR*K18xD- z01bdFKmvMo0k}bPtO0faM`(%_G}j86Vh4i(aDb-$Yd*D~JinCrox|p5>F*Dvp|$*L zo?mL%{Ra;ao(TR4JU8?!1g``y0xtmn6hI9x1}_dT3NHmseF`u1n*?fqkdqo<1K5R1 z`U{RLz!O^YgB&^li6l}_#^1_Nhq;;BS&Sxvpwj%VCGhurD9&#hLuCg3(Es0Du2 zj_r?j>JMlq{w;@k8otG761_hFp!#3g7hx0OJHj;dJdg10_wopf2;ZQedB8L19dP_9 zkrPxZyPtQ${Wm_gKk4up%IN_xgPzx*d_btIze@V2J8JEmMEZNqgC(q9s$8f5!dQP# zeKPyx@X7R({3nG^_WxAJ?}&f05?m@=Biu*0R=75}uK;SePjH{%I^p`@s^LEThWW4W z{VyoL-TR;VKBPTp`*0V2t?!SvwgNa}N??*e6w(+oTT zfC_hL7{T*<8Y8q%B*+5*TKFtH-MoImgATmI0D!wSH`mYKFz6D{zG?aX{uJ6@A*BES zx5@YS*YED{ZwsLK-vEG5j`yDcILNR77&|x^8~`j13>*&3eGh;NIusy4qmhSzlk<@u zNz{HO&=?2Nahtn^p`a2H5tEQUre|PeV&>uH;}>`;C@Cc^BP%DbpsA&;qYG8f!qUpx z#@5c>-NVz%+sD^0{6$3M%c$s>l+?8JjLcWBv)&aH7QHVnDJ`q3Z)j|4ZfR}n>h9_7 z>;Ez^I59ajJu^Euzp%ExvAMOq^L=*@d~$kresKx;arK}V3;^yIwSLnKD)%4tf*Jt^ z79JiB9_c|Z7+7!U7Y+v=frb+i_nA79nJXSGS12;RL~?%ZXOu_W8Xy95w{cWLI-a%1 z;0M)yYWCk#EbM=z*>8&duGbQkpC6HL*e@+Xh6w+zW_jogNCCxa5w-l zz}+1q;4N$jDs)Kxi!NCAWB(4&@qY*C#J>Y{^4|eE_3r?k{&#@R{1Fsg6?e}sA$IN1 zU3Y>9?U=y6%_OzNbhm?KlHFsUO}2+v2*0Rr+C3oW@|a zyDK{LQQPC&fYH>WgH$Di_4ojd3Rnc9khbWC5=Qbh`m_8z|sdICWLovvpTfM;dK zZi2yRdZ3vCGs^O7F^4Q*#0?O>%`}uFz_3Kx!C{>x-efRPQT=YHuC8_r=(%eZi064m zWv3hJI=bI*a$}4>NfZ`osPUc%O{IZuciUsf5bLofeu>0U%!@SIVkU)mg()Sis@X5` z%~HD+30{_mb*~r2#c>i8qsV3>2uzmc*q#nNRv%>7P+*eG)AQe%2|~QB5ykfD?rZME zq@Q&>TOn`m>5N*zyb)O&=5tsfGTwI$;G6asrqTh6oZXR4ayZ^F6e^cE5E3eKL?7|& z>oua4JMjW{K4uAIclWwnm_>H?6P7CY087m{(;bv$u}Fa=sOdBksEvAqALaUTw(L2x zU1IZS!&-O8hC%5LikN$hvsWXJuvBsk%b9LX)L)c!+K@1-xuwK-8sTO{w;JQwbvE{Q z*+5d)O(RUGXPg>1NbK?mo$qiVK>LvgZ=)s4r1398Ou|;W|}1SVifBys@v9$%d@<0!%!J9rniV zvu>$asZP!#*(^8pl(@$O^a9&+rWIPpgIoD%orL>0&s zg62Gl7!HcmwTqcf`{(_AG~(8OOr>$q%#OMZlFg*6UXigVE3-ZC0w=ThGc zxEr2w4LW8moWiQ#-@$tRKOL~{XaCqi!G?&j^R7VXWnZ2jM+T8YT;0Lu_kcmrPRKm~ zmZ6&|E2YcCn2dX*JT&*A!XhRuJMoBedE(p7uNHG-7 z6FiQ?W@;c4ScE=eeS*&AHdWNMV;*lDy4$SVerT+h$g4x0{>;r)t$1%LBXaU00o@_Rs zgAq6y0%e@gx-$iLJ}=p<@ikf%+AD4dw2RmjuMAfhK_(3IS5btu*&E#hi;aD9cO+8! z`c=1zdhi)R7mw(Q)5jwMjA&GGUiDQFC=BL`67RW{VwJVkrD+jTW$r7)6cdl|q)R^? z^4;RKw?1=!x>2T(j-sID;*96=e&*^LAB&HMYGStJm7^NKN}9Z zl$;Wlyx70K$s?Z3aRFDSw@b@ywI=As^{SE}Z*U421tL$xGwK$Hh84-8@e0oQdFIEa zQRq*^>rJRf2k#veFjr*=&Gl|PdG$?%*ldecgmlgz!MSi(6;ISJ{oMv?Y9R<5kepq_ zv@E-e6?&FPWSfOk3+{}g2G6v4R^yt)2Q7B%)yjBkxSj)ru zw%b9Gt<6vC<-E zCH_YdJly}Up*m)8Z>_3WM1V3zV`Nd;x8b#0dzL^B*{Qzh@;%Lg_undXNOkHa7pjs= zP2_Zz`!)Ib*1NXls^UODOw2<9cCN`F{OkRpLD+kO41Ek!i#_fE>X6FH@6nYGd5eCP z)uFt{iY#ov1nP zk%(DUkniKZK@@+Mh`1*x6I<|Y=^1cs6e3mW;Uw1GeEMz4*e6wX@}OO7A+j2=6p zpwj=}DfwU{s{239VK9Z(*^A1)uVCGHR@mxZd8JqGnqY!OiwgGqJ~l2Lr54*a2|hlb z$qO#ipObVC^e)z4>c!|iY)o&zbYGNZ)fpS&e)j|^BnaB+;RJYsxmV+x>cI?}v%L2J zl3hv;a9#v&9{yeyRb+!QS#Ju&-!OMj495qhox#qmU_Th^_}yFw>1@i#!pR*YJCS;n z$!E^zSQY=%nBwnfQqHH{Am;#ATn<+xOBzCK(kcck5Rw;CCup=V}w2WNoHLx!5W^4RF=jU-TdlJQ3wb7!6Q5x)&H$Ou4 zBI(8>v(F$c7>xn^A{RNaxA^lNyMy!$b>=`@mcQq?!NsgXU78}oU8%PdLS_6`<@Rf@ zar-83LQa5KZ)a2D!98I09uT$A{CQZhcUBD4)Np7mhH2=7?E~ypF5O$$8qVt)+9z}3 zb1+8TTRs{*THN3Wb=K5saQMJ&#Swi>YnKn=k5h?+*$l>nLKRWf_xE7E3_<~`E}kc1 z`b_rT5reGDy+J#Mpv&09qZ_7mEJ|B3R9-4{+m1)GTcE~|33>UDmxhofP-nL&5qP?{ zLX-?FeHq77+Mw^8wA5=0Gj;=QRbi1qBVyP=WIiwZPkb_VWLqJDAVn$22H2uIV?j1b zSk@gnGIw8gV2%k}tyAzeVmy*^2*$JTz-$0h<~dX@_yn<(pSL9A@PJu(+r^0*IUtNS z2bBfA+@ovqYCyr(i@p@oyJy(!-gy9wBL_zK?q`GZ_yJ(0#>;ekrh|e zofaL&Z;Rubn1gR|L4*|Fp^{v)LFo5&CvFVaM+tp`dr0v`N%Ay7Rpp@Wb&py&qTSjvK?DIRldO$~oi9j{VgqD1APxFeHw>ivlG3#xqIk9mWtKx%)4dL| zsfITqN5I~XA3q_OBHXRyAq2RB2ZvVQXXMf~XByT|dfdYGWMxL&m=^Wi18}K&OvxIQ z{nuW`c*JXV6Y5gJg9%d|Kw_pd9b_nD|U~V+FxXU_lsH4w6~)4d((RXL#dP?g1(wr`wM3`~YD{L?tBgP*i00 zhHNbn-N(-qYd46rZTj%WFt9Q}928gpG4N+RUo@+HCejAocht?zpyF7>vSlvtN&>Kh7^2y=Ad^ZT*B04awFm9M&nh)P zfp^=iJ`N8zM|tcI8BT>UPOOCp2#Bo~2G<^bC2CH(QElfVT=0r5ncvfZko9LQm~<>t z$F3eMn53?~QP}UUnRmFOP7V?apfRk3Q_c!BR8H;7U@A2*Xv{5Z^FcCRUsp${(g9yNvkwLVO<}PnP+-Lb8R!r;{RJ%HfWZE>C z_q-McZ7C@}G=`gife~j*MsTR74}Qn2_v&kh;H+hWVR^}ngV;+`?CSixf!bO~c&Vw+ z$K26wJVy{)LLMl4J^pYd-dML==K?z5Y4fzD&}SK_p~n+lTtRHSSKqj=^G7vMVMF*o zFNpOYyqSpuQ3B@M(Ki7gAgdwe#m(`r2#f*Pzs1Q67+2=lV5KUCoq5b{FYL zE9kPfDF|nJuIG-XZNi!73meT$^4T=t>d`7zpTB9MC~OCKsW`GR7)90!{AdHKyJ?(v ztL3GReg|%VE;zGm{+wkhGKp6JKVS12qE>k0GH)`OcR13lM3^G$(w(Rl~SKxSo@)zOGb%W?Cu)ycfCGxWAj z?Hq4!L_o8VPFDP+Iguxm-EF#E!I3W|8a`f2Hzk+(JnHtl%flx<$^@1&B8XUAa6)kS zyQpGU5QQn$qD4s|rW>-|hKUimEUBNHFKdReUcLt@cXrP?H)ONvY-o*Fcn$$k=k2ci z_Z8na-W4u*M)cK+7PvZ)$H2hf18S-dUVE1sJLm?(-*C8A?(t>LWL4E%no!?O%wU$6 zE$z4U9##9^HaL44o9fMQ95qsy8cbQY&Uh-mj9b~mi(hpS?d>~De z%3!K)F%lD>nP4i1Aa;nux`=Lf)Ydw?X6g6_*U`vu8j zpK_Ba&+J&1%l5Vy7tFkM)dP%cjvGag=jDsz4syNknQW_hQFln7%a}96@-r}1_`w}x z@5U%ZzEK&|f4_Y3DQ|FdfHHWbw0N{a-#%$>36iOkK;~K3(bkXy_YpLDkbW)dqp1U$ zjXJB2ywdO~?wVcDsV#5t)c|Hh~FCz4?kCIgoCw+^9n$yj@H8Ivqc> z1{3VbyRz0)R`9Ljngk7q)mvSZuRD1KhX5Z9NKtwR zU82hiUA|cj(bA1$M2JPNZcDn~l}tg=zHZWRSubLGu^pS&6>oe~9yXFn zUVYwYy>_AXQIzggHa;p0$YLMo&9m7CTcBr@WAGaP%U;Ee7Gd>w(u9S1pcn_jWqwnL zQYBEBd4V-!nb|Ht61Zi5D(|yO&U70iW))2L4C`|uy1q2I&bR@6wrF!vJX=L&2kye$ zlI=^CX(yG4k~v8b!x~D>G*58No({JUl0;iWYvdkFv<=`4i|}rg3O>NU!pEXVlm}w9 zri#Dcfj)6&Ow@JN*IFDet1;fti3wT!yn=J4C}cR4nc_~Fy^;6w4in7V`g+rIszJz? zWQn0YVHGZ`;Wj1MdY|lvrw}lF8C$XRxLrPw(ckd(A)P44xUk*Y3Xa`j@u(+#-feh^ zEp%+W3ABUu{Im0&Ym^P5JYbRGgiHtD%02FH0B+^m6fqkos?RgIFq5LBdip*({e3H- zI@U9YXEi=rb}&UEYI7J;%)1%P7SF~RqOPh1L8E(sofS>bKy0I741gop5;)&<*T1%% z?G8%pM(khHtcRd3V;!>ajA^CIHkCtU z_Q;bphz3EuEA{v~Z3sE0C=IX7LAh^=cPa6F8WZt*z1KuIF&tt^#Vjh`Z89DJgMd`FYKoqv7pb361z;XjE#K;XZxEdS@qdH zYpvGVgw_Kty*mUadE+^GwI+dQo!Itm38huT@4p!+n%S(2SQvom-vDi@9Y}MFJYc>D zqj#X)a6_H~%N7FoL4y!`4Cn3bOC71{#wE?e%h_dGuvly(hQwOqM@>zyDPA!=pP^pT z?eZXU6MMgeT6foA-tNlQD7Y!x|NN;a*8Sg45PzTh{#EnRKRrSGt3dy0)&Jix+5M{| z{in#|uaWd`KmFTJ{~8DV2MX3dN63Hs>3=>}{5P!s_u}E7AI<(XF7u{Qdp?pSMREYC%X%hl6f%27Qz3xBWNVtvo#J zoNe46UQ934S#;ju!w%#a3x0BDB%5+bS4nD<+~=B2eS}zkfTT8|XWbq9q_D!TvqMt7 z0hW$8Y>7eBeS7fr)3fQ~;G$OtFc`D;BtNSw?4J((K3Gp~a6F5bQ#SAbo%U8z+! zD@V)f1@>slCN1f=?^aXq1`&xg2Nb7dfR)?>XI?{!#6e*QL3CBkM!R+CZyl*PWw6u2 zb*%fz@Y)BC&t)DTg{9t>(q3r5e`HryvBTW*A}ufIm7Q=$#Mr})%SV)78%mEWFUa-) z_l<+gM!%O?PziZeeGyi^ntauY13XySZ8~0m#F3N_oE!tpu6CY8Y8pQ3R zIIrUmLm~tfz&QhubvF+0a(T@AJ=ySHW4@+L+j_35(Ib$w1KC0nUHzt8$EzP_Fg6LI>+-BL_6N6LNC>BXv)5lZwarRr;D}fs1#C#8`7g~I@Y-sO6hR1fVQxzU`+tY zT=i`1J3+u>tnL55f+y#=blu^c7`K%uoRv93tYL8VL}-8n!w|N zmhnJ!(7OR9(jM@SL#VK={ju?7Vc+xch>YkO3#%`v4kB6j_E9 zdm0az@z-nObU}@<^5FJnB6d*uA7w zB+@S$@?Ss}^hNAwS7INTjD2+Adu38bs)IpAuygn9Ed_G0XccsKvwyLN&emYPBm(qh zl4|G|ANoqk&pmX!t;{w5(2V28)D@w-53E+`qcMZ|jJ^Zi>sJe6dLCY8pXmgdz>= z$aFJHhr`VLBv%xLJz}NLdo?#aShmw79zEVA$$5th=i{6}{6@j3PhOBf?7}R693fo^ zSRpU#tE+vvo*g~QD3Bo2jkos^E^p+NE6fT$!#pd0rji>HdX&ZVXKGE3Z93 zV#5Xkt79C((HAjJZ&RpI{^Qm|Z$!KIf>EIFaYA2Ggud_di`m>gd>yUab?rQCrLC>4 zEIfYpftyB#?u$*hLB~q>a4(M&oD&Xh%RB<)Nk?1k44%5@(%{zVrNS#}=zKE`CPc$6 zlzV0r^;JnIunr#f`VeD9f=fs2_J$4h4NxDj}d54Rs@AlozT|ZUO!f^c!@8)Yb*mcJa#rB8~1E-dvq*lw3vaJ4i2qw&2wIeG& zw4~AJf*^=3gGMk9g=!y!Sw5n_9(~MN|E7zp8Jh?tt0Bs_Xm!^ofHy`D+kwO>UaHGt z%$sc@YHOY>S@d(vnQwMZXe7!|xHdN850>xz9b@JughzbwI}zG83(T$7n5bV(-__)x z+h^}EV||^@bCX`+Itxj$A9w?5!bx=30;Zi{;}g0zp`;7~ixuF49Tn0ONR7C?GL=RQ zeHKL0-mVlmBGqz)ddn+*gRz0wtK&0^eR)wfQNrZPMK2{4GbX5}HP_F|TgtF<#51e) zxqEq=BLZba;gqZzXrbI5FL_cN?24Y&3>-6G<2;w*~2JFCJSLDMTtNG`nLOA`*qdE}msP|@CyWq$h-l_kK@KqxHt!zTy-`haSq@$iqXiShz9w`GN>0qN$pL{W>uTshxy0e zQ%-+xI;*W19YW74+sDc~F**qzRklS^Py!K3Ahf$nvvj;+F<29B>#~qD8fMMP=a(b9 z=KLbbXiuTUzbo%4t?trMlO|HcIxkR%$~P@4lQDG2TwEIC;U}oieya7Q-t499dwa5+ zuLD%?EW7If31i0MBF6WOqf8?lb^x1U%#vp29|nADIP1?*u5q~%fl}X3r+hb8w4~T( zf(b{s%qS`Qgwpm&W?rt^r3$&cNPXNqiARK3oGp^SDF#n+wQ9@T`Q+8a;~e~MG)a@J zi2K3Y=Va+sG&wTt_<4peT46$&DZR&A(bfI&ybWmJ#5td(qxs{hi9QR~HagfEBGx?9 zE&49?1O8TfO;BBQyB`cO;2x$3Fk4S*nk_nC{z#B7H@jH#4ergEi`~a?Uie}7edUU+ zRJrvDKcwUFV)sK|&_H}j@l0)r&lGI0AUP@mKiLxD{#zbfpt)JHX9%gDCR#<1kpqmS za$7JcQ#?r8(GWeU=v=?vU1$`YG6YvjQ1ZTm!1t2G&wf>yc`y*&G}H21e*Q4JP-2YE zW@;JqA4W&I5Y~_@ZE>`>K}BP*Uy`V{xf83RJ(BKv$6<%EGCT>o8y<0=7V&aBP=COE zqP9er(~16JHV5snO zY*y09b`%(u65RgjUA z3V+5e$je0-D4RLOTRvYrXeAc3Kv+VR+JP5{8Se#QXP!Vy{uvoVavA>Z-R2So7r8H9 zO-1W7cl)21XKzFIeyQf0OH#Y*Y_RtU{aZbx66Ixh{Qd7d$l6pID0(w6_RsB3=%26Q zXInDXJZW``djKc=iD~vF8^D9^ix+a0>dpVfWmEZ6-8SNIsV7t${mF2|vQ&PUFIi-m zDg4fT$0`q?fX0Cb!QUX}+vh%du8&j_S_Dmq_%V?U)lpzei<&Gpk_H$i{ht`6?mZHQ z76TAAiI<<84*2cS3RD$FsF2XQdIbeBB&Hvvz*K`%)TDrMc(ALP`2{@?7F*>h46=8! z@~hwQOT>J=!_j4z;aMG=$8rpQLWK6ENezHQ%!XwhZQ-Ug*Wg@Ik9d{L#&jlLn*g~=}H*) zw?$@N@Y^(>-+{xcy)7l~yI&+MfsigVZ%+B?rj3psiSqd6ss+51Fo@{dM7f}xPA|y{ z#rE%g8?nnjpFE|(8Rq3UPRnZzSeu?Q_EVWiu(gBCXqrGC zel@%ax4wnEDxy41eTS751{<3$)1=KBcOBX~J}1n!rCSF#hv(CcN{k0(l9-Vl{OvbU zg(2N1_ukBewA$kKmi_vzhz@I6@o?MWR!#Hp zCtgMUlWgt4>KWeCW}oj$IWb>J4}4sx-fF*OF5|49f`dq-Ng~`K%mUcO^f8`U<-K7>qY>1Lg!(5}2ouzDp*M7D0ds^9C6Omb`hwCtwh9MgFaz&B!R&DHFG+d#!A; z@twV`8AJI>^7(#(Qxw@uBwu(q^4PmV&NHna#KNL%)^z)_;3si1W&xd1$0=(9(eJA5 zYe#Me>*(_n9^Iu1NEv1N!17RfcG_K_{VSJc8vqNgKo?lbpxdxu{duPG;INxUi*Ae1 zB^K!PBDC9Ec6KhISfM|&5FF=jx22TFgj=VU`a(g?E2sL{{FwwkQxsbAYrA4qzGu%z zmt6=`YVWpYf$|3;wMuTuBRAva`Ny?9_&BOm)_1elmkc`{45!rbVS0s*+nrB#@2@U) z@`8Ljl71+DEkuIV@J)Wf9h|K!!7(;KTNl$ffw5=t`3v>A$&b!0fsxEb3mK}og5bTL|05QB_~T&9U!X~Ifw94@BM z-|1#fQbLMlzS=Her-7c}X|SH^KL0B2z@zr=`48Ku&d0UKkJow+C7J7<$nYh8E~aMU#%0&{0~T`_g;j}5!0Zk1_sB(dRV`Q#S61GB!`uU`Wr z38}rek>&?(G*HOi7Hy5j^g38{=4!iR!4q}~&(0%`SPTi_h}PNWcE`TPf|fM}c3K)) zCaH7Z4`-XZjNsmd%Hn7a7^^7h3Y!O4>0N2p*$UlV`+uF1FlXem!weD->P_n9^1EcS zbV#=d$wXu(&zpjc;u5F|3rBT==#Yu1N%ns3RQ!^Babc21fHviIrgk4LZhQWo8@efl z7B65+a941b-F(5gXa9&ca{9^@83!+AB&W4K6Mdf| zSZ`}NAmVW|!NJtJ#|MUn8zJ^_BqaXH(%v+_wL;=tgOdsNn@6z_dM0B@f%qJIQEy~- z3|MX9gLkE<>h5^W2Klhi_&pQN`)B-aZ1iob92&pR7JZk4#_yhMf*R2HeGMYWJ&Y01 zbtbpC|JC={Bv#LINZIHpRL4)iefcwDn044GJ>Q8uo$GdcxcB$T59pGRO_>4B9X&_i zDVW};w!qEj$?hTcdKO3(&PMxyO{KQr8iuNlPi}08UnaII=G)#d5Mqg= z(7wqJUWsbIMHgvup(NPii>OwlJGHgN8~T6ko%uVI>mSE4W62Unjj}IM)YI zCI(+y*_Sl7BqniiEXgP)M@WPjeC=c`jYA>3vL%d6CPJfZVQk+=r!LItoWI~Z^TTt^ zbv^I*bKmzob6>Cf{yg*fbZ0+-tmVu;(z#m)(O}L*LSE75*+^ZdDQm?tC$t#l7|i(;N0Qq zea@S}5+P452p_SuL#u8`g>>t0p6W+4|GEsD$|ni$(Phna0EN5hJre;GhN&uPD@B_# zB=3wS0PI%KW(i(a+4IOF*?@WYxo@7rJIjup#lakzc(7L(SRAC+H2Qcx0D9BCbS10+ z=$hYT6oDL{HXpsi*D$RMI}O*z>E%UDu~>D}7dY?&9d@X{{ug2Mv^GDv-I{g<{x5@) zKHW%%XiK9bcXFWG_*Ysv0r0-#AC^kKpyi7;i8tlgX$8pqg`&BB!?$rwNqGdE9%+WA zdu~VO#_sx?j8Q~3@2k*vJmhD`S?pMz=VZz=8Uu^CAx&4jNcECy!85Ii;C>X-hax7$ z@gZ(;=_?N7!d`8PA7dOTcpX)SWFA!!>)r^@_Yb%dgeZa8ncRhp0&tAQg7kkII_a!OB!A&|19w7{nsCl0@Rau1%R5EMz! zM@Uq4X~hs&0DiBSG4RYwd9FSiGI8>vaK}9NWH7{8m1X2RzdMyhj^G%{K2V{I3s@(D zfOQQfHsNlOCcVZ?p3vOQc5w~EkOcl@`Ja}xu#o@`;CfE}B9(jbegQcLK!V-b>L0_Cv zz#>!_e6_^>suRBGM$+@Zh4rcdlLUn7B)To5ObNx>bi3T`d}{_V;!y3vONqm$F~i)f zHu?=k+jEhr^_s$V#361Y@9b;1Nsou7BTKv!Rw!y@>E{Rqx3~1lvcZ0xN`{|W^Zm1P zeVGy0E*ZUUsMt)wO;K!*MT@?Am-w~D(*l-xO1VNH$Cnf5-lGJG+=5eF`UYz*>kQ4u zS(yoK_@zl(L}HybUep(>yvA$Ag|EDkMQbt{+^ew~!L@khr|^U0qi!0M#9GIkIT9NZ z5~VI{K|elNph$)DI;;fN8uG}>40{(M%mk7A7*LTKv{=x+UBf*A5;x;fhg5?JAjPX) zi;Zp*3O@JO25<4m6Yk?BD)`jqh|KN-^>;kGWH%Y86gkM!w#5Wm0}5-gvy`$KeW~6| zkSs(U{h-OWl411vHGB+Kk~T4q;CiW@Gh}4N=`nAz!ux)!@EUmrR$m(+qm36YJ&{Nr z9Q5u)!vU9n zyS#<81I>mB86YHrsxEJ!f+|M$m<2CE1OUcc`od;b?h zjI*fq$q1A6p2v@5QDupP&{F%ik0Pa>5O>10CSLol>Z*kG2XPi_68X2Na||T+b*$M*NOc<@Ul0ATBLh zU1CzJU{X1DK3q<$G2cS3xr(v5x*0usmo*s$4dp)I2c{5GjdI(>=_$$fVbolo?(!3{ zbUp@6y8elrIl9s>&K$M5C$2m6l74Pnc>{EdCGe&`vPH{Hm)~_ZwmQs7>}Gj^sUp6h z!3;TF7=8q-!MrXN#s2tt!{~XRnC_FdTkespO>FRcqG#h*OK}U*QQ*InjB|Ki{`cPHSP)v?g7Ry33Y%-Xir4hBu8!9JksEQ3>%{$y znV((X#9*8auGd`f23T|sdqz_cU;M8vdlHSEbwcSiCP#)WG$YZo{XhZHXG)d177=> zV&rl*OL1FCJeM-gV7K>V9Nn!3bs)yfCIq;ndw_eFYwxlX$e#KCRVVO6{{Bk8)QB7v z;UZYJYg*O2&Fgve>s9Cu=pi_X(!Ie+i!3e5(oA6S_N|cU;5WV)8)z2_l%T>nJ{M3q zz}D>iY@~k{VP;9jylGiZqrTdDwqao@mEGq~$i5JgWB#r!PW}s5NM;I0?i~r+;eMTN zl0{4o6W__AYD#tA8r0GCD2i0qEm^xV6D0meGoo*lCAf=xdb&e_Z7}IQ#dxbQ?`y%T zaRTLJslx%e_(sR$Yq+5@8OkDyqifbO@3pIXi5z{W!k9lvwJF8qhn)~snkW&$vQ~lg z%pZa z{n&L2x&Y*q`##muGspokz@L{e`|%b1IR2!dnW^!9gZ_Ke1l-8fn~?Ow>Pfsy^bX6#I=v|?I#*cDs2eHZUT30nRBNqkogBpmkK)AsLE Wx~VZE)6O{@z}p14-5b4jKK&2NA8yeA literal 0 HcmV?d00001