From 58002ab85d992c7ac44d8bb4d135246b67aa5cc7 Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Wed, 26 Oct 2022 10:03:04 +0200 Subject: [PATCH] sw content controls: enable data binding for date The document had a 2022 date in document.xml, but had a 2012 date in data binding. Writer used to show 2022, while Word picks 2012. Data binding for dates were disabled in commit de90c192cb8f1f03a4028493d8bfe9a127a76b2a (sw content controls, plain text: enable DOCX filter with data binding, 2022-09-19), because the formatting of those date timestamps were missing, so it was better to just not update them from data binding, temporarily. Fix the problem by adding a new read-only DateString property on SwXContentControl, this way the import filter can set not only the timestamp but the formatted date as well. This shares the SwContentControl::GetDateString() code with the UI, which already had the need in the past to turn a timestamp into a date string, based on a provided language and date format. Change-Id: I842a9483a675f895129a9854caec347be6b6b84e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/141859 Reviewed-by: Miklos Vajna Tested-by: Jenkins --- offapi/com/sun/star/text/ContentControl.idl | 10 ++++++-- sw/inc/unoprnms.hxx | 1 + sw/source/core/txtnode/attrcontentcontrol.cxx | 11 ++++++--- sw/source/core/unocore/unocontentcontrol.cxx | 7 ++++++ sw/source/core/unocore/unomap1.cxx | 1 + .../dmapper/DomainMapper_Impl.cxx | 23 ++++++++++++++++++ .../content-control-date-data-binding.docx | Bin 0 -> 33834 bytes .../source/dmapper/DomainMapper_Impl.cxx | 18 ++++++++++++-- 8 files changed, 64 insertions(+), 7 deletions(-) create mode 100644 writerfilter/qa/cppunittests/dmapper/data/content-control-date-data-binding.docx diff --git a/offapi/com/sun/star/text/ContentControl.idl b/offapi/com/sun/star/text/ContentControl.idl index 8f390665c2b3..ae8a0e1a9396 100644 --- a/offapi/com/sun/star/text/ContentControl.idl +++ b/offapi/com/sun/star/text/ContentControl.idl @@ -100,17 +100,23 @@ service ContentControl */ [optional, property] boolean ComboBox; - /** The alias: just remembered. + /** The alias: kind of a human-readable title / description, show up on the UI. @since LibreOffice 7.5 */ [optional, property] string Alias; - /** The tag: just remembered. + /** The tag: similar to Alias, but is meant to be machine-readable. @since LibreOffice 7.5 */ [optional, property] string Tag; + + /** The formatted date string, based on DateFormat, DateLanguage and CurrentDate. + + @since LibreOffice 7.5 + */ + [optional, property, readonly] string DateString; }; diff --git a/sw/inc/unoprnms.hxx b/sw/inc/unoprnms.hxx index 0a21fd182690..61cdcbb05938 100644 --- a/sw/inc/unoprnms.hxx +++ b/sw/inc/unoprnms.hxx @@ -892,6 +892,7 @@ #define UNO_NAME_COLOR "Color" #define UNO_NAME_ALIAS "Alias" #define UNO_NAME_TAG "Tag" +#define UNO_NAME_DATE_STRING "DateString" #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/core/txtnode/attrcontentcontrol.cxx b/sw/source/core/txtnode/attrcontentcontrol.cxx index 587d2f53ed74..fe530f8b9128 100644 --- a/sw/source/core/txtnode/attrcontentcontrol.cxx +++ b/sw/source/core/txtnode/attrcontentcontrol.cxx @@ -240,9 +240,14 @@ OUString SwContentControl::GetDateString() const const Color* pColor = nullptr; OUString aFormatted; - if (!m_oSelectedDate) + double fSelectedDate = 0; + if (m_oSelectedDate) { - return OUString(); + fSelectedDate = *m_oSelectedDate; + } + else + { + fSelectedDate = GetCurrentDateValue(); } if (nFormat == NUMBERFORMAT_ENTRY_NOT_FOUND) @@ -250,7 +255,7 @@ OUString SwContentControl::GetDateString() const return OUString(); } - pNumberFormatter->GetOutputString(*m_oSelectedDate, nFormat, aFormatted, &pColor, false); + pNumberFormatter->GetOutputString(fSelectedDate, nFormat, aFormatted, &pColor, false); return aFormatted; } diff --git a/sw/source/core/unocore/unocontentcontrol.cxx b/sw/source/core/unocore/unocontentcontrol.cxx index a0d7d96099cc..189cdb9ba316 100644 --- a/sw/source/core/unocore/unocontentcontrol.cxx +++ b/sw/source/core/unocore/unocontentcontrol.cxx @@ -1168,6 +1168,13 @@ uno::Any SAL_CALL SwXContentControl::getPropertyValue(const OUString& rPropertyN aRet <<= m_pImpl->m_pContentControl->GetTag(); } } + else if (rPropertyName == UNO_NAME_DATE_STRING) + { + if (!m_pImpl->m_bIsDescriptor) + { + aRet <<= m_pImpl->m_pContentControl->GetDateString(); + } + } else { throw beans::UnknownPropertyException(); diff --git a/sw/source/core/unocore/unomap1.cxx b/sw/source/core/unocore/unomap1.cxx index 55c1d2731de9..a860f2900754 100644 --- a/sw/source/core/unocore/unomap1.cxx +++ b/sw/source/core/unocore/unomap1.cxx @@ -1011,6 +1011,7 @@ o3tl::span SwUnoPropertyMapProvider::GetContentCo { u"" UNO_NAME_COLOR, 0, cppu::UnoType::get(), PROPERTY_NONE, 0 }, { u"" UNO_NAME_ALIAS, 0, cppu::UnoType::get(), PROPERTY_NONE, 0 }, { u"" UNO_NAME_TAG, 0, cppu::UnoType::get(), PROPERTY_NONE, 0 }, + { u"" UNO_NAME_DATE_STRING, 0, cppu::UnoType::get(), PropertyAttribute::READONLY, 0 }, }; return aContentControlMap_Impl; diff --git a/writerfilter/qa/cppunittests/dmapper/DomainMapper_Impl.cxx b/writerfilter/qa/cppunittests/dmapper/DomainMapper_Impl.cxx index 16039f98370a..8da9b65f6e9c 100644 --- a/writerfilter/qa/cppunittests/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/qa/cppunittests/dmapper/DomainMapper_Impl.cxx @@ -318,6 +318,29 @@ CPPUNIT_TEST_FIXTURE(Test, testClearingBreak) // SwLineBreakClear::ALL CPPUNIT_ASSERT_EQUAL(static_cast(3), eClear); } + +CPPUNIT_TEST_FIXTURE(Test, testContentControlDateDataBinding) +{ + // Given a document with date content control and data binding, data binding date is 2012, + // in-document date is 2022: + OUString aURL + = m_directories.getURLFromSrc(DATA_DIRECTORY) + "content-control-date-data-binding.docx"; + + // When loading that file: + getComponent() = loadFromDesktop(aURL); + + // Then make sure that the date is from the data binding, not from document.xml: + uno::Reference xTextDocument(getComponent(), uno::UNO_QUERY); + uno::Reference xText = xTextDocument->getText(); + uno::Reference xParaEnumAccess(xText, uno::UNO_QUERY); + uno::Reference xParagraphs = xParaEnumAccess->createEnumeration(); + uno::Reference xParagraph(xParagraphs->nextElement(), uno::UNO_QUERY); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 4/26/2012 + // - Actual : 4/26/2022 + // i.e. the date was from document.xml, which is considered outdated. + CPPUNIT_ASSERT_EQUAL(OUString("4/26/2012"), xParagraph->getString()); +} } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerfilter/qa/cppunittests/dmapper/data/content-control-date-data-binding.docx b/writerfilter/qa/cppunittests/dmapper/data/content-control-date-data-binding.docx new file mode 100644 index 0000000000000000000000000000000000000000..9ad644ef642c102e3723a2a62e9499a0436b9613 GIT binary patch literal 33834 zcmeFYb9AN6x-S~r9h)87wr$(CZKI=(ZQHhOTOFsVZLkfQ(^*fW84ifoKcc+qsz9x#+8SI+!}^ z(s|h05Eg)eP~-stI{i=iKbZnUsj~Kq0!U#u67P`KwPQO?kRb|L_<6YbD1r{#Riook zA9ZfuZ69v1xbILbBDPB?e@e`F?L6I0U0Rf=Kh2o6BF%&8M@1VEGu?8jjL=Kp*?v;` zlQWSXQ=0~dE7<@IFJC@Zp8G5Unc-g5qf!@~bSIao@1dgS1J9DXM#v%aj}+S^f0m~b z(vv5(DnZKcQI@I+Pn8hlt6590Kk|NclSLXRnh>)Rfh+Z!I|kZf8GmVi(~5NFcqVG&kG>~({U z$m&npCO{>XB%l_93~Z_on3bMgLF@xE1d}K4SHAgi+{Po=}Y=Aes! z)=Racb$S5mzrH|$6#kp!!2f~W`T%H=0|*9KfaK73GPQB0r~B*ke7@KhW^m>b zcPS4}-dd)C_^!2wZEG~7g65cZMvytY_)MLpo&5?u&yVDMo*2f;f`i5|K~g?q zGv>NNozSr!m5u~lNoeKxA5%DwF_j%XqrcTbGtx^oG~q4HZv>i0HQ4l55OmqG{b0;) z)+Qs-#vl#t*XfL?Y$QjVVy!42X|Qb=X34UD7*)Zr?O7HqKZ<8ZtIu#+~7 zsfBHn&5nYaLm?QtQpVE3EkbSP)R*j{ zbSVMN3-5@9B4m4n9mCufenv_##6mhmUX=?xuL#$L8Nruef}04YTPt8c{70g7b_fzV zInbWQ>g5DG?^iTONw${b-u@c{SLW_EeWvF~613-wwix(X!xwnuiVqq4qd1vkMdANgTD=j+B(! zjDA@$hzQ+~5e%zJL~MV&-868&P3(rzAX2?GuWA>I=0WmTy|4p-_g``z2w)+~iEF9q zM#QX?fC2$^04zjg0E+*{@V}y0RRtOdG-*S__^-#+0~QDv>njuQ_A#q6J`O&vbL~r_|el`*r zc%VQ@`&>vqspJXX#biMtCK`KYY$!U+fhk^${Bw;K)vn_pND(OwySQ}( zX_bCcU6!105F-)MaMVbmHf9>{TPF~CryBF{vgKSrEvz+$ZSgHZo@gPCG7{k)rb5ew zaY#R_w8LnqAfnJ@1(n7EnbYUqRYrCT0vXE%-R#loCzV{bKsLMW5Ya(y_8mdGNI&Y} zCKi|;T9Ivk1>wyjjYdc-ap*VBkPaqiqkmFcWgLyHI=)HX+WH9MNkn4clgEv+y$c87pl9RZF;^R!fcOVLi*sL{Ky&5D z?wJ9*K&zP$d8eepT9Z|UOewM%rCDXd+EoI2=+fb$klrWzP@px>^W>4Fj28rxi&)ES z9*p*ZeKV@vW+csAP|JoC;+jdtoH}4jv#{B!T-&LHlr-8@;GEe8F(GrGK*uMCNs^Tl zOqw+Xl|2?QMQ-!k)fx_##InMyg~X5bal*cK9{Qb25~xzt$&4j%HLzx^LPJ~p^~1Zf zk1;%VAEBz-7$#rfKxaA$5&ay8oM1RzEjF5@)UWHrFxm{>J%`?E2N|`X)B9|?H}IP1 zA@T1(o)0DIP@<9Vqo1t|)h(IH6C$f1RCp9<7)OdfE*jU zSj?_XjA*itjksLHoIT!G)$^}sEHX>5*Tv(GIl_*yXP(y^x(>eZT-^l2X``8Izu%3+ zO@qFBwb1Y?%BJ1fZXYTo7o?LB6$O@#RxiTxF2?+J6O!6f7FepOCuGDxWnMZ*jCJC} zs}7?V-wO;?mjO1lmkDI+;Q}}RQA#;?pd__Bm z0Hclr@-K!5`Uk_C+L_qdyO=uvrLLw_0Zh$+)P-@z57o7a0>23lHYtcrB5D`7=m#XM z$cFqwIw4v0%lD@jXLSsr9Ky6D%6N8m`f-igYOg95UWhA-i`W?p(T_P?r*e0!m&XS? zCsE?l^chWPEt4Y(+;%qg9a)P);S6x|wv=Pqi4H?~ z;w>JuCPt{ZoLvr^5r2Ugw=eG>X~33t1i|gkW+br>R#|^Vy6~>J=#60Ul$BBc0mSIw z0UO%u{6_{g$t%D!mz92cIPQ7up434k6xKr6~W(PL(B@A6;p zQTbQ+B*Og-ADsUHpG1nz6y%}td|pYP%gZSmclFj@6EwWGdJq-41xq2~8cbB7E2sO1 z(T}4rkrhSNIT+O0@gLewouBWP%O+$2%6o0GNW$w?^EBk%r!MHDsaNeqZdBmR2Kg?^ z5KLhWs4=7PX~a2XmJ6SjpfTFf&^KjV3esL2oMNEUXeU(t5*L@KQ*^0IT}xg;XBk{~ zG*tU>5!p1La7RUKRKK8QA%yrye?dLwA{mNN(H&h8v-eqzr&u$OgsG1KCvU_0Cf@0> zB)1_ZBh*H6j8Sb_yKoU45`o(9+6lvntZl#E*&y+(ON z1P*Fbyr(lW{7@+aKJi`2%8aJH`|@~rR4*6CD;w8(ZgJ8kV>;T!~N5&_AmG> z=2*!Qk2i#8g9ztRn=BPQjP*)1@MWSaCbbuiC{MDoE(H>`kws<6Ec_`LA&VLkBfz=tttKA zpNxM=pd$@w`$IOQ9*i@8LXX{M)6p8+Ax%`tSo{q;mSXRSL&F zcnDGo$~Y=Tpl$d|ERm&Kgj3%uOh2Q8Mkh2$hbC-(G~2l8>}r=vvk|#CVGxb*ty`O} z1uIx1B%*w@CF$duOKCvDTJx1466os24OOfcZ83X$zp?$c{KJZq*az^B`ocYWI@CpP3W{@1y{=`n6CkUZh+mr;Oz%pJ@v z*!}Z55dY>L+8*@L-2?FF0R*5qPX}#z8wk(ghOk_%Hz$Oiqzn5564gZbr#=Poate2f zE%NBHlFy16D3XuD02-RJe6x%wTzVI^l;t|X{g3SnB^3&(s-iO@9?BMR(m5gn9rR^> z(&Ii%6MPx6!O1y0{hubTS`^K$@=~8>;|`UoKWqXb-pVda)gfIGT4R5L>X?CD8H#nv zhfcP(m-Soj)TY~Nn5Qmp2(>5fC3PuMaO}Jotwxf|za8(?=O4_Ll{W>I zjO`T`8`$F z!NW$`-OQp8XGV*#F$#5tGe%KJ*w!e7hi`Er7lN06s@6Uh(f+u?De5Mb@O8wPjj%3! zN~LI?Zi$8CJZ-~OU8a{)tsiC8pZU%_W29K?3F8Z6H;G+fR~f^c&%|+SZ0@t+-<1@Iy{Ix$LvV=??t4m*saA25&9cekY2xi_ZwDSipp14Y3G-_uiwlIW&n0B1q_~cg zJ+_`d32A0Aw8DA5Nt| z)d9bKOX7vRiEN_Bo*_D;ak5bbo@Amdr=#VM)y;9R3ioB8GtVaHB++ttCW~!=!{`eJ zA3Ivpti#y(s`i|4N8{>hUoY>=vk^q$0G|w~?5{65(R($Hm*lTA0glbT>pZg7q7F-d<8BX-TiE}US>`tO&d!ETp7j6fD-|V8+6^!ui9V&g zBK~+9k_=TqL)JiTHroCJ8smrpyJ@^Gr}Wu_;3H0tfR1&p%B&FWpknj6jIbC z?G|5PJ?NKljJGA9(Y$sAU1(X++3qq|PTcRXvDGO9Q;92aN3b{t^Nf1i=pu`^xv3|P z<*y-*4%CuNiC|0~9pn94vl|hV8i*<1YEIjl-5BxDr|>`}L^l@ym=?9pz-5{<_?d!r z!w0#-^-Q3`J?k3Vn$%Db9#O13{{?x&C{kR;{L7XMAhG)3a+TJ5?=sO35Q8$gu|` z*<+aMMq{ME=^zq&j)^x-MD?CtZDgTwhHhJIkdgge&M(bi7!|qZ5fJF>0kn{DURfSa z!i~~bFl9Wh-TY#q2M#Owk7-u^I{)I0nkea1U|@AK8z67kALOmYDgsP#vdcqB261@J zrcGFT;e?z)LAQiW_dzw1)6<~iN`+LljCi65Gwfgzb`(WuDD$J zeLgPewr`pjT8qQ2Wb5S{O*J~kB{j`I1W^JpTo!6{)hqIVg;?u?al6umt>;EU^YI;v z98d$%P=$|KSh?jeFl8n_=cF~amNyu116nNk9fFN9@)o>$M*Dr&R9yrk%NcFI#x=Fm z!OfSWfGOHiz-LaxvqNPMCQK)zy{qRwZ?!28Cy_)Khb@@e9oy@yc$so?Mh@?+$2Qs2 z=UL)rtKeU6x}t`zL-ZN=-O05l0v&7}WJMri;MCl#^HL<3JUWaP4zY%-CH09dvppR+ zTmnX*_hB!65t~4X5`)e!!fLd&dWaSNbY(+yQ4Mo;ZaN=pz{2bbE~h-K0F~=Rc6E9% zoj<3sNPq9rS=GF#CYAeyElVB#K<WD=n3TrTWB`d?_D`|P8m_JcsW`fNL zN696kp413DT>T)yQ_B{%BEat;Rt>f8qe{7>*{j-0Tid{Vr@jTY@^5fjGAu+NA$(9P8?NzeV*u&C#DV)_ikHV$Eqz>y^1rtv;Mu^Q#P zJa-U|F%ty(W4c^7g>$e*0uZfb-@^!ZERmI>)=3ouZfJQc8?H0|u;%*$M1=mG*KDf& zB2WOrkQKmhWd9}%|2M(Us>J^a`cb%N*!jTFZi6Sdg%ZzbUNj-wDh;0$e&sN*SZJzq zTv~{G=8mRfOg@#E)gsM#k-yMLa)Orn8tPKM82h<94Pzxbg;sQfj&lq2OvS~cKPga0 z<<>ROHl!UW+((slql37D#|{j&?j1zmwmU$e>9Pj<;r$dO0!HFzgo2Y2fjA2}k~keJ=1< zq7M&-E~X;9h52F-YV-j!FzZ{)=%vHl#TVmsO)W_v{ad{6K=#5=aq9gOdHx0X7% zOhB=(^IL0=&~v6Hh8WH91(59DiK>};$+ig4E|2j4;*rAX$MH_Uh77_EvHog=80FhjG?ClZOE#NW?HVXD_;27j&9!w{Sx98(qUcM9w zDaxXy{oUVU7J}AQbXnKb!*}#BmLVCc8A&}ew$OoO>D%@3(VFQ@9H~?%I|CFnUPPC= zqFDZ2lg7l6lr@#WLl~3dNoPr;UkMkT6+PaTncidDK-9gd;G)67hPw^|v!_X`KM~kS zZ&Ao${7EX4)Tg%;9LrA(_Kw=mdy`H^PpoZ>D=t@&vYQ9%GPZS`6U zx|UuduO0PcfV=iE&YI)E9-j+@tK$#|MpT4tFsuZ}p$xQM?3>glyE+z2R=~pTWH%P@U57my|e}=Fnlxy$La#|$wXZ)6P`4+WKa7b#!khxi1&0$t^tr) zTNu~x1w*PEPe~eu=Aa&`M|o{g9GBt1sGj|Z!B`Rt$-Dxz^$KZGr?T}_KN4y+KfB@r zhSP1E9+IF|5JDO6Pmrg@!D1rL{)*7+=iDq;_%!vV_EI5-yU3Ke?HgAJTILjtnj4gi z=d81M|9sd{rZqRrcAVX-Ss`ok*w`(?_!w+*jr?ZCZ<~r;j8<%VW|_85+|JBN@KFQJ z<}vWYIgLzKI-}FZyCEm*bWSnI9>5zRBQo7nkwS$8^bbtCm*!WmHCVJy4GiqVC!2C1 zVX%80Fn$*$7HwmC7ET1BVwrtz&h#uV&^-2dX{?HM^|7i@w*1YpenRB8Y$HAcP%0zN zZ=SuO<=Mw0uOXI5qbE>oHJR8X5kg0tBR&PqNnSbUE(a`74c8zy|JXAM$ z#3Iu^fTEUs=eIr@r8f3mk=sjqSnreF$7G)Vf$>az1!>353+GU}9Qj@CRrRv>w=iSn zoA~#^M>z$a&ebK@stXfxeB}wTk2s)5QhuwJD?62$({7=awhAXgq{0H65iZJdn*air zx@BJUaA@~6q8Oz-q}<$kmUyBA`Tot4CpYxAbAo_*y!$TTcqUizUy5{_+ip!p0=a$) z%~kJCDA*2+c(a^}eI1?QzY!V-*EU0@d+i z6Wa@?vQ7FF-+XsSAH>u7$Ac6hzK8?T`=jZoCh!AWVsf>5PF06zi{7nK>8jO83FyMl=`{dop#Z2Bd_XGA*wxv^-d4lb=Ks#8S-P0o z{v8|mpJW<!fq%&D+a#Kd_Kh=cN<-Ylb|M#pw%Qx*i0GhKEb7x3=e6w}-t zeXA@GVPl9a%3itr4wp(Tg*j=Ghg+4*6wjsU-b`}gs%!7^X)Ew#SRrgrNbm}=^pY-h z|HTF$?EWlzjm|JZfV{D-L7_9?GnL#n#uiTj(PiM#no+R@+hP4U>c9OTjf-13Sk+ko z0+a#91u_5y0N+Z%$=<=4-q_yB^smSe;OfEuWKjX9?~^1OzexzVtdsIekT6?ckLQk~ ziBM_N%E`K1A<1t~Gi7FJQwNb1|M56X>ZaU$fjm1n*acT(7cVROCqNC0H@<;17Rth~ zXkpXyw`XIFIdXlR^|*DRA%1qBSS#S3j#N`I0~Df#mOyDAiv2J^WdTMaE`^8psN z-8Xp)eIKSZhtr>J#k3gQJ>VIo=kT_Dj^lWx-3)f(#x9Cdj8vNlzX%h8gy7*V%q>$* zezX4q!g-s8&vz1Ko5{f^o>;ul_5I0USuII^4%-C{@6NCA3g17-!3JIn3wLh$fP4I& zBOBbyz)O$N!90Q1isMxgI8ik*fsCq?y*Vr4lUuVN+Chl#{%1*}$+Y{0qtH$v$`S19 zQH}7NAkWw<^y*eeia(q@%+Yq_6;5+yZ1vf0agNwpTs3JB0-@`fKMGmoikU$P<$Q_qD`4kc2DOnO`)}Z#?P0`M*BP=LjMa28@k9( zdzypawmj2pnv8B7n2^A*vR^Mab^3s#{C8_`+{(8V4B+T~16YJe|H=i14i5jr1pkzM zKtNf_{eL<0-H2=aP(AEXjWuf^qM|?Y&H`-Vu}gWanX;jh$OMfV|8nN#l+3p+`F{AY zJpO(rtN}NBed0=Rmn1g-V_J7v5A9Z_$BPk3V_pJY<9g zAtUzwLe&~^80D#?eZH!tNF7PhUA?M=<(9)Pi`d}6uTyl~`*9DS;eGJ_Wd;3^#lC`E zj_v&~gzD~@_XXo-L=lZBm<6me7P#UL7fpYMCgQNd@wbz;<{mdEUch4MXuZo83v_cuX^+F;O)ARoB! z*T)*ShEzS+tBYr#1!&9PE9!V1xJ`|UQ$jhn_1Gr9BfU2hUJD#g)1?q~7=$@<_MjF$=WMRo>=(`g-*kWiy*BG!Q-S25k_Xih> z!+bS6;Tord@-x_mlXTPZto)CQoeo}i`MRRKn{`%$4e+=Pu6Mv5Nsr;Kr6A8Im*@3n z-j<%*c!#u)4E(WBXCsUg)c=3Z;ZCDQ$kdf#~ zP)3Xc?voahdsB(UL;4YCYvAkJ1NxYp&*g3#4ZXPWE7vbPYm@86!zBOz$T`|%V7=jh zmKnhF4Tu8hzpRMA><6ZQFb^pZMIIrb!~b(>kZgdNp{JFSqg5*#n;xfbk!nz#prE9z zTUe!+n~|87rCFJzmzV~fC_ctG{+pN%krR0b%wknJ&qh z{&FrF367N_g)~@Ztm0rLXXPYmCFLM#Dpygh6k{Avs3%evp9rGSN6&~s0fnl((0T}9 z|NkHvYz2$F_5m%b03C_>Z~OaORsR3lWL84IRR{w>jfDC_rhBu^+g9qvOh&;+q`_`AuW_LH5C^C+6dG;n{I+uG*^ogljBPi=wL(EY7YTm!g0nNJB41 z?O@!PQ03-MYH$BbQ6xT%@Sg!(k??50iuZ3-PcO^M8pD>VY{z_4Pl_xWlX;qKea{xI zea`OfB?>l%m~#eE2b_wQCZU^ey*u+F2m85bg+$nuxZ$LXjE^hk!7>>CNE~B7zRJ!j z*n0Z4<~rWCwux$Izt$dC)HF5}ew+La-9&Xxusp(ETjuv4$)}VXRd)qwk^0}0?{6EE zu;Bk2MobdqtpRtLhHrv>!}Gik-YtJtlTunX3fP<4)KxkjEg@<5yNwuJcFr1hyKqO6 z=RbKXHGeHB{|;QCWMVaugh9p@3}!Nhx3Bemhx+lb1?NK?%!(Q0>+G)%Z^!O1n@t`~ z9?t~>k9JXBxo_QR`}UiXduX`c=1}&J&QQ3l=7{f(yKN@Ms6r1BjKwz_9e9kJQ#@li z9R=r~b1~oH$TX*Y6WmNli&55oXs}?<-m~}`7(sh{)R0@O@bqrdQ*2l36w<1F6k3qc za3=C07u5z-GKR)yy+oKxH-fIHT*iM@*k9ZKXHx2o$q`3{a6n=Y-DV29%Zo?2p8_wZRO|CqLk`!AE~NHjFTp^pl9v& z4Pp|FEXI^c0YObFT|B$0a|8LYrH0?tk2TMiS#=d>Ot%-<)vGA+y;pW{4-bEw7P#;o zIe&XVXdmU|MkX@a<{`qU4>ru)T06yCur=22t@Z=_KMAC2;*}R3XdobI5g;HEz%Kv3 zJ@&s+BhD_KHm1(%mM#{eW@e_wF8>I@XKFiVj-ib1$}hhlpx(r_K_^(J(9#(lR+zBk zth?qgVr#0j;R(2P<@$L;gfK$Q8_y}z4E?V4?l|2wHa}_I^&kFmD|1gQlhjP%pC}SY zD%b&=RNDOPaI>9Oppfj>@KDG?WPO){dT^8b^_IJ$Zs#R#%`c1%)M{~gA_FS{VhegQ$^NyY2>ZV!tAlaE@QUG3LmqU zB0JFsaIM(qCH;)wCC4M8vqbiUGf=}BykQRuR|tm&$BR#;1$jp2&%1xhtax>OH<3Zu z+VT%n>B729=Vr$0v{JxTeGqtfOI@xJ)$Bl($wsy+xC1^M@IDz&T0=}4nHnuA;cc(O zFIjpb@bsF(c5iUVXzn~RH;$&0MwlhduI_TP0RI`dv#^c-9upyiyS2khW_isowl^PL z1>HnEJWGhy$>K1+!!Kqk$bYi?@M`=K`Egh*sR>2j>W3V%&np3?5h={@JS-KZ5Mm#p zpR9)bdPUFv$o%>d*t7Q8fQ5x>I+=%eE#xSeKg`c?xgNh#P>_|wu@vb(OU&=d#Y-|i zJ=k(JrDcQ98?@bgcFL|DjjdfLA^+7vJhL;5n43nOPSAG%8rMq?eTD>ubu2<8TW1td zrb^(4d;b19%2Z7>1=P1;wr^~{AebXi)skW{*lO~{3h$S=-4a5-LTubW7~Xl~nRb#_ zWbN2oAmh^W{MZZ0f|TD{rvS!sm948)rpYr$_nJ+i#S5mHw#Y5 zLgWf4O_xr8`TTp+`S;XC*}8*lHjEJ$dINf9RuWa)rV5nYB_{Za1MAt~jt+$e7m?a1 zG4bC~W`K$qpdw`isDJ<}D12N6KX>PmyIu5fk)LJSI#i1q)&*!U-|AxWRO2YJc@!@$ z)JS}uoWCfa8iNJAtyiz4joNwnQaRMqv;1^uT1|5n@J`2K1l&ucp9V9!A{&GCL+Tg_ zKxMODy*u8JKgWdE`s4CaRqq~+jBt_~X)nExAdeEnxD#QYj?_~W-R23j^uW4PEE ztMvy?+5?Zzt)A$(92bmSuzp&A55a`^TeF>8p56f^bKwUX)-f`ALN1s_(Beo;- z&N;<1xS>uCjwu%`qFyVlSzt1NWS~?#_Yecu#h>+AG5p?GMlruC)qV@UL48$@JPN*5 z@zI_B)V9=lo{S36(t~)~a9yC7ei}V%f)G3I-_z@d2f+Y&BDT9M6d3^gx;av=3j*?U z9$cbyr`vH!4j#ykiyA=3;X}VJaxsxViHP79#7iCM&nRieCA6FW5X=#NbvM{C>r?4i zw~nJTcQt^>1JD06=TETcNfs=Wn>$-?<+m)DbxTjA0lZ7>K5jE>3OU7f&pHGvH?WAvLj*erOS}h(z~2?! zu2G_gNcN!NYWUcamSG%VquSf|irs*XgIFL(YvE$I$K4n?-+0aT_sJ``gV;O=@-q4z zC>VFQupyj&KwlN1@MQ_SAlCmi;eV?v4twJ=<$924Y;DY0SZQ}56WV!N2-x0<1*}o? zY&fWOtylDRc#!-Ml4`KReIl}*+GW%UMM2S z3p|H#kmq>-JDvu-bk5}tKYWTD@b*?VmW++R=flTV_7iACOUH1i37L(8Pbe12}_j=P=;~K)8dI zFfrxLzeqeO3~Ke)LaO0^XVGS1h!V)BKt=(1&+NHW0K=<5B!+;m0DlsCCk_q^G5K+s z5Z|H_K|1E~)Ddl1zAE?OU8+ICfW^WP6f&5Kcj&KEX0M2XEw?!&?S0aVKP%}5oW~lI zJ$@d+Z{b_%V;HR_oedM+Hu_BOO~|=%Y06digA;i*SN4Dm)r9W!hvvO%A>zs0y!1t1 zDye>?ee~MOhUNy2LHtqd2i5@Iis%TaKVdCv@dt1)XDWv z{q&$4JQUGgA2*_EnZ|u}k_P%pd(%kQzPR$yCYnVL51$!?2xj>itNDnN`-6S*Kf4 zQra~+TQ1jYPCe1Pr?IBYZ0U4*l%3t52Ud5}2)uVq4^)yuSc%c^ri8Y4+D>b6mC9Vz@WzXS0qf$(F0O z$yiG+hCznTmXnTD1XEiM6{-s9t1AR1uDuBaoYZP6>?*EN78d97v>ZE17j#21J2oZP zmyWC3GoYfu(ssK4O)3^64_yuf;L2119=v}uzT8cXl>g=CL(E*i6euIo-=Sif_SW?j z;s%#iLZv(6pjRMEH#eLqlK~m4DtY^j3PL@vNz(NAbpQ5O0sU^!=)$>jGrdZfpyK|} za^+h3U+b|Ir0EQp^1xipkcyR`_eSZPaGB;38G`Z0b4+2|${(B>AJ z9uP5UB2m8O@q1e6Jey_=^Fw8uqF^s}(G<#mI|o(W$b9t>s-l$?uyBc1@A%)uaO(iA2Sy^DoQV>V1%9}3vUwJ6CXvMD4-a?T;om@NXbDGD1y$Iv_utzc)P$mwX-BT+1yZ(+qea9$~1?GWs; zTUqygtF}VA;YMg5XHOg5!RH(H4i<4v9@p3pXS3!(JbUZ$Uv`SFP-0IT#1NFleVZ$S z9dbSws)S^%j2OzE-3dy-T&jt_Luonk^1TxRS)&L&FZ@S%uvJDu*_g@mHs>; z@cZ}UniHGAceQ>P11$NH+$(P&vl~y+=+k30&%G8Fx%IZkt#TcQVvcm@Qy*uVVYvDijHnH1w zv*t9y2CrFH*yZxeGc3*?o5!~uWkDmy+_&)A6ObBD&%@&MwcmYPU4anWB?$(5(=)8# z7oMy$JKs9YP~l@MIN)hwc~!n@@ji*x#1u7Ei@K-e_ux1}elb2#^iibpg#hb^F~Klo za-NR;PFW*I^(j8LS{dL>^YGIzZ%;iD!YOkW{R;kIDy7VS%?*wwo1VHW9(Yk~sHOEG zWAgDdCe}5jtr*zR?T|ueNUpg*p`coumR3)vqb{oCp<$YDK%wWnuTjdL#p%CA=J|Al> ze@+RJ9A-0#zWgk(KKkqbb4BXbKrOhtgJU2qdTH*A~wRLIbck z7m#o2ZAc*kDz)$8h;@h;NItPmXwR^`bV;CAn&GII>Cf{*(@P>--wv0wFDD|?Md=;) zM%8tSmjY;hxQMwS^Ct&DrXsJ=+RsN$BUWwLE9!hnV4Yiw}=MM0Jsr;AmX zl+=ncU0as8Z)*pbcKB;nVQj1=TH+^GC2esRR!a(qZT4M0X%~x;%sIcmiGRYj(w$N-dJ zXx+aiB&P~N2pdV-4-D=EKfS>WV|7H3M77nVom4Zwz%5-sjkTYcK5iF2HrAjOTLQR) zkC4yM4uoKP>R9!)6OojHZ}~v{f#P7m?;-(Lg{f<#9mvL!(=h9*FlzqT;)G;GEC^u5 zm~|FZoa74}ATiJdjv_Ag=UuM)Mi{!-&{soq9BN(nVA$e)B19~4XpdD{Y2Pey14Y2+ zIf$FQxMB~7nmNRK0<6hPDruJD<~N2tY|dV%IGAMnOpwntjD4-zO4euTl5c{SghKHB zmt+!kJRr4vg+P(%sx@BGvQeNxA@^}e$3xk+BokqA1W};jiCq$pK=PAFSBX9{+GC;Z zIVOXFb-}-?xY^teZ6)aj9nl7dDPu(sGs)Y{!i+Sc{rZ5OW*F>JE5m_)a%cnyn$BAq z1Q}q*K-hh|O|;y4A_*G7qWd#Pyf+5S)6x=icfJM3j`VBAe?z)Sis(8UzT_l~z3bOOuQlG3?3mllGveSn@Do;4bWPB&r?h*t-wZJRg{#v+OR5Y|fI8ukB3QJAcr)uXaIEXa-B9c22@%m2g(_CU=rp4_-t^noY~L;&2vO zIg7WtRH%#0C;9}YG>(Uf{gy`{&ISK92t}c)WI--8G|<3zT&B9%%>50Sgot`)h}^tj zK|q*P+FeP4QIaTuB%N!!0A$pmd{GxIaf%Qn_$MCm&yFOasBx@%kRJqBM4`tq6Z12O zzZ0@Z6Qhu=b3~bd$jd7jufj6&hjN)RX&0i-hWBLYx~=$>tIv&?EZeGka&%w$oT@YL zEQC(goZ<3MnbH~z0?uBPnSN@WD1lNY;!g|n(uP~EKR=Y3(77(^SV7qm9qQixDLK$G z<|r*y23ZzKr^=XK(+q{xB|w7gjF6k%`6Nj!=j17_3gk7iDWY0b*nJYCLKhd2e*WCteFHq^DWMb9eqsK&x0oAgw4y zDoA5fLP!`_rfZN)EY%@&N#=h^q!?HnTT2wo6O5t#QnNhYM;td6ak?@XQL~FT66HFp zON0`KgQR}>`BYT~<|~15zCUi&ccRg($`MpCGdP(%7gJwRifbZ8!9^KTW5-0MQWCN= znXC}!yl*N+p`q(@#5>-Qr_znDBs31vexic2NyS&@?Z4{Qdpk8xBkGP2S&T-lx9CEv zo<6z928OG5AJq>B+|2Qys5Uw}lv-D5sEPO0sR2KE@%%)RuRh4Mw#~67n~Kb8zF5x3 z#(lrt@(c6YMDON9-oL^bL>!V(3hmSEm*#C}S=%UEkcc(&!jY&tE(rB?Kjw64WyPE?=6D3=lXoU73bWz6(U(V=B|>Zd}#-w0UI zeBcE%N75d!HOgH1I%|>xez+C$cOqH{eO_ph>gOm0nl} z@`^m+Tg4y>(!h-nMTx{N6k#IGzB;9aoyT~JqAf|H$h15pm~pAt>a3D)l%zjGs3U|> zBL0A)CH@p5ne5px(5I>Vg$1?Y0c<|b{TNP?gJZ=Pe+Y+pv>~n?I5{|;W#lSZm*#9m zinLQY+IWj5*2P0OMXB~P#GA8JjCh+3+uc**C#70eANs4A65Q#eJzVd>I?n0GJVJWI;18Ieh&x-Pdj#4V4+dxi3ku$c!f=z z&y5iSr0lZfM!9r|;O?qp(m})7JVjvRwme72fhK;Tq>9Wo2SA9RUtgx7#E)ZnCr)&| zRePgNTV^m0`;KkQ;0rIK4%^}v#(#(~QvYD?EbD)0U~hknRuYW%PlWp+g@+#ddDBC~ z_=2J4d?c%(=5^y@H0Jg2Z1*WMs&t+HeAP((Bkhf|LnGo#Q*Equ$CfoGw0Rkj=M#HNzI$JU3K@~5yR z&qXi;OcuGkZ{3K5Wav~%V3_=NABRLJjm+YFz*BJoYY!uDS-up}uPkG;xAF_cQ~Y1I zFlC-(Gv&^eb->N{oXs;QxN87Epe$HIE4#iTQ>7XrDUi3Kg;NWjDv3>e1Gh{+z$LH! z4S(sxf)&3(ZNl0H&B9ZTw{G6+_K?u$_5D9*xXYK2y;2c@fCd79fB;|rNVxnX&+-qS zRoi*91;vk_`IO({cg|XeMgy-acYRWp$#>bswe*Lze2NVt;U8S2XyhM{x-@iP&_Oy8 z5`|6X?*@?=G<9$Lo5QC01b(kwvSPUfT@j7Ht#~}WxbQ_S)2a`D?_0g^Umqtu+?7!T zyWo*(V(Z5CiVQ!O5`2Bs65!KE-%F#Qkx&rQ(zWg{dng0cQ&JM~mdIwFN5)kFs@;zH z3me70^`}Dv{C)h}b`rzpbr6%@u%wP3XL?Q!-AF-NmXeg4KSB8X1I?CwVbjo){5?e= zN@LU7P^VDp9|_7U#>v%A9@xTy05SV-dOK_p%BoW)cBoCUgFMs?Z}*feCn2k6A!y*W z@^W{JY*_Iv`^Ue+Stf&3K_50Fiss*I zmKStl&5=7!!BLCcXeN~)IBKTwz28@>om$q=)e>x1KP2>bdW%7G3!+W=YDT}Yx(c_~ zNYO{AxqFJ`5cY^x2skf!Z<|FM&2#;Nao`S~DdJS4hxp3M)fb`|*-)4@i#%eUIXFS~-@ z!pPN?zj}K_-lI_lZE{l;K88^O6HtF)5<=k9MQn^l7;9jMLw)Qq3@CYm2PNsY$4of$9TX6_!3pd4-etJl zd!q?( z6$RnV!ndE~ktXnB1^G;KT?y8F9(HSmj=~fw#9x+&toV!z>HiI* zEO=(7sg9+%)*%rd16^kW_KQ<%^sQP2p6FA<0m7ZZSr|;MUR%`JjJVPLu_XvAU;*r! za4R$5_}j(ocBJ>q)JXEH^Qp7JOUSFUx~suUM7-S_7xT0;W_g^%w)OdzyL|)cnUUf(3UE!6mo^ zcMtCF7J|D3m!QGjg1c*Qg1dWg*VAOpHIuOBUi+N;(-%Agp001yCNXlIA$?SIV)#n`1yze4d`6BR7$e^*M7Vr7*B3b$3 z7+EQ#Ci;>Hpz&?6rm6WjTu{N;?ZAvU83ah~@#4nb#+>sm{!|A(r)!3T<%F!aUF3bl zNJO?j8@Q@_ZxTT-5-{eP(8`;D=ile?k9KN7_E?vU*cdMGTRd2Qs@B&7N{%`U&vNR^O+9%dZX@rqWM$nI9{aI_@Us>-$mp`S63~Kip zSdSHADCl<0bzL%`wsGV?m%KLtFNOf9=bc>V^`pRVA$@%?4;2nN?-qW&1hTv}zw4cX zSBBSN<}F14S3#Z|ePFegJBv)3dAg4v99N!X<4}1x@hr@igk<9zEq#O3;S zu)5=qH;)^JXTjvPn1_T}yPQ@8obRNe+RupNFu~7hTJ{M@jmR$}E5-;w0<$fH(C`Pm zT@he-h%5q{22Pxp`6Low#M@YCyz3f{u&Id~PEJj2;z~*mx!;aJob2u5Fp!)W%at*d zrd4e6#UuM{oi$bT4bTo-4BD%Hq{fX9Bczl6BJEWMXmkm5=aM&hWLO(nm7N1_=9hhhL zzK`HOn2795v%ZOe6*p;lj@(+ti*^zhGbzm@R}m?^29v?Q!Y0*?^{@SkQj5XrTRE+d zivEl64z0Eq1@Ld(EePatl(GVod3oL?yoitsPnH1*@FJI@nhUm6>OjpY@?7LNA~`|Y za}Jh=>?5g%;!x3qzW;2^A1QN((qZyps38TB94L}(sKgc&b^s;CxMZEUG+;F(NEKa{ zB>F~D=Jo49a7Fw5eet(^=f`8dP^+6)%M2q&TvK&}YXj`#cbM){uRk&~d%ju~q=s4n zbba<0?!^C+j!&;wWF0DHm^L$9bgyAg#$(8H8#WN;%p+V8K!YmO&D9^jA1+ku%mzS& zE$yax&rj76;=~}X70?TN^ahz6j#^4kdku;_#3~3Co#xdhhQ5NWy^fC*22I|BBgN_# zMI}2H1NWIv#)fQK@2cXu_BOP32ACcJPqO+opJ0JIjjQ`WoDe*Iz*^oXxQ|DVeiO~Q ziLK#o^kFm2f$M8!rHghta(t4x%lZ+4^N4M{(5HNS(BxP45-CAz*b0!ic#|W^?<$ga zJd=&3n1lG-wU&|UYb0`F_h0#hajdaJrP#R>fAmFi7=Ufp;a53t#^z_L7Q2GS{OJ7Y z6v4U#eaPatukU=z69eMXDud*jy*J_Dn>mzhz=kY~UfZFRl#NiX>^K#5zqy$QPtO`c z*;O?tZ}A6%E9FV(hGv~j1N04RBH4hUB|~%4&SeC)36N6tG~S8ICQD}cfLl-nyZ+69 zB>C1V_7O7ouE9}#1qL~vRkd4?>H>?LiC`M{OzyU#;i3mdL&ih*Iut5a09eiV380`x z2g*dGJ@ZQkrn+AK;= zpS@9doVcQ!)}QmVK}{{l)q;jQM_`th9FOO%IaCrfz!l?n*dH^Ywg?J%0Y7oG z&chDX{3)n4sr9BVvJ8@FTPCIXe(bK~V@hru6$TUte`)K9vgB|)@6frY=rO6cb!r+? zO_|`&NNHGL}J~j)fN#-gi1zuy)GND9+e^^TT=GK(TADu{Q&VoM+mW@0# zLz`0O0FvF+ai3X~vl-hpT!lHg(z5D(KRTX&$H1HzfEJzn0eq$Ru%Mdiuu4_Sp+iZJ z{L7-;+6`I^3X52QR|%M zIX?!=%O$N)T=D+`x@1n%GCL)#UR&G~qaqjI;kC9e8y2lbg+yz|o3x{FllZz@ty@pL6{dPl^N2bi~}YjKXfQZ5COZdDLUp*F)gyg&4bpdecUq9k-ws!aS& zV3QhOtjV$N$@L)ngK$`IqixkQS<0XujEy&0U*_NmWz#H*5p7r{6)e{jqB4wd8GMA716@)WE79PChNfF# z)3fBl7E(XHbHY?gGpe|n-40G4fY12Tz4JD%HtnF-3*op+Jy>!U)ku|ujBP@VXZ_w+ z;rBWtke2We#3Kg#LAJ!fijz#d**iqVcPu$kxj+03t=t?B;O%%cOFdD?ER4Bfl_;m3z5>F{`=Yto=#6tsw!@!@mU z44Uy97bn|!&{Lyi6seZ0uZM&8n?GV3CS~qFa3f}B_RwhIN`{m7T$v;p=_sIiI^t#_ z@iDyYvKSaEw}=6qbc?g{E_Y7czz=8PdoZbS1I@Pbd8644Z2i5;!;Q*6n=>qK>}2PS zpehnxd?PK5xFTQbMW9r(zD^phu&xOjdw~)TL;)Q7CSSv9Vli*yAc;y0V)5#Iou^4o z>Uw^xkGIMb$(tW>A>p;5DS8Rp(0)@nj%R_H0;{kxm@o{AUZd0T6;eSdK#ZXpXE2at z;Y%*iy^#M@^4=Ip;O=&cYtBN^q58ON%yLY+fM${g*VK`#BQ7^Yi49$wX<^Qx>{EB9 zq_fK@!{CW_0`Dh0@?7H0$h9wCR7yX2g5&?h6VO1j&2=e`CMqfed#uS}gHKdZpl${+ zRl|9ZHNQk5pkgv`|`1Ng1Q2; zP+XkCi2?D1yk=NMM}#8(u2i(KxDRQmjB1X+w;PJB%?%3#2_%vsnZyt>b;xV{D*lo) zXGvSx5EL8^@VZImYF3701T|uUmfWHiXQ5@NU3zr4+7~B;LAR|7iS_V=t=~%&V=V;E z9|prJQ}T{VvzX{5ac33M4u_`DqpHYG0Fj#Fl!r$UJgpdfg@zjcxsjc{Z{S_uNS3+p+3g1VsP zHy<$8+j_XBOGIcAS*T})!fP4~L<^~2Y(Jbit8ZfM>0KCuuQHewxmFy73_9YXG1zzA zdO`wu!nu=h%O=B_s%zR%Z3EUD9px-$<0f(M*J?(6RNq9LMvW|G11^{JGu0PMw~Oa_ zE1JW2O8QakAygxNKqRTgSWbb{KRUcmL*!Vy93T?YS|Pz1qH#B&zpF7uKV*?(_I>C9 znuz)&;2^7XS)!-BK}{$wRE9MK1VeN2)`t8f3LSqDh12Bf4VtYf|of*Lvzdg#+nqEKfC_cu{k%^j-Fa~=l)5`|X~ zI5-+FjWU^xtyT#lE4;8(mxO*%a z75U49j{@K-c|eyys%(T z`-qkF5s>}_U&R6b8sgKV`Gf%U2%Hty;3(h4xa{*;x3{4bD%mr2EX9Eqq<|mw>y+TZvI?^g9@Cr2U56%A~p1i{cva>D;0FsE>^w`F) z6CQRaWNByiW&A z$&I&sKo9~f2M${9E>IIlDj7yQ)2LyG`%34)&_!JK$0xejjlj*y1=G1f5r_Bw5T{ig5mga; z+pB640qB&g5e!Dkaa-hV4}UkOLtnv#=ZqYk(`oQt9V71wOHM-hBw=l>BHk$4?khg- zSQ~boN{@sBts5+Zt7-l&>DlWxU*aZ1MMz{NV=UgqG4(iq{c%pe;z^4sLX5rWMmn96 zDZU|E`3;9&BSG5$4TRwm!>zIfj6LF$*0BZuJuvQhicf=oVFX&@-XMsil+-n`gkC%W zbZ$-m2uMKtzV{PG$TL?iuPmQJ3M$GUug&v)ExMQ(jd3><8Qo*4W_Mz0rNr*CZyOt3 zvp!izcjOV9?&QtkNqeDH_{0&?awUpWiEKgdoxjB_Q=X@yQfc#S1x0_W&PbTJgOOL_ zwZeUP0tpXjxdWup+j!gB?u2K0^{D*($58uH-|ZIn?VVPqAnU&eO{544T&_uxH!tj* z-JIP>WW9lDNFe!c54#CZ#D@;Xc`GL^|Ol;2p~H zV7-J=mF4mH1feFzXICAJXKMzb=wS@K@JzP}RZSt?>plBMJP|XaOGu;pg#Ch%ZmHMe z7d;>T#S$>|CN=(M390B;{k%L0s`rBS=66?p`>r=ZyEOY482Y8_%k>Bx8f8-Fm#0MT zVf^Y5C~E>dnoK;<^yPx+?3f$?)=}KQXu_Goy~@R11Z@cSM@+9w7P_OhM+~LgU=vWD zizYVx+YEAif4B2ExM)~Y4hV7|!C?!0d}tkR3g{K^FJbwNHt&7DrFC>*C!(6fG2%v` z4(5|F^d9bA`5e$jn~-w$q-72{5Akg!FG1t42;f$DTYpAYYAW>~!BHps2no+Uzx=Ty zlT9*ETB?K_s*$4B1DCYVif_nX*-(AkK?To%@#WpYI;OHcwh(Pa`2fqsr5)EIAjFCq zFkYbS?_t0{eU89L-%o)NK&q0fG9wn)hGSg-rdd-9s`&k)e&QqBJbGH9It$NyGHA)5 z7t6i!{3}UebYfOIc0yWT!UDtLC0) z!CZpaGe<3R_RQVg!Qf}3mzftHRFFT5j-&kGUc4l%Fl0hi+ixq7AktADCGDzGp-`pZ60WYn$LFQbUX*g7RjZxE2pB&LK&U%cNic~aNzUP zv*S(YOzJ?0R{)1<{y2fA0C~M5!%iA3DKR>*tBdy`;pnMU|MkiV=BG zb9fpQtT?NRKUOiv>c<6wm?I`HJ4p}`VS)yqYDP5U*7s!_y4PJpxRqXQ9_aGjF371tbyc!5Q`Co-r zthMPFe{;*p%~h6{dhGS1&zODpqZ2hh=s_)npM7p3Hn*pKa>$!&rM5aL!-b`M$qjSl zohzD^MbV}$n_1Bir7C#YxJIS!k{_b|Eb8vX zU%Y20I^-D=zpW@=Dt_Yj2`ANX+TRW6xIuXW3a(Y({tXngsG8e<0)+=MjM>-YlOB6Q zX!0(kNpk`CDqkhfYH|Ud2Yb}i=R1!r#=fdBvRd}>l6w;S^iw;LT6>qcRBx3gEzk4P z8}sV2XYR6yaW?^b>T0=728By$#);IJTqpcepC8)plia zpz@IT^pdcPBzMurdfiD;J@#_8sI*?E@TVFqEKRs1tbc5lJHl^Peefw zNE8BrL_zJJi9+H(5QXo|>)4=!%!1@XTI31+h)(LJnfp_%9%nF0Zg+rPlRk4r_YP?< zE7<>sRpuE_d0^#m{(loN?s!a*FXsd!IBAyU$j%9Wh1G&kCaQAcpJ#6bH?et4;;~aqOOp7D0{wZ#2AXwVsXk2L(TmUf|4eZs7LAo9mw>4cD{W}V?^fw zg?#)**d#z9jypio(cxc6A%}J0w4ZLVQ~aidb%mX094{=VGKck8U7#r_esw7+543%= zj!0Zt7ONA+YF3i{8r9=Sd-K_|41O(q2JF*Zim5%y_JZ)$D6D|3mU0Jc7;i zHvF*g=ml<3!wm0Rh^N{;4ZG*uHMFgKYB=u zUr~!5;b)z9XQPe%t?qUGJZ=GEXj!_f34Mrw8+Eef6slSt>v*0`*N)#U5?rkBowcSY zeK-6tb@}%Mt^^_UF?Oo&Cu_^eaLD2oXu>=SsQ3Fyi-^urB&4v!+$1ls+~n)~KLl}c zH6oy#kV*4McasxIUkZ;)2~v>b_Gl67ES2Fbe&3%pg->~{+slIzFo{FS z;DUevX0~wyAGIe^)okB$TYe?5Vva<*Pdd7}J~Ocgx0r+`>k8fR7@ijB4La6OxS>UX zKf_I^x)DX3Z>HxV98Gs-mJ zD0@>IcX)V*6i0(@5OLtmCcdNQp5u4dllypgar<3Tmb<4if|pNio@7OhJ7(k9@GC_- zn56fro?{jz*SwL-ix}$!9=a%kM;i`z=!$jBm{9>Vk&RPtieSPiQ`^uu^OkV_U4s?M zbd$af4E9fadT}oUwpEg=-s)7oHMlGk2hP*My{$)*vQaJTzf;%LnpD0E|B`J$ z_;vwY2vf)jSxzQGFm10QPn%k39y$jrAB%J8Rc?l05TPbKON7o0DMM8vT3^I%bRpa0ffrR{d*h)Q>B{ zNw)C(y->^Gw^95Wya}(9*>nxwNl+y0uHFXuv9QIeBDA9eRMctTJ9;B-fOb_Bn_{Mp z-N)11@j1=Cz$-EcgJ3mpk#!rbNkx8PJMARt zkw>6F5phY7eZ-U2HfYWRCD7F^5nk}Khy_%wCZT%O4%OKXRor*Qqt%p`aCY_Ryg%d_ zzYP8T(Hb}Ewg!IETZtQmU zX@(%C_3ExtWOt^Q+O(4_mOPn9q~~~$f--Q=x_SguxQjK{yP_J$!Dhj@x$go&jIrN$ zZu@N2H&t)guu-;$%y*iTqFMWnkPx;>;t`Qo1V1| z0~T0GD5c282xeZt&W6XRhP~KOI^VuZ7kleVIMy6&Nxc2+JS-)Di z_dM+n1$BXYM(o|wT2&cNyCTzC%q32{Tjw_HE$tF(ZI?sCf&evSQ>6P#O6s1=5q;0oGKw0? zyZ3T3FabFTMO-v$8q$g_sJ+LP-Q)nKVlY^Mq?sS+uYJe*AMDUtU*v4$gdCR(Fji0w z3?M|PzKuW(5^u;}lr`)Vf+4sK5_Zn9cz{$+i9okQmU2!u!AJ z`|hNJm;xmNTZq~btfE-8&VlQ3z=N&5Z`MEYq6|p|$RtTpfr_*7;THKfqNv=VN9yK% zb+!p%V@7fz=KAv#lH`Xr5!byqUZevE2)WgLI3OevNC+}Xz%<(DkH}n3yPO?PgwvqO z^Q0G{(N^~Dp{rKd!Q-sGIaCmU*X-ORL1qPx?6J|rO9WhQz6c$@NoWN=^7B%p7S{+) zBUwSkKjUCaSpf5W_ZbiSud1v_o@|<}?>^-#CG+K}C^I|Aroecb6>x_#>;eJpCouxe z&(Xk)I<;J&khO$}OrBEzd6s`D`oD|v?laCbyE+?vFn4MJA{xj=a@(~67%G17Ly4hOMF+~=F%xU8vCaZcVu z*|1b_<35%L6fC+r2%lywkaEJfw;8(2-RXvsJcz|kG<&^H?vli=K$g2eRwgz)T47o6 z3V2Q4`)H;_YIjMUr_g2>-+inFg8z=XV(qAqVIh7(UU3DtEOQrVflPxHH+&6ZW7($; zoAzq9TOocRXoW*mx({qnr+trqpvADr?ntz9>aQKh=2-z2u2t{b_wt(8uA2|r*rzQe!(pxCwWnhZQs{Yv7~C@U@cOUpeQ-VUr(wS; z%vCrTnasrrE8+Aonv0Lpu3o_7q1TqTl@wUMnzNyC*xB{1rS4)>&@(BvFPAePJiy|j zvNrH}n_--2vFo3MRiAC8Bpxtb-K0Rh>-p^G z%9+EB`$>;q^=L(=wq=4UvrLmEZo2xflq&fjsFzsO^1k=aFXGZBUfKobb>!ccSf`-l z0U@39J#m$-q-I_v4i3eCo1=bf1~R5<=S@ML|Lh#DzQXc1$fW8_6rkO-SwejkNu1TR zuMmpTs$r%=$CQPS2t)+r7d?%SHyHoaZ-gAb`@eOXd`Jilw4v#Lu*olp$YT9t@CoNgs5R`bfV;VlP&N zzs17N+ zgo4E*bxJ1)*fPk>$3*KjPnD*6KHm2TBK04l&ib)Iz6pA%g>OPC@Qp`rIk=hJ&vEAS zNG}t|VO3(28Rk_#A!{Z02j0VN1{Sc9g`&9dnpQ&CmJA^|z-qMx85fHzjrZ-9015Ka zR~4hX>;p#pH1WOav`%3ZnLyo!=`#9_I|%1&RS+L?{hLKjv+_yzj3m-n3>0k;EO0|9 zzt`mC86c>F(_8>Cvn(uhLQqu3x^@D7+En`X>|iBYw62=4y6kRWTJcxG-31+@Z&8mD z_b^!nusI?MFcLn_gJ$Fc5-1D~q%V4HJ)sh#DFJ}5bl`Cn8n8*KUz$C+IM)l5ND-95 z11NBO=}^d&s!Zgii)UkAI*KkGznAWqs|r5krKjfztq%1l^>qn&gXH zi%O_w7q=~~U?X!{P$2UtMil5u^1*(lx^k22O~hUjFH#Cw*_Ho_C((P8S4-McZL?#Z z*m=G$r_JDM)0DVOTOy|;jpXZ#XwG&@xN@aLxX;q8wsV*yQ6^byx^Sr?glvmTi@R&di|nYS7DT7k zh6#)1w?dqy(^mfeYGtSMm^*A3)oX0zQr1?e;^xhPA=1}9Nj929NMg!~)6?$qE(I6O z2dmUnj7NuV7n(f}_=D?^rGM=AcVMo|EP=i29I)fS`HybH5IE)ewV7-tS@yUZne)-D-PqY;EpbYpl1$ znRLV^XXFLQwvs5C(Xq;(+0{8?rnjmPO_3-^NsfkLopIgX?c^tBiK(HselQ{PmXbBJ zV1N-2U?dCN$@dn;l!$%V*)H7#12Njtzv@LLi`=iwwdIJ>jfpg(DZG@KF%~0#p*Sk{ z+GOuM-H@Gv%H)maXCF0(aJB5S`jOx_ddmYummj>XXL<$u{34bWs59l}d^&vHMbe|a zH&9Bx2!?_3kuR~xnUsI?(m*FQu7<);Kotc?TXNLRKB?D4&W8`tHWojjY!9~_b1GE55WMm7R!_v;RnMrK3&(%+5ezI_Rp+YX9_m^Q z+?}no6T|Li3teq5R7!~t!XDdT+I>644n(&Pg0am>34&)gr2z&%sFPR6^Ol#$%L-mv zlsfYI?hqNoYW2#1iR%UXTO1kA7hcKZuhfIax58h-v2M8&l@^RAoAhK&;4@rhg!idaEUN^_mTYAK1ibida%@bLF-3Ia+C_@5?_1E2KA;~(ac z%ZUFe@aG`n-=jHz{;0o=C4L_G=XBQJ12usS{C}I(`lN&h_Jq;?X-4K#a}W4A$TiE0 z2=*_f->1MRDnR^eV&=1Hna>k^K8f$A?$0l%Kx2xZ3I0Bp?|Jz1QEb1$Wr3@Ueun=s znC*G|^HE&C;v<1H>}UM*!CcQJo=?X4B_RZS*YH!~Z!@^xEA(9F`2d$+I-9_1|Ecr) zScK;~&xcd|(vf@hT<3onRqcw=PNvUQ{*x2}Kd$n7F8Djjf3o%Y^;lqkF8GY_KbLxLa`Q_HoAWQJKP+#a$3Nd~_$z)?^xrrC zPmjkZu=zar`8vm6!7-|T1V1x~e6I6*J)T~Ze?4|g{?hqh%J3ZY|5Cs;`%B@EcTCSS zc#d{|#hY3D7613k+^@Zu&sF|xnSN;i0IH6^-*kV!2s{^f{+{ob#Ei@HG@e}#1n?t{ Sry1q105QP-eV!kmzWYCoHL^4S literal 0 HcmV?d00001 diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index dc42f0198cdf..b5afddc7a494 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -894,7 +894,7 @@ void DomainMapper_Impl::PopSdt() xCursor->gotoRange(xEnd, /*bExpand=*/true); std::optional oData = m_pSdtHelper->getValueFromDataBinding(); - if (oData.has_value() && m_pSdtHelper->getControlType() != SdtControlType::datePicker) + if (oData.has_value()) { // Data binding has a value for us, prefer that over the in-document value. xCursor->setString(*oData); @@ -992,6 +992,7 @@ void DomainMapper_Impl::PopSdt() xContentControlProps->setPropertyValue("Picture", uno::Any(true)); } + bool bDateFromDataBinding = false; if (m_pSdtHelper->getControlType() == SdtControlType::datePicker) { xContentControlProps->setPropertyValue("Date", uno::Any(true)); @@ -1000,8 +1001,14 @@ void DomainMapper_Impl::PopSdt() uno::Any(aDateFormat.replaceAll("'", "\""))); xContentControlProps->setPropertyValue("DateLanguage", uno::Any(m_pSdtHelper->getLocale().makeStringAndClear())); + OUString aCurrentDate = m_pSdtHelper->getDate().makeStringAndClear(); + if (oData.has_value()) + { + aCurrentDate = *oData; + bDateFromDataBinding = true; + } xContentControlProps->setPropertyValue("CurrentDate", - uno::Any(m_pSdtHelper->getDate().makeStringAndClear())); + uno::Any(aCurrentDate)); } if (m_pSdtHelper->getControlType() == SdtControlType::plainText) @@ -1011,6 +1018,13 @@ void DomainMapper_Impl::PopSdt() xText->insertTextContent(xCursor, xContentControl, /*bAbsorb=*/true); + if (bDateFromDataBinding) + { + OUString aDateString; + xContentControlProps->getPropertyValue("DateString") >>= aDateString; + xCursor->setString(aDateString); + } + m_pSdtHelper->clear(); }