summaryrefslogtreecommitdiff
path: root/fs/gfs2/bmap.h
blob: 6b18fb323f0a1a325915a0552df8aa7a1c84a4b7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
/*
 * Copyright (C) Sistina Software, Inc.  1997-2003 All rights reserved.
 * Copyright (C) 2004-2006 Red Hat, Inc.  All rights reserved.
 *
 * This copyrighted material is made available to anyone wishing to use,
 * modify, copy, or redistribute it subject to the terms and conditions
 * of the GNU General Public License version 2.
 */

#ifndef __BMAP_DOT_H__
#define __BMAP_DOT_H__

#include <linux/iomap.h>

#include "inode.h"

struct inode;
struct gfs2_inode;
struct page;


/**
 * gfs2_write_calc_reserv - calculate number of blocks needed to write to a file
 * @ip: the file
 * @len: the number of bytes to be written to the file
 * @data_blocks: returns the number of data blocks required
 * @ind_blocks: returns the number of indirect blocks required
 *
 */

static inline void gfs2_write_calc_reserv(const struct gfs2_inode *ip,
					  unsigned int len,
					  unsigned int *data_blocks,
					  unsigned int *ind_blocks)
{
	const struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode);
	unsigned int tmp;

	BUG_ON(gfs2_is_dir(ip));
	*data_blocks = (len >> sdp->sd_sb.sb_bsize_shift) + 3;
	*ind_blocks = 3 * (sdp->sd_max_height - 1);

	for (tmp = *data_blocks; tmp > sdp->sd_diptrs;) {
		tmp = DIV_ROUND_UP(tmp, sdp->sd_inptrs);
		*ind_blocks += tmp;
	}
}

extern const struct iomap_ops gfs2_iomap_ops;

extern int gfs2_unstuff_dinode(struct gfs2_inode *ip, struct page *page);
extern int gfs2_block_map(struct inode *inode, sector_t lblock,
			  struct buffer_head *bh, int create);
extern int gfs2_iomap_get_alloc(struct inode *inode, loff_t pos, loff_t length,
				struct iomap *iomap);
extern int gfs2_extent_map(struct inode *inode, u64 lblock, int *new,
			   u64 *dblock, unsigned *extlen);
extern int gfs2_setattr_size(struct inode *inode, u64 size);
extern void gfs2_trim_blocks(struct inode *inode);
extern int gfs2_truncatei_resume(struct gfs2_inode *ip);
extern int gfs2_file_dealloc(struct gfs2_inode *ip);
extern int gfs2_write_alloc_required(struct gfs2_inode *ip, u64 offset,
				     unsigned int len);
extern int gfs2_map_journal_extents(struct gfs2_sbd *sdp, struct gfs2_jdesc *jd);
extern void gfs2_free_journal_extents(struct gfs2_jdesc *jd);
extern int __gfs2_punch_hole(struct file *file, loff_t offset, loff_t length);

#endif /* __BMAP_DOT_H__ */
c cC=?0q] DQn s{Q0 4>bďNӓ`!MCJ_ea34nOPQao)H-ڷl$F͡n =ǥ]^rIu/|s:$yPF\~㭥Jj"^|7F tި=gбUvsk u7[cI,/|(GsUk;WT2f,L˪^o̯bCڿ;7E^\yml$q]X6uj<-_9[dDb}jOg"0Om~kF%wEC'폄)h5(~lǫGgHWC}+f31z!{?@DxxCTTӍ !, 1`磂G/S ՙ^}0=4-JO;:nN'FֶqkᄖH/ mÆ֟v6y4B$J^~~|` BdLZgAp4$111I`OA0-cwU-?jf"7%t-`_ؽ9z=>LoќOlYXIVسί9²ȶ~gZXV j]XtFGJ^c>dr'3զZ8C(\nŽܯh6 #V x![e5hz)kl)86N#_)؟ˮ,7G҃'Xxbы~tXv?Z+wڴTX5=n\qҰ.Q#Ny7Ưf8gv_C>L [|ЅgXxxlb#yiu߃ERUv|Osk݄H޽Up۲3* Z=G <,z7\9TnXxX%_p&_#QlD$^v[4Vo%g.6lCTK7Mz,Fh1vW^/獏{:Gc!}OçH)Q$ρ&@? X!n$`3bl!deU"*Ҙ@Lh&9MNNA|(j*J J* ) " VUvgFLs(f9 5,wi ÐhLbs$YkcSSRUKI /:B8}ctB|`tZh4ʟxl0DwuhLX7,(`>0x ?[7zÛص ijlQb/d,9LCGKeaτ&2OmηP$E98;wmY|͆ާv͇mP^ ,yFeFX>NRVzYb+eV=( K#s\cICs1I]'GŵFOGYWQF]~X[,#ZAlȼ& GLmL2uc^-M ;!Usuoc5ZL\]qbWC$iZ6ŖgkrmY]DvlJp=E<-zwߎwNPuw>*lH=rN|ZYZ^ws]\a˫u+ m].>JQq5lhLvUpORo341pI qLwgR/BBI=8:o2Tɴx֨bK9SlC p5R5[8[cTOZT!7TKp#R 緷-μd/t Ysq QL g.";/y1^t<4I9Bf7JowY+.GYCMk:{},V@b@{"s|90U}II)nM>juZ)n^mڣ~o?ޜBBVY?~6Vwwgg0.@m>N\1tu{3ߧT5R|@:{aϯϺeٵ/G۾uKQju^| 1mS]X?tInQoEv:>h JP_=: 0l;]*>k7X tYl giVq^R ;q|c kW}_-Vֱd#ۖ UejW}͡;Y~Imwg oM|U;OmC>]}ckT>+z矏|ʾ{GC֒C+{2zz7ѝY{H4*[pro9wܠxh5>j8aX9 oùxy[ϋـl;5b44#]jV5w--v:0a]/<£+}'irV%[7f0e/~d{Ɨ}>? 1V\¾2r%7 ZDe?}rv56XnSsX*Xjqל9z~L:>q_3cn!RYtp74[OĸݢOWl1ntәy (]w~wDž7}1}F9l%`%5WN|hqxYv}s^w[n7tՔs:LeU{4,'K|-ݯI?.>h ܉y;(̄O?qx) #HW/[Hˡ OHS YLd!$4`߻ukY݊k&Ewsk SZ"~UsڨHOwPjO4=g0S͕BQ!&nZqFkAqһ2"Đ(E4RQiQ 6I$dvY!U1V^7] F*5`U,j*AU(vV?̖E\QvmUUmj96c Txm tZy4.,뭌]uH<=Z?RI5^c&z|kxq:-]c2e2-06WD xs~?cT:IUÇ.[*㻌vE@x۷uW*GF9$k7I"num>52Ol: @#i 0~o]sMaf,T8eiϭd%#?3w[iL[@KJe|7 \bdJfY&HrYd0 P60U,Eh4b@ >:tgxPNz,};}w!NUB_]6@@vaAi z{sV̤PgZ}i''.Yxp[3UV|`]Lqؼ_@JBdW^幃' |a8w%QJeF%a:>|q2ϞrwL-۳S1CՈЄyrcyWWs[HUU?SW@=˭NY!E+A=x5sQGG]80Svd ĿP$ )#kolxU,;6dDc}>^t  !H CkiI-v)oݰ#.|.?OARQU{q=n1eHpLGCOl4<I6$Q.A JXe$%T۰ͺ!%h ܑ V3y→ɿ-웼_*sްQ?O|i7Y`x`\ɜB"U,Ua$54`Ӂe,N |qkTVU ׾7~|$ :Z) ^3svNM(Aa 3QeYW{%/'SYn pؾtv}#G H L׌Fc*f헢?\fnɢxlV~$_.gpc၄p׬708͛5:Ch 0 n&4c/1pIx9=ƦO)W(ب,G|'z3y7ޤO+7G_0cuZ>}n۵Y!t9.0X!mϕ@_*^:>6-hl{vNuE$D;Cs{(9ВW;.woWwr- =[?|GbFt*ڌqt|6#GgnM66uz|~ c@$s|-?[L(q{H_ *( xw rɵ/ 'ߊ99k0paLf6 ǔNA/m`P[ۯզc]͢=H!ͫRۯ}‘ԺOv|\7e𿀷FAT}wשv]>qxk@{6z#SCgRBI8Җ}]zXZ1"qC]=y7nd&Wfׇqܟ'}{ΚԓO1㚘w)$7 \}[5[H ߻GvT JDic# @{:r8. 0A~rڑj&0 &~5SSDed@\Sm3ups1P܈Nݶ( waa%݇ǝAߡOP>EaPDm%T*>&~y {'C7%$ ePzvF޶~jL.ulC,-%C^c 0` ;;ƜA }='@ɄQFڠ6]5 !T&w=1Eh^/CN-2 4I (NƱd?hၳ&fH!Zd&bPK eg4\YxGp \mH9 <&Ta] CZ!&t`i vʂ>얐TЌhK>-#yDtD-IFͷ͐)2_xh%Gqer7 @l.dGyahlXzw[9"yQШyY͂L'Oj_z˴- 1iKm& C}4#؟p*)`4<:]v1ĬagR¹kIu:=x6Vㇻv]~+gp|`@@I(#h(@_ݝ5; *Fpǽa`\ o>}XzoS7UA|5{C>o4>}~Y@k{S)諓:49bh#X?NDhAw\[)ے 0kl:@OwX$CX}q ?1 TPofkN[17w3LͶ<xtúmuiٔ< ͯW1 5ỻS4k|sY+p;|܀A>@5|ǚwP3rHSt8.0흘sFz׮vlt?;NlKllh+In!n3N >R}NTP5l%68J%3?v\p迎nښYÏ#.o;Ti [b~fd@?ADf<ܹӫI>S珴z^ Gduݖ?Y-*mҭvS5io(ٵIx{هl)[~bKRm{7 PD XAw{95A3$&qnJV bomv <7b&'eK[v3 };Ҿ0+t}(%S|>`@008BW`~.fLvf;5>xn=(r}z1{M@`* pU`#%k/k 3۶}RzV S\cAm3 AFH2^6P`{ 9;V)"{=2F6 ۦcCk/jVX_Y4i/V%3 4#(`;w!@erdĄeEMh#Kpb9$s { v2@-tAQ&=D:Xz8Ys350#oCzs9Z\R$AtCsvn6:ixd=5j\|iIC;+zN_Tulʋp1`K<kӍ},hM3ZX;^ŋ?SLd Gaï+9yo/TUE.";"k}w }i4Χ=L|{hҽ}SלPIgNϘ.m9e {6Gʔ/\EAwZEoʯO~ ǥTE-tl{͎V(#Ȼ $tzE2~:b@X OH:C`t>MRW@;}`:Ո/2ɉcP0j0/Xw6p"L7cL;f钷ub8EZ (JwmNQΐ́(IuS ݁ _+>'+\g24#t<٭|zǢ(xHB~]]N6=i&Mg!$_.28:hzG#e\a1Of@/9Of?űwƎ#*aEE5%[lw{6uacS̱Ԕwe˱nhK t݈PO$O>lU9 揭)+*,o͜ճlaWN9&G?PD/0Nq郗 lnெq(2f&[f-d#;ȩ)C1sy8av% ~Ͽ\iiB])5Q-?0On6Pk1.O;%OEq* ~nλhty#(z\_m=\nz18z*h [w]/^9nܶ0GZuNIsc~`忺t f.#GexCw) ެWs,p^KQڸBOt>~}Ô!jwЦ.?m.;^c6LI&HX,`?{*X+2y8R܂O (6ܲٝI0+oH-"9CR]TsTpCOl"FG(Ί:+iadqjA7HtXPO3_a jh%.Vb*4SQAݘ{7ErlM7}2,rUc!Jx7-V}8;` eU0B"ݽNx~Q!)r埠 t\dl^;9:j03`=ο)ezk$eSj, x]~Q^MP 04Kw1pl6.D~nl{#H]zMmD$bv/l:2zh#g "Lf=2[վmزNxmUK&6Tgz^8<n„MT%7 jmJieD !=P*B#0c+U,xH JUDihd ,MdiiZ $G }oKmk|׎bÜӂGDa_:9W=VGڏASaY'=`PAQ!4U8ciw~^ ĕj$%de G+<\9ngc@ A,lb G/g:ϛ}-܇'0Ϳ#ƷQAh9 ̫PkHuoU`HxB $<!z[PMp+~f,1K$AAB2b\lt.6l e[au_/?"; n<GK5ߗ᫛N1>ݱB6h9AÆv_/S4>6FW{ӟoE/[-@&K@<61i:a*ׯϚTI+N=(訷lPDwii*}_=V}!|yX'Jlw]q/;>x/ p;,)HpASh6k?Q2BghiӛI $#>Wܢ*=O)ibSɆmr0AM]DOjn[@vPπ=5+)3-#Sj9*t)@;[ཁ+Eֲi>N`[M4?@ !;fʇĢ ճ[) jxUh(ޅTz~1 7w|Pw3W#潢ͬ\O|zfHÆ{vE B柞Yx"vs.BA^37}Ďά뇅mi0)D @(u PXc $CVOa>P@)T6 VfN7eQ 6i+۸  >EF̀A49d~J :Gя[>VaRevNz @-'uc0h~icz [N!BLuI(#)7lS'a2#8V6`>T7ޛGR#էUT #x[KUFm& ٳmY>uO*y~G?R<(r@<Ex@2Z26:9>[bG̨auYͺn:_uB$ 1 ^?J#zN!>5 HPRΗ: 5A"}G5櫓?\{ p᳇D" .U"%|\OFv gWQj; H 9I9)'"">#@Uoγ\!( o+oî!9u۟r ѐ3w\Obۉ=@4(FW]t^ln5^u_n$%~ d=;Ezqe=Tߩ:t?ȫ[#O@aO~|G I9rg"w''8i1$R38' cft0ͱ q|ؐ A4WJBh`/h*'.Nb|:p<.#H0 hn/<BLq9l#k>z0͚ yʌ0(@˯#@P|w58d(A:۳Nh76:!L/ 9B ˳U:7i 1 SS_kdӹ[[mD/7g% ?1޺B xUR~ЊAhyEF=' N8 C^r 'DKUl7(X1U n݉#o-h+F)Zǥ87D.tBf)B{1ќ\g:NFČ: c;e,Ü؀cW=j&|i2Ts:iNxĘKQE0Iq-.\`D9mQ}7Q Y9|H< \8hLY5d˄1< (xl$26o3FNg[q%}#=%&2[<т0ҒfMN"Q|6-x&v>jט}~~ɬG'/0TH)^ MMߚ*8#.f޴WG|E]pkpg\8nϔpg5_ߞ6`PEV)fz|~=P~V}JVxv~ϗd%G vJy ^,O0"Cj/w> SE "Ͽ3i xğ ym>8A'oç}%%xCǪUtڅ4rnm.?Jҁpv 9*_S9oe+ؾ 9E!;X!L!͞)\CF51V4R1Rd6ÔLkc{tbLhD~=1 &nCC^h~}L~[M5/דWG[K4=gְ.z ڼ~ux ~P}f K;)1Sw: n$u*rV\wjKW tkez\`V㵬%ū4Wj|Qv[`"cl"0Q.uop7Gڎrxq;r}bа$fyzm=hwk+O~nAz]_y||Ư93!Uhq쿯6]߾Knw*9+ Gmtz d>"ɏ)}=:p/>tƾ;ȻIDto?靘{/K)Xcs˂rQ%e6y]7%{յbB-dJ hjPdhYּz'(8\W8)Qg{Xl eM]s% %ْ'g]&޲Å"H _|XIJR **., KMnwMn f|b>P ʞ4zZ{Ysn%"t6PyV+|w%J*~|4MϠGчc|Z!g3i7vsE &8O0bG_9,kSl]Z$3}axͨgd{{"Q6? Uó%o3Hk||lH(UUHH>=dJ,ŷ$ǗHA p8/mؗޞڄgY#4Xi?3b]P T8vq.D:g }bZa9Q~ݬxEbeRf9(/z3T.&H.g!. UC9O$!DLv.880 T/]>:tB/3i被%iT!P1"@&"f٢C z.- wSͶuzŜ[K=b8+`8Ckkv@"/Mϰ7GͿ.6I.G)%qjS%m;vᎰ3\N&qډyjD@ <2fl&'r/:xyoyM&0fr޾d}ɺB(PL[FsO'eT1T`߸ȋmpP5rbVf9D7;>l ud>hhyB6# HY:7tH&x—W}˚} ]~Zal*u @Rk]D3:]M;^㿥n(1;D ƙ?9@ ^j:A}>ꨦ(p,A@ݭ~YB.JnW۷\af-#j]@̫֨z[14^`U̎8-4>n~.]ZWkBᕢ֗)f3l9ǥsׄ=(!@bew ?y3^,c4Js) Ϙbn!=v0dC+U $tMUeG^tM\9Ac413u8R8̴zf6h%DI)i3)@ܫbdcU<|Tz=6\:v|}~WYG`?8}TQKe%1{="f2W4ƮH]3R?'>'ZX@Ƿ#<\gX\T*'sSjL$FDc3SrN7 =/sYM=Y"{WxhYpEWet 7!Y'a~g1 )}7,#5"驉#nu=csLG.G`ƞ֬K{wIoZzv̍UT"ek.R$EgX9yr1mP|}cwg+at?++0"HpG)}^L_6jځT MzNA߽HjޢQ INYwۏstgNL>!ZS#]:c1\P7}]~(1 ه$' "0~|Nh-g( ;%AQr_u|i?h>,h ˜ɥ}4@o#C`n؈lۿr,ruwbBö51Uv:1eﲰ&!tP TEZQ5:/ʷ:O'Ƽ@V@w.{_:S ;L)+#[.Ʊx) y"[L&ski {i{~LZb32E #nR!k5/R=_xz8:l3ʄ]_n-,9O52%gLW1/~t)ӥGzEwcD`lJL4/sy>ID$uٹŢYEy=[0~?b?*&/Kk= *% 7pp{7Mt@0"LN quˁ o=me\x!S֡׸3 ;qE2V15 (@|M;?l~U>V>teR a@۹ OC0{4,9)in |h8h>r:a;իs_Z6~ONfYt!2@YWʬ4B \>q T8jpX_gb((;y4`̺XeH X7CKt>!+#3,o,{\VmE_K:uDW*ÿnZܧp>H 'ђ-hP%DFڨ:\׽Y5)a{7M 篴tEhFj:-&Kz\ MxJIAS"ʞ\[ycInj|N,ɬ116۶v qfYr^]3/K7ӴĿ`i $3}ϯףsT5Y8g'nz(6+ga}ӠBP7`Nd))HSÉ*73eDІ?MD.{'.,N.ё(7mӯ>>M7<è$p` WWѵLŋВ[f]5adA•t# +Uk]I<9s|{ޏVڊ幊Q]P**.pZȋƳ ׫õ'=+u) s{}iٱ(!;l: sSZOȉ~tJu/s}tꓧKĺ}0 YOT憐 }D֏Ox(OT] nGeܬz5|Z_lӵGSsV+e+<+=>-:])+f3ƦM6fKk.-M #B,ЏNe8G65׾MnAi{Mb>iiL+0^D]l tq-\jeuYy(A,-gw[]OMJy8C7*GjA3¾Q@4tojl9/#eM|Y_Yk}HԍJx64o>@gǾSuv>`@{HV)2[gQZN%ۤyG-5qJ݃XZ[Qrbzǧs?xϊ~b3[KIFg9xsr2S80÷7`H^̏>F߂l*-} r&h(\*c GIHBqE*,Ea6檨ukdncAϲwUV?TpZ::<^h0f1/t>wR!w[ /ne[ 6GI@ul5&"E؛8uz{ID~)k<:tNAG3-6R ˭gK"9#eqNWn|A&m]DoagPAH"% y@J dqDž+d֘;a+LhʂGlkjXr̝{ow_-YG9 Q_?x~wf!7=ⷌby}*E$q G29*߰_{`Q EBSƎ}̅]Z_)XK:h z5q\x{펹gf&ѥKyQΟ]q$;2p.~9snH"!w!Is[T 9OOa ᕮ)jGqt0Pvn΋C&k(m"عrlp M_*~_&j[XRLAAz[Ѓ>kE嘆$d^w T|h2Yc( EńqӇS wD@CKG7gVgX_7$>_ks$Cy;gǺ7!Rxგ{dI1;bIv\q%J+! V72LР#`3% 5 Blv5ڬċ体;ߺsԮTMCRB/~*x[R3(i(z5sD]ÌLޡ(%/aLL (ucH4:mQ*6ЗrE< X5jUVë5JС4(~}l~㹹#}I v[P9LRZ&҉ 1-( }]6WK5_n!3);F'Onvbq0|kk3z÷|TNq%3?H6%J.vo0͟=c#(H(y3~[2xQ1)u}&!1 !8v߶ߵO/^>~?C|o}%;LR\<~@C)adֽ[8XFAfKف) GkXt.Qk(GCu0p;sJ:)"zS3_txJwGףۭ~^xP5t@qؚgF^5_\|iM';gb/?{2$Kn;tT6:וN g('qC(M ßdQ PӌԎLRU4y(Xؒ%0oW'Z@KmzCh?X$#eAu $A7eD]60-'3KDAt0 St:!:{;/O7 /L^48Dܘ <ۋ3Q>Ij_'JuG|m`Ҿ UXB E*+s9HapƮݙFMdK(v-l)g UG$@A\Ѭw0}nB"kְi|3gEL]Y 8\3ai2Lf76߷ҒNcat>v< rbuFx@uzr X T(#fJ8=$2 [>UeQے\"|A& &kq8㯢Oؽv%lLa22It Wv,CWԲC_ Ol=pDk^RP/aL!<⨎,cYIog5NPG|<,y2:XH+uAUZH5 :ox>uޯJA-]\]׾1^ďݕՏt{zWh${^yq N0k0xNij cuVy^_b%g,{)Nu~#z`YxV:Aes5Hu4&,wtzc7=HAڕ8o?Gn;7rs"_UxZ\7Dw02?ldp{r e5J>}=b}50;'sM}6hElbkI"yvqɇ5%1V.r =BB6; }1 9ˈg @ĐE>z]ŪoڡhaAvC( dw8} hsɱ=vq6{9ݎȁtК!2h'N0u|tҞOWլ$ 1JI#{X&!AU!h>ʏ (0Zrɏe"7* t6Q$ݣޣ\Tes+z/ P'zd'Qʡa(в DQH ض? [@yHhgÈ Vm}͒jXQ4r|MLU}ay9p=/^OʍnB?߳5Mw_$e];8$@Źyτ>+ ߃C }Bj(ħ0j:Oj-vЯsmҲXO/\[U93n 8eoko O]*S~bP"{7vNx/4f:R WEC۟ -0BSF15# YaIʥB>//RIJ#9Q?l(H5,,[ GB7/SEſU~3QO@*S{]Ҭb`Ź럐pK߼L=3(ݞHZlf6߇K,Oŵ@C3k= *XOb:Aa]ȆU/0^o,·4X9EB 7-7v(zf؃#PYbV͗L0o<3 f.D|AUN*Xv`["C85qx+BWEy8.r$3Gys*Ԍa W4%o0 ~RiWzaTbH Ca= h|)* /a tۤj?΃a͊b2I@J,jDG#DUCPdǛ+'zawm6 x6LnxR?b&_9P#W,qAceZI!ҁtY`uzD>uᔇ2"N (}e%+,fWNQ+ J h`]v@C +nD̀6 d-=?@UozHﱵ~}_>^uNӴ8+Vo{ÌنPv4~*̧tϩDk{ Ǟˣ6uF0pxnzj@*Q+bUǦN},:O1!:(\jb8vSi83f\wl^d95޳>&EI Or%J绒 f20x;(ׇ3gG4ؾY:cƊ360hZ鹎pO=wgv:ojf7 o\ަ$j`xO!@ǺcOHbS?m6 O:@PЏ0݅+l+K0[0j0Zj~|Mۋ]bAg,\Ag0U#aú#v?vcبeꊳkKC#=ˀp{ VDͶfp #&ꖣ3q)g&=S`,Jt>5ghk OCX|sZ}E?ߝ϶aO;&Y.rPD?/Mܾi5띰+t!O$>*њ(s6Ts 3,6XGC)p("MNr)bKxAUvp 3nS_9 :zkb3g`N!6~{2ceGDEЌ} M3f.9iM&>^9`77}u?vvxptap=IWOẏ۟ꪥdT@]D8RO~p;O۳5J,):.T_(Q>Q璶Kl,] ґ'o?)F 1rXCS*w88kQTL?7^|p}`5op(qcb53>ɚn8^f ]_" ME[?0a7^* RJX$Yڨ G?QGaS;U!Z{y. Q+"6B kIt`N\׋ n@&mP9|?DHxwr#;PoY c? p,l X+`d%$9 Pn}ks$-Ĵ ռߓ@|{+#y]u1sbCK*5ZiG26+m׸} R0{1mڀR/]V9C\4>VӿGY<0dPU'CBt*+juˣC2^JTH F_-)g?> `&ldyI$d5g@˱Ȳ_9V6X{}i0tH9!S*;#N2Û9͊vS+:yjAb.yT:E&_~Ki tO#Ɯ&tT nf(]fy{n.!gڣlaAVn\zBqa}h mMlh:ZmI1꘤H;3N3M/<(c}C~Mdп{G~Ur!!P$U MW޳ۉ>A'oQgӿĹ.&{J62uLGI auǢ3 6(xwip*iNh/!0.T0CeHơr}scW8 /Tg9) Dq& Ȍn޳^}JJ7*/ HfF[/7vjj iҬ.)qv5mkGȫAUn\RH՝hEn&׌<#8xAmE!ýw\dmi#\xbiv}L:_S\EҖDv tAԝW A%g~a.I"]yigb'8^E/~p^Ol$s_oywxt;C٣L۝Ý&l+r;iZO%һ?hf>,t?};yu*7 _#5X,7$w,xD;\-Z!LÄ|2 m1d5ٛPuT3#42Bb }vCO{ƾ luZ0ȖWO H0{f~:+(*.?v"~rwG^O80f;D}B^B Č11/N(z/W (d.D>;r& C>c[*4-qyXXcFp X<28i5b,A+f0"e3 j2W 4#f48ޖ+ fo\~fjcAXƇZ&3ݜsqb:zJ7),)@>js]Xڒ6"TNmXQRJ s ݯd?VZ8nP( `#z\~ߗAnMrrs/M Ӟ0bQݳ O>! XX<9j`&wVwi#0 ޚv̷b0GAe;i@zu؃gGQUm{w!XTu:Qk-j3#|sDC<(E ?CC"ݷ[.󙚬G `o Œbv[2ݛXoQhs*tzeOHuuA+k8*}b@i: eiPG@. Pѭ(%&Q" )(K BLUm٦tٙz8z,?% H:Պ`Q 8Ë_\}&+<@Cy 3 P?k >[<||||tܯQO?n51;|> `D 3 eY=*/?`B]Syh"*};43xl"N 5[VSVfUSZ4Tyb/ e'Wu0RT2-7Pi݃0X#sL 6+ƸʚDa{$5BEίZ=DV\OpuXTPT08ۆFgoY$~k-lA[3@%H?`Rٖ}Ih) !Qm'NݚN ?5!aa(ݶI!5 u4.䒘+}ݝO[4]%w@x M=s_l7xD'D WZt0Bsy( ?srצ|eڅCBl~^7%߲oAqNnK۾ȈLu%˞!h%e{ES]`A*Vj^= ~@{oXوo|GDlHj0훹S];:ґ=Wu3=~ "$^ @Ρ طƂ]޵8&( maos@hifFaY=!'vaR=:XټZ.4dN9?9C}4ekLܠ4_lp?ngē!vwgQ!6v̾Љl)#u+K*UC,Sgݜ̒|#cu`(CiW&iʨ&佖UǾ=ac~Y:~ TҐ~LF#I󗳭yѾ<] ;;UHٺ<hP6oUN7DURR$A)[D:_8^ZшۂOpBtP $W܉s&C o݈ ^@z0E/}C!f=EψT[VnԌJi[G=o=J,?eC X(UZYe7maa3m:F4a|'P;% 9V2 QxbGH ! 1 /U}B]OH `f˨:J%cTċZI)4 ^J ubAuDL1Y>4S|zv5:4`ɘgF \ Dryq{Sou4_Y_Giȱ Qs mDž3SFC˃$|]5shf%λbtTF0_e%IP5D Eꕼa;&oT7E$B)?չ>݌5I[d<>IeBި%h`/>k~C 1G\{ڃGE y-RtYց 2H54J{L4_bVWDAB{JTζ5' nny?Z`Xk4&f7-dN/!Q)t7LFk~agu+qW72=`QrŃ<4swön5br.gT<:I|VWL0}\y.QOpi4{q!?eq8Ž̘ꬡxfih!Q갊^SD6M,4C`pdyxCsr+~w?h+QjYY~iUT~Ky2>cWZ*j=MC[d<87WwھQ v;JlΉQ{ɠ&[VrfknYE1X._.lh"I6L(GMR!5๤4q mmIArTqx+f' ΙTدUدPlD^2cML)s y!#mє?Cs.׊C7_[E9Ǣ6%}[͸AAoܮ) }:Xib}JTDö4v0MS`=9q Xz = sXzRߒݶ'y4!W`um#`]&U?N+#m \&38 %ƪHs* `8Nq`Ϛ f40D&+ky[yI8jyu1aO.x\8#l(8rگ nکszv,n3E\mѻò`!/[1E1lȯ7UC+AȰtRGp}n- PQcKMO*X̪sw"6;u)IqiDA`uм|UGG'7ݓxᘡFv[yV.z||:f61VErl&|~W_tH C*eoo϶XWhr_ZLü3Ɯ%`|;d>GGCg;A<<pף^옣]jԀu~g0[vVvM{z5c{$vG6_b=i-qƵje7ݚ>ܺZ q7D^ł5c}=V_k\=àC?ƾjEv6({ __s3PWQ|H)9>d*7C/s:]X?i(ٰ8箷\@-D\!%`g B M[TQYo\fAC~#AF=^|O} D(%h^Qw|vubm9Xb]3(I#e7w4mi&DmYϘ Y* ^w]+,{5m6H~7qwC5|ptiyZQ (QLB8/Gv'aU8:5iCBu?z=KnɷnG6Jr 70S2HhcvH_䥯E~Y԰7BrfݙeC셚a3路]E6BHAA;ҁ|{-6IQ>i!XLӼ2fLxCZi'Fyyʫ?B':;zuHnu'?1Ñt}x}9Zd-̣Ei(up_2jdojvB.as8뵘JpD;)Ir xӘ7 Kns2M5Uo+<|Ks4؉8uwiFw;NXf \C܇Iif85NOzq%1fs| eHgiwmEƕKCqfqBxwx)~mc9+4Mq(8ȣ/jSRϭ T;IӢr M|= s$3_} o& ڈ<0)s9hyFEb-Gx(Nn& Ԅ0WIj&%qRFnIZ*I8X1h]Q&53uBOښ&xgRVSj:XGM.y3oɜ]#:]AhâHv]ߩx3Vw؂No5 +vjn]rٛ srBPx25RUAhT#qۦB˲:Ko"qs#}٬׼FluY5%5DBy}c2U4c 2~qNEi<]э68σ#IYGCca 욠vޫM0Jov uF[0=tc?,腍Fߍsy~a fN$UJ6 EoqCJ9A6blykᵾ٦.9ݎko{}%!ynDwYCPRnM yP D.atW͑㚥5|V)r%b(>;dosg/%sOb=,ny٩;j,ѝ90tgpu< }Nxr='4ѧ:GQ>)7,4$s,uv.\h؎_f;in+5ZY4JכL} 3$+ ǔa0P~8eGHow?[qؑCefZt#Rӷ/' Wik{=9ȖI%Xkir};v.9Gzy1 or]ݾ8,45sMh_&z.ڠ7pwW E b\!jq->'#ZqxϏ4 RjЙZ^rQgh-DOqĽ̽>s wA)|3Y\v uceGEFtzvEJe?FLݤ;q jnW".܆ĘtmUKe$ާd [|`[ms`XhüeDj#'N8cԂ#:c[쮟L:(0spXjS^6哶]ߤ1~noV2}o/\[@=`oڽQת&VU!A㺥ha%.mGI@>_ ,*N[E1q$™+`'#]]:Pk./vP/œ/_rJXs jI"-q/xq.*[]5F< ?<ѧ$5)wnU("T~y"fdD"M(Ytݢ.TۖKk-ծ>7|x:^Loihb</Dy(F.K$쵮ܔ+(ţ_(@e@^na:OW)k廄q/MQd28x-Ys>["8(bWM),Y{9IT%I&_9&3X{'gvE~=mw%;bu%nՊ+}4}_}$).-c7PI8/-txxsM(DGmea*Bk ۥfx 2T|qӥMTZ@NdD3AiĨ\aB46 B θz遀|rdqq.1wyv crrrz^0Ph<L(V!x;pGm&NO:\>26E_=^ :Yqe1g;|2ƶN YfQTNG!D7ʠJlw~I2H@Ȁ~q X7ۉj8T,0D+G2}8 ΢C_@ }6J / h֡CAX4 FZ[||"" ˎ(GO}yWH C|gU2elnK€gmPFnhMUj*CT9 pT<ʥ +˚ i9xT1sNdG< ˊ \-U%jjps|t g F @ #ц<Ԡu8nmd"X]4/5Ds.lE/=)9ǁ]C"_A;1< $jzYY5z;4^.~~KުYPaGOOP6Q랒BvIVn853*AHZ4h-mg ~3s!Chr9ZV)vW{D)K Ւe8.}Y 􆅼giL'|JӚF6y1xdRPڒ{xx RcTO"==,=pLip4IۦqF~j"'ěgs>Qς#}{6ze.x84AVE1$_Ca?0G ʯ(Lj"voul*gsi >^1b',i3Pc DF(9TZ(a5dґ(G7汢Ga5Ʊ5vXLLɂufkzLMJScKk޲R 1ph:s&4a$cs4nuٌiMmZ(8Ф L z8|{D|9;~_Q2yBc塙\)ewӵx90Z祣oRA J5'Ǻ3䋳ygO<1GPG*vaEEKwg[r% "UnvıެՐeCUC>y5XljLmjˠW?-Z2P풽e"yl "̈ tBw#>B8?wk:7ȷDЉ[!SDh &b]lf)qZ(m@51+-7V޹jA4mu3G.Eo@cDݣ_I=-(Ok#{#^[Ϲ-9CV>*jCQdb/ GpcadaXPˋdZls$]7t\EwӹvTKq5&*׽1~}ۇcy L8:b@EQTK* x Xo[GP),*(>2`(dzW@og%CGC6Fha Э#=hTM87Aİ=n^b&rPa_! $E9 _X7J< - wȋ91CeI;Y o88gk߽UexG!XVRJ,,K 0{ f?縛#S!K%>8뼱5VAL|YC.LS QQOױFgZ3~cmi{7#;Fw:¸rWTHwDxϩ[z:,U0ջdO'\ G rRstLpLָ4=?Ǿ$P=A q;:`x[?U3GCGɾ*a73n6~ra\j]Oc;]mΕuo(Wczux @\ Y ^ˣ,b_wđVC !I',*_qnW'mکH,E)E!ARb5)&fTM @TCHS3SCb"B9m3Z "V+TW׼?Nlh֠&͂{13t++Emm ~zDN7s`~]^ О~]?7{J a9W ѯy;m#kfBW})w[ﻜ&v،* * 8< (Fg=yOWc~~V[r_lZ\16e˻B1n/^M.RܻK„/zWb;)eyqMЭ'V$wbh!E!p(0)cH-:'! 4|3Od> \5q]߿>y faoC&pP>1pE_m./O?t?_vzI0} _g>Dq:2"JGfM@AB"Pp7 $'ѓ&S*-weϜϏwSB?:^hd{#oO:H6 (_[C? mہpUI$-",Ok^U{V?%?v(a".;سyHY2?Rc ?zHSȿ l^z0P4!R#is `(4!KBPR!`1T&+?Hr?CwJ:CJo2Qi'" :Y 2I~˿yK-:wB ?gBp!y{ ^[/)cQ=ǣ <ښ>nFqۡEV8ގW|KBckj'3 <:#c,c8xC~ }8ueju>}B'b7ÐBE@Tf)0}pρkPy0 5aK MPm { A ˒ b& Aam}դx7_}SϾpo^ab~ XuOgw z-uio`/7G)n-g:oP5G{|38-%;]yR!޳k7cЩX X7=Bc75;/ 0бoed6@~F͑cXwrZXS/'WrpQvۯ[@lҮ,pZdޛEПWQ\K.럗YhawC3حg46oRY!i\hwYb?^zQO#dW_,oGBY5@}s~>8 0"]oB?t ! zЕʽA?#' ZH匿pP oT@"Pw.Bieātv>LCw,E.U~p ։?W$r¥QTKą+p ͗F@)_{?d|6m ڊEZ?`C_hߥLzÄ9~?775곞}:N-;HcPΦZ>,1I~2&V>y ߲U_Ϟ~L$)I p]z .ki냄aN|Dt@ < ?y"5}~A|~QEA9/j`[;= 6 LO㾥||iv2ǎLLLD!) \Td|Ý(?w_].$/Gt<\a.OwWw+= >ߜl=FM/rsVmƫtpQe,8Ǘ}?ty+N;v&ރV'_L:Nk#F2Ha[tosf-{?S`vN@fUψ*G$`{ }:60}GH[*XaxǐZ ( 2@z`qR1-K_"s/`DՖW\Q >ݳUk VxvLȅÅYWgOn[9mkkѢCD}_˰<`D(QAU% &`gC oY1p&LEZh=O 9#5׼?&E7fټ :tyx7L9ACY"5`ب訔udmqa+-b͛-Agy:%s#iI1kј|.no*W9qr'-| :ܖV{uy4+']`}PQU'Z@=Voۃ@&y '~&~WU_>)QZauEXH= .xA'LvoGDT`0scD_7—^*8$QUB͕U6.ƣ٧7XMtZ@1:A5] .nܾI[6X<(x۪N|S9l9WyC0|agmXFa\gI,rbW~\Q,uku @>D*?<5uHALdNXm8=E9bcB-(Wb5qno=}Yp m"o<ѽOꋓE'4(i)-PD#*()l) ` _dp1̐DPLL*O٠  1. &(%O}Ed}2}S{?ps?8Zb}zm٣0udΝ3?݌>0 N?|0A=  A`JgWL~B Oe6E4ߺ>gCzoWAAn_@KXC -Pj5.NHTdۮQ \ `]Ӏ]M(Ƿv=l%o`46̉!n*䐃0턅D)_f,gUlwp~i3 K>} wqx˛EW+̂9"2/v$| |,Tۗw'qR]x gvOXkIN:\&SOxq h%hr<=R>&`'pY;g(@{'"yXQ\44;iA)XlK)WA`@Wi՜eK9"?w l0_%~Wb!T TkisFBCT1 C hȇ׀~֊ To 1Τ4'CIcJuUKC +a N=)`qx t}ؠƌtv̰ 0shZ23x!l÷aF9aN[VP Ă+ yWݰX7FB"b 2o Ċ= a:9" ʻ05XzgګWGC7_:fxӢ~tp‘A_G_eEXw F{O׹tĂ[}Ok~뛑-UOKB{ZA;u<1.ߓ[ߵΝXmҲWH}q˪.A"/3?KiFOeCK-l mȀϭ LB'CǮC$Dq+e{-*uSAמxg0󃜾Ca!+C"Bmd!̲Ti4wCِqǨ|*!e콮XufQNӮ]ޒIϢ< Q21]K oFT1.wu%@,+KK:#j倊2mWs(ξ2|E a[l<2l1CbGq8jd,~@Om\j#鱛&.ʈ%*RW/e~-S0l6⍬;ވ.)PZw9"_@5*:[k-ي6ŷ93EV48C$po-NzuF)>0,bݫC ~-!*TJ9d!5G1qvuvťMWpFՄO#"Jml0I=-d7܋G;;׼z;tjKjٓ;^BZ\Q"Xj'ae]d#ճ,sj (nAHqq%O0qC=^G\R VUm2uuhԝaV:Oq=P?1ZYxyثkΜ>e;}%YVa9/ M ~kSpU|]kt;4wa4MD[Rx }utc .Sp68N-z*G4K\XkWJVOVV]^0RNwy| _d~(pD/__nIٓ4!Dž!3ѓZgɣi6ll,<>VGʰsԞ*9XPy̱BOQ7P=v  (Km^C[}B\kOer;muiyc)>C wrp2ed9lz2FyYiyPMX}l!esAyօ棜y/h.fFeBm_b8`έnSЕ&4^{ Uf{AXeeҳo^ V`M)PAr Wy(31–Ahν6wN/_r_  j>~w޵rrZ B Dq otO 1Kw5îŠyL+ n9.ȸñi7m^hE`yùẅ́vz۠m2[0|?͗&b7Yu2C`{f6Xs2v\G06!L;:~Y XXZ.Ē>IPEHPm7bTY@g9|a=A"nw[c\/0 :EPf-f[y|Vyxh<+oVn kkbͱ$Lgί#Pr^D!ףxfڄ@G?y1nL ƾy2w|et @Rp0#uP 6:%E(|!ːAv39@*X)X᜽:z4ClhЧ#5Ś  H,,ʻ*h3:@r:.r|qp 0U 2I7jBx|hH%Ci #,ԶN52qNPt+"D7i5*RxA=.CV<_\OP 2~}_۳}Ú1;7Y(+UOެ8|{ȵ\Æϻ(O@7 _ù _=ɥ}.ptvD(`E´-xc'`ģp:\F@lQ?IsŪ,ג-. ^/sѥ5݀l7Sҗ;giHN\b@KP@ms򕺯{\NW!l^{.+9(~Ps}bL=uE:=n7׿jsO/=[xρ_X i 21#QW*HȐ_+r{!7zeyDuy{ҤzqrţRb;7@<: e;Tqa9+>OG~;c+ؒPuqnɍcE a`cr> <=<4%50.,7ʀQy4!n)IhfAxm5# :;r;v 0"6}.{voy2tdN|8t3Nrk1gNu,B;kO")(j_Xc;ypW7I)v۪/2ֶ˼SgwX|_u5>1'r7: e]Lr;#[z~W8xwMlǥ#tFoت;E@,q+v#b6 :C=!xF8g3ydXʬ,6u}q$-Tӆu aYN[fleVPH[s& (P "T  k^H~`Uk_ɶaY~W mPԮ` .u/m0$=@vc|npTRc HP=|SDDƨ8_\--ΰ_T;=_,/Nm"%Ȃ-McALMW0{-pz\ߦo۞Y^+$ 4@"JIE07`9\?@N;tG`sBi=H > {6~x?Pq=MpDɑ/Ӯ.6o|\L+MWDA{Vvq/\+d4Z3/NgԎf9Hkfڦ}_[!Nî'D@ 9@F(*vq2;,B|e5 2m=S  @lsa~NŗMCDKE8CCTP q@Mf :ru5{eu'tet! "1v^:Pᣊj0t29&(^oK22OnFwrg{c ='_G':Sm)3op^ɘiLoz5ڄ V$d^"ٙ}o{Ɩ7 ;8q3۠107q> GqߜpַԶu~l9X*zFz?];`Egn5f/W$cF&.X)5)@ 5 ͋ Ha)/~Ȁ42 =7Q|i/4PtPg'몋/ 3-  rlkUT.-fgy . >/ySd3AJESUDţh;!B+Cn&OhRzMe?ӽQfw> yK?r ; ))|,(iE Dl Odl˔i/bWuH-7Ktlڗdܵס{=ޱƼGly=GJ q'^k.ʐ̝)VM4[S6p"{(33?h}^RW{6>B1@1G23pca E!/[(" XP J}-Yo;Puc0gaDWI{rwo \ȟC>XBׄ |,@B%?\ZlGmPֱE燐ö,W=Z̉hW)eZx 3I2 =yBͅ&{ /_2T+@AsMJ4iyX L Kv@Dz<Ӌ"ux! 1%#Hni!`#p=3 C.`WA#R l@6 _`ӟ4~z ؙA(d$ovunngl ѦfF:y j yN&`nޚoo]ye\Y5l&༘CP>VASI %:|̢"ƎbRҮ@""4ےhT()Q&PL A dUȪPRL/u+OˁtR҉IUUUTETD\*j*WJ Td(!Rs(ST4U5@B,@@H{0@B䁁.ݘot?Fyš_.bLAK@e <  yդxYtX)xbp% eDSb@"a(A 38`mymkaq9ǪRKYL!T=_u1q6P~1s=\>@=WH\Z&W8@}-c?ƴ}ܱsk}++~CQ;LHɈ]v.ch ^3=~kq._#TZbψt.(2kJń D Ά:R~cZ3P /d-p}P/¢EEZհQ?ޛ=LvԞ#my* lcccɋ8u1*!Tw*,x (0#@$-D@h$50 ~Ǎ:{v'?JF U}6j8UDG1UʊGGb~<8=" 03JPg{VOv`;X lӨ_$*u$,vG)ׂحs[u>&]_ӕ:ϹΟ&X湭$’|w UoўO[,x|j6]]]g% ã/> /Hm-lR7z w~#6߹G;ß?;6/oG_>zJt/0P@afI nd~?U:CFI#P 8љ$ ?.;kt@J{!? qf<04M]ǍOS{B^b _Aflq 2Ԇ&< 8b'EAus߂jD6 >-ڴ9!X:F!4N:ul)AWvys@ލwkʰ7i^D˱gR( dOl=7Zn\z#&5)}z:р@;yLJKmp>J2ʝA!.s׹DŵclZ 6^Y$=+;~V|b ^gxHr k3 X0x|a׾SeG]8^}3GGf!" vvs(J1%p3BOHO* .}g#?:*Y7&//uS@4J n+#ֿoM84vEͦ#Odzast˟(OJQaFypCQtpiy͠ڹm9߇f6-Y=#`nЭ|[.2w]zVCeM¼]=K׼zJʗWWQTKx:1Otр0Td7vxsy3)_,}~W!birEb7edvz>ObEA n[n"L|F/ԵR3~B 0W읛z)yS O’ֶ>Sv#fS|]cv)T 69gMx&{薭0T@X#.5_"#\<\3뫧Beɗ[ %Ojo6[ҍl.ta2o`F1a=b~uSD=)q6H`~ß\1nc?[_KicqȘ+ǫu0@=NiËMo|2`L;xvt'}Na7$)@1- ON7&jߚ0 v@:ȸ2d%d.v,|Y 5H\⩧/Q [$EPm VJ+71#dwxY:2' =&Q YZ2-:{\m.P2|C퉵Ns3wq׸C*JCPGN`/|F(up,Œ'o`da$AӌV0hd)<&AdvF3j]t Y]61VўCF@`HNu@"@@_"gZ}^Ů7f9Xl|Yx1VR)ie?X^$`dZ5c)sy^c@30J |݇cyKiS |u.Dq0^ԞӋ έvsݥ)$PfB`ڈ9GI3Zլ5He~Z.d`?I}}V陥rzkOUߙϳVII%YC u"L %k4$Z1 a\WHR =YsS+`,H $uD@i~Z_N+ǛDDu3nd`'歹d񊋛HRlPX+FPBJ\j[FFb9Bc18Z8 qȡ&9|.V{58T(P3s_SvR% H:KY#ٰUвl"T[5X 44gڟ0=AqPΜg|{p:m]b=͛G[b'`xquY$#Rx>~av"`ؔ5 DPh#إd;0::Na XGyYDI %m1߀bR +940\ijZ E(%>WXߞa(k,,?.{s-ڢ8_{f"t ^@-_7X蠾Zv[g~Fj w!i>;s0„ --ft Pgkɐ&1 RM  Dr#:9]/W[s\1 ?^ ^MLMFrYPH 2.^G6%b4@JUB]:@ TZ !8EJP0 VjbU mK6h$~+q^9\;?>xa&S@# En)RD1hb:+ϸQb(ċ1s:WfTDL\mp^ gN?gI?x;LQ'X{s k&7JSSO D1uG)e9 }"7+hU@ol=A^KA$}/|>"