summaryrefslogtreecommitdiffstats
path: root/src/H5HG.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/H5HG.c')
-rw-r--r--src/H5HG.c62
1 files changed, 33 insertions, 29 deletions
diff --git a/src/H5HG.c b/src/H5HG.c
index 4914fe0..83e7b78 100644
--- a/src/H5HG.c
+++ b/src/H5HG.c
@@ -51,7 +51,7 @@ struct H5HG_heap_t {
hbool_t dirty; /*does heap need to be saved? */
size_t size; /*total size of collection */
uint8_t *chunk; /*the collection, incl. header */
- intn nalloc; /*numb object slots allocated */
+ size_t nalloc; /*numb object slots allocated */
H5HG_obj_t *obj; /*array of object descriptions */
};
@@ -257,7 +257,7 @@ H5HG_load (H5F_t *f, haddr_t addr, const void UNUSED *udata1,
HGOTO_ERROR (H5E_RESOURCE, H5E_NOSPACE, NULL,
"memory allocation failed");
}
- if (H5F_block_read(f, H5FD_MEM_GHEAP, addr, (hsize_t)H5HG_MINSIZE, H5P_DEFAULT,
+ if (H5F_block_read(f, H5FD_MEM_GHEAP, addr, H5HG_MINSIZE, H5P_DEFAULT,
heap->chunk)<0) {
HGOTO_ERROR (H5E_HEAP, H5E_READERROR, NULL,
"unable to read global heap collection");
@@ -293,7 +293,7 @@ H5HG_load (H5F_t *f, haddr_t addr, const void UNUSED *udata1,
HGOTO_ERROR (H5E_RESOURCE, H5E_NOSPACE, NULL,
"memory allocation failed");
}
- if (H5F_block_read (f, H5FD_MEM_GHEAP, next_addr, (hsize_t)(heap->size-H5HG_MINSIZE),
+ if (H5F_block_read (f, H5FD_MEM_GHEAP, next_addr, (heap->size-H5HG_MINSIZE),
H5P_DEFAULT, heap->chunk+H5HG_MINSIZE)<0) {
HGOTO_ERROR (H5E_HEAP, H5E_READERROR, NULL,
"unable to read global heap collection");
@@ -307,7 +307,7 @@ H5HG_load (H5F_t *f, haddr_t addr, const void UNUSED *udata1,
HGOTO_ERROR (H5E_RESOURCE, H5E_NOSPACE, NULL,
"memory allocation failed");
}
- heap->nalloc = (intn)nalloc;
+ heap->nalloc = nalloc;
while (p<heap->chunk+heap->size) {
if (p+H5HG_SIZEOF_OBJHDR(f)>heap->chunk+heap->size) {
/*
@@ -319,8 +319,9 @@ H5HG_load (H5F_t *f, haddr_t addr, const void UNUSED *udata1,
heap->obj[0].begin = p;
p += heap->obj[0].size;
} else {
- intn idx;
+ uintn idx;
uint8_t *begin = p;
+
UINT16DECODE (p, idx);
assert (idx<heap->nalloc);
assert (NULL==heap->obj[idx].begin);
@@ -418,7 +419,7 @@ H5HG_flush (H5F_t *f, hbool_t destroy, haddr_t addr, H5HG_heap_t *heap)
assert (heap);
if (heap->dirty) {
- if (H5F_block_write (f, H5FD_MEM_GHEAP, addr, (hsize_t)(heap->size),
+ if (H5F_block_write (f, H5FD_MEM_GHEAP, addr, heap->size,
H5P_DEFAULT, heap->chunk)<0) {
HRETURN_ERROR (H5E_HEAP, H5E_WRITEERROR, FAIL,
"unable to write global heap collection to file");
@@ -455,7 +456,7 @@ H5HG_flush (H5F_t *f, hbool_t destroy, haddr_t addr, H5HG_heap_t *heap)
*
* Return: Success: The heap object ID of the new object.
*
- * Failure: Negative
+ * Failure: 0
*
* Programmer: Robb Matzke
* Friday, March 27, 1998
@@ -464,14 +465,14 @@ H5HG_flush (H5F_t *f, hbool_t destroy, haddr_t addr, H5HG_heap_t *heap)
*
*-------------------------------------------------------------------------
*/
-static intn
+static uintn
H5HG_alloc (H5F_t *f, H5HG_heap_t *heap, int cwfsno, size_t size)
{
- int idx;
+ uintn idx;
uint8_t *p = NULL;
size_t need = H5HG_SIZEOF_OBJHDR(f) + H5HG_ALIGN(size);
- FUNC_ENTER (H5HG_alloc, FAIL);
+ FUNC_ENTER (H5HG_alloc, 0);
/* Check args */
assert (heap);
@@ -482,7 +483,8 @@ H5HG_alloc (H5F_t *f, H5HG_heap_t *heap, int cwfsno, size_t size)
* object.
*/
for (idx=1; idx<heap->nalloc; idx++) {
- if (NULL==heap->obj[idx].begin) break;
+ if (NULL==heap->obj[idx].begin)
+ break;
}
assert (idx < heap->nalloc);
@@ -567,7 +569,8 @@ herr_t
H5HG_insert (H5F_t *f, size_t size, void *obj, H5HG_t *hobj/*out*/)
{
size_t need; /*total space needed for object */
- intn cwfsno, idx;
+ intn cwfsno;
+ uintn idx;
H5HG_heap_t *heap = NULL;
FUNC_ENTER (H5HG_insert, FAIL);
@@ -845,6 +848,7 @@ H5HG_remove (H5F_t *f, H5HG_t *hobj)
H5HG_heap_t *heap = NULL;
size_t need;
intn i;
+ uintn u;
FUNC_ENTER (H5HG_remove, FAIL);
@@ -868,9 +872,9 @@ H5HG_remove (H5F_t *f, H5HG_t *hobj)
*/
/* Move the new free space to the end of the heap */
- for (i=0; i<heap->nalloc; i++) {
- if (heap->obj[i].begin > heap->obj[hobj->idx].begin) {
- heap->obj[i].begin -= need;
+ for (u=0; u<heap->nalloc; u++) {
+ if (heap->obj[u].begin > heap->obj[hobj->idx].begin) {
+ heap->obj[u].begin -= need;
}
}
if (NULL==heap->obj[0].begin) {
@@ -946,7 +950,7 @@ herr_t
H5HG_debug(H5F_t *f, haddr_t addr, FILE *stream, intn indent,
intn fwidth)
{
- int i, nused, maxobj;
+ uintn u, nused, maxobj;
uintn j, k;
H5HG_heap_t *h = NULL;
char buf[64];
@@ -974,35 +978,35 @@ H5HG_debug(H5F_t *f, haddr_t addr, FILE *stream, intn indent,
"Total collection size in file:",
(unsigned long)(h->size));
- for (i=1, nused=0, maxobj=-1; i<h->nalloc; i++) {
- if (h->obj[i].begin) {
+ for (u=1, nused=0, maxobj=0; u<h->nalloc; u++) {
+ if (h->obj[u].begin) {
nused++;
- if (i>maxobj) maxobj = i;
+ if (u>maxobj) maxobj = u;
}
}
- fprintf (stream, "%*s%-*s %d/%d/", indent, "", fwidth,
+ fprintf (stream, "%*s%-*s %u/%u/", indent, "", fwidth,
"Objects defined/allocated/max:",
nused, h->nalloc);
- fprintf (stream, nused?"%d\n":"NA\n", maxobj);
+ fprintf (stream, nused ? "%u\n": "NA\n", maxobj);
fprintf (stream, "%*s%-*s %lu\n", indent, "", fwidth,
"Free space:",
(unsigned long)(h->obj[0].size));
- for (i=1; i<h->nalloc; i++) {
- if (h->obj[i].begin) {
- sprintf (buf, "Object %d", i);
+ for (u=1; u<h->nalloc; u++) {
+ if (h->obj[u].begin) {
+ sprintf (buf, "Object %u", u);
fprintf (stream, "%*s%s\n", indent, "", buf);
fprintf (stream, "%*s%-*s %d\n", indent+3, "", MIN(fwidth-3, 0),
"Reference count:",
- h->obj[i].nrefs);
+ h->obj[u].nrefs);
fprintf (stream, "%*s%-*s %lu/%lu\n", indent+3, "",
MIN(fwidth-3, 0),
"Size of object body:",
- (unsigned long)(h->obj[i].size),
- (unsigned long)H5HG_ALIGN(h->obj[i].size));
- size = h->obj[i].size - H5HG_SIZEOF_OBJHDR (f);
- p = h->obj[i].begin + H5HG_SIZEOF_OBJHDR (f);
+ (unsigned long)(h->obj[u].size),
+ (unsigned long)H5HG_ALIGN(h->obj[u].size));
+ size = h->obj[u].size - H5HG_SIZEOF_OBJHDR (f);
+ p = h->obj[u].begin + H5HG_SIZEOF_OBJHDR (f);
for (j=0; j<size; j+=16) {
fprintf (stream, "%*s%04d: ", indent+6, "", j);
for (k=0; k<16; k++) {
Hͻlx4w]Tk1oPyr =/wd7Ph橍Yc?uwucƏ uǤxg:h#\x5UԒw6U"ϲ'AW|,m/Ҷ2`f #XkDzQFO3E%!q7} O}k(C:ut/y~;<;_PQH#1E P'atSO'T_ 4]bQS<%*gCzp< <>8D2!ph+y{ &MJnCzMIa˛9{7AjxM'j4-"/e=1ϼfMGQJ\gͿ6L G/X"V8<gK߲ ըt imy^5$}&OC1T nM'J5oUuQ%'/&,P9%f68ťO Sڅ0ƀCFwSA@v=8QGXKo1""8"z t#i~,?;GHU +}q>PD#u>}GwW>"Bcpp/ANb_?x!_gLgN?j=!x 0UOO|094gWzf4e9 IơuCMRgxn6}z~ZT{t'W,*n٪zm?A>DHF']L8fؼe8MNP$%nvdYVjB9y8継I?6Of!W 4~|QoS!}I,*% ppSm"H$.rMTPkN"KNH,Qd!jϫf~ ˁ$fL qԛ{<d!A0f!1HhAm sS}Li2CrIORiγ"Ĕ()i &0}coy"9TJ&p `sB[X D ÷ao'>.#>C}/ۇMqpYa ˤTD+%eol/ F9#Y[CĂbC!4YU*)3%#`U-;=Yˮo^rTP{cj4FciJÅJëST7l݀?s+o1 sQvR%x@0)Aq6xm0'/E ianLr"pj;^B+/&"=1., )=Npևt{4RQQ 0Ǯ5sǹiE( GHjM)#SS2T*=Sc ~n~\CH^#./LwuqA ]doOOQj׭GM|P=t1g.:ro$D>Z᯻L4k!}꽕ǫHPBl)dGܚQbר]2=g66 <Ǚx'}S}7_o%p8cX}U5U?E=_}\ȇA`ݓbڙل08;۩?tJh0Z]gf-:iyM ˭NN  %!HO˃*V1|>N"\Pm/b»RjAv!Kd4=s._( (DTFALȡk yċRN48뜭tX\@O bmn(KQ}T#+:/9_}B$T< uNpT]X%P\%?ws/ __$g2cb_+M#sf 3&Wߛ !*aԈl⻼\U2.fWﺙ͸ rS_ a`X╎VI@?g*M#k~+' 1.~݄Y:a2݀Ё130}-po?hbl>b47FJ XfZk4G٘u'z̘_R߱7&}#~#aiisfng-ƅ'٪@U?Dža֍S4EUQ23 oݼ$d\i;& G;BAN6@h沦`)U@O@Op%z>.{_R{Qv^A_⺪,(]0ئc"2f!30pkBh0.27,iѤ8ODg 2́ oM"͵0h.6; p3-JXCzs0B# %bBy >k>Oqq?4g!ӖH&r@-c'_ƁnZi Bgv?1{L#֯`phxbptjdjk#ROQ/ Bч@~-.c#BkFΓ%E4u;M]* %~*! qv9Es ;B(=fL҉5M ql+CU>k쇌PjJg+z5i.Ŝ^c·4pznG"]G<{/y釟0b_xR"Gx\vCn%~;.95uτ"zIMh٥A;0$Χ NvOqv2Ϫ9H37*¥q}]2sÝhf{Py!]m7p1beJ@0Y Ӵ3X6!⾫1q3tte٠A5ֽ$tO*HH$Lzumvp`fZܫi+(WQ o^0"F_tF1yWWCD̰~\K# E{,a]~GڶdlQ1\x FOyŢ t9$G=:4DDg`Sc!b5vl'~ce}j &[$]} o)bLl007/r\@Viw@~D7 &cڈfrTpB!b|>ܰ M7` KO9vЊ'WKӶ}k" !9!-Jf-.H =3swPuh28F 66{WG_aaQiָp;!ٱ~r&:)0jBNg=S87|\g=ɸܙ1\kҽ;uSK՚VJ"Ja!Hr8ql݆V ^J.I$pqAgOCz6wppAjb<Ƭ9L_#݆/>]AE,H 5E~iDܱ.<߳c^)(X(Ìɚ$Q0Gvf_vkG%)5% ( g}Y;Z[ o~v*ۮc]Oh.gBc==ڢVrtϼѳp]官z{(Æz\FvB_s&B3;=gOOڅ)D9B/̖5 yKl5(%%<{C xNdrUa!zd4jD@tP?)\gDMQQ-2OdOlC@SHjTYHPR* DDDD, B,8}pw}@u84\`7}<; }h˘\ĈpW@ ay6y;\@-n{n^tQVGH@;(4``;rEOwl H\(*W!6h"?!9!āb}As`ShL1rƜ,A]@Bĸsxg*j^"7D} 6) Yh40UXYf4}b*2SFDx쾱Pz맬,,sCTw\t瞃nހfz qJjJnut˹/nr 7MupO᥸bXyYq_mS,rѮ>Y*uȱ!^uvqEOd7b# G_rxQ>@Η&1?sUiJEDdT( *du7%' "8"00 $ܦVھjL="]|ygc8^" ;1{=@7?c_/JGg~?mg7?}Ѿ>Okwϯ~~>#؞S~ԟy9vG~9SIٟ['sgz?[I?_>Odz>ϫ??>g?'ߕ~_>Oc|ǟggO+e2dRI$$j+m[$z_PUJ֤ed(c :l q@S'x.@!偶UJ[ W0e|g0oy/c@M3W+j(3֧@%Zgzu@v_ uX@2еD5` ,шm3RɀրsX`tApGI|r9*y/c}ϔ󟖸Fj"%$9DJRL/c5ln  aNdzM+^s83DL)C.HmoHE̡dZr•HCQ4&-( LV`l[1CcNdPHdFrP=|kzl `)! n1iਖ਼ˎ2 2PD <\} tz@Mm+޹8?]ڠD*+Փy>'ܚ?覺pa@yfZQR)?Ӳe::^l*MCx{"uЈ7l'hcp W0=x_0ݱ&36`t>Ldӿavʼn-R(d5~tpF:vWc3f8\ ¤ ,.Fx=.xc̺baXp+@:&8!v-׈|}FL8!;i@"bSD;@ТjT"C5>ǹQ!cA ވd`UD1$DDAPW-_4H LC A?|&sTn %qH؂qDžԃ^<Ǥ T(%M eq@oOtRز'A7ux);[M )9b( $2\>:{Ё=r`G W:p  ^+;ޡGXǑoSl ?Hy0:2fn>Cx?;jL~5ĺ6T0s<"u&Q/>}'&Ǹ6N΄ҕ𓸯F6O B C-yǦ?Lm,+3~onA2HymNP%%д*8dk=]n7wD! _0D]_&4gZ/l#U f=ڜ(fTt[ bXc$F\,BJ?w/c؞Ū?`i)VgctyWzm]?6w|veɂ.,DSUfܳ}{OY{#&r|DB|at8P3=R𡻎JU֘y]?cb iqpY | gERiÎzr*xOrYCmVwԠgƐ F1%8ǏNaQ-,ls[cӥ+Q8o u74Sq \g/*:὘FSMS5uXp40\?G!ů'+/F@8qQwf/ ̀4hePyOz"H"Gpd, $xOHpXm0 'B=u?}oׇpb [)X~RY5ď~{F"~,`Òh}F?m?Fg\)C-֩ (bVD3zkAY2F9^*gwgだ#1gU-Hŧ çVA8\H'GcGG<}>E {|9fI F? r?̡RI%%Ua!`V㑛Rc.蹆{CsD Ł3! 5ou Yr- tL>TNxw?w>!EAKa foNX{3U9w:w G^&HckE $ƶE~/[[dxQ01jmPɱL!N{eW Oڒ*Qi.ʶb#RdQDH'|/4{Ʒ<* oO{㐥, q* F&/zg!!Q E(d٠N7,@$sva5v] J0ch8t?[*+5 ss@NqƜB#SPM &\9!@v1hb&}tC;h}>(HItH!ThN @k9 02.E F5{ŚzFs4Iu\j|ªŎZ-1xCSC8LmyЛǘx|`޿c*Cn. B@Ha6ͮGpN` 7c<#B6+S&Aٻ`F[sڄ!OHQE 5t'g5^B64lI(mqzkބ2MU&RTe@$QHPmY@cL7|}+PPh1D ݱqf+amzt@  )=d5ljbpQ=9BDeH PB%JP9 gfiOPS!Y߱C`6V@NI;4βQl4uS)i v-bdbHc'pM@]'CMPZ @=聄L p=(D>WF3 r:@Πrq 9LP>HKZ/G9N1SQ]qQ!yIp$"  1C AJ,K M>ĠTpe!xL@I ?ۅ |c\4dHBտNu6 tEql6 x% o L5)dIuŬFͦfH" %y! y1J bΙ\%,0]ɸ7@A A[>͕U踃?]86P?tjq HAd xc ^pԛa=1Lذ⌘P"$^`ռ͠{['J$d喁W (,@ Di2"V%9` 0J9ꏿ A(d; cH/|g tYY/!xxh_\@HOS.' AS9.8/_1`ŝ,T#GD(Iu.FF-S؄@JfͲ`Ze pw(&ٛ+Wd`+ 6te\e95nKCaA@ w@&Lj ]i' ,i}Pw?jUp`0@8XIђэX0Qe Q$ hxJFEنfl.jh)knŔѦMtP$U3aC`G5&Du@MW}_t8U919}&$@+s9$9 7aow`3d D"N8SD1wR"Q-{K!5\_?ERS^R-Ѓ@bŬoACOmJdMh#p}S(g"F $TI >rA\ZL 6萌d%%?/brޡ7>0D |@WlajuJEǙ wj! 0D42‘{ϻЉLO]05ZQmhNh R+c WT8"+$'"@™(V%HC"hXAue$pD0wC`C,b(sh#epȉ ~O36.c09 JDԎv3&AQs"aMݼ;4rЛ7HtFB6NѾnteK(dr6(>!(Y?^? Ay;hm- pv1Ė!A;kVlc aFF+q6U|a4H 3l@ th4jM{}s&`e}^@B 'j7X |즊 N. xClai$ ,|̯>sYˑ(D)&:e$n2&IjaHk4`( i$x=6bBc*I<fMm`xwfSMBRqr_S qiXTID Q>ph<:`sN7bȃ8@JK2f HGȘR#" ~)̈or1y 0yfd&B)Py3PNE"z=h"2sx% PP4׊R!H$LB! ,HDP LAD@Ăq)Ò|Xa!j@NMv:׿* )L]Xt94xB6x>\M*P@^ _o~BO׺A`i1LMḰddaT:-b큜'# ']4R]|^MP+x}MtH%MKe)h[\ѣ& AF锃5"#i PQAD1d<NNE^CD@TAr0Z#%\Owc ATVQb+3΋G3 Jw9A8l8=o!PjMy%٠μaktWBSTP@w~B>fJמ dj g?Tx RhF à`^4PEDj\PHnTTtkSIQ.0m8n@A$H^A',jUY G$0@p^Jr/gɋ0y)enz7< _J(hN?8NX0N =gy/;2q> l#;w` H3 @Q[h%N@|Q9S2iD {}sfK> ;N}]Kp!87rX;†}xx(OqE Y{g.s\U5,MChhNUDUDx|=iݬ1,3b"'d+ G&)qPNę>D0 2r@,~;3 [^ytFly&li>6s! C !C_4ll|";2j'}w'F1ߪl󃓖95VW;ԈU;˞K1K-t!g=VʓX&A"|j:1s#cQ˝ƽ3ӎgaS3޹6q(EsP4c`b Io @Aܒgs#_pJa\JD4Yvp#R. ܣ(Yv15!oA nMa88vv{뎰:FGK\t'q! [ "A J^E.rx4t,6!4`l B|ڏM(FdI+ t\Ewa+WU8x3fiOO7$\ ţ\N7'Y7)v`c'ǀމۥ6qׇs>u2Y|f vIT4C GQ¦!" `p< O«8B~h[Yļz!AFrh Sp5{0wp0o- q mZ2q(8 !*`R p|0" u×N1\hQ5pӅ2a!|[\&b UPz< :}_/Dɡ$7<^ Xؽ)4R%geI,#&ha;#bJBóύExz0 #"`$T;L`h%X[Jd8x6|5?8T; 7X.wZo8A9xcFXC18"@"n.mz:܁9gFs8snD%6K7p`(1ë#I(ӃpJa!r"5"  x˷iԻ;{b1@hfQ$e~&V,` F8xĎi4i\zISb7i\uh;9&^uv Bc˫ROa % Pۧ=и(Xf!!,IWPÔŷ$jAkز05IB_͔QNR(q]C\um" *)Ͼ5XaU|EƁ$`4 3[3l5hV54j 4HX5e ؒKֱ:QXJ>rpcj !:AS٣yX;aҤZ1qX'9"w %~; R20 rJS RBH uYt?loqHPU/.:!Y7 ˽\<7!x )M>F Ia >WJ%/ . yǦѩ />F BwITWK\י5S^6{{ta3pɁ1#}NmcB( *""$2^gF(6 *=iڰ<$M䃠X#wņn!Iќ8F%!an"uZ㟩F74[v^vCғ=10v'0GRnJɚùqB<}qQ7# 0|CW tq%CMs;*Gq$ir҆r*!r]3[p:#9r-Hk=Ǡ v;n+ dzX˜H`ʗdEs(˗7HӗCJR\5SAgx,^Ѡgu 4wKu~r$ziZ^)"X@.G$ wlB(]fBq 5 1BhaCf< =&A}}VJa89^1I݁N рP ݃,]j, Bp^NP܌e-ȄB.-ڇpcZ6ځ:s/.Y]8: rXC^O{sSmGwYD$hubZqsq"+q^TA1Of;J<5!-pz})=%8uN>X: No7'"Hbd\hr0@|pD>Yyy.% "Wa~р/d(pyhs"bsx>!]`h8:FGԵ3ϔ Mx*~d:5{KK$FA#PVIYR e8@ CuCE FV9rKy#`JdDHE 9% .dHdӒPY7&\(%1N zU3HAeˣg i^nn ۍlOj 8ψ:k΢PLd1 bE{:W'0˸ND V:[L DIχddq<8N@DXSQsI@=@& Hg`|f3p(P! |4τ` 75aD!Dࠈ7U?P_~ɳ4R5]mtC!?^"F_h´{?b'IE2r2ê8q= G; #ʭ Ҫi @oWYgRt 5YKqZ*Dq! ƌzTŸΎWG{^w{^'4444k{ĨeAm&h6SG~("((].4LPvz{iG4,Z֐K@٣ Av,;̧Q[4>_K#Bw@<h;#$k|Ti2}/}Yy.zH!A@P;X"mr.4!@J a }R0Ș_~ 봒l1ENHid ( mqA@W67y!0Od70;c;n_{o(E9`B}4@UUEEDadVea F]Ŗ>zoARd%+^x3ܴ. i :1IU(W_xLALJiý+R * |yCG[AJpM-xC(8g#LdGGF~H5 ΰz,#^ !oD,BDOALH)B0 $F@U'j>nr_VV31yك7fTlh` BúZЁa8D9Nq ('XQ7 X7 ӫ zZx99"aR &Y"#ĻK <V-4f DDlL Ըɭp-YەCY6o .BFAp^'ՐiZ)RҌM"=?9 F@d AQTF..Q(@*UJ$C !H )RR!J D @XP"y !H()) $vR:%LHk3/}|8#3""$eقB1ΪJ>Zw4$$ROV7 cȞ<)P@X(|$85$ccq* t$h{ z + ye=z8FAop3'R؜G_!d6`9`M!ؿM$To/':"'sB]]/F`2!P4xF>?9o]o_뉌oԋ뎐͂qKDe?;V7)A#}: -9c*Y2Ero9{G?8j:nv~g"nH z@ž3ЂI. &&0 \vKEI3 `4(A4dưPNjj  74‚?$-BT 0AL5LTDSSLTA0%Q$8;x1GTU)<Ӭ{wVf>9LT TDD`Fy^O~XvԓWe2£z{OHf@Jhij&(P NG(|H6oKaϐ Q"#K/34D)VgD8xh('Q*r)DN!2@U@ zx錉Aa8=]  24nڞ3΁ާBb2 qGpM;'$=qb0C-oaEbDaA`4g ^B1:HI,[+0`0s* xO]{4_z=1mhLC#!PLDW|_&D Yrd6JAf{MP{  k{e8!2ٮHHѸ^b209aqDaS'UP҆1bLLJ)EM"RMP] @8.@7C [!(h;s >MCIn o=& {qtg 85d!l,.}Nk8nE48XMihQ/a*;[0ď;]8v0>l* +nT-xE]"mx'u(CNk̂_ʓULpCP3A _'s-!ХP 6.NSCG fhcn!TBHm*[ک43 b!QmhE;Wh&D(;\ihيbPق- , S DRԺ*2f-(TJpIFP q76@Nۤ>*@yHw#(d$y}S#NC̄A~"Y*{&Xmm`720&,,cMy:vɡ}Q0SG`@rq; }TF46$0KL"y+<ԆA64v7bEнM-!ErZUvcih?DOtnOa,50S>swd3;{5q`]ǝo$<$De/.8;d9o [2)hc4H Ef)iE Q[֠u}iu^aIRE%ν} ra "s8 gj-W`m9Dt8L^ @ށA9̥^M]FTi;vѮ{;9S4OOٲkXs04}u}8𡩣.H'[$ vAFhgI5rִ" $C $v$B 0tԍ&Œ\0\*S0廡qRfSҧ4B~0YRc GE, Fv3Bdb1EV\꫖KՠW'DX5ڰ8iϯÇ:ϥ-Pf!(!O7L#`,$žsHp"n2e7->jZFQ2Ͻ~8Du2!ZGĆНCօ%YJyy)I<\NI\PNb;0Ih<mJFfH4@ZT[$f[YɯF.@FskdmxڙmADe| #`pl@7l(Chc\kfdHIm\C}9ܩ \11 i֛zfY[lƀ+LP!g>Yσds3 JMև1&.xC9.Oy>7z0L0Hw`vZl# 6ά\Zь lh!;%9j͚("0- 9.AcI Zի@Կ!9Gj#WMCW?shB H~MkkV ZE6b|CuB2r Fi΃n]k޹;%}h|<3c 5j jLԅ_WqD34Ջ{~ CC9m,2purQ b8:(=́d>AC[ԕl> `dd=DsDxGq̪=BHBGpbdx}Kirɬ p%D11U Q-P@:š;:3o#wskG:`=qVLI! `hfG 01pH"iZ3KJAnoJ V]:qT6`h%Q."H{lѿ]uL k׎"5 T7I@8/+^g/C_j(OG ݨF[5-Hoۘj+kr > =d O~)]>e?N8< 6$?n9fFu|9c܆7$h\E&O"CX~Y!89BXa S-fb\]IDUE[bOs(9hNd-|(o_.;+K:Ąwk#Hѻ2mB|3ۻ^,\(-||WWBN$i#8s]i4ǒDb'~[" ގtpJ\#"lP Ճe#= #iv"6ƌMBD\TSA#C|a6U1]0b! 3p-4j!ic" '{:N PGF&̥$"刋C#Cѳ4<!%JÏ0H "1&UHBX %$սm8 $'3{ౡ C]!cmR[gG SoEb S%"!D|:( G2< <i6:⌃#7DL. ȀS FdC3RFL| R.XZIq,C$M%P"66PaTO }| 4M 6~¸'Tc@7@?:rR1F6ND]p6!6>kl9 >w')) D&uLX% 2b! nF[ٰKblMF@lp h_$$Q :p$ J 䋐 HRDjx8]75 t6;P/#Ppr0 ^p0)F ) j9PPr&̢$h/.i(RbJa6aXJcn7zҍ%=u#Ž,}u4&z;+f4 Hϕp" K_KR @&Z3X "a&5FJmA&- Pxғ#?gV3$&qc9LOf ס76Ep6 -p0!LSBق{4ie΢`$L`M `~N1H_5gve A,4˾ F<j2d(~] H4 y/;Tޖ@&Q9؄U{0:nd&cCP7J J̕a;&r΋$6Y$%èD9҈b>r$HLw8/R̸]"9l5<@j #H"%!(pJ 8.C * X&HB$I@d&TPDH# XH!%1lU7A2V6J>pMj)ہf$X5PHވF$ēӏJHRBܤ92h2tA] ȋ"ykƼK˘u.J^b~ ,EIB[DT}v^h;]hՁZ(J  J>I!U$@<>ywn1s( "hhdbbC{̩7ȞI#ll/y#'̂AGdȖ<MYM$K;F1xNcM4KɳC&` Qy^ҎÄB) %):Dr{"IR-x"EM0R D"hNPvB 34RH L AD@)q]@jJ)=#@i54S$7 ((9:@ GrFQ>¼14[d9IbRE8>lEo(v@kUfY '`x026vpRK_9##IssPEh.*?!s ʛ PPbyaA0A$TA`i*dF5(h:\}ë'Cl$aEHs4xtzD :go/CwL}?7}n7L*{ :a HfRDS5SU~8>|*hl^^?!?S*D4$(!] 'q&ȞQ۲5\nBzdV,I&F=D>f2HObH*Gk)L5jWo-5]w +9`V:@'A}zL"" XAlVD:PMm O2e8@D85B%GDU@qc?[%5T8F HdlSw@}եJjhX)Sm@:TN.WPN0dqJ)p u)J![&Xuv@`a1!E0I!#Q' @TĄ1z^GC4TQ$3BgX FJ `\9Hx9ڣʬs2X ZAa %*G`hƂn@#*F (T+U^>(k$"O {M6Z2l/~>L:2j,Ml_D'2ǻtN HIiͳZI!QGB3S `=4ҷFrxu"X(biPbl>| 5:oWMܦ>u~J !yD=ެm~XKT\ s )% FaV !=MAu5MU2ei#If/D0PR}XѶ#*!/ 6JL .FfkG-d$7jhg qt'BC56LƢ*AZs;_w>VQ$A. X?[hQg\9pMp?vk)\Rtͯz} LGls4`CDQE.ȁ Gx%r،bۘAg/UQ {tI DD u +p4 y;_z~Xb GoXXcl.{hEZ#k>);$T1a XK' 1dH v 1 HxYЕaQ9үȘA#6Y5S' #,> vE1;hfhsEA0Ȥ n`e@嘚*"aBU0 cvU)Hӑ4 lt2[yS4CSh"f $@c* v*h ox:$fp6b6e0lF%o CE1!E!ABLVX" :#(f! 5E1Z 7ƵEe iLr#m60d U mQ4W``)"M6=1HL!17Քpj uNrJH>!DS^1ZfJ-LjY Q\4k4u( bX,89r@zJa .aȃubl%ͻ3tH? Bw.1IUڛgB,m n*ȠwD !DpTH󍷯ˢ+ÒXEH54wД:H1JtiPn5 Ej@Z@3fJ`"MO. P.Y #pA)w7Zd$L*QaF AR]t6!(EiFdbf`dp%P &hD}g>eKt:F-?*6 yVE UCVA<bta,gT;JRQ(Iq6.(#/,@ &`/C7C֫S"C%Y8[";1k,e/JAb"Tq=KOL$h'jI lKRMG$han Oou^(v\]:&5J $maP{=GJ ѝa 7% % _<v$!25ELFJTJhP0 oXmpfRfQ aT O+E 0Z? X) ކg֩XA=-ZM lQ;2(.l(ǿQ/>aJ9o(X.H! 4# dbe،)`V5Dpۑ1!1r&0E i^vO9kʴc4ɨ5фdQea&C ƱHVZ00׼خH8ڴ@IXߕ^m6c.@\ږ r jJ)#!C'R%[; W=٥5~=51rxDSL ݦЙs5) D!GVjأ(! ;CYwz p+29!k5Rӈy-*~2od޾V8~sÇG;ɹ(v oi-ʲFgI?;q񢓁c*嗢 qRƘ,]ADwh``ȲEXS(kb P8AQEd é~ O2N`4e,=8rA'"f;9nhkO }Ũ|@v -QRG&[SK#9#n@{iɝeQs#ɋOr39-FUoe]mku%78I&B vpu$}FmEMhY0d P/X))(3!Y5YIoS3$ʨ%3e g FL5ڑN EON'p^4^ ),`$;N[1qnqEPDB,T9 Dq#*-cv((QeyCԘ601 d]18D&hTĢo$@0HTh6d`b7 raнIь6vM'F_,8Px1yC9UCh%qBmvPRx+Jn,5k]^dͧ+*i#GibZt8Qq acoʡzP{PALwb?A,vȿ:P;<4'pi8x'ϝŵec͵lߚi (qucpz; Ki%سq3EweM|F<ǯVCRBHxYMlXo+(G|UoWE;t[TCSQBY?bI&ZpWw]Pwqׁ47QpzxkgD,6ItSٌn0_]eg '׋8α޾?Tk"{)Ed'Yه277t12=Gpp 'uɱH払lM|#lE m[A}e3 WNbm"QQ3}rlA3uVb֍f\o˩:,!kz9 uLBJmm @.C1 ے& <}/X TsPK < y~dɘ7dΉ z_f"."Q~@lPBV6TC(.iQ)dO  q!$Ns^"$ƙAYo/ ZZC \&VU=!Mֈmc Qz u1nb30BVٳO <4%Īa44AՀ 61 ܙ֢XBpfbYT:MJ\Epo7< 9r.&4PI A6Fd&hH4H%Q'!b[i4:%KW4f1EP^ # /TA0` fY$ =e0J,M*fy\ɑwicΙBa B@bU:Nr/!T~C=M6 FFf+ ]DFd#̓ã,YΊ voQ 9cI"!OTt9aP9c,Rdj,,MV J$!2dC#gbع4ow[~vIF$|F`ۈ :A{7^곱tfVjl&*Hʎ.0 x^ AYf0 {@MS]׆sw*[݂oʆ"dE02}|L4<JpB WڷP4`h)bKlOf-,cMmfZ:hsTy `E6̰WípL@79 ȍ32xZWflV h/k$aɄ ϴ!]9}|I~HWM^O?CAhA2p)V)ɼ2q#üƃQŢ CpY}DV̞Nƣ!"D &Hxw j]H(Z $'lPp9vn(C-wUnD:v/;8>1S.d8y*'2cMS\죖aYԯ.̟gUK7M㽢I!0RpA]Mu t1$3m\Bk(pk`cpCL@ #!ԀxZ"0}hIS 5ҡQA#/f!#x +tH~q Rȴno'@~0&QtyLUKp3HCKӹ8u]YaFMb !*%&~Ө١[Dzwǁ@B"onC +Ԟ! c7d\ˮ 륦"2pyӡed(""@X;q% i 1G/sюG6G{3dKeuB϶da'TdUΔ-ъcԂF?QbOMA63 eFǤ3Ma,#;Ov ׁ BN+vl=q 6,.B[M5۩ГM{D WGb@B%Af!pPSqgOh(\8jHFuS\X;{=Gao?!Sreۧl6~f4z@AH x`6a'yiW>cY))$! pІF(AE-r,rʾA9,\=JD/2~ZQlp|:5;ୃ|yKb=@ f C@GDQ}MU.lyQ1>ax92ĉ A1cPQ{KKǁFMJD@)[9)ˀ(e spV1W&c$!a ~8XԌ*^@=_N̊! `Q*&(/SYa4%&ah B!"O3 Nie>e(͘fF:KҖZR*ҍ616 "gl|Sd)8~PF]|z{Sd &lYD'\"ȧ@ᡛ\}MN$/gvKt I%Y}maP"z9L X)jy*BLp#"{xf2M^8BgA(p#H!I4ti VN$qx"u"?[le#G+'5Y;_`h!е0BwO b !Ox&/d@3o9j"Pߛ?QEQA4ら?n'`HQI6@ˁP xiBgqR+ !H; D3DDևKo ܺn hd2Ar wc|m?&ni@׷;z!}ܺiZV>MuGDH*\[8lSvyl歎 Q"B98Â9ٚ8(]PBy,5(Qb3eCě47>>s 2}o#Cl2sSXaS Sze2虹@;$DŽi5v ,*\rZՖ|L3"˂l& CRa&u!'N 6 : GzӱwÍq880t.Z"7+FQTu5YI8)t$!A:jVTaβkkCh C[CP@J,GԘq#.d0c< CՅz0ZL1q;Fgo cY/q 0CX4P hRL91tTG/Z;q809lf?K V$"aS6iykȇh= _3tv_N)g (H("(H@a