From 3fa9d345449787d85f0dfea2c469c6b0e954352f Mon Sep 17 00:00:00 2001 From: treeform Date: Fri, 3 Sep 2021 12:03:36 -0700 Subject: [PATCH] Add test for a CID based font. --- src/pixie/fontformats/opentype.nim | 14 -------------- tests/fonts/diffs/cff_jp.png | Bin 0 -> 17889 bytes tests/fonts/masters/cff_jp.png | Bin 0 -> 8689 bytes tests/fonts/rendered/cff_jp.png | Bin 0 -> 18502 bytes tests/test_fonts.nim | 10 ++++++++++ 5 files changed, 10 insertions(+), 14 deletions(-) create mode 100644 tests/fonts/diffs/cff_jp.png create mode 100644 tests/fonts/masters/cff_jp.png create mode 100644 tests/fonts/rendered/cff_jp.png diff --git a/src/pixie/fontformats/opentype.nim b/src/pixie/fontformats/opentype.nim index 42330c1..a1d0884 100644 --- a/src/pixie/fontformats/opentype.nim +++ b/src/pixie/fontformats/opentype.nim @@ -935,7 +935,6 @@ proc shift[T](s: var seq[T]): T = ## Pops from the front. result = s[0] s.delete(0) -import print proc calcCFFSubroutineBias(subrs: seq[string]): int = if subrs.len < 1240: @@ -961,9 +960,7 @@ proc parseCFFCharstring(cff: CffTable, code: string, glyphIndex: int): Path = nominalWidthX: int if cff.isCID: - print cff.isCID let fdIndex = cff.topDict.fdSelectSeq[glyphIndex] - print fdIndex let fdDict = cff.topDict.fdArraySeq[fdIndex] subrs = fdDict.subrIndex subrsBias = calcCFFSubroutineBias(subrs) @@ -980,7 +977,6 @@ proc parseCFFCharstring(cff: CffTable, code: string, glyphIndex: int): Path = proc parseStems() = # The number of stem operators on the stack is always even. # If the value is uneven, that means a width is specified. - print "parseStems", stack if stack.len mod 2 != 0 and not haveWidth: width = stack.shift() + nominalWidthX.float32 nStems += stack.len shr 1 @@ -1042,7 +1038,6 @@ proc parseCFFCharstring(cff: CffTable, code: string, glyphIndex: int): Path = of 10: # callsubr let codeIndex = stack.pop().int + subrsBias - #print codeIndex, cff.subrIndex let subrCode = subrs[codeIndex] if subrCode.len > 0: parse(subrCode) @@ -1214,7 +1209,6 @@ proc parseCFFCharstring(cff: CffTable, code: string, glyphIndex: int): Path = ((b1 shl 24) or (b2 shl 16) or (b3 shl 8) or b4).float32 / 65536f) parse(code) - print $p return p proc parseCFFTable(buf: string, offset: int, maxp: MaxpTable): CFFTable = @@ -1505,12 +1499,10 @@ proc parseCFFTable(buf: string, offset: int, maxp: MaxpTable): CFFTable = result.topDict.fdArraySeq = result.gatherCFFTopDicts(maxp, buf, offset, fdArrayIndex, result.stringIndex) proc parseCFFFDSelect(buf: string, start, nGlyphs, fdArrayCount: int): seq[int] = - print "here", buf.len, start, nGlyphs, fdArrayCount var at = start var format = buf.readUint8(at) inc at - print format # if (format === 0) { # // Simple list of nGlyphs elements @@ -1527,7 +1519,6 @@ proc parseCFFTable(buf: string, offset: int, maxp: MaxpTable): CFFTable = at += 2 var first = buf.readUint16(at).swap().int at += 2 - print nRanges, first if first != 0: failUnsupported("CFF Table CID Font FDSelect format 3 range has bad initial GID") @@ -1555,10 +1546,7 @@ proc parseCFFTable(buf: string, offset: int, maxp: MaxpTable): CFFTable = failUnsupported("CFF Table CID Font FDSelect format") result.topDict.fdSelectSeq = parseCFFFDSelect(buf, fdSelectOffset, maxp.numGlyphs.int, result.topDict.fdArraySeq.len) - print result.topDict.fdSelectSeq.len - - print result.topDict.subrs if result.topDict.subrs != 0: var subrOffset = offset + result.topDict.private[1].int + result.topDict.subrs @@ -2382,11 +2370,9 @@ proc parseGlyfGlyph(opentype: OpenType, glyphId: uint16): Path = else: parseGlyphPath(opentype.buf, i, numberOfContours) -import print proc parseCffGlyph(opentype: OpenType, glyphId: uint16): Path = let cff = opentype.cff let charstring = cff.charIndex[glyphId] - print glyphId return cff.parseCFFCharstring(charstring, glyphId.int) proc parseGlyph(opentype: OpenType, rune: Rune): Path {.inline.} = diff --git a/tests/fonts/diffs/cff_jp.png b/tests/fonts/diffs/cff_jp.png new file mode 100644 index 0000000000000000000000000000000000000000..4e745bfb41cf2d9e7290aab293333b6f3555eb21 GIT binary patch literal 17889 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
B%_pF_P-;4Gfv=tkm&!V{uju~=Krq< e|KB2P9{*l5XL5I+`cH8O+wEJHCN)OxFa8UcCpEtS literal 0 HcmV?d00001 diff --git a/tests/fonts/rendered/cff_jp.png b/tests/fonts/rendered/cff_jp.png new file mode 100644 index 0000000000000000000000000000000000000000..2126224e92f20e8f37d2831abaed96b861d9893e GIT binary patch literal 18502 zcmZ_0byQp37ygMBYjG>?TCBw-xO>qShqkx}cPqiA*o#YXm*QUBAq9dLFYW|qF5mgh z{4r|{E3g79x!iltKKtymKhKj04K?{Um}Hm;2ncT!6=XglARyBK&%dC*0)F~yYR4fU zD7;aWk<|7?JX%3*u-AF}eH|n9*de|X90K-Whj?0{{$xmw7goYV3J!EanXZm$@c+V!x_yBYnVXyIFieKe)_{ZSLNWj8y6*a$q$yZ7@)?3q3{zn-D9?Bdr{ zqmL#gCW~OGDl|z;P3ZbZu$dX~a&;18PqRhmLCWy$ivbT~pQB&koAvPGPv8Dy90%PW za^UQq1U&mJS{G-{{KgT_oC98wGHJW9V40(;XYBR$v&%3e6oN-T;5~xDoEhKwbX8r9 zN~}*aE__gN>wN!fkjm$$Je3y%N7uu-^+p8q1iWdpth`FebyCbD{Y#=ESL>1{ zenKskgp|)Vr99aeF^<0UN1gY_*0Dl63Rqn2r=)SHzXvD%uj|1(|5+Br2&@XKa`&KE z_??n;o`wMzBv81WVo+t_kT{4f{4e)%C&TgEl1-i1P{{pBS3ox0Yd34&ND|q%F4^%a zwIEiQjneyHp7kh4lZuuqpH6@YXu|Wf2h9~b;H;knnr>SqGy!6^n&b+&9c?&jTq=^M z_T#m0UjKfSBifeAQUPVS(9#o26{?!IUpezWr2W%VhL!nqG`?-Hs$8R6Maq(>pf z795@HG$FM6v%I=f_^AD2LYf#1f;h#G3#^HX-ERHxYP*^AYN@&+Wchhm-dS*GeIxau9Ud|{(jXYM8fAG}uSHUcE{AOfHjFQ6o=%U`eXQ005 z=kn(fJL@CZipglK1o=P@A}^s%dp^AmmYe=aQq#2TqAdLUZ~?U`uT0T3 za+~E@J-<7sR$qI%Zi32@+g}FoJ^v1)o7atV#u2;J;N-_d$;}TEt7@20+CCmb#u1IT zm*p8L5?&Vq#ZlJ8=odx&I1F9zfOY3 zW{f})Fj$}l`bY{sdhQTsY=9-K69#%4NZ#EZm=95)-*%t&sMcipd? z%uLHuXE}5|UN@dSJWh1LS2HFAH=~#1XS69;%v&iu#`)%X9R_T#X7#8auerJ&Tw;-% zR@@DQ&xh!tUw)|a-_-`?rr}NUuFrk4%nEAn_f)k&G{3T#H}V)anvCM=6hs3rd#w2h zA-Yc4H!d)Fa9{-H{wJ{NNgp@=VN&$R56X4vEzzf&O|OU6ZD87tPE2D?+>EeSZ~Zj9 zfp9QEHF4CQr42*;>`uFj#dE-sHC$~RDO)_Brt*QQPuau z3^CPS`=!M*Y9dETOxd0r;O%6+qSE4Q@95o*$Lpor>reu$Khe=(6XI!S)cP* zvHjpNn)7s7d_Q@7iR~J2#@z3l6opvKH$m<$=ZC}2O zSS@dMIF+|mWB*Iu*vol-ullyx=y-dC7?Ay*_1oyMMS*a&SiyO! z2eRajXZ>$%k)K??>sSQ>o2a$<-T^J0bDwPsZ+9{#waC1HP=^Y1-H!WG*clkJE(6Qi z9&r1{TfP7{&HgPH8j!3{!y8UI?{}OR{NO8S7rM_{V_BJf)Y~ONF4qf|#V=W95^br> zaYMl^Q%(Hw@)DZ!#9P^Uw{IOrq&vhTcgUKNxxzNd=e*)Jzn!TVG9>cs82#_)=%|vq zLE>p??TO#Z3Yd2)Yxk@08OBt@M9}T9dXdMf7qgM?S^r*?$%DB&72;oDgb%II-o@&3 z&hP(?-%Piy?%*ds7)qeOf7FaU_>gm}Ld+;8CieKgV%{V`3>e>ULe6icC!|#H^h1eh zXYAv727HcNEJtIs(7pSL_bbTE59COXh<-4?{EPTv=18Z=~QLuf|5s=p=-Mf|?+W0WV!mwzYfdlQP z^>QtPPTDVKZg+EX#KR}G*VO5r=ewSg;g!oKoC`luG-aoMP0NvQ^XRB71Ie@{UT8Pd zweFdP0)trUDKDH#Y3+8xG5G#d@@Io0TOmx&jDof1@R0|pd^641JZ_f*CDmZ zmGIKb8sz`5NxciJnK$khtoromD9L@2YO~Di&g5S zPGAn#|1`-*Fx1(|fF3 z%4a-(?8Emqex?ZBa79g%WlJzoi}zKgPxu9r3OhPD$@Fgs{C-+cOCrRT-C zz=iENhL{e=-B_wVn*)X0AI-{Da}6tv)0ln|6H$Sf0ln{K2-8j4DnLT7xjpCdg9PO+Q!N5kwrA2Rec1h7=(eiVdyVeYr}S#UFbgPQ%4T zy))6V4_gnaEYJldFTzNS71|E#l!*u3P*@f9@Kb&YehJ{uPpYA{Nf$O0+)1-Iw^Vo^ z%x*SA&Dn7|^G>uV$N%mDw9+fVsAiNBM*Nuti(D}lqML-CE3g9A;yeePC&X>>9KS+T zVy@vtAPkL-L12yBBMaChUmLn$;Yqn4-F{iTmnjdqFxjtZG_#y~F>YN-@Lm&YP-JuK zTV}bDiEm5>Jh>hx?gbL0slw!qTJUA|QPCmPM!&qdOIPQvXnH>r(Y(}riw}m2`9_9hNCnPU5_QhS#|2eNYHQ*yb%CDr!`I5rdg4%eoH^J2EIPm%#>t1Yh!< z1FF~icdy36@5{)2Snu`Z*BO|+OjhKE<=$_SMB=1bHkD@tqdgRPcUkB@2uRvx0`qMF zgh3L6lHo@{js9(N`X8wsd=wN_x|*Z!7~XphjI4@0g|ke$OciTRI{#Me#U`J zwfTgnj~~H#G!q8mQbR4)=GWwy72T$shb?BI)m5OtwpcdFws27L|7)N-rzX7j)A#v} zz;gT}vGDKM>6=*rcKhm%>(9rnlj6@07GlS@kxTu=24e;>L7V3A$6@=cU7KET9gev^ z1%0|*`m3Em!&JDI-4Lzae0ZpJ*Q3fekBjO@y-sm7CMRq6ECSFxog zl=S>ie-hG|cj{yoO|rtRLEgq42zy@~jUA~M4Ed^>tC}^sGjKK!JNI|a+=rkp_yHPU zv>(;8H-4{5CkW#95wM3epxw_Y5L;0Dp7z)cnrGD(%5IT($4=bd&39#^Hv7?!EcD;M z9n7QUh7sWovT?EH#`q9j7;s4ZW35#=lWWr1HH!8I)=!s$^c8T_05JzkmyR1>JN13P zUf12MVa3pb%Nbf&EhcUjEuw6=q(n&7Be1-rB15)JWD$EKAik7=br|3>k?-#?{y6W; z06Q6DjK8OkD~EAN;Ry}FdAJI~qK@rna*IG&_F3!~UPL6R?iHrsio^|8FFwwCUpIIV zGxEPUze5YJcQJ9fD!#2<1SktVXw;bmQClDRBXs2Jm)(ayNvO0MtvLWC%S*5agEYVH z>2HvcTwY#o1!5RkyDm4>ilJ6m@Xbed2*+k1SnCDWFw&*PTm2F`l9!;2=@}-F7+2S$ZR6Tgqo74UO4VnZsV*bR3rj?BI2%~eKNm5&`4Gi9gtAF(!SXIu7tD>|+hTj)>3@|@-_q0Vk8Ase6O zlix%oAWPP(8Z*Mo7#lzV+x*Y8*IWLBj?ZOQ=u;@!j>$92HCjT68Yz0pi1~tN?d}=9 znq#FTG>5ra9bW40>~prc+OBaM$gu_9T?d#Mcb0tXE#^hd8du^LLjvQ4w{OuOq>+1X zrnE8f2Bm)whehI$>cQ(#C+Yt!piytGZJbDOJMhLyT>xc>yMx-TVTRBw?Bj!bfybg* zK)-6OBo!&kMn}t`cA%BUls%@XEP@Ef?RT+Z_46j3PpVZ8JWo3ck`6ku(bH2O!Y}js z5yo+fN7JRxY^P;OfZepDX*5!w*YpJ1HU&i`X#_I!41=xWFHAfZPp^u|Tr&g%A{zXV zh<86=Im)~K_){p_B6wp7s5Ei|!3bDibxOfvnN1+$D;9f!##$mp<1w0Ib zF>x^vra@+(v1`8MdYDcmqGMkW=-7*gy)x)Grv5Bt>5Uh9SQ9%-ckgTs& z!nCoAdd0`M%PV#=ZTfljmW=g8WZVz+vp#HJ#(&AEx1a6RML;8?T-v-9^$i|Tdq%_i zU!(pcecdT>^EvNYNcGfbuy++B`{}O;iz<)oMf8o6O5|SAZqmIl5w(Ws{9xQ<3S1-8 z>RsfI0iP0XN0j2=)^y8}U0tqzqB8{H)+@uqKSW{TT^hc*=+<{3N6APsA7netepK?8 zckHwo6AJp@8&Oy9+xv5Rkk9Y)=noTOrK|OPgm|@6M$+-W<_Y}HdaBr2%JS9(;ED_wT<6wSY1D~a70hLGesaa{KX}# z85`2|!#t6C8&X#{gwu^ zZ^ys3OkFIvOe69}1<(D5=winX`<^Uy0`vra#1L$$hqcruUGQ=c2JeJZX#{$XrHv$K zTd0ZggFdt(Xx=Kd3mb9MGAa;IA|Xf`AG4GCB28N8K=7o3XcEx(aett|CHR$RUT4!J z$}IILfYntW#*neKL-DhG{?o*hx3LvXr$%6YywB_=%o-}H<61a`C_eRW}Ber>@W_pY% z7sxUA@F)RH>)vWAG+4$)SfGI1)gXq`$r3d>PHhyfHcPZ^pZWa>Z*v}tr`e(1dF@6f zSE?u!JS=~Nj8}4RGT2!w?kay+OIuC*hgXXC-4;XbkPXDkb})iDJI$}cI1pSX;9l}K zMSXv;$8sT(R8m2gnweW<-43-_DCk=W=1?As1mWWK+PA_yV85UNnKHj#gH1b_=kG2? znt=1IhexyWn6e>X2L^ntg@xoO{rW?7ESDU2@>-T@NbIwn$H|<9ZD7_ZDj-1J`|8sLc08XC)dj+ zt2bPU1d&p-&flRaVe(^hdEw_$bo*VYp3)Z4D(Jy~5k=zUFiT`;DHc=O>7GJa>jQ#~ z2?lcfyg7lYT2r;bJvbh33M{l3QR+aGNy)x$DT>OZIO8A7&VYqzVn#~~?&VR^4KB;I zeW>_Sqt{(Qh1XEod9ArAHXY$!FY`Cv2YQ zRX?1kD}EE{sTFF(DnY2-FZbE#9JM7nXZFlb7pZ#h7fKOK9{2peeJ0(5)eF^@g1fYX ztVqpqra=_vG*zPS`3QTV1Gz{tzK)T}M^ivs=EqvUN$os5;)XHCj4?s{T(3N02WEIK z?OOhJ{|ZybdFVg7(B|X<;d479J#EL)dtZh2{GPJ7*=ndCO53gOsUF^i@`JXMw!qM^ zo!Yv!Lq7)3g7b*FOW02A@^9nCb#3#>a))$g@O#RmL;4f@F<%GD#(WJ;1=gv<)MUIn zcV9*lnm(!?yH62j??3j0m4y9dKh-^9Clw6Yu4Q8y=zcFZA)2I+l9{D%7ML}K5pU%d zbVPv6=>3`2Ns%Qpq?xfQ-P9=(Q}wnHmNr@pA@M(cd2?onki4Q*B2Gh-#v z-I1)S)yXI0QL!NEYKQZ@d6vjBcLxY2FnH%Z#b9ZZwwny`-3IdRBWo_wO$b8LN5G;R|*7P{+gCJ*>hhQZE*2UtODjc+;m*gD5l$7vl}>XW_T^y^Atb z{BaFznI?~3q2}mwh}-(dO-Ae6loq-mZiw2hP>0Z3=~3q7MNgultE7AxcOn%Jf?^K* z6d4~D)cc`;kSFzeFH+%4wmeLaec7R^yecc-Tqg)2HJVZIL`T+1L&MXsnf;#I%-A>IAHnUqE9hA6mj38(c=GL}HGKv7 zp!x^Gkz8&GvzYngPqPBWu~w&6+_?UaE8y3ay@cr8!P?8;{jMl*JM1Qwr6+#eLnQO3 zl%kOOBFO>}o=w-D%aLTvz7WM7H7&s^HvUu(;(a;FR<78Sn5WGq>a-i>A;&5vmwuv0 z$MAm>#by^AFf8^Udy!ADlV6HpR_;b_?XhGi&|~tsBbLMFU4wV~%A@fTwzGtTy`<*h_2@pTco>xw}a?T3x7ExSuz>vxeoyuh)gO{ar~=l$ephT z^7^C)>?bw-Dd;f>J1?Z~RLyyGq-o~^wVRv*k!58~Y27pjIE$(7p0|EX=h4l)Y6qK;(U&Yf3=`a^Tp}9bETp_ZYt{;)zP!Ft zjf7^5I9+aS#Mx~Pv#ai10!O#ZZ(nl0n_s+r?7va;M9J6k{*3VnF*XhS?uy1hqmQNe z?(VMc172h2=#1)_qy&E8_3u(p;fLwaZnjV9%(%l22e0l`=84vHz>*v|SZY^lS+mTN z#`tV>KgAVR?NsPWy5P;-rAWaU`J>i?SFWZRHAwQgX9Tk04mtPWXbclXEp9Hvc^hnJ zt{x0nB)gG&7!r?N1<}wE&3B^wosV!uNlxqt`NL4kx2_qFwce73xKYRK zto;~0r3jV1Rc;07rA#@N^oJ&NTpO(f!bkqrBR2+ke~h4FD75*cO!$O^t;d+&n?FBw zt6^YNS8gVu?k13P#fi9MBziiRLg>>B)}4!S@#dssz6ZB#-6xg@SCXS+x~d}R2=Gf> z3d==gbN|uiK~sx3eexagd`n^>r69!bYQzD8G1P8;T$g{SQN2dUpWm%zecgz#PK{y= z)$PMdSh@6s`eD)x>W5XcmMy5Xjn_&AtsHw%S%e&xMS7Z6@Uq?_iT~T%8&2r8N*mXMC529{3Gb65{JR`>9J( z?KQC4@OmxwboMEB8ar~nmPMpv9;w_Y-u%T%v5n};E+CD4PC8v)Fxf;1pFq!j!z++Z zbKO7TepYAzOB5~7>*s3gXCr-X>}B(BoS{Vxi>25ebi46OPCTF_2_RC2IZR`@ZE2n< z5DZ?76$lQ3h-e2o#62rNDBa+5(78u!n$z0M2Vz72t6 zB^Ku@;9`U8>k4QNxOTJ!f)FYuJ&1Z@2|n3yC||ju(+o;Y33tfHpS+^enEx1mm4#@u z>Rv-|{Rt^@*T9)hd%RvP+@g%w?J!3J>`f@CdC!ZJW`2C(I zfziqxnL2^th#AjFbw*8k#%spQQd(GJ;)wqnCXz)_LeGg`6~pgh2CQmp%v_*)zP&{f zHrv5p)e=p_#qh$I8E|iB)+~zxw(Bu=n!be5Ey-bQv6I#%hoRk99YpY10cZKtRBrPn z9cP2^thYYJK6s3w1z%3CA|+&F{mcd*x>Q0e<{#%@vfB$p#&(*IKN~f9dVd6P(LDgyDw{mt%|pY*AJ(hZ?q8VC-C0~f<}uJI z=V=UhJTS42;%HO=IIO4e&EF7ciDtnJyc6DWdB64y`X4c@ALm!T82g|ud|2~)CK!t| zP1nHw7Z?yb6asWxtg@yT(>e&1cxX)gj-C~U#D>;2p6+m1YHlJx+a>&@7He8Gq+<^R9TFPiTYFYzj0o=?whHp** z2XtfV?+YA!5;QRRG9V3O??=J+&LJBwT{-WEvq30Zc}3!Gu|X$*@QYq>^gZ1F{%HQ} z>)|ngu+;#;2AC>`E$4oDcLtEFB*y{(l-Ilu0tWOaMF6Phi&M-3LI%eg=#wdm17eGF z&>8@Ft)Cy^>Htijh5{p<41ej_QBu0Lt^?s^)+m`;oaO$x^ULIpT=a|b=EB~22T*k= z6Q~KAWf$OJ(gOkuAK)d6(}NdTC%(*L*D#B{+z@P~ZU2zpJ;2WLb$Y~we)00^tNd!He#TCCGRV)Gv zrj{o_L!w|?)$%QyKtT#6Y1b*L; zHQ8X`v9V@g1y84~=n(X5^GnJ!H``M~YJUMhy8;dZW;PU<77OpvIGg_lw<{X1-U9%C z*p<%tZ1Y71bbt5rhg!Pd!Ark~|2vVcKCL~V9jJ2u2}x}M?rTG(z!@NP*?zQWdl|Nj z?DsU$!}379yeKlhFuUrW z-LPK(D#`37>wN!DlZOowp~2;V=f@W=EnqYkg;R6Jq-od{w=!ZIsZLk_oN;*@<2S-`XBM~Hsp^0d!k<{9GM9vqOD2y84Y6@b z3hS$g6&V5i%%rv$_}bR5gR^BH{8BY=<0O(W&)PlHIjiYp{q6|pWDeC|(&d%KfRtH3 z|3aQrwbI$TJ1V4^xi}KbuB7W!{Y;UkSn$?_4s8U@H^mP;N*hj*C@U`V$!j}Vq%-=c z>w3{v2tGGhvE|(#F}P)kT4-qMnjt3y)~6-b-Vzf??#j%9slEHvH19S zJd-%<5aVUo!z-br0NcJB!`e-DlUpTWfONX}rvVAY1zG0Dz^=RN@+NW%Lg{e{V!{pT z9UT*T>~lDhj1*G|1hJ={B0vP41yMx@4Si=Gtw8@a;S86e*H3Cvddj{D=b zh2iu>ZOP(O;BRAek}g)^wa3Kniho|v^&T+9Y8ei#)`O||MMzj@`RvSy1T7BieL%8n zr9cq!TObTPU34*N0WSxmOw-|Bk|5d(V&e8p@$AbT;Lo<%AJMEbhSvS3oHh2M)<9FD zeBaN~mfD9djObht!#`rd58(J6gx8yW)eve$Z$SAoAqyI#m!v<#zXXzeW1IY@|3>%>(jVc#_`K`G)ZDQOiv={Z=wbfQeOo& z9{^n&?R;J|Yn(EKT&RP+DU6MPq=;2qugCJay^F`rqk>x(Q#8kRwOj$**L>FWJ`Y_J zOkR-J%>zKS0U^1+fNpK9A2CQLr!B}dfQU9x6ll#FIrkH}jy+!FJZHXuW?$;OTR?EY zx0EunwcYkqNOc9>?#WbQQmOn2aIQ#I~j@!@Pcw z#+WXa-!-tvKMUK}^t`(505=iQY?{Bj&Cx$=>U!iDd?Rb=_aXHm&fbkpqEACrw44#M zhix?kr-@C1ur1v^@u0n@BZHhEgCJZ>Rs zD8EY`%fLOMzYVgXe&yoDvq#=%>kWt-2BuW|F*o}R4yKA}PFjTrtBul5wW7n;q5&*Z zpEhrTdFB6nA`TUnB-MA&wG-^<&BTqye2cW?*Xowi$A~jgEm1?pM5~m3{DY9;oYEae zi`I=#a~Ea0^N1>~=x!*%Vvxtvgu?B-vNq|GsSAhY&y#yd=^~oFW0cBQsinKw=T^i< z5)S&8h>ItRs^o9(me9?9Z~nB*1zTDZ-U)$y&`XS+$5=c*XkaD%Y}S=ELL0w?W~6sN zi@mYZ%m%7Z!^b&XHe}0>;8x|M9Se`L{3}XU4ur zP_{R8wE~UUg$=nfylC7wsBwc;asSw*b<}uVlq-*6m)$CY z_?Ue|x_?Vx;@;N*Sz#9re>*#_PvmTjiOVAOdE4ZyS_?5hqIkGlxBuBY+%S6kw@Zw# zLBI2;fo|SHHfi45IqY&QO!4A@h~bAs)q0WI0oIsjtmpzFmW%P?yL#&LVtqL*$YvH$ zyOEshTgxR0Rnn>1UTW(}-26n6isdODP>p^*atz2AoIEO0JqrT#lH9h6E!Ef=1aXyC zQ<>(ibO!64fLP^E4(OHc+wnr^+!pS5%2}2_2@Mj2GmNGu0b<+J9jQp9Biy6Zo%WC? zgBx#!jvp(k-wCLcc2Jo24lv7x(4y$RI}?ls%Mv9woLTg(fO%dN3wF)1UL^uq%t4iu zp;%|uz7!<2Q`o_?whaEU@AVnzcd^-fGx5L9=4+jD;0DQ1W=csCVz8+>A{yuhHWP-T zQ0CCHC@$-&EX!9Ysvt4t@oAuF`2TiTIMFB|VBxucJ$T$)hS6?7(KPY8i)n{JUUAWe zCCHwyA~Ljyl$Ovfs}HrAzsawKnb)Rij#@XJV4f9kU0R zsnC%Wl1-R1Km0nZTDLY1lR7L@hOJYm@@ox?d3#Q<1g-T%1lzp>s+we(L~X0|L!-1M z>;XTuuQNt};{=mnH^RpxW0|fP66LUj{zgjsqeq)vs1mf9kBG*Nm%4q<7uP9LvYh4X z6J)}rqpOBlDjufU9it3ueif^w$csI|=aMm*$dzf+hfNsV+MbT@Ta4i>Rj-i8qQ)+9 zBhtolsznC?ZqS&>65N-ktTW;luM*LHzSa?#sZp0dtR5*BGW#)5kn+3zFzVI#nYG3c z`?(A|tbBkXk2O2_Mg!M^GGnrumvcW>?J%_b^&j7%Qkc z`sA`4Vf{f(k~=S2vd&C_Ni8=X4DJOVGBT&KJryZAai@KWNKeBvd=&zxEkaRNJVq10 zk@R2dp)u7@+1*OPIEXbjL;(dCzbkK)o-U3rCG#miVEckJb<^ancI6*C%V{O-Ca0(L zSKqPY%EhS~Z9}N~(=GReHOR@hC#xADXd=Z;3xz5vmjQ+$ z_)o3|9D*w1hNSUbLr@f+p{yM%H}2` z(1pj~t?o>)sSp4PZTChz5X|Ai>u}N^ujMG)fQsG|=1%DxsWBbqVki4rsBq*4FGDqB z1Gx|(C{}3g9Sc$>bJf&G$SHwynCIUMeEqf!9r>yIsJsbisMi=n_!#7P5O3TN+aorM0(tBO1&zG zX(kvnlE?+}-xMMwSn}a6D7abp#CBndXf@ym+Ev=6tN4~02jcqLC0v&{9>(%-pjEn* ziYgJ*XsuB?Z{W=U8 zvlS_`)}p};LOek;gddSv26j!?=q94)O2scRJ^TP}9(mjekNrQX?wI5;6JKq~5xl=%ADI@7o%s=0 zp5^O4=FXB&(#yncw!xLk-#c??Iq_yNG1-%sSVfi9=MI7cLS6H6lQ!p^{20$KS}3)XTD}ByeId;=YiGo9x8-o{u{bPPn<)MD zLVzr^St=GUWXsJ$5;;lBmhhETvj#w|WLY@}OQOL5xj1lHhrxo!<5 zSimyd>8m2nF7-ty1pJtbhBaNrZq$~LWM&xXbUr86B7*<+)#diqx~&Kjg!2dm#|05K zV<;fzV<0N_TJ7_@x5m|XTPmJDhW#VVML|jP#i(1fe#;Wt6iUZ}Ptm7F08*B%5Kip_ ztH;<1a7(G>PC40xJ9Duh3AG#(7<%MDRZ-NX`uF5_swjn1Q9@*f{|ea@|3&N3={5#x z5&0A8fU{4aB^){y85C@bEifb~|6b};=^cu95C^(OC@UgLjygJ-MG%E*@K+jib9{=n zuU#QQkBg4IT4+(!`x5E9x^yk%75O)bSwxtq89zCNl;#fSJZptkzWN{fN64irL-UM^ z+agi6{^Y7nRNX3G7=>5z#pNGmPHe zr`iwfD3zxa7S>&`@68hEA_Kxln7C4ltUfyuHMSIje)2)HZ0fHG2k9Ns1#UAs z+}RiJLR$VhqU2l9{ULN1sEtfBHHy%rtRJOgNle|;;@jo=l@z_lQvamjwH7gF2&ree?^$ELeah@VcXidt;0-I=TP zPe>Jq$57MKx1Zz8h-ZGQxH3Mc@(`A3or^b4eVagp13^oF)u0e?xRPm08lkybEnb~0 z04o$^G@fT|$u^!D!w;`$Ah+&qD=KvM*b zqePUTr$mw3u{5B{8KcnZZOp?`w+@tzxvN zqtseEsikCv0Y%1qy}+QUzneHwH&XfmvaD$;ja&Gktxg&`0um>!$>9=33b4W8q2ljZ z`BMs0PqtcLsg@DFARHt*70g&E0L*RC}C>^`^Pp}pM7R%>7Ru`?qa z3x#HdZcy>czOJMs+qy7F7TttEps$b(U;Oz4G3x!$2?kU7>y5JSQD5wq`|W!Jjc!&` z9GHXpvBj!@dav^RA3zqVYyUV?kT&jsk>!o}(Ucyv)E>DxkP>KWuwvfcv0D1WJaGd` z+M?c0pl%eYER*4Djom6qFa(Mua1j*Y#*vQbm7}jHE@me2>z`W)!@e`MW|P<=bhXLO zQu@ilE&mX&USIF56L>?FoC*7>ev@`X>o6ms)5pP%fEz&AQfd05uceldWbD7Cog8X# z$ZZNqW=Fol4z`_94dU zZ*kzpjufj!Bol5>Y0_Uw_)X|+%ns7Uo4m;~H>yt)yHx>|CKLo(y4tCpF?irKASAHI z)E6O(&$Hke+_pV#EfuoVs$a*bLXFJ>)4r|U{5s=arAApKra|&4Mou1MxOl=uj`;5U z=8M*Hn&5Ce!f`_!w-G7)c7RQ>vC9}A)dOU*hfG9-pp{lL}~yM2RlQf@UT!ySiVXU2Nb1Z9EIS@$Q1`}2mBV#KWl_C9=`gNRSiX~5E6&L6rplo*SsA1fNOs{3di(mErPk)K^75AAdR)#5 zQOJVj)Zc{#kySmyQTX~iba|l2mp=&TfTs)ZD4tmzrt|ZZz~Uc%_UPJG8hU40#E<56 z5Zu+Pq;yAfRt&FmX}qT#*id@3F)}ZJZnyXEFcJ)Z|drLXLv<)_5832d~qSx*vgMzgy$)@B61_o4G>- z>ee{?bPmI;hZMSt|4_CQ7F~Mr@v$MWN5M*qfowD#F(7! zxZb9YkmjK)eM21aTb=y zkKB?{xu=D+9Lne0Ni$^4z&i-zrA7*5C|72ea8~O_)zsit!>0`TTQ8`}{_cqV?-=r~ z&O6+H!Cp=MXz0uv8dDk!xUcZL{7BzTXr|^eeCvUo>G0?QPAs83qQNSlW)1F*OZ!91 z+EYRxT#zyrlh>A6om#4A1 zYs2+aG`p1+cjPi%he5ZT(?5f9(bp}_)4zY`Bw+a59i;(J%OVc0d-Rx__ zX7IrcSqRZ*pCf=gs0V#n>+_;KXIioeyD?=Pzlm&lXr^cj9_$I>h_~AbS}lneF313T!lb)oL%hhU%}pbIJMe~ z!zCTC-9Z5gmkbcHxB>XhR5&O}*TnB?U{JVrzpT7yR@Z~b zfSINNswPqhAR%_3hwW?K2f>>y{x$|bsP4+n4tTm9IC^PqPXgA~#~GCm<4M)?pUfi| zX8xixB1q?U| ztAN*B^zDnSd^_PA;EZh${RG%FH7*DS5ShY*mY4u{wZC7l%P2?ci$mYPqlhy2J8gvn zfF2wd0iTGxqYvQBCPh^1-YfyQ=EFbLsZCGn+adWGfZPhm)trkWCLr4Z-END+i5EBb z|E!U~sf&pLi17AC(6r6M&@>43{J|yZe;)_{XGdpx@oBd#px<+&@yC7@H|Q`CVM;R% zZUFqA#V^f6d!WB>4fuE+;Ftbp%T$0H5e!&?w;wC%abeE@nDo4qe&K+vz$rqD#UJ-X zyQp#;TKD9{SKk2rPe<&`#LU2}UM#MkfLrO^SKi-^C@wXw&Kq-K zpcUTcE%MZIKEhrM_{znZ+kq%xW_~VWn0f=WXmo`ESEQ>cl|m-Z;0yZxY!*gzPQgoi zc3#-^c;qOgxdvDRy;jGJ+$=KidjJDm+L3wg81V4~pR6Fr%vs=%qoI7bFqDk#I92kT z)8=tkksbjEm%lKn?q};lJ95>UYPY#h%s|{5TO3{hC!3k$5442~fiMv>5oS7b2Q2$z zEs>ruptU^nf+qP_z|eQ1Rqf{^qN%%C9>&){gw1;aw46O>67VQNEm4k$o~wsLn02AC=$kb^o-( zjynymo=lScFk|Z2CNClGp!oCc~^IwyC}1=2t`c)UA?&*pUgR zF`mKyYfpA&hu4UlS$}=se1SFXQjdz;Wy?<7ZOgj}%q^cQgru2|)@Xh3nqUPiHa_3s z@G}nEmGYRG>rP&Gzt%B_OVj7DN7XdUl{(%iBHyaHe2!7~)G~n+R?|Rxr~lc^kG$U@ z+f;0@EihqrspHrGr+_O&X0tkKi#R-U>bZO&@Ikhn=aZ``>tE|^{A}yWqdSXOs|PB+qWPi@QuigpZ}#FD}}x0m|l1fxJ$TLkZq?|p31rCg_GAb1Y8i# z|LS{rK^Gh6+RL0uQ|E5jua&dz&1!Gp_Pwr;$|sH=oztuRB*ArQo4>injkC_B!2P># zt&aWqw;?yC4hf=YdZDFtBqz^U8z`$b9d=h=CJwnn+W^jSeOi=+Pog ziOO6P;OC6=YB)gEC`gzQ)*$iU^D#Gg$-?pJb9rH=|4}2~M2ZvFsAEN@+aInD>eBjEL$%1=<;BSpD+zAa-3U4ApXC259%_%PV z`T6e^?kmG$d4V?J*d)SqU_v1#y-Zt@&>?y8_U+r&N8U@qj;gufLClFX