From 3d1a12c335c939622b1f9d83e7a69b5abc701456 Mon Sep 17 00:00:00 2001 From: Simon Rozman Date: Fri, 9 Apr 2021 15:33:26 +0200 Subject: [PATCH] ZRColaCompile: Generate additional Unicode Composing permutations Signed-off-by: Simon Rozman --- ZRColaCompile/main.cpp | 136 ++++++++++++++++++++++----------------- output/data/ZRCola.zrcdb | Bin 3779372 -> 3792188 bytes 2 files changed, 78 insertions(+), 58 deletions(-) diff --git a/ZRColaCompile/main.cpp b/ZRColaCompile/main.cpp index f733cc0..fa3fc83 100644 --- a/ZRColaCompile/main.cpp +++ b/ZRColaCompile/main.cpp @@ -598,6 +598,69 @@ int _tmain(int argc, _TCHAR *argv[]) bits_comb(FONT_MATCH_WIDTH * FONT_MATCH_HEIGHT / 8), bits_pre (FONT_MATCH_WIDTH * FONT_MATCH_HEIGHT / 8); map>> trans; + + auto process_permutation = [&] (const wstring &comp_orig, const wstring &decomp_orig) { + // Replace ZRCola decomposition with Unicode combining characters wherever possible. + wstring decomp = decomp_orig; + for (auto i = db_combining.cbegin(), i_end = db_combining.cend(); i != i_end; ++i) + replace_all(decomp, i->src.str, i->dst.str); + wstring comp = decomp; + for (auto i = db_all.cbegin(), i_end = db_all.cend(); i != i_end; ++i) + replace_all(comp, i->src.str, i->dst.str); + // Check if we got anything useful. + if (comp_orig == comp || + contains_pua(comp)) + return; + // Do the Unicode normalization. + wstring comp_pre; + if (comp.length() > 2) { + NormalizeString(NormalizationC, comp.c_str(), 2, comp_pre); + comp_pre += comp.c_str() + 2; + } else + NormalizeString(NormalizationC, comp, comp_pre); + { + // Paint original character and Unicode precomposed/combining one. + dc_selector + selector_bmp_orig(dc_orig, bmp_orig), + selector_bmp_comb(dc_comb, bmp_comb), + selector_bmp_pre (dc_pre , bmp_pre ); + static const RECT bounds = { 0, 0, FONT_MATCH_WIDTH, FONT_MATCH_HEIGHT }; + FillRect(dc_orig, &bounds, brush_bg); + FillRect(dc_comb, &bounds, brush_bg); + FillRect(dc_pre , &bounds, brush_bg); + TextOutW(dc_orig, FONT_MATCH_WIDTH/2, FONT_MATCH_HEIGHT*5/8, comp_orig.c_str(), comp_orig.length()); + TextOutW(dc_comb, FONT_MATCH_WIDTH/2, FONT_MATCH_HEIGHT*5/8, comp .c_str(), comp .length()); + TextOutW(dc_pre , FONT_MATCH_WIDTH/2, FONT_MATCH_HEIGHT*5/8, comp_pre .c_str(), comp_pre .length()); + } + // Compare bitmaps. + if (!GetDIBits(dc_orig, bmp_orig, 0, FONT_MATCH_HEIGHT, bits_orig.data(), (BITMAPINFO*)&bmi, DIB_PAL_COLORS) || + !GetDIBits(dc_comb, bmp_comb, 0, FONT_MATCH_HEIGHT, bits_comb.data(), (BITMAPINFO*)&bmi, DIB_PAL_COLORS) || + !GetDIBits(dc_pre , bmp_pre , 0, FONT_MATCH_HEIGHT, bits_pre .data(), (BITMAPINFO*)&bmi, DIB_PAL_COLORS)) + return; + double + score_comb = compare_bitmaps(bits_orig.data(), bits_comb.data()), + score_pre = compare_bitmaps(bits_orig.data(), bits_pre .data()); + // Add results to a temporary database. + auto hit = trans.find(comp_orig); + if (hit != trans.end()) { + if (build_csv || score_pre <= FONT_MATCH_THRESHOLD) { + if (hit->second.find(comp_pre) == hit->second.end()) + hit->second.insert(make_pair(comp_pre, make_pair(score_pre, 1))); + } if ((build_csv || score_comb <= FONT_MATCH_THRESHOLD) && comp_pre != comp) { + if (hit->second.find(comp) == hit->second.end()) + hit->second.insert(make_pair(comp, make_pair(score_comb, 100))); + } + } else { + map> v; + if (build_csv || score_pre <= FONT_MATCH_THRESHOLD) + v.insert(make_pair(comp_pre, make_pair(score_pre, 1))); + if ((build_csv || score_comb <= FONT_MATCH_THRESHOLD) && comp_pre != comp) + v.insert(make_pair(comp, make_pair(score_comb, 100))); + if (!v.empty()) + trans.insert(make_pair(comp_orig, std::move(v))); + } + }; + for (; !ZRCola::DBSource::IsEOF(rs2); rs2->MoveNext()) { // Read character from the database. ZRCola::DBSource::character chr; @@ -605,65 +668,22 @@ int _tmain(int argc, _TCHAR *argv[]) for (auto t = db_all.cbegin(), t_end = db_all.cend(); t != t_end; ++t) { if (t->dst.str != chr.first) continue; - // Replace ZRCola decomposition with Unicode combining characters wherever possible. - const auto &comp_orig = chr.first; - const auto &decomp_orig = t->src.str; - wstring decomp = decomp_orig; - for (auto i = db_combining.cbegin(), i_end = db_combining.cend(); i != i_end; ++i) - replace_all(decomp, i->src.str, i->dst.str); - wstring comp = decomp; - for (auto i = db_all.cbegin(), i_end = db_all.cend(); i != i_end; ++i) - replace_all(comp, i->src.str, i->dst.str); - // Check if we got anything useful. - if (comp_orig == comp || - contains_pua(comp)) - continue; - // Do the Unicode C and D normalizations to get two variants: - // - Use precomposed characters as much as possible - // - Use combining characters only - wstring comp_comb, comp_pre; - NormalizeString(NormalizationC, comp , comp_pre ); - NormalizeString(NormalizationD, comp_pre, comp_comb); - { - // Paint original character and Unicode precomposed/combining one. - dc_selector - selector_bmp_orig(dc_orig, bmp_orig), - selector_bmp_comb(dc_comb, bmp_comb), - selector_bmp_pre (dc_pre , bmp_pre ); - static const RECT bounds = { 0, 0, FONT_MATCH_WIDTH, FONT_MATCH_HEIGHT }; - FillRect(dc_orig, &bounds, brush_bg); - FillRect(dc_comb, &bounds, brush_bg); - FillRect(dc_pre , &bounds, brush_bg); - TextOutW(dc_orig, FONT_MATCH_WIDTH/2, FONT_MATCH_HEIGHT*5/8, comp_orig.c_str(), comp_orig.length()); - TextOutW(dc_comb, FONT_MATCH_WIDTH/2, FONT_MATCH_HEIGHT*5/8, comp_comb.c_str(), comp_comb.length()); - TextOutW(dc_pre , FONT_MATCH_WIDTH/2, FONT_MATCH_HEIGHT*5/8, comp_pre .c_str(), comp_pre .length()); - } - // Compare bitmaps. - if (!GetDIBits(dc_orig, bmp_orig, 0, FONT_MATCH_HEIGHT, bits_orig.data(), (BITMAPINFO*)&bmi, DIB_PAL_COLORS) || - !GetDIBits(dc_comb, bmp_comb, 0, FONT_MATCH_HEIGHT, bits_comb.data(), (BITMAPINFO*)&bmi, DIB_PAL_COLORS) || - !GetDIBits(dc_pre , bmp_pre , 0, FONT_MATCH_HEIGHT, bits_pre .data(), (BITMAPINFO*)&bmi, DIB_PAL_COLORS)) - continue; - double - score_comb = compare_bitmaps(bits_orig.data(), bits_comb.data()), - score_pre = compare_bitmaps(bits_orig.data(), bits_pre .data()); - // Add results to a temporary database. - auto hit = trans.find(comp_orig); - if (hit != trans.end()) { - if (build_csv || score_pre <= FONT_MATCH_THRESHOLD) { - if (hit->second.find(comp_pre) == hit->second.end()) - hit->second.insert(make_pair(comp_pre, make_pair(score_pre, 1))); - } if ((build_csv || score_comb <= FONT_MATCH_THRESHOLD) && comp_pre != comp_comb) { - if (hit->second.find(comp_comb) == hit->second.end()) - hit->second.insert(make_pair(comp_comb, make_pair(score_comb, 100))); + + // Process primary permutation. + process_permutation(chr.first, t->src.str); + + // Secondary permutation(s). + auto const hit_np = db_np.find(t->norm); + if (hit_np != db_np.end()) { + for (auto perm = hit_np->second.cbegin(), perm_end = hit_np->second.cend(); perm != perm_end; ++perm) { + // Prepare permutated string. + translation_db::mapped_type::key_type str_perm; + for (auto idx = perm->cbegin(), idx_end = perm->cend(); idx != idx_end; ++idx) + str_perm += t->src.str[*idx]; + + // Process secondary permutation. + process_permutation(chr.first, str_perm); } - } else { - map> v; - if (build_csv || score_pre <= FONT_MATCH_THRESHOLD) - v.insert(make_pair(comp_pre, make_pair(score_pre, 1))); - if ((build_csv || score_comb <= FONT_MATCH_THRESHOLD) && comp_pre != comp_comb) - v.insert(make_pair(comp_comb, make_pair(score_comb, 100))); - if (!v.empty()) - trans.insert(make_pair(comp_orig, std::move(v))); } } } else diff --git a/output/data/ZRCola.zrcdb b/output/data/ZRCola.zrcdb index 1b52502291d28ee736a2e8e59d01382f2ef6a38d..05ed3cb117c45015cfdfda94514aa282dcd4cf96 100644 GIT binary patch delta 45948 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 delta 33996 zcmeI)2b5H0zUb|4b`uOpkernqm86mcL4qKN5)=VZK~M=Q(EyeKF@l*gATmf$K};Y9 zB#D5EU_uPwpn{-a#Dwua|88oA@i_N7=d5piYkl86XFc`4d)Kb&s@hf6jkAAy$+J7M z=fC|)c7fARX_r-P-s1&w3KiISeoj{7dQTQD)M0e$=hoR-dzjTKJ8K?&kIl|HkLBiT zxYPVTCYg6NK4a`@oMPO?HWpcagxTz|{3`{`51}L#s7f6gats&K`q=DLRtJ-5Ztw(G zm~Sy|>xLV*ki)N*R~wgdFr}zMO&ZXYmb9aD>r{5u z$tJgQ8UxtHEAHfOpIRO zUz_Z#631m{9bkN#)l^EksLsQb=5g9`0xfJ@m&R13yLG2Ch@p(+60YD{rf?@4$!Gh6 z*kL}62PjGl8q>~oJv^vXXOq1Yv@pOpm|dL4H(bpPTpJs6tNFdmWio7%xfDL8p{~ZX8^r8jH2A!H7xHoPNcp0jmGnhw;4|~-fet zD&91IpS#=J|0kO~W#wtc4~<{4lb#G^Hiud6fC+3X=^~rUoZ@!kTE3T`%x4;#Guiw&V<)DW z-@!@deK?c(mS-`<{30$U#UxfUnLF5Ho5sevtY_m1_Wy02eO#EqXI6e|{Mq<5yUiC< zfQfu;-HpbotfmePd6i>m%L#0xJEwCN=W+p$GL{K!c3%}b+y5mjEcD2>7$39pZsX;a zml>B?e$ZIWSlD=VS2yb70q`C>IfmA(qaklnfb%KAKu$Q(D@Zd&TK?62jW)U#b@j%APKpBTWc+`v^7_JBsa{zGFa<5$Mtspz_r zRJX1P9lF^6msxRxgZT*0|BQnUDF5ulb$6t}8$zPN6m@P?!>wXPxa{ zpvOtsSw9*Nx9$<+K;!w{?Ei~RQcR|}aGEO(nW}`PNwky5A!%rvy9ce%3Hk8M|{dx z{J?MB?Y#Ua`y-1(DaT>d;s}nS701(sQ|QB)j9?7oxtbfemAkl~IXuEbo?|61@fw@> zfbA#SdAm*a@Dtgmc%M^*QdFcGb!kL1+R%}1^r9aFIiHKTm=u$k%pKgzOdjGf7PFKW zW5ad4$$NarPQK)Oer1RUmea$pEs9fx7QOu1GB%*C`7YxL#-_&Z#xppTc9zdE4r3Ij zSsuV(hLalY;xcY_WZ&mokg0#&KQ zF|?+o?KILovXvct!FT*Z z;)xx|%rpJ&G6>nu#A43()teVQI_2V6+H)d3IGwXNmkSunZQRWjr~2qIg*%zX13b**Jk2sz^D1xg zJ|FQZGu+2q7O;o|mbiFCYgBGLlR9iXZrm z{HOVJb13CFj9MJQQMBTCx^T*A-VS|C&SVH97{hq3<_2!%F79UzkFb#ESjkJg#wI>s zJGbKISIPXhTQ3rSET^T|PC*bTW5vFEe?F$5_l#USu6_ z@*W?ulP~$6U&%S$2btoOr3y7^KvP=Mj?SFSX$&~s3p3bcIHS3YtGJ$9NHd+;%;!m- zWd&>5z}swL8@u?1y=3+EVdW4?Qh}<}p&`f6y06bk2a~S!q%UW49v3o>%ejV|xSf0W z8xQg*Pw_mfc!f83m#ysJ3%=tQl72p@6r&84Q!Z*ypC+`REho^OQ#pfk7{(|r_l zCNPm3xsAJ-!CV%wh$Xzh%e>Az{q6t1n|#9Oe9O<|JHscKqLii*)u~5gnsXeTIEmi$ zXAnaf$t7IDwM^koek15+<^3ht+H#R&NLsw2*xm;tGR(&xr_Um!y`;{KM%0b z{9)tcJk2tmvu-6XvD)&hyk@?MkIX;i1M|0x@AK6eUW6Y^wp+QIJ^VzrFY`hap%fLV zMqL`wj5c(n8@=eqK+fkPE+)k!CUXb(@(_=)m>17X`FNYW$$NarPQK)OekJEDUj@eE z#`}Evmo--5QuBk1R~l;?8_<-Nw4*Zv7|dmy%vD^^Eu@*Aaxt9K7|m?vvz86K%@%g? z4OwUVXj7FsbmbUYv%>W~jfYT@CoS)#f_Xza@T}#&#`Cz4)HN<{;%qKw91rq5t9XNV z`GVWo$}jwlSGb2AJj!=GMKaLGoHEp)1#PL!ft*2ox(~GfPc>=637o?)MsX$AaVa-5 zmHU{*Jf7egma~TSY-BSZ^BG_BBfnE%kWV@#IO!apcH`lL?El&(4gDo?wDCxer9CIo zgVQ;S3mD4;&SfGuavOIu)Sb>S&Sj+e0^=f<@D6|HWnSkKzUA|ji=WBo1_#iaLG-66 zrKv=9>d~0y97iW!aNA3aS8y%UxRVE%!oxhy(=6jHR`Wg|k$Tm|r+mc^A&nhml4 z+n98u8@=eqK+fl43Q>wZ?rgd{dYiR0F$@P;dZvL3@US{%*($$Nar z&UjQ`@;$$jW8;H($b2z(Fx&DLHc-{GENiUEV6JBXqj{1Ft{-k}ZM@8Q6^EE#$mOIh zH#8QcC#h$xSixShtmr^j&gLdMTmOaeJ8nMT=a*t!Ny2s1pgv7#L0e9sJEw96=P-;> z{NlbYHC8^~{$FmghSP`o>>5AjMDvZt9>yPyzf-`xFeNC@;ne0xj^@iwzqxLKaV+nee{Ou#xFls#$%fVW*?fnU^~|3)zGHcn z@$bf0jE${7j!tZ47^iXuzwrZ?awXSsGgG;bSzu?htl&#_P++*1 zoB13=RqF5#uhW4i=}J%fayI92A>+85sm!J!t+|i#Tr)hodDdi;!aU1MtYFLq9)R%+ z#*grZ;}`S9IK*{V8!M-e?vPzKb)ab(zH@a8SDiq28dz6@8@M&*)-5#N&m2ZruFp#I zm)ObkVexQJi5;R5g9FHGuOBX~dpIYnUGHzis@44bb z2AJpYrTO=4F&|EG%2I`zG@vOhX-8*H<}`kFyMv57jVp{B7|dR#^W;eTKW#Fb`Rw8w zwv6^lkTuFTEh~7Ml2o7}htP#n=);)|VGJKLo=16;IlRo(+`z50rP(O^|1Oge+)q_@ z@ePaO0Z@<%?6q#Lu?a0`%L#Pn3^sBO(|M6$T*fG_qAu5SDz|V5byDuMq{(LEdgB7p zETtM>@;y0Yyp&YoPJXp+wy`zw zKIJzq8S4)o;}ynIRHPbpX+#^Q(~&83qd&bEL}5nKjG=txzRL2$82f*zN!rS5DZnEv zPIv^u->Ph04aO zjW_ZIw{tH`c#&7x$UutNc8l>hwo}0J1IBrb;(N}ut_zoQFOPE*HEF;u&PusBo*wMw z8^&=BckloY^9;*b!+N%`jnlc1rnF=u*_U`Vc$IckqABn57JV4PSW?%xxQTn2$wNHG zGFH=)Qz$|y7SoyfoXG@kX9U%`@-lyJ7#m&c{Xl z+5eSIYEYjhw4g1o+2{l2afan#T*ot(cav>inyIX?+3QR zmfIWOHg0Ek%EcajBHI;(C_*icW`*@zIKq6Mv6QhAC-SW2fyN$O%9R}MLCiPaLYi)t zJMyG?ZR4}Xmw1g$r0?mLT{LyDYsxd*niU*sex30r@|h3iNCq+8y4J>{>CfiNJw4+k zlro=Yyq4uu^zv4-?qT!Cd5ukcz;<@CXM#7uPbS$mEJP9RwEO^9@U`XNDd5g38mCyd zmZzy}xe?3hMH@O&&9)nj16jkRT*-CZ%vA1U7V|E*@e?M`(2agH<3|p0T}c|T-f~^z z$HtMI&u2Vyg$HW=oy_At%e{=vXu}rb59Rou#rm_+_1lb>a4k~`xwwy6>AKzhch&eu z^+@7>MxSTfHS99~hMUbRl0^|VGnKkDqYWp~n{yb(C@$qnuA>yy*z5kDFs^4gjp%rV zz0u!f76p0qO27TMjgKvV#*OAB*=wFW(HMhL^ImZk#6*&A7hwELFzD`uie)` zLRASjoX$q4q>x-H)C&} z_V-QiHXYH!$8jo9*VinKaQK7?!W52uIP1y`b#E9K@H~?(_uxdfrf)yRU-YZ2p2Pi|W%W2N z=MH|bZU>8amoNFr&wRyruj{uK^Vb?b@+Dct{Z+sLl%pzjX-o^+(S;uLWngh{pJ67W znZPwnW-8NpjJZ6`a$e$1HnW}2`Ho-7f2cnlC`Bb|(14>jmJW1d0KFN)1&4O=j7?Hp z%gv;@pSe8BVwSOn4ZOovKII#JCMn?$uG^Q*s+$^QHk>g`U=mZ9%5>(ifW<6h4I9|X zCU)`_KXO1xuPNmyMqLi4F)e6E7kbc_fhE13Lrq3;856mQJDA2S9$^tnSPa#G~g(Xr32mQ%>d5jB2t&QxRUF+mAjeAJQlKqRjlJJHnWY-`Ho-7U)Echl2oKR z^=V2g+S8TZoWWp5Ft)7yf4Rvd?&4-<@F36fI4gOXH+i3r`IcS$LQXmVa;5|osX+sd zrZt`D&e`LGpyic-r#*cW*2+-nWTc3osv}K2x@RNt?9(coX*({ zWfbF?$YfG?y10)yEMOT=@fvIRkazfoPx*;_75$eFic^lN)T1e_=s-74WdP@LA(wC^ z*K;qoRkZ&fFqy|fmhd94@&Oz9gfIAk-zikd$BeQZMjaZ_oVIl46i#O#!x+ouT+7YO zAkBl7?ElA1o?!)V@-pwUjqljaujH@nBSvLPQIjJ$n$~pWBu-@jL%4u(q_~!wNpnAQ zc{HwA%re&S8t?KUpYk<($*$t-m130TFly6?=Cq{?J?O_EhBJl04+b%e(M;ePCUYnEv4Gh;b(sCX)MO1C z*u>x2!B_l9*5RHx#VE_+)S)pgXh#=%(3e3BV+<3R#1y77ojE+pVqQ8t%7ZH z?BO$Vs`{824>p#dBGqZYQ5;JLy3w067|aO9aRt|NEB7#yc`RfJFY;>2#oPRy9el|T z{7%7Y{>-8@Rj5TnnsFQ_a0-1H$WTUc8CP=?cW@uGS-?}QWf`xLddJ09cJdWJl2zTu zjG~m`Fly6~=Cq{?{pra$3}-BtGl`qIiy1t~V?50YUgiznt8V{)WU`Ar{6bC*-)fYk z5;bT*8;+(Eedx~loW)2kTgt_5zU3EkYIy*ZpaRvXM-y6d zJSWnVehgw5qZ!XcZsHE6F^l;uWC^QS$6IV6wcW+%e8;ckukGchBo(PneVWpW_H?Be z{W*u>j9~)TFqu2KkJ&uJBA(|(US%U&YTN(YO}^)IexpDgU$c~=5;bVRQ5;JLy3w06 z7|aO9aygTj!c?X+hXp*vQdYB`xA~xs{r`!{7kp2Fx*mkFu(2c+sX+sdrVX7qnLeDw zd0fOLT*VFC#yvd1d=|2VRjgwpTlgg9;tRg#Hwx7A>?uVhYS4hAIF=4{<5UJPgbNr) zid(skncU5jJj`>vz&hSyGuue*cJVFw>w5zl3mZ#Pk?PdvD2}BA-RR933}yslxtvK% zVJg#^!vYqwj5Tav6Mtt%ef$4QlOOnaB z7c+Q}$9S6MtmQS{VJkZu*#BRd{7BXjzV#?eQ4XUv4Qa-4oWRNS;VjPMA}-+uuH-iE zVI~jr1kbXPmwAKt_=wL^F23O>@*U~dEX66u;nblK&1p*)deE1F3}qCTaWyw`JNNPc z^LUaatYRbU*ur*FpS$>uU&-Il{--1rsZM>G(u($Ur5F7dWS&mx}ZMP6kiTlj=8 z_<`Rk*w{OZ(p07Bvcqy&X?A8Nj(*#3fwC4cx{(%;aI7;8|AkGVk*SAG3=+ z{7llszqUD)@>HcRjcGwUy3n(Uw_|^k!Hi%mmoteeOl3NASioYIvzFI*hpp`7D}E%a zskb#nDMJ-%aU{pkhE8EP|8!4x-_8`?deKy&fp@3 zFp*11rCm(sVP^0=PqKm4Y+@@r*~?cP*ut}>IOVBIJ(|#x<2jL@^kWdi8N&pwVKP%& z*#FZ_=JF^{vz(WBosW5sZ`noumVRd%OBoAOlS&-H(X^%$-RZ+woXIFe?xqbt4W&tS$eg2wf-a{sT8%c7K_ z3bmfxu>6S8si;;bF@-yc)Hc)lMsgcH?{e0#o{elFy58t}_wXwPkM$Yg-}St$UDtuG z^rSCmN8cMUapbWVa|PED+3cO%$7~*95ziCN?<+*tn`wS`n14a!xWAIq+F#a`q6&ZB z_WDpp-+P)31~8Zig(E1wjEIV(*^Tx$THhH&%e#Q5SjuYF^EMF}ZzKBPD5ifVUmO3R zr6`f_R-!ufh|IP{%0*jFpgX7Yf9iLq+2#QrCVJqAg_p6K^+ewrg>1CFQOo{BzTCNXnk+xuQa}yt~Yw&XoaIAj+D0`MbH4J za{Jv{7NX^C!SO`H+k?JDB7Gi_NncDv#@BK)5trV_Y$DNJNc6p{h$Qz--sfW?K#gcM zTHx$?qfCx$wj!AbINICh97puNr_i4vL{>Y72}J9ABe$`C-}`56Z>H;w zUN}18J*0kek=@?QLBzk&_eQT9F>&;~5gA8-96@nJ#1Rfh_dAe?i$@YY@ReLo1gg5- zf3&@k)keOXX?r6?eS^qsKa9S2r%5!uf3@Fj*TEZ==z^mO9zc|^5fDcK8+~t7u+jEL z1sgSNruU7$H!9jFX7eIr`~PDLnUFZ5;-sTrGemzIZEt0w`;B}yGTfH5BRb#cegA6X zo9TL^8IE2!y5hAd7aQ0_M8MJOMg;r|5d=pj9m#a2*{x?D`E+!=(E&&IdlIKIfFWGK zI3iMwWH<8MNOB|1jSM$(+z48u`AtRF8?oa4 zryK2Wru*H$_x-cZH`Dk=I~?6`M8|5{RBm+~8SQG;Bl^v4Z=>an-Zwhm=zXK{EllLN z6^O<+)A#P*_WoJdn`wHZ5sp4Mn&QZKXGGr{{ceQ65fVq!8{zP)Y-9`Dh|oB~<6nt( zHwxBhcPkLBZ{)Vo_GVgNn{a0J8e z5xHyx#gWTK_Z!LV0Vn#EOQf^ai4Hg-;)sb)Ak+O0Fpti6IMMw^RU0X8Dw^DAb0he@ zpJ;s_=Q;j&oo}Y?jet1f;RuVP<*i6{>d}PgfTIWQNk0ZLoY4r4Q@P1>rtgiOH`Dk& zV!n_iM4!8kjcn#)GM#TUyV3ea=evK`8y#=-zR~`+pe@nH(}-Mqj_9thF#M%Q~d(G54E8ExrI1jnaG!dtU;rtFQX zH|pLc{C_d)jo5VrWBBiaNjpH2QxX>U#se{&I8Z&@Pk&1Aii^0p)r z-p)kadK&xZyQ3{fy?Yf=?%qOFyQ%*q+uh{`eq;W^jo3MI-zcruNNLzESsX=Rb^jQ~&LncjlS?Q9-8YU26U!eGD#r51mZqaMZM7$B;MsT}=KL)*#J!Ycby-@*Yo$Wsi za0n%-K&J9-Xr8HjJD5lH8>MfQyk~PBQS(N;8xij{+(ZPs_Ykq}gG8hofo>-5jez$J zQt!Ih$_~EZJANS<=wHPYqYRa)LDaiV$dtV&n5%hnW8O22`-i*{@LtJv{F{(B_1`Xe z%MbFWHWBegyc-ekzYBOH+TB0m{b#^y|3|@_sdx7;cO$TUnW%O%74IkJpA!Y|&*VGD zKgswj!EU6-5&1^o8=-Gh!y{8J_OE!O+>MGiYThV$|5))x!5iUj)V!IJ_fzvs#2eA> zA4A?hi+Cg6jc7L&C2thHnUeQEta$%4;LXIi(amN;+-PYd%q>Ml_QklVeKoHC;l#>+ z7vo0N8$oU~vy+J6Hu~61Y#YsN#JADSF6B>yTkHR8Z)^WYxf@|^)VdMZHXsV$NRJ~$ zjt(~R<0yV3xE)M{wh`WDLfeROBT0_Pb~+L6M#3CnZl<%1ayUZXw~45C8@p02A{EX= zxCPJiJwUY2QS?Uj8=Z5MyU{_nCKKvL#T)H&1iR5jN9j9`sC}c6j)*t9*T`2RLyZph zQKEs3$}|eoROF@6yGEND9qSG<)o;|gQTk@e-)LNwyIKEf^&7=+RKrmWM@bxAZM3tq zq5_UWH;UY-bu&e9l)O;^ZzihX2y3J2{ZEVF6Nmb1ohXbWc@{M>mQwC@1-%7*$R}tzF@ouEYnSeKX z+f2NBPRhbCBF6nI1#c$QjgmLw-FJy1IHKK%ccTRUjR<%PQ-TO?GXZaexDoV5j2jVe zs;i5h{JVlzshb<>M#+00vzbrSzY*?6v>WkmRKZaPM+lnX>)J>&Kpr<70KYR$jvZKJD= z=Js`>yNz}?Qrc*BqqmL3Ho3@uSm02iqfhqiG^=5kDPWo znWR=@n;ZH@e;ciDG`JBCN6)*BOmZ7dZq_J&LJ?_gNh%OUY#ka#soIR_X8)|ajf8d# z_3-$qj# z4Q}+e!-(cK+S}-Eqq&XVHnQ4ibLSG7?II$xjaGL(8_9&nnd~+)+kNS6DmRafY_$rt zh=#T~f9!7~r;P?T`rDCQ!WBef8@X-tyV2xEzZ+d{G`dm2MzfpAZzH$;h)8h1;)gK@ z`ARa0M7D6+e|4{$io|vhk<>aJt8Ep?M`ZAEAjN&q`=0UQas*Rd9O4=xI zqn?ejHmcevZA%k%Zl;`VYTokV(*9RZlSpi%o{bXrEY3|AIWfC*D&pCwZZiRG)VF_( zXg6B7g$QY*#{Gtfa5DjIrg^P&iQhv+^BN&-G_euZMh6>hYy`E@!bVg(g0a!HPB6KK zh-)K|{bOJoA#EnIebqe5-1o^uveC5)WOHNMf|q(Bh~_oI+2~%Qm5s8_EgRw3f+ikM{y}v5<%_FOeGV~M(6q@(YLN3LfQ?yO|-DN;jD2FKaoA&|CmA% zGJR~XS{9DrXpW^l5zR&{8%1t}vr*(mnVX4cuQShtvyr*ZCSux%XCs_lk-o88cGdRz zCiwM5RI*Xc9!|8iQOF)mYofW0_BNv6sAQv@jfyr?%3hInGSjN5h-9N>{WoFkf9YZ) zu&qc$wVC!cQq@fN8u@B;u#vD1Bofs~RsT)@T5ewe>kVL|XIM@Iv+L83o|IksoJe3Z z?QJH7t?0c~jk-h@+lYHU3L;WUhmVzYHT~y@W_)b8}bYo#Ym;#(7b_Hcmxs z8bxc=sZqFABdXS@QkxNFt2*@`b!$Yb=kRBR>&@0rMAaI#Y9sz#*_v0d`bB7)s9K|Pjav3L?q&uNwnkOEn5bq~ zvp%ZVjV4j0W-8Zj%=eOYl?THil%yj6u5|6@y525m6Ut^P*C=o&6SZrmXpOirqQ{6KI~yZzjQBAc z#t0+h(6$IB)(&Wv6i)o!zkm}O2<{^7JO0bMYR_tUmSZGwOUt12*HBx;XywnYbZwY-Z#FmFn0-96~9^ayikmMXweu zTl8zuvPI(-ty?r~(V#^D7hzltB8-bDE)&hQHqV!`Q3P!fvqi`j5nCp9i|}o!AC&0{ zelw43AP)1-9PYONZqQHq_ zCkmdZclIxJ?s5A#bUY3dk3-34TFx9g9*2=HZD{|;5%h7ac^pF?$C}6Soh;Tlun>U1GzCpd)&YBT*xQj#fFM=ZMQADv$O%j>U`?JdVqZ zBUR(L%s5&#`tRf2CIaf{yN{(5k#<)iRm>f=bY&FSQD;YJ-o?7;yrcJy);q^X@?h#w zf(lfl2`yR3L>e{n=bCW|&CTyHR`dyKPj$L7hWfOkX?*@CnDnAQ*N_`6mv$%AJ<4^S z$s;Y@QCVLaWqhysBI)kBI8Zox;HS-yzo6H)EYQRhb18(ncU#1*YvWsJT!TH|#RHhibe>`ksRb^gLweizJzo%&#RtYuh|VaQq{t+(nN}%Uqv(td^g|*oDsGG>DY~O*l%h+D7Af2M&BjQMelbRm z6s=M@>mxrZS>OJTJ}FY($alLo&pT>7Q|QL=^l?ylRJqZY#D+~am4v#;z08_$UI8lQtoRUktBZ+-~Vx-enhP)E09$gZlk`9L*nm`Wujq@^f-=ezuB0H2qMHy zMUmUvOK}E+8O!BNVG?l|{2Jo|ekbCo4aQAGWfMWwX>>KONOi8W963!?JZsILCbF6c zqi&(T_4~S~RBrSXolW#M5w~`!?jvN3z%@$Eh+888jpQ>ExJK9-1?Mj7qF0T6wH9qH zf94lYw5ZXiE;s*~Xi;Bvo9JMpfsJN0vePT7rrd$aM??%8acoq&QR6NlTGD7rGa+m= zs1eUbv$Z#v-lptyINya$K$pG^c&EqT`Q60n? zPwJXSFjCGK0m*jj`q`!@(OG*+1fJCz(2BnR(Cnw^vjq zh0EHP?0-g%l9uZeXXS`~BI=?2&&uK468|_e$N17-Zu)zmCCYo1%K0|rW%D@ULYyKZ zP7e{Mh1g>`PQWnDyn4#VDC+vdi1QRIB+gGT(n}vTeVnHtTAe8G`w{0Vh@fY0T<1Z> zISb-^1yS9{`3fQws$-1UC(cK{?X zJj(3o(xXY=YPo?iTJuP{qsop7JDT%o%_IA6>}793oOPw0u?sy|Y}e%WKE?~YB}^KDD-3<{Wy{N3}P0;7|nQ^dfAJ5sUr}IR;!G8oF*iitSaWwXGOpD zxK|>guc%yFxlM#&(R4*F6X{GX+a4Le|JS&qV=VL`x|wKh4z_Qixv9yw9_h#2AVV2NVUKXR2Xm7L^^P&lU$lWpq6WI-IDJr@QYcO*G?X}{ zP@Dpyu2&|`brI*Qh+w+0^;NuL%iK1Cv53T)(2^FeyDQ}--&opTKSU51u~z1+I}vYX z&b$+6WIER%W-0=3Eb~sD z6X-_oGASP^lc+~m@(K}sMsXOy=OwO-=rhh=bdE6s(FjG)@T@cEGm5S*a=L}Ki4z~) z%|U)>rdEt|9mP40A{dR6BE@-+qGrrJuTjb!MWPxfKIK*oXshxoHwcm^~aNCY^!Pi z?|*WP{X_4FyCd|D;5#Dk$euGncQo4rXpN{lx8*+4gFA*Q)FPVgXtkr;j$XTyb^CYO z(POtrxfo0Y+WqNCcN?C@nVidX>*lbS1w@a1o%OeH7t2}8J5=+m>v1B-(~>4cGX2LB zY)!O2b(4!}+`%f=v6;6x)uWC=y(3rgpgVbtPrMrMTaK(XPL?KX%`I9ZlZ^^BPPP%5 z{RD5$NbKWW6mi;!I90?P-!WyqIpYK?POjqjzpu?4UodNZt=`~@IDbG?q-{%iM^lD4 zVOpG0FHWTwr-eJf4~;hWa-WnLM1Or4!-?LyA8}T%PNjWEc<0Bt%?c4gc${Wx8FAXF z*DBcmaXO%49>gFbbB@G0ve!tQoj)k|JW_G0s5qrl)WlH|M?@R}@$PEi!AWCfP~OzuYFXoY|tfE%K*Nnx526-!nbw zo-TKPaz*;#`;*?;gVJ4RB=wW(Nul)pGm^6D%`=i?t(^R~q;z`W-;$Z>!84O#>F;MI zgVQ4(NDfcWd>|>FUL6;oJ&?3bA3G~KF}+|`GB(|0wsoh?PTHg&oShU+uZ_jsvy&s! z_2wkyDrO!?)udoD^IsmS<#frpNvrgrxo$RbZc@B{!=zBMXuplNWi{NloVlB7ws@?exTllPc*|4|`}k zA5Mz8K0Eng-}Tk!CF9D>s8lTZEpJ8c{y5J5h&Ac&=Oy(HXqFV%7JFt;y8ry7_CeMB zv;+37cyWHxC*9zYq*8j;Bkq0mBc97Ak0ghra~60-dM>c;;ssv5`3sVzhvq$tbKG~~ zq;>8cWT$U_G^v?h{ivJmeAIU39y4qHShDh>(#(qN&7l_bE^0 z$i+#c^ytOjAgdQAU!~VRot%=c_e|0Z*)8(E^ znpCWs>)#N+F^#64aY7fY5T zjix@I)JbLTAzr_o`#si|D`l4dxka($(|_3_v;5C3a+1&fWsA)6KexzEKHq}?m+VM}v#pb0RT+wANj*p9rT^!{7l}^>a7O zd+u@5LP>*tk7CoRq-OmitTrpz-kY}V`ebB!)p{H4T3VwYfWRyC0XgoY^8iwFUOwenZ^8(Cf+J`I}jL zK>Fm@lgHB~-bgM^Pk$pRx9<%WKe9+tHTNci(na1(u1`Pwrbqh0n@RJ3Y;vSW)pFk^ z7rd1;PXF{)QthDaUW}9Wt?jbWlby6NDd+df3+5H$`@Lu0mH&8Zg_2&mYqHa=-cGJb zfAqGWQ)*MvsAhE!;oQ8d_C2qxWaz)#IKJtIrk~uDoZtr>@s9Vw*mr!(JoZjfA^pKS z$x-PV@A^QT{%&%7`muN2?Y4K5v903e-MZi1^va4C;=}!Z(0kVGzue20(e}Jsq_@16 zl&(0^E4<@h?jqhxJM-=$-R}Klh_Be}^oIA7n)_a@UiMP4FI{K5ofE&%4oi>Oo*a>WYP)aAI-ewM5324Pt=ngL?}K|k z@q4Gh4$rFjj^v|sgPk^-xzk%}^-jARAZ>5;qr#5uc@<%`FDo|MVn_w;&r zdIu-NcI7>^7rsa~q-TAZ6wl6Hy!gvxTz0z6*B)Y%Z~pNGc6#piKjm$|`1Ws-A=&AJ zzfI<+-}^Rcp04qor_uSlWM=M*v+~QldoBCD*W&c=lS>zW@_lk~_TmeFOy0@%O`4M& z`c2-;H}0q8%_QCLHy@-Kza@7aP%LTpUEXcS{ho|U|MGis_?<`Qw6$-NJJUIpjX8I| zpL0aILUvBMbf@f`I(}Y}CyRe{D#bzQ^F4&x$lafhFaA6!l;q1@lbzmM zD5vQ`JF}9c;Jy`o56Ed&xKF6|WbP)?<; zgZyQiKP&HdOm@;RZ}Z$we*Bintl597oTTv|w#uyWr|H2t)eqZ$UPV>{cf3Mw~X5FzK?U?nKgMo zJ;&evOWaYj)98l^XkK)sb<%%{$Fg@YSaJ#