summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorEric Biggers <ebiggers@google.com>2016-12-01 14:57:29 -0500
committerTheodore Ts'o <tytso@mit.edu>2016-12-01 14:57:29 -0500
commitd7614cc16146e3f0b4c33e71875c19607602aed5 (patch)
treeca77afc41573513888229811071b65bff3438a30 /scripts
parent290ab230016f187c3551d8380ea742889276d03a (diff)
downloadlinux-d7614cc16146e3f0b4c33e71875c19607602aed5.tar.gz
linux-d7614cc16146e3f0b4c33e71875c19607602aed5.tar.bz2
linux-d7614cc16146e3f0b4c33e71875c19607602aed5.zip
ext4: correctly detect when an xattr value has an invalid size
It was possible for an xattr value to have a very large size, which would then pass validation on 32-bit architectures due to a pointer wraparound. Fix this by validating the size in a way which avoids pointer wraparound. It was also possible that a value's size would fit in the available space but its padded size would not. This would cause an out-of-bounds memory write in ext4_xattr_set_entry when replacing the xattr value. For example, if an xattr value of unpadded size 253 bytes went until the very end of the inode or block, then using setxattr(2) to replace this xattr's value with 256 bytes would cause a write to the 3 bytes past the end of the inode or buffer, and the new xattr value would be incorrectly truncated. Fix this by requiring that the padded size fit in the available space rather than the unpadded size. This patch shouldn't have any noticeable effect on non-corrupted/non-malicious filesystems. Signed-off-by: Eric Biggers <ebiggers@google.com> Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Diffstat (limited to 'scripts')
0 files changed, 0 insertions, 0 deletions
kE aʙg= `hο3_y!:%ҋrP6"GXD.HK2 DVK$: |zs{m8O0)*")X$h)`J/6QQTTҒ㊭٘Lש(eՕE '9;Q02EI2¸s{niݟ+¹>PzH;f?-d3Mم%skgJ릎Gvcl(aorpwC,k6k"ȈGpmFN%&lrFa`ucK @3IG]~mܲp('ns/ bZ-%5puH/ >k8=LS މP"(xT赏m~~LfQT.>TLI1QTQRR}i ECTt2 ߜ4J;o_kQ@6Gg7>Hpz8pDCh9i?rҜevR1($O {S^HrT_M &7,oSU1)E0%=71ZSS]^[/degi*@jTTIM Jr.':\ ec;fw[ȲAxy>7e]1ݧG#Q/s}GlNAKʰ%wjG 2uZ.f~&Kޘ=τsVX̳0]#1S\$cצگye|s0+׮e[Qb\R`Bۄʮ? - oҰbd%%|ZO꺝}; 9 i<SsPUu eoV<;w/߄6_ԎkXey4vG GS!i²]lg4f0.Ĉ@ӗn865 2@ΒM Ji<9moƃ谱b) غQX[r@cvI/6QШ.ץj]IBM3)MR6I ZjͰYrl'*.YRBʁz8tSWT7/c2;6%VNQ( +[;iw4ՌĒ }И_pnX[ "sQq9/8GjӪ;DlF폔#㯯8ŽZn.|9$}̤Ϡ :*(r&^^Ggv .YZF@!LN>kmq[qU^kn%5L!>natFKML_樧R`aT4&, MwFkfhmٞfceWhd)Z&U1ώ=hoc\eǷ,!/D`2L_ 4&, ޾\N"YҚ^͗Mm|?YBD_@~-Hb oӷ :ؐHHt~qu6(KJZ;~lgځ)BayG 4CQKJSJ5b>:v%!A"E11kt@R +BfVM͖ >Mx܂MYev1ˀ8(8k?慴^k^σr+w~zNOΒyvb{~<6uj9=5ZȗJtl[P1We[q0%0@8MQ~|g29!q(*5Å˯ϻFɗGWdҨw'?,Rf&z8RLT!vSDB> 5@ᷚDoFfC)=|!۰82>'0g7))D,F G 7b$Y0*l;#Kd|W P X"y 1)H?DYwtmuSf9PۀRXsTID< !Pj}}onX=Ov :KRYQWB ^Oy$t(RyVJ4W?wܳ$!T]v>o55R* I+|Ϥ➻W~K|sukw./Or,.诳H]Ř0GlW,< u#x ,*EH2DI23?u.9矑" wZhӭ4W[y$OIȖo25.fddjЩəp2جHLŅvB 0DGp|xoo1gBj `5 ֬2MIF nk55"(F,ٙn<#^C6Y I!o9aŀ0@ @َ3mq7]'kR'kKǓ2sv93O^XՌ Y]?c|:&:?&̠ouL+t]jrwD.6E:*°cV\ö2=BRc_p1C7]=29ůΰx75\rs+|{!}Ya)]gJc'&uS;-ak K='(޾9ybíB/`=ahWǪrXG+=<EURUPg/xr[OemlEO !)]OUgmV[e [du9>s2tM_WF8Af=_3;-ޛV5?(>H_wr߃>/E"y4b+8k´9F:SH'vwCi*sﶠX^qҰ.Q#N/6_f8ggث7ST>%TlyHBC=XbT^EFƷc"U-!m fU NU]O%Ovv't9-7,u>R͕HR1Wxy~_`w`hhSXSVysǘ!%_: {%Pi+OwwM.B1&/{8!({Ǖҧ ݮ|ađJz$@oyUVpax+ ٛ ie68+`4NDd7ֵ߱rXf=E~V 6酭R$KEeY;5r#3vuVwDylfnS0dENPF;]Et W]O\82;lZQJ H1%j\db _e"СBDDF~~)&چȧچ~EKe<5ߣ^|{qpFl|Sm҄8F+ W#}yunEoγ5zC/OϞ5wOoXdl!/ڟײQv"7ZAײ!)9ڥ+Oq8箪Q!w9Q_r{7M=#5)aX0/~:7u."D-J]g&rQv%XղUdBWy_N=5++56c7xXӑ?ar_=fʶ~ξ{ OΡܠ),0F !fVḑV^/ P]ܴN SIs;f#`N (\SA@TӀS__ @a^(Mx(Q&۝hi!4оanbuj;~lZnv̆r)MƔQw2U6]p2f j@~~6 $w9IULJ"GKIʭE?{z݉d׻SMk~s|"ijC)s#G 'v̾N]muz'g՜&7GTUՅf]2>^ vsqטv]V59ڻ>nU~EaUo'ES%oeF?MkUp<{(Ԯe|)NxjX_|z6]kU]ՔwU~f;/tAktrgef;ʾKNtgoE-@S\^;V:5 c{\:0/;x#-盆89UmFQ[_a-P`t/~`7gwM|RZiQ kM}ckT>+ny=rZ^i.|SCڒC+UCwSuWi@>X3~յTi(sP5{0 7{oyni?u Bf`q W=8 Wslt5S0a4×3|ƃ)MӍ'U1(am6tvpi@i @r|~YcV^¾99V[C듳Uvcq;dVwNʰ ~{ <+{eYr>e>vmhE]N&ko,dUtd>mCg.w 9o^r<4ּtmu<9ֈ8uC5Y/62''%PC{Z>PkV[:Qqa>7O1oל~sO'וY_VMouږǎ.?KTjF]ʓTAM%<٥4h-DEH$OEF#ًH4gDFl?ܒ&N3:_ul^g0=c1X8&8=sFAڰ*2`/ȏYd~ C 嫜VV )qORpV='&=)kyGz/+,5:eD6 lXGh2#|k~­*yW&xb .gpjq/7K;4' 7ࢊbt+=&r_~HjPH_?䐫 \9*;'[jk:N-fNuC^7J^6AM %A\=X5\]'*@Mk\`^{Iԉ=5Rnkw|tmZ̮ y x?А?>z/VG#<qŜ 28!ĆZupx\>~{3E5赱RG0A".!6>e8L=:^t{~/_-$ OϿz{q%E2O <k]IE" ]$MO.VU R5HĴR4-34\ j,P 4PҥGѪoǂy?SOoF%Gy?Ѷ_%4%SP !ni=0hF @ZE)A{ÖLAO4 $Ib;Yf[hѐ?ޏ{dS#HE$فU5 h-EͶ~xQoWCK0g3܊c^>G(&EʇM40J"۾̜%x϶S_L3$h_D܉][˾ T'0!'?O;>Hl}gk_EtR")D&f*oSdP@RmuVE1).!d~KMA5Iy(/ID oMɼ M"GWGACXS7LWrKh>p}v}w>sg|ϯ5Rd$?^Fv" s3HQFR$Zh4d F*ZI%͢S?Ƥ 8.zL҆p:u[XtE![,@s?qHh)&hX)(f)")4PJIHJDUD0LEUPRQU+0T{?ည||A@]i)!M %0`ml/>~M^M[_.2|" p vd@>N]oz09\wL`C*N;DM/e4=\QsOP=C/cb^ TG3@JO$qv*rJy<'kwae4k.ii)N΀;܃M v { kCVfxG.<vܙ22'!B]$?% _;^_B:lDZ 12f`39$!I)KUd_,yvm zi$]6u U5 eݺ1ϋs}jhւl?'~ݾxο(¿ (#m>7PzXJ5ysb/yk>0v.迀XD&q(':ÿFg(^!ՁGwKy;6ͨZ3ۏяDm@VX8]Q w_oYwuj$yM]I:Pj91V_˪H|Q1J $U2t?tHEq?7߇`o=5#\OZgU@ 1S"9R[ jG +5qxƻ9t'կIa\[RU/ݎ ܩr&Q6wA !;^~P]5}JLm8sh\3 ʱپ氈FQo߬i^Tyuu\@U^Pow2t273ڬ?!H?ٕ"S$$-:XZZBCMz|rp>qg68lG`iYZ㙣_p]=UN`_ֿko׶GJ|9w5+ p cY(ZlI웄>Fs?>~~`?`OR?&!7V?1׿.eߟ=(9)~vаd)V@^ʄ+XSV.@44 θJe{7xB) {ӸBD &hStث8Be`UQrfأ|Z ®~p2+}KM'5S([ubqGi[U @$G1L]m}u\:aϧs~Ghda;l;^նqlҞ6;wν_>ASI=^8-+nƤz:O "$ |<\t׆(-Y(z:Kg^ (2%O5 }PFsp1``9$ʚ$ rM53$ GX?aw y4o6C@$$Ulzs8}\%"4l8 $gg|6V(l#0`)d.?ucjGxĹR ֨`XlMOZ=^)pw6uPɅy֍LXzy,,M|H#WŲvMHn(DO.{:ևџ~> ?ہ|Xy|}si;Ej L(ݷAn/jP_S}^97z"Vs)4FT4XK6ߟ9p[~rw-UNl{ǣo(b>neuçe~ _˟;u{݄ Jb8t;`/]}Xֶ;'q7ϊ۷Uu-7caKjtpМDpðel3(?7__ y&]xǡ{F ۃ=]8 aCuwl)Nr Knp/%s2<_o6Zx\vl6_u9o|;[ pۘKo ncÇl7Mlu:7vo~agw}{NO#wkV>a7\wG&? n0vou6o.ΎAB: ?m{u'VƯ}γߙ׶T=FθԹNr &< 4/'F|)۷>UÛ>Guлi{d0xr1E77D1>l}@[ ;Q6mtW:oz= po\vc-G){ JĒ>ƋH Cs^2ݽ)7[޹UZGs[[es~=|7@c>Q=S~s|z> }zoޯ0a(h_OF @ESk~K_O:;}UOgSՏׁvkqeeh;lٳh  g3߲oi/)N5Kr8m@ujqZ}~DcH|Ўm]f+ [WDt`Lv/ArajQd4Vͯq6u+C pNHȽDzUf^AuY7,փa i&h!#2^Ԝw F)Fuhn&ߙj BoM^ʩ%r`)r<(C+0ހo!舂iv &;7.:ʧtCöȂ~`\u5p0I+q֣dINGuĀ7sa{u޳k{/L }h;{Nhè {Cr; D1j諧a؂NG>Fm>\G7oNZD^KS0L"7CU I-I)uw쬏ї,KzL űDu{ApN~|(u >M}#!nASx=4'6g_nFvꠖbUA!!hg%Tvۤ&Im WnC!(% $ $pɸK!;NLib'~n\Go+M]6.t]l용=#mo+N,/I@XQ?R"fХ߬Zÿa4AL\4dkݑZYXtG5o} ֺ+ϸHUY}ƒmMܽʻ+w7נ@+yF~yjF-?'ͨnn'2\>7^Z-5l[m2r(/0=[&cqjtun;1Tu\ΙC Y7S?LƸq!si4"b U]"2Su׫6O+X]>θ"e !g\auG<8v Ƣo;xu;6!oK kUgGý߫Hҭiz@RBj5Џd$ևf+)FF8Wo~岫ŗoQ^д(qF:8CݱxC@/QiCޣD^UAE|+CKpVWSQEV,\onWuz8EW3oES确cbL(`s)i$s$5lÁӻ=N"DLjeUBxUASЈ. ۾>wI:!H8!$McQ}37oyu)#B60aNc`/1*!ÔLL;Ƕ[/RXznQ\a[7:ƥ6VTAM42g'<J¸#)$;Hw^>J,vdh@֜6WoN# p\\ǫ|^[׻tϒ-w诋s p2>px h, RRR|~Ђ.;8;B\߇oS&ŢEUXlYcu#w*{!O&[I(o9kG# .?}:Oq~$Tοg#ië J/g˔&.~'My=‡XfqA6FHHe~alz:k캡t/53x.g~kL6cዻJFKFpG&' W=e ^7csL7x21ukl?Î'WI8{F3 .fhIXuRfob \u \dHE0 W% >.d2媅j_>xՀ —\cktuY2Px((:]EsQLEQ@#l/2QnUA)]n"ʀN#kΗFRFqI f"зo"QKkg:'uu`bu} J(R>Q CS8qw@A]թ\G9$h:SZHg*0I9`=^{ox9j=?NDhg]vT}A~(q{T? upWsyY̯uWO$ȷءa9@sa}hXGNP,3#&q5[gsj}h2Hrvطm::77MQWK^ ʷ^q gՃ1wK|WpΈ%za}7-f{0kq__b+V/wtƗD[c!õ0TRB %502F)JtOӎ]'~P)vb%~ӗv auU}Bpp>+ )u8(H;:4<s !l}NZ P`°Vw(ƿS-k{W.[y5Z/`_FubN.{ŀGׇM)}{'JPW"/w>߲p"ːwO|U8:\ۋ'גmiz|7.. 3INL2``J>@RF22 p=hEugG3 -wb0! i8B{+p(Q5 P|?u.1t^F 6&$R) f褏|uxqa`]]tssBN S?,/G9,X,Jb]yYjC >V^Go@ G GcQouS!=FQceTRBDp1{֮889 1纸< /9UT돗pۨO@(uco3n4㷓 e_?0pu]ھO/}= F$Ay\cݨGڣ{ ;r7"N}OQDks8Yh~9mFϯ".4R{pi-B2M:ABA p"'>Ŧ]$]} Ho9}NA˼gppsc޳nME|)ٞQ8C=9;pŽlb$^ H#=߅aWL2 CǀsDX tz0:!Wi}h:$ j^Jol#yF]ֲXtYkb79MD F>AODdC.mnXuws ڡrz;ˉu_a-XZ}ޟF67}Ls7mՒ_-a.9ܲU8/t_A 4@0yXl_4"vקGBʸ>~}2^qӋ y8A@;}0Fr91d^h>"e#^y82lcwPnvnَ1cQ l:0[!Z4y՞5KzMPzhBؽH OE+fAp5k,c#! )M<-,C#\"â2&bdHf 4U!Bd[Ws8*Obr'`WdžYA UTP-4ZjTNe-F3(8?TFȮ#Vx e ߿\-t@{DuOYwz9+$KlRc]5@ @" r ?%!s  ,.p(y;xvCLū]}!BRaw5YjC;*<a^!bpTf2SPVoN%a*\07 W/ CII %D9 ſ0D'8 n+˅x,]g6Z8AU'D"d5iMOӎ>8_N[ll8pn,,~.t|iNL'ODz=`KI@E8?uԂ3\O=%QYmO7.t2O ;8= >28fm@`TҫkݙTդ&}#o EEr=RWMz_SjDrweTo<̽@ԉ݃\ b&ˡgxDo/[*k 0XYHR$y{)l *04.+ӶN/j:!-iG'݅mpFWam~$[x e+A֓Q&K[1pƻBMc[ҴsG:wȍJxGe1c++sZU4>U/'{r `"ţ/ˍ5Վ]^7$w}6uO?T|hs%7ܟ岇O%JtqukMqԏөTGsF]&<'#٫Nӥ a5;>#>؁i|{B@HCի|WG['ʌ {6pFF}~KWIPՔXd#gF)@Ȁ 9ыzð~?2b?S\f9$={(⟎0OSC!Z'̟>FGȉfcrd;qn!mRpR>sIpaRAzWiagRYfČQ:sߦC;7RMxA–´ʙCLC̬k&eT^UG(z,I=Ij+cڧGos@P nħ#$^c fz甶8B 6< TrJDs^@vDdibF|j:A< =kz%!vofw@t!9!v0UxߥG^ߟtW20WVW&v3CљY(и D8T!qĜˈVQ6V `&pvbz&w[n\!R!Ї1% y,#ڜR5J0*cQFDx#3\PE#[{e˔nٓ r;x4LXݠ_^wRf䁣$Hp?%oWoy#$ap38K;p_%PrP*g@A$1? qӧ>U8/L/9>51èM@>^eI.e/|yO_uW41K d\lQRs|6[r>smo S e-*֟F2KhOft4й|_A̺r8Q6wyJ{'ٲC.1ëD@qԴ+hAXǵ'ĉbAwB[Ӵop~ԩU@gA]>xLf#M2l3p2io"T @= $<>yu+FIb ,M DK%z䥁7rR\%{?ϓo۶ڸѯ"O#<DQ1Hm* /6:e "x리s1W81tHWvJd~'Bo|ըCŭ&NAFad}Wyo[e-Dcq46{,hN5E$w(Zv4(gi}QIr3FC@l"N/5*cϩ@O%b87yA!Z=`Y*0{(<67o%qXϮGf4[SfC=jDVM ֠!G-&(ٙ0v -$Y=0`ApZ0]͋`ǟ/A \}DrmMNJJ|Jµ4f(} j"J1 9ߎuE #&yaT}~BR@\ -JJ+,(l+m~u9]k{ɫb߷?'v'>#>D6~X3.1n^߇%xw#U]S掸0ZbGau^p#ҕ"$]vY#֧hR3pBΞ A{gPQ`*}S{UNxV@\D`>}1Sڋ὚$9c 8U#`⏃3ZUD&@dGg ˽C?oiH'O9+繗J%^]ۺd@Pƪ`<9eC(:B,:5V1&>p襜? {6ٳ2B'x,tZHE:Uܴ>;˶ k'RV-e[5eoà y6/]>B*uC_2¾bs" @` Vmݐ:s(&Nn{+L <[YV2yIgZ@{1 P!$ą=qN\β֋/O*M_TF)G)T$kqªt*c8%f!Js?rm{e5Ug7QrYtW$"H6@Dg~.dcfnꯈ1tPkr=yY4U??H#V쓽$3+elǖ}M+ogtCiM#w7ADۺ_y*h䎱A^0&f^{~N]GDX& \GtF\0;u-FDAwACؼlPYA:=> k>$-~; ,ʪa8uϙIsv։MzҮ=w/^^ts;vuF/9DŽɎf :[{üwynPIwKK"&;͛! 9Mݯ98lӗBԝ%_N>I؝-c^l =8N7"[Yy-]j̲jGy9Zj7,7ug9w%luv0׭B'y7sᦦ :H碄ndWn#lse?1}SIЋdY/(]l8ȦʪP gpfC-"8a:b$!:^%G5=lOGR$K'WM1SS. Wq@{~JhemA1}CbKܯSne~ظVj.2`@|=:10\1/n*qg(Z 9ͅ~k瓷Ƿ t5P~F=YRqKhjg P;u[-Gܓ$̈́Ϟver~8,ez&1C|sf,!dؐɓ'v2>b&^C?=3?q/aA, S`'`Ṝ&ύs'*v)(CGr<'5f<Ӥ;%}3h`b4v-(IRhCӸ$x)ʆ"7WcolabⓃA.(K.Cs v*l5TA=J]*>Y|;@xϘ,N~_][9`/ju`c62/oLW/C2sA+.5IgJ-$Z$ʚ}!n=+t.9w E r q@b]d*4; ΥUs CctA -~&퍧Ng:, LN 3cQW."2Ϛ1k?#w}2${|:r*+ȢD9-> %AvHK_%՘ e{Q?LJ|{uHˢfʺ:}M{z#6(%{CGιK|Pշlxf%Z+h+]u'd+ZuP$tE(eP\I;G% s⦆fL~/!/Oi>%Ý ^ /v}EIesW^/ J%wWpBOwÈ'qR%r#r/C\}!'Bl,257?.W(||ML!G\;!H;jBE]EC >@xKyÎoZJ>fϚ]CL52߯:W~·KkrY#s>E;"%0B:!?ґp?ٙ>ct:HY$0N}7qؼ ^ḡG%y \SRtïE{)$#1tD  >G}ȣ ^(-{GjS\CFn0=pz ;Ϛ*)r?#tC]Jqr} Xұ&JLЪ;6ϠԆ!G{nj|2tuc/,4=@+$8M6.D8k("j*Kz|ܝوک pPqY `PCa!s|`/6DU ]go!x6佽f7 lE]0^CdpfRw e`ލo$zZ|^VbnZk3~~H){Ya8t<&$?_زf;?'"ILR¯ǕcDxަsهnO)U^XZqeDw8V jOY /bIFud_GW݌fҖ|hU\^H1b^BX>7r7%]μRoX_aWs[ND A:o.M.iY9{=8gntg kmvˋj~yd ۫':MG@lp'# Yu~p] lQ\i'-HWg&I# [ms*…w*@( Kpo |Hr9Q/F(+eXAC'#?,0g^ 6=Xe6TBEĖ>b$SsaA ڪd ӈG8i(YuZ/PӎUcv> 7ή} Ҁl4]|Wkpk~EEӴ_Uloi)Сg)ܶL'(c%tum VYjI]1Ũ/fT|.M&R~ >+\ ]"iF;2snȘ?`t4d(PH%j}͠ck!uKŁ AgJŎy,#̸@a*R'ϗa)i+F6>k^! ?Y(d i/qb'9ςT:莗N8=zTu>H|og6PC+fF?rH26?=C㦯UoGEκ9}1aYFD&4=m_6>XX/n.s_ :KXQ]Sk~U7 FXcgQK:~Z5,Џoz'm4_8 =^{Q$iL7Q|żg9[m%BTwxx1,ޱ-z,{>rFz/ G^7%7(vP7+]kY)q0%Kұ5RAw_muƙ۶|?nr~[8qXZRߝfoSiϭ GtONb7EH\RG _zCb'MATNp'MiFrsȸnkUzl"V tw~b.?J/աdqmxZܡj8~F\"7 t&Vȷ.WRzaq @+@Ue܇ψL}kv`o>:d=w!Mn/Qg!Axx{􅞓e,y&#g^V$OnT1wb& H:wsSW*|%ScY[Y#G%#RW?@sU`Vf׭ PF,:0ܠiR=s-VWf԰4)jnq_?9Ci@8ౌ92aHwWݱ|Az@3W[>ڥv-nDubD%F]HyuXU}M@@É%9QI7Rv1p"O ,鼅7N[zT𾢣FוH |HA|Kllهj,2OÜa[̼ bn.c_wVCRO) 1y$t>f[Pr UUVa^7?|Ք 9{==j1]~g R*/cq{L~beTuݏhHR,?'epڹO(5 s nj;T1|;(8e|Cu+,wfx/2%hЗQXa^0o0| Z(8rTFAmLxٳǢxA+?-lT 5vdıes:#"7pƮ*c fwedze*ʪHpƻܴ<-`ucTY"9  55S#*qҩV1Rz5*ʹ;e-+:- ^S>֐8dzG/#4C).=o7s,Ybme—-'&S9ԎԻ&Rb\bOYџG8ʮX_WuZ}S\mßZg?tI]ѿf7kjZCq84 WLl_W Iޭj } {T_t$g/pZn6gf!bG#} ~OeASZ"/C|@{ڐBdFv.iaWG ޣh4061RFbK6(qD( )1YF)!J?Q1?\].!LJ݇}cU>RNjxAa?Ħ DAd B):ӭYB"XR4|@~@_$!q8nr;>Ѝ}?0+d@@OџIC(V0p'|( ~#Ve-OL`nE9z!,U-iuMc81P(Ve @+zup'aނHb3'@ﶒX vrANM~ {˟u4$ޣus1Ng1hp.(zR2`ܻ\Enqhrdu&]oZ(({ٝ6[3C1x0F&S/Yzmf׶LvC3]lᬆ#i톓&>  ҳ bV2@fs܍7lGq訳%I04#S&v_==CP2U2by${šl ";sP.$I59' Ƿo/LصsߜE^t>"Ab@P r!K,;%O\L6rܼn &5d Svx^v۠#-ǖ7H)7Xmo~0|Wp_s(=+q`:Y%rʍc*S|E5s0-/ƿCl]5^y\\(ȣ=ct8װL (pnNCs4˯8rX&E˓ ]Ů{ OBO\Shn w&i]O+^2r3.s p!Ɲ?d+2DJxrF KA03_?]yZ҈cDy("? 5_AјˑΡ]h:X dW7Ed ۴vפk6 1]ʄڛ眅ju+krD_;^ۓ1ZTNwFP/d5_Ň2fe82MI, ftȰI`P#D؈ j`iFmKS"Q&B )͔`ddhP٧Z19ԇNJ#_KS|SOj۟INCgp_| ox({C'L֒<;6|3$BB0+@5a7JZ*\'Uw({ۥ@KN[Ɨ, -6~SCh4Mkoѝ踑b9a ~jXD^9]7ތaGR[#VS|wbҀA@@1;xu(qXBsrZR#qyվU`0 )/ĹPµ)%n8n<<*&-8<DWbRb̐M$J(+QWsMzΤf$-BRe (@бN" \; G{U9;" U!3E2V{ެ#@l%TT4}z9g53%h MBk`,KpIݮ^~y!YEßf 1~C6\S3"7&i96.~T 6ϴsm2HoS8r0}7ۯ> ݗG CX^͗aų=2w 2ʬ?)MHJA @"w4Z(o^0oc"/ NְqjGBE/HIU/8>Η8]G糙ڝ^/Ax7_lxQ F_q NE %jhHa=@I9>kB"P,+u((c6/иԯ"b@GN>BUba{48ERc}LY."}=gu{ ԱxsA筰7 կd7R$lҘ^V7e tؘ]PG(X"ū&aJVb,^9cH3r Kk[Tj}џ IA5QVZ3|l!?#GIu+ti+kz_G4ͱ]`*m$QʲiSiXw謮$6q%&g3 D :ѕQ'ce@ZL8]}bH-ꀵatccps(]?¬ iM}0xT[25R'd_8%9Tpm1_R(Z,B}\HK8JN H C{4gl[@p%g΃9='aʲ,H Ɠ)I Geet;s$fm!N ԭ:W4!>JмU]Nީ0Z1?R֞|>5 h7'1Kr3(DWcQ!­O20zԟAW P {<ћ? WrӾ8Ty\&IdhY5\gu`-vT:1sf.Q'#=qۓ#’AdYu\r)?l9ƒ́mά{":p^A_rcμ]ܼ2UլpaB+/VO"dAG\h"#:%I $Y_3D_1hr]Z]p9m} @=!y"nύke `}~jx3;<9!6]=y]gDP*b=^ LnkTt0=?5]b00袷Oč<s:~w`21 tﶀ{KhV(Q."=Un0 $\rZv?8k\i=+ qeuUYpIr 0[=bhiыa>ʼn{sG5jޮoO'͞J#6Ĕ@{. BK~!HU KWwƹtr:z<%yhjη\EiVK^'" "e}Ǫ؏ t2oQFQ{fV}DX%ZlfhN斧tluׄR8TwrǾJf=κ<ՏomɍKpX)f +pq6]zfj#&*?%ۡurn !ާ<fHK٧ %B{WƎ+o\eEΏOd82\"S>"`"$CPzJ)EmäU5vs<^6/W>Q,(80E9- ^8Mtzo!"OEA`EB+ap WTxn#jڄs:N/$;ky\ yMzh~|}:S8WgA{E!)Pqs-WNj̏)S'ufDO dB8Ux-y~䃓I:Y7!?w fpŽR#O\8HJȭ8 Pȸ9*PJX$2NRTi$pd@9Yؽq Xuz]c0OW@F[gN fyiw^g_X`ñXᓋh 26CTpI&|a* ZpWE !ֆƑIcrBy'_Gs4<8V ϫ8|U.K !Av@+`tSUle˞]]FNFꡐk('+xY >5)s܏j*l,.z@vDC+K6* ݦ33ԯ+U |lB pyD.hmp&8X" / 5Haz-KNCd8$s\R6'3%[Z|T~P㷃x^P:<̷0@@lVng^} v^}?.P距X^!d/ADbv1{]qt N?iyj3mC9>~{lK޶" W71Xj}mj_Z\ju*{!P,`K֚WyUԻ#l-5,#;07&][ضª k`_K+Psw#=R ~WD}+KSuYcDcw;.26s^۽D ,>N0#ϋF !8.du3ނK|]{ :dcJ͆'L) ٲ $lTʃpSKAg <|.*Nunb=NV9<# /H1"2׏D`-?݈HOdAH.- ܿ7=XDCYz̦)=cApskPExV&TxxOf,.yv{!K-y9;?m0t8 S5R'l巵`~%BFd'(S>fjJ^C0mo(߈v\vu* 8@5𨥉@ߥ6z(p~ZRL><6Ul!J4%PTU͟rh e!yC7pɁA~G+;R62ht2|g.-Us/,"7~ox/ʭ&0;tBGV1X38s2\?y3v/8>63+}?Bfsӏ TڗӭGqY9z> y[sT>ә^?/|8Dx^93E?R\6o ՖZmk`tM>ـ7oO:qhXhp.uU0>ٍfPA=E߲Vd3yLC !?N(nؐF|[y`=+b:壹,ܽ͸qqx$7f 8^a;mI^{dO9{:F (7ICcs??ceZxT! =`~_o! IE -]$oa20EԜ bk7dqk2t8k֑>uۗG^򫪫烳YAIy7yfqO >Pxg6FN^B0 9v =lRG[zcO-K3X9Yd~IȨb-c;%e~/ZbY؜kIuڬr`_4R3((er&0@$A@E9t5 (!s;SvQ0@gwfhA~,&O6?ܡҤqܫ"awu4i&Uz~y$HHuB:az9|#xO%BH.8(yUa\Iu_Iy1Q9H#2wne9D 36O[׃g56rˋW%2z dR sè=lbiRd$tf?L?TA﹐GV%L f,Ēݪx_݀S_6篛LIi$,/Ӻ)zH g7'9D ?7'`eK(2+Up@IYK eDGfUFB(Hr?DO2I>"yLY'2'ϥKcv2A+BIMM\(S.f}e=\#F˔ CA2DQ" KĻ6? ,]엕3{~tPü$X) ]zHDO BJ6_6@pjhAe@xk>vxx#Q4!D73JJVTΑme#|H%1QiwG7=֯$?"݊ 惦 5+a1{W2d~|ϝp; /O$z~6V?L8}NL$G݄7:I RI U8m5Ve~=q-#+ϻq+7UMr?.yXlF>UFP>}FOV_ YA jN= aVQyhyvI}[:'GkM;% Kȓ]px.QS~-S`h8 d}uڷJ2ql oij5C:f/{{0S|c`6Os\J)9uK_|?eI=S s0,ŋ5qoAp\Mq Μf :yD@m?,鰞稃D-foo!mn!vKã2ה_FӫJJWWgc:LB1^cW_vTTw^'p&|ݽ@#8REĆ bX2:0j(Cv:GQwN(%6'tsF"'WLUxO,+gE%{6lB9~%Z*Ffb$>! _cJ5g 2gq9EL/h%ʊI"E[h+wKd_^r}׫!h';և3Ů;{ 2Ur lJoF%Y8nzvWg;vT Bs=n\!;={HYpiº~@㑡ӝ#5:X/V"(ǯRM(PjqQ)Z51(WJj%& ,-5-쯃)2cā kxUsћ6XRtHjsՍ_]t 0є 8N]Հ|~l݆^?J{W,ƯOg&@D &l dHF$䄫qB߫]\fϼWߗ={z4"es/4QƩ,`-hgn֭s[ QzuBLT(xysQލSeixnw)SgnΏsA#)'M3D! Jf$9C R7zR7Gl-sJJn85>#ծLEVMև[`ISɏd5EQe{'H#{n(elfE }ȇa~@BȀ=kJLD`$?@LkYgnq}|J,ߊ{w Μ.;:u92^e S`I]XDy|T:*4b猉'mOtrfτ1b&g}rc3X/:9[<Q!C ;İx1JrT+5vRPS( 90irt"ֳJwGa7AU_iɯg]3^UWdi]׌8w|P&TW#M? ~pvPXN2 22.G<(&,4wUDxz]Rvh?V8Ф(p,+D)cVI]=V\G FDsRj,^;u΂SBl>*r"^WYA}֢\U+Fkmt_*bILtUbR(>P2*4NÃ桠SU.}\4$SWh▒9$ょ Njr2S)r>,I˦*n;%E/?NAe O_bA#g_"9ح+NaZpe2}҃icg_qsO1M11HnkZ8@$B Xm[х@EJ{H-U2 &E"#)C296pPOĭ,/ Ù@c@7XR. Tt'2;3l"'΀Ӱ48yW<xu8?{_q&c\b&S\< 8b_!q.UD t{|>]e-=D'(@|C轥B;|;3%_8,d/lr{h@) 1)0PK4FrYӢdGTsfj5'>fnkƃ 1+aA!_S@B.H֠hQ@KBƞ75聲7FLj "8u=> DƝ{d$vB(⮅7 Csߚ2V ܱ^G|^ćWw6hL)+Q 9f!|m)g {Eh7u<lżoh(wq_.pRu^ Can(38 .{7zH7b8$EƼRAXAhx 4b!*0,RϚy~<|K~5ƈ'14 \3/k|;yƱgl`<"?ǚ 1Kq0w<7 veԉ5[s !"R}@8J8.Sٽӈ.+z:ΜPMLw,u\@Rd,9Oc1걊N ugtznl/j9Acnƃ "9IY'}/pulC~{v`x?]hyzX^! )А3 ] /w߈sw Si/8mv4kAުis ׸TG\?2`J%:D C[^ r I]֞ҮB (.XOvC K(V#Yvk" kV<ЭQN, Du&%H 7\C~<^i`af=E> ]%) I $4*5\*\𥣍Ҟ ~,j<:BHbfz hVЁÈhH֩^iKE #}(hX JE"茿O5cNgt%.< ~yesqu$UlyS^59'U"cp\w{\'O)G"HPb1+ץTtWw,뮓[s+qb{ܝΧ}s Ka&>QNE!*Cq}'AmP/8)n6,G댜UoWPz֬B` 8@,@";-CvYLivn#(s>K'.ӻזzk7qk \ܼ\ 7!բC[Eк}Zy6=jZ*rS*nVoxBj zbbt3zƪ\G*eNxEo6 \:gUu4~ri7@j]SN\ e5ZYZN\pdQDp}p}>܅ֈ\V2} xp\g)^ Z:Ɔ@ބz̃gasd'3O'Ǧ?ыr3+Kelu{ScƹyL!<1*WA׾Mޤ^P>484Wƫp"'hYa 8Ueߜa!q8/ 4.[ǶKx*O0ɳъ׎'=xr8kl<ߚ q1Uyw6x!y-@3U5>1q8uTZ>|ze:|u;ƄlafJ{Fu%4uZ<:NukKC$ ɳHvV֓?ydxil0lƣZIlsЍ ZCi YKp8#a9T_m ޥ.<$+@܊CQn.H]]uNcCdBe)"!/Ɩ28:13\Q*CI3uעb5Km,0u-lsO|>< Ń3ؐ%ߜlz)<FjHq9PGNdSWVY$ #XS/#*+WQ5P&y;`ާqs],"fDV7m@֏|:ҌW:27y)U Ϳ ʾU8y6ΌXp⸷}fx>=KX9/o|msSq8B??N1"]EmJlɢ}''sin0mG5p_Ij$߾y .denL}ĝb_nqp C>5ׇ8RZ yq+Ԗ#L`n5&+LAtZbC$l\ Eʼnz9D\9KYJai?tꧤ~iWn?\-`\N'V#3 z/;Ό8Tj hMN@0L4 @ͬ2uhƌ#ZԵ6: q!WZKc^br33f yY!! @ n`cjYH1ͳ2'⩦= ޝ^/{OzmS gp@WIrUr;ZzvL޵61N"_aWb < {<8Yi_Q>7YBG氾vREj^Ur!fW:!Uw{N*C>ojHglɩ\Z.+'9ʪGK~OɯWZ`yJWj;t&N+"[ߵ+Ί$/ WC_MK#Ԛj|49e~J!1nhL/YEF<Ԋ>xpg{rD_ AKĜ/d4?ǘZ0xQ;×0$iWJ|SY~܂Hڜ۲'ʫ>Z>)~}Q%w9k @DȜ!ekaۂw!ؠD"_5[RKp,kYC +y&Y0 !tU/+U/{?_$p={r dFb v߫ uթ H2=QIy93s!;>Brvl/cu6e'b8 u¹P_Xߑ3D<",O醁Ցe>z1Pٴe4u W3@V3.R}xhښ<i!$T(GGe9@ïh&RN;EH8AN'wz:{*pk?33J 53}33yZ\<8fj{` +>1Y!H^ؐsWr(ĉ}eg5xPJ>Vi7#/R/UcV}^6]ÊCy( #F ȉo|ƌ0J7*T> ykWԿ2CDHfwr? kqF* ;zUQjw$V1" )!: jNg1K+Yy|hhet&*d+/pcN}*9*L'.,lS/ROA:X/ʔbF(i57B&4/8?bn9n~:F*F8,'ܳBgr$_6hbIrqPNa( YCX(0$F2"Pߥ+s8!eu͙:VӶV; vtxl"ύc Fw8 *{#Le~79|aX-IIn->|l z8D6O_}IʉzfkUWE% VkV=j@緔; Fmռ~|1lf"=rH;ԭq+e" VhAr.b)tKz`%7XVjoBs[4'78H)nCft1Oɮ<^׍ w+Sl[J >Jx900#ThY\݌X:}MӜR%.p$"A:*H&(vh0x~C\No`Ȼ>q.}|E{q< Xc&Ձ orؼyS]׋`$~mkkߪ+"Ӏͼq88;ys/ P.6ۘe - q%N{wQʹ n( l ˜;zzlQvL?|$.oJ9C\NN>4Yux֣1-ȷˡ :َw㊥W>!ȩ=pjRѮ5uK{Zz[S..{IF0MݟOI J0Gn[6]գhSGd~r4Z-rCh7샪nZKjJx`4MgQBV2e(^FgYݮʁ*^q>^sT"]aKl\9Y؍WaI'? nupJB?Bа1I%L4x$wje\.ײq&Kvnw1gnysQMr; 3R?wwMU\A8XKI6'pK01UҘwfsX1~R1$jEN>#$51'j_CWy/uy#Oaa16yB4Sk%F5Xc@_ Jx1~>jtu1j1xż#^[Ǽv7z[*n'YsF@4 T-v*,O R,YUS jU- Agk=|P9H!uvVmh3lp>ŇD4|G UA26yPUl&<V/坐 Zji>  SϮ ]ϏT^9AT_ZVFrrOLw[sY>#򬵚<$L˔mOt7~]T6;cUƁWQb# xp"^2c^ſ˹ R+IĊCZ~9Zzj/=kύ3|Fv闢|Zi}/]^As+~#$o폂%_@?V&:>ml#hY?O#EVf8t+J Hq GLw ]MxpHo!@t|\s9&ӿ: ֫TN.5URܓ rԻg,4Cpz#~fq> n\OEM9"m #θ?e1[dʟ̀ywU]`/ga6&$!3:C8?P1B X;P1Rۘy_]N~W`}:ߟaCA?a^)$ @$=xGZy ~؏E~K7E4GY܍iZE|,@xV+0QB8T,a _~>5aTۍ<v7 zǁGkw3@LXN+:`=m,#!ud1 ή #CTzqxrz,m%_)H6-ng>w+#\,ET#ei Tp!NdTϠ7RސΌJȵʺ3czttF Y>b_s\!$GCWl_ֿ4Y8O;D=!db0``=F:>x:Zy%ߎQX8^z W#).Ԏ*.p}CkvO\sڪb naXX({~+ @,@TvF_3{vCXă$>4d(QF )G^WV]toN`:ouw]o`\ه[ òM%N=j:WdnC! Vqbjt%IT"c}GjP̓LOZ\X ":A7;T XG/Z(kUiS2(^9p7K\Lo}6@a|7מ0Z}2Ģ´3 9zp¦"kz:f_&xe_ (U ?Lm( @OkTȢy#?u%0UCVU2QAU@qd<촻l) rq#&\}}66`7ą3 BKq<'$R$Hr)>_10rCtyӮg_S^ ʼovk@2G?Sj?r[zemLkj2PAP7[/yW 5_/#fS-q{z^a]X2 KlWo1)(?`#9;<Eťk&.3$6W%ttPb&C}^8Q ?xR<1E,۫ϟ;rkkjF!0-U՝dom?fHX3[? ib[Q㫆}H Hs:Y ~=C{?B@ xrm:MiKyHkTT}!5 fa ?>a{(|n^L$hwp"26UA1To={m;N!Ypَ֠trI* Րf1o`Dބ/:?3J)Dwy~gnZW jv8g῵\AwZIwgSh-S- !dcX?. Г&i5`T+&""9Y&8~5-IQ-lyo`ad: YvCCᖅmVj's嵒`x_O(_Ĕ]az."lO.UfAԓvYY32%k`T]<%T#_ӱP^ARu3p?QS3P Fgq]2bv7tXNݡL1ۧtMߗ9Hn/ > qFӋ<<~0(9 >/H ueƸ:\@o֝V o0*gJ ]?2Csu'@d9!pR_}P@i\MB}_~Տ_wGC`$GҟA 67GAF)oZϥ2A\/sH_wnw{t6Qm,6?o"?-%S|"%-g7Yg-SǾds8$. x=72h#U-_V0'F.L!6qgR]2hŖ3iZa3%j|c҃yu p..V"pb1!I駟{?@v+p30Ü\+9SD.|ߡÛs7F 5'q>jo!<9zRəM 9{!6⎥@qt*|K\kE:BעHq~61mпX)CF#ŧ:NSRsv] xD/SlFΣ|6 ] ~K\j>Vtt^L;|RvuĞͫD<\[:=$jmv=Qc{3tC-u7eo>!רlxo)j #V/e*O`3t ',#qڢz>oksfnq~m!)i34 ?*J7I*Vx9JQ6oV+8N\C7 x5}t&T C,5+UNâ0na\me09$7>en(TJAF ω`Nj cB1 EyI| ?U0 _o :?A> ˬ7~Njʛ]|/Wg $jo|9`sWU";Vs*1aʹ[WMKW7k}X ?էZ sكR*?1 H