From 44d2a5713baed3e7cac3de5affbe1741eea2bfa9 Mon Sep 17 00:00:00 2001 From: Thai Duong Date: Wed, 30 Sep 2026 11:29:35 -0700 Subject: [PATCH] Fixing images --- MADBugs/CVE-2026-86950/images/traces.png | Bin 0 -> 55545 bytes MADBugs/CVE-2026-86950/the-great-glyph-grift.md | 11 ++++++----- 2 files changed, 6 insertions(+), 5 deletions(-) create mode 100644 MADBugs/CVE-2026-86950/images/traces.png diff --git a/MADBugs/CVE-2026-86950/images/traces.png b/MADBugs/CVE-2026-86950/images/traces.png new file mode 100644 index 0000000000000000000000000000000000000000..306b8b89c018eabaac34c9596b4a87113521809b GIT binary patch literal 55545 zcmb@uby$>b*Ds6-iZp^Cje>xHbc1w*f^;b$-QA!LCDPr}ASIpBDIF5h-O^oq@w~_T z?r(ql-_7Ci+|S53bIo<0=UTs7--i_qeJr)^U12 z={O-aVY_xk>jf_f#w~c$|N8No@m1AO`R_;Y-_l2{tN;7qg~4}03RJH{eOPhV0oX=?tdO3d9d_^x*-WDE=i`E)n;rquDlg9lev^5bR>8Y*{@km9^=3rO8E3Vq69QC)2zhC;7X zXSUFWX0DZZtz%(fk&^NOC8f-Cl#qa++}>V&=}+#cVPBFcifkO~Kx5-vJ6_#~W-m>3=(Pe)BXQDP{sq@mvFqg-nr|~XHX9oo5&RIZyv?~j3k->h^4b1UUS8tq&^kXq&+jH7gu=$k zT3T27?VF6|erGr}$4dXnTMlc}`vM{s7U);FKIp`MN9=FS*5CKh{N#}T<45uQ%-649 zr+>NPV`Bb<+o-3fh=GAor?uRdoRyybjFGWkzcY+IhvjH(h?cJC7&G2q-WrCB5h-eF0|SeU7E<_C>zh7 zR$E(}zdqt)(3g~vnMw8hd70ZOv&~udTRp2%MJ1&_%J#66Qoj45BcYJ9e*BHg#ifRL zBl&=mhlh@4jZ!GPy4q!bIe%$siB36>%!csEla@9y+bT__qH;5gC9BHEj~}C?teY4- zRsParFlRD6JY4>P&BJtLWJFn6+5Frd_FlioWc~H*&K#wahP1Tp(dM{`i3z-3XlN)u zf3WIHWjD9lw1tcF<8A+dfC_UZPbTg}5|S&;S8cgJel!iB%P8GKI`O#5kM zOWyq2KM&ES2?+^XT3X_Gz1P=G2nb?Fh<=^M5$Lm*ETfR4`!>&6J$v>nPVG~5b@ehL zI^Vw#$p~Y%;uez7>gwv`uZ=%h@}vmN=q`KP8kyR|MgMwl?+p0k+m1$IJuO!!|!o{z}Q+^`ZKoXc6C9pGG1oN5#4oo zbX5NH=jK$6{Poox{Fhc=1KsH=r5zlOmU}diF-TGi3Uc!EhYFLgQbj#Od?Um~Mb%VQ z|NSjPu6Ns=zsG+!2_?3#J(zTBYXy77W3l5cUcet!^CCKxN$XF7f{jH*mauJeGX7{t z=Q`TkvxQQ>crn)7TW6`GMV~+YpPk3$n8}tSRT>;vyn~C_8+o**n`P+?#kF zUzp1!l%1ZgKUy&L1sP+Yzn_rZtmWU7D=i(J=r9W{t;t+d>)F|5S*gp$>OmrxZB$_) zsZNq&mfQljh?tm6KTIM$b~xs8L}- z_u>VaVM9@%xA&4i4z=||^qnV&BdJj9OYX#USE|t<6m=A#!qZsM}B?QONIq35|*I!=xyT+*wm(PSQNxTcUG4{@3hpZ*T8J zDIhR2VBH8?)c@l2^i-vw^8AFi+GeRZWlq4|^Y`!H2?=;@EiKqIWo2b^bBxeCxVh-Z z%1o&l@Klg;3kup8QBea3d7|Uu2othg9W!L(HT|8k%gfn0IiJ1UJk3$0&dba5yMX-@ z6to}P?fLl&yr!3z*Z1$=Sq$ao5+Wm&7EL0eqZg2h^76iIua1v%(Ww;ZGRL-5C3D+z zv#}jEdG7}*Jt2Sh=8ad^_0C*#m8~bv2ef}%-3z-8|0eC1zVd|D|M)@6%K8%CZ~afM za-p_px}kphg3WZT|5&yC(}9qP@Nn1JhDK-vzg&+oW8uCV^c45>_Fk1+`ovFUWXa#b zW7K|D8ivoH36&Ztx~rAZ)Wn2>^5!R5z|-SohkPDOM@|mCK=|FegWUycD`LN2evbZ8 zlz6#w6J<+Vf6FGOE@|ZqOU9w7mzN)DYdd}m4D>T`a+sW7+ul(0{n(|6aHxslvh}I0h2>{*Bgv7 z|1T;mtoTE78|(#mtGg^5In~vFf15~|n9zDa-*DXed+6oWz~jgZUEGQSYhrc%sFg;< z%Xe-(&fnuXv^UQBy1MDfs(oy1Y`>-ov+=e$t8ufVe^WZmkI;R?LqcX(D;t^@{=(8& zQ$%-Z)w$g}eT(VaEGa9?=dkJY=1oXN1^&PXY8Dn$QaUCk>*IgFL?|WH)&CBpdEP_z zovgMOhIZ2O_yr@Qqm4Q)F|lm=@Si_(WVTms?R>5dIBO&%Byh^93*hGb{MkRWU!FX( z0L^lKB~evGq=nS;<@0ur=g*%{PftTLi)O6B%96~^&rf7(_HpWcr>*U=(AHB~$*D6V zzBs+H(tGK?+W*1E?QmJPC7uJzc6p4H^JlV9iXW#e(%+{5K)=5g_IafI?%fNT575iq z&LU(ioQ=CfDaCp0*I9L2Pyikf2Kr#m?>glw=eOl^HT$61TE)=O(?2F6vf27;fB(ze z<|Z}~k;J4I+^eq|w$+Z?byg`jftd*j7vocxCLcd8MbiDt%*+g@)_6ffQ&nw2`|@Q= z4*_c&v$lk5|93%IWkw2$&z*TBoK~~hZz(r6Hr(AvmKGO(j&B}ra1cIydb~M~L*6oH zb#-C;I9yFO<;`+;5hOI^{%#>N@x=?VPqnc3N^&|SF1}&eJw1UDbj1dM~6p3QfE2iK@v<&OVo(qNgbC+u(uk+XTg}^6FpT!gla&nCKCd0!8JTFc<+YB<3 zlCc*_g>*#!l?1{20ZklllESCIP|efiXbBX5VyZSUA$c z2ybsrbPi2#96A8Iw+xH%DYUt!HbfE#|<`*rT;*6aXUJ31uxG|bpt8<2zv1E*^oN%xSW0GXpb@cLX-Nq+c9mv9?gn0Jh1(2xSjQbma6V>$mn2pHe`A90?1R#z~u!A&Kj_I09>4Ww6qVY@87$(5CI!G6qSjY zxp578)#3rvFzf0l- z-nK9`6@SK{SsCLOFkOHBI{p0Q1akmY2Sw`Wbl)%`U!HVobJL8150qm;LqN0JT%X3XF4%r0GIUf0i zrw<H{!gW(q=2$;I_)6M+`*i*CM18SpfH*Gr8kksca@fc zips#8@17<8V>WKFZ{5AUKno%gu(7bz6cj#V#xb{k<&7-M%xqg7NW&EJ_uszf>&&QL z8nW6$M^66X1JeUbd_27QK+rSh&`dXI7Ab=W*=#OOcHJ^Q8W_y4SVB{!I%ZLL^CpJh zom+0U-!okt26S}$T&r%!(o}PDj zUnRY=Tg7BzVq%Ey;;>{0ZkLvkk&(O7R8{p;*>KyZ`s|b|iu}ByiVWd$uo}bxoIkFl zX7;(PzjERrmC$>JZvaO@J zqo`1a-o!{tyPVs+(nmA19wLgc3rq|!fcX=!OC#l>A+ zU2xK+q@}$LD1Xq0Fyqer6V3bd`fhAn+l3(2)#eE+E31fjdwNzD%ad>LNnzP3WGGC$ zyV4bM?%Y41-p+-K;#7E~sPvfR8&)z6*1}_4+@02&_U}Z=!lL-<-Tm)VpF#U1Y+cwL z92(kX|3@(Jtnu`oe->R}KAzxYxj$MRKfl16(SnC=G=Sf2Y;2%N0sw0{3;pongGRX- z<-f`NXAD<`NnW^8UEKE-a^~G=T6A$NXWH0~B77=i0+ocV-YU%dhkw3(t%O}`k&&UZ zv2(h=(w8j2QG)(?g(B{~2UC$}2Bxj3w4~$%pI#?IOK1d08zZuzLMb~=wQxwjeto!i zK?SsqjLNabYL24L+kTbI1R?s#rn7Nm1#LZI@@6>)%*WT7MFmo0jXVy}yZWhoRx7C2V&`@->2~MWNb15%6$> zmDov~YW=9DSA(K0Mj_gwi_(L^Y&o?zS)@lTlx@4xtE?QgzP_Hw4K>@5+i7Pun$cLK z90Wos2?^NEAj9oD)smL&;bL`uBNZTl4=D0T@(vQ&4YOj>WN_?DDntzlCS(iS&Uw2( zU{rd%EkK4iJ6NN0xx!5)wGnEnv0i8koq@H;$<0lB({gt-#3U4faIDPmN%&0q@NjkD z&dfK<>00m6Km2y9UV(vVp^7aHn>ydb&biOjwd)jZmFJD9bO*l1#Hj93{6isc9Jlhr z2$0ISYTz!#^%f#{_5QV;9jkA1mE$%)RuCluSib+&$D1w7?y&i!*6z49zyj(kibJRq zz%q;T{?Sp(;uY_*!w7(ZwwwteA()`)Uy$7@bfE!}nGuBCMG^`?^G*rT-@ZMXSxsLC ziQK_{YPh=_baXj6)D9ZUnYz}ezg!MY)>1tEpfe=T=pjM?I=^mEywF4=M<6S5EN@Lz zH2Ykd4l9{$j^bcxdIWsWlert~k3)4~D%TbfF$|Q6qN5fVi5%>%x~M3s(5=GypwQ#g zH!oNT0sZHvq|6Ov$uEjUfw((al_?#~;Pz!REnsDsU6589_qmqfy z|L{SQL|Wz%88-I^ZM_(o<(En12L~x^KmdPe-cMfL z%lstub1e&C1I>@U<|OPiJH0cxBtV@Z;> zz{e$Rl$4)8SGc&i7Arsku_E@6MUDmBJsSv=YO=;LxyQh^Y7)v&P36n$d*X0hc3iFP z>{|Nl=NA@$AO}Q0p~iju7}#~&L<_}z3aIU91k88Iak2Maa&kT)7fE?TXxjgwWSm+q z;aL`ufXD5dc66Q1KoYoneB3TwuGiYy%3Pi{c`H&RD_MHvnalCr0zr3;{pTOA(`f{^RVXpq{sXve1 z>g%LIPI`K@iaTL}#OGx)92H%Qc3>mn;YGopV3O0XoLDK39zEJ=;Rf{+ZhMF2>A67b zu9Aa;gLJ^XS%F7j(Y!`UslVnAw!{V(354aim`6=hK3GDq;&U1wb401+%Nw*j`S>gW z?9=h_{YppduK(HKvRzK%cVC{Ys^8r#{}1}0qM|}c0R>h=<9uglr@Om5B*YLMJ*cv) zJ5PgwtMgB;EdjPawFZd4x7oOSkFERQzToJ<;kUn}J*gP?0^F9x7|3X^QGR(`{%vkf1Hts?&z-@H zE*{5!*hMPN&QN?xH%1G6y}c8`;`le|OoWb1euEXUras(%^u#M|JT*0Sykx6GkV-pU zcOgozL^f}F%o|F_I%u!JD zd@;i!BFyrP#!w zAmDi;ApL^2_mn+P!0iM@=jwEyI4w=j&E0)yXo#42C443>E&FtgAGMEC~qFd7-UX-}v=NA3DPXz6JzLO)`)pboFMi?>L~a5^nvD?5boj3#XEe zD|OzFs;=gqG*n)->xfB8O8W8R2i)r5zWTFYfB*K9FzJc}$ftQL=c#&tXnO}4Jq!nA zxF8~~;l)dr7QZBS$$w`7=B(H)r>mX! zM@1*Mwzf{@S&QL{iMZ{Yx}wY%MF8^hxr(se!4fpk)&{X*`|f8M+xf<%fPj*4#Ye&I z`vYr0m+RimOH$Ij?GU~grU9W{Q6kLxsjm^v!=jVy=j?6$`%HO_Y1|nMD zc4%beb1vOC3JQNqjTfqH4Lk1)gC3d0yBp8vis$T}3fB77>57!&ahDs%&;6C_BzE&3 zVPV(>A8g|=Uf_O>pYU!Cz+a#iLP_~IRkJ-+V+bC<2nlzh$N5qI)#bI?r@=|LRS>8^ zdN~ac_LItRandB^uy|S2B;<=;KhHo%L$kK#Y}*s}r-dRDg&foeQ&UsWlHqX7sBC)O zx>Nh>m+vD2ne>>LC$28j3UA+Hb<3o@0oVuP8^hjW0C?men(pm7?+}+Tdvd6$#X>5e z-sSPXWryA2obX`MbAGpz*NTc?+Ry)n)oqzvS{9f5?jxhnRj zI}0=)bP_YMpeTDgI|dyGN)pv_0Lx>i`<~E~z7V-XwE!WL*X1CD==*K(?s0kTaFBLT z0X?oPFW-poFJ5Hl<^~wi{wOT$`~ADk7TLroJ0K}Cq{pB{_2uM-QufJ-6CIr?q93kr za;k7v3%DSh1(&1Efw98N)KrT5Uj)+zPDbQRWQ2w91h-RS+`hgyX6E4G;UOsaskHQ4 zW~LYmDK&czR8Fv>;B)lEriFGb;o;&gE-%|}z5ow=mw3aj^!}H|hK&dsTG}vSR+3;2 z{f;-hZy0FS+*t%fV4=38z`6h`@Z~Kn4b6D2ioCF}@O-HJe!f=CbXONDIV(tibSexF zNOXY_prqWobN}S*j10j^B&V#5=YcrdaMgGf+dVm{`TThX&~vx;f1gdI%C+HD3=ETG%p=-F)^`Kp`_2xAP-Si7T4>G zDFmCpoRuV1A!jiX6#+RBiepdXK}UpFzIcX$(z|zvqwmIna*5nnsBY|%GBSB8h1%w2 zVm=keQvi%90WK2T{+m>rENIs)x)HfFYyl0YumLdhdc#VXpRs|tD+#HA{r%<%R6NeF zz2CsP%FWHKSpJ?*PDhuUmbO1tbNx-@2Ld6opT;i~&7f6RDEos;kjh&KtNQF5qwpJw z`BR-+J2hUwcacs4$0sJLYIJ(wE~BF}v9gZ*`IGVHg-%`i{8AsB7f3oxkJv-ZXNR=Z z^*9M^3Jg;I*|iC{N*1%RpXCL(5N%+5RRrmbi#Curp)v%h(0*i&1)~xyyh=912CrM- znA}IdurE1!&(8MiT5{OPG}714%Nd`fp}%p-qxKFD!F&u24`%^y0ZR+qE>ZDzGQ{Gd zKJud{JE(Lg$zc%(p^Xjlrf1C(CXnv>Kci1KP4~Zl{@+HZ{`*zEX8wPvt!#6xPwbG{ zz{Z{iIS;sEsl66F*(+HHV3%AL#*=;>P0iZ;joThHezx$7ixt6yA(E$d0M8h;?P}ak zrJ%8EjNXG^ovc+mY*ibD4$Zd)z@8j~WRL)H3m5$6Z{!it${Wz{G)Cv5A=wir;3=p( ze_mdI0>9jmUfbBv`Q;)C#1H~q9u)t1pHlfPmR@5WG;Y|#EC$^zZ_y*A5?_6&g(WO4 zwbK|yy?H|#6O$i+N$=eGGG@juB%z~oeRWy0wR5V(bITesTV4+L<`a(oe79X6UZWHb zqCiAMx@uL~h^karYK-2z^~qXT7(X``7g!DC2zE17u&BP47hs*xkoCfH_M?}raApy+ zt^OQ06Bb?ofJ+;Bw&<@jQ-`?(|JaBT5>mybrMe~Kpbfa6vu95A5}%OX|F3t>ooeIS zG8*4IIl0TrGkdbTK=%9QB?}HVvUn^eRS|DM=mJVyUVwhG`(N*7Q8w|PcY`W5iw01s zJpaMX-Ps^``g9?1b2ASfpAh`lQc5=7cR`qI+mU-Xjm7~ zuM;5p^qtQ%*; zf2TE7mrs*bPylJR`{b-Qs%6pjalwP<&%Xte3jFTqctVJ7wo&bM{Su^zCT|}f_luLz z1b~2Pxf7#+6*V;z7;R-_%-+3wrza|#%pX_@62l*@s`=h%K|#R}4PIA}l3Q#^NJtP5 zcI%{hN2??&3rM6CupvEPB5Bvq{?UwQGGvf$+((b2A}HsR{r#`yLZhQchc-s*Jv|?K z@0A1xVOCqs%_s6`_x4J2SUOzZ^EIV|?sK?PS!6WO1fqR~y_N_KMBwbZaBh^VjoI1$ zkw3&D-l@;;wu(bSqW$h25a8iIY*cbY0xkzeHkeB4>g$`ELer*~ zXZC;p(s`UbU($xD*i_9i;86$~ zoGB|EUw1+n^5Qbt<8&`0CFN$FA>IX6@`+`IDxb&2GZvN-9f2t5497x0n>k%5`#?Hj(9;jehX(VUs65?!%9hmDbl=V^~N?9_)AlW!7mMQ#Fpx zydURWeoVG{m2An+*iw?36EwrG2`! zwTf*C;p;n7>ufrh?oUBz2bikPX;*i5zV$O2chBM~rvTewR}x>1creM~FSbkH!oqFP zVeSrr`lXV8X1hBtnopC^V-Wm==^^>zmOJv9;}>?2R$t>11}@LO!Y3c@?+*zL-Cgwe zw6K_-Z!jp^@@yLTq4ctTLZ&5Yf;;h6sTSE2N^{ zym@uCe<9#|ZM`~}5y&%g3(4#IQkM!KaQO@ce0p`G4@{DRg5->hjL#OwA$4$4-3}zg zL`O%5HnRGC<8A4#PSCtTC%JX&6VM^x!yQ~{si}A`RaJF#EZ@JM-K;GIu|bo8nxB6f zA|X;z54p1P^12haj+}Tvd$_I=^qpNSMXHz@9vK1ZjfaVeiHB!k$gu*6Sdj6B90~Yb zO2fhizYC_42(qyb8-D!Q`TO@(gw!=BT)yoJ_cN-x=*UPw_oseXl=}MV07pm#JZvEN z2HDV&$GD#x-vf;Rsk)+=h^PWUw|_@?baVjbU_a)dF&O*W3=F*hsZ)c)l668Lqot)a z^)+s9sJ}l3XqS**^M{qi#j|q(dOEs^U#=JdttPUR_`&U6zkds%6pe3^Dytx=qkDAR zdJBMD@+#T_NO4qD6qI5hMWIjaAQ8+A1-h1)kg)CjD;Zf?O)U=p7vqCAdmW*a{?Q&D z!2oEVJZc*+Spj82xOZ)K_Iut%**HX43pJ~LkB%Ngj57d_eh>=ly5a@jqo)S^o^_PF zds`EnPvg}<8}P*-1x?fCsq&_P-h9gg9BMhE4RzL(y1J{@04qd4rx(?ZfPXs5@CfIsi>Bh9jt-eaE8id#mC0dtC#*PCrj3gFfrjVSB#b>O({1JYxW&jlO#tUSIP-fdB zF!^vjJw0JFrqrmasX>V1>c_(?O$d}o$+$7n(e2MR{sO=`E5gQB2KDl#<|_1p(egj% zIXh$AllntXCMUnddz^q0S*pbQI%}v?z!2`?_*nPV!P-z~coq@S@>PWZTR#be=#6ec zErh!TYW*9at#EAUYDUA<)a8y2h_2>aQ7>G}nBLLacSZF;ehTHLYCm9Kwc<>uuv}nf z9(+ou3Ni!)r$6@vJVZr>GE(E91Y3gU<;xrYuT%d=P7WH085JiVFo^br=g*$GU7Yw! zWk7KL;VRue{^MnY|R!q{#TwQ(_02W!p*5KBSG_wn(8 z3@PE0Rn$v%o2tpm$`eS+0I!OTjfFD|V2ub}1Hw@!`#FV$j4xl};^3qW7%jR3S0Z@i z1A>{3I4@p+lA@xp9B3nt&yJs~N|>xiJ8n-Gje|)Hn2@ruDiuoHbX_2rkL!aO0r1MR z97HhkumDOd3OT@nR5ss+P4P)H5Ci{4yz2A~u-oO~9so;#bU+y+<$t!zwhBNiLG7m|`P(VWyE!GMJV0eN>Rub{vIG8&lb)pj%kal*6l zsMzOtwhobzksnLOp-F;r2LB)2=4VOD*dQE$@N8f}72oq#MTLWj$s!NK-oU^BUKHqJ zWo0GY?wc)S#tcIzjEuqA>_XYa#bIvdHFj$hrR0=+e0==;pE~tvU%ZHkMO*({Mz@QH z?nUrz@b6#sltu+(W11`0PQDwq)R{O1sucu5XM*6`;S)H;x0<}30ey!6a)i@kc3dE} z0JLjuc>#?tE>0G)stRJemKF!-d|(#(fBi}&kZMq*x;_1Td1)ysTBYOn@Ab8{2XYEQ z^T3!~mzQB0BAqd5SAeHM&dttt5p{kW-goV`E&ars?o7ARhwWPkgN$C!4a5*Ou9}mk^^!WP#8co z{LaPR{oVZh{NT1dyXJb6Gb|ZS1zYtq5t+x;#dzySXB!)4518F?Jy^wZJkA9|3z1h! z7bLKHliAH(V9jxGa5}^vprBmr_bEY;Q9g;6Dhqs>%hMHFo3DP7p_iA*1>mbUG|c|f zDuj^K=_wzT`Z&arNq8&e7a`y?U241!c)f$V444PNUiJ}n5KM&JPeKsLuY2Oy6zzIJ zlBktI1P026x1OEw3ZcZtJju<;x%5(}Kwz2}89iY!&;(>KRipjoKH9wN@x>`B$dMeZ zM5_z?m|2|M3@1QoVQ2(WbcEP@eP-<-4MKXK%?X23qt;voA zHqXt@?0n9@bN~LGN==4ch1K*9(~&$%aamw_i(Uv`jS`4!!}NlNnwmEPG5bazdOJ)@ zjsN^WS@&^lY>bHKsLw6v{AlYKQn2q|b@;-746oK2n~`bY97NCZ5J4SLog8G{l0 zROAeXk3guM%8dzWllDg}hU~kE-kFPV-cq94$q#q@~*0sC=mxz-73Kcuo0a{g01NPRuQ_klC?PGuB4Q{uA`KG5oX zF7AAQ8IQ$P&TYn<`W!AL#x0@khkFwWS5fEX2ON z;yyW5i`C6aM{@&)PUyTCH7W!Nl8DbGW>Vep>cSg(ymYcssSTj`o3Pm^&w83mi68b>)Uw7?L)&wxIT|+MPj!ZFqS2 z1+J8f%Ng+3+F#qti;I(WTavty#YIH~OsOd3h!xTG$*PiHzlh&5pGs1aQ&F|`Yz=0= zO*=d0fO>eax7XX*sa9b@eA<3=9iN^a3^p=M8N_q{sRo<_<4&L>a&cX+)AE`|p?O&0 z5)eej#nD#3RvGP)p&A-@&iVR~o`K;CiYGw6FepF{+O(_!(Ot0|mf8S^=9+y?jj~yu zWI(m=IkobJw0UDAISM(ivNiZTP&lFM3O%*!O|Jh5!D&QD%3K4i7$gUu3kV31kwIqR z_++=_PUFCPp!va+)!L`6SB77Dn-)zuY@_(%rn)CX5r6JlkBQF0By$i)81E)K{^ zU|#|2g1m*X@pVfch<0$;7#SG;4WzY0f*K+WQnIq{C;cmM(!pYcl4Sld@fOJ7Zf?9n zenKg%T(0VF7o$FA10}$woOnqXly}+*Lg&nd0CqTwHtxcJA%#%cy?fTX9TG;nqaT5SaOLtV*mD zeg_J<;tSmW(88}(RaK#(Z=pGf_`nz#2-W_Wgxq$1RaIQU?E!v%FgE6$w&2EC$g?QA z1Zn)ttgQH$m>bwIULyYSBShi0llalb>fFVJg`0uL%$h-{tA&iR)@rK(0u>nSl)u+z zu5}U{6%`af_fb<;7E7andPze=;|`srePsZ$>%cpp6Mn`7u^&1!)GlY|D)6}hgpC$x z!4wOqm>VPcU_wz+^^*&%QbcXP0NnoYA)bpnD;wL%@;n44cu&bg`nTtjJqv#K^w`^| zlQA-q5)wv*gjg+ikHh4^9^0n}-kx@33b=uod&i!%^z?k@e}^H`{JTQ}vZBzAf`WsS z*}9H)^>k8wi(|*hE?SqZIAI1y1f>Tesgqk0I}a4?*=(VogUiRDvD~z<>*jt5DRvIC zF;4xCSpx^}JFjuIZxTbY|A~5APF9YO*q@^1Y1ITlGCH39OM)ukHIv~dgn|6#e-GLm zh&U{62a3&rqSEh3@aX;(u8^>B=UPTa#-005294}AGW&weNR;^Nen0<;hg_*eP) z!o9E&?IEz8B|ihE48?9oXqwaUOF$=nIxokCP%K2dH@cWONP`Nun!E#Y zf5eEmz#w9cqrZ@&wf)q~c~=dC>a`B z8X5|~7%8lsG3yxwN1K{;zH*j9^aO(JfJFm3zHD2=@D_X2EniPLxquyMx7^~2CkLycjG>%{L3aYhlKCc- zTl{xoVX`546oTonokO+3RwO3=QUN&?kkY{cg@lUG^f3&JLdg7JwP>-Q0p{|u*Q3C_ z`LFK<;NptiesN>jo8yY3xLJ|Gn9o%kZRe5=G&DpZ^=SZjUf(k_Q&Ll&5F)VzS2tPj*SiScR4Q)R@%~>*@7Vkp>9@e{XnbJ^P`G&^tDYiY$>H*(_&mf4Y1O~K7?fx&LrH$ViBw$49b zG{<(Yj~32!$1Zraw}#YweczYleR9foba-fQYa7qe2Oj(oj6uY6)P(V{)YRzY=jJ|T zHR}KRxT`bxUKE2?YG!6scsLH;Q9|Jux$u2(5fhw@O?jS@zthkN5VzKYHx);@xdzCD z`9mBKN7Ea)@LW$k3d~Kzo^f0s_LmqP8ENW^gIOqco3n0EYatc#OrfQX9QDTXO+w|@qrS|hk! zD^N~gLg*Rey}yJ&*{S78sDs%ypnuJVoGd@(agdp*yYBW{n0-|N87`>o^2zs6diwO4 zF^IV(l6b?UGQw7FTZT3?yhrqdu2D$}>@f#MB;d2i$UM@K}D~su>`^Gt~;+gXm3(El+};z)`uT#OFY6Lhl7KP z;YmPp#SCIZc<1KdvW-$>MSDA!iuHrIz$d4vK#(!lhgLSEVb&Uf`DM57z1!3H*v~_4 zbJi_Fls75Py^!Z%u|TGl0?`qjdpdI$RNCVv@A}R!X8_AV1wd3leg`y8z+0SL^kmy* zE{8urW%9hbh<$Prj7i91V7EPep)xVz-~dq!nBv;pOo)P+hJ(GOE(p6yNJ>Hw>GOps z^Q%`eEbU3{3s`*SyDg|rzn@In_OuyL6(z<`tYWJOGy}g}T>ZG*O^}^a8PPlkaxIKL z-NeFB$SEm>_f%<-k&)}_DQP233=IR+iA5<9BZWHhh*hm>yT;~g?<@aX{R&_e`-R1w zwT_Q_I{}$2`OwVG!&B2nb!N_wj4a;R;*FY^mv>ULX)#?Jc>z-jG^qI8p&G9-g(`oE zX=!bN=IvGkgzuxiK4@1vJ?YJ(tq`u4gS0Xz9^b!vi7ATBEQ<=G>~290qaEOfkMFhV zo`L2kfan=nS^I}{Z5&r)s#iKwF#z}h`KMThLNLgEg8iyW3lgQXn=kdtL}5TVG*nW? zfs#s05amX7amK~Ek4_|!@{b0DXa^%K(VZ%rAfua`Upt=_ z>vxhmAxQ_oP%qqkI1E!&3w)*{FB4QD^|Qi=LuBcVNeGc6o!{RDGqJF+pm4aY0V*CI zIv*WE=dBi5E%h<%O=zlL-&kJw#P`7LBpm}oW69|(jlC6zeBJ4GcaQI$>;VrPX^jfrh532E2+NsRylWRiHj{L} zj#CKpqL4#Uun}1uRAR^$4Gb`S7T$t|2H;0XsLGiE%m!fa4F0CK55G7{&W|7SzTWyy zDC}4*^Uh_vnp~jD0VDvW`Cz9K3)aH*=;dVp(BeF~z(bv9g)rVNp(q>zFATME?>Wp{ zByig+ys|YnH&<8ZW-7TA6ro~!51a$PI}x7$$yIej7>E4Hx2pPtiKWq1~Vt%YY4D2 zfBuv(;tmuueXCCfW(S}*k4rm9H}ZdIa;md>_Tt6O{40PW%tv zWMtH^)YZXy%+o9`@>&5l{sb9#jPuV+@6IW8zvA`mKinV@+IE4>^-({a5)jnc@FMY% z21cSL0<3wrWPWad1i)3C98xSzqpnj)xZP4{EP`<^*I=Z}VSQKx8$jOhJ5)e%lP)i-{c$l=2cMlJZ zm*SX7NJithj`W8zWm^_);fsKPZ)sIn{0a&}$C4i&9bNErUg>kh)fC0X(fm=;X@E;% zhjS516Z5%-< zhExJNhNq;q@jQ=P`+jyCRI3EY)~@n`g9jYg?Bkc9)f}RFVZ9kd9N}D|THNUzyZHO} zm_pfl?LoJ0T|e4x3RQ#@7kC9QcP#g;X`ITHdhSVdEjw3=?TTE}(Mi?aX5!*?6DlD{ zQ~xYdGI$?Jhx9sNmIOysRP=Kq8)CTy=Q}1>p;paTOvtg3@Ej#a;?y{7(ZXsk*>u)7 zK>rF$O!UXJf!Jo@>hRt}I+>VP(|y}T(W6?m+5G@yu!I~On(knHIL?zpNr@x8nh7E1 zcDtt6h8zXtH399RqoKi976gj&2t2gD+`T^|Jzen_n~shS=4PW}W1%IP8X8Jx4Oz>F zL#z#ieKJI)Cb~}N;_lvzLY;O4a8kFl%@J8FwktomyI8j#3{00oH4V(ClPA$DGaI*o z+%<@EpaMeB09=`qI8rW~h{pFQNh-FlVrBk=Yy$a;pA+_4>B&O=1isdXn%eMS)ft5x zd=edi0!>Htgy<$t2upNhG%he`M8B6Z-Ez+5@%{mbVcbou*h zX~Cza7RC!238}j_yf_4xdY9k+ZmYl~LdU$N&cw*V;&0j)9(B%}TwfZ|w8%sDcNu$o zEu8!)$>!ch>w$=Wqt;PPRViCxmX|&R1)qU@fihrLP`t^1dimyFspom)0%VKv1@a|e zw#mo<*JOQn@iUpGCW<7A+}ws8ZMaA~DMfc{K?VVHCR>g`@S6&Y%J&vAe|agPJIN+r z0Sp2VJaoZM(_q*Y0YWygY)_Wr7Z`ZS5Eb=#4~J{%7H)m({R~V0cVBgzJYi|TdNwE< zV|4AKPEQJ28hU0s*FlqF0GJP`I!Ar}T<!CkyA*?ZoO#~&f17hm6Uu+$Gw zCtfZtf=~oID{I>&kY)5N*CqfG43qx*jWw^kK*fi$Da*5G4Gya}UHadWk)?1J;Gy+g ziKOtxhtyzux@gcp!u~grpI!}&nw&ua0g(8L=MM^wj>bRfzrP1%oZp(xo`RR}9(})3 zTa5y(3w^!H7y*nP4Go}(G}F( z(Wwf+54j~bKT#cF9!xu)k{=T@5 z7~>W`n07O+_tJ`QyN<0+H+Oix7dqL}*%KM&N|tQ5!9zpiaLrf0>doEj9}U`!`8QCtnj^e@y%iV9RL6rFtiv7u5>ZRcM2er5|aN-}{v=26@M;5`R)Qp896 zVB72(8d5HZ2haktyEKo0-6JpD5INnLr_K@7T3T5NMd|I`T}ld?Pq35V0tSm91!;4< zm*_>KUD3;xwj3Lk1BoVbjh@HpnVC0*@c&#d89tf5%7Jx~R!6%}`93Kp>YdlHh<{UBj3Z4PQzo17ln zUYC4YOseYYkT%+c(39e1CMSi7BK_;vH~q`!lw$X2(_u&3aSoPg0KqK-nmP7EyW8MS zNzu$phvx#IxgehK;ZZKNP2sZGr-#oG;8X)p?gm<1R$-xlarZ+CUfa3iHr3L;U%vqS zz<@)-W4jj|Gz%o>pjLfqTH2ZFw`JSO`mrudot?o^g^+cR<*P#`)xFvNOHF~x6vhy6 zd`+|5N8PS!s93!_9&+G2&2K*#zs4^ByqZmvvS_UCeMQRq074J;O~%FEdS!X#(ZVb) zW76KrP*6>U*G!{FVeA{AE97sFevCb&R(VTKQPP0?v9wC`Dx;G$@`s=&@%ZOwu5l5; zp-4s)26}r95`UmT0;S;l;e}RGcX_4DyUpLN=S?G{k&8j|p6T4gm}PeAT^Rty&@MAx zhXP*QdezlyWUPMOg8A@aQNb~4LA6;7NH5+kpalf&rZZnPN1M!($02XL4Xanp;{RD@t=9z6R+m02$8I&)<$K?;ISYr=f{9!?|@G__9%2grNWTeQGKR zx#)FqOrYQO3y**RrNPsiRM&GWbs4zDai_hp_d?}WR1W52bfuWqX$-Bcd-Y2Ij}^E6 zCCeI07lML1mp$f~I5)0e_aA0H*f`HfO%(?8=#NH9j2n9q6nTusQH88NN}L7; z0x76TQM+WOu72E`)D$RtU8l^rA~5hJ01J2Kb^W93sV~tSZEeAoyom!^RVsVB9gqcV zb0UWnH7(BZ(GkZ5*936LKqaUrfh#g1;vNQuABI~_S~4It(+zAO#|(*XAe~D)Gq%re zL-OL{$bhVjX}bFD?8hpaXWsAMUs3epaoJJoGBC(a)M|8B=Qs!Aus)@7C16p&|Gb5j z!tde=Y5s^OapzktV)#M(TYA4w_K6TSyuCd==LZwYW@bHO&rr#9uuNC3U_qXSUd1~o zFi@w?F=_PFb??b5`$lt6a{}rr5l>TA)(xDg#`T%LObrknP*oiP##ok=5W#6Qu=r3p zPi}6t(PoCd$dnXj1_#IiLQJ|aFu6m>+kGAis1F?NzqKSRcIyzIGBXU_zWxCaei9pJ z)PXhVyO5g;#!71d{OdF*6hP8v=Rbr;4^ZQ|NgVtw5e~+0}%MhhSNhJ z#jVeH{a%nkLJ0{{CIonR0v?a>Aii1X|Nx zmkofeLe-gPW@ey7#l?l3n5Zi))&G?nj?qI4i7!$<$4@aahcI#0rcV7JZ;ivl&Fy}9 ze&Tvsb*)pNb-ed*#s)k3X6*Ho11qmT_a49=7)+!)@pO88e8n4U0VTNk>lcW7C3fzQ z6kp0ZUvt+4c_$;9;8x?|52Z%0}n-9eUL2_Z!%LJ-ruo!?v z3gC&Z?ryExy_v#|rjr#w6m3F$#%eGPMfdyT_=>qk=+$x3>r= z2gDhL5*iz4gEWM0^&8l@oP@u%K;qHD)D$HXP&K`@yd1FMe7=hm0{j$MOkRs&H*il% ztE!4~pI~8lG;8U`#&Ji0q)~sdZWGjWQ5@9qaRA`^_=k|3lCe98c8rcX!@x-6Kmyk+ zxB%V8!lDc?`HKW z#kiHeoyo5NAlUNuO9Y76LA?lX9cf%<0wOq|`;p>#ay-|m2%!W6e%I*e+=#9d2W3a7 z(8Usz4gs!VZ4DR?M^zOS%-gqJ_MVsyWJ-e0*S=uu@bCg8&Y?mEh+wGU9&By>wyoLN z*nl4(>M%(8OKp@ zj+JkAU$S<4xEvoJxA+Ew^x^BG*4>33NZ^z-3qo872GCeSq64z)@Fgvm*B~A15C3o1$$sT}RiHnVuPU77^JKhCCqw{9NAyrj} z89HEUFm5>?9lc%hM!(X{*aNQweAnh|8O;yg-k~IXOlyF=WN}=JUAWPyUjkZF<*xhV zkgaEL(Sl$LlCQ{~o=Aozn37@Wo=qjPIr~Y3n2~fh%@PPwr2X8$<$- zSCUx?4e1Ct`f<|eq@{v2?<@@PEqJ#uCJia!^zwM zq=vKokv}#~+DV^3+k=oE1(aGe8qap2Fvhvpe*BqEv07^bgrs6!l%XsQi2l*?WrEIR zKxTZcs+uS@vXGVr5xbE%F+98|I>l^LGczvc-*k#J39%0WbT<#k)pWw_$jC_3F<1fH zbDgug?%T?0YNJrIj^hSwQJKSPv}9y9hrKPNZtfEF0(g^;lM^^2CfyvnAkr6j0QzDz zo>K-Bl~$;2d4UI!SzIgx6kHP%6TP6XhLpT&^zN2c=i~R1K;SEI{u(&o>5Q-t@aUJg z`S?<}-=0ApYkRvGXy-qvvU(;$&I_yS>TITJjRv!Oz`DbM$jr;DG3qh~(;;?;*KVPn znHkCBwDAJQ;?0{|?BDZ~MzXKJ?(Aigg)|5FPK-EKQ?)lvGwtnih}%07{5; z@kGto=;+Y!u&bLJ53gfrP>`I2GgOHG{2h?8mpEvmV`txm$_;Em@B_#XMcloE9WG3M z3kyq5S{f4GwhrsX`T4vCZ3Vx7{{}CuC*knD+Tzg>pnqFoui@o8wCr3vi3WMLkWZg} zB9Y(|L2ezSaK9zb%Y0mYz34k*BLyU+w)Q57csV&ZK>TiaV8A@r1nL9sXJ3GBA|Rkm zOPeFcbR7Viz$Kxj_3K#}g=y3%qB4k*JYDS71?H^#Lie&O-zQRm19*vm+)CmwQ*d<^ zv$QPu@Bt-9G9CNPo(;|bxj#xuMRD==&OC9EK{KIK%T5TOKvd>v1#c`{=UEwaKZqm1Z#T@ z-2K%J1{HO6C`KoNP;6darg+=C1H~c z!02)c)y%_L;D{duq1+M&8&)@Z5EbfS_Z`C?oC_{&qa^__Tt8N$>$Gx$XQ? z0lmDk@^t+P+BD`J&|F`C%FTTQ4ve+_BJfisi+t{(p|MGjV?(NnoszNzpmbAHGUI=M z{Iv&x6EMJw0EE*20JJtJA0&hm)B6fP3v$0VCcs_23GiUFQACFY{6X2}@w~Idc z>(Kf6;iWVGhL=~T2^tz9>)XE{Vexa6>=tVNO~86Vi8!3QiMI3x_1kwNxp@`MDnJK? zqc7Xgl=8o7^6z?|``+PgW?c*nv|Sbh+FRen&#qM_uh@@6bdQm6r|L8bE+O~u?4gtz zhn|)umq`RPI^om17#K#RYHDf{T)3upJAlb39NlT0Oeu1M1YSJwzYzAT(KeQA>}G!O zV11tH83xuS7y=oc9|IO9bIM3^u~@;=|NMKm-6H;t43VgcS+M)dHDFWlip02|%`VgiU4feEJ!HISBD!?-0Lp^y5cQJ%5b+Bf*E32TCkV|BeC7>%zV) z0U=*3E@4waUHe_{Jr_*jQxUk}y0ouj4T{BxI+lo0li)wc((C{2Z$l?}Lo`zhP-KY* zsS*B9p`j+ES~a%RPoKUVEy~F`?BSxH;Nym~yu%lUD=7GVz(gy@18)JsOo>W#bieE9 zez&liEAC{B8}MAgd;NohckkVMrJ`b8m5aJB z4NMnIGzpU7zANu4({ppHoww85P8rm92utA=!6g27COu!cU|Jh`F^eVY{3HbM{=%5L z;WwPWj(+3$7Q%#Kb9sJ{6t9(-zV53@};kVOO?ZCpjfTlHZj49&Zc ze;36uUP2R2h$Q~+S20mv)%f?-#JT^T)eiN<10PUlC54(h-~==k6kZ@;@7x z{lKaeLuI+h`vV_%!6dNW!Z72Ic80dTm{lM24_>Va<}-ykK7j|Yl9P<7^^y(g3JAtA zAbiIUWO2j5dy71!s(pFg6iv&Y$(YtruVy@^=x&WRl@X;``xUF(a6@PvG;!T_h6SlD zh2+eKwG84RA~YEiBR>odMmBort5WP9? zC*Q5JQuA`0_4x!08o4qIXQpr^O#b+^mc;=ci+m<>9?TkTik_kYOfYV#4G#n|CfEaz z)YRJXNl(fw&>fBc$26EHQ_`-ZjmztpPOZFa%LoIO@H@+XTk_d(1VZ`v^C4oqUziB> zV$j&6RNw+nmp*6x66jl{9zqR8=5u7$#&fd>j+S?vAN~y($iDKFD)s$|9uoMS`|=qK z4w@OZ&c#Op#F8{>g}-Bn?Bo}ZMp^y;97$LI@82Z%{BYz0ww^@kWoccu1ZNPA4_hQhUNJ?7b98(>_k$dX zmld4DLX|1pkpY1?B=fbLESHi~wYaD!gtNxo!`Q35s19^--}~VcvmG!HoI|HD$To92 zCq?1<+fGFmvug4xnlSBq{+uD0eoNS39Kvpkwo=pO5gy+V9l*@&y=b8gFukacgX$UT zgykI17J8F^@E;u1&Fmp^oS56Qf)>UnG^*51G4kh!vonp$FIQo8mDA1f6v6@%_Iro2 z6IK4XCRpCd`FZ*798R_62H_vxpKISda0+(>eF3ySn*Tf&*OMh-KP43%9K2l$O7@)e zbOmwoFU3+=BG(#R-R@lfK=Af|-&&oR)7hNBmldNF~ebmB z(W$A8T737oIN6>s(jV?)B-`33bK+GlTL z!L#KD1{zistW84gL|dCt88524AThQ5&-{E8=kUU{lYR50LWtab`2(b7x?Y#4RdPl* zB-I6ZwCwKO1weSf6H4|NGfBy=FoU5a8QBoVgC4!iEE6AJQP3;`1U2f}%oXIwfQJv; z`NIyoutn6)BL+SViL{vU!B2+-Z&E+I8vcGjq59ff{2?N-V(f2gK!@PhgPM<4uDpM= zT9KvFqS8DvD9?@}m;aN4EEvY#WIcB@=eH$(wIg5x+mO+eb#3#pu1nO`` zC=4`eoOeZjHPs8M=U*(lVb^%9pSD%2tfIrZHpK&wqM{KqO^drF1lor!y#fbH`m;G@{lKaj4;Po-^iY$kIeu7p&Km>4 z^=BhAs+zG0mdAe*oNgWxSbg$$t-M&Aq0C6xJ$Bcl^lORZvl#Gw)`jjDRjk_J%@_U-*Wc${tUEVh-+8Fhy{+g>c zs&8VjeLB3~;OaBBq_|jIbaA4XZK5Z?U4Yfp(fyN^lPy-j zqrNfOQ4O&cwc6;0MOvJjd!{!PBh4kCz5e*x>9hy7{d)FHAXFzBRe)eyd?`W^&)caz zs-~sDYtRpDbi^KM$dPjTEnaeaMRD1Zg=lMiY?Y~zgM$n_gCcE+%Bxq^9$Z@&En!isl^vZWIdY_f z^`TPT-%?I8Cpg%&T(cmu^!~ z@4iP=EG{Xbg^2;H`x4q+yZfY}WGP|xW3$60gE4ltyIAW}zy2QnqMB{Lw>eRVj?>B? zgcbV9s(yEQccdjlpEi`t$jXc~CCnY3d~hq)s_C-EWtJ;_s&bRJ{_r;|g)I?lt{2(j z%1S)?`?SY$6w{|iUsee)Cnhx5ro=)YbyLlVwr1rZ-LU&3eC*THh`U^Ge(DV_1iB06W8`CsIUdAEm?XE=noFG) z4|ks2V4|g1*}Xs3?W$;V6#5d`ff?$`Y5WTtb8*Jj&|2qv?(N+>L4i&-m!9L9Ud8Pr z)+Yz6Q-eQ_D(F57Sx%piY~P)#8#~rIKef^o;3`f%43k7Wustj-34b3tbMBK;OquRB zonuwNaFtZR4YEOve;tY^q?)Epjm;k{IlbRUW-YHiYtpJ;v9hpwyWmy#DfnJ&TjJzd ziK0+v4?XrN_QM1x=m{|QYi)Vf$y#HguP))_!USIAwbQyp!P=k}y`aV$j55LPhehS? zvbHLY8?O)5wU{;!f+HO{{~Fla%>Py1)Dt-gk~z~UaUAra*SU65qs3jKI{FZAx3oIb ze(T+IGgg>?y1^_>uf~sgTN^FzwY9mv2nm1F>2#Y7!CT|i2SGk$4aYOl9)7Z%rAdoN zgm=Mal&KZ$wjbVGQjIA(-(C!W_YW@(cXw1X*5taMFEX(z(f?p=l*Q?#wSD-bZshNmqA>UnGklP_|u|y~8ls`zn<^OE!%!%vORP zTYm{%Ig?KluP9s({zjRe&TVh#t7GDLY)vasxZ=b-;bq+~%>9zbw(JvJL5;&&Rd7E% z%7+jK@4>Llo%!A47y)aX{sB=tANY+-3V&Pw_hjUvZtVi4CGn~tKxLPe^Iamao6>eO+vw6%CYm<{ch|u*z)QwK3fx_2=q%{M(kV0GDNiT zF2Hudu!#PWpL<;ZGsrD!@>5Ks^AOyz%p=NfTYs<}tDkRY1S~b<6&oks2d3~X7t9^v zn>)l1l*+u3$W!8PAi-~ z5OhynGoq$YP*KolO8@!u4nj#mqwS1?m8USb`lJ8NngblZ7V;56R^;Diii@Ps{QUI4 zg8Ke`IVpZQx}h5m1hEkVrF@5EIQ_o@GJFKcuKU{7Xn||+Gyf+Tkn|h?5R<2W?NDQi zp^v`Xh;#oFI1x(%oruir{J)bekGVPc87PdweYA0qWo@O-%IVdnOwYQzSUJa^Uah6` zLgA&g&f~~Rd_02t@@DG5x{1`nWuxU1;&}!dXYo8ruYSL}Hba=VIx-=-_exGxQ(hkO zNHpy9s&c9c{?%HfWwq~7PSnUde}-~-Evq&?uuj7@w$(?L!N_x%m zw<|yTNs~QC8qS7`&OX(IIiF4gaM!^e(ykS_j#ARHl<7NxfjqlSMO^$$F{)}x3Y#Bnz9%~YI= zeTtKUWTr31KA(qKUbpzIq*_%nViAWX`;sn#Ynq;(PFZzCNqNMhj;+l0Dg76J)5D7< zB3?-_*%OV{Zzbu<`?_nOq77#HXEAoBw6592cG;yc~XVwcG|+;hK#RH|sWI-06+u)p~(&4W); zNdXS8Ek$W5%c8cHpj@|ZrK`$aKzq#f?rRpHZUZpUgo&P` z+@Jr15o{0aQ@xK}CIm@C54R_mg}g4ut7Y6@M5rNmV+6qeUtV2yPUJH*Hm9;gcK_7F zO{&aJPe&m5NsFs9m85nnu78NT$j{#yANtUu7fQzd_s1ALDHkYnIR5Nnc7K2i30f|f z`UF!hK$=ku3=b#rxhYtPeJMa7Zup2s28U?U-rh zxMKT4ArPG6_8O6N1AFG#`*8^I+=6=j#bipv-tM8U7r#^OQfU48MioD*1x5vBF_(M5J>ZzOkREydrHdO*+x^1-KB|ND^p2@zsmD zL_M#&d~WXZUe$Pd2%+-qE|Gg+UH}fx{M$LSFFRsOW<9$z5PJGxLRA(M2p<}_B|Ewg-n%EI=`$Tu`Xar*Bm!{l~a z8gr;`ZG3I~({uJ`+DgVMOgPJ?76H@{=Jsj)i#{k`z$-;h?R?euJ|wfY*4O1*K_IQt zE42p?iB)V&I!T@syG@&wq3Ie}8(XFpOCg*#(1R+$pR2=q;h!5C6gjGRQoF~(#opV+ zeD5A+onuQ3Y&;KUV(mJV~*w`M*LkTyuw`M08R z9wVPaj>QlhcX547!*5EfNS%5*OXv!7;o3uE?87eaSQ!mx>}o1Fn`xbMKfflcyJZ^l zI-pg*Cs{Dr|AOCDY!BD@Xw&YtBpqD8?Q=1_Q?>H+^yaz@zkvPz!J%Y! zJ6xQ?6Hg0$+x(?aC>0>Jsy*jV7&~7x^vL)>Vc}*Fe4I6HD)R|rhHx^)pL6|4&CO$aBGTGpHW7$=V{z0V0jfdv}e$>&VXIP9b%kVjg&CG~3UNVGj{j&rL z3hZJbm#@!aft_crhf{KR^#g4q-_I7sGuu(IXvT|gtHV=AA3v8U3dZq&mr)hxW1#RI zbKed^3YM3$M7sZkZTFCr|AKsr6({%+r-X>MOewO~CK}P+cnc$l^qJmthn{!ssQTUO zXGb6BzNO|+XBp`-o+5VWM9}xy*`G;EAxYWiDIs`yw36R#(UZt4JG$uSpevi)z|G5P z{p+L4tQZ#1+4h{y4wAd9hAabACt2tecnE|WTJUq@%Pm3H}WJ>5E z%@L2B<3{6yQdNKdSjcu1MBE;FZ>{Oj$ zXM~xy*&A$gnl9jGKk;>8H#otu`1I{!r=2SLffML|bagS`x^o+%Urvs`iRy#9ohA)J zb_3Ji?M~~bGe%fsc8Zjcbq7cMyy=o^jm5M3&0)B=$2nQAX1V@ZY zXQ!$^-c%`ol63xa)Hri-M9;sYKKX^pI91M4Q-+TyD2Vn_t?X?(crgq2DJkySMW&2+ z2|(z*Q13-SG46Hr0H-H~OA$CbWn*J%#8XY{37eHvIoV_vrwlkC1_aTr6QtoHnkJJH zMoPvKS9Pk2r}m6A5{c_J#w(Kv3o9)EK!6CRLJT1dJY1FDE9ZDf%Sk=y>XNmw_PH(1|N=uPi1p5Z5d$DVSo2NKV1?)RmY2{$sRne4t*rH!(4u^zx|> zaxpIcA&-59Rp*YUTyuI({bgKy{>#23sR%wqCHC$Cd#P=C1&5pcW^;kE5DvJc8oD)K-TmR$x-<#v&%Y6D{{HNCV`}+5O zIWymzdO5OkqO;qUGn%R#_#s_dc-2KV;Xieb511Xb;8!AbesE0=5^?r+JW`i+C*aG9t!8db^uuQFFE>AOoDEleKf zcyHZbRWfGX#}5JUHeyH zd4MX}6hH+rN_~zigJ}ewG>oK{Y0feHb8sdJdO0^%G*SO{VQdkCQKB+gi3M;F17YbVCMWB>e*Lbr)V5CaU$M~^Zd`cfE2>0@2ZeOdGJiI0(iwq7RgKVu z{lJk#%fw`d3t~JIboSAshfkNPVO-zY|L1+R0O0l+c^fZp9sI37R%17rWM^7xc{08^OvsrmBB-5sga&-zb` zqZ~P)C|qK{&=c`jpF-cvyf)=|^tC=xrTNYmk&{+tF9;OEV;niiF<_kcEBSbM(u7Vj zyyy=$0VX0WjE1uheGAged%bu(_rxzlrgb?x^`9@kU?|+r=vII-A-TmIqeQ6xlawby zisRqWIwA(;4GUy7r%c71%>1sd_l}GdPapW=>hFnr?b+yf-SDZ+uc>$Up5MK+JzEOB zAZci_jHvn0TZwkEoLmlhMl@61xU9W?JXdAmFMbky51=yIF*X+0HIE}-tka9KhWMbw zz{j(XY5?y@zW%cE4ljX$?iWbtbSOkBJ;)@$e)kDy>lpDPqQ!O%Z9OyHHzFwD5^3uq zG(*X!9lt?76r0)uJtaYU1F$Ropz}~w#e4fCL+FI7?viiw9yJBL|4RvexVh3nA;8|U zuxt%|IfBu!<7QKu4@(mbr#H`AeDAec9^dEFNFwc9s@w#@R9vL8*aTUGiPltF39l&A zcURt|!3=Q-4)g%H%fiJKIz{<+!JOZ5JY|sZC9UsS*2mKcnmCEuKGa)vmK1uo_x7T?AH7H}G`RP~3 zi?WTkFW+Wprx}1EyB;YhrvR1%7Ttk~rDZq&6Q<}igg8J$j4B+kzTRPjLNfV~7n7IK zvwyZZMl)s!bem9x?>I`WP%Y=@pKri5P-`1?ED;-;iZK7@Z?q+MdwYA=1ABc^3BKrq z|7$$#UuXY2213#sP|z7Lvwr{_KnUWd;Q(?eH-NLfJ3tv8j_k_ph3_P~{rL2nd_;9c zHtzcJde0q=Ya>eYvnpf~L`O~{bXpe|3<)14sHr(*e!YSQwY3sW9(zp40|7)0p$W1c z3AR|Ei7jbnmIqATa_ee9%fjUlRNjNv(S)Bu;qzVF=jiAn-5RCx`Ha>Suanj)8~48+ zmztVfMH|Zlo4*5stnjs0`J8r&EeK?r4*#Sxs}%lcQk3SVrv3(`V>%8^J?R$GARaQ^;05_bU`k0*!zS?zinziCN<&JjHj~Z#jV}A{_J~;f zS=3|q%1BAMfecaitlJ^!+~T4n7bzjA6F{Gf6)d4dctcd{YG}g5P?GL@C@PxO$-c-E zO4;%vL8q@|b7kxM2kJKHQHcKt#?<}=h}LY z$S4iPAoX?lgN)1OYY*R)lvY@Dez|L8lqoLGPsd2t-}h^6s9jlgCUx2xl8ZDH41b2C zZrt$E@i-w$i088HJ)2DI`~3}WPtmSx`WzisUetvUC(pw4r6Y6!xP^t$+4(a}HLR*) zbGS84oR+Bg8h9_6fN2NBG(bdUWT1iN!hBct&JLThas`w28c5Zxc!0u_3@BniBMZNl z{*e*DHQN;4B}_re0jRkPYSPYtt_Cd}2(lS@^uX8&lVg*Xj;*=QDCy~?36ldT378#_ zyM$Rt98zCV5d|twbGM;b8yorsWN?5Umz@nH3uIdxN=jg-TZ^fxvQniyYZ~t-5JTaB zyBPYV1QJESQ3uWpWP9uEOH`GV3Jwe5zku6qS5pBi398pu->25r#<%Lj)f$!+&7`3M zE+%FScOKdf0+~Q?#y!Q3m3!yX?OqASGrfrhENe+9l%7GG0GJV=K?+Y17atFbkk1|n z8yNv$@+~~kqeqVbLkEZ?&>}zpN1W>T89a7CfTWMl4F>$6$2B}cg{Qm>9I>Y-6_-ij1}Zj_1%;>Mt(!l>&k5wnx_UZst$q!1 zX>Cu*wM=R7Uf=uOTiC$InUzI#TXWR%;J2PNQPsMFinXzM#mVlm92xp;EFz5u$8~s8 z>CMRnXB&$-p=47v^K_PE&m5bbn%0yQ%rC?kYk1W8JT=JP9L^-wz*&Bck-68HUpw7@ zs-_|~URxZ)9~xkY35>1;?!i4iiSTON`+&l#`&FVx|vA0MS5T#hX`0s}Up_(?u zouP(W@%3*?U{s>=4ngnVe+L!B?j9ndW79xjBFxmzYXU*i^3NOY-rimS2b&)7K>Kk; z==Z^IX(~Slg47@wT7P+Q3Jfa{?2@JoYJJ3EiqgdwWu6BPDQMcQ4P;3H$aAE~1?be- z+H!I>8RN0(@u9LX)XkU5<5PqQN+WOksWL;Gkz{q^??n6}tWn=X89*@UC z4X4SI60qHBUr>T?EU!`e+`x1nE>NE;M`n|PSoGok{{1h)FgKWVFKV_}sHlDn4oa1` zbVkyOVgY|CBTtLLKf1zbx-@o4GaIe54_W|*;XF_LhroljB z_vb6m1g^irCnjE-wUath#|Z~9;v)t;>pJ$0Ck?6%TnE!B>H_6|~pft6G=<#vyRRYP2rnTvMyPs7CFxyMrgaxUb_QblbXqH-Pf=?v5QT(zz+f+rZp*pyFm9fEN(LhS25UOqbyHDR_N;K$d8zQ>ecE;=;iiSD z`3-@3x3xYU4{ulev${7cn<8#bxc&b9vsx#ZaPM`lfA)sShJO*YFt4h*x@ket)XvRG z!6_%XRkSsf^hhWuMD1j|z<_|?VQ(+ta2O5k5do;@5EH*Z6cwGXuW6W6QrfeD;Q{Xk ztPZeJU^N4}6A-*Wd4j$TBk6+_qyl$#wzkMA(9zM|+)h_k@}b!lsQS0~g@W#*^v>pP z_U`s}gI#-yKT!FA4iBjhB{emW;U&Vs>5upj5+qfODi(lc>gnjPtS`&SF#+Qe_Sk!W zZx4Ecg2d$6mL7RR4+1rCgtKp#f58_&| z``^8D$J^T*G@}wON`9>_53-V;EgIith7mHhb{<3tqx1i-0E1*Z=Gl2Xl0ju6~AguXUQF zDUrwV2syCvswKpC)*j1O?{h?Jsnu2hxW@OpHydR-#Vxmi*dClH<2D`YKkAGgyDN~ z7$hQtzZlR+ldu?a4?17`=>ME~-HK$Ysn?Z-%djVQw|`TUQ-^!MYLutzr4;7+m@FbF z#%p&wrz@^)ThZ8)yD*thL6EBmHCa_(9j*V~7Cc913%(oeS>by8K^$x2VtZl%Bf-n2 z?er>|a|TRApr|bXa`gRWE)Xr{GsJ4@>RA229D@3IM^BH8oE$-~Q*J>4uxlyOK`SDJ zaJH8NlZ1B-UJch1V)GfV8|ZMY7nF(3L3(>aF8-hoO^` z&{%O(HkRdiIe>lPpoIF!TzyGuWODLFFW=^^RdJ7#y(v&U0Fh1wg$QWAIS5S?+udp4 z%=T}WTRC`n_D4Z@gGexl%jN8d6$hoTf0V`w#0UgdVPT;Unf$9)*rDy9u=PqLQeTZ> z7?hc{w6qYL_I7qeHDIzoed>Pq&JVa<29M&*#9@Dj&)AKnO&)1$YXgOk(q$Yd)^L;H zZ$jjAxT0LeFqkwq*F`^0BbnAQ#J{XO17#`Vmr^Ce^3h z6oFpb(&ba@QnCP8OPJkhn13HDI+LpEwr^FDz#MldXC71azF9L>VVCKE4qBea;6Ut=ZwJW}x%N#cTFzZV}>W^Eka6 zU2-^Q!)f3%t6kdRy&F^byQ3>8=^&&S`uWvFSN5Xs3fdO-g%*M?#h#ZJ9`A*L-hraIQ-C(@V-a7D&BPv{a8ffUV~0Zn z_O!IeDacTN|FAWF+qpM-@tLWqEbd1v6nC&fv9(JVtsp@g@{m=_+0@eV$K(#+jmRzU z{fpq*+Qj}na6-bw_&CR@17TK{5yH@rs_}LDD2A?$Ppf_n2yzr^Lg5uS9pZ?%xXb8K zP#=X}k}##9wWyPX0$5Gp@b92nz{0))GYdz>E_Ngy+V=p>84gEB*)oHhOB?`N7B>I+ zQc58L_vfYLC+A5G3W)6@)?d(N9RxYhkYI%82AWBRGeQA6PCCFt}agh z??1pb1V4J*Y5juXq~bFZ@7Zmf{WlwwDyxJn_CNN!77>~|c6NVt1t}>YGH4II`lESp zc!<8ED>(ShCf6HN_Gw5L3f~2}AR!mO+)=w|>8wJae}qo#l{C|M@}%_86(#_oS2 zAts(a$U1hv0A&pST$toNpBkgMx$W;;lvGxNVUU%Syl(*>#{GmyeIp}L=tyD&nTFch z9?5V19niSOvh#oRbpPu2&%9v6xlOxv%VB-|nc#);u1-u^Mh4JXPM74vK;$wyT185h zIxjmLIt!=NoCjaTF+Sln35!EFG&OzVh|~bb#(Jujdc1jYcXoC*KteWQ^8{$XbL>bGiQp){uQS&0pKIL_{RZYv{6EDlQ&V8>`Oytx(ZC@dpPEi; zg5(%v1PaE#s@tE(@BK0?N!A%*Zt@Qv9v%{KU&#*`YdYj4n44$2k+c9!jzLNmB1`G< z)tUzc0inK84+wDNcMnDtloe?y1Vl36OdQjSl6f0vS*@bH#i3upjrVs@kyoZnZ~ow3 za*%#?J30T7ig;5NL{ng-`bt=?;ilIi?kX#NR`l?4Xr=&F8FnNzEDrn;7FMdhDIL&xdqbvXq{p4-@CilBIN`@8x|5FAXbQlfx$>e zS7SS$4-J)eE3+U3fR+s~Oy_fva)>Tv&~(RJ?R0mcn(;9V+Ok+!8r5DYt4+=5>+fG4 z8w_wEUsoH)!WX@1s@f{*(|LOv!C~_qw;whlh$aIZLflVc{l$Xg{;8alD{UvE%yOJ2 zWY8vem#SPr;RF{)S@oHh(o1RC%A-PM$QywP*B}2>rmj9A@8Q5IDVCir-7K$*rmoKz zJzR54EBST^NLrH$~%hy*s z9syVpX6EK>x)1yD>aIL8F*jd<000<@3>-|9sMuV!nWy$nG1i-?=m&lh3>li*+A{mW zSEmkY#+q4fVv@)rl1G@{idv6)Qr=gzGuLR%4A?lG`PPz}rR?oXoDe$Q0yMh7^fl znNZZO+hq`LUqdVZn3Oa%S!1`*n`B^OLc6Y(dabOyoC>8Em+xgQXI$@otU!+4(b@T| z+{s}UJ_Qb8z|!_?yG@1Y14W^qNCIXI4o&+#iwyOv@878#j}9ofC*%Mj8(Js!;~U56 z0R3)38G1TSPlx#H)H~C;QpO6C=Q`0B;VUR98RENHo1S2mwY{ROOJGeXvgIzGvg}>l zg${Wzl9#-A`1sjb4Il$?-1t#9wxff~@){QT?7#8jtvz`ZuYs^XA7~_q&n@UhVQy~w7ZuP2&fNjbdv{4oL=^#REzbc} z`Zx58ew>~$pO*@Hp3^>qm-k6;PVRf)?)bOr2dA)=5t@{JEhXeJzKU~RzCd5{SIR|w zxplCebn@8gnoq!>F;4j5eixmj13e)aBLO~7y=;Y`m08}=;YOmW%7d6ql{;QII;1hp zr09}uTiZD)_xs0Y#Sywe{zvYfTP<$l2j|0|4sW3KJphj!a!C|w1w@YvJSFAA6WT^}gD3Pb*RJ$8IxC8Vbh%rHmLBBxk^&iX?90vu zv+D>=RrSy=E}ZV%Z8a&aF9a!u2lbvvXBU@a(3A}T!G`MT92TcyXc_QwLE_%EYu705 zU|`^R>H!N4BqC%(j>ND}PEMf1Aay!$nc44W_&;G{5@aYy{tmH%FnmSeM%tN=NtGlN*2zLv}O+8!zbw=Rr|QmFc1+`!t`^ z-{OK#nf$*JZTH?(OcFNJ-Z_&0KaG6}G?jb%_AaN1A}K1O5M>CN$=I%xq9pT> zNXeLa3MHYE6jA0%l8j}ZiZajhESbqX&)>D3^S=N0|E=#`>)Y$BvsBx&pZz?)=l&eY-XN;kCNj@z{@hYF=q?^SL;@b)=F}YR{o7c6rukH8`lFSaUS;EMq2i(hIGh z5ECq^Z8fZ#)0K56%d)n*sCX&EYJ`pY(rdvqW4q}7oP_l>yMawt0!Em=h3h>!BxCzf zZ@04Y-rbvIs0+5t$F)ytJTm?e6W5sVIk@jdR)CFFOnIEZ&NB%B4LM@B7H~Kvk1rGW z$?~M0*}XB8rrysc(p9C)KYofK?7*kRxiG8F`8X=ck_)aNZY0|m+B4;OKUkx@kt8C{ zGU`&Fv$T|1p(**|TIHLx-YK4emk(V(tDSP1dMf(pY$0{GFcTYlYm0cV!Oc>ptC06u zRh-YxbiQ)&M`*^&vs8Bv>Zo7w^LusjUgZPM?*n@e?jIS*o9Ppb&Rwk%r&kg6-7nhS zpslKy@G;_-%S_IL>~jU$9V)p?jzyh-z@>$&Yir-|-@@3m)Y&s4ezgbxd4*09wiAUa6^bkdf%6x@~A^3w7E^i}aWn zBR#z<7cQKnhFHrLhnr0L`Y%I5q>$I6n6OAnN3hSubT}rltHwnalTr7=;JcsC%2bfL zgZ?H3pDIup3>!(#&&Xr6W&8hIUOm-1-2=TIi^QMYNBXzA}UQ9IdG_hwj`t_mp z$+Fe9p7A2Bg~`dIQh2ndUuEB}j-G8G7iFk?=HA7y=saFg&51(eR!gIRvSFDnc-XQXNMHwbsqi!={4cdzD4jZv(p z^DNsic1rSx>(+Otf$LB$0q+<=fpo}aL+k*r@(6eL0_fUwm1z1DKAR;8IoNW4O-#Hj zM4=DQyb zL9_F~NdrV=Kv}TgxdJtUuG~Tj+HzrNDf;;IS&FZ@TA(n44F_79qN2Xz5d#(?r#;2s zT96gj7Y_?0l40MzeQ?Zt6B=5frG3;d>t<(*!vdCBkP5_4h(zEx7zrP#i}sy*_$(=D zGSemjGFL}&G)_)=h#WLE+2uc+EPwbcpW_q^ZiH|x9B1#qhZOdypY`rbR}b&IM&SD4 z@F7dh>1$Hakjy6P8eWPehseyVO^vbfpDvz%YJPjSx`sN{!IKyDl%&IyIW8$)I#FCD z$UDe?+w0|(t`oVYS)bpF@JpoR=5~Gx_xaWtsV{y}B37_WXSbwR$JDs?mjUh*$4@v1 z`G5T0M|o(hwkh41Hi}MIFpBl4vVS0+98ER#wr27mE636)tM&4WuDFJR?KbbjYCC($ z-|soEuTOTBmgeq2O28&I!~P?Bd~vh`28O+TYc1_uNr_)mllEQj;=G*YAa&&iAGM#R z6gic$oiJgd3NjLK9Yh};1wP=8OxuPaq#WO`GqK@82^@s zkag={Sq$H@`8zJZb$<{lYa9`c0^A*dndKa!@FS`B4-VGUuApg9$+2hiWFt@Uvp-D#1 zuo=(uL;>q`dCi};lw^Mxwtk&1CS~2npbAh}*or>dzHQLvxH6ubkG>pUqcJeUA=~z8 zx-F!vuaxZ^LYeo+Y1h3d;ICe-tF)c7Lkkap?PvmwZ=Z871cd8KlZHV}LtXfVgj8l_ z>j@J4C0S@IeYXJRQj6-*ro)S#(!N73U^v+V<8IMn{#eh)xl|Bj|SNO;ll@rg_qJ^udL!h zX5VKaGB$RoW#Rd4iiGmh~^#1je*I-7MkhgY$Xv+PYtXcv6xy3~XqJgQY{+&;i z$9u*e?l|Pe$Rp0rA{e9XB$nxWFmBi|^YZyCdg5JypM-;pVOo)M$$05t@J?IH)Zts& zYR{SI=o_jJACz*)3||)rScA7V;d&(cyx1pzCO|6$90O%#|67KJg2KWu)3P-gSa99$ zCpS~4D79tVwzk$Ocwxb&4ba&cX1~zTP}o7$xiUtW;=~|Mc7eFI_L4V}j380iIJ!(v ze`YjBK*+SI;ph5pioh*Pis2n$7fekX#%hf9IrsCMtuQ6k_}RJKI=j@;T&X$r8_`)= zBJeLlwE`Sjpnyf}?GwE7>)ZWdvuy;iC|#*oT(jQZmDeF5>DnV zUcn9on-P;GC9 z9SylhGXG0NGt!4-p2e<)Habdp&8*9_mwkMEpd*XLqMgjjPe__|+O0YWK8GsP>35Qk z&JK@}lo*=drd8VAHa4D5KF&c%xos6~fWO>$E!?_M^YGdCo`Cw8-1Bkw@OK|icdX~G z?fhEby6xju-+7Ti0l_0UAYnv6Na!S$fS~$bYc+vL{pGx6R?ANx6IJ3!+6UGN4>Xp( z3{UEBGGqAT1Mu_pHVASJkAnObv5acvB$a`#m&v!cI}WXH@?{c8tG;FD#ceEuntk^@ zT7`=B<^JH_h(;A@!KK+RwG9nN-vVO>GGvoRs_Ns|F1_g;8mfs_WJ2JznXkQv6X37& zTbc!aec@ov-Ca#X$hF2*FUtof)VkI&Nu`XP=0DWXy89!_hDX7{^wh6|gGYvjVzPkv zxtT@1!|pn=JXKaED4-@#_WiACnfIXc9`3w}rWDbG414zbNj@1%#3$Rv7{8T@UCR{m zJZ=4Zi=*C04X4ckesZi3?S$0Nsj%NdACR6Qtd&Z=g;w|N>cf3^>)$cXemo~J>~uq- zEz!7bYEi-eib9)<>#69vcG;GIJ7&-@iEy&;N?pvu)FLx)I5*WlUc{ zvH8Tjm)v!AR+#yXfYDn#1o&5i%Jq(il++dU7wWbu6`x)be7W}dy+%?d{pRbQZ%%Qr zGc#+l4A&`ER1gv$-e=pfRLi>U&5)eqo8hso^+hlU>~eiEl@4|7;VZsNCt?ESSj!() zLV@Wu)42L7zHiREFw^D~@ZUbxAc0FWaR~H++gOtI@puv~$E}l06w8+BNuw(=ijCLc zA<_f*_p7?#x-2v$HeL~)-yi;);73(Zs2z`Mh5l>W*RRTR0umCT4i??{TOuzXqZj7q zcbcvc&dkCWCb%g`!{t4t0Kfb3F;czn?wQO9 zxy^_aixMJi({a+ugC*<<7OkXXJD%ueAYA6bRzl#I>3yjxVoGAJNYIgvL`S*|4R=O* z_bF)N_|l4=uynukkkgtVozg1i;8CZ7w^r93!O0!$CO<^DEZX<41LTmA4nRRVK)_YW zf4xGz;IV!8F()gj3zq-t~ounaAz3~=}iTVz=R=KEJ_?IG}BM-Nk z-~5f-*49=w^0^lf3-<>nKH`~BsjjP|+5Q*H*>u#)cuNPl=(dPpoR76sFN2UyB+DM} z+(nS&^ozg{sqcWZxmzj3>ON~7NWas-ap=$?{0;}{OA$Wj_lFc@?g&K^-&dwfOHNbY zu^rzy&C=F(Z7iz?``579U&`CD9th3ep`xDJG-Awtw>z^JFP0)}M4@AAXV+9$chydp zU~+`^iMJd!!ww%p;+cE*w4qmid(g(4C`&{nl#v-ww_kgF^tlzGp5pJbO*EDrsE(`x zIDeW5pG0sO>?{v{8UtI7pbQakQC?nNAnIP7F3T0W=!HIJv0UDPdq%i^L}-A4_R^pn z>kB^?31ACI!2>vtoc3fU(Kj`rZ&wi_D$nc(mRfrrQ$cGAnG@f}?{PQwGwiYvuD-Xn z!17G}kj0dN>wD7i0`v+(R#w@muOMC4(#pR>Y+q~|hCSWJq7&8^Mil2fw&(1? znjj<|5VxXyf=&OQm*cjJq$s`dn&Cx_^Uu$NdjI*TVL@O8%Oxev!y`B}+dg^x7{)=!mCru2u7jLw zV;W%D>eELCPH~bh5CON(It|YaOg>>T_W0+G#Yu?oL9w(06atrtG9D_|`Hp!=Nl&@s zv*FKj3Qld5^AkhSZB?P-35oV$KrAam#Zi@AIYvp9_vLQS2W+AJG57DUt*tI=N|+!8 z>90u8&6v_{DMnAX@aciNZpoWakxVmP{tEj+q5Oe1@S!y`+L&BKGECdpnf>HcY@vv+ z;*0$=&9I_%VZpvX1_opO6~Q2hLIEb{PQxc?FbDEf78kcC_jSNqs>SQot48GN*=tLN zl%6cQ>X6c28Zp<(qHTq=)a8{z`UI(IaRdOgyR5_r2nAwWX~YN}aiCDljamRWa9uwS zmQk-Ig!nR~))}nPF^28N^XE^d1}=`ZXJ9Dlq)T=eJkz+HJOMs*`#Fd<1tjcR3K0lD3Z($Y-FS@8Z;*rjlN-CQMmLvDE>EFWshKS(mf zo8ID_`wN1v!(&_2;y@ey{Zk&Zfi8)#RcvVRsiF&!Sbn!+4-Hi_v#@+>$u)cWaGoGu zJta@4g`sFG7#)+l(+g!64p7kY=rBtyB)H}j4^Z@1XdX6BM{fj%;(>&&!y zQbh+MFf6G`w_jK8eEi!01r(i6Nab1$oajG|O0V2Yjf+vV*1d|( zq+G)6DL@Dw@Iy9i(g$FcQt>xOGsE4>klXW*Iz5K zz-NUR>FApB^4#O%v}I-Ann1X*zOnIH72S`bqB6U-=H_E4kp6&kz_Gyir(TAu55?%;AnZX$Sfgtw2u_r=&e6J<%iBUsuy^Lff+lKP3dwbcd)hAw1WkjSX za#Tyao|`XNm0ZBa9$kDEJR^uto*}{q_m$x1sHoYck>CK|#px;;V(;kaQCAM5&TKl+ zwCj`D4gjzUkYk0R_s*Tp>MqXH{g?1K2tBZgUz^C>^Tw#`?%q|;6o`n5>H`9p{2eEX zr3X^C{lxV}cW8Km=J7|pOB}nguY1V!MQofA{1#>V+**-4pq6T^uRp1HbPpdjiEycU zf%OF}u@F9DlrIpKVjg;-z5p#2kBoS`8Xz2l&fG)s z6H4oAtB8;g>jSyU3%{^T?Clj$)@%7$^DbwfOCml4hFXh9(cxBA4Qy^+o^ls9UsE6= zmmxpk?*+$X?_)wjXA#1tGqmEBIXb{_DfCH5$^3m7dl3EMfv?-JYg%u`hFO33~|h2P`30g&d-Ld$4dom zMXzGuBazY>QFv?rOI4Ti4y@whPrN|9*}VBxYO9;cfiuhy`lj0Hya?Mkh^qEM6LtWy z%43q2Gcdh4>i}!T)J`_sLh}b9bqb^%`TPc&3C^Wf(v2u0^8pbHx4b+kr609&>499P zYWzx|sP_-RDjHvJCtVJT!0u??Nda8p;%C$?kjtL;lH)Kn8%aAQgMitdQ8m!pi~5>N zJy{LfMz^j*aSonLGQ^4sr4PxGk@vlxKGkT+t^=!9auCS@eBh}4rWC?qI&$dtiz8)v zcmh(>(#%r|YicH4JA_id+()9_kM7|8eECuqINT8h9KX(oh+1iwO2eUkZD<=)w$$}+ zZs60gv9cm=AdG5)W(7%v^`()7kdQ~IjwmACbjU=bS4nG@RJvC~L4TRZ?8l{jFj2qA zb}{s@m8Iog4%anNxnmc3`T2KIuAOmFeE_6~ZP2>huIpa-%a<&>w?A-q<>Ox-`Jsvp zgvQzc61y=zvF{L<`@$_n7%&-w1i9}wAR@{%jwgp)TwF@U?Koi5YdqU@+_#ugQ$^*2 zg>OziZ8Xu~dbOw5()@UywUM-wBf8k~fm?Ahmz9+EzLHC-GLF!x0`^#UGJ6+^Zm3;Z} zBQ!|9-i~xGHJVM_e4m>-08a4=v%GhVM}nqBrvQNuxi*oNU1cS$-OUSXd+QEH#hGqz@0WUFyIj6 z4fDbS|M>A<7G-fChM_{OKiXGnN=2przTX4tq>FV6$zp^i@{jq^wm`4Su+=L<=rt@L zqu>aqxKa5Uh%6{~XN4Bp%!L&~79#m2cs+NKlfRH+vO&=7TLEiE#I#j_S)xIi9iI<44!-InlJ-ZfR+TLfL&CVRjE3@{( zL{U)@LX(Kq@Ch#CsH?5jSWQ=n*ODR9omkn!z)=1aFr@QB_c`)t8gFjd!VBpXb^5eLrM>=%Os^b4)gc!9Zh zuy6qc%WYtEL^+@6yeN;o^8_ECQSE!sqnBY)hkjH?79F3{oJn6n?(*2Hwls5gR@S9u zMQnX+elXO~u6@v$L6ngxL7_U_uK2!O)oc>gt8wm!>?q3$-2;c?O1t zKJ>!z+1XqoBF&|x91_}mL~I{)yAyli$S~5BXFKt0fR?s@#}02yd_#Y}DM45Dm?Q+$ zp-_+F-PzfhU2!fgC1syCF(!rzWlLLq{mg8WZV89HygZPIc~ChH2;T7r0T&K$mX@XF zd8=oMn>NXVH!QwF0uNTE|CNI8+(^N9(Kj|VG{D;L6z&ff*Hd((gK5}v;a;t>T?}nt zaK&#xWg3}2q^{YSF>nEu@|^WGr_dc@;1A<39Y*5pzz@k=?B7m3G&pF|oalnaRHnbzqje`IiX4STprT}{p6+A>Yv%ASks@-~Rmkb!qS zH1^7iL_{#{AOY$q-un1oe)%#D+sr=Bd-sag2BdUNTc&i7$7*RYQ2XrXyD^Ri3HuT! zlkM`HBABNZf0`!|t!HMe;c{l$wg#J7KIYo`l{Qy;Q%R`lO{B#cg^W5N@RH;#bJbP-K8 zHS69`#`GX@n{B*Ck7JhrW6fCc_F;^p zyqxS=6>HF<=K>3kn>$>iuxB#JgRHIOn{>ECHLBScFE&t)I2CxdpwS^Y>xKjj!HV&e zy~VNORl~fs=Jl?#j@;GTHEU_;%vtT^S!9! zv7D0qc=AqZsi_^?z5T3@qvIP?=x%0iA$5ERIwo#ANLamu#OY&uQ==`*gK9pR^~bcf za3ClAWIJ7k9LWr8pu}h}Lgv{iM&Tnz(Ehsy?%5cR@~^69D$L){-CIG=P&(&4DW9EhjH;ykeh+Cn2^hVF@^) z8|CTBq5Y_gg}yzcl=c-yO>dJnv9mSPG;0}tHjeOJyOEUs`SV2%QI|&`}f8K@JtDtS0?@Q-|x^V!EBM^d<_y-bi z%N8{>pyYYzC3`x7|49yjlSHDd>* ztjylTJ^S|qVtT)US7n}-mHqvAA7_-(aq2iV>f%1jh7M|L30w`rb#}m2@C|*E=`<(_ z^qD7{SNGW7J(#ANo(~5~9vNNqR`U-&;2M?=PLp&d$BSB8M2`(-BRpj;Zw?@Vr34k3 zO1&mv!l2ag=rR@?02wFDS^O86&W1*eh`?2`DI#kZ>E-5UzrB5RNp~K;2azoX=~Ym zpruAqo3^BsPCH$>Y0#xu^puTogpk&WCX7RXZchRLx6@c>XP@QPJ{U2E29+a!FN50{ z303QOdL~N?UuWaB(cAy$=l_j+{U_q2H;z_I#2usoc=Q4!z~+b8bh?GivAv~*73Jlf z&eJ|)W+bFHf(BnmdX$7*eY$b`Hdqfw`X;fZ6&D|CsiTs#&!Z0}HCF~VM4yO!}|&S7;rF$O9T_LlWC8m zU?(^-;0|9F|L-93KF6sN&X5fS=`f(4fIiXdal4aZGesV~AweCD3rG;m-zP?h&@c_n z&Ntc^HXkB=4<8E;K*=HhK0xOt(gC)R4p4eL{9kW9M0%?>>8;kDg@uJcL{R~F7k~Tq zYi)J^U!+AcxbYTl`(ZO_)Ave7@cl#@3C~P)tFCVm7Z;DbEJuXHC)_RmzQ;pDm}#PB z(L!04>2%)=ctmvtJ|vULl9E25n%bM#6#CDP%8-Ki9f$nn z1k5{~+4{hgfPF<)R@O!jh=-86`^is|KSa#fS+vG-b5F3b2?@+(5}A)M-?{}MjcKk^ zu0QwSt`7fmw#|Z(R)f_8m}xk|j2R7#K8TC%x@LC{mxBZ31O`01fq{xd;0Vl z8^1?uZ1wC>CjFo!z{H}@lp+qvQc5Ju7vlvA=w5mut0HZI9i!4s8`q}shAAmZ!SngV z^tXZn?VM1YnY9!Z6;=QDcjsI`rO{m8vJpJ^ZTm@BH=q$dD%3v>Z6rng`MM_8m09*> z*@vBfVNDR4p8}abgYf;&D~IeqVCMb*4Q9rI!0jj_d9bju4iDaTa&-K(5hVuwfE6M@ z`#jyLt)*4pQ6{B8BtBH*x@%(tLo8)G9)cV8&j>ndau4KX!Y1~l2Og)TXaf|F1T9N0 zsdf0Q(8Q@vU%(&h>y>e%3B><^xbOZ~a2Zd!#5Elq7f2u8y~{^EJ94WJZNTX0raL!J zpLV|-^gKLVRa;yCb~6HZ3J~Q`bBq{6kxdr#j{N)wq}m(<5txvV0`_0^&Khznbg#ND1R`- zGcz$^Z&`r%Lo)$<^~_Av0`d5Jlaz~Gv@i{|5Me-J%uEva0-YARn$xCdeHklyx}}1# zKb4)2s>RG#dwVu^JP8R2P{saEsT?D-s0oDqM(2q#%BvSGFwX{W7ySR~OXSsez?qS} zw`6^d9r!Wo2vFtEo_$0~Ne1{^Dc;D$!AZm$NrB_ynaNyYke`#A6(mWb)VR~xHtGKZ6QCT1S zs9*(($>5ohCUYbc0LaN_6)Qydc(Y1Lg?k|%LjeXmSw>0ckCEReXJ$-BXkrr*uxJ5+ zA+tCnTnQv)ea9|&))&k3<3RME{M>^va79HbB;6{U7_0knBMB~SV1j}&fs+FcgLat2 zsrJ{(JD`@Z&cA8UAs&Vd#!Y4(eS;W~z~Zujm>vV=Iicq2YS=o(c6ZwWNN`R94ck$TG$*|q8)NBn%>pWwIs1;uWg!x2>H$Qm?(S}K(W0_4to{ajC2Y&1rKK18V?e~}F3?SF7>$xY!sMDAN8+B{Fg4A&Rdoyg za-}~(twrg#4DblO9%0kg@{llAW^V2{*o##L@#RQ_QxSHPQs%b{_Il7KK$+uPwI74* zC<20l_V2M={8BZC_?WXiMyq}k=Qul(hf9qfpg!2_Si^XN@>ZtgiNqiI9#0aqGE58& zTNhmb)6+A$6t%TE6+i!u#|yjE>(}bZsz`79t8_6=fjMNu@*p!kJ--((EGK_QNjS|3 z2?^z{&S{dLE32%815q4$f>~Kk@JvFh0j_F|30)S;bK_Gr7Hz4D3LzrjdnR9Tsh_eQ zd_FVtv@W{Jd8)*=Zw`BlJP&uC)j&KzRe&0B>rujsv49Vz=g+*IW76igmycQnlbY(m6c>VkhwkO8lU}HU<<7C%s_ebH< zrBEqXJxGqm#f^gTi2@$2H+Od)JlqK|YcG3cC$@5=7>$k|bRa+~8?5O>WktpG;mo;n zkVN52usuBRS$ACnniY@t-N(FJ2ApJ_omW69Kx1ukZp}FV1e{^;nC$WXfoB9l8O(lz z@FzEJ%Ei|7zP)?CD}3RXdmM60Z~|eh$mLn!{q!leK&PRoKr|C1?$m!&=~C6uXdMW5 zjf{>KzE#Pf-;;|6@|J;tGK$3kDLw+Nk)97A(aFWllDZaCy~ojDuRfk;?g{TN&YiGe z^QfXjALTOkd-~6?&a&!9b1%m^N{)4En!aj)Vs5OX>9r8PVdVhDqn&pT3YCj;aA*jf z2)IBZhP3o})2uE!e}BT03+$gg*4rni3!M|`YAKX+Lh0y2_3PFuN-io3VGlDfHZB^V zz~y772Naa{<;%eI7EJype@8OJ7oellIduY#DoEle{km**O>PTE#pX)M!tVL&;>%T6vuwTA?g;K7pDUIUS7jCuBFxf#Z{TW z&26&E_=A+yR5d3_f(JqF4re;d{h_6V{3BTgC^n{RkB7Xjsi}D_WCPtY9v8>|FQF;c6);6%kJ>Gf${EfPhrlv7&oa(?yq7XcL(riXl zn8j>{F*N*TYWWU2ihTNo$v4Y-d0x#;P2DjT1l;M?sn?zFK~6V;nL^jq5nZBxNC>l( zq~-hI6~RM06%~Eqe7hT*b#j~H94BgA1@QlXfm~L*YhL{P2mt!zXnZmGS6qNh@dFI( zE{_SZ_FCe@;^W7@yMuWaK?46)0?uJC@Ig04o|X(_w?RRm1#-t?$JGQs7{qNDc?Rn0 z7FJZi7yb-NPFTXZG^Qn#7Zm8DKL>0>==Yyf?WLuU#ok!y+?%~d=3dk>We*fg=kVK* zkh}*f8XAs}9HWlYoPYd>hL^XxD^btg(g`U6&6A%vPtc)XFmcXg4IR0p`tA43J?Bu#76%ys07pw9XD_$J&F6cFIx=6=a7!IBUke}bQ1-j>eV z)RddlqO-}}hCK}%Me6MEc;31K5k`)Ra&pS{B_P9kq3+*Th@L=Sf&m+|WEb0s6Y-?} zKEgd2Gii1=KW>O*Bk90@(S=n~r}*<`^o8t}ZPQoe(d#SffiFjYZ|_&f;MIJO={84Q zWaBx(YFw4&DXMcs=iFV?`)EtI#Vr#J;5C={ATlj2(30w6GssHhyLMk$U$e!ff-V9Y z@&2x`$~6*E-1>J*%;CM#5T>zU5fTQYxD|9VQda8Tzwd?R??X>d`6#8R(i1_|u#z=0 zrXXW3EiY$&i(!56R^n)jUwwb6S1D4WUzuH!V5fHZvNW-D`S3AcgPRgM6$1gPjVTQV zSc|bVVu~Fss5T?!(cfrE(pQy}^UA+aKmtmto14*(=cZqrEDFcW0ta%rMG^A*?^lE5 zuLqSmhjECCIxNqHqO<05r&5oS)Ac~v%M|wKynHNtd@-w{(PUw}<-}fD?d{YsmWh4d zx?KYce=2YV-L}5|e(D-{tsx(%IZJjl?wMW5hgbraCy=|aft>lZaYP%u8QH3xjg25b zf1jlTai%ZO6NGlwb#BhRkEm_6=b`8T#K(_B_b@0(JC^{nT!a};ZK{$7&Ii_Ol=*0 z>aw~wx}5M!T@MW=PX{=u!D%x?Yb>pckx8mkaV-iR8>M5NDaLkSfdH#~#wfwO-p8F6 zdy`#4lxF|_nIp{GJU5~7XWd}V3LnLL%%479&YsX*wB_$t(m4^h{CO8F04q%dK@Y5^ zIV9o8h3nDTxfZDV0QJ5>50(%{2QH$^j66Vwh@4nG@%sH0d0_DMuNhHf9e#_vKUxJA zvRO#rFlm5r5(+ffMIc~ z*I>qgbGVbj-Qxx9b=AKlbG8%0wnHXyh8LWBq$h~$`wXpq+_>wK`}>d@_6y=y!-|6* zMs$m_E6R^W*;(?+bpm&9H}U?66k9JlF)^ZHE4ojunWG5Z1cRX7M1ztWi!BUyxJ6Id zPe_9y7aYu4-v3o&<>J80h|T^$$C zhF6k`*=h(W7w*uWJ?X#IV2p@#8&;dv;YJfv>ghMCJ_JxPTCT zz5KtJm#|fozv0n-AWG^HuyY2F!|7sKnRPV>Mo@{Ez9U6~*lYYck~2 zGrZ59xo^z)9Un@#R0OH3_0@4x@&E=(PtgN5bAQxZB9uAcAMT6RT~?I(LGi|0y>e+l z-Bfk&UDGp_?N=IoHo7*kGHnIfBRoAW3*GNcc(K2M{Vsddw@5Q>Y#(!L$_T$l7eFLg z*%M5nmS4$s;hWA}C_lBx#>>Ih{BllHlN2__(~_*erJGFDX=?PK+Z$F(bG%F zq3OY%{HtUZqjw_DS!QCXy`y^XXm9$K6$IQI4ynDVSy*KhaZ^%Tfo^!x~}Ep z?)V(ww*@^@GMs0R_luWTN!cvz6JMrrxk@;qc4j-&#cPL~b}V&|wsoI=w6hXCD(A)0 zZ}-VCC%X5su8V^M9C5K^kYkQRbK%dakfI(5xYM6nf$l>ID*mkBJ}AUzwu0sW+!G`| z@IMvb2%Oi{6hC>A19TGw$LMEZC##f%2Za0FG=bmGP$n6LAI{V>8o1%4BFqd zb#0#l*$=JbijmPVSWBOz^XmrNseH)T9>UIuCt)6Ci&L zxCzDYix-Y)pW=2>GNrC6`&&t_Sd4^-R&}9Ae6#c`s>1q)1}Ltbzj{?(S65f>z#&b| zHVG$5r_q#4h+XS_fxkdTdRlwz$4Oj%XBUIGt zm6r%ZW%}J7R4On=Kj`s$3q?QVH5fFuVP zoF_32bh8J2c(8>J2$`rAQDy;XAX>xU5gRW^d*D3Xs{Et=#V}qi=|bd-f^O%@pGWNG z{XD5$ZE$`-=lFY&EdsHCeR@+8iIeWg#2y`a?wRv+rMTwFlPCF4<{lyWg@TG%87`%$ z2LgWX!tZKe5jLY5A5Hcd;Al8fM~0OudmEaAnbybc2P(C3>t$sbyUGf>Eml@mfQlL1 zobJy-k(P_r;NW1;;NX5z8%V-_0z4s=SkWTHVbAooVK}#v?Ac zH;T94cf%(Ir)DOmh0*_bQ)fm*!hUK@f%}*<%+xqUT&v2_gI^7FPOQ~Pf zK&L1%`uMW0I(`&wh=@QC)&JGgO-)L|e=1klf#QaRg(=1lNmueg^L1`+jHnxT`Jaxo|0~o*y}_+)70X-Us2(zC719-gXrf zt;x}}qH7(#8rhSDq+&%efrT_r{6;YLS_c*03Kaahc#;~|Uh+0|EnOZZBYqsA8rV(X zSAIif<%w$@PcwnWe4Rc$F*9@7h9CciUYOe`8qWz@JB)7eeW4=Z{L)TbTItu@(``E# z;?NfvHmtu1sA6{ZF~yFw()ztmDhc2C(T63pLA*gsJl2_l^weBGg3Jvs8@otDvaQyW z8c=b5YNqW->Jn|d#HjwKi6F5PWc8gpXI^g`&Gvw}bA)hAtkeIi>)@QrJ$;ysP37+% zMjkM^en?AP{=eDrr0xM9-;uY~)gy?(q`@dO=h1n1^hk%D8B+svbaa>=BDH)81hpqA z8x4(9jOITdOEY8XAy7jqa(E0Bh6r)|7D9y*N5GyMU_Pk!Iu6PF-B+=_VO81vH?Lu= z4!JDivWM&u>Ph=k;3y-lbadp({E5bl8ce;>L}C+|5qoJF5*q6MpmJnz@M9LwKO+YF zdKqjl4eq|O(Yv~Tu@UR&Iu%+?dbxFO`p+Bn|I_VRW7?K!VaRw&hQw?m OoIj&LjF-Ls;Qs)|^P_qI literal 0 HcmV?d00001 diff --git a/MADBugs/CVE-2026-86950/the-great-glyph-grift.md b/MADBugs/CVE-2026-86950/the-great-glyph-grift.md index 9f3d64e..79051e3 100644 --- a/MADBugs/CVE-2026-86950/the-great-glyph-grift.md +++ b/MADBugs/CVE-2026-86950/the-great-glyph-grift.md @@ -33,7 +33,7 @@ Given these changes, we decided to dig deeper into how the Apple system uses the Imagine drawing a big “`d`” on the screen. The shape of the letter is called a glyph, and its outline can be described by a set of vector paths made up of lines and curves. To render a glyph to the screen, the scalable vector paths must undergo rasterization: deciding which pixels on the screen to fill. This is also called scanline conversion, named after the horizontal CRT scan path. If you don’t want your text to look like an Atari game score screen, your rendering engine must support anti-aliasing, which smooths jagged edges by partially coloring pixels along the outline. Anti-aliased rasterization uses a sub-pixel representation to estimate the alpha (or transparency) value of a rendered pixel to effectively blend partial pixels along the border of a shape with the background colors. The larger the percentage of a pixel the path and fill covers, the less transparent the pixel. The CoreGraphics code uses the same underlying code and algorithms to render a font glyph as it would any other path in the rendering engine. ![](images/rendering.png) -The stages of an anti-aliasing rasterization pipeline when rendering the “d” glyph +*The stages of an anti-aliasing rasterization pipeline when rendering the “d” glyph* When rendering a glyph to a bitmap, the rasterizer will walk across each scanline (horizontal line of pixels), collect the edges of each path that cross that scanline, and then accumulate the alpha value at each pixel based on how each edge crosses the pixel (including which side of the edge is the filled side). Notice that the rasterizer, to be able to support anti-aliasing, must keep track of the path at a resolution higher than the pixel resolution. It is during this process, computing the alpha mask, that those `aa_*` CoreGraphics functions are used. @@ -85,7 +85,7 @@ To reach the patched vulnerable code, we have to ensure the functions are reache The first, `ripr_Acquire`, creates the context with the flags set and initializes a device coordinate clipping rectangle via a call to `aa_clipping`. The second, `CGGlyphBitmapCreateWithPathAndDilation`, creates a context with flags clear and never sets up a device coordinate clipping rectangle. In other words, to reach the vulnerable code, we must trigger the rendering of our glyph via `CGGlyphBitmapCreateWithPathAndDilation`. -![](images/d.png) +![](images/traces.png) After some work with our friendly agent, we found a path between the CoreGraphics font rendering entrypoint and the patched rasterization functions (under macOS for ease of testing). For the harness, we can use `CGContextShowGlyphsAtPositions` to render a glyph from a loaded font file: @@ -139,9 +139,10 @@ So far, we’ve proven that we can reach the patched code using CoreGraphics fon ## Turning the Integer Overflow into Memory Unsafety -As discussed earlier, one step of the full glyph rendering process includes rendering the glyph path components into an alpha mask bitmap. This process is done via the `aa_cache_render` call. The glyph’s CGPath is constructed inside `CGGlyphBitmapCreateWithPathAndDilation` prior to the aa\_cache\_render call. The rendering call walks the list of edges for each scanline storing an alpha value for each column. After all edges for a single scanline are processed, the alpha mask of the row is used to render the bitmap row. -![][image4] -Computing the alpha mask for a single scanline of the “d” glyph +As discussed earlier, one step of the full glyph rendering process includes rendering the glyph path components into an alpha mask bitmap. This process is done via the `aa_cache_render` call. The glyph’s CGPath is constructed inside `CGGlyphBitmapCreateWithPathAndDilation` prior to the aa\_cache\_render call. The rendering call walks the list of edges for each scanline storing an alpha value for each column. After all edges for a single scanline are processed, the alpha mask of the row is used to render the bitmap row. + +![](images/d.png) +*Computing the alpha mask for a single scanline of the “d” glyph* The temporary “coverage buffer” is used to track the current scanline’s alpha values across all row intersecting edges. This buffer is allocated early in `aa_cache_render` and reused for each row. The buffer is sized based on the CGPath’s bounding box: