From eed18d231cc706e27a1495d46e8c05dd18a0938f Mon Sep 17 00:00:00 2001 From: John MacFarlane <jgm@berkeley.edu> Date: Sat, 13 Mar 2021 12:05:52 -0800 Subject: [PATCH] Use integral values for w:tblW in docx. Cloess #7141. --- src/Text/Pandoc/Writers/Docx.hs | 2 +- test/docx/golden/table_one_row.docx | Bin 9908 -> 9906 bytes test/docx/golden/table_with_list_cell.docx | Bin 10227 -> 10225 bytes test/docx/golden/tables.docx | Bin 10244 -> 10241 bytes 4 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Text/Pandoc/Writers/Docx.hs b/src/Text/Pandoc/Writers/Docx.hs index 89c71d773..c47bfb2ea 100644 --- a/src/Text/Pandoc/Writers/Docx.hs +++ b/src/Text/Pandoc/Writers/Docx.hs @@ -1031,7 +1031,7 @@ blockToOpenXML' opts (Table _ blkCapt specs thead tbody tfoot) = do map mkcell cells let textwidth = 7920 -- 5.5 in in twips, 1/20 pt let fullrow = 5000 -- 100% specified in pct - let rowwidth = fullrow * sum widths + let (rowwidth :: Int) = round $ fullrow * sum widths let mkgridcol w = mknode "w:gridCol" [("w:w", tshow (floor (textwidth * w) :: Integer))] () let hasHeader = not $ all null headers diff --git a/test/docx/golden/table_one_row.docx b/test/docx/golden/table_one_row.docx index a1d2323c25c3255c372e529e0f29f885993aa2eb..1178f7c6e1d0c9d3431ef28bfe55fd50bea3337c 100644 GIT binary patch delta 1148 zcmdnuyUCX~z?+#xgn@~JgJJ4|+>N|*8JU6f=CzExjJ!Zb5c8q*{C-9T2C2!%nKbIR z2(4{k7UJNV6MH<9XWMb9-JE}`=iGQ%#1Lw$P_)7Lbamxsjq8{7*ShsOs2>!0@<&Hm zIniRur8QiicI}XjpZN00uCv|`vUPjpTWcPF+NQAeyV>$9AEPp!ojbrKoFuv+&2Gky zMY;)@f;$TIE@ZmuZ+bH+OO4ml<d=lh3ayhzZR$BCJZfwwJXoosA@X@)Uby#bHZzSA zQoi$69E&PqVV^2re4#SM^Lj%@owG?4Z{^#{GM4h|TNn@atz6@B?caqs?Vp@Hj8Cuc z&|SY(y+Ed~POf=L^b*x6v)_I5p1MxmM_<2g@sSm0rI&GSO7Ipnxgb)_U$=kbB86$y zLOmNAZ|eQ2XZRpFXR6Ed`HIJG#cZry&412e?be&!@)kUI?i&Q>t=(?BI(%yD^8Z@4 zQ|j6``6MmsE?@q(e?|)bs@aX()@Uy|Ui0DLdY7l{|5$oz?iv({8^p2)STy!3Om<hU zQmwUf3%PRae}HSoNBe+_`e)8tWytW}&6_8D$3F2<f3#=$|DF6N%~7Ija}A3%IKC$D zVqFT3w<NY2NCZA)-_8LRnJwT96%k}*<OD_O3y!njWG25C(yX7nVAUoki!G0?cun=X zy2|`?+ySM36Zhsmc$+Q6;ri&<+1E4w+GOvJeB(R)uT#gZo0gi~Zblm}Y37<2f7%%J ztUu+V*`?x_OnX?LD=ui8vD8d@=a=G5u3zR{(%7EhqBH5RTH)I!!5ODEEQ~ub_XfjS ziRuMx0UC`>a*aFZcRXncDXMq+HU9!HgQ{jp!hxhEsezZe#T92%Y)%aLXW4tKxqbGv z%@#Yq2l^k|_r80d+#1b#&;4=n_u2!CbCtQY8@KdMk})m2VD@E`kG7=40`AA(LYCaV zb8um~<IyECq02kn^jGMpK1_bM`BS95?fPj;)<%RrTXXJoRjA>)w3@J5`Tm`+<n}Z8 zR$bb<uepM)r*nP1^KW+4&@~n5hlK8N(QV+cY!LHg12fLZoPY%CbUAZokjUhVif6&} zLM1ye{Yc3SE&r%08-Zn_l%<*SSSEL~$Y}?7GcqwSz;j<v%gr9;Tm}Y)8X%ShVgy(- z`GB$xSo?dR_7Jwog=`{|6;yb@Li#GwjF%^StH^<QIY3_T<PH@@FmDZ5?u3d0Qq+G` z5oNqRnO#)@tU^mwno(`Co2tA#C~-(ts`hpO?Y#oT!U+3;tR0hERF%LwR;o%f6^c#n z7Zaa+R~6!fH$X%7PUcX9SgNBY&Db&7Lk(g<wwg54A;rlL6vZabQxjmDpae1&0Q$$= AO8@`> delta 1242 zcmdnwyTz9`z?+#xgn@~JgF)KXe<SZ)MrI(rc`YL^BQKB<w5yqE?gT~#2ARpnnKbG} zI0XtEm^RLfJ-(3bc5?6CmVdToIn%!}tg3Q&l8`>_`=_)(zw>rmXMJIs%W`?b;pQ%% zmWLO-K3|*geEI5^oR+ia@|AMetZe-_c|v}Stx3wmy=yf~YZOh2*%MkhH}VA-%lp(U zW=_Z!+)<!+A=9;g)vFm<YP=^+s>G#USe-nYS}zvh@n_M52m4esL_ROf+dko%s9DAd zA>X+xmqit^u+N=ebfGlqWVqv({fbp<z3vr6ygeX0J4_&F`l+at!~AczPI`Y(AfT@E z^(VI7?8m>o&<~z)#C4YQ?yl|gSJ&K4uB-f_t*YjH*ZArLb+d3s=Cd2GKlrY#EtRxW z{UC>Q#L-;cdd}?(@(1sFmi%K(GD*|imf3rdJHR{F>`^oyv-$HgTe4rL9+oN%eJHu# zYx~jo#W|a2JbCnS%j1cY-h|bPFVO8?+B2g(?vGc=z7OdMkGdbPh&^ybZb1Q4wPRYj zTaVYV8lM$QdjBu%y6~ueK~l`j`K1?3q;}o2Ro}7y_?h|NCe{5Hc$pTD5?`CES**bk zHhCxOQgFm2veiIh@B#aF4zS290cWU)AS)v$C{FY3&pXOaekY_^FYFZ^sVEawn6=bv zY1Y-*srm_m|4-aA`|!<_vqh=!@w2aI>gH{YJzu`;Y@MRZ+c!N^Sd}FsUQXHeTJmRv z-Y0jX{H&KdOBnApeHI9CJ`*&%H|Ce*O@%7I%qh|aN@6DyC+{da$l;S35v>0tY)xZW z&)r~VjVTU}{0HvzyA-)-S=KB4_0Onom?RQqkYIRelg7)N-2y&)Ze7s+KgaFyy~Cle zJ!S6hUg4g6z0}qG<yy^p&;4=n_kIT!=PGk)H=1mnBxAbm!j&(3e6%GU7H}W_7O~{^ zokRPI9gi-F2|3=$roTc*^`Y~-$)7AMtK#%Lf;X-@6FGJIW!35j<vsq(@3$xG$^Sa< zFnM0d(tL$^49<^E-@ovO5jA*?MfxGZdsK8AI56wPJlVjEQ!*zYp*mI0oEaoC`Mly; zFg;(%4op8#GDFKj%F0FxpztqUdnk<sn5Q<g0P__CGRS9{+{GfN9pKH##J~X0l|d~x zdz5p5>S};k7Fj*R+R6Krb->oWRhDK7Wt&{UCNf!0g$FF8t0K*KWwNJ=9GI5{<n>K% zQ&9x-R)OV?sVE?&i1#X@jCUrpsw%{ST*;W?=avF=<rSb)1W+v15Mf|Q$xjX_$}cF^ zPb?_VtH{kkcd}HaYHtTn*A*ZZM$x@%a+9hOI2>%Ja&3`hV_^6N^phxxnqslZy<*~% zZ>vH)@=8^jasOmCHHg!-)T9}^CcCLAfIX6_Ce3t2aq>MyvB`7P1lT4ifeZow&^gQx diff --git a/test/docx/golden/table_with_list_cell.docx b/test/docx/golden/table_with_list_cell.docx index 2f3a831a720c1d7d52071b4a6b811cecc84a0998..84be2720f79b81abd1df350ae0cd2d59ce6bb0cd 100644 GIT binary patch delta 1282 zcmezD|Iwc}z?+#xgn@~JgJJ4|+>N|*8JU6f=CzExjP*c9kcPIn)dNNbhDjU@41x>{ z4CVPnDf%h-$)&lec_n%kxjARUZui|*5cn(F{heh}`>IXXB1<>Fa$U75ba(E2PPz4& zJ2^M({rNkI`JUUWZ8uH$D;d+;iY<(r^~10C2Z`859N)U?LY8L$W7o@BtJ}G1_tx*O z=v`+X?i`tYt==<WAII;h+U;Ch@68rUJ{~pUitbiM(WKsOlYS-KVz<eNmR>DsA^u{? zfo!L^M9-a0oo;f@i)XhP@9<?Z>dZIpw4HjSX@T97w^4a9X_rM`t<e&`>Qt1r^>S~# zf$r%Ola}?o_}}(o>51QMqLxk7I#F&Hl8sjD%FfeV|L_e<Tf?XNxpOZ|pW&2gU%S88 z(Ijrk+;!g{zbRMpEjQEM_hWBEl18<bR*8SPQpN$zZ?-@F-g9W>`K%%FkZscP5AJL0 z+0qZM{XD<4W9>29CbjMbGIz2rdQP=T{&QgAm*3K>UfullZMNx3r4(8JqwSaON5-ie zUOam2qL1^P6uwQjvoc@IIMGu7^Wdg<hsVbCOm6!&N-pJ|v5`qk=7!vbG;Svm=I^-= zA71odq_(1$B~Wd*gJXr>72~Htb9=b;stm*JPjVmRFD+Zg5t-U*{OZ5(kLGWu1AaV9 zntHdysX?EmTz^lOzR;e1Khow0KAbtb)-83u)lO#auUFnZwVz*Nv;U*4L4EpVN3oCD z4fFr$o9$;nNh6!jvRH!?$z*P}rQpP}nJtS6%uwLm&H-lJ5_E>7BL!hrMov&Vdckq_ zo6KZA5zYF^3s!A%ve@$Iiq}-HtE<dU#~o1mH*s(7gSXj29IlU!oqav?uTA#u$Tz;z z|2lQtx@oD&?Pj#$l4h=X@u!VZ&-zm?nq4Y>$+U;{x#EJh8B5KicYZ0}<oadKC5`O~ zE;^GAs};U&5}a{r!@{@|b8j%Lm8f387NF7CB-glee#euRkfM60U-K{UGN@{nBpgUu zk{WoaTU>EQ#pc9-f0n(+n%iez+ibD(d!YZZeeb*X$*s|>_uL;Bf3H2TI9HiVyKzhJ zBpK7P3ua$7`DjZzEZ~0pEo8~<I|mn*J04vU6S}<9O@D=s>cixBn?FU`+peFsWNk#~ zvo+^VSA`m$OREX1mG9sAN^U=cZ`Gx(`<g4*dOFwFJO5@!4c!vaen{xDiEjgk<$iHb zHZX%*?gS)IugRM;gG43^D4zw>50ve|w4#a`FG{AJoT6d`mYJy{&9t9o@*NgA?Er5^ zCI$w0mJe#V*`u5b%-J<SEDOX4@OScm6&<j4JymJOrIWo>6~VkbAWvv=m#Q3?w;ISh zGx<1F?loABT}=Tg)(zA|8Kow>sVRWfXR1jvrcQ2Ela~iMRjN|8w*zS96(ANySPf)- zpL|$NNdctBb}H8vNj3(CUqI)HqNv#*KKY!u_+%M%9<b5c>e7sVCcCRcoS6;e9iQB; b4zYHXx-=7`@??2svB`JU1=!9jgA4)yV{{h! delta 1365 zcmez9|Jk26z?+#xgn@~JgF)KXe<SZ)MrI(rc`YL^V?B@&<S?1>=|e^ahAA8j41x>{ z4CVPnDf%h-$)&lec_n%kxjARUPUhV<5cn(FSU!6bzpJ7PpA>s+!y=AbTWl|1(MUSY ztD<_eK0Zigs#HeQ@vjHPgEsG3Zf<;~sPwN!g<-=+pOaE+r>SZ=1YI@w8L)W$_k8j7 z7r#EsS|jCJUC($))Gq#3)|$ZQbJiJb+rsSlCMa`)-8C)cj?c>~4=gt7HS22HI?u0Q zkKXC<2m!UgMS{mKtk{++k~g`*=g}^oBtKQd1D&5sZ}(-+z8TV6rM%i@t3Z!bYUpdR zkWQ^lOLUdn_A9a-EWWoxtN#I??`e)ApVVH($Hs53_RKr*AaGs1d2!`pyT-=_U$z@| z9CEz1GEKg0`{T^r#xEar-!9fTmZh-A?R(1cy=-%m?(e<-*7S-;aQmKz{t1$P*?vD( zT=9ROH*@2=&7UrYo_M4Zse0<*+DCgQoD_b<&bRX3eSw>2u5G`+#xp!}-Q(Dg3xAZi znR@z^T-@*~v(xj}f_-a+X0-&>tDWJW^;afp`cGklPpyR^*OHz1c_Iv$7n~Kd(06;b z>(If)vt4`xggF=aR5dnzxU(YtmTI-2zJ&abJAYNqv)h~8+^KasG|Xc0zx@sN8T)x! z^Yy}R`kuGk(PaGl(BdCT2VZx~f0GoQS9v2n<l9PdYl90ukK_J*_B{UC`aV->xtjQ0 zjXM4hm*tN=6GurTo6oRVgHy?5F1DrM)Ut^!iwVq-=iJT#X518Xh9o3;VOB;?P(t!u z@Ig*?vaX0`z3_syYXtb#T5Jtk8npG**-hdbI_gvMr7M2VVsV<d<Lk4pXX@r{jn)6Q z>};Ka%iA||rm!kYM!cM|ZMJ1)yzXcAO&M7)ca|{5HGdWea6S_>yEo>S<xQn3zsxDo z21;Tl6DRK|JILXadLuypiC<1bSkK)+W{oKhj{OJj^t%)}X<61Q{VmU^ZkQwzWsqQa zX_Lmwqul~Ndv0FPuAk%f_~2pR*O4-Jf3I*)zFz8T{&KBmy{CQry!*cbi*uE^v>Q#f zPLeU*cHzpGO+MO^4hy&se~Vah`_93I#g0dp#Dp&IWYb@vqx#Sp8106YHBq{r!5ded ziJUrpv*_;U!N<}suYYV9F8^12fv5kjYyTDIF*-kbegDEACe+|9677csFN^p#aA58g z_hbVzIOR@2LiLKgIWtIPGN1BUFnv$i4ou6dnDL@y+sR2PMhYO2(zS=uSb!OMGYbQQ z3@{@jzyX%Yw^`))1H2iT7#QG1!Q_W3(v1Hm|5ece8?2)$&9sbd@<BF{$+4<DV4)mU zX-4769jbC*-bx_v?Bt`WieTPLupFzJf;>F#fp)tCEdUiF2p~P#MNJ_Vq=qrY&n*S0 z<_b`a073zfl`hJ_04#9=it-DJ^%DyUK&1|vV}qnBReL*tYOesXFpBP<lMkvXfn8xc zm1~P68w0~HSq286kw{?EWF~bLu)8(YL7sM1hxj5B$U8Z?RUP7sR+*4<bAY;z1F;B_ RZUzSC$w$=H*)A%B1Ocr&0Q&#{ diff --git a/test/docx/golden/tables.docx b/test/docx/golden/tables.docx index af066107ca5fa11c83a7c6f10c8f9cd61e4589a6..140366d8bebdf38c54b051de695f1663f511b508 100644 GIT binary patch delta 1485 zcmZn(Xbj*D@MdNaVPN9mV3@KXcO&myMrI(rc`YL^BQKB<v@fx8(mf^yhOLv2Ga1%b z%rW0IX~o6E$|nmyzu!IWErYSi1d{;Ss*P)|Z@<5;?0UBB+&`0=bY^ahSzT9BF~O}x zb5-%Ww7)ODrAgFx`Sta$(z(86ijQT}>#1i~)tQv9J2C0VCCkYP{3QoP&iQVg_+UeJ zn&(pAI0@gGTRGHSFL__??_^oGNX%^?o16dgIh*P?Pjg^@^h~znrsxp^M!v7xisNqZ z`F>w~X~mk>F4g63(YB?ASB<g*ZY{gL@y?cHP1o(~tbF1dW2M*LW?X+!$2{Qg!9A?Y ztrZ^Vh0oer6}pl6*yY9c*=mb#O;odrH(eX&VbHyi`LV~;k9*|5UiiJrr!nO(M-sd6 z!AD)YD|xiO>(}opF+5VtW@)_fVyMd`sns9)wI9#k7|q#c;4Sbsqs2S0=)AtqweCNM ze;1{3FVI+LaK>nJ%EgcAk67y!wmLLT^3<Nmkf|a(C8pVuKT|59-$F3=a>v2x>N$B? z52hKPyZd-YwCL87S6OEbS6ym<$-PB@&u{0(cTtb;B<^){xczxs{in&yx?U@9O|1HN zvf<L=;44XYcUNEeyynuD>1E$4eg5A0ut)VW&&9Lb<T5(9m8@m5&otM&aV0nL|NDwR z=OfHta_kZA{cMoIb9h0amf0tdYj&UJ%_};n=BE9LcjZli9G0?!cUW3D8qUZXYa2b< zT*(llC!u4=Ik_>x`_GeAHYV=%yW$#^ma}<@Hf+7n8=>G=vhrg#yIu>6N!gi<dHEfm z>z`OH-Ri?pbiVbf;*RqHuLFt#6ka}Ody(Yob@X-BSJ(fZ*HU9Pt~+vX(+cnVt5$eB zYrQ%aBdXM5^T=O&i%QY`KM5=e^Ctd3_)}g*pY>!sOH+-Vz_*tANUr1D1_s6fIpH&F zzsrSGH_1<%ZI`a!_U2qsz0ZBW<*VOyZ2MDuGx9;WtHg!pHc9?WY!Pg-ITI~+aWByS z%6t0PujB4>Q?JC%3@a&4oMIE>DEFTYCE0I2!)gsq_mjEUmx9y(CiWUgMlj^u&H)yA zE$9pt5oTrN1Z9oBmA&FJlkG(m>JKXjw8S5Ml*e2a5_+PLZ*5W5Qm@jhtISzuvmE`y zkui5qZKtet@092~9pm4I+*ejNzuOf5!7*~P%N7L<X5}>@X}ewI-&)nXtX?M8$NBo< z*=Tk<Esn@6<3`TyF1saU4_kD|X2^9tG4Q+-vA)u0>HVbRN9W};PH(YE;GO6#XIXE@ zSZpqQQBw10Pl^3LX@;PL7Y@yxjF+1pb(=R`f0%Z7!JpzR(SE+XDD}cJ`KDRDwfDtq zO(TNqy7tG#-)j#nPIY?X#*mez84<FvdD*e)sZpH#Hc|F@=UsQ5wUw!Uo$7Hav~*s^ zm!>m8LT1nAO*#MS<<8i}%T!d)dQQE(N|#eznS0xU`^%Hp{nB@sJFjH%I|aW6!;fF{ zGyXB426L-uKO~sN#kYY2^@6x38<-&@cLEZ+&*jaTK_ZhCmCu6dkIHsn+DOF=tw1VO zF#^l1Qjuob%R2cstDJU#HzTmDf){5&EjN3Va~T*IYJgZ4h!NoTWC2wjuy%V@X{N>O zlMk|sOfFF60SncuN;4`=o~<ee=IsIU?o7U+stD%&0n16KDIlc*M>SDKt;ykP3Sbpg zYSN6Qlc%Z4%Y#yhRHbTf2hiRtKrD=~AIM^#d__$OtmCJeG}8g`$@j&@C+n(1oM59a p&B!x3LLFjh4Ul(z@(gu|1-sRynFN(58z_rSey1+Lc3&A}EC3Agcsu|A delta 1581 zcmZn+XbIpA@MdNaVPN9mV34-;-^e?ckr_yDUdzbK$O~iy9h10u>;V%4!|ut)nGEZL zEb>!S0~fcuPkQ|9e!1>#%`+DqE;*FGIJznBe%<a{vFl5Vz6En_N;+1w_SeOafl`9Y zR-D^8>-*yOlN0|aT3Oq!+!S*;$ml7@x^T1Azb+oyspKu>E$-7~dx<sJ!u+yZ)8Tb9 z)u)<OCYq#PQ<@{<sqcGVU1&#Fl*CUV3ESC)r|R{hm}EPmOBB-L1rD=VT)C}Rk!Wpl zx8G~=CNZsPbEI;=o;ezFdW~b|?7ZVyxBI4w+}-ucqL#5NcS|1o9+%B`9KN!D7Mt^~ zv0-;irrE2|qjD1c{r?ut?8$PU^{VFXmMYDII>-5XltYhwuDjy=ezg(nq_4^yvOcWc z+V8{+SKQfO|Kie70ey)lXO6gq3wma)Ib@&LlYcBvSK`nbhcAl-^;}Qd?l-up^NIic z>6y9>i*_6`IDMweb-8?}_@BNjOq^b7Yg3q(O!NsT;(cbbB(uTxQOFiwWwv;^jWe$t z&`qDS`*`7Yy{wm4uFgshSz5|c#=Y)>n}yBeW4oezHy{71#h6=vKKisj-xiIfS?;fX zx-)zAp9}2wegDq!{AaJraknC0DE{<5{CS#>vCH=8>IJG%m$!2LS#Wnpg7NmloHefO z6^HhDx<Ba6h-q_7mSF2G-Z<5L)5nS1zf93KGmV<4?{T&*L3xAsvt<e{3@PtsL{1i* zug~<L=x9P~<_sQ|=!fp%PwN+2UV1AfVrd?*ieXJ_-Vvt4McKXgtqT-Y7Hmv*`&{Ea z=fCoG&9$jc6RP#r@Expei)x?L%;ae=yx_E{rs#U@Yw3U0Z;BKhT_#k0cavW2+D&@A zE7wRDhjs`Ub=t4LaOp(t=gEQ%m2UskpV!Z@kyoo1<ofh7z(U|(siutnfdh9U9X2Mj z*;Pcya@0lS{a#`#y`}o}U$bi4xp}*kZ+(29n%_8IG|^%Hrw(RLi3H7(Eza*=tZTHp z`dw$Xw}O1>w7~M@sEcQ}27daj^y!N@O2XfKiq#sN@+Wh!F9qj-4eT|Ltf0@iodYcL zQqUPHBFxIj3CbM43qHunPPP?Ms6S*N&=Rlu$#$dgg0*V|_|{r%4O$ws_0`!;;u|{Z zQ}U%Ne$QfYnz-ZZv#)3B=53AD|F-OGor25TH*==2DoaMZoU(1UWo5kXXZB4QSub~% zFvc~176@=Y6EwRw=9lG7r7FM7DbWT>VkZ+P?<hOS;gfnJK>vwfPD5DF-9ToIDGrYH z{Ri&!yA(NTSt|W4&!}#gBobwiV0dYh#>=DK0zP|gUeK<e<M#OAVc*x0GIxKka8JHo z>T3RSt!BNaef+%pzXFSMmASMVO}0*wG2M3I%9l+(+L8_nxDS7eSaSQ$!G*<+N0-Ee zF7IU1U!kM=(D~iwPllB>QM#VN8&{o)oH~88=x&YY!N<}suYYV9{#Sf~r~j^N{}tvj zIzM`S|H2<8)NpPR?T3W3i1;>esGb$~WCJrK<xW6?_ldkYGe~5zobp*P{Z82qOzW$d zp_NHRDn<&Rh$vlqD2;`YfnhTX1A`0$GT6^L`6jCze}Fe5un>cnbCW-+NHhMO%&V#c zHrPg0nsMpm2vtQeuLj6dnLI;P4$RvL<lUQm6)N`=EGMd_AP<j!ptbHmvjvfDWzd-% zqNWfFQp1?y=avFga|NhI07XrOC<8-EesVxjenGK*VnKmkMQ#q7JA<SuReL*tx~>4R zFp6%j$rsg>z^<^J%C$w3je+5pECU13NF;E0vXHt8*cX=S(v19*L)9TZtOW9IO`fU_ e@kOgl$hkQ{UB`h~1W7lLH~EUXI@=><kRSl_VPr7?