From 029d82e2eb406e1b7813df4fafd0947bbc9ba222 Mon Sep 17 00:00:00 2001 From: henrikjust Date: Sat, 5 Mar 2011 12:39:48 +0000 Subject: [PATCH] EPUB meta data editor final draft (dates and other refinements) git-svn-id: svn://svn.code.sf.net/p/writer2latex/code/trunk@95 f0f2a975-2e09-46c8-9428-3b39399b9f3c --- source/distro/changelog.txt | 4 + source/distro/doc/user-manual.odt | Bin 51645 -> 51783 bytes .../comp/w2lcommon/helper/DialogAccess.java | 25 +- .../da/comp/w2lcommon/helper/DialogBase.java | 4 +- .../comp/writer2xhtml/EpubMetadataDialog.java | 261 +++++++++++++++--- .../comp/writer2xhtml/EpubOptionsDialog.java | 7 +- .../writer2latex/api/ConverterFactory.java | 4 +- source/java/writer2latex/epub/EPUBWriter.java | 4 +- source/java/writer2latex/epub/OPFWriter.java | 197 +++++++------ .../writer2xhtml/W2XDialogs2/EpubMetadata.xdl | 58 ++-- .../writer2xhtml/W2XDialogs2/EpubOptions.xdl | 3 +- .../epub_metadata.xhp | 26 +- 12 files changed, 410 insertions(+), 183 deletions(-) diff --git a/source/distro/changelog.txt b/source/distro/changelog.txt index cad6aed..0767bb6 100644 --- a/source/distro/changelog.txt +++ b/source/distro/changelog.txt @@ -1,7 +1,11 @@ Changelog for Writer2LaTeX version 1.0 -> 1.2 + ---------- version 1.1.7 ---------- +[w2x] The option use_dublin_core no longer has effect on EPUB export (instead identifier, author, date and title are always + exported, and other properties are exported if they exist and are non-empty) + [w2x] Added opf:file-as attribute to EPUB metadata (creators and contributors) [w2x] EPUB meta data can now be edited directly from the export dialog diff --git a/source/distro/doc/user-manual.odt b/source/distro/doc/user-manual.odt index 84e377237d079eaa8e2946686c1ea5d77276c799..64ca00d778e4ce355ad4e9f60b30c66e8601041c 100644 GIT binary patch delta 39169 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 z R?8=avbLvtc=;rPdn=R@M?H&oHlRV9;1oPOO@V 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ⓈRoy-0nhbrN72EUjbB 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 delta 38948 zcmX`SQ*b6+(*+tQ6Wg}UiEZ1q@x;j!+qP}nP9_su6Weyqd%pA6xmeXzd-YY{tX{jj z$5X(2lfe;`WWgcOK|o+YKr~b}6A@&<{|m`Ppd`tDWAJeQF9ibw^FJy{?SE9_e-tbz z>i?y2{4Z*Pa{V92_W$Rc{$I`)=_f6n3%b&w8ct8BS+%Ixf$HaMP*1(4c1+u+uEsvh9 zA3ZI5X;ZIuJ75Te4;lf`F zzRiE$Hmfr;3|~W>Nv51`hdJZ*0pDzQ`!;=}xN&l8;4#VD8M>Pc%mU+hlPZ(xkGM0* z5msT__0_?dDF+O`LGv9>0@*=m0}dd#@CFVsXVQee_rjbccKL(QVR=}5bIW*~=M1;p zku}G{P|cHe7t^1VZjz=A6n-BHVxpqIV!E4tnp*5z%yD7KY6I_T-UCntV7o$am7b zW48ilAPlyP1`=HqZc_WV)B>~y2!0(S@zXeuVY55;1>%fzr-?=hI^+@?>O;PTbZ28e znBVaIlho};szQ1Qo3@Qv`|J8Lg*H2iMorfbo@N|$+zDPq3fvQ^y&Vpp+iUGcG~6v( zjXtcUYWZe=;9dl3a)7BJyy&engLn|#-Uc$=2wx;L{Di=;q2wF;zhGV?vo0a!V6TLk zpHawd4SHT6>Ww`#*p$fyqTqm?fh5_%B0y@8DbRyHT5dPGNzqCC}#fzr6t6sB7lz@rC=3I9kcn1f@Bow}rVk_We z3=s0|+6_xh&DPBG2gJbB&qjVEa!Gr3(Ph}OjwbkOVI(ZjLaQ9)#EO^-aaqSY@tKlC z@I^wdN4+MOfh#F|F(d8?x-`xg`1rfKySOYc{89Ar0P09*D9FQizC({Q$x9pNV)k&) zdE)#Di78{nCe<9Ly9B)=^z2d9zv%4M#jm1L{l`Hp@URBUAzbCx{Dq+uQyvIl%tH2; z5r%yyXc*8vYs>wY_!^;!mIVJP@N@<+PuY*L-;d+>rPpiGY0DvO06$y~2!t-bkwu{o z^a5L71vVV>qEt$QhDz0lLn1!P76d0ocsB2eS(|#6p7%E0%16V2BXjQ!IfogaR@pZ! zUn&flDrpKUkk6G0K{-pc$$w$42E(ZeCD*A~VKq7k_&?+LCr44PL!6mF6HdaBjw=W1 zti40yTF<@g7U@!pAc!xC*1=E_+Pl3g8m%0=0KY3SClT$Z!8ahJ>1+1DYvr`FR#}mh zU1ee$n0N5MrmLR8H&6rj1}5>Np-brE#P?Mo5{Vm7T#Et@QbIOIRRcBIP107`NB{+w zatYdS_Lyjge$Gi_c6cY?POL*wc;48oN~GqSmd1rvA)cVLt%vwe_EU)$A`|6O4J!Yp-)OSH#~& z!wI$n(|AOC6X8%K?Fl8qn235t<1BkClDRuWGK_9gxjcRVa}jts=^o;-20Ubq$ZYh( zu%X^z`p@T;WRC{ng1>S_=i+<%a_+J1mk&bHmn-1CLm9-q{%;Di*VG6C11OAe49SZT zYh*bVeFhOL7kgCt1eDib)4xZtGxEEzT2tXV-O%4F!UKtE<~HIZ#0*3qYq&cXes5Nc zU>lTuQdizqy*2K5W@2kP)9FAB12+s;Xy)9{>|BO9Yt2vahiBM*Q&^1DvNv!fD*DUZ z8SH&9lOxel64Sl$B?u$@hb&28t%pXC9gcSs?T3RnU#?7 zb`#E*r0e&N{)G5*{}+&XZuj#NMBf7N+l#*M)ll_8!6WBxlyI!gVVHHY2Hs)WhudMH zY(%igILCqdL+ZK!daoEuMoU+DW%15Aow3f1bDN`+7o(G#A5?CxyeRzry9Ro|inm#o zQ21W1Zg={+QVPSR1)CkH%S+`ICWx^~T63n3(iNs{zZWuT_7-C2miLELc?vXmX`+ZG z^#h6FlU z?4?INq##Q9LH=DAo;VQ;F*_kzDkGhj&+h&8rDISWxLjS8tXQmt zkn6Ii#*G`PYdsfok1950;kb27<28;%tQuz<{-Mi|c~mnQ++==CkOqIlA{7Y5FdxS; z58p$rurWiTFF}ZR31ll=*R{cPi5AcuRnanHr0G#^Mri6UuVlZquLAaA1!9BIFzc6u zhgHbpp?X@OnxDYWgQ=uclQ=jN7rT_2>Dm|9B3_?%5P(I)FY^9i!z7F>y8V#^!m1GX_cHUu zJjYT!14@{&9E-05H9l6h*-&*W^_YzZT-cuxTd%roKVjyCyG5#^S)ib#SRY#8Wc;SW zdz~D2biC-Cz-X&E&J=&_LG7#%`f++Nnu|GiGX&9E^Dusx9|gXV0(DeH2G4=mZtGJH``S z5f+f)2m4eE3k%v(N{iG)5JpglqEeheiH}sC@q-f)+V(f{mzVU-s7F)K0koa zw=W?UNq}mxJ&7>*boDgjgW6vsEYFatzKlyia}wSGdCVitYT%UT8XFv^w)(ATR9^sH z3Ms$qPFmNs-#2auS_`o$mNAN-28tg$3=UWvP!0Zj@a|HC0dQx*N>^e%6du938`=3uAng6rD-0j{7+wv6>_jQ7fHonf-jP`MP4o29Rc=sO&Wv`-HXy$ zI<*)ypeTJ7|B7HTMY#zRoH*g<R-cL1L9C0d;{_Lr8QeIRgE^JPR$H%c?ANf8t5qvjQ(c-! z^EZDUo=-~?EG*Vcm+;?Xe7C5SzJ-d5? zUpNt=2PjvatSEVc(FqodlciBOp+Cb7NX?Sre+`3kSJwT&{QKFoz zH03V)sg|IT75i)h`s(a+X%c7j*PTHR#_>qvuCq25MmrF$3K^#=9Ie%hrZ(TyX1idl zcsB>J;^^!vrM$Yu4RiU+f%PJccm8M@i8BB>-H+w3bTPZOm31WpQ7_#>zLNxUZKVbR zT@3%W8}_$Rl|w9{=rGKl`bP??#hr9%qmE|7uS@xr0@jE0vDwX6ub1)J>h1iCPFOgB zWgK|~jeF>QYS*5?=m8z4u}lyHFa|Gxbskzr!1Y~#d?=_BP-YutoDZBTb8*k~ zEcmDPH2!iRac!pN5dOZ!mn_T(E_JIMzG|HPHvxhiV=X4D3d~R$aF)I|ywUwCG&pMp zqWfLSJWP0SE^%oatlJoSL;Psem!m2@!KV_cU3 z#57wBVce#>iE6q@QnmM$(J$l2Q(Jz4+~ze7KEIeYLC?VGK7S@JU;JMG?*lGv4W2DK zqRtrcPcjGW{x_EJHX@H-_NnPV2WM3mg6!M=2019vb$|gcAm5dxD|K<#M~jx^5VFaZ z%#&3O_DjzDKh}c)S=Xt9#0Z;=+)RLjJ3RY%lnXceINzDCHH*9m#_AB@gj;^Ja0@T@ zN3n8}BHhez)0zKj5CWI&b52+?ySxiw?H6B;KvGN6e4E*l5ZPB2 zjWt{Ri!r8`R zi;vdKKCblk!$tDqpNj<*IL%b@xQqQLxBnc?M;UxIa9qIrY2;`(4NzgQk^M1el9hv? zb6}T(T6tXMvn7SN2i`FN<1Dl;YMA;t$o)_g0q6x4&cBx~WMmuySI7D#qReW*-Z*gE zjHA{s#kH$tGdk&6A`->1eN=}Zoshb3t>gP>rrR zYJE%&q+{f})=Xc`t-fe}_|tUYuYc6xp=hyDqSj=d7FTd7m1Yo|+QmGjV5WW_dZX0; z5?b+DaT?&o!q3o*<5$AWv?a%I0^w297Dib(id*-)gg&fH#M-|!LZw?T!wJl*9MEz! zk#(l6>|u~Fg)VSFU%C5}l6;E3ZZe2m{7sw&L{TB4rZvw^%Sprh=}erEXBq^#r}0pxZ-~cmB&g_$}IKJ@b45iqIu9B zSRzWRnk2+FmS0w5TC(r_8w;xwx$}O8L6R{U_0^Aj5jP;y=3Z9t?R*skmj5`~@Y@=f z(h#sg^@${jHK>N<|N3}*8ujybVThPqzmmB+Fjh5Okvv)dqC6z%|Ev3#Nvj?PAXgS) z)@;Mn6k&WjIT`M|=J|-vV^w$VcLAd=5IyK0G2MM~6-FP>DE7psOhp`OJXhxwQO-c;SSb;EPFP;-`Y25n%3V~o_v5sHJ6m$i8Sv}WR1 zR;jK<_h_F+P_O<~%YC8K|Eu)+49B$Xs3M3!0`SQ@=r52U{Z&a9tsc6e)#=YL~k_wGqz)9&-H0 zI=Fyg8E8tEK50W0$v|$VB;u?KJOmx=B0@#60ZN>ZHoMtYO3T1er^u!pmJp^{-98_m zTlT@wFH>`PEPL9b<&xc$0I}OSzyAIQ*DGCK_~Mfc9@rB`sW@sf9AMFGhAUkTgHP&) zmQQhX+A*pHs{yujfK`9VIW+1nDusGlf3cGx?4pgWR?tpIx4tn)*bXq__7?vlz52}D z>2Y{mK9ag&vr`0CiY(XEo@;%H^x8EkJCRB9;pgtFJKk^lrG^x19sOBSEY*FK_9s+Y z_1F~_eIC8iUpIZk0v%2&(7CLn7({meBrdJ9?VVz{nukr-;#S5L>o6OisWi%yXZb|Q zaC~c+r#32|js2pl>=hXKyJFVn03`Ps-zkR3lZJqzX8*vch>+Gshd|2u2X&`6Zh121 zA&{{&aQOfoT`f@linu@lk95ylePiZ0yr6}s%OGZ+ZFXtYBJHKo&6SXLC6sl)LA(hI z3MyutxLMjWTTk80FF5{DM0}c+{||(l^fUQZe5Fjap&DI@_W-bibGb|omjn+#yTAsf z*4Gp>!KX0czXn2@u=B=>VuhtxlR6>gr!PL=Rp<=ru^FwFkOaorOvPfM-v)Y+Wyol` z`7;&^yixEIF}?t`?G&Q>vs*6Obe?&fb~P2IEX9Eca&W9DU4)4r>K$D`<3r;n0A2Ge zqCV>D1qqSOP!d>u$SaGu=823pOjTH(MTaSFxpbqFUdHNEk%uKC4IbMdKq(Lpk6k19 z`Mr&pb7$ye@WK>_qci>-b!Je4g;aH#naVGFdUF2*%iLvM^%9@`0_RW;r% zvO^nSvhINTvroU5k@#z>6enKop#bFIXfoohKnG}q7eJ37rn&fbV-_(ms_Oe-+jb5|RI#p3{b_qOnzdiOha z$V=rg!gXN|d{-P8Bq{@o*nqtLeYnj-KSh6Vem)l2%cw!yb=*Z1 zL4v^AM|;&;1*?u?8ZoHc@v}^tsn18egGUc_B%HS7KbfyX`!Iww%pLsO=S072T#&qC zqgs6?Yz<4CC>wLS_E6AriUi1;*5>s^*%@XwS<=r0r!n!9l*WOt&Im zje%dvhwQMf#R(q$_d=0eC>kY30wZ-j%U@MX;jNNK^0OC%*$m-7KB7b|Io(on4hiOC zTqZ*Dwfm7b6t8Fv&3L1#CSR_o3K6YYNJ3lPcVpNBJ_nFocP%I0C>Xe-r{OG496g{q z)|o>7FO<*zVP~CHM+g`g0X*Xd3ocOp)Iij4niZh)aOR_;c%oBUxG?r4o}H0TFzYnJ zBy%TpNAD*%Y*~k}2WV>33}MF-*8vpqX1gkihMD^%y+#|fIi0854pwm?b|yhOY7fhI znMz#1YWCz8JU)#aDMBX*-heX^h&on;YLIA?4UgVI!jDeocALhR6DG^QaetTKFyP@k z%uox#6(YabLixxup4k@c&!^%SR3fORVoADA+}kR`Ogp~zvbexhz3VUzkgMZmo!xd` zXN=k5)ZWCSYnI>43J z@Cl0*dk2590j&PKKm;FvX9;zK1BbyF|MlQEv;9YjTZTEMT zyO&hewUi4xpnl3(X|x&I_1Gi8E8-Czh2>V^n2fD7U2{_hSi0ZHsej>TtEV{3^GvH) zF2Jy{V^v~WR261-$EZ&jEb^g_s||Tj^JXk#!_?2_DuybQT8}=|1TxmC0ONcXMq%a} zUeG)?LVGJYu@0$_HI^;rkhP-eAVu?er(KwwUWo}Ld9Yk4k}qIYd~H_+BXV90h{RT$ z5>8v5r?PI~MGhQ*p?j$c(LOPy%UAZs-b-)m>M!T_mnALVB2<4pb!c^A;!OhHNYt^5 zGZVMZ^k9Ijs8@QE^fM6Az}kBV+P_qqm3dk*GSY^A7_O-ysi>8|Gu|$alaB#^_HGRQ z-e=B>B2pV850SJFp^`>}J`z7afM9z+UxIt3{XgZlM5nk-Av;j;X0&Q~5+bf&#Oik? zs7l@b-Bg#p!)q^L#Unr?Oi;!3te~&rgEOs{|D5VOT3bfSOOxOcaB-HO>6ZaDstPkI zGb%fjGY+PVG8&C#h8Rf%t6uP@F{_|1Yrjj@hg2gCZ>JoBC=Za9A3km=z)mXM>G>~Z z;%}YUF7q@~K$Dh~QwlTq7!?hO(6O?%+CA)=PNsWf7l95|x?Zb?nbyQ*WqDM8>*NM7rZnbDMd}Edi;{f7?rXL-; z+8}foBg0`EK!)Uqswwc0uSfG935ULq+waX7l(j@F?2$VRDK?OUX50QjVOX^T?A%we?Wp1-b2PF|ItD;{k<@PORlUK?2-yDc2e273 z!c=d~8I_O>HLh8lz!FRhAUhI8A)C&wL|=}-6PAAjoJP^rmZtvC7I6zn$o(>;MI>ai zx^sMPEKx^;S$e$fA20s}sfL;VjZ_^nXjZ2+ENly(k}5UB1(WoB76T>xdU&*e5VU*s zTwM`A}VINS?-VSb3JsZSZ+(G%e+Xs1|q|F#Y@B}}i!IP< z-8iFhqBJ~7BO2|+J_55sbN}|?KYqfR-aX#|UrQJ=^DvA20Yo=!O*t(9jct}zJqD%a zWq!|f`&pRkulq@JaQie)SyDJ%U54{Cc2~o%Tg+j@xF)Lc?&!l+3yum2-p$O15$AU^ zSkcAaM7ze}@e6(Gt)_ELU1{^zdoM=n!Nk)K6$l>@+!WQ~;Ee{6@gkT84EI-YqvvR# z#5vl?$q0eccHyZke`Z`j ztfm&e)Do(jZ>n&YMQOaHSM8;9gsI07EsSjxW)I|}*ZuYnAdoAQey5ivlS_*OW*ycb zUdgiD4AMd`8RVP)R(b_%vmf0PbUKO6Pyv_FQsU2hw~qXm+ANFBY7VF6Y{*8Eqp0oW zTQnC3*?eEE8Wo9KVQdpZiIoGkER^`#w1p7kxiOd~ zICW#gg$pw?URaTE0rLj2p?wLA#twJhc#;SV_x_S7aGwux|NJ>G^~^k*H#r7tI^N7b zAa4FjxxJ}s#al|arAF17E;xDeWh!BXKtgPtD2#&gwz#ykFS29+aUr)MzzWq7z#wIF z-+jt`oF2njTc{4X{tEd3I#06PC#2$)K2Xvl6ilslcxiQvvJpi8I%imbLS`Z@OT&^# zr_wJG`4hS6u+bAqRsg>M$O+J)AZBZ_H!X_a`KjlIs5PGuk!o}6tf!{Onto2Lzx3F# z^g3DB)_V#7;Jl%Jn+^8r_iCvi9-7S?|NgU^9i`O?7q@WD@uz|j7?Pc?YmU`EJhv{z z9s?^9GvT&7WbBxq7G1(n$1+vk8U~m8(xUX2Uext(O;}BR_qa7P^#Tv;c{0zo4i2It zKAq!sSJrzo9$PJ~Vr|;eC!ir}10>n&*BH{LWH-?`CSZL|7eS9!T2RR>$Z~E@F1qa7 z#+OI81F(BnVIE`;Y^`>8=V;>V#*RK^>(_O;BI<8>uRMwyssLn|~tFU_45Sgx3o1r7b9w36uZJy#?*K7x+2=_$BElrV% z;L_;I&AX}bf_7xk=B=3JFWEE!Z7ctGUM-3qit***T-6}(YJ9Pdg1D1SGUF}iHc;y zd^uk@!I?e3335%#PAe;(>;y^R=oi?A+DZ{AAj-Ar2Pf)(fisc0s z{($|Mwne%_nOwdh(a5S(j9rWpB&j1AE>*uaQiU7bT7I^FM(e<&;sWo;CS1>7(Dp^-ZF-NAr(8F`IXI# zKcxFFM7z{8PND+4WP~mfqh0^c7aQ60z_npoq+nxQ^?_E3NGBiX_!&1}O1+T!crO?* zz?VLuUd~5Lgr(T&dZbRa>e$|ODU-N?!3oew2P6ZhRp|6S=vYJK4H@n3axzDMpHY%0 zo2uzGXt-sMN{B(!B zkhfqawzi`Z^F0mc-}|=~Q(&-B;b;nFPc1!lfK0n1F2jipaoE*mP$y3r{+L{ZqJxY8 z8H0((#?w<%9`GiP=xd(9L=w489KRKtq71dusuqMp#*8ssP*}|Z(N)b?O|%01JdT2_ z^SO}UUlz1%4<|UUz7WvBJ2N+zVESQC~7K zbL)J^{*o^D@ozeQu^rfTJ=G`B{)=|UST#bGJg7c-R6*@XPK_b4upCU=?-e{?JCdto zM<|R)g+9ItAth1;q#^{GKvVwiveBBCZ61E}cOu%8~Z>XOhL(48WIE)cHk938Q_&Y(=<&z z>xo!@Bx_Q#Npz(5hb6nTs&a75sZ6-dBGS=zxF|_1pXv%vOv!f~JIWpRNN`Ti!qPzh zuz0wsLY3UxqDwTT7cao|K`9`Zi?0x8R^p!Y=2re80egq?%d{c_tifzPi&wdTJZIyE z*Qtp^4EA=Sh*3nX<0LKyGeijI zF6-fYtP1t9w#RN`A&qs=Ysj+;j<#Z{3$WvOo_5cT*#WQXC?3I;{UN6s;F5ZQi&)sE z<_02$$J+*mq|uWmsxQH#zA5-^Mz9eVGGVL(;t$%zcE`XsE*`?%A6iQA6Fe;`MRMnB zWb1wkSq!>K%aDYj&{N;$tl6><(5l&ZhP2uTOx9J#(A8ZXmHa^!SRGfuV&^^7z)rTQ zIexXcCRpaoy^?A=`Jyqwc(ldZ?wL&mQRR=q2ok~<))~>B3a>Ps5tmr6anbeD^LRl& z9Us9+DJgKR2F)o#+(-=pN4CjZI>7rnb&#a=`g@#tWEVV zj+=nIU!hEk-z#z%#q@+`T8679e)*VyBqHY!X%wmV?iqh7OM#yJ?-;p{B6Juv8)I3D zh?r6Eo|s9Knfx+?pfuZEj-S_yeqQH}pky1U7N@Jk!vIFjx0xn#Bn1`K1W!^q5HjR> zyFQ?$o{=D8zw@mo&pj>|ByCtTj`UP594f~<@-RfX#>!;XQ;(+nfb!ANnUc0RJyNH8 zDI-UpiAeORAk54cQ)^+8j^UE{FZUXKkpCX-z%T=T3%X zKpuU5QA@mqmb!mgg7~z4@O1Kf@)r~U$Z22(i`pBRNaV=7fy6B5@mBNZ=iPO0ZEJ#7 z28BsV$2vEHBd5BUGJ#)Y#PL#~`oko({!&O#-z^^{z?QSX5F^t<)}P`nQ89HcK^=;8 zGL>LQpEY}sHt{R4hjGhOo*>+~v3IR0mjWGXIwxj~fIN+eT4$a#MH+p_yN=xzw;d=% z_-G!xC!$-7`$~iZIi$J2f?!^8g&_>jVn!kBwT#Cay*)k!Lh{DIDgYswvbK?>Z|$$K zRSoSFC*&%lb^S(9^w{0VUS>)Y(`;!Ot^Ax4I=A7w?th{*4;$SG`fbJMoItCW;x473 ziiq>gvh>nvRO7h=Yb3Wdx4{bPJeu6z3#XB zb->~dapVY>8k|S7MMZNKaEn)>6kh*9oZ?;kZR9RO<+#C@47cu%wJ3_+c|DUnT{=RV zyOC{h+KyZ_=oecB{V8d!J#IaIp4&Qu-fq`nY(YK2nfI>-1;i4iBV%Sz9XZM=ahXB% z76OZMY`}rfoK0-*Ah?53zMUiAw(2x};4<_ioPg|$gy!+q z>txmTSqiUC1^;f`g1^`(gAzKvImDrsdqlB7vWFv80K|r1I7jo@0#gFqeVTaP7878g_Jpr>rcMGv>(R zbaO7?r1f@~zRX4Z7J*kl0GpVmBceI&nd;KL4~zM0FO>jpVK` z6U))mAe~uNC!O(7j|2g2Si;vih!m`scdh9Cu3C7o47FAVHoYqm!ECN*AAPVmp)m!( zxjd0jUJF44p0AqF(Li)x&h!<-%8y`64N}oMAvV_^SbAx^yG1`C|U)ve4$a064tJYv} z2=c${X^XS49DPvd7@eqn2-xyEmZAJ+QNp%8lfZTZdOS)R(}N$AHfl$gs_QwxmA2$J z*um9(H2ZeIk+t(pgrI^LP1}hEX7@$#TS*Nl<3k#b{4*-9ES>msI8$Ts&%1G)!GSW{ zp}OI=HmkJ}g@ug??C&|HgXONcvxZ}Njcr73EwdYx|Af6+0QtOi*7x79!~;A1yM^cL z==Gv=pg4!}Q&CfecVpdus4k*4K9(pnZ~lBPqD*WZ$(|Ki1J9OEz_9MFch@R?nu)wM z;x5P9u~la&osqc=5VE)f$Jz2$#%_q~2IZ9nMDEnZVnDI&4LnntU=IuwL(cn1aWlKv zyv#3(h3R1+hYuph?}X@;}(Iz6rRMGI;}$7H+~6&^hIq4Q_WwcHlIL~ z8efzVI$uZZEqGGTjzFc-u2W|e8%x(YjpOPp3O%#BYJs+l$QTD+2kcK3xuMr;F_v8v zgFEw`cZ#zH)SC|Ky>dFV&oYgOw7@2|2eBEXF^lI>a!0@I_dA+vTA)NvAcfWv!ADhq z3cSBxE~j=Ayrfw*h*gvFm|cUJ^(oLsOPzeQCb9_-f8zj4jHQFs6M2+hhCSmItmv+R zNE1YQ1FrJrpzaBJ6WQ%)!^8v~VUDAM6^AV$lfS@jC$3oIRA^ z!{Eq&e&mMx_USw`?^?<4`AnMDS7yK&tVlX<@FURxqdRL4;w5*IvEuh(6Y8<87ZC84 z{0Lq=v*|6-?*FYTi0>(5&{@8eROzGlY0WZ5sa}`qqfeND9k7*t2(e{fNdzR+AR+&7 z@@9hY=X?HxcA;*NrlNpAFbA5kHueA5AFXNCqzb!5Wm8=IO4A;0r8by>lN$C>F+lp{ zL~O1gjrMq$k7$(+>lsSbdrdq3Lr&11%Z1G;YNa4qwnADlb$c&u#u}8|Ad=108A)ZS z_)-xZs=9L4ZZ^Q9&)9z9hEs%hBf+~mzNJlU4deSrKW6bPK2OY0oR!c#-* z-o)FThZH-PP+-RqS{mog%4(m9VRghYME4C%tu$RlW?A*GhiUb$6?%1oUEOiFi6hSb zXY$m~jJ+_#In>IvLazUz#UKly7+U#Y{BNlTp4A(bK&jx(NT)W*MXVynLJsn^4M(^q z{}4K>EoSM?#{}KV!4Jq4(U6dHfnU^6vLf=r4=Z1F55%Nbu}{m?vn=ho(}rjfG*@o( z0r^wcN9FYT*j7#06E>(>!j!ND;@#V%F~+N4Slbi(pXv;NvKTpHE4L6|#n!Hd?RMJK z8X{CSz3ERKtM&;J@t~gh63m`~o3cvoU$r#*tmSMP1Wd&9x_X`Fdj347fDfZw< z@6FI#b{#+~FC(~>`yG)ErO*nv)Y5ap1s|mT3uCKWlUZ;-Uh`4u=7?Y`v(8<~kQi|Z zv3zD{2U1QXh=WvsX->=kcYXkMNY*4_fswm|lp`o_ZujKdrt|xOJc2(jq-$8U)=|SC z4;JGF;j8aKKo+=M)=dv+6*89_$b&Py;3DNoymZKk^f;M&nKRCUf?0@v2b6uDqte^g z3#1>mSz927O&ZL}d8N5>s0{uUu*VGSMeXy=Q61%2v-X4emr<=S`j_dd`eOQd8Bq0h z{yWtVkPG+^`cKQH9D~$9AO8&@ckCV^gPPLh!jQlNfMKbvGcQ@WHbgI>NcRhF`$}Z_ z-9q8VQcP1-PJ4BmGdC^Z4Dw^+^@%<@O`6uV?`ezKlsaV7kx4xy)9Q!(Uf0pV!l*gb zpJcvHOW~q;!?R8{ca8{<{$(~Hy?mP34M2_^v5D!hf7x!g?VxR%T~9;SF^!Zggo|ku zNn6HIKroPE6Po?bC3nBu`{tBn3hLOxNL*7zuq3ibGN-?Bn{%Rne`Cv;!jh1b&U>i) z{^G0>(ko5sV>mhlN&RYQ>sxF3(?y^FUe;qNS14wTiPN}I_cd12cN71&qPe!4FX`Y` zW9QUr9q&~c>W*?BFHzZ^U5?(eM6HX~7SQLm0L;~{l+;6HY8GMT)6+2Rlskn%d_v|{ zTE>1MQhyH1yO=$IF4CtP+=zrIt7}T`jGNy~HtNVlzrOlUX$IDLus*~)6k_<_7N+6I z_hSU+sn2OvV$+cO>X7(59PVxa)YMp@Lh7LVmiSquH;|)cYB)dXz^t%IO?0iheMxv# zU?K3nzHP8IqY@xBN2TY%Xh{WQs3D8oSCd2R+vyN= zdsGLzs+V$TK~DMt#nFJrnq|lR_uM6U+1|aexCr-j?NosL?`1k*MOw283*@xyOHWv7 z+JpS_cZA_}!^A59QQ4Ow+Lc?XhDs+LNX0=~KCO8|U`vomAO}4`fMezu4>03gHMhr# zpVm->4GlO?MvdDJ+rYQjb**bK5iUDWoC-7ytdV z&G1wy)~jk9yu#?7;TK|QN-!ZJ8$dJtbK(X~jn=7^TGqWnb~syuz@L`g<`j4-G5W;; zmp->#EwPu&miH{#8NZkkM1N`xVjAi(CNsaEH?eeS?is@k=R)s4q{Cr4z%YJOtesZ@ zx=2`yzgvUL*cR6i75;bCr{3ZM*sHnxxKlmleUrN2^GlGU?A^d#mS9Gzz(3Ag-7;>q ze3|s`)QhIZJI4zC#-qbNuo7?OYmJHu`Poo9zRpjr@DrCkeK8xin-FK|`0#NJ z5T_&m7d13%iODeNj{fBE8o4z-R?s%CN)sjDubmtJ4V#_iIn2{=!_|&9k0?}Mk z`1gn%t*on~B~p!jK+We^I;wVle9F@S-86rAU_CNIbgo?#CywIzv8g29>OCSbag(<= zgQpO*;Q*SwnQ2Lrf^U_@YIy`7VGy>{ge>?LJ)FdbFXvRNFm2fU$Fz$!e>q)q#U&;U z!u(?L+IMb+fK_A-c=S!wNVBP-I3@(~6`rUI+__8U!NCn$R**XWKZ83-FH_5Wv8z?=i%t_Y49r_fb#uDqkQ>EP6c<`|$ z)fFV7YXuU~PorNFOtSH#SQ%)z1E`zxRs`GcR zr~XZ?^~G=P08}aJ z+A;7@L%7h4#twF%RBlk{pRS^&y0o~yV4+(wh-@%{yoMJQ>71=2X5j8nXz3^$LZw3g zT~`rTj%YKKs3G?5&Sn{}PX?&d-G9NzRryknW^32r%6&C`w{88%*$2VpL!jSk8dYiQ zW!7>3!y33Ea*HE3R4QZ}YeQvem0I-ET2eiQ>#{A1i#*i^MwCLJJDynIBlz zMU)srWzT>EZ%#}GJNpNojWf7R2cb`{1KDB)S%+Nv10n=o8;ETTgTK#Xk@AIR)UL-i zxPtT&_%BY4%%h5GBxKr;2p*2~qF*I7O4-L3jJp)_ibO%Wf>!vFzNcxajnu%FeV`&; zzgPxjL9YIZL^4GPr{VQ}< zsq6hq|2$jV-x(2HB-I5~d4rHJL*XW^R2>1EM)TAZ*1ax+%6zc#16;dz+(qDIvIt6tiTj|qc$74lry6sLSsIgl9K|nG4K{x=Q}qQnv0MhsKGImQoqz|z@XJYlwr;EVoPPFp z%gm_O$||Vxd&{AnflO5Zr<%TaKnge!_EDPeJL)hDNt3(=PjAtAV%{;WiKQQ+)B;3HA#qi&+4F>~ zx$}~lHE87&m{^ENsWG1diS<8E0zvp&BNbS_1ZVP`^JwN0jscVT)xmnT78=apJVu*@ zcHJM7qSBMHfF^8@$ZsyBgfs!84%et&P=7={1(6Y)JVVLEhEWA8zcp0>J?*ZC6`LAs zshUxFSVk!6w=ivH%@0I3xPjSY!BkWYHe=YD;L~al)l?}9`gO@V(Q5Q(oT#MqWSsQ9 z1~)m`Mh1RtZbP5xdRRS-pQYinAaVah4TC_n1OMr>Az!c+J3lYd(~a0TcUXx4W=3cP zZJ_f10enD%zj6uO;0}#rw@a+PEd135R!S^-i)-{%|YkimcQ z62F4M7e5hG%Qmp!?PQcQf7&fF`{73}?Af+wt8S|yu(jw}WrYtNi%EW`nRZt@$q`hm zOAfTeHAM$ndiLJ&%d8&X%;kzHVyXIi`MWJF80n+>a`CGzEOs$5%wo0-UvsyM*iuI6 zk3kf()=fL!(y|wl#{5NFyIyhGt1x|)@y>0NNRpzKF(`MgtR^ddfAZS2X#8d6!PH^@ zP6mPF5d_PGa}u(y| z#<;0o54+~Df2W4TrJvhhw~Z_tJuk;=ID}J9#^~LQ zMDYLppThQ|{rzu$|9_t;pK?Z!mOVGy=$QJ!J3kIMmG;MQsAJyPtqHP`2j?{_00xin z7;K6fe+eM^>YwjleVzX6*s$^N;j+-Zj4J74cr6LGfV>SL!Ok2goUC2pxPNTqI=~ z9Z^s}hS2fYZ9Dc__#gqg51eXF4tnMe6A<0(4?);~b0(_AB>qD9laa9R)VJI*j)%{} zAJjB0YX|Jph#pEW3YGAgdIfBb2Ai+$^Z;TRe;x5kj`E>A(w919+-OL=hV1|;F*hMg zp#S*mf4HuQqVNv>#Z-vD{rC;QDgAkMJBU7UB&btt4{DaQhAOafexVjwr#n2|;=IU? zRnORKRYA>8%BmC-Mz=FHJXB(gB1}yjRW{27-Hys~#Egu_iD!CAy}$yn{?-!k)*{H< zf1;4cegtw?IYNJ)2p_xahJV3#k4s*zN|A=>N~|DNBeN1jlQ2$LIOj5>dJWacqFYWD z-Gi5kA>NOYu}{LmYvK3RpBBTZN-(c5XcBku$L~J9f2U5P_*4{P5|`(G~ym*Xs%;yp456ndPQc z;j4yX&oryDSVmH6qY%Zjs&|gZ5A?jAN>;W)9LwA#70U)JyHZTn zcc(o#OE(~s$&$5J_tdV9TUEI;32!F%JF%j8;(N&r@tTtLbT+vdVqiz5#w|tOf6G{E z)y1Zts$bz;q(i~Ksg-YC8p?4MZcw6Cq*1686~YD(ZJ4ZBdpN*yp^$0%tSp3Y=9cD{xk|s=(QrMFq~b zRZ}35aPI>`ZalaC6wI@F8&1qA9pteQ+jD;@K)UBv z39doupnS??O71PrV^^ot<8gJuBG{L?odUVr+x@4vN{>q-!Am42NWA(e+AE5B0J&{#Sbx*XWQr`nsKvf$-q zujf`iwYnI|9h?@uW7P4zgpF0gzKmnL@Wo&np|9r4KX2M>;q3Nte_K##k?1aMO_c75 z?c8aR6Pr-Xe8DVIK!003T7WD*rDwTf2@D*lbFsS9|Lw;QM^{(p*GE>mYGt4Q4%fa^V|m@EZ*1YerQg7qQ*=#kYy3d6S&?-5JGZ0(SZg}0(l(x0{;wcNwj1%+ViR5> z94T8yt+Ath!N3C#|M(1VnbeP~`$&X*`}_*M(C^>1xMBp4$vs~We?uaj4`?a@4qM+js!X}`X?=B?w?@!o0G|hn z{BSB}G)UVOs!mNQJ7hzFr9^U!m0Ns)ARMBXmt7&`!`0O?$p3q&ns2J2TTzHr64@j3 z?2Bid@INvNe}wX3k*{`t$PE#1Q4P@)pyoXl|Ty#Dx6dHe?@jFf~^^dwS%K74gc z&Kmq6#>Dw4T++9p=c*uMDbmLDv|@|EyuiWFAL#4qOl=uu}* z=ZD|FGYbY`XI?%aL_OICizN%mpWrAXL8kAJeybBYf3RM1Hexo~ENQL6o-j6vlC6b% zD}p}86o&qkulGYNpWu3ffkaD%qF0)jld9r=gw;rHJ$a|w;E<6S{&=j;Z1|DM zJa$06)D}nkSL01Q#j^qVCLNq?wYn@)@xZIFfATmz)7a0kI=HP+u$j)<+~TtzUbda@ zb#XXdt1((8lXuPQc1FAL)Gqeid2MtoHfRG74s2|-8>SYxW-A+El{#Z-sG#CyY5w$( z*3nC^Y<1rnELt~h&aP9|cH;yu)jP$PG5w^cQkY$r19I|9pnDR=gZ)ZW$J5i(;`cEX ze~*tFbhJ$Xkw4PC5g8N#}$+WTu<} zM=`c+W!1}|xLj<15IhvtVxAJ$IsBS$I#ug}^G_vfiXrM~SwUku?7&-;hxzd=30p%yt>+6tKI?qdP|x42k9b+H z9eiu_pl)g=3)h3oF*f3{ca$vFj4mv=S7w9+GOc7laSr*HJI_r(WK{+L`inHFe~7B0 zd&5!kOi9GrKdzdADpA>&x`~S~9QU3@KHJ%dHESm8}bxby*kQ2AI})>xI);=i&)H>%t-P51%<8H zczBd8n{Yf5c8ytmzR+&L?s}sGe|bWMyzZ1%QE4)i{BL|jy=}a34$1uFbIls^Y>+aX z23oZ(&(>`F#uAy1>)JBn*orWF?!22#T}lah{qbW*cf7%vOqH$>J3SG5{S>fx2NS6> zgt$LS->UGVm{^=823Wz=(K;6Ss!%9UjS50dJq+3cIPmVV&RZ11lw(e8e?^=)k;(qIzu-XnMDBq!H09X#^w-_BC@}3LC zhl)V6^}P)tUQ95qg- z-EE(u6)I3=B&8}7t}YkrxT+6n;QZ3in)2lf7zsDLXS?feix;Fi<%Hz4>AbQ=W+gy) zU$NQTUj0ZdJ>b%wjBYRbK89|;=tmDMR%N}F%YM;)ZS-pAgbmjOf=Pyf>{FiXp zsW?ghk5VKX{q+*)6Kw`k^<-0)^ys~t zw?>dAF;YDFZc}7Qe-sePCs-DhF-p3V%KlN_uN7R(^N#5n2@!2;oL5fI7r|$xD;QaN zF*$*Qq(Ih>5vyY~KLh1Ux0C}hO?&bA24SOuVaF;D%rX30s)OvZQ8pJdqiilJMcG_b zjk38=Q8omo`mC`R+X}u}q#{|hVM9{##x(E}vZzk( z%}gY#=rg~Q+9D_oHj+BJk4ja=@l+X=;BZ`DOeS7d;;#>fWvDpaQgz@9Vs2mf`FJFT z6Zg*qX`SD|lU-%t%ky7YgEDmVa;;6m&Mv#KEv~`#?e{-?o#w=tHao-4LHsWEe&*bo ziHtC+15O_(f1COOpWM@>%?f44ejd-ucCoFSdeJ#9LHQ<5@MiDwOqtBc(+-DfIi75D zv^W~ZvItq6l86WGWHV~88$HCG@ia~-!pI=Bmb0RS+BrF~&P79xe97K?QB;|UMi>dM zC^YjL)0X3g#vYBv0+CE3;oopWcs%8$ds1<%)2e`U{?t_iR^p07#(zCL*QS<1;0 z&}G9Nc0uo9PJ-btqwE{1#yO>ce(F^{$H(<-$r#?fGAuv`R~i8VkX|1vepjK z?^04f6?wAB$g8HO&Og>Q6*XCz&#o)Vl^FI`Et&d3ne{00Rrk(eY^g7sDSi;<0B_!D;O{}^UrhQm%l-mME zQY6|KHYrA&RWooU0xbfg8FyKB8|knFSO#7TAK^Rd2NI~pJJl*|QO}7P_g-!$mf2RD zhNQS(mF}@>F)to!*>!VmX8NY3%I{b6oCtqbm-3-^tCR1`@B!?{hS;NB+Lybk-sURF ze{a-=a`{MiJY3`7(3YIn=)8R|6XCc5{wH%3rD3TnMI^kjO8)U!EhCFO4I&Y--L#P> z5zajXS8LR9nTHZRdyVEZ;*5Pnm4Aquh?@Zgce#Ta3C?e+0*k zV*Ll_)??XA4Vh+zyq%G=5~ihtX(_FIF|w7)NVS*7>X&fWyIwr;#ly|Wb6pwS;QLRR zs_UrMm}dH`niKHMAr(b;)8sS35HB2;w)4Ss-9H%ZnS)$^<}Z{a=}f~9N!WkNr1-3r zCCZ@{T^T=OJ3|WA;3X?gT_Rk}f1FWMA2-^-E#w>>vh+A){dPL&vTeLg9nkM0E?pa#WuxFmV>3XKU>AI4=>AI@D>3U6j z)Ag=~fT@ICH=N=$9E`tF`RjT^4RyF7)kvqpD%(;`{t-B3>-o~0k1|OMe-PH>zM)&o zQ!UNyz_lzynh~33S%mh*N9AqJ=FmYHuy#R(N$8_TyA7{*RVh(tgenH!WTMBWkI80o zgPT)Qa!R-uWQN*yL-a;5s~fz(Z@5EIL-ZU_yC$h;r)GOZPj#q_=2On$$B{Qkj=sfm zYG@$%@FA>hsj5*-eB+fi0d$knZzO*&RXZC%NY?1f%tAMH)Ck!NbQ?g_lE`?Tn%7j0 zDfUtT)%s zBT|;NLnkRVO?YZ$tp7P?gT<9B=K}ONTeoG{80AMeMh6Hc+ujN}S==$0)@Xmr3(9J# zO_gk$)H7nT`9xC2InQ3hl%@7hfm*spVM(Z%4dr8 zHG2PMK1?o3?**w7E_+GW$5nTos^Ni-Njf*2?G9g?Wg$mm0z}Nwv--4F!PAK)7>uO| zuznfO^GtCRjIl#4Fz}?xjP-v*SV6k*w)3rk^>I7OoEw63G1yyba=}T~LY7&YYAws| z*f3e)kkB^jbAs*e+2MW#e0Vl1ao2l#bfYIa0j9^QWtF9$7ayHoesF<}ydlPms(UOu zVGJIL9UdJd1tq^KV#X#tBk50Q0We)eHz3{uY12TiDWte|F=c$^*uD>QTg1mOMzwe} zwCH6&Uc!@taU_5Dq!6`l5$!fAk_TZhLmhqYd=siB7`Piak>+AIzA$>0t8DbKWF^|& z5y`XW9=mthRBNnLa9S(9VlDd6{G+gLx*o?OnA#Mw`MTwWy4u!GEMi61 z4HhKmTl+$m8}@;%QrsXF<}qrqQ-LR)DaZLj6T)sRa? zy*!mPj{V$|J#rX-N`*vrg8@1!2X-R+GgCbf>8W56&P&f!umDLa82YM<85Z}KZk$uu z`&px1qrIdlFC7B?bxuxBV&%Io!~~^$n;WJ@agqgG({Y7AJv$xx#BseCffDC;^3(|$ z^;mH$IS(?v@q(Lp+H<{qBJH=FWN6h*v+E;Kh?pwVMqOHe(s!stHiwRd(E~=*lr^+` zo9i@Tn9qC>4NdxHIGVjQsRx#!d}3{lX_DnL#$4x(!OrU-i+QbyaM%Ybq!FJ0!A~a` z(Y)hSyTA^ERZ)Y_N(k&lq%fxH-gM$95d>&&r{82lRq@GIUrL?J*-#HbbtMWX0iK4KW5%TW$Cz#Nrp!uAZcPVFNpvBz zL^kuL)@oJb(1f~CPc@7FVG*@(!*AJ6d$p^gVJ@(Ln+a^w2Yh$S33#?MPNf*CzNOs# z$}rcY;n{mwv0`5+5|cY_;L2@?GDnmM7&J+-IMPt(<5K6q^QmEDL!XuD6V0SLh0C3C zdrXJn*-&bIlq#^U@C`N9zKO8F~{5GqZ;kqmrrxfLgUU)0n4ntcn zr@|eujG`&1CzAe1nLDu1+>*A?PG@#Rd8b-Ld8cwjd1u{-^3JvlqN%gy#_OlBuF=`h zS>4hp&6Wp0ga2hLbbOrOzG&?`x| zP&qtV5U3UL*_RQzi**o`r{QF{1I8EwZQ#V~>l#nGoDrJiv8@#i!Y#IB+;+Z`5!XP8 z!?D!PKXNqO;RS|u>QsCly`aRb-V_vn>LX(zyfWD@nf! z;@ThNj6_;Yd{fq*l5Z2wT9((6W+t_>>jDXoL`(t<4yjAFwkq$izqTs#a(R;N+qr?D zM3A5?)5?#SB7t-1)2B~&pYE^oSYYhq$hlY?O~3!s1@M9#Nm3MSuXUe41aaDb%W$pa zhtreSyN~(fpPcewEA@-G%*kM#R%GY%{I8H{F@}n8B{8-k0U1J6Pq5Vwgpu3lDd!|BM14A{N z@^za^#7R5#4P*(T9b@oaz68a8Hb@*0DRN z^(jZ+;ip&z$q$v2@H4abiru$2A-?dpTO_$&NF9MPPQzw4zJ9&LaL_H;ey_%pVW^VQ z&37XtiN`lgkWC%elnw5b@pft+-vZX}W}~QVjm;=GzR=y<#rPl!MoF)Kl<#kjCdmeA zLWOXvXsP&`HA4;<`ielZM7?J9o{h37Q9`7Mv5v(yBOKzL0IY-%jeW;5qfzEf;TnYHCHxZ5JD-rdfwdPzSZmz^kacr9y zD{oHE-$5Ve$_zcJTxRHrw7Pbgq4!c_Xe8MN7Q5RiFGNFHvPw^3LD(*5N>~&Bd!3L2 zn>C@@Al+)LjSu+OlvUm~+WG2Dl-ycXYoMPOIJqJyJ@Biy4=MtG)0lPkWRxHfDjk*> zWwDYBEggRi7RZQKl{2~s5t>wm#fn4${-17PysWIsr2tSZSeoE0MB%jZevmmyDvq8U=0-g9bypng~UwCYz9-WyYYI zT`}8&%XFFf8Z=ZZ4-iFPQ0P|*WB&cu-&k+_{nvl`+?r-IL>`A6;XsaujP zXnmi^2l~!bSb>sJ928?F>3o_Cb?GzZ4!h08JFaGVp20qUHIecL6WnQC>ImCK#NI8; zP-)*3H!j;iGP-mGi-eQwDK)Apq-7M;Bj^hw;ZHUO2gtjFDU+jFqz5s=JD>TQfj7qo zm3Nj47e$M~i!0Rl5_XpTVp;3O&AFo3uNh^TQsBTO&!Sn6auXw1PdFclENfk-Owd*& zk!-gg{DBXDu+JZ@%E`KRsrE#d_9d=z?8td;o$eg>?FO6-3rOZTw%4Xv#jXj&y3YQo zg<7dtbj4pc8^eHn7+?V!yl}+V;xWEQ@{Z(mEG|tJA2f7+B#=Vr&bwXwzMydPWbubq z70UVh_D2VKKD#BE!=h7Y(3H)h{h+@ zQ#j8YI>BEX5l^-=Ll)`kz1iW!{RRHooWNW>q8~ANF(rKOngk}Y=n9Mfj@(*0^^gyI z+~RY8egRM+NpH3RGPOl}KIB4++|#1q&J{~KIKas3cwVHL0`?AQfkp+)W3J{Cv0|Rb zK&y-*ES1o8N6P4uGlotO9YmwBYIq+Eg03KaGS<6^7w*QrP{UH;zlgSm>tg^&+?7hG z^!Oze7lHwRp+S&o7E2xrhwU1$p2&edxt@7{oNy#i!`adSWpjdM3so)0R#{NA?!nj_ z7MIn3T%*d_U?gZh%VEeNP=ueQ>w!kZxLF!&_2tovlONx|3ZfXcY)+a?lZ6GH-n!oE zq9CFlxe#X(;=!|k9b99eFG3Uz0a9{ zA-)kv_7MVC&U!;*n8p_{U$s;DN`!PLGzYAF^Y24sG#cC_k9kwp+=;;P3NP|B@(c^E z7KTxamHVKYmAhck)yk{Rne*$&Ois4<9j+W)7>=68ibeL(*LsW7`K16kLnO5)a{tjz zq3JfczEy7s6K0QYDPF;j6DF_h4VsUC23?bfVk29Y39&W>Ida}$WUF0L_LzM2dK0vG zhf^vY#O9{Y+={}SoU2kEUschdcjLz-^8GtZrpouX2bzB7$l()$X(wnB<76;I*s$zV zO`0-+)NDWj#qrkJ?sw8Ir8#XRhN4~fkafca(Ow%V(8z&9pUW^ZfAHseV@yhayOXna z6aAU>SeI_Rs7v#AVK*x8$h9|{T5aPahFmQy<DJO_VsI^x}0x|tzPaYKML(bG)h3a zPUmtT8!KpQ1+H4**0n@Nu6AjEx=?u}er%GRNQ4+>=Xmo2mY+`4V{;5S0<9TspKz`P zSFM2KGcpIfn!;ab`%SZKBzN>^KhcG}xvNN&pW3YbJ7NLl;Xp8)W(n&9_$KWPB?#Mb zYtVwhy*NCsyiu;S^*iixaEY`Z9EPZZAablz7Gj0U6KVDlI11B&bQ$D`m!*p*OGOy3#ETKF1xGi#TF3%uP)aU) z2r$*(1`Q%UN5n{Bm_sIi2~p0gF8BuwbE*30Mg4NtMGh|}FKJhh@!O+?Vl$}<2~>^L zbK9|x-dZ-J45*d-5=UV4WJV%r=SiFnK#d=|ftEg7HQiI}%5>Ys*|yb^ZCeMrB}N~W z=hd!8;g@LYDows9zQEcUCf})N#e~eo&CJc@s-(vC6L>{<+_a@}#hsBN6y*12+YSLbNn4FA*!${NchW?h_9-_Qz)hIO&b=gE`yLbNOL*X`#b zj*qxwp^dVTM4oIlBiRU%J7(G_Gug!1!jY0uCcWkxUV=muretL^nxIcIaB6qB` z8CHt?yJReqQt5Sn&$-atPEOQ+-m&6lSuwg}#VbhpLzXAMpo@PLe3;eegScbH@{o(N zN=4hlOd1g5_HhwDvkeS{h#y|&0G;tAhUuhq725$36GHy2HFtXz9{o^4!z9uc9pnwL)EQS8J`-7!(^ zOf)SkCb>Nfbc(fH;bVRa!wt5Dg+6tot>&S>hIxYD-f_^TIOr_gZWp72Fm{W$XCcPg zm(5Jwt!5=3ZtjkoHqA}RR&!GkWblry?$qu&NHGsSdB;*4cL&V2+dEmrBE93N&2!W` zx>QLascZ9pkdCvUduem-mCkY!@J7mW!VE>p!74(=%%QFPUSrjaG<=IJP_#W;_*BvsSIG^)^XARZgeF+!zbPJeyFN=n&}nDM=$7EE5pA z`s83Bc;IR}cavI(t5J^f^F4A^gzm`W0?v_F3~iEsXJ<)-xn=>SLsPmSC6~=s#c{xI zy#X7l><1c0f=d`Pw5C*F1ByBj62Q?sG)8Ms@i^&aqYNwiVw?~L3KLKd&>#EbI%M43 zP7n{4Naicg-6nEBJ-p=duipdlo+2>G_09QA<8HVxby;L&(U@05zzl})n_$MZS}j3~ z<8kwUAA0oi6V8D@;!OC{Dmmy3$ioQ#&PtiRA^GEs6BN?&?Dznx9?mSc1FOb`b}f^v zN*$QC!+N)OspvJcQutT-8rok4 z&JvAP7568a7A8C2!V8B1r?jHfG2^nCyv_lEKyR19(aYBbaVtNoBB}*TTG$`??%c#% z!3pOwm;W5}hFPYr7SSgU?mc^*z@P8)Y=Y3@aRuyseEHPvdQ#d5;}>uV6P%2Fit9js zYQkKPxAyqqg9ncvJbY3Lxc0CT;M&8hl{cK)8!9Ld>+88w_k&khU70w+XguQ?40RZu zA=JYxO@0Qc_U2_Pc!%2`GupkS*7zC7Hm7NV8QQS#PW5X+{7 zCSzRVFr79LT*ONFAYN8;_3B`Ls=l%{S6)%ZAniw)wu zr4A@PemM`Gj}chToGOogZ*KV4VygHJbV|eoV!yeotF;5cq_MlpHK5A2eO+SU1!@3U zK?WSaE=k6SH`(K#QTYyM(_xlt)Q8EeI}&bMc2!?3wcknxG`Fc_RE!#>f2+F7%-nE? ziFDH-nR$j~X6CC0Yhe_^=Nt@w!%;lNIT4$ecZi z-Rp(Ap4Pgh#K(j+Ey4F7`g3}QN;oiXlHea{Lu8H=%G5DqjY5PLi=GA#Dhw`A+1wZJ z1R>VllkZ4UqC;RR8`T2P(i6(tS^=NnQ-+$E3CjIu&`_~^kt@|H;`v_t65qoIi z>2vSdDsRc$!)MEYp%C*F>^Uu%gr0L!DVi5aH^U=)b4;>~2$PpfeH0n}2g^o6}1 zLDUY6#HGn9R1!4G3!%{F1VEwqkVha1pAFluo5W@p87IXo zCX>@ss!+duPl{<1E+EYa=e$=Dci6lbGDLO5)@ETM`2&AKLGZPF_)`(_|cfd%|MDGe$Hlf2=SS zfWHwMO{okHl&OPls$rPVkn7oJaCM0lvmzL3uaeUgbxx&v&4p%mfjITC@($Wz1C{0i0^h<3m4=HIbgq7 z)(fDCBITvd5HKHqw=y~fdZxf-9*?CslQnjCf+2#y;qRB)=iAli0ODF7U{#WoEc%4u zf5nVv&@p>$DK!FGNX)6(izN+x`h!wy@ybEH)B!1M}}0x zqCtJ44+{KAlTh2%b&K%@726k%`J@0e2*Zu@v4Sm*_h(&yTw{^Suu#)@kma=2{aM;0 zAe0^aImfTiLKqD4SP+}ZAI5Grji-K7C)R5^HRcxqPT~Xjtub&>xKFVt5uNBfRPk2sKmu?cQX;KKOx_$AuT=T3mQM3xNJgq**j`UWlwvA{uBF zm|vEw5xsX`+FiRywA42H)WbRE@njTY^}Z^TwJhanz~po5f(bf8FnmD~rGvnw_p+6z zSq_tb4Z_zNe9Hl1fa49YZK>*_mlq8_QnJ!Gj^uXG#3H!mFYz>(0o4oD8Vw8W_#8rZ zIp}L~&L(vl1H}}I+sNddD{Wp0$AP9W?v9pmoca9DURpK7V3QScF!Cwc7zf!w z(>b{7Cxzk+6Lc&`gT~*IGy+Mnj(C%Qrf!)i zdy!45?W{#(5Yud(P3rA-kpRUbv=#hKT&7w>7DBSLn;LN_r|{bQxwroh8UqdCA1mx% ziWH+70eWgCNQ^eByX8162;{La%Mq#c3Z=5y`u#-T%?pW+>7~Osoi$s*krZ6IgS`8;&)*1(9i6*&HeJLba*6-sbFN$t7E(7E~ig7t7HJZF5SgeG< zPcSZ|kH(dFi?uyox&I&HJl5=Q)=&qd!w#naJqfbcYZ{umDcZ-v4%gmHO<|3F6}th- zj+D}aPcfJGp^IDis_6uOjyuyE$J1dJ880)?XXPkujx!^6Y9(0YM4_=UKip?Z?w6&)OT~L#$>aEcH$Q z)Ven;Kgg%~bu@muERu|j=1yHhc#QQPi~W3_jYnFAIR};~Dqh|aFH(y{bO|lBN?l<~ z_{Zg`Ij+2OS|3<{R%lR-EevV#3&sYGP^sBiH?l&tI~AVAACob9#6KqKM>Z6E_mJXh zdRfp9M=EZvoF-FpcD}(qe@s(f_ZW4XJ(^9|Zuje!7tX?5DLR5;vmKlHQp*sxOP;)$ z#uUqoE=y)oBsTgikzW)X=^}9wd2o&6{CtQSa0A$)vT!{nq4f2-SG}My+hpI=TC$-fAdGC3aV%L&N~=FV-3xz zj1tlVA5lPsdRvDETm8{Y4QpOMY_~VcRJ=yJ|5Np}^;``hM#E_{IW3sL-4HQWoTC@- zGy>OQs>^AAa#TKs$a=Q!j`2K5hz&GQMGMT@_zhzfb3RsFEJ28@)WM>dw)Z zQ$*gdhj-t87t>*$%?88Z=qNLe0x)_5&vRgN^0hO-84@R|k?$o>(q4j(CCc7ab5{Rl zz^ppo$3(|1QfH%XB^mAxC@M4ZGS+Z&vJ4ruWvDb5dXyR>SC*<7I3U6X!O zWP{h#+)GSC^?aC4NoGuDWME(Z z75Qz|xx2mHZ?;gO(ahR@2Gk&}N9gn6E&o|lUo>u@xFvrb4eu?QguAWko5!A=2RDkr z@oP1|8q**%s77b={K6eAWECb2{u#^5&xIUx1ah8# zdaJ7&JvHQ+HCyXky&%Y|wT!xBN1e?nGaF}hJhoqC<4KmH=inGr_xL0OxzxaeX-DsZ zX0y6FAa(31U`v^F8FR(NYM{~@6UAX_4`#of}?>$yk#ymzl0W( z{XB?wR}1%&M1n7Cg`Owf?Omd7(%ptNV#~CFj~d(N>I$A;?vhQAIo;sU8;;LLLjk#np(Zn2L$Jw} z9zmrv2rN2}P5yUtIZsYJ>U_Jvl|w%*@0!8Kt2uM%jdi>^++}Tk6YW>7fx~%f^^J^y zP;W+NFjYU#_B0nXOK-v|>rrEWane{es=lnAzeDDm>g`{$6T00#k<0BbaOn)fxw)X1 zAOpGG$Lo3mtEBt=?O)Ji{OuUcpD%GSgBQogZbStxrbJox%EsqFtJI#PgKxTF@6#a9W@*&IKXFR??KWoU zj4^>GXHbOkrHV)WHZN|wJHThxo-o48WC_PRg#ok}Q2QEwM_EuSy74q=c&T&Mywq&{ zIlAL6;Yr4bvA}HDqfSeIC&-xSYABoXz_1NkA|yu@=S@rLk~67VtCj*JEt2bB8i;?< z^ysA3B|^sV^7ditQE=i3R@!lk1y$+t_g{aLUfXVR*zdpo(;I~gsNr*uuf}0;rYzFj zfLpT!(}$DM+82qwamAst>L!HfshBvLC}?KZ5xZ3$3M@KoFPjKNM1U$ z*FZ^l>#rEqHWNf!t!j9X035%Y!rp*J6ZL6l9p3%JY&6Zo-Y5>!61J@?!uokJjGX3h z`tImo*GZE1BG-d|S(?F7o1Z1UWnzN%YW3sL{9Y8YT9-Xuyb0QpTjinm2J*fTgRcPq z1gE;8aly!@XfnN%G>R_>FhXO%3B3w{aZV0EjWqiEVj}Ix!ReMl0}_m4NdR0m_Nv`p zzX6!l{=S{o{(cnh@4FM*-!IH;e_xWwR_*mHOCkdb&n5vS zm*Ru@YhKT6c-PQ#Nf#h4QCY$mVqoz7eK-r?e<1Dl_bCQ*f8Ptjq&%_FK|WvzjGcAU zo#scxOZo%h;OByep9ga(I&(14dwZQnokvd|-hWsM^!%t2(DNhKk*e%L%O9ThVGC&K z6GhApQ58#n0E^nCB@D+2;qtYVP!!hci-yD_tP0H9G<_EQ7 zO%tPnN)n5xnV4tUWAMINu2V9c(+3{M94691rJU4T2g%ce4Ha$Gg;_+Dq2hrypJcUD zIDSk82Tja4l3Tn=US0ymI8C#+zy*kev_Qp~V;%c{MHQRIs+XabP(edmA*-c7Sy|@} zz3C!zYU57d?ksy9(^-5S)2VhH)2VzN(^>aArc>i}j3#kCKC4cR*D)_+t{`ner8e(J z?0h~yVsDnKxLk)`b469}QCB)D$b^EK+^OYL}Z$iVbEovmi_5eA9NAaZXLM3D>D8S829$yyq+JQEk#&3`n6GiHa{|bQdret(`_nU8!k%vbY11)cW)~fzeyvyo_`Mc*kqS}lmmA(eXwQ~&P!t6-LY zd2{{iWf?7Ch;1xginRyldFU%Ri1;pZE_?d6GE13GrStuDsS}=(1}Kt%apVUsYVH;r zql!aVr_7IVpyIvEOd89|13i*9OYj891Fma&*PY?{H7G_dKNgX;ZXrLOFj(xYhoKiN zQ1IqOytu$bSjAOop9}L1<4ze>TKG(VW0g&Hv+N*Q=C**em3 zgK8div$ObXV6zwDsJB%@4=3~mi@frz+UlH0uhx~+emfZSP6~b*Qm`cYbk#^TiQ=Jp zmv}vmb&jZ#s-R}Bfe8A>x1@WvCpWB1G-4Y|NKtOKM2G}NNiojCAT|8rd=%k-=ZTKv zS{{GvywxMDB}Oi>cv6KpHZ_|tB<1ux)8O%|#s*2;lTiM((7PCpCG*lhuMXlXEe_)8 zd#Qp7eJv4i)Opl-^61+KPo9(p96hcSaP*kv2@|f;uJ@_rM?UjUC{qld%48}2nPWLs z0f};rFrL+C;Sk@OLLP&3O_dpctgcfF{Fac=Az>;JGJfpLlq>3T;oO=-O_1@&7*M2R ze@SpV5{g~S&H_*&Xc-M9x6nF8BluWX z*rKfuu!1C(A_A+9#S_kEEns)xF+98p3R^=HO#W973o!rmy-45)kYg( z$Y)VMqKi60yQUmEEJsRz718n>1o9Z`jl(eQsN*?QvSpRR}fvj zbu^nE^$+85mS4WY5$tn4zF{0r0+2<^s9tj_Ba84*Np=YqY3G8ADF^r`Dc1cG&-|GB zcC1cOv2lpOS&~oT9hA;PSTa9t#Hkl&sE7$VbZ2OnflOGv1}hhTz@g#n{(XG0*Li#x z?EVzye(^W_qMHn`QbbE#oCm;USngyc>N%ANr2I6jMe|RdE-1%^D zXo6SO6r*`GhyDKRZ+0=UKq@iXjzy2fq)upcs)=b=LY4-)>pXaf1;-!kb!@M0`JzzB ztn(OQFQ@=SIu;9mm<%uBbcaQRF;*|OEOWxB(b;^>gHY-XxK0Pg@0TlPP;g)-V-9eV zGCX)a$k*ebbokp&g_mYR^grY6=WUCa_}!RR9*kKsSv+QTmP!I!c^mXVvZ!lno<0CM zlw~6YEB3#-a;kie(<76JMqmA)^c(<@JJpa(5VSKZ@1}_tjg&zheQ? z4wJz!&Z{r{0cn21f@pq^lV3RBjFex03ji7R`$uyW` zpzn&Dv6A{c!MX=INJQFBHevy7XxPhone`^|7Mi4~qbQ4?1pl^w;jHXmx`W*wyG5S; zKTt~t2<=1{C+m`y004)A1prV>0|XQR2nYxOR#R8Aike*w2v$>9J~U#xTC?w`eF6EsxSvINHsG}Gc=PZtD!bCA|P#LbYVJoZ*pWUV{dhC zbUh+5GBh$aA|P#LbYVJUXkl_;V{~P5En{zWZgf2&I5IFbGn44vX)J}Tm3>cS-x*^YM1~Bb$ZjafPL}LxFt+TBrLsp1W7m+ejxmNA z%eV7>ct5>A;GOf{{pEhn`JB%=_ulh4=iYPUpBn41F!D0e(9p2x>1savmm6qkF3?=2 z|A$B-3RoH%_9;Eh$L1lq+w)iKZhr&`4iI+l35n->ywUc0x>oH0x|5on=8-}+%@^Hnu*a0da_KmML?SsDA>7vdJmFa&AhuSFPS@_)^5Fv(&+^fPy?yIO64CWM~5sm#Mx z4yc1;13;$E_8EF$9v=cIrk1?FX8QsrD~&&K`_zx`rcJXh`?*{g7d#$zOpG%Q&}hF_ z>mj@G!f>B2avU8~ke|`$0Ds&JeUFl+yib*u0PnrZNo`$qRMgG8U+G3#T9i&{gr!Ad z>6Gs7kPzfcORu;{r?8ZCcS*N^fV4C$A?4Cs-uL&r_x|2{?#!90{+FZ-pU#W1sjD z^WQ62AMXJN`3gQ;_22u!t7WGz`l=IQ8<+uk;+gOMG|fHT!XrCMXYrer`Hhq?`aVwJ zyVmG9W@tNf7?a&BU5-bj^^4g<)q6_WjsRcp^?eV#RQYR&=?E!5yL|$NO@~kWaJ_KV zX8QN!3RwnvMKlIO@(f{FHcR$e%g@w1ZM0&`7sy7S?I+)CTKAHzq2xox&fj<@@bMTv zW8qELfrkRHpl#k4ER2FLZwKhN2w7s;SA>a{Z-Ji4*h2J_K33m0{49T#4YG86?;G z$-?*2(OwrZzY6ENUD_x0i}ksxqhG4%gdK7Fzl5lV)X$xq|H_zyGqIE~W)~_GobCXW zv@sIr`8c~E!+x{b$L3U?!}lAattaOp`K`}6Ci{A>NP7ruPDysccR*0_41A}}F@@Cd zzQFoyloYe|dL1qsWAQDs0F@juNDi{sPC8TPr>RwJmDGu8I|ym)in?iHACz5asglP~ z7a4}zJEEy}0?hYP?r1v(-&ic&JOLKF=RaY*zJ@-YYrafD@>nb_h~~^J8dUX&hr3rCy@{n*(4sO1z z(;RG3xe*PZ!rlBmcNHXCI2KY(DzUh-)7TRfcajrWi8+G&sMDZBHWL=Ws}ErO_CMPZ z)aW`0J5P2!GDlbSw<%OJYpmA4G0j`|=^*@&<#TJ{USivm7W-ne#$_59BH^jWr>Au`)0;Oa(;rGLnb!~Qr4ek}CO$75Vor%Q z{P~Q(XsoxvSI8%dYovfr;yehZE^edoxv2SDkXL530GCf~`Um=xpa@ghGOR7(eDPfy zxJ0j7aZ~!+7Aiae8==c@$zD^$B>w2%j8hw{ZqB#;`O=yOE^cu?)=pFpF!mmlr=cpj zT{O!{TSRM$>Xy;78qrdss` zLGvp0G|fvcAtT_t9&_wG3kHpXTrlg*r@6k{npte+_-MS8&mngp02RZe(%L(1>M48S z8T35)**m$1|51S3@IA+_mgXG#GR;YOax9cR5l`SlAnU&8pZ5E)22bb0Z=p5Afak{5 zwz(i+^E#eD(@;<3r6p~(*<>J4Vau)N_CzrHrFDvkXd4jSNwghFQQhB(wr7IR8RD9# za?JN>p4=Z!(t4$x?c^wV8Kki^JmNViEZ9{oKpUrV(bOug!re!Huuh?C-12U!Xyx!jmWE%GYi+fwp}^S>th7O}gEgh~(+t*%8MH&c z%z%uhi^l0cfk3?hb8Gyi1sv|g{o|;bqEIGjf0k$5vh<2Kd9J=~C21HjFu;Xn0GW&* z4#!ck$F>`5sJxKh&_2|cCPl}Mw^ytFwnK+C!UJf=^Yq9xx4980UXtix6%OKlF23R7 zM1=)uz88Yj6vkO3Xnax?``$QQ>Oam$GfF{-;@?h2{W^WuV6z`k>z@kId3J(Qjv?yN zPpwn=)?e%!!F>Fa={plBL)%Z)YlcEA@scV69JJa-@QVM!r$Y6P+nM*)-P8VHuTX@) zj1e$?aCyG=6E!689=ZBeNXs_Gv}ds-A$1-jZnsA@;Wfl%O!LjL=$o^{TCg2;W=rh8 z5Mc*UZ|q)iX>HM=(+fAHS59gn*A)kA55$NV+|s&~R~9W~&Rr~&k%59Y%$;(Fq{lI$fbsn^34R$OWKu8p_kk^9d)d+Ko%py2)`4oi0XCkqeAhaqN3ON< z#VZsOWu78p)5arQj~GrXuHzkN?<+r4&8;>m^w>uxz*imbSaq}5L@WGB|9F#2(^^@C z%4WRPMup4YF*H&cda)~!qjN=9Vyh|NU>{%BU!5|T-+2nQgOf2iPBp38Gv;_XZGkR< z`N@r}GX~$w9{jdjmh9+O*>V2PwoX?{_m#3+j$JfWF&8|oom}OkRw{E=(|k!vJv#C5 zq9UG`nRs;XAWK8y?-?z(1k|_W$t{d5yqs|p`&L>tx0h0V4s=B~t|BQmzfGge@3Jdze#d7ri1`G39X`b0%0P}3 z->>bUJ(e-REwv;bQz@K3*kwBU!nhN0)FJB*3+a<5xK)))$DGyDo$3^D#@e7{{~0wG z_Hp@1ZCb6Je{}x~`dG9=G1Tm0cKy)NCpF^XLsq}j$7ln_I(OwatbXNjivbvVb?mRS zJ2qdo?>UXK>NocO_=7b>avdM<@@D3F=WT}^$065{MC?fwIHOT7e~hD|$Kf5b)gcTK zUABuGJ?)|CgKtmId`IZx;zFc0k&9>dlE|7WzM;7%mxhEEUT&=7JzXuVk3JLJ`}|PD zkM^lhFLsqj=*QPj_LK?3Vio~VS1aV$kc_Pfqrx(P3~&CzsnJ*iD_s&<@|m!|S#ZF2tw zd-#ZZpX|!;wI+|5mGq4kEzT^+iTy`}TfTN4d(t10x~lYg!SmvGFEOnFhKa*QBUBra zWcquO5atXxt@kehK8j(HTK@7BjS&j1FJA*?U!{H*L%`A#pE}>azpXs*YbGqmlY@Uq zLYA7_Q&Sn))izY$)Vtq*>%BYq9lBbpmvim&+7||q*m5LcS<)syoGfDLinZ~`9oaK) zaaD>t3%`X1q%4rbQ0ORti2bGVdL#5(ZfQ$R(-SW|2)WtQgBIna^<$;}KWMdEv}AdZ&MLo(d({z<+ojtJ*fv%jco~FP_W6BZ zJnG|6LKe^NiwQk{?Kle)u?mCq9V-ZxZ7YHQfupW;E5^wmTF zZMjBq?HN3XXdJNv$a|?WMZ@7UjuVLpb~|`yeE+f?Z$*A7tLiMH#HX>tSW5S?#|dlg zL!o}WG>k~1_ZTa%dtJM%X9nzW147LuS7Ewqn(C&njd!=T_B~I9S`snoXhi)TA40)% zoN6jRmuhKwwMi>6bnnC7Rvod&MSrKn&7u5`R!bvqg=|&^Y#5OeWEe z^Z|+?7fiWbm0g?bdDh15p8A43%f;ucM$P+od%q0COoty3DcgAxZ9|d3f^u51k5=YtSfYca}XRs^8qKj>0L0 z@;jIN>DrGQ0}kpcORk4NqY&IDJCyayAwDp&pE1AswmE-GH4}2tz7=Eok`nu+;zjkb zZVRlwE9aNtLO|99SCiaq-8fYWSQW{sfvBS_ETt#zWMryu2k} zOjwgfUY37r4#VK2CsWlgE;TfIez1qkAT1=tylX#~`PX*|}lxeb;_b3K-f7vu-9#8ZV40ofa;wmZ&St~7R9 zMOjb5Df##YoVQ~2Z;z8p1I}N;e#2EG+xnWd2tBRKFNux@@*8-gw)zIm~O+EOD>3kMih%4R4?b&x_ zXzHs;+$1v>12`PzG)ro=cOOyuPm<>Bv!ZG?>Vw@?mrY+zWw>rh$>F9 z6I0+`Ms4`bDT1VM;Qm3wf{9hl<3-Z^7z83D0sT|sA_4kWfi1Q%5=q(E<`5T*a4`f+ z1-bc?cw@qd+Gzo!`!`o-YxrSjA}xy6?Qe>4%?NzNh1wLwkq*f#T9VO#(P=WpcyP#Y z<^*N|Hxp~P>;}53ZS~`hcE#`zGLeKV&KGN;oUDbNsAlQ*;p2I@3Dpm2THiSZ!qV8t zNGErDEsm`duDg2$G6%O$cXtkKioX4f5f<0g0bkXyk6i*S&%_yom>&XyOTT*E0DBhB z8!WR{TD@`fLc=^J6=Xg1$yq3-*IO31Z_>SCGM~eR3CWL4AP4D4M219s1NuigLd|qx z2eMUaXtDP30@CP@XdB0dZx_C=#x%|`E(~!1U9&VtA#+IO_gXq zvwGL-9BHAc47&Y(t%okD?4LVVRmk45W>>*Jpzy%P1H@(bgI^8ad>(%e9TC)=TD@5D^-( z?3rQQFAY&;fSQl&%O(llT6DcP5MFUQv%0cyg$qQ<2JbW7;0% zD>{lQi&?)^8w%Y_bn>6+9WROLXbxOPEY6f_%$g+W+sk2?mK|4S9WBiS#(zKp&<|?5 z;{?kz*^}6akwwERA-_?uiU%@jeHI0nB`{%W(tJTDbUIon6&HcTvmTKTeY(CO>JWP} zFK#F_93z)!AsJik7v;IVZa(;o%<()j>E%zRx3}#*?%B)GP>nw?p-GbBdSagybr%G` z#z$o8`>D!qm%EDFCcC;Y6~$w&r;5EX@GcXew!IeT!?SZVsdMua-X^tC*0<*e8eU5%PU*1ug{YofC))ZPOgFZF zny8bUvJg9g!99pa(GVI`p2ZZ2qrvFsTVj9ZOl;D!fq&(mSJOL`2qAf;$k7B3kg>B~ z%KK5e(vvm2iR#kGCEh*H;Hhl~uoF4&sZd6^>K*5d!fh2)Qr`u0ttd8)(kQ#SVWND9 zrZSc@8VY+pocp*@O|;}K?R2&=9gZ!g%i7o~5hG@%wR|h5MDJ502i6oE;t{J%L2%Pj zi&EOO5SAxg)_aUEsxp#LP=lKLIL{_r(nE(i7zbS&O~018qPkb0S8%lsz)BJeI0l(* zH;h& z(V!15Z32dDxs(XYo!Q0&ATv6hJY*O|m|d{3vbSf>sOO~Q7rTuN&}1HYAfMqTSR{ujQ8 zxri`I#VkQS1bl~w$_|Bk35Ax`w46oIt8p6^b+I-owSFZl2gQs6hM|bmE}`>gCed(W z_bsh1S?}M^7_!M*rD zmk%_dDVOH=?iJ1~B(O+F@AJhK@IKru=m+lxKP!QAq0i2q^ zp5#Y=Yu%sp@&8SE`>A2}ee8epNqw4sQ$(NazvtxsrhfhM{~o7?E%&qj56?L8FJ5gx z3I8v%K`4GJwC4fQreOsGT;RV(4qpAQtpWGnVD~S=feHdyy1IB-yLfT?Iy authors = new Vector(); + private Vector dates = new Vector(); + + // Number formatter + private NumberFormat formatter = new DecimalFormat("00"); + + // Pattern matcher for dates + Pattern datePattern = Pattern.compile("(\\d{4})-(\\d{2})-(\\d{2})"); public EpubMetadataDialog(XComponentContext xContext) { super(xContext); @@ -151,13 +171,19 @@ public class EpubMetadataDialog extends DialogBase { else if (sMethod.equals("DateDeleteClick")) { return dateDeleteClick(); } + else if (sMethod.equals("DateUpClick")) { + return dateUpClick(); + } + else if (sMethod.equals("DateDownClick")) { + return dateDownClick(); + } return false; } @Override public String[] getSupportedMethodNames() { String[] sNames = { "UseCustomIdentifierChange", "AuthorAddClick", "AuthorModifyClick", "AuthorDeleteClick", "AuthorUpClick", "AuthorDownClick", - "DataAddClick", "DateModifyClick", "DateDeleteClick"}; + "DataAddClick", "DateModifyClick", "DateDeleteClick", "DateUpClick", "DateDownClick"}; return sNames; } @@ -247,17 +273,74 @@ public class EpubMetadataDialog extends DialogBase { } private boolean dateAddClick() { - System.out.println("DateAddClick"); + SimpleDialog dialog = new SimpleDialog(xContext,"W2XDialogs2.DateDialog"); + if (dialog.getDialog()!=null) { + dialog.getControls().setDateFieldValue("Date", datetime2int(xDocumentProperties.getModificationDate())); + if (dialog.getDialog().execute()==ExecutableDialogResults.OK) { + DateInfo date = new DateInfo(); + date.nDate = dialog.getControls().getDateFieldValue("Date"); + date.sEvent = dialog.getControls().getTextFieldText("Event").trim(); + dates.add(date); + updateDateList((short) (dates.size()-1)); + } + dialog.getDialog().endExecute(); + } return true; } private boolean dateModifyClick() { - System.out.println("DateModifyClick"); + short nIndex = getListBoxSelectedItem("Dates"); + DateInfo date = dates.get(nIndex); + SimpleDialog dialog = new SimpleDialog(xContext,"W2XDialogs2.DateDialog"); + if (dialog.getDialog()!=null) { + dialog.getControls().setDateFieldValue("Date", date.nDate); + dialog.getControls().setTextFieldText("Event", date.sEvent); + if (dialog.getDialog().execute()==ExecutableDialogResults.OK) { + date.nDate = dialog.getControls().getDateFieldValue("Date"); + date.sEvent = dialog.getControls().getTextFieldText("Event").trim(); + updateDateList(nIndex); + } + dialog.getDialog().endExecute(); + } return true; } private boolean dateDeleteClick() { - System.out.println("DateDeleteClick"); + if (dates.size()>0) { + SimpleDialog dialog = new SimpleDialog(xContext,"W2XDialogs2.DeleteDialog"); + if (dialog.getDialog()!=null) { + short nIndex = getListBoxSelectedItem("Dates"); + String sLabel = dialog.getControls().getLabelText("DeleteLabel"); + sLabel = sLabel.replaceAll("%s", formatDate(dates.get(nIndex).nDate)); + dialog.getControls().setLabelText("DeleteLabel", sLabel); + if (dialog.getDialog().execute()==ExecutableDialogResults.OK) { + dates.remove(nIndex); + updateDateList(nIndex0) { + DateInfo date = dates.get(nIndex); + dates.set(nIndex, dates.get(nIndex-1)); + dates.set(nIndex-1, date); + updateDateList((short) (nIndex-1)); + } + return true; + } + + private boolean dateDownClick() { + short nIndex = getListBoxSelectedItem("Dates"); + if (nIndex+10); useCustomIdentifierChange(); if (sIdentifiers.length>0) { // Use the first if we have several... - setTextFieldText("Identifier",getValue(sIdentifiers[0])); + setTextFieldText("Identifier",getStringValue(sIdentifiers[0])); setTextFieldText("IdentifierType",getSuffix(sIdentifiers[0])); } @@ -296,7 +379,7 @@ public class EpubMetadataDialog extends DialogBase { String[] sCreators = getProperties(CREATOR,false); for (String sCreator : sCreators) { AuthorInfo creator = new AuthorInfo(); - creator.sName = getValue(sCreator); + creator.sName = getStringValue(sCreator); creator.sRole = getSuffix(sCreator); creator.isCreator = true; authors.add(creator); @@ -304,7 +387,7 @@ public class EpubMetadataDialog extends DialogBase { String[] sContributors = getProperties(CONTRIBUTOR,false); for (String sContributor : sContributors) { AuthorInfo contributor = new AuthorInfo(); - contributor.sName = getValue(sContributor); + contributor.sName = getStringValue(sContributor); contributor.sRole = getSuffix(sContributor); contributor.isCreator = false; authors.add(contributor); @@ -312,7 +395,19 @@ public class EpubMetadataDialog extends DialogBase { updateAuthorList((short) 0); // Get the dates and set the list box - // TODO + String[] sDates = getProperties(DATE,false); + for (String sDate : sDates) { + DateInfo date = new DateInfo(); + DateTime dt = getDateValue(sDate); + if (dt!=null) { // We accept either a date + date.nDate = datetime2int(dt); + } + else { // Or a string in the form yyyy-mm-dd + date.nDate = parseDate(getStringValue(sDate)); + } + date.sEvent = getSuffix(sDate); + dates.add(date); + } updateDateList((short) 0); // Get the standard properties and set the text fields @@ -363,7 +458,7 @@ public class EpubMetadataDialog extends DialogBase { } int i=0; for (AuthorInfo author : authors) { - String sName = (author.isCreator ? CREATOR : CONTRIBUTOR)+(++i); + String sName = (author.isCreator ? CREATOR : CONTRIBUTOR)+formatter.format(++i); if (author.sRole.length()>0) { sName+="."+author.sRole; } @@ -372,7 +467,21 @@ public class EpubMetadataDialog extends DialogBase { } // Set the dates from the list box - // TODO + String[] sDates = getProperties(DATE,false); + for (String sDate : sDates) { // remove old dates + removeProperty(sDate); + } + i=0; + for (DateInfo date : dates) { + String sName = DATE+formatter.format(++i); + if (date.sEvent.length()>0) { + sName+="."+date.sEvent; + } + addProperty(sName); + setValue(sName,formatDate(date.nDate)); + // Doesn't work (why not?) + //setValue(sName,int2datetime(date.nDate)); + } // Set the standard properties from the text fields xDocumentProperties.setTitle(getTextFieldText("Title")); @@ -435,9 +544,9 @@ public class EpubMetadataDialog extends DialogBase { } // Set the value of a user property (failing silently if the property does not exist) - private void setValue(String sName, String sValue) { + private void setValue(String sName, Object value) { try { - xUserPropertySet.setPropertyValue(sName, sValue); + xUserPropertySet.setPropertyValue(sName, value); } catch (UnknownPropertyException e) { } catch (PropertyVetoException e) { } catch (IllegalArgumentException e) { @@ -445,18 +554,11 @@ public class EpubMetadataDialog extends DialogBase { } } - // Get the value of a user property (returning null if the property does not exist) - private String getValue(String sName) { - Object value; - try { - value = xUserPropertySet.getPropertyValue(sName); - } catch (UnknownPropertyException e) { - return null; - } catch (WrappedTargetException e) { - return null; - } - - if (AnyConverter.isString(value)) { + // Get the string value of a user property (returning null if the property does not exist) + private String getStringValue(String sName) { + Object value = getValue(sName); + + if (value!=null && AnyConverter.isString(value)) { try { return AnyConverter.toString(value); } catch (IllegalArgumentException e) { @@ -466,19 +568,48 @@ public class EpubMetadataDialog extends DialogBase { return null; } + private DateTime getDateValue(String sName) { + Object value = getValue(sName); + + if (value!=null && value instanceof DateTime) { + return (DateTime) value; + } + return null; + } + + // Get the value of a user property (returning null if the property does not exist) + private Object getValue(String sName) { + try { + return xUserPropertySet.getPropertyValue(sName); + } catch (UnknownPropertyException e) { + return null; + } catch (WrappedTargetException e) { + return null; + } + } + private void updateAuthorList(short nItem) { int nCount = authors.size(); - String[] sAuthors = new String[nCount]; - for (int i=0; i0) { + String[] sAuthors = new String[nCount]; + for (int i=0; i0 ? ", "+author.sRole : "") +")"; + } + setListBoxStringItemList("Authors", sAuthors); + setListBoxSelectedItem("Authors",nItem); + setControlEnabled("Authors", true); + } + else { // Display the fall-back author + String[] sAuthors = new String[1]; + sAuthors[0] = xDocumentProperties.getAuthor()+" (default creator)"; + setListBoxStringItemList("Authors", sAuthors); + setControlEnabled("Authors", false); } - setListBoxStringItemList("Authors", sAuthors); - setListBoxSelectedItem("Authors",nItem); setControlEnabled("ModifyAuthorButton",nCount>0); setControlEnabled("DeleteAuthorButton",nCount>0); setControlEnabled("AuthorUpButton",nCount>1); @@ -486,15 +617,36 @@ public class EpubMetadataDialog extends DialogBase { } private void updateDateList(short nItem) { - setControlEnabled("AddDateButton",false); - setControlEnabled("ModifyDateButton",false); - setControlEnabled("DeleteDateButton",false); + int nCount = dates.size(); + if (nCount>0) { + String[] sDates = new String[nCount]; + for (int i=0; i0) { + sDates[i]+=" (" + date.sEvent + ")"; + } + } + setListBoxStringItemList("Dates", sDates); + setListBoxSelectedItem("Dates",nItem); + setControlEnabled("Dates", true); + } + else { // Display the fall-back date + String[] sDates = new String[1]; + sDates[0] = formatDate(datetime2int(xDocumentProperties.getModificationDate()))+" (default date)"; + setListBoxStringItemList("Dates", sDates); + setControlEnabled("Dates", false); + } + setControlEnabled("ModifyDateButton",nCount>0); + setControlEnabled("DeleteDateButton",nCount>0); + setControlEnabled("DateUpButton",nCount>1); + setControlEnabled("DateDownButton",nCount>1); } private void readSimpleProperty(String sName) { String[] sNames = getProperties(sName,true); if (sNames.length>0) { - String sValue = getValue(sNames[0]); + String sValue = getStringValue(sNames[0]); if (sValue!=null) { setTextFieldText(sName, sValue); } @@ -513,5 +665,44 @@ public class EpubMetadataDialog extends DialogBase { } } + // Date fields uses integers for dates (format yyyymmdd) + // Document properties uses com.sun.star.util.DateTime + // Also dates should be formatted as yyyy-mm-dd as strings + // Thus we need a few conversion methods + + // Format a integer date as yyyy-mm-dd + private String formatDate(int nDate) { + String sDate = Integer.toString(nDate); + if (sDate.length()==8) { + return sDate.substring(0,4)+"-"+sDate.substring(4, 6)+"-"+sDate.substring(6); + } + else { + return "???"; + } + } + + // Parse a string as a date in the format yyyy-mm-dd (returning 0 on failure) + private int parseDate(String sDate) { + Matcher matcher = datePattern.matcher(sDate); + if (matcher.matches()) { + return Misc.getPosInteger(matcher.group(1)+matcher.group(2)+matcher.group(3),0); + } + return 0; + } + + // Convert an integer to com.sun.star.util.DateTime + /*private DateTime int2datetime(int nDate) { + DateTime date = new DateTime(); + date.Year = (short) (nDate/10000); + date.Month = (short) ((nDate%10000)/100); + date.Day = (short) (nDate%100); + System.out.println(date.Year+"-"+date.Month+"-"+date.Day); + return date; + }*/ + + // Convert a com.sun.star.util.DateTime to integer + private int datetime2int(DateTime date) { + return 10000*date.Year+100*date.Month+date.Day; + } } diff --git a/source/java/org/openoffice/da/comp/writer2xhtml/EpubOptionsDialog.java b/source/java/org/openoffice/da/comp/writer2xhtml/EpubOptionsDialog.java index 457583e..d112825 100644 --- a/source/java/org/openoffice/da/comp/writer2xhtml/EpubOptionsDialog.java +++ b/source/java/org/openoffice/da/comp/writer2xhtml/EpubOptionsDialog.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.2 (2011-02-23) + * Version 1.2 (2011-03-04) * */ @@ -96,7 +96,6 @@ public class EpubOptionsDialog extends OptionsDialogBase { // Special content loadCheckBoxOption(xProps, "DisplayHiddenText"); loadCheckBoxOption(xProps, "Notes"); - loadCheckBoxOption(xProps, "UseDublinCore"); // Document division loadCheckBoxOption(xProps, "Split"); @@ -143,7 +142,6 @@ public class EpubOptionsDialog extends OptionsDialogBase { // Special content saveCheckBoxOption(xProps, helper, "DisplayHiddenText", "display_hidden_text"); saveCheckBoxOption(xProps, helper, "Notes", "notes"); - saveCheckBoxOption(xProps, helper, "UseDublinCore", "use_dublin_core"); // Document division boolean bSplit = saveCheckBoxOption(xProps, "Split"); @@ -241,7 +239,6 @@ public class EpubOptionsDialog extends OptionsDialogBase { setControlEnabled("DefaultFontNameLabel",!isLocked("default_font_name") && bUseDefaultFont); setControlEnabled("DefaultFontName",!isLocked("default_font_name") && bUseDefaultFont); - setControlEnabled("DisplayHiddenText",!isLocked("display_hidden_text")); setControlEnabled("ConvertToPx",!isLocked("convert_to_px")); setControlEnabled("OriginalImageSize",!isLocked("original_image_size")); @@ -251,8 +248,8 @@ public class EpubOptionsDialog extends OptionsDialogBase { setControlEnabled("IgnoreDoubleSpaces",!isLocked("ignore_double_spaces")); // Special content + setControlEnabled("DisplayHiddenText",!isLocked("display_hidden_text")); setControlEnabled("Notes",!isLocked("notes")); - setControlEnabled("UseDublinCore",!isLocked("use_dublin_core")); // Document division boolean bSplit = getCheckBoxStateAsBoolean("Split"); diff --git a/source/java/writer2latex/api/ConverterFactory.java b/source/java/writer2latex/api/ConverterFactory.java index 48bc6b0..c745e05 100644 --- a/source/java/writer2latex/api/ConverterFactory.java +++ b/source/java/writer2latex/api/ConverterFactory.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.2 (2011-02-24) + * Version 1.2 (2011-03-05) * */ @@ -33,7 +33,7 @@ public class ConverterFactory { // Version information private static final String VERSION = "1.1.7"; - private static final String DATE = "2011-02-24"; + private static final String DATE = "2011-03-05"; /** Return the Writer2LaTeX version in the form * (major version).(minor version).(patch level)
diff --git a/source/java/writer2latex/epub/EPUBWriter.java b/source/java/writer2latex/epub/EPUBWriter.java index 1d6bfa2..217f98a 100644 --- a/source/java/writer2latex/epub/EPUBWriter.java +++ b/source/java/writer2latex/epub/EPUBWriter.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * version 1.2 (2011-02-23) + * version 1.2 (2011-03-04) * */ @@ -89,7 +89,7 @@ public class EPUBWriter implements OutputFile { zos.closeEntry(); // Then manifest - OPFWriter manifest = new OPFWriter(xhtmlResult, config.xhtmlUseDublinCore()); + OPFWriter manifest = new OPFWriter(xhtmlResult); ZipEntry manifestEntry = new ZipEntry("OEBPS/book.opf"); zos.putNextEntry(manifestEntry); writeZipEntry(manifest,zos); diff --git a/source/java/writer2latex/epub/OPFWriter.java b/source/java/writer2latex/epub/OPFWriter.java index 9209dec..2018004 100644 --- a/source/java/writer2latex/epub/OPFWriter.java +++ b/source/java/writer2latex/epub/OPFWriter.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * version 1.2 (2011-02-24) + * version 1.2 (2011-03-04) * */ @@ -51,7 +51,7 @@ import writer2latex.xmerge.NewDOMDocument; public class OPFWriter extends NewDOMDocument { private String sUID=null; - public OPFWriter(ConverterResult cr, boolean bUseDublinCore) { + public OPFWriter(ConverterResult cr) { super("book", "opf"); // create DOM @@ -79,25 +79,23 @@ public class OPFWriter extends NewDOMDocument { metadata.setAttribute("xmlns:opf", "http://www.idpf.org/2007/opf"); pack.appendChild(metadata); + // Title and language (required) appendElement(contentDOM, metadata, "dc:title", cr.getMetaData().getTitle()); appendElement(contentDOM, metadata, "dc:language", cr.getMetaData().getLanguage()); - // Additional meta data - if (bUseDublinCore) { - // Subject and keywords in ODF both map to Dublin core subjects - if (cr.getMetaData().getSubject().length()>0) { - appendElement(contentDOM, metadata, "dc:subject", cr.getMetaData().getSubject()); - } - if (cr.getMetaData().getKeywords().length()>0) { - String[] sKeywords = cr.getMetaData().getKeywords().split(","); - for (String sKeyword : sKeywords) { - appendElement(contentDOM, metadata, "dc:subject", sKeyword.trim()); - } - } - if (cr.getMetaData().getDescription().length()>0) { - appendElement(contentDOM, metadata, "dc:description", cr.getMetaData().getDescription()); + // Subject and keywords in ODF both map to Dublin core subjects + if (cr.getMetaData().getSubject().length()>0) { + appendElement(contentDOM, metadata, "dc:subject", cr.getMetaData().getSubject()); + } + if (cr.getMetaData().getKeywords().length()>0) { + String[] sKeywords = cr.getMetaData().getKeywords().split(","); + for (String sKeyword : sKeywords) { + appendElement(contentDOM, metadata, "dc:subject", sKeyword.trim()); } } + if (cr.getMetaData().getDescription().length()>0) { + appendElement(contentDOM, metadata, "dc:description", cr.getMetaData().getDescription()); + } // User defined meta data // The identifier, creator, contributor and date has an optional attribute and there may be multiple instances of @@ -108,88 +106,86 @@ public class OPFWriter extends NewDOMDocument { boolean bHasIdentifier = false; boolean bHasCreator = false; boolean bHasDate = false; - if (bUseDublinCore) { - // First rearrange the user-defined meta data - Map userDefinedMetaData = cr.getMetaData().getUserDefinedMetaData(); - Map dc = new HashMap(); - for (String sKey : userDefinedMetaData.keySet()) { - if (sKey.length()>0) { - String[] sValue = new String[2]; - sValue[0] = userDefinedMetaData.get(sKey); - String sNewKey; - int nDot = sKey.indexOf("."); - if (nDot>0) { - sNewKey = sKey.substring(0, nDot).toLowerCase(); - sValue[1] = sKey.substring(nDot+1); - } - else { - sNewKey = sKey.toLowerCase(); - sValue[1] = null; - } - dc.put(sNewKey, sValue); + // First rearrange the user-defined meta data + Map userDefinedMetaData = cr.getMetaData().getUserDefinedMetaData(); + Map dc = new HashMap(); + for (String sKey : userDefinedMetaData.keySet()) { + if (sKey.length()>0) { + String[] sValue = new String[2]; + sValue[0] = userDefinedMetaData.get(sKey); + String sNewKey; + int nDot = sKey.indexOf("."); + if (nDot>0) { + sNewKey = sKey.substring(0, nDot).toLowerCase(); + sValue[1] = sKey.substring(nDot+1); + } + else { + sNewKey = sKey.toLowerCase(); + sValue[1] = null; + } + dc.put(sNewKey, sValue); + } + } + // Then export it + String[] sKeys = Misc.sortStringSet(dc.keySet()); + for (String sKey : sKeys) { + String sValue = dc.get(sKey)[0]; + String sAttributeValue = dc.get(sKey)[1]; + if (sKey.startsWith("identifier")) { + Element identifier = appendElement(contentDOM, metadata, "dc:identifier", sValue); + if (!bHasIdentifier) { // The first identifier is the unique ID + identifier.setAttribute("id", "BookId"); + sUID = sValue; + } + if (sAttributeValue!=null) { + identifier.setAttribute("opf:scheme", sAttributeValue); + } + bHasIdentifier = true; + } + else if (sKey.startsWith("creator")) { + Element creator = appendElement(contentDOM, metadata, "dc:creator", sValue); + creator.setAttribute("opf:file-as", fileAs(sValue)); + if (sAttributeValue!=null) { + creator.setAttribute("opf:role", sAttributeValue); + } + bHasCreator = true; + } + else if (sKey.startsWith("contributor")) { + Element contributor = appendElement(contentDOM, metadata, "dc:contributor", sValue); + contributor.setAttribute("opf:file-as", fileAs(sValue)); + if (sAttributeValue!=null) { + contributor.setAttribute("opf:role", sAttributeValue); } } - // Then export it - String[] sKeys = Misc.sortStringSet(dc.keySet()); - for (String sKey : sKeys) { - String sValue = dc.get(sKey)[0]; - String sAttributeValue = dc.get(sKey)[1]; - if (sKey.startsWith("identifier")) { - Element identifier = appendElement(contentDOM, metadata, "dc:identifier", sValue); - if (!bHasIdentifier) { // The first identifier is the unique ID - identifier.setAttribute("id", "BookId"); - sUID = sValue; - } - if (sAttributeValue!=null) { - identifier.setAttribute("opf:scheme", sAttributeValue); - } - bHasIdentifier = true; + else if (sKey.startsWith("date")) { + Element date = appendElement(contentDOM, metadata, "dc:date", sValue); + if (sAttributeValue!=null) { + date.setAttribute("opf:event", sAttributeValue); } - else if (sKey.startsWith("creator")) { - Element creator = appendElement(contentDOM, metadata, "dc:creator", sValue); - creator.setAttribute("opf:file-as", fileAs(sValue)); - if (sAttributeValue!=null) { - creator.setAttribute("opf:role", sAttributeValue); - } - bHasCreator = true; + bHasDate = true; + } + // Remaining properties must be unique and has not attributes, hence + else if (sAttributeValue==null) { + if ("publisher".equals(sKey)) { + appendElement(contentDOM, metadata, "dc:publisher", sValue); } - else if (sKey.startsWith("contributor")) { - Element contributor = appendElement(contentDOM, metadata, "dc:contributor", sValue); - contributor.setAttribute("opf:file-as", fileAs(sValue)); - if (sAttributeValue!=null) { - contributor.setAttribute("opf:role", sAttributeValue); - } + else if ("type".equals(sKey)) { + appendElement(contentDOM, metadata, "dc:type", sValue); } - else if (sKey.startsWith("date")) { - Element date = appendElement(contentDOM, metadata, "dc:date", sValue); - if (sAttributeValue!=null) { - date.setAttribute("opf:event", sAttributeValue); - } - bHasDate = true; + else if ("format".equals(sKey)) { + appendElement(contentDOM, metadata, "dc:format", sValue); } - // Remaining properties must be unique and has not attributes, hence - else if (sAttributeValue==null) { - if ("publisher".equals(sKey)) { - appendElement(contentDOM, metadata, "dc:publisher", sValue); - } - else if ("type".equals(sKey)) { - appendElement(contentDOM, metadata, "dc:type", sValue); - } - else if ("format".equals(sKey)) { - appendElement(contentDOM, metadata, "dc:format", sValue); - } - else if ("source".equals(sKey)) { - appendElement(contentDOM, metadata, "dc:source", sValue); - } - else if ("relation".equals(sKey)) { - appendElement(contentDOM, metadata, "dc:relation", sValue); - } - else if ("coverage".equals(sKey)) { - appendElement(contentDOM, metadata, "dc:coverage", sValue); - } - else if ("rights".equals(sKey)) { - appendElement(contentDOM, metadata, "dc:rights", sValue); - } + else if ("source".equals(sKey)) { + appendElement(contentDOM, metadata, "dc:source", sValue); + } + else if ("relation".equals(sKey)) { + appendElement(contentDOM, metadata, "dc:relation", sValue); + } + else if ("coverage".equals(sKey)) { + appendElement(contentDOM, metadata, "dc:coverage", sValue); + } + else if ("rights".equals(sKey)) { + appendElement(contentDOM, metadata, "dc:rights", sValue); } } } @@ -202,15 +198,14 @@ public class OPFWriter extends NewDOMDocument { identifier.setAttribute("id", "BookId"); identifier.setAttribute("opf:scheme", "UUID"); } - if (bUseDublinCore) { - if (!bHasCreator && cr.getMetaData().getCreator().length()>0) { - appendElement(contentDOM, metadata, "dc:creator", cr.getMetaData().getCreator()); - } - if (!bHasDate && cr.getMetaData().getDate().length()>0) { - // TODO: Support meta:creation-date? - appendElement(contentDOM, metadata, "dc:date", cr.getMetaData().getDate()); - } - } + if (!bHasCreator && cr.getMetaData().getCreator().length()>0) { + appendElement(contentDOM, metadata, "dc:creator", cr.getMetaData().getCreator()) + .setAttribute("opf:file-as", fileAs(cr.getMetaData().getCreator())); + } + if (!bHasDate && cr.getMetaData().getDate().length()>0) { + // TODO: Support meta:creation-date? + appendElement(contentDOM, metadata, "dc:date", cr.getMetaData().getDate()); + } // Manifest must contain references to all the files in the XHTML converter result // Spine should contain references to all the master documents within the converter result diff --git a/source/oxt/writer2xhtml/W2XDialogs2/EpubMetadata.xdl b/source/oxt/writer2xhtml/W2XDialogs2/EpubMetadata.xdl index 10042fb..06b562e 100644 --- a/source/oxt/writer2xhtml/W2XDialogs2/EpubMetadata.xdl +++ b/source/oxt/writer2xhtml/W2XDialogs2/EpubMetadata.xdl @@ -19,58 +19,64 @@ - + - + - + - + - + - - - - + + + + - + - + - + - + - + - + - + - + - + - - - - - + + + + + - + - + - + + + + + + + \ No newline at end of file diff --git a/source/oxt/writer2xhtml/W2XDialogs2/EpubOptions.xdl b/source/oxt/writer2xhtml/W2XDialogs2/EpubOptions.xdl index 890deae..7351a51 100755 --- a/source/oxt/writer2xhtml/W2XDialogs2/EpubOptions.xdl +++ b/source/oxt/writer2xhtml/W2XDialogs2/EpubOptions.xdl @@ -21,7 +21,6 @@ - @@ -90,7 +89,7 @@ - + diff --git a/source/oxt/writer2xhtml/help/en/org.openoffice.da.writer2xhtml.oxt/epub_metadata.xhp b/source/oxt/writer2xhtml/help/en/org.openoffice.da.writer2xhtml.oxt/epub_metadata.xhp index 21ee9cc..597b3b8 100644 --- a/source/oxt/writer2xhtml/help/en/org.openoffice.da.writer2xhtml.oxt/epub_metadata.xhp +++ b/source/oxt/writer2xhtml/help/en/org.openoffice.da.writer2xhtml.oxt/epub_metadata.xhp @@ -13,14 +13,15 @@

Choose File - Export - EPUB, Click Edit in the dialog
+ The EPUB standard specifies a large number of document properties. Not all of these are supported by the OpenDocument standard. Writer2xhtml supports the additional properties using user defined document properties. This dialog provides a convenient interface to edit all EPUB document properties, but you can also access all properties using the standard interface in %PRODUCTNAME Writer, that is File - Properties. - Properties that are not required can be left blank. In this case they will not be included in the EPUB document (except the - title which is always included). + Writer2xhtml will always include the identifier, author(s), date(s) and the title. + Other fields are optional and can be left blank. In this case they will not be included in the EPUB document. Custom identifier @@ -45,9 +46,11 @@ An author can be either a creator, that is a primary author of the publication, or a contributor, that is a party whose contribution to the publication is secondary to the creator(s). Furthermore an author may have a special role, e.g. illustrator. Both properties are specified when you add - a new authort to the list. + a new author to the list. Note that some EPUB readers may only present the first creator, hence - the order may be important + you should make sure that the primary creator is at the top of the list. + If you do not add any authors, Writer2xhtml will display and use a default value + for the author. Add... Click this to add new author to the list. @@ -68,6 +71,10 @@ Dates An EPUB document can specify one or more dates relating to the publication. Each date can be associated with a special event such as creation, publication or modification. + Note that some EPUB readers may only present the first date, hence + you should make sure that the primary date is at the top of the list. + If you do not add any dates, Writer2xhtml will display and use a default value + for the date (date of last modification). Add... Click this to add new date to the list. @@ -78,9 +85,16 @@ Delete... Click this to delete the currently selected date from the list. + Up + Click this to move the currently selected date up one position in the list. + + Down + Click this to move the currently selected date down one position in the list. + + Title - The title of the document. This will always be included in the EPUB document, - even if you have not selected Export optional document properties. + The title of the document. This will always be included in the EPUB + document. Subject The subject of the document