mda/0000755000176200001440000000000013176642232011021 5ustar liggesusersmda/TODO0000644000176200001440000000036610467142622011514 0ustar liggesusersBy default, fda() and mda() remove the fitted values from the returned object in case this component is too large. But then prediction fails if the data is not given explicitly. More documentation should be added, in particular on laplacian(). mda/src/0000755000176200001440000000000013176636732011620 5ustar liggesusersmda/src/sinerp.f0000644000176200001440000000511213176636732013266 0ustar liggesusersC Output from Public domain Ratfor, version 1.0 subroutine sinerp(abd,ld4,nk,p1ip,p2ip,ldnk,flag) c C Purpose : Computes Inner Products between columns of L(-1) C where L = abd is a Banded Matrix with 3 subdiagonals C The algorithm works in two passes: C C Pass 1 computes (cj,ck) k=j,j-1,j-2,j-3 ,j=nk, .. 1 C Pass 2 computes (cj,ck) k<=j-4 (If flag == 1 ). C C A refinement of Elden's trick is used. implicit none c Args integer ld4,nk,ldnk,flag DOUBLE precision abd(ld4,nk),p1ip(ld4,nk), p2ip(ldnk,nk) c Locals integer i,j,k DOUBLE precision wjm3(3),wjm2(2),wjm1(1),c0,c1,c2,c3 C C Pass 1 wjm3(1)=0d0 wjm3(2)=0d0 wjm3(1)=0d0 wjm2(1)=0d0 wjm2(2)=0d0 wjm1(1)=0d0 do 100 i=1,nk j=nk-i+1 c0 = 1e0/abd(4,j) if(j.le.nk-3)then c1 = abd(1,j+3)*c0 c2 = abd(2,j+2)*c0 c3 = abd(3,j+1)*c0 else if(j.eq.nk-2)then c1 = 0d0 c2 = abd(2,j+2)*c0 c3 = abd(3,j+1)*c0 else if(j.eq.nk-1)then c1 = 0d0 c2 = 0d0 c3 = abd(3,j+1)*c0 else if(j.eq.nk)then c1 = 0d0 c2 = 0d0 c3 = 0d0 endif p1ip(1,j) = 0d0- (c1*wjm3(1)+c2*wjm3(2)+c3*wjm3(3)) p1ip(2,j) = 0d0- (c1*wjm3(2)+c2*wjm2(1)+c3*wjm2(2)) p1ip(3,j) = 0d0- (c1*wjm3(3)+c2*wjm2(2)+c3*wjm1(1)) p1ip(4,j) = c0**2 + c1**2*wjm3(1) + 2d0*c1*c2*wjm3(2)+ & 2d0*c1*c3*wjm3(3) + c2**2*wjm2(1) + 2d0*c2*c3*wjm2(2) + & c3**2*wjm1(1) wjm3(1)=wjm2(1) wjm3(2)=wjm2(2) wjm3(3)=p1ip(2,j) wjm2(1)=wjm1(1) wjm2(2)=p1ip(3,j) wjm1(1)=p1ip(4,j) 100 continue if(flag.ne.0)then C ____ Pass 2 _____ C Compute p2ip do 120 i=1,nk j=nk-i+1 C for(k=1;k<=4 & j+k-1<=nk;k=k+1) { p2ip(.) = .. }: do 160 k=1,4 if(j+k-1 .gt. nk)goto 120 p2ip(j,j+k-1) = p1ip(5-k,j) 160 continue 120 continue do 170 i=1,nk j=nk-i+1 c for(k=j-4;k>=1;k=k-1){ if(j-4 .ge. 1) then do 210 k= j-4,1, -1 c0 = 1d0/abd(4,k) c1 = abd(1,k+3)*c0 c2 = abd(2,k+2)*c0 c3 = abd(3,k+1)*c0 p2ip(k,j)= 0d0 - ( c1*p2ip(k+3,j) + c2*p2ip(k+2,j) + & c3*p2ip(k+1,j) ) 210 continue endif 170 continue endif return end mda/src/bsplvd.f0000644000176200001440000002120513176636732013261 0ustar liggesusers subroutine bsplvd ( t, lent, k, x, left, a, dbiatx, nderiv ) c -------- ------ implicit none C calculates value and deriv.s of all b-splines which do not vanish at x C calls bsplvb c c****** i n p u t ****** c t the knot array, of length left+k (at least) c k the order of the b-splines to be evaluated c x the point at which these values are sought c left an integer indicating the left endpoint of the interval of c interest. the k b-splines whose support contains the interval c (t(left), t(left+1)) c are to be considered. c a s s u m p t i o n - - - it is assumed that c t(left) .lt. t(left+1) c division by zero will result otherwise (in b s p l v b ). c also, the output is as advertised only if c t(left) .le. x .le. t(left+1) . c nderiv an integer indicating that values of b-splines and their c derivatives up to but not including the nderiv-th are asked c for. ( nderiv is replaced internally by the integer in (1,k) c closest to it.) c c****** w o r k a r e a ****** c a an array of order (k,k), to contain b-coeff.s of the derivat- c ives of a certain order of the k b-splines of interest. c c****** o u t p u t ****** c dbiatx an array of order (k,nderiv). its entry (i,m) contains c value of (m-1)st derivative of (left-k+i)-th b-spline of c order k for knot sequence t , i=m,...,k; m=1,...,nderiv. c c****** m e t h o d ****** c values at x of all the relevant b-splines of order k,k-1,..., c k+1-nderiv are generated via bsplvb and stored temporarily c in dbiatx . then, the b-coeffs of the required derivatives of the c b-splines of interest are generated by differencing, each from the c preceding one of lower order, and combined with the values of b- c splines of corresponding order in dbiatx to produce the desired c values. C Args integer lent,k,left,nderiv double precision t(lent),x, dbiatx(k,nderiv), a(k,k) C Locals double precision factor,fkp1mm,sum integer i,ideriv,il,j,jlow,jp1mid, kp1,kp1mm,ldummy,m,mhigh mhigh = max0(min0(nderiv,k),1) c mhigh is usually equal to nderiv. kp1 = k+1 call bsplvb(t,lent,kp1-mhigh,1,x,left,dbiatx) if (mhigh .eq. 1) go to 99 c the first column of dbiatx always contains the b-spline values c for the current order. these are stored in column k+1-current c order before bsplvb is called to put values for the next c higher order on top of it. ideriv = mhigh do 15 m=2,mhigh jp1mid = 1 do 11 j=ideriv,k dbiatx(j,ideriv) = dbiatx(jp1mid,1) 11 jp1mid = jp1mid + 1 ideriv = ideriv - 1 call bsplvb(t,lent,kp1-ideriv,2,x,left,dbiatx) 15 continue c c at this point, b(left-k+i, k+1-j)(x) is in dbiatx(i,j) for c i=j,...,k and j=1,...,mhigh ('=' nderiv). in particular, the c first column of dbiatx is already in final form. to obtain cor- c responding derivatives of b-splines in subsequent columns, gene- c rate their b-repr. by differencing, then evaluate at x. c jlow = 1 do 20 i=1,k do 19 j=jlow,k 19 a(j,i) = 0e0 jlow = i 20 a(i,i) = 1e0 c at this point, a(.,j) contains the b-coeffs for the j-th of the c k b-splines of interest here. c do 40 m=2,mhigh kp1mm = kp1 - m fkp1mm = dble(kp1mm) il = left i = k c c for j=1,...,k, construct b-coeffs of (m-1)st derivative of c b-splines from those for preceding derivative by differencing c and store again in a(.,j) . the fact that a(i,j) = 0 for c i .lt. j is used.sed. do 25 ldummy=1,kp1mm factor = fkp1mm/(t(il+kp1mm) - t(il)) c the assumption that t(left).lt.t(left+1) makes denominator c in factor nonzero. do 24 j=1,i 24 a(i,j) = (a(i,j) - a(i-1,j))*factor il = il - 1 25 i = i - 1 c c for i=1,...,k, combine b-coeffs a(.,i) with b-spline values c stored in dbiatx(.,m) to get value of (m-1)st derivative of c i-th b-spline (of interest here) at x , and store in c dbiatx(i,m). storage of this value over the value of a b-spline c of order m there is safe since the remaining b-spline derivat- c ive of the same order do not use this value due to the fact c that a(j,i) = 0 for j .lt. i . 30 do 40 i=1,k sum = 0. jlow = max0(i,m) do 35 j=jlow,k 35 sum = a(j,i)*dbiatx(j,m) + sum 40 dbiatx(i,m) = sum 99 return end subroutine bsplvb ( t, lent,jhigh, index, x, left, biatx ) implicit none c ------------- calculates the value of all possibly nonzero b-splines at x of order c c jout = dmax( jhigh , (j+1)*(index-1) ) c c with knot sequence t . c c****** i n p u t ****** c t.....knot sequence, of length left + jout , assumed to be nonde- c creasing. a s s u m p t i o n . . . . c t(left) .lt. t(left + 1) . c d i v i s i o n b y z e r o will result if t(left) = t(left+1) c jhigh, c index.....integers which determine the order jout = max(jhigh, c (j+1)*(index-1)) of the b-splines whose values at x are to c be returned. index is used to avoid recalculations when seve- c ral columns of the triangular array of b-spline values are nee- c ded (e.g., in bvalue or in bsplvd ). precisely, c if index = 1 , c the calculation starts from scratch and the entire triangular c array of b-spline values of orders 1,2,...,jhigh is generated c order by order , i.e., column by column . c if index = 2 , c only the b-spline values of order j+1, j+2, ..., jout are ge- c nerated, the assumption being that biatx , j , deltal , deltar c are, on entry, as they were on exit at the previous call. c in particular, if jhigh = 0, then jout = j+1, i.e., just c the next column of b-spline values is generated. c c w a r n i n g . . . the restriction jout .le. jmax (= 20) is im- c posed arbitrarily by the dimension statement for deltal and c deltar below, but is n o w h e r e c h e c k e d for . c c x.....the point at which the b-splines are to be evaluated. c left.....an integer chosen (usually) so that c t(left) .le. x .le. t(left+1) . c c****** o u t p u t ****** c biatx.....array of length jout , with biatx(i) containing the val- c ue at x of the polynomial of order jout which agrees with c the b-spline b(left-jout+i,jout,t) on the interval (t(left), c t(left+1)) . c c****** m e t h o d ****** c the recurrence relation c c x - t(i) t(i+j+1) - x c b(i,j+1)(x) = -----------b(i,j)(x) + ---------------b(i+1,j)(x) c t(i+j)-t(i) t(i+j+1)-t(i+1) c c is used (repeatedly) to generate the (j+1)-vector b(left-j,j+1)(x), c ...,b(left,j+1)(x) from the j-vector b(left-j+1,j)(x),..., c b(left,j)(x), storing the new values in biatx over the old. the c facts that c b(i,1) = 1 if t(i) .le. x .lt. t(i+1) c and that c b(i,j)(x) = 0 unless t(i) .le. x .lt. t(i+j) c are used. the particular organization of the calculations follows al- c gorithm (8) in chapter x of the text. c C Arguments integer lent, jhigh, index, left double precision t(lent),x, biatx(*) c double precision t(lent),x, biatx(jhigh) c dimension t(left+jout), biatx(jout) c ----------------------------------- c current fortran standard makes it impossible to specify the length of c t and of biatx precisely without the introduction of otherwise c superfluous additional arguments. C Local Variables integer jmax parameter(jmax = 20) integer i,j,jp1 double precision deltal(jmax), deltar(jmax),saved,term data j/1/ save j,deltal,deltar !(valid in fortran 77) c go to (10,20), index 10 j = 1 biatx(1) = 1e0 if (j .ge. jhigh) go to 99 c 20 jp1 = j + 1 deltar(j) = t(left+j) - x deltal(j) = x - t(left+1-j) saved = 0e0 do 26 i=1,j term = biatx(i)/(deltar(i) + deltal(jp1-i)) biatx(i) = saved + deltar(i)*term 26 saved = deltal(jp1-i)*term biatx(jp1) = saved j = jp1 if (j .lt. jhigh) go to 20 c 99 return end mda/src/tmatch.f0000644000176200001440000000205613176636732013252 0ustar liggesusers subroutine tpack(n,p,match,x,xbar) integer n,p,match(n) double precision x(n),xbar(n) do 23000 i=1,p xbar(i)=0e0 23000 continue do 23002 i=1,n xbar(match(i))=xbar(match(i))+x(i) 23002 continue return end subroutine suff(n,p,match,x,y,w,xbar,ybar,wbar,work) integer n,p,match(n) double precision x(n),xbar(n),y(n),ybar(n),w(n),wbar(n),work(n) call tpack(n,p,match,w,wbar) do 23004 i=1,n xbar(match(i))=x(i) 23004 continue do 23006 i=1,n work(i)=y(i)*w(i) 23006 continue call tpack(n,p,match,work,ybar) do 23008 i=1,p if(.not.(wbar(i).gt.0e0))goto 23010 ybar(i)=ybar(i)/wbar(i) goto 23011 23010 continue ybar(i)=0e0 23011 continue 23008 continue return end subroutine untpack(n,p,match,xbar,x) integer n,p, match(n) double precision x(n),xbar(p+1) if(.not.(p.lt.n))goto 23012 xbar(p+1)=0e0 23012 continue do 23014 i = 1,n x(i)=xbar(match(i)) 23014 continue return end mda/src/sortdi.f0000644000176200001440000000333313176636732013275 0ustar liggesusers subroutine sortdi (v,lenv,a,ii,jj) c c puts into a the permutation vector which sorts v into c increasing order. only elements from ii to jj are considered. c arrays iu(k) and il(k) permit sorting up to 2**(k+1)-1 elements c v is returned sorted c this is a modification of cacm algorithm #347 by r. c. singleton, c which is a modified hoare quicksort. c integer lenv integer t,tt,ii,jj,iu(20),il(20) integer a(jj) double precision v(lenv), vt, vtt m=1 i=ii j=jj 10 if (i.ge.j) go to 80 20 k=i ij=(j+i)/2 t=a(ij) vt=v(ij) if (v(i).le.vt) go to 30 a(ij)=a(i) a(i)=t t=a(ij) v(ij)=v(i) v(i)=vt vt=v(ij) 30 l=j if (v(j).ge.vt) go to 50 a(ij)=a(j) a(j)=t t=a(ij) v(ij)=v(j) v(j)=vt vt=v(ij) if (v(i).le.vt) go to 50 a(ij)=a(i) a(i)=t t=a(ij) v(ij)=v(i) v(i)=vt vt=v(ij) go to 50 40 a(l)=a(k) a(k)=tt v(l)=v(k) v(k)=vtt 50 l=l-1 if (v(l).gt.vt) go to 50 tt=a(l) vtt=v(l) 60 k=k+1 if (v(k).lt.vt) go to 60 if (k.le.l) go to 40 if (l-i.le.j-k) go to 70 il(m)=i iu(m)=l i=k m=m+1 go to 90 70 il(m)=k iu(m)=j j=l m=m+1 go to 90 80 m=m-1 if (m.eq.0) return i=il(m) j=iu(m) 90 if (j-i.gt.10) go to 20 if (i.eq.ii) go to 10 i=i-1 100 i=i+1 if (i.eq.j) go to 80 t=a(i+1) vt=v(i+1) if (v(i).le.vt) go to 100 k=i 110 a(k+1)=a(k) v(k+1)=v(k) k=k-1 if (vt.lt.v(k)) go to 110 a(k+1)=t v(k+1)=vt go to 100 end mda/src/sslvrg.f0000644000176200001440000000730613176636732013315 0ustar liggesusersC Output from Public domain Ratfor, version 1.0 subroutine sslvrg(penalt,dofoff,x,y,w,ssw, n, knot,nk,coef, * sz,lev, crit,icrit, lambda, xwy, hs0,hs1,hs2,hs3, * sg0,sg1,sg2,sg3, abd,p1ip,p2ip,ld4,ldnk,info) C Purpose : C Compute smoothing spline for smoothing parameter lambda C and compute one of three `criteria' (OCV , GCV , "df match"). C See comments in ./sbart.f from which this is called integer n,nk,icrit,ld4,ldnk,info DOUBLE precision penalt,dofoff,x(n),y(n),w(n),ssw, & knot(nk+4), coef(nk),sz(n),lev(n), crit, lambda, * xwy(nk), hs0(nk),hs1(nk),hs2(nk),hs3(nk), * sg0(nk),sg1(nk),sg2(nk),sg3(nk), abd(ld4,nk), & p1ip(ld4,nk),p2ip(ldnk,nk) EXTERNAL bvalue double precision bvalue C local variables double precision vnikx(4,1),work(16) integer i,icoef,ileft,j,mflag, lenkno double precision b0,b1,b2,b3,eps, xv,rss,df, sumw c integer interv external interv lenkno = nk+4 ileft = 1 eps = 1d-11 C compute the coefficients coef() of estimated smooth do 1 i=1,nk coef(i) = xwy(i) abd(4,i) = hs0(i)+lambda*sg0(i) 1 continue do 4 i=1,(nk-1) abd(3,i+1) = hs1(i)+lambda*sg1(i) 4 continue do 6 i=1,(nk-2) 6 abd(2,i+2) = hs2(i)+lambda*sg2(i) do 8 i=1,(nk-3) 8 abd(1,i+3) = hs3(i)+lambda*sg3(i) c factorize banded matrix abd: call dpbfa(abd,ld4,nk,3,info) if(info.ne.0) then C matrix could not be factorized -> ier := info return endif c solve linear system (from factorize abd): call dpbsl(abd,ld4,nk,3,coef) C Value of smooth at the data points icoef = 1 do 12 i=1,n xv = x(i) 12 sz(i) = bvalue(knot,lenkno,coef, nk,4,xv,0) C Compute the criterion function if requested if(icrit .eq. 0)then return else C --- Ordinary or Generalized CV or "df match" --- C Get Leverages First call sinerp(abd,ld4,nk,p1ip,p2ip,ldnk,0) do 16 i=1,n xv = x(i) ileft = interv(knot(1), nk+1, xv, 0,0, ileft, mflag) if(mflag .eq. -1) then ileft = 4 xv = knot(4)+eps else if(mflag .eq. 1) then ileft = nk xv = knot(nk+1) - eps endif j=ileft-3 C call bspvd(knot,4,1,xv,ileft,4,vnikx,work) call bsplvd(knot,lenkno,4,xv,ileft,work,vnikx,1) b0=vnikx(1,1) b1=vnikx(2,1) b2=vnikx(3,1) b3=vnikx(4,1) lev(i) = ( & p1ip(4,j)*b0**2 + 2.*p1ip(3,j)*b0*b1 + * 2.*p1ip(2,j)*b0*b2 + 2.*p1ip(1,j)*b0*b3 + * p1ip(4,j+1)*b1**2 + 2.*p1ip(3,j+1)*b1*b2 + * 2.*p1ip(2,j+1)*b1*b3 + p1ip(4,j+2)*b2**2 + & 2.*p1ip(3,j+2)*b2*b3 + p1ip(4,j+3)*b3**2 & )*w(i)**2 16 continue C Evaluate Criterion if(icrit .eq. 1)then C Generalized CV rss = ssw df = 0d0 sumw = 0d0 c w(i) are `sqrt weights' scaled in ../R/smspline.R such c that sumw = number of observations with w(i) > 0 do 24 i=1,n rss = rss + ((y(i)-sz(i))*w(i))**2 df = df + lev(i) sumw = sumw + w(i)**2 24 continue crit = (rss/sumw)/((1d0-(dofoff + penalt*df)/sumw)**2) c call dblepr("spar", 4, spar, 1) c call dblepr("crit", 4, crit, 1) else if(icrit .eq. 2) then C Ordinary CV crit = 0d0 do 30 i = 1,n 30 crit = crit + (((y(i)-sz(i))*w(i))/(1-lev(i)))**2 crit = crit/n c call dblepr("spar", 4, spar, 1) c call dblepr("crit", 4, crit, 1) else C df matching crit = 0d0 do 32 i=1,n 32 crit = crit+lev(i) crit = 3 + (dofoff-crit)**2 endif return endif C Criterion evaluation end mda/src/sbart.f0000644000176200001440000002157213176636732013111 0ustar liggesusersC sbart() : The cubic spline smoother C ------- C Calls sgram (sg0,sg1,sg2,sg3,knot,nk) C stxwx (xs,ys,ws,n,knot,nk,xwy,hs0,hs1,hs2,hs3) C sslvrg (penalt,dofoff,xs,ys,ws,n,knot,nk, coef,sz,lev,crit,icrit, C spar,ratio, xwy, hs0,hs1,hs2,hs3, sg0,sg1,sg2,sg3, C abd,p1ip,p2ip,ld4,ldnk,ier) C C is itself called from qsbart() [./qsbart.f] which has only one work array C subroutine sbart(penalt,dofoff,xs,ys,ws,n,knot,nk, & coef,sz,lev, crit,icrit, & spar,ispar,lspar,uspar, & tol,isetup, xwy, & hs0,hs1,hs2,hs3, sg0,sg1,sg2,sg3, & abd,p1ip,p2ip,ld4,ldnk,ier) implicit none c ------------- C A Cubic B-spline Smoothing routine. C C The algorithm minimises: C C (1/n) * sum ws(i)**2 * (ys(i)-sz(i))**2 + lambda* int ( sz"(xs) )**2 dxs C C lambda is a function of the spar which is assumed to be between 0 and 1 C C INPUT C ----- C penalt A penalty > 1 to be used in the gcv criterion C n number of data points C ys(n) vector of length n containing the observations C ws(n) vector containing the weights given to each data point C xs(n) vector containing the ordinates of the observations C nk number of b-spline coefficients to be estimated C nk <= n+2 C knot(nk+4) vector of knot points defining the cubic b-spline basis. C To obtain full cubic smoothing splines one might C have (provided the xs-values are strictly increasing) C spar penalised likelihood smoothing parameter C ispar indicator saying if spar is supplied or to be estimated C lspar, uspar lower and upper values for spar; 0.,1. are good values C tol used in Golden Search routine C isetup setup indicator C icrit indicator saying which cross validation score C is to be computed C ld4 the leading dimension of abd (ie ld4=4) C ldnk the leading dimension of p2ip (not referenced) C OUTPUT C ------ C coef(nk) vector of spline coefficients C sz(n) vector of smoothed z-values C lev(n) vector of leverages C crit either ordinary of generalized CV score C ier error indicator C ier = 0 ___ everything fine C ier = 1 ___ spar too small or too big C problem in cholesky decomposition C Working arrays/matrix C xwy X'Wy C hs0,hs1,hs2,hs3 the diagonals of the X'WX matrix C sg0,sg1,sg2,sg3 the diagonals of the Gram matrix C abd(ld4,nk) [ X'WX + lambda*SIGMA ] in diagonal form C p1ip(ld4,nk) inner products between columns of L inverse C p2ip(ldnk,nk) all inner products between columns of L inverse C where L'L = [X'WX + lambda*SIGMA] NOT REFERENCED integer n, nk,isetup,icrit,ispar,ld4,ldnk,ier double precision penalt,dofoff,xs(n),ys(n),ws(n), & knot(nk+4), coef(nk),sz(n),lev(n), crit,spar,lspar,uspar,tol, & xwy(nk),hs0(nk),hs1(nk),hs2(nk),hs3(nk), & sg0(nk),sg1(nk),sg2(nk),sg3(nk), & abd(ld4,nk), p1ip(ld4,nk),p2ip(ldnk,nk) C Local variables double precision t1,t2,ratio, a,b,c,d,e,eps,xm,p, & q,r,tol1,tol2,u,v,w, fu,fv,fw,fx,x, ax,bx integer i common /XXXsbart/q C Compute SIGMA, X' W**2 X, X' W**2 z, trace ratio, s0, s1. C SIGMA -> sg0,sg1,sg2,sg3 C X' W**2 X -> hs0,hs1,hs2,hs3 C X' W**2 Z -> xwy C trevor fixed this 4/19/88 C Note: sbart uses the square of the weights C the following rectifies that if(n .ge. 1) then do 5 i=1,n if(ws(i).gt.0)then ws(i)=sqrt(ws(i)) endif 5 continue endif if(isetup.eq.0)then call sgram(sg0,sg1,sg2,sg3,knot,nk) call stxwx(xs,ys,ws,n,knot,nk,xwy,hs0,hs1,hs2,hs3) t1=0. t2=0. do 7 i=3,nk-3 t1 = t1 + hs0(i) t2 = t2 + sg0(i) 7 continue ratio = t1/t2 isetup = 1 C Compute estimate endif if(ispar.eq.1) then C Value of spar supplied call sslvrg(penalt,dofoff,xs,ys,ws,n,knot,nk, & coef,sz,lev,crit,icrit, & spar,ratio, xwy, & hs0,hs1,hs2,hs3, sg0,sg1,sg2,sg3, & abd,p1ip,p2ip,ld4,ldnk,ier) C check 2 C print 2999;2999 format(" got through check 2") else c ---- spar not supplied --> compute it ! ------------------------- C Use Forsythe Malcom and Moler routine to minimise criterion ax=lspar C f denotes the value of the criterion bx=uspar C C an approximation x to the point where f attains a minimum on C the interval (ax,bx) is determined. C C C input.. C C ax left endpoint of initial interval C bx right endpoint of initial interval C f function subprogram which evaluates f(x) for any x C in the interval (ax,bx) C tol desired length of the interval of uncertainty of the final C result ( .ge. 0.0) C C C output.. C C fmin abcissa approximating the point where f attains a minimum C C C the method used is a combination of golden section search and C successive parabolic interpolation. convergence is never much slower C than that for a fibonacci search. if f has a continuous second C derivative which is positive at the minimum (which is not at ax or C bx), then convergence is superlinear, and usually of the order of C about 1.324.... C the function f is never evaluated at two points closer together C than eps*abs(fmin) + (tol/3), where eps is approximately the square C root of the relative machine precision. if f is a unimodal C function and the computed values of f are always unimodal when C separated by at least eps*abs(x) + (tol/3), then fmin approximates C the abcissa of the global minimum of f on the interval ax,bx with C an error less than 3*eps*abs(fmin) + tol. if f is not unimodal, C then fmin may approximate a local, but perhaps non-global, minimum to C the same accuracy. C this function subprogram is a slightly modified version of the C algol 60 procedure localmin given in richard brent, algorithms for C minimization without derivatives, prentice - hall, inc. (1973). C C C DOUBLE precision a,b,c,d,e,eps,xm,p,q,r,tol1,tol2,u,v,w C DOUBLE precision fu,fv,fw,fx,x C C c is the squared inverse of the golden ratio C c = 0.5*(3. - sqrt(5d0)) C C eps is approximately the square root of the relative machine C precision. C c- eps = 1e0 c- 10 eps = eps/2e0 c- tol1 = 1e0 + eps c- if (tol1 .gt. 1e0) go to 10 c- eps = sqrt(eps) eps=.000244 C C initialization C a = ax b = bx v = a + c*(b - a) w = v x = v e = 0.0 spar = x call sslvrg(penalt,dofoff,xs,ys,ws,n,knot,nk, & coef,sz,lev,crit,icrit, & spar,ratio, xwy, & hs0,hs1,hs2,hs3, sg0,sg1,sg2,sg3, & abd,p1ip,p2ip,ld4,ldnk,ier) fx = crit fv = fx fw = fx C C main loop starts here C 20 xm = 0.5*(a + b) tol1 = eps*abs(x) + tol/3d0 tol2 = 2d0*tol1 C C check stopping criterion C if(abs(x - xm) .le. (tol2 - 0.5*(b - a))) go to 990 C C is golden-section necessary C if(abs(e) .le. tol1) go to 40 C C fit parabola C r = (x - w)*(fx - fv) q = (x - v)*(fx - fw) p = (x - v)*q - (x - w)*r q = 2.00*(q - r) if (q .gt. 0d0) p = -p q = abs(q) r = e e = d C C is parabola acceptable? Otherwise do golden-section C if (abs(p) .ge. abs(0.5*q*r)) go to 40 if (q .eq. 0d0) go to 40 C above line added by BDR; [the abs(.) >= abs() = 0 should have branched..] C COMMON above ensures q is NOT a register variable if (p .le. q*(a - x)) go to 40 if (p .ge. q*(b - x)) go to 40 C C a parabolic interpolation step C d = p/q u = x + d C C f must not be evaluated too close to ax or bx C if ((u - a) .lt. tol2) d = sign(tol1, xm - x) if ((b - u) .lt. tol2) d = sign(tol1, xm - x) go to 50 C -------- C C a golden-section step C 40 if (x .ge. xm) e = a - x if (x .lt. xm) e = b - x d = c*e C C f must not be evaluated too close to x C 50 if (abs(d) .ge. tol1) u = x + d if (abs(d) .lt. tol1) u = x + sign(tol1, d) spar = u call sslvrg(penalt,dofoff,xs,ys,ws,n,knot,nk, & coef,sz,lev,crit,icrit, & spar,ratio, xwy, & hs0,hs1,hs2,hs3, sg0,sg1,sg2,sg3, & abd,p1ip,p2ip,ld4,ldnk,ier) fu = crit C C update a, b, v, w, and x C if (fu .gt. fx) go to 60 if (u .ge. x) a = x if (u .lt. x) b = x v = w fv = fw w = x fw = fx x = u fx = fu go to 20 60 if(u .lt. x) then a = u else b = u endif if (fu .le. fw) go to 70 if (w .eq. x) go to 70 if (fu .le. fv) go to 80 if (v .eq. x) go to 80 if (v .eq. w) go to 80 go to 20 70 v = w fv = fw w = u fw = fu go to 20 80 v = u fv = fu go to 20 C C end of main loop C 990 continue spar = x crit = fx endif return end mda/src/rat/0000755000176200001440000000000013176636732012406 5ustar liggesusersmda/src/rat/dqrreg.r0000644000176200001440000000144710467142621014050 0ustar liggesuserssubroutine qrreg(nx,n,px,p,nclass,x,xsc,in,y,qpivot,qrank,beta,res,rss,cvar,var,varsc,scr1,work) implicit double precision (a-h,o-z) integer nx,n,p,px, qpivot(p),qrank,nclass,in(p) double precision x(nx,p), xsc(n,p), y(n,nclass),res(nx,nclass),beta(px,nclass),work(1),scr1(p),var(px,p),varsc(px,p) logical cvar ii=0 do j=1,p { if(in(j).eq.1){ ii=ii+1 do i=1,n { xsc(i,ii)=x(i,j) } }} nt=ii ijob=101 info=1 temp3=1d-2 do i=1,p {qpivot(i)=i} call dqrdca(xsc,n,n,nt,scr1,qpivot,work,qrank,temp3) # computes both fits and beta rss=0.0 do k=1,nclass{ call dqrsl(xsc,n,n,qrank,scr1,y(1,k),work(1),work(1),beta(1,k), work(1),res(1,k),ijob,info) do i=1,n { res(i,k)=y(i,k)-res(i,k); rss=rss+res(i,k)*res(i,k)} } if(cvar) {call calcvar(nx,n,px,xsc,qrank,qpivot,var,varsc,work)} return end mda/src/rat/splsm.r0000644000176200001440000001373710467142621013727 0ustar liggesuserssubroutine splsm(x,y,w,n,match,nef,spar,dof,smo,s0,cov,ifcov,work,lenw) #This subroutine performs a smoothing spline fit #All arguments are either double precision or integer #INPUT # #x double precision length n ; x variable for smoothing #y double precision length n ; y variable for smoothing #w double precision length n ; weights for smoothing, > 0 #n integer length above #match integer length n -- in S language x[i] == sort(unique(x)[match[i]] # match is produced by subroutine namat #nef number of unique elements in x; so match has values between 1 and nef+1 # missing data are given the match number nef+1 #spar double precision smoothing parameter 00, spar is used #dof double precision equivalent degrees of freedom # if dof > 0 and spar = 0 then dof is used to # select amount of smoothing # note: dof does not use the constant term #ifcov logical if true, the unscaled variance information is computed #work double precision workspace of length (10+2*4)*(nef+2)+5*nef+n+15 # #OUTPUT # #x,y,w,n,match,nef are untouched #spar if spar was 0 and dof was 0, then spar is that spar # that minimized gcv # if spar was 0 and dof > 0, then spar is that which achieves dof #dof the dof of the fitted smooth. Note: even if dof was given # as 4, it will be returned as say 3.995 which is what # spar produces #smo double precision length n the fitted values, with weighted average 0 #s0 double precision weighted mean of y #cov double precision length nef the unscaled variance elements for the NONLINEAR # and UNIQUE part of smo, in the order of sort(unique(x)) # cov is lev(i)/w(i) -h(i)/w where h(i) is the hat element from # the simple weighted least squares fit. This is passed on # to bakfit and used in gamcov # # splsm calls (eventually after some memory management dummy calls) # sbart, the spline routine of Finbarr O'Sullivan, slightly modified # by Trevor Hastie, 8/2/89 implicit double precision(a-h,o-z) integer n,match(n),nef,lenw double precision x(n),y(n),w(n),spar,dof,smo(n),s0,cov(n),work(lenw) logical ifcov # work should be (10+2*ld4)*nk+5*nef+n+15 double precision # ld4 =4 nk<= nef+2 call splsm1(x,y,w,n,match,nef,spar,dof,smo,s0,cov,ifcov, # xin(nef+1),yin(nef+1), win(nef+1), knot(n+6), work(1), work(nef+2),work(2*nef+3),work(3*nef+4), work(3*nef+n+10),lenw) return end subroutine splsm1(x,y,w,n,match,nef,spar,dof,smo,s0,lev,ifcov, xin,yin,win,knot, work,lenw) implicit double precision(a-h,o-z) integer n,match(n),nef,lenw double precision x(n),y(n),w(n),spar,dof,smo(n),s0,lev(n),work(lenw) logical ifcov double precision xin(nef+1),yin(nef+1),win(nef+1),knot(nef+4) integer nk,ldnk,ld4,k double precision xmin,xrange call suff(n,nef,match,x,y,w,xin,yin,win,work(1)) xmin=xin(1) xrange=xin(nef)-xin(1) do i=1,nef {xin(i)=(xin(i)-xmin)/xrange} call sknotl(xin,nef,knot,k) nk=k-4 ld4=4 ldnk=1 # p21p nd ldnk is not used call splsm2(x,y,w,n,match,nef,spar,dof,smo,s0,lev,ifcov, xin,yin,win,knot, # coef(nk),sout(nef+1), levout(nef+1), xwy(nk), # hs0(nk), hs1(nk), hs2(nk), # hs3(nk), # sg0(nk), sg1(nk), sg2(nk), # sg3(nk), # abd(ld4,nk), p1ip(ld4,nk), # p2ip(ldnk,nk) work(1), work(nk+1), work(nk+nef+2),work(nk+2*nef+3), work(2*nk+2*nef+3),work(3*nk+2*nef+3),work(4*nk+2*nef+3), work(5*nk+2*nef+3), work(6*nk+2*nef+3),work(7*nk+2*nef+3),work(8*nk+2*nef+3), work(9*nk+2*nef+3), work(10*nk+2*nef+3),work((10+ld4)*nk+2*nef+3), work((10+2*ld4)*nk+2*nef+3), ld4,ldnk,nk) return end subroutine splsm2(x,y,w,n,match,nef,spar,dof,smo,s0,lev,ifcov, xin,yin,win,knot, coef,sout,levout,xwy, hs0,hs1,hs2,hs3, sg0,sg1,sg2,sg3, abd,p1ip,p2ip,ld4,ldnk,nk) implicit double precision(a-h,o-z) integer n,match(n),nef double precision x(n),y(n),w(n),spar,dof,smo(n),s0,lev(n) integer nk,ldnk,ld4 logical ifcov double precision xin(nef+1),yin(nef+1),win(nef+1),knot(nk+4) double precision coef(nk),sout(nef+1),levout(nef+1),xwy(nk), hs0(nk),hs1(nk),hs2(nk),hs3(nk), sg0(nk),sg1(nk),sg2(nk),sg3(nk), abd(ld4,nk),p1ip(ld4,nk),p2ip(ldnk,1) # local variables integer ispar,icrit,isetup,ier double precision lspar,uspar,tol,penalt, sumwin,dofoff,crit,xbar,dsum double precision wmean crit=0e0 if(spar==0e0){ ispar=0 dofoff=0e0 if(dof==0e0) {icrit=2 } else {dofoff=dof+1e0;icrit=3} } else {ispar=1;dofoff=0e0;icrit=3} isetup=0 ier=1 penalt=1e0 lspar=1e-10 uspar=1.5 tol=1e-3 call sbart(penalt,dofoff,xin,yin,win,nef,knot,nk, coef,sout,levout, crit,icrit,spar,ispar,lspar,uspar,tol, isetup, xwy, hs0,hs1,hs2,hs3, sg0,sg1,sg2,sg3, abd,p1ip,p2ip,ld4,ldnk,ier) # # if ier ne 0, repeat the above call reducing uspar # nit=0 while((ier != 0) & (nit <7)) { crit=0e0;spar=0 if(spar==0e0){ ispar=0 dofoff=0e0 if(dof==0e0) {icrit=2 } else {dofoff=dof+1e0;icrit=3} } else {ispar=1;dofoff=0e0;icrit=3} isetup=0 ier=1 penalt=1e0 lspar=1e-10 tol=1e-3 nit=nit+1 uspar=.9+(uspar-.9)*.5 call sbart(penalt,dofoff,xin,yin,win,nef,knot,nk, coef,sout,levout, crit,icrit,spar,ispar,lspar,uspar,tol, isetup, xwy, hs0,hs1,hs2,hs3, sg0,sg1,sg2,sg3, abd,p1ip,p2ip,ld4,ldnk,ier) } #return #now clean up dof=0e0 sumwin=0e0 do i=1,nef { win(i)=win(i)*win(i) #we sqrted them in sbart } sbar=wmean(nef,sout,win) xbar=wmean(nef,xin,win) do i=1,nef sumwin=sumwin+win(i) s0=wmean(n,y,w) do i=1,nef {lev(i)=(xin(i)-xbar)*sout(i) } xsbar=wmean(nef,lev,win) do i=1,nef {lev(i)=(xin(i)-xbar)**2 } dsum=wmean(nef,lev,win) do i=1,nef { if(win(i)>0e0) { lev(i)=levout(i)/win(i)-1e0/sumwin -lev(i)/(sumwin*dsum) } else {lev(i)=0e0} } do i=1,nef {dof=dof+lev(i)*win(i)} dof=dof+1e0 do i=1,nef sout(i)=sout(i)-sbar -(xin(i)-xbar)*xsbar/dsum call unpack(n,nef,match,sout,smo) return end double precision function wmean(n,y,w) integer n double precision y(n),w(n),wtot,wsum wtot=0e0 wsum=0e0 do i=1,n{ wsum=wsum+y(i)*w(i) wtot=wtot+w(i) } if(wtot > 0e0) {wmean=wsum/wtot} else {wmean=0e0} return end mda/src/rat/sknotl.r0000644000176200001440000000164410467142621014075 0ustar liggesuserssubroutine sknotl(x,n,knot,k) implicit double precision(a-h,o-z) integer n,k,ndk,j double precision x(n),knot(n+6),a1,a2,a3,a4 # Allocate knots acording to the cutoffs given below # Cutoff constants a1 = log(50e0)/log(2e0) ; a2 = log(100e0)/log(2e0) a3 = log(140e0)/log(2e0) ; a4 = log(200e0)/log(2e0) # Cutoff Criteria if(n<50) { ndk = n } else if (n>=50 & n<200) { ndk = 2.**(a1+(a2-a1)*(n-50.)/150.) } else if (n>=200 & n<800) { ndk = 2.**(a2+(a3-a2)*(n-200.)/600.) } else if (n>=800 & n<3200) { ndk = 2.**(a3+(a4-a3)*(n-800.)/2400.) } else if (n>=3200) { ndk = 200. + (n-3200)**.2 } k = ndk + 6 # Allocate Knots ( note no account is taken of any weighting vector ) do j=1,3 { knot(j) = x(1) } do j=1,ndk { knot(j+3) = x( 1 + (j-1)*(n-1)/(ndk-1) ) } do j=1,3 { knot(ndk+3+j) = x(n) } return end mda/src/rat/dorthreg.r0000644000176200001440000000101710467142621014373 0ustar liggesuserssubroutine orthreg(nx,n,p,x,in, y,res) # # does lin reg of y on x. assumes that x is orthogonal with cols > 1 having mean 0 # # # "in" is a vector of column indicators (0 means term is to be deleted) implicit double precision (a-h,o-z) integer n,nx,p, in(p) double precision x(nx,p),y(n),res(n) do i=1,n { res(i)=y(i) } do j=1,p { if(in(j).eq.1){ temp1=0 temp2=0 do i=1,n { temp1=temp1+res(i)*x(i,j) temp2=temp2+x(i,j)*x(i,j) } beta=temp1/temp2 do i=1,n { res(i)=res(i)-beta*x(i,j) } }} return end mda/src/rat/sspl00.r0000644000176200001440000000113112542401700013663 0ustar liggesuserssubroutine sspl00(x,y,w,n,p,knot,nk,method,tol,wp,match,nef,center, dfoff,dfmax,cost,lambda,df,cv,gcv,coef,s,lev, xrange,work,ier) integer n,p,nk,method,ier,nef, nefp1, n2,match(1),center double precision x(n),y(n,p),w(n),knot(nk+4),tol,wp(p), dfoff,dfmax,cost,lambda,df,cv,gcv,coef(1),s(n,p),lev(nef), xrange(2),work(1) #workspace must be (2*p+2)*nefp1 + (p+16)*nk + n +p logical center2 if(center==0){center2=.false.} else {center2=.true.} call sspl0(x,y,w,n,p,knot,nk,method,tol,wp,match,nef,center2, dfoff,dfmax,cost,lambda,df,cv,gcv,coef,s,lev, xrange,work,ier) return end mda/src/rat/README0000644000176200001440000000024612542422320013246 0ustar liggesusersWarning: this ratfor does not correspond to the fortran code. The latter has been changed by ?? and no longer corresponds. This cost TH one day of misery in June 2015mda/src/rat/tmatch.r0000644000176200001440000000123610467142621014040 0ustar liggesuserssubroutine pack(n,p,match,x,xbar) integer n,p,match(n) double precision x(n),xbar(n) do i=1,p xbar(i)=0e0 do i=1,n xbar(match(i))=xbar(match(i))+x(i) return end subroutine suff(n,p,match,x,y,w,xbar,ybar,wbar,work) integer n,p,match(n) double precision x(n),xbar(n),y(n),ybar(n),w(n),wbar(n),work(n) call pack(n,p,match,w,wbar) do i=1,n xbar(match(i))=x(i) do i=1,n work(i)=y(i)*w(i) call pack(n,p,match,work,ybar) do i=1,p{ if(wbar(i)>0e0) ybar(i)=ybar(i)/wbar(i) else ybar(i)=0e0 } return end subroutine unpack(n,p,match,xbar,x) integer n,p, match(n) double precision x(n),xbar(p+1) if(p sg[] # X'WX -> hs[] # X'WY -> xwy[] call sgram(sg(1,1),sg(1,2),sg(1,3),sg(1,4),knot,nk) call stxwx2(x,y,w,n,ldy,p,knot,nk,xwy,hs(1,1),hs(1,2),hs(1,3),hs(1,4)) # Compute estimate if(method==1) {# Value of lambda supplied call sslvr2(x,y,w,n,ldy,p,knot,nk,method,tol,wp,ssy, dfoff,cost,lambda,df,cv,gcv,coef,s,lev, xwy,hs(1,1),hs(1,2),hs(1,3),hs(1,4), sg(1,1),sg(1,2),sg(1,3),sg(1,4),abd,p1ip,ier) } else {# Use Forsythe, Malcom and Moler routine to minimise criterion call fmm(x,y,w,n,ldy,p,knot,nk,method,tol,wp,ssy, dfoff,cost,lambda,df,cv,gcv,coef,s,lev, xwy,hs,sg,abd,p1ip,ier) if(method>2&df>dfmax){ df=dfmax call fmm(x,y,w,n,ldy,p,knot,nk,2,tol,wp,ssy, dfoff,cost,lambda,df,cv,gcv,coef,s,lev, xwy,hs,sg,abd,p1ip,ier) } } return end subroutine fmm(xs,ys,ws,n,ldy,nvar,knot,nk,method,tol,wp,ssy, dfoff,cost,lambda,df,cv,gcv,coef,s,lev, xwy,hs,sg,abd,p1ip,ier) double precision xs(n),ys(ldy,nvar),ws(n),knot(nk+4),tol,wp(nvar),ssy(nvar), dfoff,cost,lambda,df,cv,gcv,coef(nk,nvar),s(ldy,nvar),lev(n), xwy(nk,nvar),hs(nk,4),sg(nk,4),abd(4,nk),p1ip(4,nk) integer n,ldy,nvar,nk,method,ier # Local variables double precision t1,t2,ratio, a,b,c,d,e,eps,xm,p,q,r,tol1,tol2,u,v,w, fu,fv,fw,fx,x,targdf, ax,bx integer i ax=1d-10 #used to be lspar bx=1.5 #used to be uspar t1=0. ; t2=0. targdf=df do i=3,nk-3 { t1 = t1 + hs(i,1) } do i=3,nk-3 { t2 = t2 + sg(i,1) } ratio = t1/t2 # # an approximation x to the point where f attains a minimum on # the interval (ax,bx) is determined. # # # input.. # # ax left endpoint of initial interval # bx right endpoint of initial interval # f function subprogram which evaluates f(x) for any x # in the interval (ax,bx) # tol desired length of the interval of uncertainty of the final # result ( .ge. 0.0) # # # output.. # # fmin abcissa approximating the point where f attains a minimum # # # the method used is a combination of golden section search and # successive parabolic interpolation. convergence is never much slower # than that for a fibonacci search. if f has a continuous second # derivative which is positive at the minimum (which is not at ax or # bx), then convergence is superlinear, and usually of the order of # about 1.324.... # the function f is never evaluated at two points closer together # than eps*dabs(fmin) + (tol/3), where eps is approximately the square # root of the relative machine precision. if f is a unimodal # function and the computed values of f are always unimodal when # separated by at least eps*dabs(x) + (tol/3), then fmin approximates # the abcissa of the global minimum of f on the interval ax,bx with # an error less than 3*eps*dabs(fmin) + tol. if f is not unimodal, # then fmin may approximate a local, but perhaps non-global, minimum to # the same accuracy. # this function subprogram is a slightly modified version of the # algol 60 procedure localmin given in richard brent, algorithms for # minimization without derivatives, prentice - hall, inc. (1973). # # # double precision a,b,c,d,e,eps,xm,p,q,r,tol1,tol2,u,v,w # double precision fu,fv,fw,fx,x # # c is the squared inverse of the golden ratio # c = 0.5*(3. - dsqrt(5d0)) # # eps is approximately the square root of the relative machine # precision. # eps = 1d0 10 eps = eps/2d0 tol1 = 1d0 + eps if (tol1 .gt. 1d0) go to 10 eps = dsqrt(eps) # # initialization # a = ax b = bx v = a + c*(b - a) w = v x = v e = 0.0 lambda = ratio*16.**(-2. + x*(6.)) call sslvr2(xs,ys,ws,n,ldy,nvar,knot,nk,method,tol,wp,ssy, dfoff,cost,lambda,df,cv,gcv,coef,s,lev, xwy,hs(1,1),hs(1,2),hs(1,3),hs(1,4), sg(1,1),sg(1,2),sg(1,3),sg(1,4),abd,p1ip,ier) switch(method){ case 2: fx=3d0+(targdf-df)**2 case 3: fx=gcv case 4: fx=cv } fv = fx fw = fx # # main loop starts here # 20 xm = 0.5*(a + b) tol1 = eps*dabs(x) + tol/3d0 tol2 = 2d0*tol1 # # check stopping criterion # if (dabs(x - xm) .le. (tol2 - 0.5*(b - a))) go to 90 # # is golden-section necessary # if (dabs(e) .le. tol1) go to 40 # # fit parabola # r = (x - w)*(fx - fv) q = (x - v)*(fx - fw) p = (x - v)*q - (x - w)*r q = 2.00*(q - r) if (q .gt. 0.0) p = -p q = dabs(q) r = e e = d # # is parabola acceptable # 30 if (dabs(p) .ge. dabs(0.5*q*r)) go to 40 if (p .le. q*(a - x)) go to 40 if (p .ge. q*(b - x)) go to 40 # # a parabolic interpolation step # d = p/q u = x + d # # f must not be evaluated too close to ax or bx # if ((u - a) .lt. tol2) d = dsign(tol1, xm - x) if ((b - u) .lt. tol2) d = dsign(tol1, xm - x) go to 50 # # a golden-section step # 40 if (x .ge. xm) e = a - x if (x .lt. xm) e = b - x d = c*e # # f must not be evaluated too close to x # 50 if (dabs(d) .ge. tol1) u = x + d if (dabs(d) .lt. tol1) u = x + dsign(tol1, d) lambda = ratio*16.**(-2. + u*(6.)) call sslvr2(xs,ys,ws,n,ldy,nvar,knot,nk,method,tol,wp,ssy, dfoff,cost,lambda,df,cv,gcv,coef,s,lev, xwy,hs(1,1),hs(1,2),hs(1,3),hs(1,4), sg(1,1),sg(1,2),sg(1,3),sg(1,4),abd,p1ip,ier) switch(method){ case 2: fu=3d0+(targdf-df)**2 case 3: fu=gcv case 4: fu=cv } # # update a, b, v, w, and x # if (fu .gt. fx) go to 60 if (u .ge. x) a = x if (u .lt. x) b = x v = w fv = fw w = x fw = fx x = u fx = fu go to 20 60 if (u .lt. x) a = u if (u .ge. x) b = u if (fu .le. fw) go to 70 if (w .eq. x) go to 70 if (fu .le. fv) go to 80 if (v .eq. x) go to 80 if (v .eq. w) go to 80 go to 20 70 v = w fv = fw w = u fw = fu go to 20 80 v = u fv = fu go to 20 # # end of main loop # 90 continue if(method==2){call sslvr2(xs,ys,ws,n,ldy,nvar,knot,nk,1,tol,wp,ssy, dfoff,cost,lambda,df,cv,gcv,coef,s,lev, xwy,hs(1,1),hs(1,2),hs(1,3),hs(1,4), sg(1,1),sg(1,2),sg(1,3),sg(1,4),abd,p1ip,ier)} return end subroutine stxwx2(x,z,w,k,ldy,pz,xknot,n,y,hs0,hs1,hs2,hs3) implicit double precision(a-h,o-z) double precision z(ldy,pz),w(k),x(k),xknot(n+4), y(n,pz),hs0(n),hs1(n),hs2(n),hs3(n), eps,vnikx(4,1),work(16) # local integer k,n,pz,ldy, j,i,pp,ileft,mflag # local # Initialise the output vectors do i=1,n { hs0(i)=0d0 hs1(i)=0d0 hs2(i)=0d0 hs3(i)=0d0 do j=1,pz { y(i,j)=0d0 } } # Compute X'WX -> hs0,hs1,hs2,hs3 and X'WZ -> y eps = .1d-9 do i=1,k { call interv(xknot(1),(n+1),x(i),ileft,mflag) if(mflag== 1) { if(x(i)<=(xknot(ileft)+eps)){ileft=ileft-1} else{return} } call bsplvd (xknot,4,x(i),ileft,work,vnikx,1) j= ileft-4+1 do pp=1,pz {y(j,pp) = y(j,pp)+w(i)*z(i,pp)*vnikx(1,1)} hs0(j)=hs0(j)+w(i)*vnikx(1,1)**2 hs1(j)=hs1(j)+w(i)*vnikx(1,1)*vnikx(2,1) hs2(j)=hs2(j)+w(i)*vnikx(1,1)*vnikx(3,1) hs3(j)=hs3(j)+w(i)*vnikx(1,1)*vnikx(4,1) j= ileft-4+2 do pp=1,pz {y(j,pp) = y(j,pp)+w(i)*z(i,pp)*vnikx(2,1)} hs0(j)=hs0(j)+w(i)*vnikx(2,1)**2 hs1(j)=hs1(j)+w(i)*vnikx(2,1)*vnikx(3,1) hs2(j)=hs2(j)+w(i)*vnikx(2,1)*vnikx(4,1) j= ileft-4+3 do pp=1,pz {y(j,pp) = y(j,pp)+w(i)*z(i,pp)*vnikx(3,1)} hs0(j)=hs0(j)+w(i)*vnikx(3,1)**2 hs1(j)=hs1(j)+w(i)*vnikx(3,1)*vnikx(4,1) j= ileft-4+4 do pp=1,pz {y(j,pp) = y(j,pp)+w(i)*z(i,pp)*vnikx(4,1)} hs0(j)=hs0(j)+w(i)*vnikx(4,1)**2 } return end subroutine sslvr2(x,y,w,n,ldy,p,knot,nk,method,tol,wp,ssy, dfoff,cost,lambda,df,cv,gcv,coef,sz,lev, xwy,hs0,hs1,hs2,hs3,sg0,sg1,sg2,sg3, abd,p1ip,info) implicit double precision(a-h,o-z) double precision x(n),y(ldy,p),w(n),knot(nk+4),tol,wp(p),ssy(p), dfoff,cost,lambda,df,cv,gcv,coef(nk,p),sz(ldy,p),lev(n), xwy(nk,p), hs0(nk),hs1(nk),hs2(nk),hs3(nk), sg0(nk),sg1(nk),sg2(nk),sg3(nk), abd(4,nk),p1ip(4,nk) integer n,p,ldy,nk,method,info #local storage double precision b0,b1,b2,b3,eps,vnikx(4,1),work(16), xv,bvalue,rss,tssy integer ld4,i,icoef,ileft,ilo,j,mflag logical fittoo fittoo= (method!=2) ilo = 1 ; eps = .1d-10 ; ld4=4 # Purpose : Solves the smoothing problem and computes the # criterion functions (CV and GCV). # The coeficients of estimated smooth if(fittoo){ do i=1,nk { do j=1,p {coef(i,j) = xwy(i,j) } } } do i=1,nk { abd(4,i) = hs0(i)+lambda*sg0(i) } do i=1,(nk-1) { abd(3,i+1) = hs1(i)+lambda*sg1(i) } do i=1,(nk-2) { abd(2,i+2) = hs2(i)+lambda*sg2(i) } do i=1,(nk-3) { abd(1,i+3) = hs3(i)+lambda*sg3(i) } call dpbfa(abd,ld4,nk,3,info) if(info.ne.0) { return } if(fittoo){ do j=1,p{ call dpbsl(abd,ld4,nk,3,coef(1,j)) } # Value of smooths at the data points icoef = 1 do i=1,n { xv = x(i) do j=1,p{ sz(i,j) = bvalue(knot,coef(1,j),nk,4,xv,0) } } } # Compute the criterion functions # Get Leverages First call sinrp2(abd,ld4,nk,p1ip) do i=1,n { xv = x(i) call interv(knot(1),(nk+1),xv,ileft,mflag) if(mflag==-1) { ileft = 4 ; xv = knot(4)+eps } if(mflag==1) { ileft = nk ; xv = knot(nk+1)-eps } j=ileft-3 call bsplvd(knot,4,xv,ileft,work,vnikx,1) b0=vnikx(1,1);b1=vnikx(2,1);b2=vnikx(3,1);b3=vnikx(4,1) lev(i) = (p1ip(4,j)*b0**2 + 2.*p1ip(3,j)*b0*b1 + 2.*p1ip(2,j)*b0*b2 + 2.*p1ip(1,j)*b0*b3 + p1ip(4,j+1)*b1**2 + 2.*p1ip(3,j+1)*b1*b2 + 2.*p1ip(2,j+1)*b1*b3 + p1ip(4,j+2)*b2**2 + 2.*p1ip(3,j+2)*b2*b3 + p1ip(4,j+3)*b3**2 )*w(i) } # Evaluate Criteria rss = 0d0 ; df = 0d0 ; sumw=0d0;gcv=0d0;cv=0d0; do i=1,n { df = df + lev(i) } if(fittoo){ do i=1,n { sumw = sumw + w(i) do j=1,p{ rss = rss + w(i)*wp(j)*(y(i,j)-sz(i,j))**2 cv = cv +w(i)*wp(j)*((y(i,j)-sz(i,j))/(1-lev(i)))**2 } } tssy=0d0 do j=1,p{tssy=tssy+wp(j)*ssy(j)} gcv=((rss+tssy)/sumw)/((1d0-((dfoff+df-1)*cost+1)/sumw)**2) #note: the weights should sum to n (the number of original observations) cv=(cv+tssy)/sumw } #lev includes the weights #Note that this version of cv omits ALL observations at #tied x values, since the data are already collapsed here return end subroutine sinrp2(abd,ld4,nk,p1ip) implicit double precision(a-h,o-z) double precision abd(ld4,nk),p1ip(ld4,nk), wjm3(3),wjm2(2),wjm1(1),c0,c1,c2,c3 integer ld4,nk,i,j # Purpose : Computes Inner Products between columns of L(-1) # where L = abd is a Banded Matrix with 3 subdiagonals # A refinement of Elden's trick is used. # Coded by Finbarr O'Sullivan wjm3(1)=0d0; wjm3(2)=0d0; wjm3(1)=0d0 wjm2(1)=0d0; wjm2(2)=0d0 wjm1(1)=0d0 do i=1,nk { j=nk-i+1 c0 = 1d0/abd(4,j) if(j<=nk-3) { c1 = abd(1,j+3)*c0 c2 = abd(2,j+2)*c0 c3 = abd(3,j+1)*c0 } else if(j==nk-2) { c1 = 0d0 c2 = abd(2,j+2)*c0 c3 = abd(3,j+1)*c0 } else if(j==nk-1) { c1 = 0d0 c2 = 0d0 c3 = abd(3,j+1)*c0 } else if(j==nk) { c1 = 0d0 c2 = 0d0 c3 = 0d0 } p1ip(1,j) = 0d0- (c1*wjm3(1)+c2*wjm3(2)+c3*wjm3(3)) p1ip(2,j) = 0d0- (c1*wjm3(2)+c2*wjm2(1)+c3*wjm2(2)) p1ip(3,j) = 0d0- (c1*wjm3(3)+c2*wjm2(2)+c3*wjm1(1)) p1ip(4,j) = c0**2 + c1**2*wjm3(1)+2.*c1*c2*wjm3(2)+2.*c1*c3*wjm3(3) + c2**2*wjm2(1)+2.*c2*c3*wjm2(2) + c3**2*wjm1(1) wjm3(1)=wjm2(1) ; wjm3(2)=wjm2(2) ; wjm3(3)=p1ip(2,j) wjm2(1)=wjm1(1) ; wjm2(2)=p1ip(3,j); wjm1(1)=p1ip(4,j) } return end subroutine suff2(n,p,ny,match,y,w,ybar,wbar,ssy,work) integer match(n),n,ny,p,i,j double precision y(n,ny),ybar(p+1,ny),w(n),wbar(p+1),ssy(ny),work(n) double precision tsum #ssy is the within response variability that is lost by collapsing call pack(n,p,match,w,wbar) do j=1,ny{ do i=1,n work(i)=y(i,j)*w(i) call pack(n,p,match,work,ybar(1,j)) do i=1,p{ if(wbar(i)>0d0) ybar(i,j)=ybar(i,j)/wbar(i) else ybar(i,j)=0d0 } call unpack(n,p,match,ybar(1,j),work) tsum=0d0 do i=1,n tsum=tsum+ w(i)*(y(i,j)-work(i))**2 ssy(j)=tsum } return end subroutine sspl0(x,y,w,n,p,knot,nk,method,tol,wp,match,nef,center, dfoff,dfmax,cost,lambda,df,cv,gcv,coef,s,lev, xrange,work,ier) double precision x(n),y(n,p),w(n),knot(nk+4),tol,wp(p), dfoff,dfmax,cost,lambda,df,cv,gcv,coef(1),s(n,p),lev(nef), xrange(2),work(1) #workspace must be (2*p+2)*nefp1 + (p+16)*nk + n +p integer n,p,nk,method,ier,nef, nefp1, n2,match(1) logical center double precision xmiss,sigtol,xdiff,temp if(nef==0){# match has not been initialized xmiss=1d20 sigtol=1d-5 call namat(x,match,n,nef,work,work(n+1),xmiss,sigtol) xrange(1)=work(1) #work is actually the sorted unique xs xrange(2)=work(nef) } else{ do i=1,n {work(match(i))=x(i)} } xdiff=xrange(2)-xrange(1) do i=1,nef {work(i)=(work(i)-xrange(1))/xdiff} if(nk==0){ call sknotl(work,nef,knot,nk) nk=nk-4 } if(dfmax > dble(nk))dfmax=dble(nk) if(cost>0){ temp=dble(n-dble(center))/cost - dfoff if(dfmax>temp)dfmax=temp } nefp1=nef+1 n2=nefp1*(2*p+2)+1 call sspl1(x,y,w,n,p,knot,nk,method,tol,wp,match,nef,nefp1,center, dfoff,dfmax,cost,lambda,df,cv,gcv,coef,s,lev, work(1),work(nefp1+1), #xin,yin work(nefp1*(p+1)+1),work(nefp1*(p+2)+1), #win, sout work(n2),work(n2+p*nk),work(n2+(p+4)*nk), #xwy, hs,sg work(n2+(p+8)*nk),work(n2+(p+12)*nk),work(n2+(p+16)*nk), work(n2+(p+16)*nk+p),ier) return end #Memory management subroutine subroutine sspl1(x,y,w,n,p,knot,nk,method,tol,wp,match,nef,nefp1,center, dfoff,dfmax,cost,lambda,df,cv,gcv,coef,s,lev, xin,yin,win,sout, xwy,hs,sg,abd,p1ip,ssy,work,ier) double precision x(n),y(n,p),w(n),knot(nk+4),tol,wp(p), dfoff,dfmax,cost,lambda,df,cv,gcv,coef(nk,p),s(n,p),lev(nef), xin(nefp1),yin(nefp1,p),win(nefp1),sout(nefp1,p), xwy(nk,p),hs(nk,4),sg(nk,4),abd(4,nk),p1ip(4,nk), ssy(p),work(n) integer n,p,nefp1,nk,method,ier,match(n),nef logical center double precision sbar, wmean,tdfoff call suff2(n,nef,p,match,y,w,yin,win,ssy,work) if(center){ if(cost>0){tdfoff=dfoff-1/cost} } call sspl(xin,yin,win,nef,nefp1,p,knot,nk,method,tol,wp,ssy, tdfoff,dfmax,cost,lambda,df,cv,gcv,coef,sout,lev, xwy,hs,sg,abd,p1ip,ier) #now unpack the results do j=1,p{ call unpack(n,nef,match,sout(1,j),s(1,j)) if(center){ sbar=wmean(nef,sout(1,j),win) do i=1,n{ s(i,j)=s(i,j)-sbar} } } if(center)df=df-1 return end subroutine namat(x,match,n,nef,work,iwork,xmiss,tol) #returns match (order) and work(1:nef) is the sorted unique x implicit double precision(a-h,o-z) integer match(1),n,nef,iwork(1),index double precision x(1),xmiss,work(1),tol,xend,xstart do i=1,n { work(i)=x(i) iwork(i)=i } call sortdi(work,n,iwork,1,n) xstart=x(iwork(1)) index=n xend=x(iwork(n)) while(xend >= xmiss & index > 1){ index=index-1 xend=x(iwork(index)) } tol=tol*(xend-xstart) index=1 work(1)=xstart for(i=1;i<=n;i=i+1){ while((x(iwork(i))-xstart)n)goto 10 } xstart= x(iwork(i)) index=index+1 match(iwork(i))=index work(index)=xstart } 10 if(xstart >= xmiss) {nef=index-1} else {nef=index} return end subroutine simfit(x,y,w,n,p,dfoff,cost,wp,gcv,coef,s,type,center,work) # # computes constant and linear fits, and selects the best using gcv # implicit double precision (a-h,o-z) integer n,p,type double precision x(n),y(n,p),w(n),cost,dfoff,wp(p),gcv,coef(2,p), s(n,p),work(p) logical center double precision sx,sy,sumw, dcent,sxx,syy,sxy dcent=1-dble(center) #center is F for no centering, else T #Note: if type enters 1 or 2, no selection is made sumw=0d0;gcvc=0d0; do i=1,n { sumw=sumw+w(i) } if(type!=1){#either 0 or 2 in which case the linear is needed as well sx=0.0 ; sxx=0.0; gcvl=0d0; do i=1,n { sx=sx+w(i)*x(i) } xbar=sx/sumw do i=1,n { sxx=sxx+w(i)*(x(i)-xbar)*x(i) } } do j=1,p{ sy=0d0;syy=0d0; do i=1,n{ sy=sy+w(i)*y(i,j) } work(j)=sy/sumw do i=1,n{ syy=syy+w(i)*(y(i,j)-work(j))*y(i,j) } gcvc=gcvc+wp(j)*syy if(type!=1){ #once again, do for linear as well sxy=0.0; do i=1,n{ sxy=sxy+w(i)*(x(i)-xbar)*y(i,j) } coef(2,j)=sxy/sxx gcvl=gcvl+wp(j)*(syy -sxy*coef(2,j)) } } if(type==0){ gcvc =gcvc/ (sumw* (1 - (dfoff*cost + dcent)/sumw)**2 ) gcvl=gcvl/(sumw* (1 - (dcent + (dfoff +1)* cost)/sumw)**2) if(gcvc<=gcvl){ type=1 gcv=gcvc } else{ type=2 gcv=gcvl } } else { if(type==1) {gcv=gcvc/(sumw* (1 - (dfoff*cost + dcent)/sumw)**2 )} else {gcv=gcvl/(sumw* (1 - (dcent + (dfoff + 1)*cost)/sumw)**2)} } if(type==1){ do j=1,p{ coef(1,j)=work(j)*dcent coef(2,j)=0d0 do i=1,n {s(i,j)=coef(1,j)} } } else{ do j=1,p{ coef(1,j)=work(j)*dcent-xbar*coef(2,j) do i=1,n {s(i,j)=coef(1,j)+coef(2,j)*x(i)} } } return end subroutine sspl2(x,y,w,n,p,knot,nk,wp,match,nef, dfoff,dfmax,cost,lambda,df,gcv,coef,s,type,center, xrange,work,tol,ier) double precision x(n),y(n,p),w(n),knot(nk+4),wp(p), dfoff,dfmax,cost,lambda,df,gcv,coef(1),s(n,p), xrange(2),work(1),tol #this routine selects from the linear and constant model as well #see documentation for sspl #workspace must be (2*p+2)*nefp1 + (p+16)*nk + 2*n #if type>0 then no selection is performed; the fit is simply computed. integer n,p,nk,nef,type,match(n),ier,method double precision coef1,coef2,cv logical center #center is F for no centering, else T if(type==3){ method=1 call sspl0(x,y,w,n,p,knot,nk,method,tol,wp,match,nef,center, dfoff,dfmax,cost,lambda,df,cv,gcv,coef,s,work(1), xrange,work(n+1),ier) return } if(type>0){ call simfit(x,y,w,n,p,dfoff,cost,wp,gcv,coef,s, type,center,work) df=dble(type)- dble(center) return } #selection is being performed method=3 call sspl0(x,y,w,n,p,knot,nk,method,tol,wp,match,nef,center, dfoff,dfmax,cost,lambda,df,cv,gcv,coef,s,work(1), xrange,work(n+1),ier) gcv1=gcv call simfit(x,y,w,n,p,dfoff,cost,wp,gcv,work,work(2*p+1),type,center, work((n+2)*p+1)) if(gcv<=gcv1){ #the coef swapping is so as not to destroy the spline coefs if needed df=dble(type)- dble(center) do j=1,p{ coef1=work(1+(j-1)*2) coef2=work(2+(j-1)*2) if(type==1){ do i=1,n {s(i,j)=coef1} } else{ do i=1,n {s(i,j) =coef1+coef2*x(i)} } coef(1+(j-1)*2)=coef1 coef(2+(j-1)*2)=coef2 } } else{ type=3 gcv=gcv1 } return end subroutine psspl2(x,n,p,knot,nk,xrange,coef,coefl,s,order,type) implicit double precision(a-h,o-z) #make predictions from a fitted smoothing spline double precision x(n),knot(nk+4),xrange(2),coef(nk,p),coefl(2,1),s(n,p) integer n,p,nk,order, type double precision ytemp switch(type){ case 1:{ do j=1,p{ if(order>=1){ytemp=0d0} else {ytemp=coefl(1,j)} do i=1,n {s(i,j)=ytemp} } } case 2:{ if(order>=1){ do j=1,p{ if(order==1){ytemp=coefl(2,j)} else {ytemp=0d0} do i =1,n {s(i,j)=ytemp} } } else{ do j=1,p{ do i=1,n {s(i,j)=coefl(1,j)+coefl(2,j)*x(i)} } } } case 3: { call psspl(x,n,p,knot,nk,xrange,coef,s,order) } } return end subroutine psspl(x,n,p,knot,nk,xrange,coef,s,order) implicit double precision(a-h,o-z) #make predictions from a fitted smoothing spline, linear or constant double precision x(n),knot(nk+4),xrange(2),coef(nk,p),s(n,p) integer n,p,nk,order double precision xcs,xmin,xdif, endv(2),ends(2),xends(2),stemp double precision bvalue integer where if(order>2|order<0)return xdif=xrange(2)-xrange(1) xmin=xrange(1) xends(1)=0d0 xends(2)=1d0 do j=1,p{ if(order==0){ endv(1)=bvalue(knot,coef(1,j),nk,4,0d0,0) endv(2)=bvalue(knot,coef(1,j),nk,4,1d0,0) } if(order<=1){ ends(1)=bvalue(knot,coef(1,j),nk,4,0d0,1) ends(2)=bvalue(knot,coef(1,j),nk,4,1d0,1) } do i=1,n{ xcs=(x(i)-xmin)/xdif where=0 if(xcs<0d0){where=1} if(xcs>1d0){where=2} if(where>0){#beyond extreme knots switch(order){ case 0: stemp=endv(where)+ (xcs-xends(where))*ends(where) case 1: stemp=ends(where) case 2: stemp=0d0 } } else {stemp=bvalue(knot,coef(1,j),nk,4,xcs,order)} if(order>0){s(i,j)=stemp/(xdif**dble(order))} else s(i,j)=stemp } } return end mda/src/rat/dmarss.r0000644000176200001440000004744312530450233014055 0ustar liggesuserssubroutine marss(nx,n,p,nclass,y,x,w,tagx,maxorder,mmax,penalty,thresh,forwstep,interms,prune,bx,fullin,lenb, bestgcv, bestin, flag, cut,dir, res,alpha,beta, scrat,iscrat,trace) # # multivariate mars # # input # # integer nx- number of rows of x, bx, and tagx # integer n- number of observations # integer p- number of variables # integer nclass - number of classes (resposne variables) # double precision y(n,nclass)- matrix of response values # double precision x(nx,p) -matrix of predictors # double precision w(n)- weights (ge 0) # integer tagx(nx,p) - tag array for sorting x # integer maxorder- maxumum order of interaction (mi in Friedman's notation) # # integer mmax- maximum number of basis functions (nk in Friedman's notation) # if it is desired to add say 3 terms to an existing model, one can set mmax=interms+3 # and set interms appropriately (see below) # # double precision penalty- cost per knot selection (df in Friedman's notation) # # double precision thresh- forward stepwise threshold - forw step stops if (rss/rssnull).le.thresh) # to prevent numerical problems with overfit solutions # # logical forwstep- if true, forward stepwise is carried out. if false, procedure # starts with basis matrix bx and carried out backward stepwise. This saves # a great deal of time in choosing the penalty parameter # # integer interms- number of terms in existing model. for a fresh start interms=1. # # logical prune- true if pruning (backward stepwise deletion) is desired # # # # # # double precision bx(nx,mmax)- basis matrix- used on input only if interms>1 or forwstep=false # # integer fullin(mmax)- basis column indicator. columns marked with a 1 indicate active # columns- used on input only if interms>1 or forwstep=false # # integer lenb- number of active columns of bx - # used on input only if interms>1 or forwstep=false # # double precision res(n,nclass) - residuals - used as input only if interms>1, in which case they # should be the residuals from the current fitted model # # double precision scrat(1)- scratch array of length at least # 1+n+ 2*n*mmax +4*mmax*mmax +3*mmax + 3*mmax*nclass +3*nclass # +28n+51 (for linpack) # # integer iscrat(1)- scratch array of length at least 4*mmax # #logical trace - should there be a printing of progress # # # output # # double precision bx(nx,mmax)- basis matrix. only first lenb columns are active. first column is 1 # integer fullin(mmax)- basis column indicator. columns marked with a 1 indicate # the linearly indep set # integer lenb- number of active columns of bx # double precision bestgcv- gcv for best model # integer bestin(mmax) basis column indicator for best model. 1 indicates term is in model # integer flag(mmax,p)- ijth element is 1 if predictor j is in model term i # (zero otherwise). note for a zero column of bx (fullin=0), the row of flag # will be all 1, for a technical reason, it should be ignored of course. # # double precision cut(mmax,p) - ijth element cutpoint for variable j in model term i # double precision dir(mmax,p) - ijth element is 1 if factor involving predictor j in term i is # of the form (x-t)+ ; it is -1 if it has the form (t-x)+ # # double precision res(n,nclass) - residuals from final fit # double precision alpha(nclass)- intercepts from final fit # double precision beta(mmax,nclass)- slopes from final fit implicit double precision (a-h,o-z) integer nx, n,p,nclass,tagx(nx,p),maxorder,mmax,bestin(mmax),flag(mmax,p), fullin(mmax) double precision y(n,nclass),x(nx,p),w(n),bx(nx,mmax),bestgcv,cut(mmax,p),dir(mmax,p),res(nx,nclass), alpha(nclass),beta(mmax,nclass) double precision scrat(1) integer iscrat(1) logical forwstep, prune, trace, tracec common tracec tracec=trace # iscrat must be of len at least 3*mmax # scrat must be of length at least # 1+n+ 2*n*mmax +4*mmax*mmax +3*mmax + 3*mmax*nclass +3*nclass #1. bxorth #2. bxorthm #3. cov #4. covsy #5. ybar #6. scr1 #7. scr5 #8. scr6 #9. temp #10. bxsc #11. r #12. betasc, #13 #14 #15 work len1=n*mmax len2=mmax len3=mmax*mmax len4=mmax*nclass len5=nclass len6=mmax len7=mmax len8=nclass len9=n len10=n*mmax len11=mmax*mmax len12=mmax*nclass len13=mmax*mmax len14=mmax*mmax n1=1 n2=n1+len1 n3=n2+len2 n4=n3+len3 n5=n4+len4 n6=n5+len5 n7=n6+len6 n8=n7+len7 n9=n8+len8 n10=n9+len9 n11=n10+len10 n12=n11+len11 n13=n12+len12 n14=n13+len13 n15=n14+len14 call marsnew1(nx,n,p,nclass,y,x,w,tagx,maxorder,mmax,bx,bestgcv, bestin,fullin,lenb,flag, cut,dir,res, alpha,beta,penalty,thresh,forwstep,interms,prune, scrat,scrat(n2),scrat(n3),scrat(n4),scrat(n5), scrat(n6),scrat(n7),scrat(n8),scrat(n9), scrat(n10),scrat(n11),scrat(n12),scrat(n13),scrat(n14),scrat(n15), iscrat,iscrat(1+mmax),iscrat(1+2*mmax),iscrat(1+3*mmax)) return end subroutine marsnew1(nx,n,p,nclass,y,x,w,tagx,maxorder,mmax,bx,bestgcv, bestin,fullin,lenb,flag, cut,dir,res,alpha,beta,penalty,thresh,forwstep,interms,prune, bxorth,bxorthm,cov,covsy,ybar, scr1,scr5,scr6, temp, bxsc, r, betasc,varsc,var,work, termlen,in, tempin, qpivot) # input n,p,nclass,x,tagx,y,w,mmax,maxorder # nclass is # of response variables # output- bestin, bestgcv, flag, cut,dir, bx,res implicit double precision (a-h,o-z) integer n,nterms2,p,mmax,flag(mmax,p),tagx(nx,p),termlen(mmax), nclass,fullin(mmax) double precision cov(mmax,mmax),covsy(mmax,nclass), critmax,x(nx,p),bx(nx,mmax),bxorth(n,mmax),bxorthm(mmax),y(n,nclass),ybar(nclass), scr1(mmax),scr5(mmax),scr6(nclass) double precision temp(n),w(n), cut(mmax,p),dir(mmax,p),alpha(nclass),beta(mmax,nclass), bxsc(n,mmax), r(mmax,mmax), dofit, res(nx,nclass),betasc(mmax,nclass), varsc(mmax,mmax), var(mmax,mmax), stopfac,work(1) integer tempin(mmax), bestin(mmax),qrank, qpivot(mmax) logical forwstep,go, prune, newform, cvar, trace common trace # # forw stepwise stops if gcv/gcvnull > stopfac, to avoid adding lots of # noisy terms # double precision rtemp(4) integer itemp(4) tolbx=.01 stopfac=10.0 #stopfac=10e9 prevcrit=10e9 #write(6,*) "in marsnew mmax=",mmax, " forwstep=",forwstep, "interms=",interms #call intpr("M1",2,n,1) #call dblepr("penalty",7,penalty,1) #call intpr("maxo",4,maxorder,1) if(interms.eq.1) {dofit=0} else{dofit=0;do j=2,lenb {dofit=dofit+fullin(j)} nterms=interms } if(forwstep){ fullin(1)=1 do i=2,mmax{ fullin(i)=0 } do i=1,n { w(i)=1 } do i=1, mmax{ termlen(i)=0 do j=1, p{ flag(i,j)=0 cut(i,j)=0 }} nterms=1; nterms2=2; do i=1,n { bx(i,1)=1 bxorth(i,1)=1.0/dsqrt(dfloat(n)) } bxorthm(1)=1/dsqrt(dfloat(n)) do i=1,n { do j=1, mmax{ bx(i,j)=0.0 }} do i=1,n { bx(i,1)=1 } do k=1, nclass{ ybar(k)=0.0 do i=1,n { ybar(k)=ybar(k)+y(i,k)/n }} if(interms.eq.1){ rssnull=0.0 do k=1, nclass{ do i=1,n { rssnull=rssnull+(y(i,k)-ybar(k))**2 }} } else{ rssnull=0.0 do k=1, nclass{ do i=1,n { rssnull=rssnull+res(i,k)**2 }} } rss=rssnull cmm= (1+dofit) + penalty*(.5*dofit) gcvnull=(rssnull/n)/(1.0-cmm/n)**2 #write(6,*) "initial rss=", rssnull, " initial gcv=", gcvnull if(trace)call dblepr("initial rss=",11,rssnull,1) if(trace)call dblepr("initial gcv=",11,gcvnull,1) lenb=1 ii=interms-1 go=.true. while( (ii.lt.(mmax-1)).and.((rss/rssnull).gt.thresh).and.go){ ii=ii+2 # write(6,*) "bef addtrm",ii, nterms do i1=1, nterms{ do i2=1, nterms{ cov(i1,i2)=0 }} do j=1, nterms{ cov(j,j)=0.0 do i=1,n { cov(j,j)=cov(j,j)+(bxorth(i,j)-bxorthm(j))*(bxorth(i,j)-bxorthm(j)) } } do k=1,nclass{ do j=1, nterms{ covsy(j,k)=0.0 do i=1,n { covsy(j,k)=covsy(j,k)+(y(i,k)-ybar(k))*bxorth(i,j) } } } do ik=1,mmax { tempin(ik)=fullin(ik)} call addtrm(nx,bx,tempin,bxorth,bxorthm,p,n,nclass,rss,prevcrit, cov,covsy,y,ybar,x,tagx,w,termlen,mmax,tolbx, nterms,flag,maxorder,scr1,scr5,scr6,imax,jmax,kmax,critmax, newform,bxsc, r, betasc, temp) # check whether to accept term doftemp=dofit doftemp=doftemp+1 if((imax>1).and.(newform)) {doftemp=doftemp+1} temprss=rss-critmax cmm= (1+doftemp) + penalty*(.5*doftemp) gcv=(temprss/n)/(1.0-cmm/n)**2 go=.false. if(((critmax/rss).gt.thresh).and.((gcv/gcvnull).lt.stopfac)){ go=.true. dofit=doftemp rss=rss-critmax kk=tagx(imax,jmax) #write(6,256) jmax, imax ,kmax, critmax,x(kk,jmax), rss,gcv, dofit 256 format(" ","adding term"," jmax=",i3, " imax=",i3 ," kmax=",i3, " critmax= ",f8.2, " cutp=", f9.5," rss=",f8.2, " gcv=",f8.2, " dofit=",f9.3) # write(6,*) itemp(1)=jmax;itemp(2)=imax;itemp(3)=kmax; rtemp(1)=critmax;rtemp(2)=x(kk,jmax);rtemp(3)=rss;rtemp(4)=gcv if(trace) call intpr("adding term ",12,ii,1) if(trace)call intpr("var, sp index, parent",21,itemp,3) if(trace)call dblepr("critmax cut rss gcv",19,rtemp,4) prevcrit=critmax do j=1,p { flag(ii,j)=flag(kmax,j) flag(ii+1,j)=flag(kmax,j) cut(ii,j)=cut(kmax,j) cut(ii+1,j)=cut(kmax,j) dir(ii,j)=dir(kmax,j) dir(ii+1,j)=dir(kmax,j) } termlen(ii)=termlen(kmax)+1 termlen(ii+1)=termlen(kmax)+1 do i=1,n { temp(i)=x(tagx(i,jmax),jmax)} temp1=temp(imax) fullin(ii)=1; if((imax.gt.1).and.(newform)) {fullin(ii+1)=1 } flag(ii,jmax)=1; flag(ii+1,jmax)=1; cut(ii,jmax)=temp1 cut(ii+1,jmax)=temp1 dir(ii,jmax)=1 dir(ii+1,jmax)=-1 # #this is to prevent trying to split a 0 column later if(fullin(ii+1).eq.0) { #do j=1,p {flag(ii+1,j)=1} # termlen(ii+1)=maxorder+1 } do i=1,n { if( (x(i,jmax)-temp1).gt.0) bx(i,ii)=bx(i,kmax)*(x(i,jmax)-temp1) if((temp1-x(i,jmax)).ge.0) bx(i,ii+1)=bx(i,kmax)*(temp1-x(i,jmax)) } if(nterms.eq.1){ temp1=0.0; do i=1,n { temp1=temp1+bx(i,2)/n; } do i=1,n {bxorth(i,2)=bx(i,2)-temp1;} } else{ ## write(6,*) "bef call to orthreg" call orthreg(n,n,nterms,bxorth,fullin, bx(1,ii),bxorth(1,nterms2)) } if(fullin(ii+1).eq.1){ call orthreg(n,n,nterms+1,bxorth,fullin, bx(1,ii+1),bxorth(1,nterms2+1)) # } else {do i=1,n {bxorth(i,nterms2+1)=0}} bxorthm(nterms2)=0.0 ; bxorthm(nterms2+1)=0.0 do i=1,n { bxorthm(nterms2)=bxorthm(nterms2)+bxorth(i,nterms2)/n bxorthm(nterms2+1)=bxorthm(nterms2+1)+bxorth(i,nterms2+1)/n } temp1=0.0;temp2=0.0;do i=1,n {temp1=temp1+bxorth(i,nterms2)**2 temp2=temp2+bxorth(i,nterms2+1)**2 } ##write(6,*) "norm of new columns",temp1,temp2 if (temp1.gt.0.0) {do i=1,n { bxorth(i,nterms2) =bxorth(i,nterms2)/dsqrt(temp1) }} if (temp2.gt.0.0) {do i=1,n { bxorth(i,nterms2+1)=bxorth(i,nterms2+1)/dsqrt(temp2) }} lenb=lenb+2 nterms=nterms+2; nterms2=nterms2+2; }} #write(6,*) "stopping forw stepwise" #if((rss/rssnull).le.thresh) write(6,*) "rss ratio=",rss/rssnull #if((critmax/rss).le.thresh) write(6,*) "crit ratio=",critmax/rss #if((gcv/gcvnull).gt.stopfac) write(6,*) "gcv ratio=",gcv/gcvnull rtemp(1)=rss/rssnull;rtemp(2)=critmax/rss;rtemp(3)=gcv/gcvnull if(trace)call dblepr("stopping forw step; rss crit and gcv ratios",43,rtemp,3) if(trace){ if((rss/rssnull).le.thresh) call dblepr("rss ratio=",10,rss/rssnull,1) if((critmax/rss).le.thresh) call dblepr ("crit ratio=",11,critmax/rss,1) call dblepr("critmax",7,critmax,1) call dblepr("rss",3,rss,1) if((gcv/gcvnull).gt.stopfac) call dblepr("gcv ratio=",10,gcv/gcvnull,1) } # write(6,*) "after forward step ","go=",go," rss=",rss, "nterms=", nterms } #call intpr("M2",2,fullin,10) #call intpr("nterms",6,nterms,1) dofit= -1 do i=1,nterms{ bestin(i)=fullin(i) dofit=dofit+fullin(i) } #call intpr("M21",3,n,1) if(trace)call intpr("aft forw step",13,nterms,1) ##added by Trevor 5/24/2015 cvar=.false. call qrreg(nx,n,mmax,lenb,nclass,bx,bxsc,bestin,y,qpivot,qrank,beta,res,rss,cvar,var,varsc,scr1, work) #call dblepr("rss",3,rss,1) #call dblepr("beta",4,beta,4) #call intpr("M3",2,n,1) nt=dofit+1 if(qrank< nt) { #write(6,*) "singular matrix" do i=qrank+1,nt{ bestin(qpivot(i))=0 fullin(qpivot(i))=0 #write(6,*) "removing col ",qpivot(i) dofit=dofit-1; } } ##write(6,*) "bef mlin", nterms,dofit,(bestin(j),j=1,nterms),y(1,1),n,mmax,nclass,w(1) cvar=.true. #call intpr("M23",3,fullin,11) #call intpr("bestin",6,bestin,11) # #call intpr("lenb",4,lenb,1) #call intpr("mmax",4,mmax,1) #call dblepr("res",3,res,10) #call dblepr("bx",2,bx(1,1),5) #call dblepr("bx",2,bx(1,2),5) #call dblepr("bx",2,bx(n,11),1) #call dblepr("y",1,y,5) #call intpr("nx",2,nx,1) #call intpr("n",1,n,1) #write(6,*) "rank=",qrank, "rss=",rss rssfull=rss # dofit is the number of nonconstant, indep basis fns in the model cmm= (1+dofit) + penalty*(.5*dofit) bestgcv=(rss/n)/(1.0-cmm/n)**2 #write(6,*) "full model,gcv=",bestgcv, " rss=",rssfull, "dofit=",dofit rtemp(1)=bestgcv; rtemp(2)=rssfull;rtemp(3)=dofit if(trace)call dblepr("full model: gcv rss dofit",25,rtemp,3) if(trace)call intpr("terms",5,fullin,lenb) # after forward stepwise, nterms and lenb = # of columns of bx # dofit is number of nonzero columns if(prune){ do i=1,mmax{ tempin(i)=bestin(i)} #write(6,*) "initial tempin", (tempin(i),i=1,nterms) #call intpr("M5",2,n,1) while(dofit>0 ) { jo=1;rsstemp=10e99;minterm=0 do ii=2, lenb { if(tempin(ii).eq.1) { jo=jo+1 temp7=0.0 do kc=1,nclass{ temp7=temp7+beta(jo,kc)**2/var(jo,jo) } if(temp7 < rsstemp) {minterm=ii; rsstemp=temp7} }} rss=rss+rsstemp dofit=dofit-1; cmm= (1.0+dofit) + penalty*(.5*dofit) gcv=(rss/n)/(1.0-cmm/n)**2 tempin(minterm)=0 # write(6,100) minterm,gcv, rss,dofit,(tempin(ik),ik=1,lenb) 100 format(" ","pruning, minterm= ",i4, " gcv=",f9.3,2x, " rss=",f9.3,2x," dof=",f9.3, " model= ",60(i1,1x)) if(gcv< bestgcv) {bestgcv=gcv;do i=1,mmax {bestin(i)=tempin(i);}} if(dofit > 0) { cvar=.true. call qrreg(nx,n,mmax,lenb,nclass,bx,bxsc,tempin,y,qpivot,qrank,beta,res,rss,cvar,var,varsc,scr1,work) } } call qrreg(nx,n,mmax,lenb,nclass,bx,bxsc,bestin,y,qpivot,qrank,beta,res,rss,cvar,var,varsc, scr1, work) #write(6,101) bestgcv,rss,(bestin(ik),ik=1,lenb) 101 format(" ","best model gcv=",f9.3," rss=",f9.3,2x,"model= ",60(i1,1x)) if(trace)call intpr("best model",10,bestin,lenb) if(trace)call dblepr(" gcv=",4,bestgcv,1) } return end subroutine addtrm(nx,bx,tempin,bxorth,bxorthm,p,n,nclass, rss,prevcrit,cov,covsy,y,ybar,x,tagx,w,termlen,mmax,tolbx, nterms,flag,maxorder,scr1,scr5,scr6,imax,jmax,kmax,critmax, newform,bxsc,r,betasc, scrat) implicit double precision (a-h,o-z) integer n,nterms,nterms2,p,mmax,flag(mmax,p),v,tagx(nx,p),termlen(mmax), nclass, tempin(mmax), minspan, iendspan double precision cov(mmax,mmax),covsy(mmax,nclass), critmax,x(nx,p),bx(nx,mmax),bxorth(n,mmax),bxorthm(mmax),y(n,nclass),ybar(nclass), scr1(mmax),scr5(mmax),scr6(nclass), bxsc(n,mmax), r(mmax,mmax), betasc(mmax,nclass), scrat(n),w(n) double precision temp1, temp2, scr2,sumb, sumbx, su, st, tem logical newform, tnewform, trace common trace critmax=0;jmax=0;imax=0;kmax=0; # finds best term to add to current mars model ##write(6,*) "in addtrm n,p, nclass, nterms,mmax, y(1,1), x(1,1), tagx(1,1),flag(1,1),bx(1,1#),bxorth(1,1)", n,p, nclass, nterms,mmax, y(1,1), x(1,1), tagx(1,1),flag(1,1),bx(1,1),bxor#th(1,1) do m=1,nterms { nm=0 do jjj=1,n { if(bx(jjj,m).gt.0) {nm=nm+1} } # tem=-(1d0/(n*nm))*dlog(1d0 - 5d-2) n should be p thanks to Gints Jekabsons/Stephen Milborrow tem=-(1d0/(p*nm))*dlog(1d0 - 5d-2) minspan= -1d0*(dlog(tem)/dlog(2d0))/2.5 # tem=(5d-2)/n n should be p thanks to Gints Jekabsons/Stephen Milborrow tem=(5d-2)/p iendspan=3d0-dlog(tem)/dlog(2d0) # # write(6,*) "minspan,iendspan",minspan,iendspan if(termlen(m)< maxorder){ do v=1,p { if(flag(m,v).eq.0){ # check if model term type is already in model, to avoid a linear dependence tnewform=.true. mm=1 while((mm.le.nterms).and.tnewform) { mm=mm+1 if(tempin(mm).eq.1){ tnewform=.false. if(flag(mm,v).ne.1){tnewform=.true.;go to 9911} do j=1,p {if(j.ne.v) { if(flag(mm,j).ne.flag(m,j)) {tnewform=.true.;go to 9911 }}} } 9911 continue } # if new form of term, fit term bm*x # should it be bxorth below? if(tnewform) { nterms2=nterms+1 do i=1,n { scrat(i)=x(i,v)*bx(i,m) } # # if(nterms>1){ call orthreg(n,n,nterms,bxorth,tempin, scrat,bxorth(1,nterms2)) } else{ tem=0;do i=1,n {tem=tem+scrat(i)/n;} do i=1,n{ bxorth(i,2)=scrat(i)-tem} } bxorthm(nterms2)=0.0 ; do i=1,n { bxorthm(nterms2)=bxorthm(nterms2)+bxorth(i,nterms2)/n } temp1=0.0;do i=1,n {temp1=temp1+bxorth(i,nterms2)**2} if (temp1.gt.tolbx) {do i=1,n { bxorth(i,nterms2)=bxorth(i,nterms2)/dsqrt(temp1) }} else {do i=1,n {bxorth(i,nterms2)=0};tnewform=.false.;} do i1=1, nterms2{ cov(i1,nterms2)=0.0 cov(nterms2, i1)=0.0 } cov(nterms2,nterms2)=1 do kc=1,nclass{ covsy(nterms2,kc)=0.0 do i=1,n { covsy(nterms2,kc)=covsy(nterms2,kc)+(y(i,kc)-ybar(kc))*bxorth(i,nterms2) } } critnew=0.0 do kc=1,nclass { temp1=0 do i=1,n { temp1=temp1+y(i,kc)*bxorth(i,nterms2)} critnew=critnew+temp1**2 } ## write(6,*) "geoff",nterms,v,critnew if(critnew.gt.critmax) { jmax=v critmax=critnew imax=1 kmax=m } } if(tnewform) {nterms2=nterms+1; nterms21=nterms+2} else{nterms2=nterms; nterms21=nterms+1;critnew=0.0} #if((nterms.eq.7).and.(v.eq.2)) { # call dblepr("bxorth",6,bxorth(1,nterms2),10) # call dblepr("temp1",5,temp1,1) # call dblepr("critmax",7,critmax,1) #} # try other knot locations do kc=1, nclass{ covsy(nterms21,kc)=0 } do ii=1,nterms21 { cov(ii,nterms21)=0 cov(nterms21,ii)=0 } do kc=1,nclass { scr6(kc)=0 } do ii=1,nterms21{ scr1(ii)=0; } scr2=0;su=0;st=0;sumbx2=0;sumb=0.0;sumbx=0.0; for (k=n-1;k>0;k=k-1) { do i=1,nterms2 { kk=tagx(k,v) kk1=tagx(k+1,v) scr1(i)=scr1(i)+(bxorth(kk1,i)-bxorthm(i))*bx(kk1,m) cov(i,nterms21)=cov(i,nterms21)+ (x(kk1,v)-x(kk,v))*scr1(i) cov(nterms21,i)=cov(i,nterms21) } scr2=scr2+(bx(kk1,m)**2)*x(kk1,v) sumbx2=sumbx2+bx(kk1,m)**2 sumb=sumb+bx(kk1,m) sumbx=sumbx+bx(kk1,m)*x(kk1,v) su=st st=sumbx-sumb*x(kk,v) cov(nterms21,nterms21)= cov(nterms21,nterms21)+ (x(kk1,v)-x(kk,v))*(2*scr2-sumbx2*(x(kk,v)+x(kk1,v)))+ ( (su*su)-(st*st) )/n crittemp=critnew do kc=1, nclass{ scr6(kc)=scr6(kc)+(y(kk1,kc)-ybar(kc))*bx(kk1,m) covsy(nterms21,kc)=covsy(nterms21,kc )+(x(kk1,v)-x(kk,v))*scr6(kc) temp1=covsy(nterms21,kc) temp2=cov(nterms21,nterms21) do jk=1,nterms2 { temp1=temp1-covsy(jk,kc)*cov(jk,nterms21) temp2=temp2-cov(jk,nterms21)*cov(jk,nterms21) } # # this has to be fixed!! # if(cov(nterms21,nterms21)>0){ if((temp2/cov(nterms21,nterms21)) > tolbx) {critadd=(temp1*temp1)/temp2} else {critadd=0.0}} else{critadd=0} crittemp=crittemp+critadd #if((nterms.eq.7).and.(v.eq.2).and.(critadd.gt.0)) { #call intpr("k",1,k,1) #call dblepr("temp2",5,temp2,1) #call dblepr("cov",3,cov(nterms21,nterms21),1) # call dblepr("critadd",7,critadd,1) # call dblepr("crittemp",8,crittemp,1) #} if(crittemp.gt.(1.01*rss)) {crittemp=0.0} if(crittemp.gt.(2*prevcrit)) {crittemp=0.0} } if(k.gt.1){ k0=tagx(k-1,v) } # # decide whether to accept term # #if((k.eq.70).and.(v.eq.10)){ ##write(6,*) "HI",k,v,critmax,minspan,mod(k,minspan),iendspan,n-iendspan,x(kk,v),x(kk0,v) #} #call intpr("k",1,k,1) #call intpr("v",1,v,1) #call dblepr("crittemp",8,crittemp,1) #call intpr("minspan",7,minspan,1) #call intpr("iendspan",8,iendspan,1) if((crittemp.gt.critmax).and.(mod(k,minspan).eq.0).and. (k.ge.iendspan).and.(k.le.(n-iendspan)).and.(bx(kk1,m).gt.0).and. (.not.((k.gt.1).and.(x(kk,v).eq.x(k0,v))) )) { jmax=v critmax=crittemp imax=k kmax=m newform=tnewform } } } 9999 continue }} } return end mda/src/rat/dcalcvar.r0000644000176200001440000000135710467142621014343 0ustar liggesuserssubroutine calcvar(nx,n,px,qr,qrank,qpivot,cov,tmpcov,work) implicit double precision (a-h,o-z) integer n,px,qrank,qpivot(px) double precision qr(nx,px),cov(px,px), tmpcov(px,px),work(1) double precision dsum integer i,j,km # compute the unscaled coviance matrix for the linear coefficients do i=1,qrank{ do j=1,qrank{ tmpcov(i,j)=0d0 cov(i,j)=qr(i,j) } tmpcov(i,i)=1e0 } info=0 # # notice I have put px in as the row dim of cov # call dbksl(cov,px,qrank,tmpcov,px,info) do i=1,qrank{ do j=i,qrank{ dsum=0e0 km=max(i,j) for(k=km;k<=qrank;k=k+1){ dsum=dsum+tmpcov(i,k)*tmpcov(j,k) } tmpcov(i,j)=dsum tmpcov(j,i)=dsum } } # no do i=1,qrank{ do j=1,qrank{ cov(i,j)=tmpcov(i,j) } } return end mda/src/rat/bruto.r0000644000176200001440000000654710467142621013725 0ustar liggesuserssubroutine bruto(x,n,q,y,p,w,knot,nkmax,nk,wp,match,nef, dfmax,cost,lambda,df,coef,type,xrange, gcvsel,gcvbak,dfit,maxit,nit, eta,resid,thresh,work,trace) implicit double precision(a-h,o-z) double precision x(n,q),y(n,p),w(n),knot(nkmax+4,q),wp(p), dfmax(q),cost,lambda(q),df(q),coef(nkmax*p,q),xrange(2,q), gcvsel(q,maxit(1)),gcvbak(q,maxit(2)),dfit(q,maxit(1)), eta(n,p),resid(n,p),thresh,work(1) integer n,q,p,nkmax,nk(q),match(n,q),nef(q),type(q),maxit(2), nit(2) logical trace, select #Compute residuals do j=1,p{ do i=1,n{resid(i,j)=y(i,j)-eta(i,j)} } #bruto backfitting with selection select=.true. call bakssp(select,x,n,q,y,p,w,knot,nkmax,nk,wp,match,nef, dfmax,cost,lambda,df,coef,type,xrange, gcvsel,dfit,maxit(1),nit(1),eta,resid,thresh*10d0,work,trace) #regular backfitting select=.false. call bakssp(select,x,n,q,y,p,w,knot,nkmax,nk,wp,match,nef, dfmax,cost,lambda,df,coef,type,xrange, gcvbak,dfit,maxit(2),nit(2),eta,resid,thresh,work,trace) do j=1,p{ do i=1,n{eta(i,j)=y(i,j)-resid(i,j)} } return end subroutine bakssp(select,x,n,q,y,p,w,knot,nkmax,nk,wp,match,nef, dfmax,cost,lambda,df,coef,type,xrange, gcv,dfit,maxit,nit,s,resid,thresh,work,trace) implicit double precision(a-h,o-z) double precision x(n,q),y(n,p),w(n),knot(nkmax+4,q),wp(p), dfmax(q),cost,lambda(q),df(q),coef(nkmax*p,q), xrange(2,q),gcv(q,maxit),dfit(q,maxit), s(n,p),resid(n,p),thresh,work(1) integer n,q,p,nkmax,nk(q),match(n,q),nef(q),type(q),maxit,nit,ier,ntype double precision dfoff, gcv0, ndf,gcv1,gcvrat,ndfoff,wmean,sbar,rss,tol logical center, select, trace center=.true. tol=1d-3 # this is the convergence criterion for gcv #remove the mean from the residuals, and compute rss rss=0d0 do j=1,p{ sbar=wmean(n,resid(1,j),w) do i=1,n{ resid(i,j)=resid(i,j) - sbar work(i)=resid(i,j)**2 } rss=rss+wp(j)*wmean(n,work,w) } dfoff=0 do k=1,q {dfoff=dfoff+df(k)} gcv1=rss/((1-(1+dfoff*cost)/n)**2) gcvrat=1d0 nit=0 while(nitthresh ){ gcv0=gcv1 nit=nit+1 do k=1,q{ gcv(k,nit)=gcv1 if(!select&type(k)==1)next # form partial residuals if necessary if(type(k)>1){ #get the fitted values call psspl2(x(1,k),n,p,knot(1,k),nk(k),xrange(1,k), coef(1,k),coef(1,k),s,0,type(k)) do j=1,p{ sbar=wmean(n,s(1,j),w) do i=1,n{resid(i,j)=resid(i,j) + s(i,j)-sbar} } } ndfoff=dfoff-df(k) if(select) {ntype=0} else {ntype=type(k)} call sspl2(x(1,k),resid,w,n,p,knot(1,k),nk(k),wp,match(1,k), nef(k),ndfoff,dfmax(k),cost,lambda(k),ndf, gcv1,coef(1,k),s,ntype,center, xrange(1,k),work,tol,ier) gcv(k,nit)=gcv1 if(select){ dfit(k,nit)=ndf df(k)=ndf dfoff=ndfoff+ndf type(k)=ntype } if(type(k)>1){ do j=1,p{ do i=1,n{ resid(i,j)=resid(i,j) - s(i,j) } } } } gcvrat=dabs(gcv1-gcv0)/gcv0 if(trace){ call intpr("outer iteration",15,nit,1) call dblepr("gcv ",5,gcv1,1) call dblepr("ratio",5,gcvrat,1) } } return end subroutine pbruto(x,n,q,ybar,p,knot,nkmax,nk,coef,type,xrange, eta,work) implicit double precision(a-h,o-z) double precision x(n,q),ybar(p),knot(nkmax+4,q),coef(nkmax*p,q), xrange(2,q),eta(n,p),work(n,p) integer n,q,p,nkmax,nk(q),type(q) #initialization do j=1,p{ do i =1,n {eta(i,j)=ybar(j)} } do k=1,q{ if(type(k)==1)next call psspl2(x(1,k),n,p,knot(1,k),nk(k),xrange(1,k), coef(1,k),coef(1,k),work,0,type(k)) do j=1,p{ do i=1,n{eta(i,j)=eta(i,j) + work(i,j)} } } return end mda/src/bvalue.f0000644000176200001440000001333613176636732013253 0ustar liggesusers double precision function bvalue(t,lent,bcoef,n,k,x,jderiv) c Calculates value at x of jderiv-th derivative of spline from B-repr. c The spline is taken to be continuous from the right. c C calls interv c c****** i n p u t ****** c t, bcoef, n, k......forms the b-representation of the spline f to c be evaluated. specifically, c t.....knot sequence, of length n+k, assumed nondecreasing. c bcoef.....b-coefficient sequence, of length n . c n.....length of bcoef and dimension of s(k,t), c a s s u m e d positive . c k.....order of the spline . c c w a r n i n g . . . the restriction k <= kmax (=20) is imposed c arbitrarily by the dimension statement for aj, dm, dm below, c but is n o w h e r e c h e c k e d for. c however in R, this is only called from bvalus() with k=4 anyway! c c x.....the point at which to evaluate . c jderiv.....integer giving the order of the derivative to be evaluated c a s s u m e d to be zero or positive. c c****** o u t p u t ****** c bvalue.....the value of the (jderiv)-th derivative of f at x . c c****** m e t h o d ****** c the nontrivial knot interval (t(i),t(i+1)) containing x is lo- c cated with the aid of interv(). the k b-coeffs of f relevant for c this interval are then obtained from bcoef (or taken to be zero if c not explicitly available) and are then differenced jderiv times to c obtain the b-coeffs of (d^jderiv)f relevant for that interval. c precisely, with j = jderiv, we have from x.(12) of the text that c c (d^j)f = sum ( bcoef(.,j)*b(.,k-j,t) ) c c where c / bcoef(.), , j .eq. 0 c / c bcoef(.,j) = / bcoef(.,j-1) - bcoef(.-1,j-1) c / ----------------------------- , j > 0 c / (t(.+k-j) - t(.))/(k-j) c c then, we use repeatedly the fact that c c sum ( a(.)*b(.,m,t)(x) ) = sum ( a(.,x)*b(.,m-1,t)(x) ) c with c (x - t(.))*a(.) + (t(.+m-1) - x)*a(.-1) c a(.,x) = --------------------------------------- c (x - t(.)) + (t(.+m-1) - x) c c to write (d^j)f(x) eventually as a linear combination of b-splines c of order 1 , and the coefficient for b(i,1,t)(x) must then c be the desired number (d^j)f(x). (see x.(17)-(19) of text). c C Arguments integer lent, n,k, jderiv DOUBLE precision t(*),bcoef(n),x c dimension t(n+k) c current fortran standard makes it impossible to specify the length of c t precisely without the introduction of otherwise superfluous c additional arguments. C Local Variables integer kmax parameter(kmax = 20) DOUBLE precision aj(kmax),dm(kmax),dp(kmax),fkmj integer i,ilo,imk,j,jc,jcmin,jcmax,jj,km1,kmj,mflag,nmi, jdrvp1 c integer interv external interv c initialize data i/1/ bvalue = 0. if (jderiv .ge. k) go to 99 c c *** find i s.t. 1 <= i < n+k and t(i) < t(i+1) and c t(i) <= x < t(i+1) . if no such i can be found, x lies c outside the support of the spline f and bvalue = 0. c {this case is handled in the calling R code} c (the asymmetry in this choice of i makes f rightcontinuous) if( (x.ne.t(n+1)) .or. (t(n+1).ne.t(n+k)) ) then i = interv ( t, n+k, x, 0, 0, i, mflag) if (mflag .ne. 0) then call rwarn("bvalue() mflag != 0: should never happen!") go to 99 endif else i = n endif c *** if k = 1 (and jderiv = 0), bvalue = bcoef(i). km1 = k - 1 if (km1 .le. 0) then bvalue = bcoef(i) go to 99 endif c c *** store the k b-spline coefficients relevant for the knot interval c (t(i),t(i+1)) in aj(1),...,aj(k) and compute dm(j) = x - t(i+1-j), c dp(j) = t(i+j) - x, j=1,...,k-1 . set any of the aj not obtainable c from input to zero. set any t.s not obtainable equal to t(1) or c to t(n+k) appropriately. jcmin = 1 imk = i - k if (imk .ge. 0) then 8 do 9 j=1,km1 dm(j) = x - t(i+1-j) 9 continue else jcmin = 1 - imk do 5 j=1,i dm(j) = x - t(i+1-j) 5 continue do 6 j=i,km1 aj(k-j) = 0. dm(j) = dm(i) 6 continue endif c jcmax = k nmi = n - i if (nmi .ge. 0) then do 19 j=1,km1 C the following if() happens; e.g. in pp <- predict(cars.spl, xx) c - if( (i+j) .gt. lent) write(6,9911) i+j,lent c - 9911 format(' i+j, lent ',2(i6,1x)) dp(j) = t(i+j) - x 19 continue else jcmax = k + nmi do 15 j=1,jcmax dp(j) = t(i+j) - x 15 continue do 16 j=jcmax,km1 aj(j+1) = 0. dp(j) = dp(jcmax) 16 continue endif c do 21 jc=jcmin,jcmax aj(jc) = bcoef(imk + jc) 21 continue c c *** difference the coefficients jderiv times. if (jderiv .ge. 1) then do 23 j=1,jderiv kmj = k-j fkmj = dble(kmj) ilo = kmj do 24 jj=1,kmj aj(jj) = ((aj(jj+1) - aj(jj))/(dm(ilo) + dp(jj)))*fkmj ilo = ilo - 1 24 continue 23 continue endif c c *** compute value at x in (t(i),t(i+1)) of jderiv-th derivative, c given its relevant b-spline coeffs in aj(1),...,aj(k-jderiv). 30 if (jderiv .ne. km1) then jdrvp1 = jderiv + 1 do 33 j=jdrvp1,km1 kmj = k-j ilo = kmj do 34 jj=1,kmj aj(jj) = (aj(jj+1)*dm(ilo) + aj(jj)*dp(jj)) / * (dm(ilo)+dp(jj)) ilo = ilo - 1 34 continue 33 continue endif 39 bvalue = aj(1) c 99 return end mda/src/bruto.f0000644000176200001440000001066513176636732013132 0ustar liggesusers subroutine bruto(x,n,q,y,p,w,knot,nkmax,nk,wp,match,nef,dfmax, * cost,lambda,df,coef,type,xrange,gcvsel,gcvbak,dfit,maxit,nit, * eta,resid,thresh,work,iwork,trace) implicit double precision(a-h,o-z) integer n,q,p,nkmax,nk(q),match(n,q),nef(q),type(q),maxit(2), * nit(2),iwork(n) double precision x(n,q),y(n,p),w(n),knot(nkmax+4,q),wp(p), * dfmax(q),cost,lambda(q),df(q),coef(nkmax*p,q),xrange(2,q), * gcvsel(q,*),gcvbak(q,*),dfit(q,*),eta(n,p),resid(n,p), * thresh,work(*) logical trace, select do 01 j=1,p do 02 i=1,n resid(i,j)=y(i,j)-eta(i,j) 02 continue 01 continue select=.true. call bakssp(select,x,n,q,y,p,w,knot,nkmax,nk,wp,match,nef,dfmax, *cost,lambda,df,coef,type,xrange,gcvsel,dfit,maxit(1),nit(1),eta, *resid,thresh*10d0,work,iwork,trace) select=.false. call bakssp(select,x,n,q,y,p,w,knot,nkmax,nk,wp,match,nef,dfmax, *cost,lambda,df,coef,type,xrange,gcvbak,dfit,maxit(2),nit(2),eta, *resid,thresh,work,iwork,trace) do 04 j=1,p do 06 i=1,n eta(i,j)=y(i,j)-resid(i,j) 06 continue 04 continue return end subroutine bakssp(select,x,n,q,y,p,w,knot,nkmax,nk,wp,match,nef, * dfmax,cost,lambda,df,coef,type,xrange,gcv,dfit,maxit,nit,s, * resid,thresh,work,iwork,trace) implicit double precision(a-h,o-z) integer n,q,p,nkmax,nk(q),match(n,q),nef(q),type(q),maxit,nit,ier, * ntype,iwork(n) double precision x(n,q),y(n,p),w(n),knot(nkmax+4,q),wp(p),dfmax(q) * ,cost,lambda(q),df(q),coef(nkmax*p,q),xrange(2,q), * gcv(q,maxit),dfit(q,maxit),s(n,p),resid(n,p),thresh,work(*) double precision dfoff, gcv0, ndf,gcv1,gcvrat,ndfoff,wmean,sbar, * rss,tol logical center, select, trace center=.true. tol=1d-3 rss=0d0 do 08 j=1,p sbar=wmean(n,resid(1,j),w) do 10 i=1,n resid(i,j)=resid(i,j) - sbar work(i)=resid(i,j)**2 10 continue rss=rss+wp(j)*wmean(n,work,w) 08 continue dfoff=0 do 12 k=1,q dfoff=dfoff+df(k) 12 continue gcv1=rss/((1-(1+dfoff*cost)/n)**2) gcvrat=1d0 nit=0 14 if(.not.(nit.lt.maxit.and.gcvrat .gt.thresh ))goto 15 gcv0=gcv1 nit=nit+1 do 16 k=1,q gcv(k,nit)=gcv1 if(.not.select.and.type(k).eq.1)goto 16 if(type(k) .gt. 1) then call psspl2(x(1,k),n,p,knot(1,k),nk(k),xrange(1,k), * coef(1,k),coef(1,k),s,0,type(k)) do 22 j=1,p sbar=wmean(n,s(1,j),w) do 24 i=1,n resid(i,j)=resid(i,j) + s(i,j)-sbar 24 continue 22 continue endif ndfoff=dfoff-df(k) if(select) then ntype=0 else ntype=type(k) endif call sspl2(x(1,k),resid,w,n,p,knot(1,k),nk(k),wp,match(1,k), * nef(k),ndfoff,dfmax(k),cost,lambda(k),ndf,gcv1,coef(1,k), * s,ntype,center,xrange(1,k),work,iwork,tol,ier) gcv(k,nit)=gcv1 if(select) then dfit(k,nit)=ndf df(k)=ndf dfoff=ndfoff+ndf type(k)=ntype endif if(type(k) .gt. 1) then do 32 j=1,p do 34 i=1,n resid(i,j)=resid(i,j) - s(i,j) 34 continue 32 continue endif 16 continue gcvrat=dabs(gcv1-gcv0)/gcv0 if(trace) then call intpr("outer iteration",15,nit,1) call dblepr("gcv ",5,gcv1,1) call dblepr("ratio",5,gcvrat,1) endif 36 continue goto 14 15 continue return end subroutine pbruto(x,n,q,ybar,p,knot,nkmax,nk,coef,type,xrange,eta, * work) implicit double precision(a-h,o-z) integer n,q,p,nkmax,nk(q),type(q) double precision x(n,q),ybar(p),knot(nkmax+4,q),coef(nkmax*p,q), * xrange(2,q),eta(n,p),work(n,p) do 38 j=1,p do 40 i =1,n eta(i,j)=ybar(j) 40 continue 38 continue do 42 k=1,q if(type(k) .eq .1) goto 42 call psspl2(x(1,k),n,p,knot(1,k),nk(k),xrange(1,k),coef(1,k), * coef(1,k),work,0,type(k)) do 46 j=1,p do 48 i=1,n eta(i,j)=eta(i,j) + work(i,j) 48 continue 46 continue 42 continue return end mda/src/dorthreg.f0000644000176200001440000000104313176636732013603 0ustar liggesusers subroutine orthreg(nx,n,p,x,in, y,res) implicit double precision (a-h,o-z) integer n,nx,p, in(p) double precision x(nx,p),y(n),res(n) do 23000 i=1,n res(i)=y(i) 23000 continue do 23002 j=1,p if(.not.(in(j).eq.1))goto 23004 temp1=0 temp2=0 do 23006 i=1,n temp1=temp1+res(i)*x(i,j) temp2=temp2+x(i,j)*x(i,j) 23006 continue beta=temp1/temp2 do 23008 i=1,n res(i)=res(i)-beta*x(i,j) 23008 continue 23004 continue 23002 continue return end mda/src/splsm.f0000644000176200001440000001211713176636732013127 0ustar liggesusers subroutine splsm(x,y,w,n,match,nef,spar,dof,smo,s0,cov,ifcov,work, & lenw) implicit double precision(a-h,o-z) integer n,match(n),nef,lenw double precision x(n),y(n),w(n),spar,dof,smo(n),s0,cov(n),work( & lenw) logical ifcov call splsm1(x, y, w, n, match, nef, spar, dof, smo, s0, cov, & ifcov, work(1), work(nef+2), work(2*nef+3), work(3*nef+4), & work(3*nef+n+10), lenw) return end subroutine splsm1(x,y,w,n,match,nef,spar,dof,smo,s0,lev,ifcov,xin, & yin,win,knot,work,lenw) implicit double precision(a-h,o-z) integer n,match(n),nef,lenw double precision x(n),y(n),w(n),spar,dof,smo(n),s0,lev(n),work( & lenw) logical ifcov double precision xin(nef+1),yin(nef+1),win(nef+1),knot(nef+4) integer nk,ldnk,ld4,k double precision xmin,xrange call suff(n,nef,match,x,y,w,xin,yin,win,work(1)) xmin=xin(1) xrange=xin(nef)-xin(1) do 23000 i=1,nef xin(i)=(xin(i)-xmin)/xrange 23000 continue call sknotl(xin,nef,knot,k) nk=k-4 ld4=4 ldnk=1 call splsm2(x, y, w, n, match, nef, spar, dof, smo, s0, lev, & ifcov, xin, yin, win, knot, work(1), work(nk+1), & work(nk+nef+2), work(nk+2*nef+3), work(2*nk+2*nef+3), & work(3*nk+2*nef+3), work(4*nk+2*nef+3), work(5* nk+2*nef+3), & work(6*nk+2*nef+3), work(7*nk+2*nef+3), work(8*nk+2*nef+ 3), & work(9*nk+2*nef+3), work(10*nk+2*nef+3), & work((10+ld4)*nk+2*nef+ 3), work((10+2*ld4)*nk+2*nef+3), & ld4, ldnk, nk) return end subroutine splsm2(x, y, w, n, match, nef, spar, dof, smo, s0, & lev, ifcov, xin, yin, win, knot, coef, sout, levout, xwy, & hs0, hs1, hs2, hs3, sg0, sg1, sg2, sg3, abd, p1ip, p2ip, & ld4, ldnk, nk) implicit double precision(a-h,o-z) integer n,match(n),nef double precision x(n),y(n),w(n),spar,dof,smo(n),s0,lev(n) integer nk,ldnk,ld4 logical ifcov double precision xin(nef+1),yin(nef+1),win(nef+1),knot(nk+4) double precision coef(nk), sout(nef+1), levout(nef+1), xwy(nk), & hs0(nk), hs1(nk), hs2(nk), hs3(nk), sg0(nk), sg1(nk), & sg2(nk), sg3(nk), abd(ld4, nk), p1ip(ld4, nk), p2ip(ldnk, 1) integer ispar,icrit,isetup,ier double precision lspar,uspar,tol,penalt,sumwin,dofoff,crit,xbar, & dsum double precision wmean crit=0e0 if(.not.(spar.eq.0e0))goto 23002 ispar=0 dofoff=0e0 if(.not.(dof.eq.0e0))goto 23004 icrit=2 goto 23005 23004 continue dofoff=dof+1e0 icrit=3 23005 continue goto 23003 23002 continue ispar=1 dofoff=0e0 icrit=3 23003 continue isetup=0 ier=1 penalt=1e0 lspar=1e-10 uspar=1.5 tol=1e-3 call sbart(penalt, dofoff, xin, yin, win, nef, knot, nk, coef, & sout, levout, crit, icrit, spar, ispar, lspar, uspar, tol, & isetup, xwy, hs0, hs1, hs2, hs3, sg0, sg1, sg2, sg3, abd, & p1ip, p2ip, ld4, ldnk, ier) nit=0 23006 if(.not.((ier .ne. 0) .and. (nit .lt.7)))goto 23007 crit=0e0 spar=0 if(.not.(spar.eq.0e0))goto 23008 ispar=0 dofoff=0e0 if(.not.(dof.eq.0e0))goto 23010 icrit=2 goto 23011 23010 continue dofoff=dof+1e0 icrit=3 23011 continue goto 23009 23008 continue ispar=1 dofoff=0e0 icrit=3 23009 continue isetup=0 ier=1 penalt=1e0 lspar=1e-10 tol=1e-3 nit=nit+1 uspar=.9+(uspar-.9)*.5 call sbart(penalt, dofoff, xin, yin, win, nef, knot, nk, coef, & sout, levout, crit, icrit, spar, ispar, lspar, uspar, & tol, isetup, xwy, hs0, hs1, hs2, hs3, sg0, sg1, sg2, & sg3, abd, p1ip, p2ip, ld4, ldnk, ier) goto 23006 23007 continue dof=0e0 sumwin=0e0 do 23012 i=1,nef win(i)=win(i)*win(i) 23012 continue sbar=wmean(nef,sout,win) xbar=wmean(nef,xin,win) do 23014 i=1,nef sumwin=sumwin+win(i) 23014 continue s0=wmean(n,y,w) do 23016 i=1,nef lev(i)=(xin(i)-xbar)*sout(i) 23016 continue xsbar=wmean(nef,lev,win) do 23018 i=1,nef lev(i)=(xin(i)-xbar)**2 23018 continue dsum=wmean(nef,lev,win) do 23020 i=1,nef if(.not.(win(i).gt.0e0))goto 23022 lev(i)=levout(i)/win(i)-1e0/sumwin -lev(i)/(sumwin*dsum) goto 23023 23022 continue lev(i)=0e0 23023 continue 23020 continue do 23024 i=1,nef dof=dof+lev(i)*win(i) 23024 continue dof=dof+1e0 do 23026 i=1,nef sout(i)=sout(i)-sbar -(xin(i)-xbar)*xsbar/dsum 23026 continue call untpack(n,nef,match,sout,smo) return end double precision function wmean(n,y,w) integer n double precision y(n),w(n),wtot,wsum wtot=0e0 wsum=0e0 do 23028 i=1,n wsum=wsum+y(i)*w(i) wtot=wtot+w(i) 23028 continue if(.not.(wtot .gt. 0e0))goto 23030 wmean=wsum/wtot goto 23031 23030 continue wmean=0e0 23031 continue return end mda/src/stxwx.f0000644000176200001440000000361513176636732013171 0ustar liggesusersC Output from Public domain Ratfor, version 1.0 subroutine stxwx(x,z,w,k,xknot,n,y,hs0,hs1,hs2,hs3) c implicit none integer k,n DOUBLE precision x(k),z(k),w(k), xknot(n+4),y(n), & hs0(n),hs1(n),hs2(n),hs3(n) C local DOUBLE precision eps,vnikx(4,1),work(16) integer lenxk, i,j, ileft,mflag c integer interv external interv lenxk=n+4 C Initialise the output vectors do 1 i=1,n y(i)=0d0 hs0(i)=0d0 hs1(i)=0d0 hs2(i)=0d0 hs3(i)=0d0 1 continue C Compute X'WX -> hs0,hs1,hs2,hs3 and X'WZ -> y ileft=1 eps= .1d-9 do 100 i=1,k ileft= interv(xknot(1), n+1, x(i), 0,0, ileft, mflag) C if(mflag==-1) {write(6,'("Error in hess ",i2)')mflag;stop} C if(mflag==-1) {return} if(mflag.eq. 1)then if(x(i).le.(xknot(ileft)+eps))then ileft=ileft-1 else return endif C else{write(6,'("Error in hess ",i2)')mflag;stop}} endif call bsplvd (xknot,lenxk,4,x(i),ileft,work,vnikx,1) j= ileft-4+1 y(j) = y(j)+w(i)**2*z(i)*vnikx(1,1) hs0(j)=hs0(j)+w(i)**2*vnikx(1,1)**2 hs1(j)=hs1(j)+w(i)**2*vnikx(1,1)*vnikx(2,1) hs2(j)=hs2(j)+w(i)**2*vnikx(1,1)*vnikx(3,1) hs3(j)=hs3(j)+w(i)**2*vnikx(1,1)*vnikx(4,1) j= ileft-4+2 y(j) = y(j)+w(i)**2*z(i)*vnikx(2,1) hs0(j)=hs0(j)+w(i)**2*vnikx(2,1)**2 hs1(j)=hs1(j)+w(i)**2*vnikx(2,1)*vnikx(3,1) hs2(j)=hs2(j)+w(i)**2*vnikx(2,1)*vnikx(4,1) j= ileft-4+3 y(j) = y(j)+w(i)**2*z(i)*vnikx(3,1) hs0(j)=hs0(j)+w(i)**2*vnikx(3,1)**2 hs1(j)=hs1(j)+w(i)**2*vnikx(3,1)*vnikx(4,1) j= ileft-4+4 y(j) = y(j)+w(i)**2*z(i)*vnikx(4,1) hs0(j)=hs0(j)+w(i)**2*vnikx(4,1)**2 100 continue return end mda/src/mda_init.c0000644000176200001440000000635313176636732013557 0ustar liggesusers// Automatically generated, editing not advised. #ifndef R_MDA_H #define R_MDA_H #include #include #include #ifdef ENABLE_NLS #include #define _(String) dgettext ("mda", String) #else #define _(String) (String) #endif #define FDEF(name) {#name, (DL_FUNC) &F77_SUB(name), sizeof(name ## _t)/sizeof(name ## _t[0]), name ##_t} void F77_SUB(bruto)( double *x, int *n, int *q, double *y, int *p, double *w, double *knot, int *nkmax, int *nk, double *wp, int *match, int *nef, double *dfmax, double *cost, double *lambda, double *df, double *coef, int *type, double *xrange, double *gcvsel, double *gcvbak, double *dfit, int *maxit, int *nit, double *eta, double *resid, double *thresh, double *work, int *iwork, int *trace ); static R_NativePrimitiveArgType bruto_t[] = { REALSXP, INTSXP, INTSXP, REALSXP, INTSXP, REALSXP, REALSXP, INTSXP, INTSXP, REALSXP, INTSXP, INTSXP, REALSXP, REALSXP, REALSXP, REALSXP, REALSXP, INTSXP, REALSXP, REALSXP, REALSXP, REALSXP, INTSXP, INTSXP, REALSXP, REALSXP, REALSXP, REALSXP, INTSXP, INTSXP }; void F77_SUB(marss)( int *nx, int *n, int *p, int *nclass, double *y, double *x, double *w, int *tagx, int *maxorder, int *mmax, double *penalty, double *thresh, int *forwstep, int *interms, int *prune, double *bx, int *fullin, int *lenb, double *bestgcv, int *bestin, int *flag, double *cut, double *dir, double *res, double *alpha, double *beta, double *scrat, int *iscrat, int *trace ); static R_NativePrimitiveArgType marss_t[] = { INTSXP, INTSXP, INTSXP, INTSXP, REALSXP, REALSXP, REALSXP, INTSXP, INTSXP, INTSXP, REALSXP, REALSXP, INTSXP, INTSXP, INTSXP, REALSXP, INTSXP, INTSXP, REALSXP, INTSXP, INTSXP, REALSXP, REALSXP, REALSXP, REALSXP, REALSXP, REALSXP, INTSXP, INTSXP }; void F77_SUB(sspl0)( double *x, double *y, double *w, int *n, int *p, double *knot, int *nk, int *method, double *tol, double *wp, int *match, int *nef, int *center, double *dfoff, double *dfmax, double *cost, double *lambda, double *df, double *cv, double *gcv, double *coef, double *s, double *lev, double *xrange, double *work, int *iwork, int *ier ); static R_NativePrimitiveArgType sspl0_t[] = { REALSXP, REALSXP, REALSXP, INTSXP, INTSXP, REALSXP, INTSXP, INTSXP, REALSXP, REALSXP, INTSXP, INTSXP, INTSXP, REALSXP, REALSXP, REALSXP, REALSXP, REALSXP, REALSXP, REALSXP, REALSXP, REALSXP, REALSXP, REALSXP, REALSXP, INTSXP, INTSXP }; void F77_SUB(pbruto)( double *x, int *n, int *q, double *ybar, int *p, double *knot, int *nkmax, int *nk, double *coef, int *type, double *xrange, double *eta, double *work ); static R_NativePrimitiveArgType pbruto_t[] = { REALSXP, INTSXP, INTSXP, REALSXP, INTSXP, REALSXP, INTSXP, INTSXP, REALSXP, INTSXP, REALSXP, REALSXP, REALSXP }; void F77_SUB(psspl2)( double *x, int *n, int *p, double *knot, int *nk, double *xrange, double *coef, double *coefl, double *s, int *order, int *type ); static R_NativePrimitiveArgType psspl2_t[] = { REALSXP, INTSXP, INTSXP, REALSXP, INTSXP, REALSXP, REALSXP, REALSXP, REALSXP, INTSXP, INTSXP }; static R_FortranMethodDef fMethods[] = { FDEF(bruto) , FDEF(marss) , FDEF(sspl0) , FDEF(pbruto) , FDEF(psspl2) , {NULL, NULL, 0} }; void R_init_mda(DllInfo *dll){ R_registerRoutines(dll, NULL, NULL, fMethods, NULL); R_useDynamicSymbols(dll, FALSE); } #endif mda/src/dcalcvar.f0000644000176200001440000000175413176636732013555 0ustar liggesusers subroutine calcvar(nx,n,px,qr,qrank,qpivot,cov,tmpcov,work) implicit double precision (a-h,o-z) integer n,px,qrank,qpivot(px) double precision qr(nx,px),cov(px,px), tmpcov(px,px),work(1) double precision dsum integer i,j,km do 23000 i=1,qrank do 23002 j=1,qrank tmpcov(i,j)=0d0 cov(i,j)=qr(i,j) 23002 continue tmpcov(i,i)=1e0 23000 continue info=0 c R version has different args c call dbksl(cov,px,qrank,tmpcov,px,info) do 20 j = 1, qrank 20 call dtrsl(cov, px, qrank, tmpcov(1,j), 01, info) do 23004 i=1,qrank do 23006 j=i,qrank dsum=0e0 km=max(i,j) k=km 23008 if(.not.(k.le.qrank))goto 23010 dsum=dsum+tmpcov(i,k)*tmpcov(j,k) k=k+1 goto 23008 23010 continue tmpcov(i,j)=dsum tmpcov(j,i)=dsum 23006 continue 23004 continue do 23011 i=1,qrank do 23013 j=1,qrank cov(i,j)=tmpcov(i,j) 23013 continue 23011 continue return end mda/src/sknotl.f0000644000176200001440000000216013176636732013300 0ustar liggesusers subroutine sknotl(x,n,knot,k) implicit double precision(a-h,o-z) integer n,k,ndk,j double precision x(n),knot(n+6),a1,a2,a3,a4 a1 = log(50e0)/log(2e0) a2 = log(100e0)/log(2e0) a3 = log(140e0)/log(2e0) a4 = log(200e0)/log(2e0) if(.not.(n.lt.50))goto 23000 ndk = n goto 23001 23000 continue if(.not.(n.ge.50 .and. n.lt.200))goto 23002 ndk = 2.**(a1+(a2-a1)*(n-50.)/150.) goto 23003 23002 continue if(.not.(n.ge.200 .and. n.lt.800))goto 23004 ndk = 2.**(a2+(a3-a2)*(n-200.)/600.) goto 23005 23004 continue if(.not.(n.ge.800 .and. n.lt.3200))goto 23006 ndk = 2.**(a3+(a4-a3)*(n-800.)/2400.) goto 23007 23006 continue if(.not.(n.ge.3200))goto 23008 ndk = 200. + (n-3200)**.2 23008 continue 23007 continue 23005 continue 23003 continue 23001 continue k = ndk + 6 do 23010 j=1,3 knot(j) = x(1) 23010 continue do 23012 j=1,ndk knot(j+3) = x( 1 + (j-1)*(n-1)/(ndk-1) ) 23012 continue do 23014 j=1,3 knot(ndk+3+j) = x(n) 23014 continue return end mda/src/mspline.f0000644000176200001440000007246013176636732013447 0ustar liggesusers subroutine sspl(x,y,w,n,ldy,p,knot,nk,method,tol,wp,ssy,dfoff, 1 dfmax,cost,lambda,df,cv,gcv,coef,s,lev,xwy,hs,sg,abd,p1ip, 2 ier) implicit double precision(a-h,o-z) C A Cubic B-spline Smoothing routine. C C The algorithm minimises: C C (1/n) * sum w(i)* (y(i)-s(i))**2 + lambda* int ( s"(x) )**2 dx C C for each of p response variables in y C Input C x(n) vector containing the ordinates of the observations C y(ldy,p) matrix (n x p) of responses (ldy can be greater than n) C w(n) vector containing the weights given to each data point C n number of data points C ldy leading dimension of y C p number of columns in y C knot(nk+4) vector of knot points defining the cubic b-spline basis. C nk number of b-spline coefficients to be estimated C nk <= n+2 C method method for selecting amount of smoothing, lambda C 1 = fixed lambda C 2 = fixed df C 3 = gcv C 4 = cv C tol used in Golden Search routine C wp(p) weights, length p, used to combine cv or gcv in 3 or 4 above C ssy(p) offsets for weighted sum of squares for y; can be all zero, C else should be the variability lost due to collapsing C onto unique values C dfoff offset df used in gcv calculations (0 is good default) C dfmax maximum value for df allowed when gcv or cv are used C routine simply returns the value at dfmax if it was exceeded C cost cost per df (1 is good default) C Input/Output C lambda penalised likelihood smoothing parameter C df trace(S) C Output C cv omnibus cv criterion C gcv omnibus gcv criterion (including penalty and offset) C coef(nk,p) vector of spline coefficients C s(ldy,p) matrix of smoothed y-values C lev(n) vector of leverages C Working arrays/matrix C xwy(nk,p) X'Wy C hs(nk,4) the diagonals of the X'WX matrix C sg(nk,4) the diagonals of the Gram matrix C abd(4,nk) [ X'WX+lambda*SIGMA] in diagonal form C p1ip(4,nk) inner products between columns of L inverse C ier error indicator C ier = 0 ___ everything fine C ier = 1 ___ spar too small or too big C problem in cholesky decomposition integer n,p,ldy,nk,method,ier double precision x(n),y(ldy,p),w(n),knot(nk+4),tol,wp(p),ssy(p), * dfoff,dfmax,cost,lambda,df,cv,gcv,coef(nk,p),s(ldy,p), * lev(n),xwy(nk,p),hs(nk,4),sg(nk,4),abd(4,nk),p1ip(4,nk) C Compute SIGMA, X'WX, X'WY, trace, ratio, s0, s1. C SIGMA-> sg[] C X'WX -> hs[] C X'WY -> xwy[] call sgram(sg(1,1),sg(1,2),sg(1,3),sg(1,4),knot,nk) call stxwx2(x,y,w,n,ldy,p,knot,nk,xwy,hs(1,1),hs(1,2), * hs(1,3),hs(1,4)) C Compute estimate if(method.eq.1)then C Value of lambda supplied call sslvr2(x,y,w,n,ldy,p,knot,nk,method,tol,wp,ssy,dfoff,cost, 1 lambda,df,cv,gcv,coef,s,lev,xwy, 2 hs(1,1),hs(1,2),hs(1,3),hs(1,4), 3 sg(1,1),sg(1,2),sg(1,3),sg(1,4),abd,p1ip,ier) else C Use Forsythe, Malcom and Moler routine to minimise criterion call fmm(x,y,w,n,ldy,p,knot,nk,method,tol,wp,ssy,dfoff,cost, * lambda,df,cv,gcv,coef,s,lev,xwy,hs,sg,abd,p1ip,ier) if(method.gt.2.and.df.gt.dfmax)then df=dfmax call fmm(x,y,w,n,ldy,p,knot,nk,2,tol,wp,ssy,dfoff,cost, * lambda,df,cv,gcv,coef,s,lev,xwy,hs,sg,abd,p1ip,ier) endif endif return end subroutine fmm(xs,ys,ws,n,ldy,nvar,knot,nk,method,tol,wp,ssy, 1 dfoff,cost,lambda,df,cv,gcv,coef,s,lev,xwy,hs,sg,abd,p1ip, 2 ier) integer n,ldy,nvar,nk,method,ier double precision xs(n),ys(ldy,nvar),ws(n),knot(nk+4),tol,wp(nvar), * ssy(nvar),dfoff,cost,lambda,df,cv,gcv,coef(nk,nvar), * s(ldy,nvar),lev(n),xwy(nk,nvar),hs(nk,4),sg(nk,4),abd(4,nk), * p1ip(4,nk) double precision t1,t2,ratio, a,b,c,d,e,eps,xm,p,q,r,tol1,tol2,u, * v,w, fu,fv,fw,fx,x,targdf,ax,bx integer i C used to be lspar ax=1d-10 C used to be uspar bx=1.5 t1=0. t2=0. targdf=df do 23004 i=3,nk-3 t1 = t1 + hs(i,1) 23004 continue do 23006 i=3,nk-3 t2 = t2 + sg(i,1) 23006 continue ratio = t1/t2 C C an approximation x to the point where f attains a minimum on C the interval (ax,bx) is determined. C C C input.. C C ax left endpoint of initial interval C bx right endpoint of initial interval C f function subprogram which evaluates f(x) for any x C in the interval (ax,bx) C tol desired length of the interval of uncertainty of the final C result ( .ge. 0.0) C C C output.. C C fmin abcissa approximating the point where f attains a minimum C C C the method used is a combination of golden section search and C successive parabolic interpolation. convergence is never much slower C than that for a fibonacci search. if f has a continuous second C derivative which is positive at the minimum (which is not at ax or C bx), then convergence is superlinear, and usually of the order of C about 1.324.... C the function f is never evaluated at two points closer together C than eps*dabs(fmin) + (tol/3), where eps is approximately the square C root of the relative machine precision. if f is a unimodal C function and the computed values of f are always unimodal when C separated by at least eps*dabs(x) + (tol/3), then fmin approximates C the abcissa of the global minimum of f on the interval ax,bx with C an error less than 3*eps*dabs(fmin) + tol. if f is not unimodal, C then fmin may approximate a local, but perhaps non-global, minimum to C the same accuracy. C this function subprogram is a slightly modified version of the C algol 60 procedure localmin given in richard brent, algorithms for C minimization without derivatives, prentice - hall, inc. (1973). C C C double precision a,b,c,d,e,eps,xm,p,q,r,tol1,tol2,u,v,w C double precision fu,fv,fw,fx,x C C c is the squared inverse of the golden ratio C c = 0.5*(3. - dsqrt(5d0)) C C eps is approximately the square root of the relative machine C precision. C eps = 1d0 10 eps = eps/2d0 tol1 = 1d0 + eps if(tol1 .gt. 1d0)then go to 10 endif eps = dsqrt(eps) C C initialization C a = ax b = bx v = a + c*(b - a) w = v x = v e = 0.0 lambda = ratio*16.**(-2. + x*(6.)) call sslvr2(xs,ys,ws,n,ldy,nvar,knot,nk,method,tol,wp,ssy,dfoff, 1 cost,lambda,df,cv,gcv,coef,s,lev,xwy, 2 hs(1,1),hs(1,2),hs(1,3),hs(1,4), 3 sg(1,1),sg(1,2),sg(1,3),sg(1,4),abd,p1ip,ier) I23010 = (method) if(.not.(I23010.eq.( 2)))goto 23011 fx=3d0+(targdf-df)**2 goto 23010 23011 continue if(.not.(I23010.eq.( 3)))goto 23012 fx=gcv goto 23010 23012 continue if(.not.(I23010.eq.( 4)))goto 23013 fx=cv 23013 continue 23010 continue fv = fx fw = fx C C main loop starts here C 20 xm = 0.5*(a + b) tol1 = eps*dabs(x) + tol/3d0 tol2 = 2d0*tol1 C C check stopping criterion C if(dabs(x - xm) .le. (tol2 - 0.5*(b - a)))then go to 90 C C is golden-section necessary C endif if(dabs(e) .le. tol1)then go to 40 C C fit parabola C endif r = (x - w)*(fx - fv) q = (x - v)*(fx - fw) p = (x - v)*q - (x - w)*r q = 2.00*(q - r) if(q .gt. 0.0)then p = -p endif q = dabs(q) r = e e = d C C is parabola acceptable C 30 if(dabs(p) .ge. dabs(0.5*q*r))then go to 40 endif if(p .le. q*(a - x))then go to 40 endif if(p .ge. q*(b - x))then go to 40 endif C C a parabolic interpolation step C d = p/q u = x + d C C f must not be evaluated too close to ax or bx C if((u - a) .lt. tol2)then d = dsign(tol1, xm - x) endif if((b - u) .lt. tol2)then d = dsign(tol1, xm - x) endif go to 50 C C a golden-section step C 40 if(x .ge. xm)then e = a - x endif if(x .lt. xm)then e = b - x endif d = c*e C C f must not be evaluated too close to x C 50 if(dabs(d) .ge. tol1)then u = x + d endif if(dabs(d) .lt. tol1)then u = x + dsign(tol1, d) endif lambda = ratio*16.**(-2. + u*(6.)) call sslvr2(xs,ys,ws,n,ldy,nvar,knot,nk,method,tol,wp,ssy,dfoff, *cost,lambda,df,cv,gcv,coef,s,lev,xwy,hs(1,1),hs(1,2),hs(1,3),hs(1, *4),sg(1,1),sg(1,2),sg(1,3),sg(1,4),abd,p1ip,ier) I23038 = (method) if(.not.(I23038.eq.( 2)))goto 23039 fu=3d0+(targdf-df)**2 goto 23038 23039 continue if(.not.(I23038.eq.( 3)))goto 23040 fu=gcv goto 23038 23040 continue if(.not.(I23038.eq.( 4)))goto 23041 fu=cv 23041 continue 23038 continue C C update a, b, v, w, and x C if(fu .gt. fx)then go to 60 endif if(u .ge. x)then a = x endif if(u .lt. x) then b = x endif v = w fv = fw w = x fw = fx x = u fx = fu go to 20 60 if(u .lt. x)then a = u endif if(u .ge. x)then b = u endif if(fu .le. fw)then go to 70 endif if(w .eq. x)then go to 70 endif if(fu .le. fv)then go to 80 endif if(v .eq. x)then go to 80 endif if(v .eq. w)then go to 80 endif go to 20 70 v = w fv = fw w = u fw = fu go to 20 80 v = u fv = fu go to 20 C C end of main loop C 90 continue if(method.eq.2)then call sslvr2(xs,ys,ws,n,ldy,nvar,knot,nk,1,tol,wp,ssy,dfoff,cost, 1 lambda,df,cv,gcv,coef,s,lev,xwy, 2 hs(1,1),hs(1,2),hs(1,3),hs(1,4), 3 sg(1,1),sg(1,2),sg(1,3),sg(1,4),abd,p1ip,ier) endif return end subroutine stxwx2(x,z,w,k,ldy,pz,xknot,n,y,hs0,hs1,hs2,hs3) implicit double precision(a-h,o-z) integer k,n,pz,ldy,j,i,pp,ileft,mflag double precision z(ldy,pz),w(k),x(k),xknot(n+4),y(n,pz),hs0(n), * hs1(n),hs2(n),hs3(n),eps,vnikx(4,1),work(16) C Initialise the output vectors do 23064 i=1,n hs0(i)=0d0 hs1(i)=0d0 hs2(i)=0d0 hs3(i)=0d0 do 23066 j=1,pz y(i,j)=0d0 23066 continue 23064 continue C Compute X'WX -> hs0,hs1,hs2,hs3 and X'WZ -> y ileft = 1 eps = .1d-9 do 23068 i=1,k ileft = interv(xknot(1),(n+1),x(i), 0,0, ileft,mflag) if(mflag.eq. 1)then if(x(i).le.(xknot(ileft)+eps))then ileft=ileft-1 else return endif endif call bsplvd (xknot,n+8,4,x(i),ileft,work,vnikx,1) j= ileft-4+1 do 23074 pp=1,pz y(j,pp) = y(j,pp)+w(i)*z(i,pp)*vnikx(1,1) 23074 continue hs0(j)=hs0(j)+w(i)*vnikx(1,1)**2 hs1(j)=hs1(j)+w(i)*vnikx(1,1)*vnikx(2,1) hs2(j)=hs2(j)+w(i)*vnikx(1,1)*vnikx(3,1) hs3(j)=hs3(j)+w(i)*vnikx(1,1)*vnikx(4,1) j= ileft-4+2 do 23076 pp=1,pz y(j,pp) = y(j,pp)+w(i)*z(i,pp)*vnikx(2,1) 23076 continue hs0(j)=hs0(j)+w(i)*vnikx(2,1)**2 hs1(j)=hs1(j)+w(i)*vnikx(2,1)*vnikx(3,1) hs2(j)=hs2(j)+w(i)*vnikx(2,1)*vnikx(4,1) j= ileft-4+3 do 23078 pp=1,pz y(j,pp) = y(j,pp)+w(i)*z(i,pp)*vnikx(3,1) 23078 continue hs0(j)=hs0(j)+w(i)*vnikx(3,1)**2 hs1(j)=hs1(j)+w(i)*vnikx(3,1)*vnikx(4,1) j= ileft-4+4 do 23080 pp=1,pz y(j,pp) = y(j,pp)+w(i)*z(i,pp)*vnikx(4,1) 23080 continue hs0(j)=hs0(j)+w(i)*vnikx(4,1)**2 23068 continue return end subroutine sslvr2(x,y,w,n,ldy,p,knot,nk,method,tol,wp,ssy,dfoff, * cost,lambda,df,cv,gcv,coef,sz,lev,xwy,hs0,hs1,hs2,hs3, * sg0,sg1,sg2,sg3,abd,p1ip,info) implicit double precision(a-h,o-z) integer n,p,ldy,nk,method,info double precision x(n),y(ldy,p),w(n),knot(nk+4),tol,wp(p),ssy(p), * dfoff,cost,lambda,df,cv,gcv,coef(nk,p),sz(ldy,p),lev(n), $ xwy(nk,p), hs0(nk),hs1(nk),hs2(nk),hs3(nk), $ sg0(nk),sg1(nk),sg2(nk),sg3(nk), abd(4,nk),p1ip(4,nk) C local storage double precision b0,b1,b2,b3,eps,vnikx(4,1),work(16),xv,bvalue, * rss,tssy integer ld4,i,icoef,ileft,j,mflag logical fittoo fittoo= (method.ne.2) ileft = 1 eps = .1d-10 ld4=4 C Purpose : Solves the smoothing problem and computes the C criterion functions (CV and GCV). C The coeficients of estimated smooth if(fittoo)then do 23084 i=1,nk do 23086 j=1,p coef(i,j) = xwy(i,j) 23086 continue 23084 continue endif do 23088 i=1,nk abd(4,i) = hs0(i)+lambda*sg0(i) 23088 continue do 23090 i=1,(nk-1) abd(3,i+1) = hs1(i)+lambda*sg1(i) 23090 continue do 23092 i=1,(nk-2) abd(2,i+2) = hs2(i)+lambda*sg2(i) 23092 continue do 23094 i=1,(nk-3) abd(1,i+3) = hs3(i)+lambda*sg3(i) 23094 continue call dpbfa(abd,ld4,nk,3,info) if(info.ne.0)then return endif if(fittoo)then do 23100 j=1,p call dpbsl(abd,ld4,nk,3,coef(1,j)) 23100 continue C Value of smooths at the data points icoef = 1 do 23102 i=1,n xv = x(i) do 23104 j=1,p sz(i,j) = bvalue(knot,nk+8,coef(1,j),nk,4,xv,0) 23104 continue 23102 continue 23098 continue endif C Compute the criterion functions C Get Leverages First call sinrp2(abd,ld4,nk,p1ip) do 23106 i=1,n xv = x(i) ileft = interv(knot(1),(nk+1),xv, 0,0, ileft,mflag) if(mflag.eq.-1)then ileft = 4 xv = knot(4)+eps endif if(mflag.eq.1)then ileft = nk xv = knot(nk+1)-eps endif j=ileft-3 call bsplvd(knot,nk+8,4,xv,ileft,work,vnikx,1) b0=vnikx(1,1) b1=vnikx(2,1) b2=vnikx(3,1) b3=vnikx(4,1) lev(i) = (p1ip(4,j)*b0**2 + 2.*p1ip(3,j)*b0*b1 + 1 2.*p1ip(2,j)*b0*b2 + 2.*p1ip(1,j)*b0*b3 + 2 p1ip(4,j+1)*b1**2 + 2.*p1ip(3,j+1)*b1*b2 + 3 2.*p1ip(2,j+1)*b1*b3 + p1ip(4,j+2)*b2**2 + 4 2.*p1ip(3,j+2)*b2*b3 + p1ip(4,j+3)*b3**2 )*w(i) 23106 continue C Evaluate Criteria rss = 0d0 df = 0d0 sumw=0d0 gcv=0d0 cv=0d0 do 23112 i=1,n df = df + lev(i) 23112 continue if(fittoo)then do 23116 i=1,n sumw = sumw + w(i) do 23118 j=1,p rss = rss + w(i)*wp(j)*(y(i,j)-sz(i,j))**2 cv = cv +w(i)*wp(j)*((y(i,j)-sz(i,j))/(1-lev(i)))**2 23118 continue 23116 continue tssy=0d0 do 23120 j=1,p tssy=tssy+wp(j)*ssy(j) 23120 continue gcv=((rss+tssy)/sumw)/((1d0-((dfoff+df-1)*cost+1)/sumw)**2) C note: the weights should sum to n (the number of original observations) cv=(cv+tssy)/sumw C lev includes the weights C Note that this version of cv omits ALL observations at C tied x values, since the data are already collapsed here endif return end subroutine sinrp2(abd,ld4,nk,p1ip) C Purpose : Computes Inner Products between columns of L(-1) C where L = abd is a Banded Matrix with 3 subdiagonals C A refinement of Elden's trick is used. C Coded by Finbarr O'Sullivan implicit double precision(a-h,o-z) integer ld4,nk,i,j double precision abd(ld4,nk),p1ip(ld4,nk), * wjm3(3),wjm2(2),wjm1(1),c0,c1,c2,c3 wjm3(1)=0d0 wjm3(2)=0d0 C wjm3(1)=0d0 spotted by Brian Ripley 10/8/2015 (earlier actually) wjm3(3)=0d0 wjm2(1)=0d0 wjm2(2)=0d0 wjm1(1)=0d0 do 100 i=1,nk j=nk-i+1 c0 = 1d0/abd(4,j) if(j.le.nk-3)then c1 = abd(1,j+3)*c0 c2 = abd(2,j+2)*c0 c3 = abd(3,j+1)*c0 else if(j.eq.nk-2)then c1 = 0d0 c2 = abd(2,j+2)*c0 c3 = abd(3,j+1)*c0 else if(j.eq.nk-1)then c1 = 0d0 c2 = 0d0 c3 = abd(3,j+1)*c0 else if(j.eq.nk)then c1 = 0d0 c2 = 0d0 c3 = 0d0 endif p1ip(1,j) = 0d0- (c1*wjm3(1)+c2*wjm3(2)+c3*wjm3(3)) p1ip(2,j) = 0d0- (c1*wjm3(2)+c2*wjm2(1)+c3*wjm2(2)) p1ip(3,j) = 0d0- (c1*wjm3(3)+c2*wjm2(2)+c3*wjm1(1)) p1ip(4,j) = c0**2 +c1**2*wjm3(1)+2.*c1*c2*wjm3(2)+ * 2.*c1*c3*wjm3(3)+ c2**2*wjm2(1)+2.*c2*c3*wjm2(2) + 2 c3**2*wjm1(1) wjm3(1)=wjm2(1) wjm3(2)=wjm2(2) wjm3(3)=p1ip(2,j) wjm2(1)=wjm1(1) wjm2(2)=p1ip(3,j) wjm1(1)=p1ip(4,j) 100 continue return end subroutine suff2(n,p,ny,match,y,w,ybar,wbar,ssy,work) integer match(n),n,ny,p,i,j double precision y(n,ny),ybar(p+1,ny),w(n),wbar(p+1),ssy(ny), * work(n) double precision tsum call tpack(n,p,match,w,wbar) do 100 j=1,ny do 34 i=1,n work(i)=y(i,j)*w(i) 34 continue call tpack(n,p,match,work,ybar(1,j)) do 36 i=1,p if(wbar(i).gt.0d0)then ybar(i,j)=ybar(i,j)/wbar(i) else ybar(i,j)=0d0 endif 36 continue call untpack(n,p,match,ybar(1,j),work) tsum=0d0 do 40 i=1,n tsum=tsum+ w(i)*(y(i,j)-work(i))**2 40 continue ssy(j)=tsum 100 continue return end subroutine sspl0(x,y,w,n,p,knot,nk,method,tol,wp,match,nef,center, * dfoff,dfmax,cost,lambda,df,cv,gcv,coef,s,lev,xrange, $ work,iwork, ier) integer n,p,nk,method,ier,nef, nefp1, n2,match(*),iwork(n) double precision x(n),y(n,p),w(n),knot(nk+4),tol,wp(p),dfoff, * dfmax,cost,lambda,df,cv,gcv,coef(*),s(n,p),lev(nef), * xrange(2), work(*) C workspace must be (2*p+2)*nefp1 + (p+16)*nk + n +p logical center double precision xmiss,sigtol,xdiff,temp if(nef.eq.0)then C match has not been initialized xmiss=1d20 sigtol=1d-5 call namat(x,match,n,nef,work,iwork,xmiss,sigtol) xrange(1)=work(1) xrange(2)=work(nef) else do 44 i=1,n work(match(i))=x(i) 44 continue endif xdiff=xrange(2)-xrange(1) do 46 i=1,nef work(i)=(work(i)-xrange(1))/xdiff 46 continue if(nk.eq.0)then call sknotl(work,nef,knot,nk) nk=nk-4 endif if(dfmax .gt. dble(nk))then dfmax=dble(nk) endif if(cost.gt.0)then if(center) then icenter = 1 else icenter = 0 endif temp=dble(n-icenter)/cost - dfoff if(dfmax.gt.temp)then dfmax=temp endif endif nefp1=nef+1 n2=nefp1*(2*p+2)+1 call sspl1(x,y,w,n,p,knot,nk,method,tol,wp,match,nef,nefp1,center, * dfoff,dfmax,cost,lambda,df,cv,gcv,coef,s,lev, * work(1),work(nefp1+1), c xin, yin $ work(nefp1*(p+1)+1),work(nefp1*(p+2)+1), c win, sout * work(n2),work(n2+p*nk),work(n2+(p+4)*nk), c xwy, hs, sg $ work(n2+(p+8)*nk),work(n2+(p+12)*nk),work(n2+(p+16)*nk), $ work(n2+(p+16)*nk+p), ier) return end C Memory management subroutine subroutine sspl1(x,y,w,n,p,knot,nk,method,tol,wp,match,nef,nefp1, *center,dfoff,dfmax,cost,lambda,df,cv,gcv,coef,s,lev,xin,yin,win, *sout,xwy,hs,sg,abd,p1ip,ssy,work,ier) integer n,p,nefp1,nk,method,ier,match(n),nef double precision x(n),y(n,p),w(n),knot(nk+4),tol,wp(p),dfoff, *dfmax,cost,lambda,df,cv,gcv,coef(nk,p),s(n,p),lev(nef),xin(nefp1), *yin(nefp1,p),win(nefp1),sout(nefp1,p),xwy(nk,p),hs(nk,4),sg(nk,4), *abd(4,nk),p1ip(4,nk),ssy(p),work(n) logical center double precision sbar, wmean,tdfoff call suff2(n,nef,p,match,y,w,yin,win,ssy,work) if(center)then tdfoff=dfoff if(cost.gt.0)then tdfoff=dfoff-1/cost endif endif call sspl(xin,yin,win,nef,nefp1,p,knot,nk,method,tol,wp,ssy, * tdfoff,dfmax,cost,lambda,df,cv,gcv,coef,sout,lev,xwy, $ hs,sg,abd, p1ip,ier) C now unpack the results do 60 j=1,p call untpack(n,nef,match,sout(1,j),s(1,j)) if(center) then sbar=wmean(nef,sout(1,j),win) do 64 i=1,n s(i,j)=s(i,j)-sbar 64 continue endif 60 continue if(center) df=df-1 return end subroutine namat(x,match,n,nef,work,iwork,xmiss,tol) C returns match (order) and work(1:nef) is the sorted unique x implicit double precision(a-h,o-z) integer match(*),n,nef,iwork(n),index double precision x(*),xmiss,work(*),tol,xend,xstart do 68 i=1,n work(i)=x(i) iwork(i)=i 68 continue call sortdi(work,n,iwork,1,n) xstart=x(iwork(1)) index=n xend=x(iwork(n)) c while( . ) 70 if(xend .ge. xmiss .and. index .gt. 1)then index=index-1 xend=x(iwork(index)) goto 70 endif tol=tol*(xend-xstart) index=1 work(1)=xstart c for(i = 1:n) -- not allowed to increment i inside do-loop! i=1 100 if(i .le. n) then c while() : 75 if((x(iwork(i))-xstart).lt.tol) then match(iwork(i))=index i=i+1 if(i.gt.n) goto 10 c this next line was missing; added by TH in Nov/2017! goto 75 endif xstart= x(iwork(i)) index=index+1 match(iwork(i))=index work(index)=xstart i=i+1 goto 100 endif 10 if(xstart .ge. xmiss)then nef=index-1 else nef=index endif return end subroutine simfit(x,y,w,n,p,dfoff,cost,wp,gcv,coef,s,type,center, * work) C C computes constant and linear fits, and selects the best using gcv C implicit double precision (a-h,o-z) integer n,p,type double precision x(n),y(n,p),w(n),cost,dfoff,wp(p),gcv,coef(2,p), * s(n,p),work(p) logical center double precision sx,sy,sumw, dcent,sxx,syy,sxy C center is F for no centering, else T C Note: if type enters 1 or 2, no selection is made if(center) then icenter = 1 else icenter = 0 endif dcent=1-dble(icenter) sumw=0d0 gcvc=0d0 do 81 i=1,n sumw=sumw+w(i) 81 continue if(type.ne.1)then C either 0 or 2 in which case the linear is needed as well sx=0.0 sxx=0.0 gcvl=0d0 do 85 i=1,n sx=sx+w(i)*x(i) 85 continue xbar=sx/sumw do 87 i=1,n sxx=sxx+w(i)*(x(i)-xbar)*x(i) 87 continue endif do 100 j=1,p sy=0d0 syy=0d0 do 91 i=1,n sy=sy+w(i)*y(i,j) 91 continue work(j)=sy/sumw do 93 i=1,n syy=syy+w(i)*(y(i,j)-work(j))*y(i,j) 93 continue gcvc=gcvc+wp(j)*syy if(type.ne.1) then C once again, do for linear as well sxy=0.0 do 97 i=1,n sxy=sxy+w(i)*(x(i)-xbar)*y(i,j) 97 continue coef(2,j)=sxy/sxx gcvl=gcvl+wp(j)*(syy -sxy*coef(2,j)) endif 100 continue if(type.eq.0) then gcvc =gcvc/ (sumw* (1 - (dfoff*cost + dcent)/sumw)**2 ) gcvl=gcvl/(sumw* (1 - (dcent + (dfoff +1)* cost)/sumw)**2) if(gcvc.le.gcvl) then type=1 gcv=gcvc else type=2 gcv=gcvl endif else if(type.eq.1) then gcv=gcvc/(sumw* (1 - (dfoff*cost + dcent)/sumw)**2 ) else gcv=gcvl/(sumw* (1 - (dcent + (dfoff + 1)*cost)/sumw)**2) endif if(type.eq.1) then do 107 j=1,p coef(1,j)=work(j)*dcent coef(2,j)=0d0 do 109 i=1,n s(i,j)=coef(1,j) 109 continue 107 continue else do 111 j=1,p coef(1,j)=work(j)*dcent-xbar*coef(2,j) do 113 i=1,n s(i,j)=coef(1,j)+coef(2,j)*x(i) 113 continue 111 continue endif return end subroutine sspl2(x,y,w,n,p,knot,nk,wp,match,nef,dfoff,dfmax,cost, * lambda,df,gcv,coef,s,type,center,xrange,work,iwork,tol,ier) C this routine selects from the linear and constant model as well C see documentation for sspl C workspace must be (2*p+2)*nefp1 + (p+16)*nk + 2*n C if type>0 then no selection is performed; the fit is simply computed. integer n,p,nk,nef,type,match(n),ier,method,iwork(n) double precision x(n),y(n,p),w(n),knot(nk+4),wp(p),dfoff,dfmax, * cost,lambda,df,gcv,coef(*),s(n,p),xrange(2),work(*),tol double precision coef1,coef2,cv logical center Ccenter is F for no centering, else T if(type.eq.3)then method=1 call sspl0(x,y,w,n,p,knot,nk,method,tol,wp,match,nef,center, $ dfoff, dfmax,cost,lambda,df,cv,gcv,coef,s,work(1), $ xrange,work(n+1),iwork, ier) return endif if(type.gt.0)then call simfit(x,y,w,n,p,dfoff,cost,wp,gcv,coef,s,type,center, $ work) if(center) then icenter = 1 else icenter = 0 endif df=dble(type) - dble(icenter) return endif method=3 call sspl0(x,y,w,n,p,knot,nk,method,tol,wp,match,nef,center,dfoff, * dfmax,cost,lambda,df,cv,gcv,coef,s,work(1),xrange,work(n+1), $ iwork, ier) gcv1=gcv call simfit(x,y,w,n,p,dfoff,cost,wp,gcv,work,work(2*p+1),type, * center,work((n+2)*p+1)) if(gcv.le.gcv1) then C the coef swapping is so as not to destroy the spline coefs if needed if(center) then icenter = 1 else icenter = 0 endif df=dble(type) - dble(icenter) do 30 j=1,p coef1=work(1+(j-1)*2) coef2=work(2+(j-1)*2) if(type.eq.1)then do 25 i=1,n s(i,j)=coef1 25 continue else do 27 i=1,n s(i,j) =coef1+coef2*x(i) 27 continue endif coef(1+(j-1)*2)=coef1 coef(2+(j-1)*2)=coef2 30 continue else type=3 gcv=gcv1 endif return end subroutine psspl2(x,n,p,knot,nk,xrange,coef,coefl,s,order,type) implicit double precision(a-h,o-z) integer n,p,nk, order, type double precision x(n),knot(nk+4),xrange(2),coef(nk,p),coefl(2,1), * s(n,p) c Var double precision ytemp C switch(type){ case 1, 2, 3 } : if(type .eq. 1) then do 30 j=1,p if(order.ge.1)then ytemp=0d0 else ytemp=coefl(1,j) endif do 35 i=1,n s(i,j)=ytemp 35 continue 30 continue else if(type .eq. 2) then if(order.ge.1)then do 40 j=1,p if(order.eq.1)then ytemp=coefl(2,j) else ytemp=0d0 endif do 44 i =1,n s(i,j)=ytemp 44 continue 40 continue else do 46 j=1,p do 48 i=1,n s(i,j)=coefl(1,j)+coefl(2,j)*x(i) 48 continue 46 continue endif else if(type .eq. 3) then call psspl(x,n,p,knot,nk,xrange,coef,s,order) endif return end subroutine psspl(x,n,p,knot,nk,xrange,coef,s,order) C make predictions from a fitted smoothing spline, linear or constant implicit double precision(a-h,o-z) integer n,p,nk,order double precision x(n),knot(nk+4),xrange(2),coef(nk,p),s(n,p) double precision xcs,xmin,xdif, endv(2),ends(2),xends(2),stemp double precision bvalue integer where if(order.gt.2.or.order.lt.0) return xdif=xrange(2)-xrange(1) xmin=xrange(1) xends(1)=0d0 xends(2)=1d0 do 23253 j=1,p if(order.eq.0)then endv(1)=bvalue(knot,nk+8,coef(1,j),nk,4,0d0,0) endv(2)=bvalue(knot,nk+8,coef(1,j),nk,4,1d0,0) endif if(order.le.1)then ends(1)=bvalue(knot,nk+8,coef(1,j),nk,4,0d0,1) ends(2)=bvalue(knot,nk+8,coef(1,j),nk,4,1d0,1) endif do 23259 i=1,n xcs=(x(i)-xmin)/xdif if(xcs.lt.0d0)then where=1 else if(xcs.gt.1d0)then where=2 else where=0 endif if(where.gt.0)then C beyond extreme knots c switch(order){ case 0: / 1 / 2 } : if(order .eq. 0) then stemp=endv(where)+(xcs-xends(where))*ends(where) else if(order .eq. 1) then stemp=ends(where) else if(order .eq. 2) then stemp=0d0 endif else stemp=bvalue(knot,nk+8,coef(1,j),nk,4,xcs,order) endif if(order.gt.0)then s(i,j)=stemp/(xdif**dble(order)) else s(i,j)=stemp endif 23259 continue 23253 continue return end mda/src/sgram.f0000644000176200001440000001156513176636732013110 0ustar liggesusersC Output from Public domain Ratfor, version 1.0 C PURPOSE C Calculation of the cubic B-spline smoothness prior C for "usual" interior knot setup. C Uses BSPVD and INTRV in the CMLIB C sgm[0-3](nb) Symmetric matrix C whose (i,j)'th element contains the integral of C B''(i,.) B''(j,.) , i=1,2 ... nb and j=i,...nb. C Only the upper four diagonals are computed. subroutine sgram(sg0,sg1,sg2,sg3,tb,nb) c implicit none C indices integer nb DOUBLE precision sg0(nb),sg1(nb),sg2(nb),sg3(nb), tb(nb+4) c ------------- integer ileft,mflag, i,ii,jj, lentb DOUBLE precision vnikx(4,3),work(16),yw1(4),yw2(4), wpt c integer interv external interv lentb=nb+4 C Initialise the sigma vectors do 1 i=1,nb sg0(i)=0. sg1(i)=0. sg2(i)=0. sg3(i)=0. 1 continue ileft = 1 do 2 i=1,nb C Calculate a linear approximation to the C second derivative of the non-zero B-splines C over the interval [tb(i),tb(i+1)]. C call intrv(tb(1),(nb+1),tb(i),ilo,ileft,mflag) ileft = interv(tb(1), nb+1,tb(i), 0,0, ileft, mflag) C Left end second derivatives C call bspvd (tb,4,3,tb(i),ileft,4,vnikx,work) call bsplvd (tb,lentb,4,tb(i),ileft,work,vnikx,3) C Put values into yw1 do 4 ii=1,4 yw1(ii) = vnikx(ii,3) 4 continue C Right end second derivatives C call bspvd (tb,4,3,tb(i+1),ileft,4,vnikx,work) call bsplvd (tb,lentb,4,tb(i+1),ileft,work,vnikx,3) C Slope*(length of interval) in Linear Approximation to B'' do 6 ii=1,4 yw2(ii) = vnikx(ii,3) - yw1(ii) 6 continue wpt = tb(i+1) - tb(i) C Calculate Contributions to the sigma vectors if(ileft.ge.4) then do 10 ii=1,4 jj=ii sg0(ileft-4+ii) = sg0(ileft-4+ii) + & wpt*(yw1(ii)*yw1(jj)+ & (yw2(ii)*yw1(jj) + yw2(jj)*yw1(ii))*.50 & + yw2(ii)*yw2(jj)*.3330) jj=ii+1 if(jj.le.4)then sg1(ileft+ii-4) = sg1(ileft+ii-4) + & wpt* (yw1(ii)*yw1(jj) + * (yw2(ii)*yw1(jj) + yw2(jj)*yw1(ii))*.50 & +yw2(ii)*yw2(jj)*.3330 ) endif jj=ii+2 if(jj.le.4)then sg2(ileft+ii-4) = sg2(ileft+ii-4) + & wpt* (yw1(ii)*yw1(jj) + * (yw2(ii)*yw1(jj) + yw2(jj)*yw1(ii))*.50 & +yw2(ii)*yw2(jj)*.3330 ) endif jj=ii+3 if(jj.le.4)then sg3(ileft+ii-4) = sg3(ileft+ii-4) + & wpt* (yw1(ii)*yw1(jj) + * (yw2(ii)*yw1(jj) + yw2(jj)*yw1(ii))*.50 & +yw2(ii)*yw2(jj)*.3330 ) endif 10 continue else if(ileft.eq.3)then do 20 ii=1,3 jj=ii sg0(ileft-3+ii) = sg0(ileft-3+ii) + & wpt* (yw1(ii)*yw1(jj) + * (yw2(ii)*yw1(jj) + yw2(jj)*yw1(ii))*.50 & +yw2(ii)*yw2(jj)*.3330 ) jj=ii+1 if(jj.le.3)then sg1(ileft+ii-3) = sg1(ileft+ii-3) + & wpt* (yw1(ii)*yw1(jj) + * (yw2(ii)*yw1(jj) + yw2(jj)*yw1(ii))*.50 & +yw2(ii)*yw2(jj)*.3330 ) endif jj=ii+2 if(jj.le.3)then sg2(ileft+ii-3) = sg2(ileft+ii-3) + & wpt* (yw1(ii)*yw1(jj) + * (yw2(ii)*yw1(jj) + yw2(jj)*yw1(ii))*.50 & +yw2(ii)*yw2(jj)*.3330 ) endif 20 continue else if(ileft.eq.2)then do 28 ii=1,2 jj=ii sg0(ileft-2+ii) = sg0(ileft-2+ii) + & wpt* (yw1(ii)*yw1(jj) + * (yw2(ii)*yw1(jj) + yw2(jj)*yw1(ii))*.50 & +yw2(ii)*yw2(jj)*.3330 ) jj=ii+1 if(jj.le.2)then sg1(ileft+ii-2) = sg1(ileft+ii-2) + & wpt* (yw1(ii)*yw1(jj) + * (yw2(ii)*yw1(jj) + yw2(jj)*yw1(ii))*.50 & +yw2(ii)*yw2(jj)*.3330 ) endif 28 continue else if(ileft.eq.1)then do 34 ii=1,1 jj=ii sg0(ileft-1+ii) = sg0(ileft-1+ii) + & wpt* (yw1(ii)*yw1(jj) + * (yw2(ii)*yw1(jj) + yw2(jj)*yw1(ii))*.50 & +yw2(ii)*yw2(jj)*.3330 ) 34 continue endif 2 continue return end mda/src/dmarss.f0000644000176200001440000004355013176636732013267 0ustar liggesusers subroutine marss(nx,n,p,nclass,y,x,w,tagx,maxorder,mmax,penalty, & thresh,forwstep,interms,prune,bx,fullin,lenb, bestgcv, bestin, & flag,cut,dir,res,alpha,beta,scrat,iscrat,trace) implicit double precision (a-h,o-z) integer nx, n,p,nclass,tagx(nx,p),maxorder,mmax,bestin(mmax), & flag(mmax,p),fullin(mmax) double precision y(n,nclass),x(nx,p),w(n),bx(nx,mmax),bestgcv, & cut(mmax,p),dir(mmax,p),res(nx,nclass),alpha(nclass), & beta(mmax,nclass) double precision scrat(*) integer iscrat(*) logical forwstep, prune, trace, tracec common tracec tracec=trace len1=n*mmax len2=mmax len3=mmax*mmax len4=mmax*nclass len5=nclass len6=mmax len7=mmax len8=nclass len9=n len10=n*mmax len11=mmax*mmax len12=mmax*nclass len13=mmax*mmax len14=mmax*mmax n1=1 n2=n1+len1 n3=n2+len2 n4=n3+len3 n5=n4+len4 n6=n5+len5 n7=n6+len6 n8=n7+len7 n9=n8+len8 n10=n9+len9 n11=n10+len10 n12=n11+len11 n13=n12+len12 n14=n13+len13 n15=n14+len14 call marsnew1(nx, n, p, nclass, y, x, w, tagx, maxorder, mmax, & bx, bestgcv, bestin, fullin, lenb, flag, cut, dir, res, & alpha, beta, penalty, thresh, forwstep, interms, prune, & scrat, scrat(n2), scrat(n3), scrat(n4), scrat(n5), scrat(n6), & scrat(n7), scrat(n8), scrat(n9), scrat(n10), scrat(n11), & scrat(n12), scrat(n13), scrat(n14), scrat(n15), iscrat, & iscrat(1+mmax), iscrat(1+2*mmax), iscrat(1+3*mmax)) return end subroutine marsnew1(nx, n, p, nclass, y, x, w, tagx, maxorder, & mmax, bx, bestgcv, bestin, fullin, lenb, flag, cut, dir, & res, alpha, beta, penalty, thresh, forwstep, interms, & prune, bxorth, bxorthm, cov, covsy, ybar, scr1, scr5, scr6, & temp, bxsc, r, betasc, varsc, var, work, termlen, in, & tempin, qpivot) implicit double precision (a-h,o-z) integer n,nterms2,p,mmax,flag(mmax,p),tagx(nx,p),termlen(mmax), & nclass,fullin(mmax) double precision cov(mmax,mmax),covsy(mmax,nclass),critmax, & x(nx,p),bx(nx,mmax),bxorth(n,mmax),bxorthm(mmax), & y(n,nclass),ybar(nclass),scr1(mmax),scr5(mmax),scr6(nclass) double precision temp(n),w(n), cut(mmax,p),dir(mmax,p), & alpha(nclass),beta(mmax,nclass), bxsc(n,mmax), r(mmax,mmax), & dofit, res(nx,nclass),betasc(mmax,nclass), varsc(mmax,mmax), & var(mmax,mmax), stopfac, work(*) integer tempin(mmax), bestin(mmax),qrank, qpivot(mmax) logical forwstep,go, prune, newform, cvar, trace common trace double precision rtemp(4) integer itemp(4) tolbx=.01 stopfac=10.0 prevcrit=10d9 if(.not.(interms.eq.1))goto 23000 dofit=0 goto 23001 23000 continue dofit=0 do 23002 j=2,lenb dofit=dofit+fullin(j) 23002 continue nterms=interms 23001 continue if(.not.(forwstep))goto 23004 fullin(1)=1 do 23006 i=2,mmax fullin(i)=0 23006 continue do 23008 i=1,n w(i)=1 23008 continue do 23010 i=1, mmax termlen(i)=0 do 23012 j=1, p flag(i,j)=0 cut(i,j)=0 23012 continue 23010 continue nterms=1 nterms2=2 do 23014 i=1,n bx(i,1)=1 bxorth(i,1)=1.0/dsqrt(dfloat(n)) 23014 continue bxorthm(1)=1/dsqrt(dfloat(n)) do 23016 i=1,n do 23018 j=1, mmax bx(i,j)=0.0 23018 continue 23016 continue do 23020 i=1,n bx(i,1)=1 23020 continue do 23022 k=1, nclass ybar(k)=0.0 do 23024 i=1,n ybar(k)=ybar(k)+y(i,k)/n 23024 continue 23022 continue if(.not.(interms.eq.1))goto 23026 rssnull=0.0 do 23028 k=1, nclass do 23030 i=1,n rssnull=rssnull+(y(i,k)-ybar(k))**2 23030 continue 23028 continue goto 23027 23026 continue rssnull=0.0 do 23032 k=1, nclass do 23034 i=1,n rssnull=rssnull+res(i,k)**2 23034 continue 23032 continue 23027 continue rss=rssnull cmm= (1+dofit) + penalty*(.5*dofit) gcvnull=(rssnull/n)/(1.0-cmm/n)**2 if(.not.(trace))goto 23036 call dblepr("initial rss=",11,rssnull,1) 23036 continue if(.not.(trace))goto 23038 call dblepr("initial gcv=",11,gcvnull,1) 23038 continue lenb=1 ii=interms-1 go=.true. 23040 if(.not.( (ii.lt.(mmax-1)).and.((rss/rssnull).gt.thresh).and.go)) & goto 23041 ii=ii+2 do 23042 i1=1, nterms do 23044 i2=1, nterms cov(i1,i2)=0 23044 continue 23042 continue do 23046 j=1, nterms cov(j,j)=0.0 do 23048 i=1,n cov(j,j) = cov(j,j) + % (bxorth(i,j)-bxorthm(j)) * (bxorth(i,j)-bxorthm(j)) 23048 continue 23046 continue do 23050 k=1,nclass do 23052 j=1, nterms covsy(j,k)=0.0 do 23054 i=1,n covsy(j,k)=covsy(j,k)+(y(i,k)-ybar(k))*bxorth(i,j) 23054 continue 23052 continue 23050 continue do 23056 ik=1,mmax tempin(ik)=fullin(ik) 23056 continue call addtrm(nx,bx,tempin,bxorth,bxorthm,p,n,nclass,rss,prevcrit, & cov,covsy,y,ybar,x,tagx,w,termlen,mmax,tolbx, nterms,flag, & maxorder,scr1,scr5,scr6,imax,jmax,kmax,critmax, newform, & bxsc, r, betasc, temp) doftemp=dofit doftemp=doftemp+1 if(.not.((imax.gt.1).and.(newform)))goto 23058 doftemp=doftemp+1 23058 continue temprss=rss-critmax cmm= (1+doftemp) + penalty*(.5*doftemp) gcv=(temprss/n)/(1.0-cmm/n)**2 go=.false. if (.not.(((critmax/rss).gt.thresh).and. & ((gcv/gcvnull).lt.stopfac))) goto 23060 go=.true. dofit=doftemp rss=rss-critmax kk=tagx(imax,jmax) 256 format(" ","adding term"," jmax=",i3, " imax=",i3 ," kmax=",i3, & " critmax= ",f8.2," cutp=", f9.5," rss=",f8.2, " gcv=",f8.2, & " dofit=",f9.3) itemp(1)=jmax itemp(2)=imax itemp(3)=kmax rtemp(1)=critmax rtemp(2)=x(kk,jmax) rtemp(3)=rss rtemp(4)=gcv if(.not.(trace))goto 23062 call intpr("adding term ",12,ii,1) 23062 continue if(.not.(trace))goto 23064 call intpr("var, sp index, parent",21,itemp,3) 23064 continue if(.not.(trace))goto 23066 call dblepr("critmax cut rss gcv",19,rtemp,4) 23066 continue prevcrit=critmax do 23068 j=1,p flag(ii,j)=flag(kmax,j) flag(ii+1,j)=flag(kmax,j) cut(ii,j)=cut(kmax,j) cut(ii+1,j)=cut(kmax,j) dir(ii,j)=dir(kmax,j) dir(ii+1,j)=dir(kmax,j) 23068 continue termlen(ii)=termlen(kmax)+1 termlen(ii+1)=termlen(kmax)+1 do 23070 i=1,n temp(i)=x(tagx(i,jmax),jmax) 23070 continue temp1=temp(imax) fullin(ii)=1 if(.not.((imax.gt.1).and.(newform)))goto 23072 fullin(ii+1)=1 23072 continue flag(ii,jmax)=1 flag(ii+1,jmax)=1 cut(ii,jmax)=temp1 cut(ii+1,jmax)=temp1 dir(ii,jmax)=1 dir(ii+1,jmax)=-1 if(.not.(fullin(ii+1).eq.0))goto 23074 termlen(ii+1)=maxorder+1 23074 continue do 23076 i=1,n if(.not.( (x(i,jmax)-temp1).gt.0))goto 23078 bx(i,ii)=bx(i,kmax)*(x(i,jmax)-temp1) 23078 continue if(.not.((temp1-x(i,jmax)).ge.0))goto 23080 bx(i,ii+1)=bx(i,kmax)*(temp1-x(i,jmax)) 23080 continue 23076 continue if(.not.(nterms.eq.1))goto 23082 temp1=0.0 do 23084 i=1,n temp1=temp1+bx(i,2)/n 23084 continue do 23086 i=1,n bxorth(i,2)=bx(i,2)-temp1 23086 continue goto 23083 23082 continue call orthreg(n,n,nterms,bxorth,fullin, bx(1,ii),bxorth(1,nterms2)) 23083 continue if(.not.(fullin(ii+1).eq.1))goto 23088 call orthreg(n,n,nterms+1,bxorth,fullin, bx(1,ii+1), & bxorth(1,nterms2+1)) goto 23089 23088 continue do 23090 i=1,n bxorth(i,nterms2+1)=0 23090 continue 23089 continue bxorthm(nterms2)=0.0 bxorthm(nterms2+1)=0.0 do 23092 i=1,n bxorthm(nterms2)=bxorthm(nterms2)+bxorth(i,nterms2)/n bxorthm(nterms2+1)=bxorthm(nterms2+1)+bxorth(i,nterms2+1)/n 23092 continue temp1=0.0 temp2=0.0 do 23094 i=1,n temp1=temp1+bxorth(i,nterms2)**2 temp2=temp2+bxorth(i,nterms2+1)**2 23094 continue if(.not.(temp1.gt.0.0))goto 23096 do 23098 i=1,n bxorth(i,nterms2) =bxorth(i,nterms2)/dsqrt(temp1) 23098 continue 23096 continue if(.not.(temp2.gt.0.0))goto 23100 do 23102 i=1,n bxorth(i,nterms2+1)=bxorth(i,nterms2+1)/dsqrt(temp2) 23102 continue 23100 continue lenb=lenb+2 nterms=nterms+2 nterms2=nterms2+2 23060 continue goto 23040 23041 continue rtemp(1)=rss/rssnull rtemp(2)=critmax/rss rtemp(3)=gcv/gcvnull if(.not.(trace))goto 23104 call dblepr("stopping forw step; rss crit and gcv ratios",43, & rtemp,3) 23104 continue if(.not.(trace))goto 23106 if(.not.((rss/rssnull).le.thresh))goto 23108 call dblepr("rss ratio=",10,rss/rssnull,1) 23108 continue if(.not.((critmax/rss).le.thresh))goto 23110 call dblepr ("crit ratio=",11,critmax/rss,1) 23110 continue call dblepr("critmax",7,critmax,1) call dblepr("rss",3,rss,1) if(.not.((gcv/gcvnull).gt.stopfac))goto 23112 call dblepr("gcv ratio=",10,gcv/gcvnull,1) 23112 continue 23106 continue 23004 continue dofit= -1 do 23114 i=1,nterms bestin(i)=fullin(i) dofit=dofit+fullin(i) 23114 continue if(.not.(trace))goto 23116 call intpr("aft forw step",13,nterms,1) 23116 continue cvar=.false. call qrreg(nx,n,mmax,lenb,nclass,bx,bxsc,bestin,y,qpivot,qrank, & beta,res,rss,cvar,var,varsc,scr1, work) nt=dofit+1 if(.not.(qrank.lt. nt))goto 23118 do 23120 i=qrank+1,nt bestin(qpivot(i))=0 fullin(qpivot(i))=0 dofit=dofit-1 23120 continue 23118 continue cvar=.true. rssfull=rss cmm= (1+dofit) + penalty*(.5*dofit) bestgcv=(rss/n)/(1.0-cmm/n)**2 rtemp(1)=bestgcv rtemp(2)=rssfull rtemp(3)=dofit if(.not.(trace))goto 23122 call dblepr("full model: gcv rss dofit",25,rtemp,3) 23122 continue if(.not.(trace))goto 23124 call intpr("terms",5,fullin,lenb) 23124 continue if(.not.(prune))goto 23126 c Need var calculated to do drop-one calculations from t values. cvar=.true. call qrreg(nx,n,mmax,lenb,nclass,bx,bxsc,tempin,y,qpivot,qrank, & beta,res,rss,cvar,var,varsc,scr1,work) do 23128 i=1,mmax tempin(i)=bestin(i) 23128 continue 23130 if(.not.(dofit.gt.0 ))goto 23131 jo=1 rsstemp=10d99 minterm=0 do 23132 ii=2, lenb if(.not.(tempin(ii).eq.1))goto 23134 jo=jo+1 temp7=0.0 do 23136 kc=1,nclass temp7=temp7+beta(jo,kc)**2/var(jo,jo) 23136 continue if(.not.(temp7 .lt. rsstemp))goto 23138 minterm=ii rsstemp=temp7 23138 continue 23134 continue 23132 continue rss=rss+rsstemp dofit=dofit-1 cmm= (1.0+dofit) + penalty*(.5*dofit) gcv=(rss/n)/(1.0-cmm/n)**2 tempin(minterm)=0 100 format(" ","pruning, minterm= ",i4, " gcv=",f9.3,2x, " rss=",f9.3, & 2x," dof=",f9.3," model= ",60(i1,1x)) if(.not.(gcv.lt. bestgcv))goto 23140 bestgcv=gcv do 23142 i=1,mmax bestin(i)=tempin(i) 23142 continue 23140 continue if(.not.(dofit .gt. 0))goto 23144 cvar=.true. call qrreg(nx,n,mmax,lenb,nclass,bx,bxsc,tempin,y,qpivot,qrank, & beta,res,rss,cvar,var,varsc,scr1,work) 23144 continue goto 23130 23131 continue call qrreg(nx,n,mmax,lenb,nclass,bx,bxsc,bestin,y,qpivot,qrank, & beta,res,rss,cvar,var,varsc,scr1, work) 101 format(" ","best model gcv=",f9.3," rss=",f9.3,2x,"model= ", & 60(i1,1x)) if(.not.(trace))goto 23146 call intpr("best model",10,bestin,lenb) 23146 continue if(.not.(trace))goto 23148 call dblepr(" gcv=",4,bestgcv,1) 23148 continue 23126 continue return end subroutine addtrm(nx,bx,tempin,bxorth,bxorthm,p,n,nclass,rss, & prevcrit,cov,covsy,y,ybar,x,tagx,w,termlen,mmax,tolbx, & nterms,flag, maxorder,scr1,scr5,scr6,imax,jmax,kmax, & critmax, newform,bxsc,r, betasc, scrat) implicit double precision (a-h,o-z) integer n,nterms,nterms2,p,mmax,flag(mmax,p),v,tagx(nx,p), & termlen(mmax), nclass, tempin(mmax), minspan, iendspan double precision cov(mmax,mmax),covsy(mmax,nclass),critmax, & x(nx,p),bx(nx,mmax),bxorth(n,mmax),bxorthm(mmax), & y(n,nclass),ybar(nclass),scr1(mmax),scr5(mmax),scr6(nclass), & bxsc(n,mmax), r(mmax,mmax),betasc(mmax,nclass), scrat(n), & w(n) double precision temp1, temp2, scr2,sumb, sumbx, su, st, tem logical newform, tnewform, trace common trace critmax=0 jmax=0 imax=0 kmax=0 do 23150 m=1,nterms nm=0 do 23152 jjj=1,n if(.not.(bx(jjj,m).gt.0))goto 23154 nm=nm+1 23154 continue 23152 continue tem=-(1d0/(p*nm))*dlog(1d0 - 5d-2) minspan= -1d0*(dlog(tem)/dlog(2d0))/2.5 tem=(5d-2)/p iendspan=3d0-dlog(tem)/dlog(2d0) if(.not.(termlen(m).lt. maxorder))goto 23156 do 23158 v=1,p if(.not.(flag(m,v).eq.0))goto 23160 tnewform=.true. mm=1 23162 if(.not.((mm.le.nterms).and.tnewform))goto 23163 mm=mm+1 if(.not.(tempin(mm).eq.1))goto 23164 tnewform=.false. if(.not.(flag(mm,v).ne.1))goto 23166 tnewform=.true. go to 9911 23166 continue do 23168 j=1,p if(.not.(j.ne.v))goto 23170 if(.not.(flag(mm,j).ne.flag(m,j)))goto 23172 tnewform=.true. go to 9911 23172 continue 23170 continue 23168 continue 23164 continue 9911 continue goto 23162 23163 continue if(.not.(tnewform))goto 23174 nterms2=nterms+1 do 23176 i=1,n scrat(i)=x(i,v)*bx(i,m) 23176 continue if(.not.(nterms.gt.1))goto 23178 call orthreg(n,n,nterms,bxorth,tempin, scrat,bxorth(1,nterms2)) goto 23179 23178 continue tem=0 do 23180 i=1,n tem=tem+scrat(i)/n 23180 continue do 23182 i=1,n bxorth(i,2)=scrat(i)-tem 23182 continue 23179 continue bxorthm(nterms2)=0.0 do 23184 i=1,n bxorthm(nterms2)=bxorthm(nterms2)+bxorth(i,nterms2)/n 23184 continue temp1=0.0 do 23186 i=1,n temp1=temp1+bxorth(i,nterms2)**2 23186 continue if(.not.(temp1.gt.tolbx))goto 23188 do 23190 i=1,n bxorth(i,nterms2)=bxorth(i,nterms2)/dsqrt(temp1) 23190 continue goto 23189 23188 continue do 23192 i=1,n bxorth(i,nterms2)=0 23192 continue tnewform=.false. 23189 continue do 23194 i1=1, nterms2 cov(i1,nterms2)=0.0 cov(nterms2, i1)=0.0 23194 continue cov(nterms2,nterms2)=1 do 23196 kc=1,nclass covsy(nterms2,kc)=0.0 do 23198 i=1,n covsy(nterms2,kc) = covsy(nterms2,kc)+(y(i,kc)-ybar(kc)) * & bxorth(i,nterms2) 23198 continue 23196 continue critnew=0.0 do 23200 kc=1,nclass temp1=0 do 23202 i=1,n temp1=temp1+y(i,kc)*bxorth(i,nterms2) 23202 continue critnew=critnew+temp1**2 23200 continue if(.not.(critnew.gt.critmax))goto 23204 jmax=v critmax=critnew imax=1 kmax=m 23204 continue 23174 continue if(.not.(tnewform))goto 23206 nterms2=nterms+1 nterms21=nterms+2 goto 23207 23206 continue nterms2=nterms nterms21=nterms+1 critnew=0.0 23207 continue do 23208 kc=1, nclass covsy(nterms21,kc)=0 23208 continue do 23210 ii=1,nterms21 cov(ii,nterms21)=0 cov(nterms21,ii)=0 23210 continue do 23212 kc=1,nclass scr6(kc)=0 23212 continue do 23214 ii=1,nterms21 scr1(ii)=0 23214 continue scr2=0 su=0 st=0 sumbx2=0 sumb=0.0 sumbx=0.0 k=n-1 23216 if(.not.(k.gt.0))goto 23218 do 23219 i=1,nterms2 kk=tagx(k,v) kk1=tagx(k+1,v) scr1(i)=scr1(i)+(bxorth(kk1,i)-bxorthm(i))*bx(kk1,m) cov(i,nterms21)=cov(i,nterms21)+ (x(kk1,v)-x(kk,v))*scr1(i) cov(nterms21,i)=cov(i,nterms21) 23219 continue scr2=scr2+(bx(kk1,m)**2)*x(kk1,v) sumbx2=sumbx2+bx(kk1,m)**2 sumb=sumb+bx(kk1,m) sumbx=sumbx+bx(kk1,m)*x(kk1,v) su=st st=sumbx-sumb*x(kk,v) cov(nterms21,nterms21)= cov(nterms21,nterms21)+ (x(kk1,v)-x(kk,v)) & *(2*scr2-sumbx2*(x(kk,v)+x(kk1,v)))+ ( (su*su)-(st*st) )/n crittemp=critnew do 23221 kc=1, nclass scr6(kc)=scr6(kc)+(y(kk1,kc)-ybar(kc))*bx(kk1,m) covsy(nterms21,kc)=covsy(nterms21,kc )+(x(kk1,v)-x(kk,v))*scr6(kc) temp1=covsy(nterms21,kc) temp2=cov(nterms21,nterms21) do 23223 jk=1,nterms2 temp1=temp1-covsy(jk,kc)*cov(jk,nterms21) temp2=temp2-cov(jk,nterms21)*cov(jk,nterms21) 23223 continue if(.not.(cov(nterms21,nterms21).gt.0))goto 23225 if(.not.((temp2/cov(nterms21,nterms21)) .gt. tolbx))goto 23227 critadd=(temp1*temp1)/temp2 goto 23228 23227 continue critadd=0.0 23228 continue goto 23226 23225 continue critadd=0 23226 continue crittemp=crittemp+critadd if(.not.(crittemp.gt.(1.01*rss)))goto 23229 crittemp=0.0 23229 continue if(.not.(crittemp.gt.(2*prevcrit)))goto 23231 crittemp=0.0 23231 continue 23221 continue if(.not.(k.gt.1))goto 23233 k0=tagx(k-1,v) 23233 continue if(.not.((crittemp.gt.critmax) .and. & (mod(k,minspan).eq.0) .and. & (k.ge.iendspan) .and. & (k.le.(n-iendspan)) .and. & (bx(kk1,m).gt.0) .and. & (.not.( (k.gt.1) .and. (x(kk,v).eq.x(k0,v))) ))) goto 23235 jmax=v critmax=crittemp imax=k kmax=m newform=tnewform 23235 continue k=k-1 goto 23216 23218 continue 23160 continue 9999 continue 23158 continue 23156 continue 23150 continue return end mda/src/sspl00.f900000644000176200001440000000114612542402002013234 0ustar liggesuserssubroutine sspl00(x,y,w,n,p,knot,nk,method,tol,wp,match,nef,center,dfoff& &,dfmax,cost,lambda,df,cv,gcv,coef,s,lev,xrange,work,ier) integer n,p,nk,method,ier,nef, nefp1, n2,match(1),center double precision x(n),y(n,p),w(n),knot(nk+4),tol,wp(p),dfoff,dfmax,cost& &,lambda,df,cv,gcv,coef(1),s(n,p),lev(nef),xrange(2),work(1) !workspace must be (2*p+2)*nefp1 + (p+16)*nk + n +p logical center2 if (center.eq.0) then center2=.false. else center2=.true. end if call sspl0(x,y,w,n,p,knot,nk,method,tol,wp,match,nef,center2,dfoff,dfmax& &,cost,lambda,df,cv,gcv,coef,s,lev,xrange,work,ier) return end mda/src/dqrreg.f0000644000176200001440000000212113176636732013247 0ustar liggesusers subroutine qrreg(nx,n,px,p,nclass,x,xsc,in,y,qpivot,qrank,beta, & res,rss,cvar,var,varsc,scr1,work) implicit double precision (a-h,o-z) integer nx,n,p,px, qpivot(p),qrank,nclass,in(p) double precision x(nx,p), xsc(n,p), y(n,nclass),res(nx,nclass), & beta(px,nclass),work(*),scr1(p),var(px,p),varsc(px,p) logical cvar ii=0 do 23000 j=1,p if(.not.(in(j).eq.1))goto 23002 ii=ii+1 do 23004 i=1,n xsc(i,ii)=x(i,j) 23004 continue 23002 continue 23000 continue nt=ii ijob=101 info=1 temp3=1d-2 do 23006 i=1,p qpivot(i)=i 23006 continue call dqrdc2(xsc,n,n,nt,temp3,qrank,scr1,qpivot,work) rss=0.0 do 23008 k=1,nclass call dqrsl(xsc,n,n,qrank,scr1,y(1,k),work(1),work(1),beta(1,k), & work(1),res(1,k),ijob,info) do 23010 i=1,n res(i,k)=y(i,k)-res(i,k) rss=rss+res(i,k)*res(i,k) 23010 continue 23008 continue if(.not.(cvar))goto 23012 call calcvar(nx,n,px,xsc,qrank,qpivot,var,varsc,work) 23012 continue return end mda/NAMESPACE0000644000176200001440000000163112751225542012240 0ustar liggesusersuseDynLib("mda") importFrom(class,lvqinit, olvq1, lvq3, lvqtest) importFrom(utils,head,tail,packageDescription) importFrom("graphics", "par", "plot", "points") importFrom("stats", "contr.helmert", "delete.response", "fitted", "kmeans", "model.extract", "model.frame", "model.matrix", "predict", "terms", "update", "var") export("bruto", "coef.fda", "confusion", "fda", "gen.ridge", "laplacian","mspline", "mars", "mda", "mda.start", "polyreg", "softmax") S3method("coef", "fda") S3method("confusion", "default") S3method("confusion", "fda") S3method("confusion", "list") S3method("model.matrix", "mars") S3method("plot", "fda") S3method("predict", "bruto") S3method("predict", "fda") S3method("predict", "gen.ridge") S3method("predict", "mars") S3method("predict", "mda") S3method("predict", "polyreg") S3method("print", "fda") S3method("print", "mda") mda/data/0000755000176200001440000000000013176401731011727 5ustar liggesusersmda/data/ESL.mixture.rda0000644000176200001440000047773611305770047014567 0ustar liggesusers‹ìÝ{øås½ÿÿ9˜‘i”v'Q’J;v²žÏçãõ~¿±{¯è -ÒAé$I;cm¤tÒN%J:)¥R¤¥Ö ;¶ó¡&043Ƙ1ŒïIJž÷ßﺾëûý÷{]¯Ïué¹|f™çÌô¼îŸ÷Ô »¿èµ6ïµóf̘1kƬ Öý1{ÝËõf­û™3fl´ÁºùÈ_¹Ë6 ÞqØ!ï~×ÛÖ½ë±ë>õˆuóQëÞqìp=¸Ý ÇœÙ_óÞmNÚè7»ôûüð_6ýþýâm¿6wËÏm0:îó/üèÁGg~öè-?³Å+G¿Xö‡_¯Yÿ’ѱ͚§~ö¼áì¾ä»Ð¯}ÃzÝÇxÙèò[šü~§2úëÿ|ýúmïùÞpöG÷{~³Œ¾÷úç¿ú(Û¯_ïñ¿{ÑÏOýøMŸ{ÒN ÎÎùû%[^¶ÃÁýY|çG¶›?œµûÌsνçŸû¿>å®ïÜüooío:úø/øÎ;‡³oØè'\|g¿ôºëXðÎÿê×ô…£[sS×ö߯ؽï—=ëÑϾóØ'ôK6{ÃÎ[½ýwýž{Ô¡Ï8¹ÿãvk_ÿÞCægÎ(KÏÞu‡þ§ –د:l8ëÅÝÌß¼¨¿ñi¿ØööûúpþÍG½à£Ç¬®÷å7?á1gìÖßÿ˜Ÿ½øøU+‡ëoqã6‡½àÞþŽWùŸ¯¿þ²Ñ™+¯{ü/xj¿èÍÇ_ôÒ¿ß;ZtÝ~o~sÕp½¶øÅÅYÖŸ±æ™|äíö÷¾ä‰‡}ðíW ×{Ç^_¼¦Û«_ùÓý>ù ÛŽÿåÄ;æýòþ—Üø‰ÿX½ípÖèî+ö<ëQÃY›lpÓœ…÷w~äâ ]}\¿â×öÁ÷¼æŸúûÿŸ}ÙÏ?Üp“×ܱP‡çoç»Æ®£ O¿ïMoyß#ûeÛ7;úíÍF×}ëq˜¿ÏûFל8çÂõ¼¯_ý?g=ímÏö+.;ûä|ýyý]—Ïxï‡5èïùíi«vŸû~Ùqÿ~ë9¥_¼åw¿vB÷Ú~ÙN§ä3w_8ãø~Ú~×ÂO¿oóã?¼^÷W6ûýûF‹û›nßø…Ÿ}Ré×Üø/÷\½øeýß7ZyÀ}{Îýôé;¿~“G+v¸ñ̽gF÷ž£Wo>oe×çϾlöÞÝóoúþúWíÕ¯^óÄO7OØtáÌ×ýòÿrIÿ§¿ºßmß;h´ü¹/üÂçn8má¬výⱟÜhtÜFƒ™÷Ï;s´êÐæí‡<âó£3‡û¾×NOé—luÝí/¾v‡þ˜//»øÒ#¿ÖÿqtùƒÍöêWìúÔ~Ûƒѯ¼mýwÝúñ÷Î?hÿY>nÍèÌýoýàe×Ì]±|Þ›Ÿ|Ì? g^ùŽáÏo¼dtß/ÿ‰CŸÐ/ýÍÞ‹¾\¾1ºõœßúý{ôKï\{ËÉG?³?ýß=oö^Ûö güèÃ/»táì˾òò½¿çqÏûæ)Ï»±_zÈñ«^¿Í›F‹Nþî{·~ôy£ÞôºcvÛý%Ãõ7ùЪS6º¹_ù‚ÕkvÜëÉ£û~yÂú»,½z¸Á«îÞæ9»];úÓs/þðc¯û¯þ¦yùsæ}¯_ýŸYïǟׯü—Í.>nÙ—ûEO㣎?鉣k~´åÚ¯þø»ýÚ+v¸çÀe-ÞýÆÃ¿÷¸áü¹oßê­ÏÞ³_õ/{~ûãóŸ:ºæ”ß-Øj÷ûU¯ßû©_(»ô§ß™ûºMûE»ü®¹ì%Ÿìß}Ä»Öþþ€7÷Ëçžóãç|m›þÍßó•Å›nÛßukûâo¿gõèG—=;ÿÔÑ¥‡Ü~öï6Ý£_ñÅ¿uÂÝgô+ï]{Öñ»=0Z±ÉÞ_ßlÙ¯xå¦ÛöôcûK?säþ>|r¿ê¥wž¸ý§žÔß¶xíkžûícF—.;Íí?ýÎè¯o½å·Gùýý=¿ûÞi?:tëþÒ?ý¯wœ2o8ÿ½[œú×O­-?ñûÏ;eËÑÒ=·{Åö³ç–ÿäżåI'õí²÷õÛî±ñÂõ¶úÆQgüêý ÏØíÚî˜÷÷—ð…#^ø„«ûµðKýÛ^߯¸ráS_²vMä·޶;íÍ£ 7ûâgøõ9ý•ÇðÑ7÷öÌ—>ë±ï?ô?GŸpÊÓŽþüíÍŽXsèûûåoúÀÕï;èúþÆ5[´ä‡ßêzß~õO]öÚ“foo7÷+Þò¢†OúD¿üôgüÏ¿üþ¸þ3_ÞuãŸlxVÿ‡Ãõ¡wÞyÈèîõ¿þÍûþÑW,ÿWÿ×ýío~g÷ó£w=ðÀ¾;ÿíæ¶_;ï¤cÏ~ÛÚÑO.ùCÿá“oî×.zÕžÿ‹ýG7lóß<þ¢Ñ,Ùà‚ƒ~Ü/?ô#}ã˜û¿~诟xÉš}G÷¾äâÓ}ï{ûŸïuÂóϾIM{ÌæÇ´¸_qÀ¶3Yï¯ýŸßqËkž¿ñÜþîs¹¡ÿüIýµÏÿÄê-~Ð_¾`ɉ½æ_G·}ö׫?âÊ~É^ë½ï7®Ýxúð3ó†?êïÙmÏKßî¯í—üá£ÛlòÓóú›ž½â®ç¾¼_²áá{oÕNëzôÀùǾö§ýÕ;»ÕÞ·ÿy8û럾ý%Ûß߯>ç3ÿºÿòµý•?|ÆÙG¿ç Ñê/=ò¨=_¹÷pÆF¯ýù±›¯êýùû~ù¬w\4ºë†_½K¹¤¿é’yßøýQ·Œn9þ®O¿vþhÉm³öÙïg/-Ýa÷ÁsŸsçºç‰OZý³ÍGç?sÁ#w[õ¨Ñ­Û긧­¼s´ìcçþä­¿}wÿ»ïþfö‡_ðÜÑßÞ²á ît3ºåÐãî_ñ‰·÷KŸqÕ¢žý›þÄùǾøG¬êÿ´Ï²çÎ}ç}£•«>uÅŸÖûëhùñøÒË׬ßß;[»ò¤¹£¯¹hë¿SÇþÖ_ü„Ñ OÚtŸ÷Ù¿¿èãŸ{àãïßh´òÈ þö¥éW¿ôÞo}öwÇ.ßz£Õ×®}c¿òŒ–ýð7_}åÝçϼ|§ý²³oÞäÚï7:ãèy‡ïù¸³ú;¶<ç•÷}÷¥ýâÁš;®›÷×þÊ~µìùGî5ZvÙFŸüö ¿êo^>xÚn¿za¿ôkÌ[°Ëýg=ïi?ßðKÃYÃÓ¿³õ¡;®Úê¼MÿiÆßúE£íð¯Ë—÷K¿º`¿¯}æýý¿¹ùy{xßþ–ná.ÚæÉýÒ«îÞtͱƒ~ÍþÅý^ÙßyÁÎÛ.<ä¶á¬yžqÞWþ«¿eá©g~ùâ~Íy/;ëé—ì4œsî‹7ýäéýͽõu/ßåâþÞ½‹O?bq÷Ï®ºè†mÑßú—_>ó9·6œ}蜷žôèÏô+ŸùÌ=þü¬£Ë¯ÝlÑ&ͪþÆÍÏ:æôç¬ξ脟¿ùÙý%×ÌùøÅÏ[>œñ¥ƒÏ]<ã-Ù[,÷¤-†3Þ¹øW 6;y8óÔ¿ß½`øšþ¾EG8ÜýgÃ9¯XÑnù²Ëú{Þ¸÷Eÿþî9ý]‹þ{ßÝþí~ÅGïXóÍWíÒ¯ØæSŸ}îcöìï}ÚÜîªÇØ_ñå—|ãô7e8׿ðäßpq¿òÚ_<ùä×:œ±ÇÖï~×­Ïîï¸û'<ù§ gÜxÕãß¶ÃnýÒo\1ïû¯Û¿_¾õ™ß_uÈoû{®~ͱg¿ôöþÖSž¿ÃkvZÛ/ÿÖŽç\}ç6ýÒý?sþ?uX¿êç;žwæìúU—^ýünÙ-ýš#?µú¨#öÎXïÔ×ñ]ôŸßö˜Ù¼ïÈþ¶y³ž¾ÿ¾;ô;sîvßÝþòþÏ—õ‹ýÿý²þï{üécÇ–CúûžòÕ—ô‹Íúÿ>æQøíÜ­ú»ÚèÏßxþèüÜð–ûØ{8÷Ú3vÚñ-÷öçîú‘Û¶ùá{ûeݱùvïøÖº¯Ç ÖžrAξü{¸õyýÊgíþáŸ<æ„þwW¬¼þ©·ì0\ïY^°âþÏõ«ûá.óë~=g>ï §ì¹mÿ×]Ÿõ¡ÅÍ™ý͹~³#èoßi»íœµÕº¯—[Ÿ³Û^Ü/ÛëÖ‹_ýß_ë/{×ú¯ÿî7Ù/ÿïëW}ò‘wg|é¶Ùã¢~Í‹þyÓ¹_~Ö'ÿ´ú£ö×lùí'lüƒGõ«ç?÷ã[|è´þž?ùýw~ð¼~ÙwNÞvÁú‡÷w¼åœ9ͯìWÌN\8cü¾ñ_=Zûзî{èó£5ýu£Õ½´jü¾•ã÷­¿ï®ñû–ß7þñŒ–Œ¿ýÖñçÿº¿ŒßÓø}׿ýŠñç/ÿùÙ͇výøÏûñ·÷ã÷÷㿾ýøûïÇûúñþ~üã™üº¼ýøÇß>ýøç×¾ýøçß=úñ¯O?þõŽ|Ãñ¯çpüë;ÿzÇ¿þÃñÃñ?Ã9ã÷Í¿oýñû1~ß#ÆïÛ`ü¾yã÷=rü¾ùã÷Í¿oÃñû5~ߣÇïÛhü¾ÆŸßèáû¨wRï¤ÞI½“z'õNêÔ;©wRï¤ÞI½“z'õNêÔ;©wRï¤ÞI½“z'õNêÔ;©wRï¤ÞI½“z'õNêÔ;©wRï¤ÞI½“z'õNêÔ;©wRï¤ÞI½“z'õNêÔ;©wRï¤ÞI½“z'õNêÔ;©wRï¤ÞI½“z'õNêÔ;©wRï¤ÞI½“z'õNêÔ;©wRï¤ÞI½“z'õNêÔ;©wRï¤ÞI½“z'õNêÔ;©wRï¤ÞI½“z'õNêÔ;©wRï¤ÞI½“z'õNêÔ;©wRï¤ÞI½“z'õNêÔ;©wRï¤ÞI½“z'õNêÔ;©wRï¤ÞI½“z'õNêÔ;©wRï¤ÞI½“z'õNêÔ;©wRï¤ÞI½“z'õNêÔ;©wRï¤ÞI½“z'õNêÔ;©wRï¤ÞI½“z'õNêÔ;©wRï¤ÞI½“z'õNêÔ;©wRï¤ÞI½“z'õNêÔ;©wRï¤ÞI½“z'õNêÔ;©wRï¤ÞI½“z'õNêÔ;©wRï¤ÞI½“z'õNêÔ;©wRï¤ÞI½“z'õNêÔ;©wòÿÔ<ôé™uÖ9mŽxðŽTgSçC=ܯÎ:§Îûü:õ¥:ëœ:zκ¤Î:§ÏŸSfÕYçÔ¹füœRgÓæ½ãç”:ëœ6WŸSê¬sÚ\5~N©³Î©óÁç”™uÖ9uÞóàsJÔYçÔ¹rüœRgÓæÝãç”:ëœ6WŒŸSê¬sê?§ÔYç´y×ø9¥Î:§Íå>§¼½Î:§Îeãç”:ëœ6—ŽŸSê¬sê?§ÔYç´yçƒ_ö«³Î©sɸ+uÖ9mÞþàï{TgSç­ãçÙ:ëœ6ÿ6~N©³Îisñø9¥Î:§Í›ÇÏ)uÖ9m>ü÷y×Yç´ùçñsJuN›7ŸSê¬sÚ¼~üõ§Î:§ÍëÆ]©³Îióêñï{ê¬sÚ¼bü<[gÓæ¥ãç”:ëœ6/ý©³ÎióÜqWê¬sÚ<{|/uÖ9m~§Î:ÿÏsFý¨ÿýø^ê¬sê<»Î:ÿ/æøy¶Î:§Î Ç÷RgÓæøo«³Î©óŠqWê¬sÚÿÿuÖ9u^7þúSgÓæØ+ÕYçÔyÓø9¥Î:§Í±§®³Î©ó/ãçÙ:ëœ6Ç¿WuN‹Ç¿ï©³Îisü÷£×YçÔyëø9¥Î:§Íñ?/§Î:§Î%ãç”:ëœ6Çÿ<¿:ëœ:—ŽŸSê¬sêw¥Î:§Íñ?¿¼Î:§Îñ¿¡Î:§Î»ü}OÔYçÔ9þ÷5ÕYçô9~N©³Îisü³Î©såƒÏ)ûÕYçÔ9þ÷]×YçÔ¹jüœRgSçø9¥Î:§ÍÕãç”:ëœ6ï?§ÔYç´¹æÁçÕYçÔy߃Ï)³ê¬sú?§ÔYç´yÿø9¥Î:§Íµãç”:ëœ6?§ÔYç”9|ð1eÆÌ:ëœ>ìÊÛë¬sú|èy¶Î:§Î™~ý‰:ëœ>ú}OuN³ÆÏ)uÖ9uŽŸSê¬sê?§ÔYç´9{üœRgSçø9¥Î:§ÍõÆÏ)uÖ9u>øœ²_uNŸãç”:ëœ6猟Sê¬sê?§ÔYç´9wüœRgSçø9¥Î:§ÎñsJuN›ëŸSê¬sÊœ1c½ü?‚3gÌØhƒusÎ[÷ËÁ¯{±ÑCŸœñOÎ]ð–CÞõŽÃzë¬Ö}fÃu¬{½ÉéÍÿÏwñˆ}Þ±à€·,xÛ?¾—Ç>ôíÿøÞ|ï?¾}æàáöð øE<üB¿(¿h~Ñ>ü¢¿˜5Øvòj0ye“W>y“Wš¼*“WÍäU;y5Ùa“6Ùa“6Ùa“6Ùa“6Ùa“6Ùá“>Ùá“>Ùá“>Ùá“>Ùá“>Ù“1Ù“1Ù“1Ù“1Ù“1Ù¡ÉMvh²C“šìÐd‡&;4Ù¡ÉMv”ÉŽ2ÙQ&;ÊdG™ì(“e²£Lv”ÉŽ2ÙÑLv4“ÍdG3ÙÑLv4“ÍdG3ÙÑLv4“ídG;ÙÑNv´“ídG;ÙÑNv´“ídG;ÙÑMvt“ÝdG7ÙÑMvt“ÝdG7ÙÑMvtï˜=ØvÛ|9È—–/=_F¾T¾,ù²É—m¾ÌmƒÜ6ÈmƒÜ6ÈmƒÜ6ÈmƒÜ6ÈmƒÜ6Èm–Û,·Yn³Üf¹Ír›å6Ëm–Û,·ynóÜæ¹Ís›ç6ÏmžÛ<·ynóܹ-r[ä¶Èm‘Û"·En‹Ü¹-r›r›r›r›r›r›r›r›r›r›r[Ém%·•ÜVr[Ém%·•ÜVr[Ém%·5¹­ÉmMnkr[“ÛšÜÖä¶&·5¹­Émmnks[›ÛÚÜÖæ¶6·µ¹­Ímmnks[—ÛºÜÖå¶.·u¹­Ëm]nër[—Û²%–-±l‰eK,[bÙË–X¶Ä²%–-±l‰eK,[bÙË–X¶Ä²%–-±l‰eK,[bÙË–X¶Ä²%–-±l‰eK,[bÙË–X¶Ä²%–-±l‰eK,[bÙË–X¶Ä²%–-±l‰eK,[bÙË–X¶Ä²%–-±l‰eK,[bÙË–X¶Ä²%–-±l‰eK,[bÙË–X¶Ä²%–-±l‰eK,[bÙË–X¶Ä²%–-±l‰eK,[bÙË–X¶Ä²%–-±l‰eK,[bÙË–X¶Ä²%–-±l‰eK,[bÙË–X¶Ä²%–-±l‰eK,[âÙÏ–x¶Ä³%ž-ñl‰gK<[âÙÏ–x¶Ä³%ž-ñl‰gK<[âÙÏ–x¶Ä³%ž-ñl‰gK<[âÙÏ–x¶Ä³%ž-ñl‰gK<[âÙÏ–x¶Ä³%ž-ñl‰gK<[âÙÏ–x¶Ä³%ž-ñl‰gK<[âÙÏ–x¶Ä³%ž-ñl‰gK<[âÙÏ–x¶Ä³%ž-ñl‰gK<[âÙÏ–x¶Ä³%ž-ñl‰gK<[âÙÏ–x¶Ä³%ž-ñl‰gK<[âÙÏ–x¶Ä³%ž-ñl‰gK<[âÙÏ–x¶Ä³%ž-ñl‰gK<[âÙÏ–x¶Ä³%‘-‰lIdK"[Ù’È–D¶$²%‘-‰lIdK"[Ù’È–D¶$²%‘-‰lIdK"[Ù’È–D¶$²%‘-‰lIdK"[Ù’È–D¶$²%‘-‰lIdK"[Ù’È–D¶$²%‘-‰lIdK"[Ù’È–D¶$²%‘-‰lIdK"[Ù’È–D¶$²%‘-‰lIdK"[Ù’È–D¶$²%‘-‰lIdK"[Ù’È–D¶$²%‘-‰lIdK"[Ù’È–D¶$²%‘-‰lIdK"[Ù’È–D¶$²%‘-‰lIdK"[Ù’È–D¶$²%‘-‰lIdK"[¢l‰²%Ê–([¢l‰²%Ê–([¢l‰²%Ê–([¢l‰²%Ê–([¢l‰²%Ê–([¢l‰²%Ê–([¢l‰²%Ê–([¢l‰²%Ê–([¢l‰²%Ê–([¢l‰²%Ê–([¢l‰²%Ê–([¢l‰²%Ê–([¢l‰²%Ê–([¢l‰²%Ê–([¢l‰²%Ê–([¢l‰²%Ê–([¢l‰²%Ê–([¢l‰²%Ê–([¢l‰²%Ê–([¢l‰²%Ê–([¢l‰²%Ê–([¢l‰²%Ê–([¢l‰²%Ê–([¢l‰²%Ê–([¢l‰²%Ê–([R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[R²%%[ÒdKšlI“-i²%M¶¤É–4Ù’&[ÒdKšlI“-i²%M¶¤É–4Ù’&[ÒdKšlI“-i²%M¶¤É–4Ù’&[ÒdKšlI“-i²%M¶¤É–4Ù’&[ÒdKšlI“-i²%M¶¤É–4Ù’&[ÒdKšlI“-i²%M¶¤É–4Ù’&[ÒdKšlI“-i²%M¶¤É–4Ù’&[ÒdKšlI“-i²%M¶¤É–4Ù’&[ÒdKšlI“-i²%M¶¤É–4Ù’&[ÒdKšlI“-i²%M¶¤É–4Ù’&[ÒdKšlI“-i²%M¶¤É–4Ù’&[ÒdKšlI“-i²%M¶¤É–4Ù’&[ÒdKšlI“-i²%m¶¤Í–´Ù’6[ÒfKÚlI›-i³%m¶¤Í–´Ù’6[ÒfKÚlI›-i³%m¶¤Í–´Ù’6[ÒfKÚlI›-i³%m¶¤Í–´Ù’6[ÒfKÚlI›-i³%m¶¤Í–´Ù’6[ÒfKÚlI›-i³%m¶¤Í–´Ù’6[ÒfKÚlI›-i³%m¶¤Í–´Ù’6[ÒfKÚlI›-i³%m¶¤Í–´Ù’6[ÒfKÚlI›-i³%m¶¤Í–´Ù’6[ÒfKÚlI›-i³%m¶¤Í–´Ù’6[ÒfKÚlI›-i³%m¶¤Í–´Ù’6[ÒfKÚlI›-i³%m¶¤Í–´Ù’6[ÒfKÚlI›-i³%m¶¤Í–´Ù’6[ÒeKºlI—-é²%]¶¤Ë–tÙ’.[ÒeKºlI—-é²%]¶¤Ë–tÙ’.[ÒeKºlI—-é²%]¶¤Ë–tÙ’.[ÒeKºlI—-é²%]¶¤Ë–tÙ’.[ÒeKºlI—-é²%]¶¤Ë–tÙ’.[ÒeKºlI—-é²%]¶¤Ë–tÙ’.[ÒeKºlI—-é²%]¶¤Ë–tÙ’.[ÒeKºlI—-é²%]¶¤Ë–tÙ’.[ÒeKºlI—-é²%]¶¤Ë–tÙ’.[ÒeKºlI—-é²%]¶¤Ë–tÙ’.[ÒeKºlI—-é²%]¶¤Ë–tÙ’.[ÒeKºlI—-é²%]¶¤Ë–tÙ’.[ÒeKºlI—-é&-Yo°í$&ÿx=ÀkÃkÇëÀkáuÁë¯[¼ÆÞö°w€½ì`ï{Ø;ÀÞö°×°×°×°×°×°×°×°×°×°×°×±×±×±×±×±×±×±×±×±×±7°7°7°7°7°7°7°7°7°7°WØ+ìö {…½Â^a¯°WØ+ì-Ø[°·`oÁÞ‚½{ öì-Ø[°·ÁÞ{ìm°·ÁÞ{ìm°·ÁÞ{[ìm±·ÅÞ{[ìm±·ÅÞ{[ìm±·ÃÞ{;ìí°·ÃÞ{;ìí°·Ã^ôj€^ Ыz5@¯èÕ½ Wôj€^ Ыz5@¯èÕ½ Wôj€^ Ыz5@¯èÕ½ Wôj€^ Ыz5@¯èÕ½ Wôj€^ Ыz5@¯èÕ½ Wôj€^ Ыz5@¯èÕ½ Wôj€^ Ыz5@¯èÕ½ Wôj€^ Ыz5@¯èÕ½ Wôj€^ Ыz5@¯èÕ½ Wôj€^ Ыz5@¯èÕ½ Wôj€^ Ыz5@¯èÕ½ Wôj€^ Ыz5@¯èÕ½ Wôj€^ Ыz5@¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯½rôÊÑ+G¯½rôÊÑ+G¯½rôÊÑ+G¯½rôÊÑ+G¯½rôÊÑ+G¯½rôÊÑ+G¯½rôÊÑ+G¯½rôÊÑ+G¯½rôÊÑ+G¯½rôÊÑ+G¯½rôÊÑ+G¯½rôÊÑ+G¯½rôÊÑ+G¯½rôÊÑ+G¯½rôÊÑ+G¯½rôÊÑ+G¯½rôÊÑ+G¯½rôÊÑ+G¯½rôÊÑ+G¯½rôÊÑ+G¯½rôÊÑ+G¯½rôÊÑ+G¯½rôÊÑ+G¯½rôÊÑ+G¯½rôÊÑ+G¯½ ô*Ы@¯½ ô*Ы@¯½ ô*Ы@¯½ ô*Ы@¯½ ô*Ы@¯½ ô*Ы@¯½ ô*Ы@¯½ ô*Ы@¯½ ô*Ы@¯½ ô*Ы@¯½ ô*Ы@¯½ ô*Ы@¯½ ô*Ы@¯½ ô*Ы@¯½ ô*Ы@¯½ ô*Ы@¯½ ô*Ы@¯½ ô*Ы@¯½ ô*Ы@¯½ ô*Ы@¯½ ô*Ы@¯½ ô*Ы@¯½ ô*Ы@¯½ ô*Ы@¯½ ô*Ы@¯„^ ½z%ôJè•Ð+¡WB¯„^ ½z%ôJè•Ð+¡WB¯„^ ½z%ôJè•Ð+¡WB¯„^ ½z%ôJè•Ð+¡WB¯„^ ½z%ôJè•Ð+¡WB¯„^ ½z%ôJè•Ð+¡WB¯„^ ½z%ôJè•Ð+¡WB¯„^ ½z%ôJè•Ð+¡WB¯„^ ½z%ôJè•Ð+¡WB¯„^ ½z%ôJè•Ð+¡WB¯„^ ½z%ôJè•Ð+¡WB¯„^ ½z%ôJè•Ð+¡WB¯„^ ½z%ôª W½*èUA¯ zUЫ‚^ôª W½*èUA¯ zUЫ‚^ôª W½*èUA¯ zUЫ‚^ôª W½*èUA¯ zUЫ‚^ôª W½*èUA¯ zUЫ‚^ôª W½*èUA¯ zUЫ‚^ôª W½*èUA¯ zUЫ‚^ôª W½*èUA¯ zUЫ‚^ôª W½*èUA¯ zUЫ‚^ôª W½*èUA¯ zUЫ‚^ôª W½*èUA¯ zUЫ‚^ôª W½*èUA¯ zUЫ‚^ôª W½*èUA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ôªA¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯ZôªE¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ôªC¯:ô ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾ÝáÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾=àÛ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾]ðí‚o|»àÛß.øvÁ· ¾½À·øöß^àÛ |{o/ðí¾½À·øöß^àÛ |{o/ðí¾½À·øöß^àÛ |{o/ðí¾½À·øöß^àÛ |{o/ðí¾½À·øöß^àÛ |{o/ðí¾½À·øöß^àÛ |{o/ðí¾½À·øöß^àÛ |{o/ðí¾½À·øöß^àÛ |{o/ðí¾½À·øöß^àÛ |{o/ðí¾½À·øöß^àÛ |{o/ðí¾½À·øöß^àÛ |{o/ðí¾½À·øöß^àÛ |{o/ðí¾½À·øöß^àÛ |{o/ðí¾½À·øöß^àÛ |{o/ðíå1ißQ=þoüÀŠŒŠÒÖÞ{¹*Õë*’hHC*Ò¦½Ò4* Šv-²ÂÇL ‰¤¬–‘‘üúžßïüÎë÷yßçý×}î÷ó¾ž×}ŸåÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·åÛòí@ùv |;P¾(ß”oÊ·Ãÿõ휋¦ÿ÷S¤Úÿ?úßy,,°304 Ó©3w.þw‚ü›¿šÉ.“Oþd*pGꓟ·Ý^3Èÿ$?Ò¤j– ª“©Ûßâ¾H¾Ü?wþDúI2~iK¤FW,ù¤Võ~s·y/ßa?”nC†±lJ¹ÜCÞ”sm4U!w­…îÍy‘ #1ŽA¤¯WÅÅœ¡Œô^½~ÿ¥ÛÒã«.õm7éQ•Ù=­ÏGzÏ?jcgÝCžÏ ¨5†8“·LÛ4- ;Ȩuý¡œyO2-Î#==þü½’>0™Àެ\3 ¼5óÈÞÙ™ú]0¹…Reß8 _²H­iS- ]®oЗD5:##yÅÙ½ãQâÚ² ýÏ¥œ^¶ø×e¢ô¸<÷”[8ÊšÝVõ[»åv© þÚÚ†r­ ãÛ¡ì´Ìíc¿ Qº€×Z¾+ÅÏðßOJnFÁ‹kxÙc qMÝÀ_~)\ºWò™8÷ò§·ç}úŽÕä׿÷ã““dÄè2ç ÿפ/O€Ï\í2¹Ë}$ãüõHÒöüÞýŽ/IíøWÍÔ]¤Tõw†ˆHÉ‘©XæÉM=N¥®—² áônIs,#ÞLßvöde“=ÍNµwãÈŽmš§öª“ÍòÆmV}Cþ[ÑâÍDçØêd  „í”ùc~ Ç®ð1b¥4y{jÉ^¼ëpû ñÙ"Î3Å!J"¾™«]Ÿ!I+¾ý  #9 ÿz%;€”nÉRaC6 ŒÛS0,êû^ ^B¦Ór7¢#» ÛY×åäOûæ5Œ7XÈϹ·=w¬È›fÖ—³§ÈÔÂDVû³ƒä«þÊÒXg2!åewµ»Š|*™jU6š"ï3÷X “á?dçY2”ò9mÇ-FòêņNß´HÿçƒúÝüKÈó©óâFIOÉs²rlS×Yò")äí]¹¥ä5ûÈQj%ï˜ÿ¬ò’® “^›ÍO É‘Y=æÛœ9ÝÈèxZºÌp9‡ïCŽÎ¸fŸÈÏò”*äÛê¼ü ‹éš—™L¡ØC.Ž?ç9<œS†Ò%ùÂwnCÙÇÛÂÓXΡü'Éc&v¨øÉX„' r›žH¶¼'ªrŸf¸rU½§Ûe—ê¡êÚ‰È}†§P)+?EºÔe߬ú4gwÅ_5efÉŽ"ÿHŸFnorî|ÕºO™/Ü „^dödúYi2ÎÇù]Íú7 Õã7ªÒ"OÒB‡w[›G&„·J‘‹]Ú,üH•ɲÒíIýä¤xâ_A§s$Ó³·=Îz‚Ä8Å÷Hpe¢MÄ#káþR½Ä~ÛáãÊvnd{çQ³µõÄØ_ùwØÁƒÄ({ƒÔ‚Ú3²u“˜}µ '±^Ñv¿éF4Ù[Y[«ós€ø˜ÝN×NŸ$¯¦ËûDlIâw¯+ÚoIŽ–­•ß)ÕÜ=êP¯Jjë~_M©ÀÕkÏñ~¨ÇU&7Ÿui#›² ÓE—“ÈÒÔ5Ú{+ ™ZS´7;Š J©O˜ØW?ÿ< —l+#¿ ŠT$3Ëë7;|œ%ßíëƒù•È×ÿ®4=ƒ:2Qïý:ey•Õ½þbjù ]dÈ|ÀŒ”9Ž¿Ù´‘¼=9«°ö¬yc!£=óüyýY;Ìöær2øòÝÍ={ÉðÆêÍW~÷-þùmeÉ·ŠˆÉ±ØL2ׯáûS—lhþ1³ÞÙk|;'º×þØ9̱׹ÅUmfÌAñ0ÝŸ‚'Pz “¸ÔÊmU°âÞ´ÍõÖH[6£ŠøgÛŒPuÒøóv/T׊q8`…ûmCX¢5QÓ•Eù*¯:jN–~“¼‹š ÃÁûÇuPÃøhãËjTM8Óšdå²TÛÖò¢ØP†ŒÛUgäù#q¶<ÅW¼z4ã»9¶¨Èßù|/Ím.f $¸6*t,³"/.•=dá%÷Où3¾ØF®¾H)ú΢L;_73[Mò^ïš¡éc$_óîÛñFc’ò[Kwæè9¸YÀŽç÷EଶSæÆ[âšÞkË9u‡ØE0ÿqEžì°Íø+Æý“X6…ß^·–Øî>)òM¤8‡*r­±M >¹y'8k®/æÃ„õíàR’øæ‡×å»É$ÇÆåßIeR*œô«åì[R»Gο°4ƒ´Î$~|Ðzy%ÇÝ|øë©tü‰îf\½tìK¡V(®²ºúµÜŸÙ¶ºl>² Yž§ðë´"ÓH‘pä×xdpЗiÿ×IæŽ&Öî%¿Š-å±#3nמX>úI¾wút i’oº±ïà.2éV-[ýÙ•ŒþàSâ[ÊC>Ê$æ=Ú ä=ç¯/ÛíxÈÈûá´Ì§äÝju‘›Oßyb?µ?’‰í<­›ÈôÑŽÂê†Z²À!ùy­..M—Õ •ÃÕÿ6›¬a>Ž‹ÊE±ÖÔË”Î(\šçnŒ Še8ë3P%°ŸCÓa+ª5¸¬wd;ŽÉlEF·žâzãÍL|ÞÍß#нþ‹Ú1Ó¡ýg¡N7çÀþÊ[¸áôÌÝf{Üpä'çõÆBÔYñpöÇ ®^š²i¬ÕðDç…Ê£({|#Ûûº^]éw}™8r[è‰Á¥b&'¥ÊÈï<ãÛ§™–’/2ðv`»y» jÐÛ˜Jžò}Ïs“&·ƒÝÌ´ª‘VþAa'—Ñêü¦Ëú¤¤xóÅëRI¶]¾—Ð’pw€3îB LŽæÍñ#>&j.‡7—“ÿž ¤YGæõü jÄqÇÜ÷öˆ¯ÄUúL²¯€6ñ=t@òX¢‰\!Íðƒ$èw¤î&9ÅÏåi‘Ò努MëòH-\ü:IZ{_5DLJÛý«-C¾ó£ˆK¥Ä½~È;ëyÈ»âê›yäêí7:¢µW¯•Ýß¾µ Wʬ|Wlß©dKä"ëªÒŽÉgÞÈ,Xg”t<rsãEΧ‘ùO¹žÌ’¹ß2D.™^ÇÂz5e2Í‘e•¢A¾µqW¶®!Ÿ ùökþŒ—ËwqÝn#£wïý0™yFFã&kŽ>*#ãmŽcÓrÉ·ä)…¯ÉOžeSü›"c|]qåªB\±w6áj^®]ʵâ N)¼¥Lïã•ï ¨n|ÿre-ª¶k“Û P#¾s0¢¯aÍþ=Êq‡P;,ñ¶ÀýÅÿ¿MóÕðÔI5*Q”BòÉ3í›l X•å¿$‚cÝVwƒÑàÏU‰åÑ@+‹ÿⓟ¨wC,tÿ®¿¨¥ 'ââ-‰ª/lV/°Eé]6{¹{O `ãw5ùçÈé•{²°…™¦Õ†uÞ¬'3Y1áýKšÈ¨£ŸåÝÓ^ä•Ã$‹l+yüühsF‹¹á 9¬ª"B.d1¸Ë(7’JaÆËE‡‹È‰ugר±¹‘Œ+5ÅÇ“ØæLQœ¹$T\þÙ{—uÄ;çôI3â¡sk<ñÏ=â™bSl»dñŸ{¿*]÷‰¼ày³€‹ƒ$Îu½[[Ar6̸—Ú!§¿ç›8ÜU#µkR v|1"­M¬/ø+"Éí¶škë, ÈSaÑÛSˆRí‡û™ÄQ\i-WBõÿ×ûÝQ »·jj{òòø¸]™+A®±Ò}SÌkpµú{[sï÷¸êÚ u#ãhd»ùbän÷Sdµ½+kbû™ÝBí%õaÀVRÏW”üÝ%Ý9ÖßKæNN»çb_ûåEÊ?é"Ó÷RäxbËð<-ùN¥Ô¾â>„â›<ù=ÍE¹X¯l†æ ¨ZâÛVŸ€ši‚šV!#¨-o7< óuãÌÍ,{ŠäTÜç€=!hÐ5òÄÔ"7Êïô‘ôÂMQ5jw<ÒѨTý¼ò.ÜúÛøPŸnn4·“z„F_ºÒ¯Å˜âÆ—GÏõ¼ù‰dNL!a áW•kSº-ª0j·]‰È@‰Ð´u¬UBÈkØïh>´—ÿëüð˜,<“6}1G¦BÏ© 2°“wË«­'És¥Ñ©‰\5rÁŒéò䊞¼DÝš“¤a¾4O¤Îš”¯>Ü>®KòFy»ŽÞ"©Ý_ÊLDHôÓDŽI»ƒ$TY÷aƾ$°×ôNþš·$øÒ»rCä@ŠsåŠNO’ü¥àɱ˜H~ ü“œŽo•_bNj¦Kq"ÀŽ´f}wÌøGnŸšÜfG*ÉSæÈÇö¯ÈÛcÉ/þ“¨85¯sóQÊÖê¼³ØÁˆR"]qÛd«P\ÂLãñS#ÃwWïFzéþW;ùzcZ?r¯YöPFì:®v*kžÿ,ì,òÌѸ|]P7CO²6 ;’ʃÌWöéíiFFMO“ñGbd/ùÙí•»ÉïCB=WErÉÏß*†`62“µ)þ#ù‘ûfÅF2c.Äoæ£H~]dSÿ‹ ¶ ù?{qéø¤Ó‰Ñ\s(jgÊþ(Ôò•Õá9JÅܾ+¸•ýN8>«ˆšòlC—‡ìPGê± 1'ê2”*¿>І‚CwîݪÇM¢Ž¼Ýç,p3«Ñ­çc«Ð¸O\3yç£Ñɨ¼ÔÐ#ˆ*ÉC&‚¸ÞïrÐÞkQaSÚ®’]Ž("zæÄZä‚gWŽÈ"ë2þÕ<í#dnÉ63=%2iüu¢¬æ Ï`^z‚ô²Äµ,køEºÜƒ¬Ä6T“Ç”•ì>¤Ú¿“µ>ï)‰"Þ= RpšÄl))žò É÷¯åóWšœ³ÝW¦ W’ÓsJ± [IͰµØ¤Ži }Ë3åÁOnÇ$ÕÝ?·ø¼9fuE#e˜¼­ø°'6͉|ÞjXµlßjÔ¥erÁmT½RË)%ŠŠ%YW8ên¡lFôÕß›ÚPJà¯ÅìŸNWŠ hÙ6‡"»%ßz8  ϹÁxäõ{'›Àt¹· ª½ÅÕ©‡·Š¬@öô=]Ÿ™ÞãòÌ–Œji¸TôIëS»]¸Dãqä’§<ÈxU=c™+ùÅó¡«Ý‹ÌÇ<÷L™#¿_¹Ç ÊJ­ž¼& §MüX†Ì'Ž\Mçå•kEêwƈàÚÃÿ9+ÞˆBѦCÏ71A9}óLÇ]¨Î“9ªâ9j[”T3+´"iq—`WÆû•\ø\¯áfr,Õ«ö>nys¡¦Ýª·Ù”v½@³óǪ>ÜtF‹Wùq¬é!hé}Û¶Ûw¨M‹zsí¹ ƒwŠpÇw¯Ç&¢hÉ UW%b¦Æï,/™âfÎ$›×³¨#œáÇŒ+üŸÕ…lDÕœ-ý»QÐòŸ̟#ÂçšÐØ dœÜ½{¾Ö…üؾó0U’sB<m™È˦<+È£ƒz+bnÙ‘ëwu–˜”' ÈvÜS—T¢._‡ù-rÒ5‰µøI ÉÊɉ‘º«HRn]?I’jæ:‘¤™/còé~CrËíg–~IJ7$e½ˆ&5ŸÖ'ÊúV×]'ž'·=•t%\V“Þ'ë?üü;IÞfŒÝÎpå"ŸEõåÃÛ<È\™í‡29¸á¿sfa¿Z'×v®C /Áw‡„Qµ$4@Xr3×~ºjè²9qÎ:o¢”ò‘_Ê+QÜäo—úÕ~)r‘n=ºÛ§…rL‘÷â·ã_½~!w¶Ïq½+qõ›ˆïÚ»‘ƒà½{®woHÖ\œ w“Ý^@–õ˜L£ë¢× ㉵×¹#‘1 Ë|îüZdæfbÇÂ\Zgw^7årfZk-˜ ?Ë1O‹Ô'(±oôй‘÷¨”~)pð¸ßâý|K|VnõÕÊoÊ®oÆ5o»Tиl—©0w"n³æÝª_SŒæ<\1 hQ£ó*ÀwÌåÖ†\éBk÷þŸp/ÚÔûêYu¡m[^‡Ûܹ=åFzæîz¬pmÚ˜ÄSXö㎟BÜþ¢ÙvC¯ùh´>d¨ÅùnH¨Z§ÊŽª×ÎH¡„›‰—ÄÍÝÈ*\·eÙj?Š'íè&•Ž©>ÌO¾¥}L±2r+#<áÄvòÌ&uÅjÉ'ä¿];yÖÞo#sº.lk¼H£q€SšÀrRÉ›ÿå )ˆÖàÞNr%ººÎß$Ù§^ŽdN“㺬JHé·ŸBIíf}µ /I«ç÷’ºrÛfuh[²=émóË4¼SMÞ†·U|\ÊN&öÝèš\¬ÓhÛÍ«Ì/"«¿ ¯EÙu܈-BM’W 18d .Ç æŽð\fEˆÏa¾µË 5vø³ºGÇ£jÑÏoÂrQñ´îÒ¼@Ù& ÙÔ0?”²IU¾’7Žâ!kO|vE~D þ§†‚—˜8ÊÊ!»h¦útr÷ Ô¥&áš ÖO"LJÈÉ‚ý­¸RpüãTŠ ²IH4Žõ-æAJ½ç縲ÆK ¾Û4€Kg¶FX‹+ÝÒXæ‹\'-´™ä/á:%Ã"W·I”N{ž.×VŽjŒ–V—QÇ̾.RçFl|1Z)ÆåÃ^ºš^íÿ×Ãó-7_¸0ê‚V1ºõ®Ð&»mzþt=îLœbY¾¥w9˜4aÛÇhš9Ï:…]#XWÊž]Ü[Ô?©ù¶¢BTà¾m¡(Êxkiì:9\ãºÚ¤‚qÉLoÃ…@Eòó™›ð®ðx2!0ÀRÔEÞ|ГÑ$= zÚ=«¯“.2çAŽ(Ò2èh”WìFjŸz½J0ùAÊïæ]k‹ª%EÏ„Ún>M_ü.rñT%åoN´&¹’ºÜ3%þý¤õŒpÓv& rÛ:ØaùX1é='1•Ò|’¼uÝÞgjŸE&Ÿ”몜~KæìïGïþýY-XíëX\¥3ó=³€&ŸlWŠß݈F•r45*Ѱ?Ãëzˆ8’Øh…âý¸A:½Î-‘!2IaËÑbÔ°{©Ü"óUë]ÎÍð¡âÑá±²×(ûîÆ±Ø3v(•V•±Ð]ŠâÕ¥OËE3QTý÷¦¦($ù3ëQB òÅŽ”=©}„k÷í¶ï›¸‡kºûCôËóªÁ­ÑªKÈ~¤XóÃ\µžÍñ^¹²›ÍH‹ÎYàê³ó¬—ϯDÞ]«÷_8ˆb«Ö(¬ÜŸŠòJíG+’ŠP“?pà’p$êwIe+Æ¡QÏ¥oš¹¦hj÷âwÝ–#h9mÄñ‹Gm8'<øÁ³Kk(‡£}Õê¯Zg·ân%Íóïò¡Sº÷œ"ë7tväÔ¨P9€.F³ÜZùµè2Ô§¿".]¦L]pUº(K»og!èÔæÿ¾îé<ÚKOåäè©£UÃ6þ¶ø.Üêªù™Qö+pïéz!í~²÷«ÚQúA¨—s) lßvÔë² }êfú»ØÃŠ#òU™Idº@Oô•o<ùèñtïy¦÷äe;ßͤ­È£¿.Nôn#7Ž\ehõ{@.yÛ|(xõžÔÆL5²F’ÊÖ*sRu×yí4“/iä‹Ñ£»´ùÚÊtŸ$·£:7=R"½gøp㦵ä­Õšuû<ÙÈd­èMµådNK–u '²ª(û(=äB®$±é/wxPL‰w¹d÷[ÜÁ¬zôà še1üÎqM6Œ­YÑp j/-9‚†[.?9߆dŸx*žH\ÌͨÕU«„”Y…Uév¨¸çäP… ª>`ú¦Ò7ƒJ+?Y f\B9YÛ'Éšå(õDÖ‰-YÅ¿…º±fÕ h”ÁßýÕ(tuû·¥Ñâȯµ"œÈc}ki¦ÛaäÖð‘¾g\l9ßÊ•‘k›óìð>w\{ïž§K NÇ—küA‰¿N£÷CPy;[g«(j9˘¬Û%††¡§Ë×ßOC“Ö¿°½KÑ2$›kúÊ=´9Ó~ÔÌã3îªV|çWŠ»ÛYÿ؃{¿Ö.O=.'ÕW4>C7±*ãˆúztOuòܱ„=ÚÛƒÇÃMÑ3kçó®2èy»(#=Š=˜Úõ÷Ê Û”P’ªõet>½µþYÚ«ëêmuÐÇÒ [J¤ÑØŸ»¬I»u÷í²c^ªš½=1å(þd£ú´'®-í~Ög»—ÝR½Ü-IæwÎÕ~¨]ì!CÍ,C f2r5dåP® yöè7sκóäÞ‹®á‹[:ȵ)Ù¢¡ÿDÈ¥® /‡—ó¤y¥p½’\&¹pµJHH•t¤û¾°~Kîp òXþ‹ ½×·¨÷5’·¦ƒ'lOl"“™S3Lá£dŽ'í¤ò-dåL×up|‚\^IŸóXQŒ;ã¤÷Ö§¨ÌžQ{û5ÚYú (,örø|²´¼ Z†}:ø• ͖|¢·Ì«”öÏ2 QÎàʿаKÛ. IGfÑ–AÜ`0Úöy‹#Bu82\B‚Û^¯nF£ê©3É_Tr}qj}@ÊÅ,IüðõJË’œ?÷fQÂ<·–-ÎEßs¾ÌÎ8ëz òíeQྂ«¹`2òMÖy³ÝG¾–3V\{úQ¿c•ÛòŹÝoc©…2I) Õ_ŠQ­n)¶ýrE]))‡SEhä…÷íÕÍÑœ˜¬ÿ2‡Ö-K\ßEû• /ç”™ÑÉ ?­a]²/ó»7®F·Ò N_&ÑcFl2îîûr)îÒÈ z]Kx÷}ÌU”Ö›¢¯ÿ*s¯Fôí[òÊ-Ç}×`îõoÐëÖš„Yï èñ¢jÈI÷:ܸ“²= íú’L–XàvY‰Ž•Ó)¸isÂô¿.3ÔbHŽeeïCùaÅÿ¶w¡‡Ñ)IÛ\=ð}SB»&.IPÙö(¯—ü,‰4’û*I&ìr®X¼m#Cs•š‡ž’§¼9y·‘»‡{~ÜH®·+ûäŽ%W>,uáÜ(H®GKpþµ'wϰܳì"O¶+ûŒ-!oVr]UßI&ÿbX6×C~ýnzÍqÇY¦Ý¿_®û‰\»ÓôÛPt^8iÎ'•Þqmý™¢ŒL6¿îAgF­yˆ·@‡c†okìMq§ËÕh…3Z³Z ¶:‡–onÊ@Óû•}]¶¸e¢Ï&ðÃâ\Ï;Åœ_| ;NÅe®^Ì͉ä3jò‚¸!ÿñB" °ç~nGÔxøí¼}ªÉïË?è†JÝ{öíJÿ…rߊ%Y–D¡ô9aS=÷_(ñ•ã»”ÍO{8´+ÿõ_ÝûO?qjŠ Lø¹…ÝBÑßûù¢eP2h§¸ˆËTxèÕ¹®z jæN(Èž¸ˆ}cBaõ5ÜòhµØ’òc¸CWyÿ; ´;ÒóJ°fLœ³K.¢ëÁÌ÷ˆPô¨\6gÎ Žû ç옛ÐÇÎX^D"ýÞ›%õ6rb ÐLyõr ™Ú¿rõ4Ì—Áv¨ƒ5Ú7Ï9cPí=Iw L“äAóátgp%}vƒKV^=KÞÖüç¿vˆLæMʳõ÷“_ã;ë웃‘ååƒKò/8‘KÓàôÏ7)(úîûõ ÇKP©¥¢ýåñÜ ™ÐR±î/tüQó¯EO6…‡g—"ºJ³­µîE§p%›´õ«Ð¾/8õÁÄË8ãØöw¡ÕkÖçeSJh©Â–”u’MŸ¶8]ï³À-3Ÿ¿ño@£sÓYª•¢hø\¾ÔFLɳ›½§ÿ↾á9ÔNi×k@Mö÷—n¦t¢Z€ß£XÁìÅÞ©¶¾êƒòuš[lŘQ¦Nœ«D©üþ‹Œ+Þ dy§˜Ë”òíø²p‡eç“?¾ªHBÕxó%- µ¨Í¨û÷HÝÜhèphëÇz4m0g”˜{€6ºû™oUK ãŸ…Ç— ÑuÃÀ§•zÆŽ &.¿ŒÞ…»¶æò­FŸ‚D‘Ó8ÿøÔ[6e .Ï‹œÃP‰Ö~ßP .púËÞáAEn­ÿ`øçbé4w /–ŒT{õÃÔü…‡[l089ýÜDâoô»céÙ†/—”Ù>µÂ=EâA»†ãÑjÀ§X`9nap8»4Ëu­enÿP0D•¹«÷[×£xNßÓè7}¸6õkÙÀÊhd[R­¸?¨ˆüÕwdxTI¦ÌÚÙÌ×l'X®ŠFÕWj¢mÅî¤OæpwäÒû-ó˜Dí4y᜜²éÕf2œîZ“¡ÕD>/™™b)~@~Í|öÙ¤²Yþ닱ÜÇ‹\BÒ XQôaø²¼uÿ¡RÆî‡ Îã¨ó·TB{‹¿fgtÿ›‚6üÜîÆÛ£`{åã3gqÿKîÝÓëÂÐýÚLП†dtIÏ÷­ÜŒ{Þ.üûïþ ´ÏWž“DÛO&j¶ë_£U@éÔ^f´T¿áÑŠ¦Ÿöò¤L\F®MÏ¥ÚÑè!1~‡†óÛ%^ñD”üÚQ©„þõJ°>hG­ 1—3³‚¨éÕãÞü~17ƒ†•^v£JAÖ½Ž\&TLõÌi<…ò¯{ÂbÏü‡ Ú«î¤\Gå[¥ò>gQ£•CL¡võ¸FF“þ÷ÞT®£ÓÛ˜-9G_÷1Å¡]Í´Ùð³ø,Jûn Ç+žS²¢œècª…R±¿1Ðd½÷ûS¿0ø¦Mü“û}Æqñ»ìÖŒPM[¾V£D‹Û3øñÀ“½çŸWâ!ae¶Ñ<ÔÍþAʤ½vÉ~·%Xhs.^̓c]ÊÏšE1$½”ÅB°ý¶òú”º¼CwÝÐs"ãÑAÍVjhIõâõÒi[ç{7ùŽëüµGc·9ôÊßÛú_ÆàÑeö‹\£×¨á‘̈,þ¯5¬c'È\ê?§÷[ÉWÇ Ûݬö“÷•¶_ 9“¡"ƒ©j­òf¡¢3Åë!y×ÃÄ/WmB¾ì0N¯·S#s›ëoéí¬C–‡Ó§Þ­;‰\+Љ–1£èå»ì_–ïG%—Y˜W¡Îóý#.EhÜúfÙµpm´þm±·êõYt9z2ñ…×) t#/ ×cЊ¿!œ+Ð×ÜxÅx‰î{ùшëv;ºõŸÒÏ]ÌÅaKñYÜSÙõèéO´e?ùØÀmß±N÷g¦¢Uÿ„æ9³‹=µ9wk8/š±ÿ6ªÛƒ&8û×%*þŒv›ÍãFÅG#ÃâΈ©Ý /šçQ×ÇîBþê ÔšR·2ûëyVe«>ô@õOã*wtQíhO‹˜ˆ!ªyš¦X ·˜¶ÃÀ Ôj¾ð,Kà"DÝ]`4¸Š&é‘v¦ÌhU4ÎS%脎']ñú tKŽóyŸ‹Þ<Éïæ*càÁçÅêOcÈ õkƒaŒà|,’†V›×ÕÎã¡ÈÁ¬T€1[GŒÒÄVcl{Y£yŒq¹›…?Ÿ+ÅøU¾]“Ü{1îW–Ç'ó\Œ[g˜.ï/Œ‡´Ôœçý0*æ÷kv‡^ 9øßÍáJGô ¯)± 4GW¾ê¸¶«e¸³Ù?Öž­M3 ›þ&@÷<ïûì÷PÃârÓ–|(]¡R|ŠÃÕgâú‘#ò'›ÅÎUÈô®ÆØš'˜ü +Ëÿ E¾&«½½`AFg·ˆ“±äzá˜òíušËI¿2ò[wúvÿRMd]rjh »(r-·dŽ8¹EÏ^*•ÏA%øG‡D²P§!áýMýÃhœ¿ztBN­_þ~üõaº%îfY‚þeGd¿ŒÞÇq`Èä'F覟]†!Ö7Ì õì1PG»õkúÄ÷2¦èྰ¬×L}:è¾æOCž7ºh½cdÁ=Z‡¥¯£}øì´rÕ|s‰ ­¾XFni^ì)ûÛž½WŠÑÌØ”»aúšD97y¢€›ÁÞ®-97úÜStxƒ«²bwß»zJ‰åËþ]G~µÒ'ÌQ‹-ñh*÷]„½sÇkÅ QëÙøSÎÎC¨WýýèýIVÜäÕúñýØ4;üëNšÚ¦ºz<ŒóCçÌ:á2Óè91Wu[û&úÿ»8ªpÖCz;ËmCƒ1RâC™¹"+ÚôNùäVŒeÿ¬\¬ˆqϸEÄ `BÀ瘄Ê8Lì Øj›I“+ŸŒÍUcrVBè1&LNË~%?€I'uYþ=2Ç„nŸÈ“›ðConÈ£ÚB=õöaplÇïm‹óúáaõ7¸·¶ ³¿i­£¶ ÙÞÅ-Þ'N_Ó»†ºOŒ»ôÖ~FÕ€ì«[8åQ"p뛃¼*È+ùì½·ûE\ɼÖݸG‹FJJ É/ÕÂÓËÈtέãÿÈŒÔ û31dþžùÙgŠÈÚ.?æ«.Ž\*/‹.Uæ£hé>ió4yTâ­¬¯E#§žŸøˆÆ-/o,óBëÖÜv©½<èb­ÚPsÂý½µ…éàóCóvz`b~ykïcŒU,þV\vÌe}H9Šá<ÑWS'>cp]aT¢Ä xÔtÏ×}TœTØ-cqŸÙÞŒP}tg ˜èfGÍp˜K£¸§ì¿Ù•òÅž ,;øÚw®²š7Û‹Ö«^ÄWÕ¶¢åÁUšlÃsh–ÎV:#d‚&7«—Iàæ#®O8÷àÆ~桟ÃhÐØvÏF‰Õu×áÉJÔ›|Ä~jä:êÏ/\º#ß‚†aµýüë„Ðø÷»WÒgÌÑ2;¬ûÌàfÜ5Ò!{êÞ(ºªÆ°=Fï‡GV<ŠÁ`›ï˾œÇˆö†ÙëOª0ÖûÊ5¸`œá2vß:˜pe!×èÅWLf½ÆþªnSyY‹ ¿â‘¡_WÔJ 1} Ç£+â5˜!ê±ÍáÇRÌPr:)aŠéRN >—1µ§ê¥ÐW}LÒǰg-Æöç±xOºcdÇDõ­l œzžum¹züaÿ ':ú¾W¬ïÚŒ– Î*CVchÄ4ÀÃXÜZý¥jcñŨèm>òP¦ÅVx«IH!wOÁ˜ÒÆg¸<-„×Íí?d:o½°;ÿù×T¼lC2s2_¦Ë*$˜,_‰\Ã-ß»žDÑVɘ٠vTb½XU{ã%êìk©x2}ÍvkN;DëüI¥Ä°-袡u½«ýU——Þ(HÇ¡ŽÕò޶˜"º-S±3æÛ_L†oÁd7míú50^èŸÕ5NO<Ì¿TMÎ¥£özîß+ÃŽ}ÜçmÁûol÷8Ž)B‚“7Ž£Ïª”óïrpŸHÙ½Ö/èÎÝÕí\ƒ.ú·¶ÈãžÎ3ýŽçÿ¢}ý¼vyîTï%_}ÑZ³ÿþ†f´<³ªÈìÂo4û~Ì?&·j7µjD%¡ñ†ñuÂC§¯ß¯ñqã¯þ¹4‰ÿ=ûé¾7û°È=¬¹Œ¦»Lzs†#ÑzûúP3«m¸»ó¡·¤Lzî»Ó>Ô‚ë™KxM?bX^„›d® 2г‰ÉÉĸBÆ‚Z²˜øûô˼U_1Uqðá9×fL±qØ0Œ™wØpƬ¥«ÞF[`Ögá¨#œ˜}àäÒ áë1;ãîOXšY¿g—ä.Âc¦:OÞó?Çta“ÈêˆG˜4>@Ãm^3Ûª]Pó®9;†®G9‰m™½j(Â|ÇÞ͹ ¹W'VÈeàÊï2æ¹!È–}Rÿœ®:°ÎPeÉR\+&¯ùd)Šñzÿ‹ÙP†J¢-LŸÖº¡ÎŽ7ܻ™ƒr h,~;Ré+º¬V­ aB¿o/öæÖ_Ç:?/Êñ}Æä ®ãŸïÃÜïåg›8ë1ïȦýò/óð˜@ôyßo0õçäŽr}LLöô;î„qúÞ|–}'0Z¿3ÿG?F~*9Û[a6GîÛÆa𶣿gõ$0ÀçÒÈèèú£ÚHí=îۜƻP(‡î ^\bE—íÙNµx ÷|üZ°Pö/Ogl>;÷æV¿ã=ƒÖžWÙnþº€–ïö••|PDó3ǃÄçbq[”Ǹ°¢šÄL·°F8£‰Æs¾ö¥l¸-\¼$ïç1´Ü=9.ïpwfçÿ}ÁzOŒ*6·÷àþû7ÌÿôÉc0CÕë!Œ2I·KsÇØëÇNé cϬõÃõZxÄcÅ» ýS˜yf´{0ëÌòb-Ñj̱Kbò+ÁÜGMßv`ÞÔW}¦YNÌ?§!`¥€ùÿ¥ ?½üó¥yû½éÅÜFvFàÇlÕƒ—çý†1Ce.ú}üL:¢ó̆…w}üûŸð} ½Ñ±Ü\¼nqν姎è|çyÁ¹2_´9™sfã¾Ó¸uÕ҆лHÜ÷:ËmûƒêGï~_…2Ò_oÕ¡pè¦ÈãžÑÈ“½«–[Ô¹Ûj¯«;[!ßÍ?*·gÕQ\*ç†Êï4T:›½kõs~ÔqPËUæ DcöšJ—Q´¶Àœ5®fè<Ù“\&z ýjŠ/ì9‹Qs²+g\0¹þ´ ke8æ¶ïú˜Â†e+L^½ŽÅ&>ÙoÊã0¿©]ïFÎf ÞãXÏ€,›uÿ“X‹) Ý×dü0¡oYl/ÆŽìæVãsÂCƒë:£ š窧¿D“†mhq,ý{ ƒ±HÐùS2ìÿ:»ðc }8Â}¶”à>Ûÿ:ê»Ñ]â~Ìõ&èâkš9lNkõ¶ÍÝß+æò$¯ãÎR››/}ÇÑú¿õíãŽôj!áÏ=h¹¬ÇtÁë3ng±;êWz-Ã×úŸœù‰ÖIG¹¨:DzN®X©‡n*æÿ½Ö>޾G¾0wÅcèD„‹[U>F<8×UŠ ×;jKÍ‘¶ÖpÙÄŒG ÂÉÄì±8`¹i̳ÓÞ™‡Ç“âžtÃBW¹¬—¸ðÄs©§“rñdç;ž÷ç¥ñä7¶#¾íxRGj›qX!†ÉÚhÅD`~E}Óòýý˜Ãð®jKœ2f° Uò±¯ÃÄ0¶®v^<¤¾#圹6;ãÂá÷•·hº8oÇ=A³,w5ÑJxÿÁ½ÇÑX›qYmhÅâž¿âØ¾e…¨¶=ë2Óu”QnQÝCšQ¬^_éÓ<#Š} GÉAÆý\Ó¨¢zÓf0Ëušò‰³¢ñ²÷¹%3h­të¡n¾êb.÷†«>éB?§?Õ¡Ë0ª‘¥ Ë­“½NkD 7bnTVZ_»–>~é1uÁk›J\Ẁgú£Í£5°Ä{{K± `äMç§zÌ•Z÷iÔ~ Lê“côwÖúës1ùuØÁ™rÀ„¤–ÐÔÚŒmÙ§·µû>ª÷¯›.àÄÈ3 ›Ïw.>gªÝä¯êø°˜›&»KBÊáÈ7œŠ>¢õ¦‡YWá>¯/”ýÑ]çШë»9t‰N**t²Šm¼ðZ|>Œýg³í¶ ×ûî¨GÛU~ñÚuÅhý'èpfgÚ”TØ_ŠúŽvÃ¥˜•p¯bx‘yRzªwJ±êÀ@ÏÄs×t÷U>‡*ïîŒ|³ëÈïÅÜËßø¨eÝŒ™}ËÔV¿ìÅ›ìM÷¸c~•×Sñ,¼ÑüjrážJûu£oü _“Ð3ÇÓ7=߬ÅÒл÷K^saiS#ÿ§/Xª¢ñtlšK¬F¥Jñ»"OÒÅãxüñBà`©1æpÛ¨y„cÚ÷‚‰øc÷0þÏ GÕpŒJÊЬý˜…G·ú÷0/îy3ÁÍqÑ¿ÑAZíß“§‹ûÖ•©Í< hdø}ô]¨ êLF•]º€jÍ…!ëS´Pá©®"» *½ šªGµ¢™ õÜ®¸á!‹Y’å8ëê>®{­‚ÖñÅËŸ|DçÓÝLœ4Ño9ïOGmŒÚí´C¡#“ùsKv&r`®Rk$útciÊ ¯°ÆËX«ÔW²uÖ[ {%^ŽõÆÃ«íCþàÙ½çä 7`©ubó<©¢¡uãó7̯Þ}!ñ+æèœ2ÏÒ»G¿Õ‹Š0kbš‡÷ÅâÎ L>Áœ© NÜ3þ­0¶ì@‘ÑÌMžþÇç€#æ÷oÝ/Ѳ O.<ÞÚ7ƒÅóóó¬)ªXz[(Nòøi,ߒѯÚ‚AŸ’Š1<£¨ðÃ’_Ï8´ý¾£c€#×K—r;`yóaSsöƒXúhy±PÙ+,:ÿæÀ‡K,x¾° ŒÙ9Ý¥¿]À#;:ï4™ZbœgBm´¯E¯£åèâü˜ä>”´c >ê6¢o½!êñ·bä¼@¼žž&u¤Úk>ÏÇœ§÷›Cô¯c©zÅTÖ{m¬96wx·¤5¶,Ïïî°¸‰7¯ñÛÙ\ú„—Þ>gèÄzy²â`f7V毕¼õËÆP\g‹C-®°­øŒ…ML’Z]9˜7ñmMý­³˜Ý÷w]æËSx4VÕ.äS¦I®]Þye& $ òb‚‰Hª·¸Ææw)û¯dÄC™§ßñŒ`d¡Zåíõk1L}ÍÄÞÍíllW¾¥ÁRy4&Ä ÞÞ•õヸ¯ð´ê^%vt/èw»•®Æé¯x[ óCÏ«¦Ñù ¿¥½0º¼ï*”qMG/ÇÂD^J¢ßë#ÿb'1ìĈSeÒuŒ©áümkƒÉ¡É·“ñ˜ƒÜJ­­˜W’’Tcb‰'†µ"'³àiI¡}f'â°|µw¨Xé|5{›;&Ûõ%Þ)ˆÅ§+ü‚16£òiwº!Š3ÎâÎÖY<ÿmü ;1LNª}…ëëÅžjˆX…iÍÚZmèãå¤ïˆû%ïµX„ó£Ç‡ÝG/l7BæÙ•·è)ÂÃÒ€Þ:¯%(ic›¬\YÒ,FÞé}sÑñ Æs«ÝÑQÇ´¥³šíŸ1‡Çª½+p Y¯iKG bI¤ºp—8–Çý°µ¹ŒgÏþh3*Äs1¯• >daõDs^á{e¬½ãzêeße¬›´ŠolSÀzÝ}ñaÎXWx³^}±fÎ×eK€ž÷¹¤œXŽ•ëýS ÷Àr‡Îã9ŒJXÌT\ᘊù/*—$—_ÃcA‰¢¢o¢1©k÷R;ÓÅçôuçûr0Dé{B²{'îÿp~t¡ü1:à k¦ÏßѶ+Tg@6·ßãðfˆFÓ£»Mß×¥¡E‘ UaŒh»îêµlt¾Xy¢WÈ}9¾\t½È‚‘<‡³Îquaâ½cMI%f‚œm·:±¤BV:ð˜!žŸ¼;c$ˆ—޽­YÞØ‡7¢¤,<$OáƒÍ¼„ìã±OÛ{P7´ïœ,Ì4LÇNáÌïuˆ—ÚŒö~ŠÄÆ»#Eð`ÖÈ뎜óÇʼ¥.—=’°‚=ÔsKÓbn ±zɶÓxêÒ‹…Ô’9,¸Ê-Ÿ Ü‡yNÂÜ;ívcöáàñÄr<Ê¥4ûð—:üÕ“¦3Ɇowqmù‚ 2 cB­±i$½ ¹ž°~¼ #ƒ™ÝÃ-þa×ìÝM-˹9.óÇâ^ü¥ôËaeEô-¾Pµ0Y†ÞãWöÍö Oâ—¼c¥Í®²mGC-íY´NTà!¿ ƒk¼ï`b¡iο¥Ü˜Ùà”çýsónÄ©˜nÇS½7Þ ûócYÏBäAé<û*Øš«jÏßU6ê³ÊÀºÝW*¿ya£æ…{‡ÏJaÓ^á-œØÌ«jÌ‘VˆÍÛtW?ϯƦ‰}ÑÉ3[°ñWŒô7ëSXÿ{šUãEÖ(|åÌ¿z+Ÿ'Wå,æpwS\›8é›søù¼G¿%Ì~cfô‚ì­šaLÔgu»kÕ‡…ÞíØßÇ…AãFÌï½q_{ÉcÛè¬3—•¯ôw™IL(Jn@Ûûêßþ“2Ç]?<£…ÚÐ¥âGÃ;m7ô•èóJïÈ ±ƒÊ­G1QãÔÊãv˜mïû¤¾‹¾þrÏ 0 ù÷±ãÅB߉G×áõ3EWzXðÞ”¿aªÎ<>5ä/¯}ôÞ«ùè>þŠÝ/ ’ì§íñ¶ |^ý² ;¹´Îh•Ûâå‰7‘QWc³kÃhn£Ö¸Î^·Âóå/N»o¿g|‹õgÊÄòÓK¿IÀÓc—5[4ã)WϪ7Õ‡° )väøöo˜§•ZmÊû³]ý‹}$6a槯«Ž­Ä#m×øø>°áÿ¡Ð¼£©ü8.+ß„J¶´ŠDhˆw…B‘R"RQVI%3#%£”UöÞ{fïum׸·ˆˆô{~}Îuî9<Ï}?ï×ë}=i•* pÝüò+×Å»p6`xø\½Ž"5œ}»`¯ÞhýsD÷zSVË=ñ°°ê²Î¥Ï°Ñ¤UñÞ\›ãNn!){ðhg¿½Oð%Y ¨µFzEçR /RƒÊd5 Î"Yüó´¢-â£=ʬÅ6çtñÂOF[Òn~ˆ ò>~n6ø”]\›» —¿næ¦4pxË©åù˜Kô$påÆÃR¾T?kú”+[‚ a[”:p[áUý,ßyP€'7%«5uÂ5hK˜ÛƒKð;ºõ€">ì²N-½àø· ¾QVfȰ•©ÛgÑŒ]£ÎoŒþ¨½õErtúÚv¹ø­˜± ×Ì1Ìýo&HÎ ÐÙ^r­Pñ šôﻉʠ2sZëã‹èNU»óÅÃ÷”§\|91æógr¿Àw |Óá³Eûâ÷‘Uã24žP4}ßxU\2«‹5(;É"’lˆmvYKñdÏ7ÝÞ{µŽ7­ÝWCjâiU•´—H9øTQ| _Þs9&oEìîÙ³äˆ:,9þZ[Ÿø¿ØÍ!Œ4ÉøŸ*ÞóY¯sVˆ#¨/’•O|Ìß¶/^ËŸd¶¯6×vkjyeÜ…Ä;ÁÅuëhÐÃL8ï¹”[ô‚ÈÃXu©>YÏ $Dzš·ÁñþNŽÝÆpÔ¤TÁ=üÆêßgôð Rh 8ƒwnîwò'aü~¸âºbš>=®¯¯@’!-I)i cû Ç‘IÚwõ÷®VäžÛ³q’‚‚S_[Ø¡È)÷–÷áÛ(ž4ñÝ"þ%WO.—¬æ¢¸Qæ_¤+ E—ØTõ¾Ž£€uç‹w&ä“31¿|™kŠÏO¥Ó#íÓíˆûŽHŽÎ-”YFœ{èg "ùÛÕn!ô°lÌÍ‘a¬¿l:‚>xI‰ï¾9ø/£JM‹NÂ!â°éß'O`[Z³ß\£¶.vºéå›àà)ÃØõÖ.ö‘áÇÉ;õbåB*npIÿõDŒ¹»#/Û.¤Fûû>×ùoÎ>½µŒÊ·NÌwVñý‹—¸¸/: f.Ó1 cçE¹ì7 Œê]X¹ƈ‰Î®Çì_ 1º_ä†kú´îI­¢múЛo»ÃÑxÊÊËì"+ª³–ûFH |÷àÅG—ÛPljûd/Í äõÔþ²Þƒì}Fž »Ç‘AŸ¾=¼M©ªú+‰Hí4®Ý·Ž/ &—i]½C:q↵0"—½W· bä~Ê–3ãóÈúµZÅ…àòä5Yÿ`9ÿbïÍ.€šû£cLð}#ž2aW…Wφ¹¨Ç·Àýpˆ¶‘"=\rÆ‚ïeÀKý"±§kxùì ØÑ¢os—NʱàÕ·öøû!€½ÙÝ+>!GhBºyÉ^$ÒSøçÓÏÕ·ýÊAËR“Èh”gPe{€\!³”+|(T;ŸÁjp%Sv$åÓ?Qv-J%LÄå§<o‹Y ÜcÏöæ<:âµa@i{ÊL^éÉèñ£”çµÍi!6.·øª;#ï2i‡°Å²<¾¤/"­:ž½,™Éö®žK´F')y£ŸCæ?¶É#äÝ¥‹O ¿S—9|›·¯¢¹š8ÙÃG=¿h~ÃsÍô× xÞ”´IÈI®ÞËî[à;åË#1Òà™[ÆœÂÌÞ¥MÅW:Ÿÿœ÷w#§•£­òÓS”ß“©>hÁ†Ç±g™¢=˜+UÚ1}._¹]¥ß´h¦áj^Žqç½*;%R0<¢q¾_9™ý‡³«Aú–¶ÛГkZ‰¶Ðãwú&Ñt$Z¬ ¿5­K)ËS¨X jŠ`¶A­ÛYI«“ZjAžàïõžôÈúÚ`;ëfô 7ŸÖòHÝ]ýßH$ÕÙr…/#~ÎàÈ1áXÄ==ª·ŽÈä))#D\Rª¯Fèò~_ ª‚Åÿª_:KF 5oã;_øîV½o Ÿš¤íÞcx¥§øV;iâ]nÎý‘ûv¿"<_ÓG?O‡oÿ™-bUFºÊipÛÕáñYõ)ˆæý.T¶®‡Ä›ò[¯¹¤"íÝÏð3d{Ý™wf¸„‚Ìpåk«(½š6û¸Ãå>ìÎol†Q©°È|ä0ª®=îÉ¢)CUñÙ@ù—¨²yrù±*_øÜ3òÌõ·Ü¸ËPv²Rr0‘Åù?û¾#Ÿû‚ê3mdõJ8-L!­AjÖ¥sHÞûû_OÒÄú±ß éÅgÆ£JøNÇÜ6¾¯ŒwúãQU½ð¹ØZŸs8‰é¢¹°š³é©7J÷ç‘B¬®¡–ÿh÷i…0´j ¨®h² ;cu×mùf 5ˆ·™atéR›§ &ÅÒÝuÂ4Ù±+¼ø'¦ëËÖ$h0~:ŽC}é#†Ïé³*¢{ý¢Ø¸#ÚÈ¿ßb²Å÷é‡×…Ò¢n)ãzFé"ª ɪ¯† ‚Ãä€Í{â¾:9\7G¡§þ!Yä&ëÈú³ ë’ný£+ÒïæøDDmÁ·Bºˆ­'•¤íáæœ=‡ø§b LÆ¿³o*Áªý#"eÏn_jÕÅÇû»Ÿ· C(«Q‘Xío¼»T@‘ E ÔðÙƒ­ðæ…Ç'/Vø é·©J©À»õº¼ë/øž‘ÓØk˜ÿbÓ-N×âðŽ<~Éö?".é¹Kø· eqof;Rî«IG|ÏAFÞMÑÅ fäÙZߨ¥n‡ê:¢/ ú\3¯ Êpmš÷}j'îpÍDmó…[\9l¨Óù0JÏŒºÿâHŽSŽ¨Ý´ÎÕS!‹êÛJe^‘í¨¼ñ (URå;ûyÓîk¢Ä¸|Mëãvä‡Û|×úZ…¬¿ùÙ™&’JQ¢"Œ$/w«gLÓ˜Â"Â7‹ˆX¯ ¡à¶Óãç{€ uÕ{ÓQxÝphu do"ÙðoÆ[ù7Ø B8V»æ¦ â϶ýgáêtN^¾®€Vk¾GeÑššVæŽ\{¸ŠŽ* šàÛ^è·¹~ŽáÏÚ®=IB|H¢*™ÄˆTma¥o´ÈZ9¶ùö—ÛD¾wºznVFYÝ0½t#ªT]æÕ$¡öA»ÇÜNVÔSÃKÏŸFcï¶G¸Ñ¤¶§%<ÙM›kéŽjö¡a^Îøp¸$êøò[‰¡†œzHèU&º©SLCDîT.3VÍ ”•ÝWKbòI\9*;5Î(~Í ijVœZK|H´^•»™/Œè”yΪ>îŽÞ{wÓ(‚_M8ðºœBP÷#¾MÔ!¼3qçî:'‰ðá%-òLjQßãXnН5†$sûõµ1eÏf¯¥ð îþü¸¾ Z;%:£þ¢{¹1ïù“ÃÊë,üÇV‡ÑJj« o:&¦GE5¾1ý60K+ff2<î*d`nòæõRcÌðÊn¢6“ª:ŠÛB1ªè\3ï–Áâ¯|ØÑ“ü4Á«ÎÔ[yïT´±qÔUwt¡ÙRü와Ýhxøäí\Šjþ¨ÉŸ¾ÊÙŒ[ÓR”ä|‚÷'Jâ¸?ÿÛ”Š‚b›WNœFNú…ƒºiÞ}Ö!.i^§oŒ¬â+½àÅ’Í…Hnö‘ß@l¾„ÎÛ ODGmðg_Ä'Žª¦ë³èTO6Ù…àyéaÏÕxÛùýèÌbÞŠþù©€à Þðà8S|uø|dã7¢z|wéÞÍCâ¶:«>ÚV¤ÓÐpl@îE•ÎäÊ”äÓ¸Ñëê£bš§ªž%5ËÖ†.óìhHð(bTwÄ÷x'ZñôR´\9Äa¥Œ–zФK:Z2 w»[ ¡eÏI5¨+ø®wCsÉÚ /´ëò® nw­ÌoŸk¨_Üg¥ÔŒŠcWsD|}Q*בå0>Žü⾪ª‘ÃÈÒ½1åeÔ‡T9½Âˆ3øòñpéW7;DiLÉ9Š^^Óhê#ô‘Y»`LÂË;6ñtU"ŠÿÎññKVH䩎MÎx@ì]~ÙÅkçPø+À>ö÷ ª)ŸÜZíÑôWGÊãN:^p?~èõ}=*%” Õ›½ä‘ñí;Ÿ% DcòŸÎ¯ó·§@¶´‹osÚ‹Y]9ÑgÅdPX×ÍF²0ÇâZ}Œd¶w2nIaÂäL0sFÆ_ œŽjÄÐ>%žþ€*ô¶Še.t4¡ëßËw•§Ñžªñ—wýZ/ÕˆÄXáû3c͉âXÔWÚV²ü`FuuÕü™/¨´Ó>ùµ-eM&Ú]+³(’lÞF~B‘êsÅIdÿø ÏuŽ qå〈mH-“|G6F²EHœuv¾l:,p®­12FÙdéhDn㊒TþŠr¨Ÿ-ùÆ´­ ”‰¥†h¡i„%šêݲ%rõOá~á¿(Ä,Ë”•Í#9ÕYYþY2Jã¯×®3!?G&TX%e.á~tõ}¨æ¦•3È8€ú’†Ûûhf"iÓË õü6eñshs~PV³ÿ.Ú¹žÉ=¸â†v¶û·¼mÏt¶$ŽB«}K‰ÆýÓhÕ¹#c„&à¨ýßH¨ß‘Ò=Ô5ŠêÒ;jù³Z¨¸—“žµ¥|R¬VEÈëã\/tDÆFM›ÀEm¤,?1L9ñqjAfLñˆ|ctø>9H2u|ŒH ‡]Vnˆ oÔ®ÍSGêžSU¿“˜rmûüY”©±ûÕiAmñü‚¥5ñw‰¥>_úØŽ®•Œ3O²k0híÙù5àF·dsب»FÌtc¬Sä® Žï˜di/"vÚl¿`ÐÁS |ÿjvõi æ_¼wÃjfÅ^ÏaZüdõžß†X|‘¤ù#3>ê’b澺Û'þ úµ÷ìµ=¡‡qu •Áht:ì`ãÔˆD;˃LšNhô¿DBS)]o|‚,ê÷í¾c™êþŽ YVâ¹ýO柊6Ê<ùCesPTδ|y¾Î§¯ô7!«‰&i»éNa¦Îzøvd»ëD'ÓÿöªóAì¯äU%÷D…¯Nv¾¨Åge®äÏ[ýquÒýóÞkø¤Ú¾ÿÃCDIŠyï\E¼Zlâñ©B|sˆ |îôYŸ¶Ç_DÑ‘/ºÎwPqTa¶æÈÔ^Þf°Ù¹M¡¿[‡îSÑz–Ášæ íZÝ'ƒÒö¢£âãs‹etºV/¿8w‹7¸ØóÐIÇ›ïSöí¿«ïdÄx¡-hÇ‘®ÝMhY=õÎmß½.ýIõA}Ưõ…qTÏry%p»·H‰°&¢¸b‘c!Ü95»to5ù#­œë¶d‰¯­ÏõžGLZW’f)¢:9ïu´«#fî©i#é|Obåh12ÔgäúùQ@uN)y–ƒJNùkß7¡Qáovà]v´+Nçw+5¡W•þÕ¶¿-n\ Ž“ø‰±ýÑ›:´0)|FBApÓ™œ.5˜)Ñ Ž·=‰¹ ‡,JËAU¿Ó × Š•N„òž6Ìb­xCpÈ)¿h¦‚¨‘î÷0žN©Æ¨BAQøê'd§™To²cÍ}žðÙ¾/Ïñ¢û&“Ç®•4t‚‚•Ç¢-ÐE:̾-Ö“×ÝÝ&Ѹ´_?(úê ”Êí­PÍÕ"›,±ŠŠ½^Ü+v(µ³ß0K9BÁìu{Æ×È=W>=ÌÝJ)æÙµHíy¡~ÿk$ïîÖïÙ®Œø_FlŠÝ£õ»üOØ8¢ž)0†"Ê–Éóbò¿Ü£?,„„AÕÕæ%¤·¨dsÐFŽM‡€¼ßo”¤ÙäßKAåÈÚ¥E®0Ô½ÈÔC‹Ü°¹Vp(Ú™ÅùÓw£ÓÄ.žA\Ý\'ÅN»p3·ßO-ôH~u’ iDwª´˜ñ+mtEY?e¬ÐAç‘w"{ÐnÛýæ±Åv´ú¾˜®ñÎEóæCöÓߢ¾¢ïlߥ£¨6<™¹[ØGÆnd¾”BA“÷Ö£;é©¡œ£‹¯Z?y…=9?ð_\Ÿbç-vß5]Ç—wG ,þŠ#õ¿Œc6d»‹~º!ìŽR¡ɧ8Q=¤«á uÍé»~;ÚŠN%w:=è¤ÈFçé¯M¡ùê>Œb‹ ÕÂ]óš¤X#Èw8Z­u0«2òHWá6æRå¢ùÆAõ/{áw.Ôÿ|ž™\®…ÆcsbhæŸý0ytbŸË«˜R“ɳâéÃø˜…ÚK2FÛ‹&“Óoa„…bdË­€¡EŠY;ß= lÍ¥1'_@ïåLÖ¢è*³¬·~ø:*šM†/ÐÆÂÞ§2…æ>ÖÔÞ7h˜±L.‡Zõ±™TþýRF“8€² Ö©1ùK(ærMHPD^Õ²½Æì1dù0ŸV5AÙ ªøÏQ¤ôœ÷øÑ€m¦5²d0âœ?ñ¨¹!¶ö²Ì£×ˆïÐqÊÔ@röºÝÝíâH¯û wÈ3Ê*ž|‡2þ*ÊŸkA¨~+ÞÌ Aä¸eVîч­)ýŸ·Ù¡£ÉÎÃÎâºí;ß(Ò£×f@éR\,úÞ_>¶1Ó‚¾)c½LÁLôÙw]:£†^«ÖãÎþíè^HË?g7‹®}ô—m.·¢cç-)ò®q´v³^ÝNðyàßÀ;IÔÕöWlCeì|ìärJ¼þ1o–º‡I“Ü×C‘Æ”ÑweSÇÖÞtú²ãËú+Ë×gû|^Q°ãˤ?ÛáüÂMyß…Ÿv¿"£\]'ý±¿êâ'x ùäù<¡Žni²cÖ ºÿ|yO¸£´6l"‰ú˜à:îÙG‹©Æ#[o)Ja†a¯ßmC̯ï“Âüæ@‘Ï4 yx”$g‚j.Ê2õÆ”µË2ƒA˜÷ËaSÃlî/…„DÝzâož)ÇÔE~fŸ•˜¸c÷XRc>*o>ÎIcd¡m]$ž$Û¦Rç#2bÛì0UÕŒþ‹ Û³‚ߢ'66)»´]܆“» ¶¡=¡=HP­¯¹(ûðýétàùZÔ[pŸµ½ÅŠêâ{ßû£ÂØóŽq‹=J¯ÓÈŒHe¡@çš5ù ²¿¤ÑÛ#½œwO—ÌA|³ùý©žª‡$“úÂw³H(©´pßj‹¤-î_.m?o£Š¬š±EÈ|Â{䂃 nZ<¸|9å&vYÁ&¨UÉÙuœÍL§H’ÃhçÎ^‘ujE—ïÍkçãÐëE×äyýu¾+²;1xÐç0WÛy ÆÜ<˜¶5ƒÚÛä ÿb@G죨ã,ú:Ù͘ÅÑó㫱ë)kt{’žÛT C5ýæ1ÚQ´ðÔÝnùLøËó ‡þ>ÔhÚ/ªëFYÔ Y{|yi޲—·²#½jñÏ›¢gH©¦¿Y rÉô|·3TÃ‘ÊØüèL=2ÿ†©„}e%øiôpû:‘7·…æMAh|j´¹¨íòéQ¼s®èÝ혛¾‹a÷Û¤5Ã]å ‰_‰ÄÄ¢Žô¿BL»*rÓlëÂÌÛì˜W`îÐÓl9ч˜×=ÿxV„Ô³ºÉÛAýÔúk•Ô“S½7ï(rßö>£Cæy>üà ÃìU%]z6ï‰òÿÚ/…©73ýö¯K11z(•.2ãWt'ÿ\y…Ñ¡¿Ç7$1bumãÛ?H mS„7Ù©vJE}Î!ö±¢»u6¤Ù4 'É“ŽßˆýT|\¢EÊ-&wâ ñ&÷î:¨UÝ~Ay·*½ôbŽ…£L”¦þê×½(´ì¶s—^@Ž…¢ô¥!dØ(ÿ°ºcŽÔè ŸZZ}|}¬Y]“¾_—"ÜŒß;"-+U<ú†1²¥ÿu‘âQô€6(z*’HFj®¨£Œðh~Ú–0©á‹•Áèx:rT¥=g˜ƒ,A¿oj’ªQ †8ÿ‹3!8?œþÍ&ÛC¤#A]Q‰#çÅ?KW +xT^ãÂ`e‰èIáô·eÄ‹ìø…^Ç·–utÕ­ò7ÜXA{ÑѲ§Öh1-oy×_…º±ùh3ÅTT˜pËr|AÁêÂò&šZdÞlª~ò©Je‘ÓíßðmkŒ¦O(Ò–Kg•6ò‘’Vifª†R½.×MdT·DÜÑ|#j¸sá:~Ù$ñˆ¡Ÿnöýb¨Hù5ÃÑ­üK¨ß÷5“¥KKÊ ÎjhøY®ÃBC̘ó9O*trÆ|Ø@Å6ÅS NÛi¼ª¢µ®D²S”TIÒ †PiÚÚ&€Âá½:VEpªX·àâ^eÌ .›*Løý¢|Ý¢USkÆ[/^?Iï°æ!GLç˜ööc¬*J.ó;3FoU¯Üÿû ¤Uß]ûsB1Ì¿s„eXJ³çÂЉOU>󃊮!£vf´oð_x“ÖÂ"³<Ñ´þ׿#‚ uöÚò'hPuÕ%GweÉ;3›‹QÄtÅPè©:r¦ý\~÷UÄýàòèÒiû ä§6ÞL³\^`73ÇÈÎݬ ë¹q‰9È,÷#ŽSó>ÕÄÏ¥‚UÖyAÒg¿É©Fð8ç˜Kˆ5q½òŸ}=y~ WÃQ¹š†Îј/ÚçÐÆÅ=þ"$ÚÏŠ yÔQ¹þ8íJ–<Š7gñØL2 «ë¿ô¿‘jÑÎ_‰´mý üÿ±Æ”ÄÎ߀|×ûÉzV(#‡Žy¢N*Õi¥ûZ.ÎqŒÿ‡®o¡[X´î``bé|´ F’¥õâv‰b¼â†RNâ+L½T9ßXSruÏ#Á£Y?¶ú‚-û07Zóão¤5æ{o»h(êÍÃKÏÞ€:üR‰}-ÔìG³eǃzk÷iéå ”;-%y˜c¾öúåª:̹‰Þ•«Äìþ[zWO6€\·ãäݘvÒ¼ïÒŠ©Y¡›^Laâç‡ÄÆ—¼]M9^‰1å¡þžðžäzõHf9«{LÆ18\õñCÎ)ôM:¾/óÙ‚îŸG´ìø\йåtíMçSh;í,„Úƒfᙽוߡ^ZDXf¸Uýêâý(ëH–Mz²ER;7nl*Dî¥Æ€¢5d©jZßúÊ„Ì O ¶k!kzþOò©ãÈW>SÎÛªˆRR ãPåyT+ÞÕÚØ:‚&É…טæÑ–js…ÙuÝ| -ºèì¶s·†¯\ϡĈ´ô›çìm=óˆö£zFk_ó˜Çh÷·D6cÔñùË;O`¤Ö.U™é1HU=Ó¾f›1ô£PRLÃýE,É^«uÄu¶ m?‡ö”Åw‚ŽløîõTÿ¹RªÍ’¥‡ò™PÒÿz†·ú7r$N “&Ë"ø¶czH÷RÀ¢>fúl³˜ìÇ1gðõf2ÿær{ü†) œÕ8• Mðe¦{Óñ- þº Úb êSSþŽK V|³-Y+ÕYôJ á·ÔÍCNЃ¢mc–âxó£¿2$vbÎÞˆçg%#f_úo™žÚ‚ï­-vï@öòÚqË ÓŽJ¦tŒõ˜ºêXM“üt a¼Js³ÅD=ÆtŸ4ý ÂHCå§Í ïÓß«1lÁ ƒ®šÛÂyôF¨ëîmzˆ®SÕ¯÷V¥ í‡ÿÙbgÐü­…5CžŒú›ûhkP¥øWñ¯$ʈ¸èû èùr@–ò;ÿ=ìö¿‡‚“áѳv¢„ނ˳— âª^ vVPÓd*-’|Ø+ÑñE´T”ÿ5zÝÂý[Y0tÍGæ•ÌŒè±4eÉbL`à‰“%Æ øµã0ÁYÔ¹)Á[ƒîb‚õžÛÙ˯1~·éõò'"/ [¾adþí~æ! mKšS)ñG@¬Ðjñ?t™ty³Ð>A+÷ŠìµÝn¨ÍMä`GûÎM½Þ޼ģ¿®eîFV@⫉£ÈÞæg?U¿‚ür5­šƒ‘(«»y.†µzg‡¤ŠFÐòjä”ú5:tN&úÄa€¡$é£ö,FN=ä‹dÅøUêÉL»&L ýwwgZ(ÈÏ~~q¬À¬ŽÞ@µ´ærÙJ‹4f0ŸŸRàQŠÍÏ’Yy"ëkV9}. ®Ì–~U*543ÀNÔ¾‰¬ÞPP¿}þ.*êM×ç]@é 3¸E´gÙÍì3æM¿0Æ,ÁÜ{‹F~k1ÌVïÈu úeîÕËíÕ/0Cg:ú¯î9Èô^»Þl`ŠZ$ƒÉÔWüáœK˜¸²–LÖÀØ@š>ÝïŒ*iÅ“5JAòk)ù]†AŸb’èB8á êgNGžG×™ç†&Þ„÷¾òcá9Žïÿ^”u)I¡NãåA·žab_Þ»9ðåÊTÏôìBqHÃki=ßQu–c¶FépFSu> •~ÃIßí¨¨¿Ðm˼-»÷ËŒê£3ìGµkY"úb³ÿC’†“¨ VV!åWã¯=vc¿]k‹×c0qáu¯á—+˜äíúvä&oÚ8=zˆIQ±víTLx‡ns8n‰ñgÉ:öŸD‰}aåºÃ©¤5·=Ó¿0¸…l&TÛƒnÛßliÿÐÚhdaT6º{Oèé>EùN·ÝN¿‘ß6è'ùô)²<Õ J‘3[zÕü~ŠtªWvFíF…OÆ®„Ä"ÔÇ*)yK‹¡uå©8ë®÷è~¶­~p/»8åcEƒ1ºOú=×&L±í¹W?…©þJ–0µÛ˜a-M¡Àlå£sîÊ0¿ånŸ¯m-æ—l¿ÿk: J8‹ Ê!P7Ð/[w½’H¹zÔ%ÊäâðiPÉ[Ö$æ“@mrR4ýêû ¬ÐÏ'A•}¯O¶—%g–v(¦ýŸkŠ0oå—¸l’йÒf=áGĹE¢I§ø-f•Ùüø|›1cþªxgz?ȶQ¡Å‘w1}Óâbôþ ˜Ür7ò&ÊI]JB×1~jÛ=³Ý1ê#аéÆ5ÂÏ«Šõ§´0}‡uÄi½yS<¯ÑÙoÿ£q)mGk 3¿@S}BŠÈ…÷Ä>â.¯®ˆ@åþøÎ†sÄÎÌL;Èÿ¥7ý¼k’rã'<î¬wQµôÃìQ‚8J·®:J|N©Ý‡Í¢Ë[IYá­ ú V*ìƒAz|›¦µŒðŽæ«þ–ÑdŒþ0ÖRÂäþ_”5ßí˜ü;ßÃ^Ÿ…)m~ÿ¼ª«˜:PTû»n“¯RMïöÐcâ«Ðpz;Ɔ³xž `¤ôIôO%] 1åžÚ•Œ-žgRfÎéVfTÝWœµ$±£‰ãöæþ×Ñþ¤sßUu%ôªOKFÝÇpüòçgcðy-[…‰µ×Öò£ž˜~µ] ˜yÏEN¾EÆÜa½=‚Þlj¬]%v ”C!Gdn¥”eû@U‘“C7fWPÿj˜’D®ºš¶õ6qþüøI0x™ðÛ?W¹Î=µPË'±™x¿£–9Íá½¼-Å5>î DÜV¸ãg û ûMÌ»Ê7ÿë&~ï¬ÎKakÌ©|•´'<:ÔºUÙ 3…ÿ<-¹¾îMÞ-mLgdí >ÁÔÃì!QGLÒù·Š.½}…/.Û £žmö¡)…m;Øs ž•âM”cB/?5ÆW³;Üg-ßn½ö¶sǾ“hÔÜ–®ÎŠšëû%_T@å!ó芀m¨ 9líw¢•Û4™«˜RQãxmÿ_%4©Þ-<~mŸcäçêÑmßÁ\½;u$v²&F¶îéö6:Š1Û ½çlDOX% QßÅähù°KG&¦jœ\³7³az¿¾èÒ‡½˜úÇÊè@S†ªì_¯k`òLÄ© Œ‡èüUØ)„Ñq2âr>B=½‘ª…ž_уÊ%‚h«’:/k‚úI÷€µTÔ•¿êŒBѶÂ^ºº&ä Þb÷j…›˜í™ÔyQæ_Æsƒ5æšÿüCs|@•9 ¿½Õ6ÐÏìôóäU¢¿ VBrG‰|Í⇱6&KÂ×l7¤A>8îɼˆYŽK¯ªaÎëÍ©ÓËQ˜½)Ñ"qýwÓ[³2@Ñ=Ù-tÔ ;Zˆ¼œ->Qq”è•uªÛ¨Ë nu>@½±ÅUö=á·1áÎ+Æ ÆËÅŠÊÕ0^kâE/(ýb¤Ú,PüÞhßóΟLš—m1Bæö±ÚŒùm2½¾¥˜³‹ëÞµª…Ùª¬+Û% 1³ÓJ«c¥}²>‰Ù…ñº¦Ö¿˜å»´è£ý3ÁûØg•1Ýkínp‹èï¤Ðk~W0ýoÃã¿S‹¯æøyi#ié¯ß>ˆ!T÷u¡7xÅ?Q$ §Ø,–å¡õEÞ´qš>HÄiêA}Gâa¦¨¿ž½ÈHÄ&V)yO¿>´j®Òqvç¡ó¦ý­½/Ñg”1·‘®a’}—WeFó8­vcbOÈÙÆ½¯1µ¿ž†ä§‰éð•Øöx]út–Ùƒ@îÿáµ*³䤵Ñâr¢WšV˜˜cêËÂÈ–[m„­;~’x±Ó“´­CŠ ‰©k¿·Þ‰Þdã›WÐ.opoÿu4T9 ýÿÿÃ+åæþðkð£ŢH\¹Å5rÍ%Ú({g¥¯»Šê×Ï(Ÿ÷Qñ]hwß½t°šVÙs… wEÈ@óÆA$ôl&ºßaÌ„5±ãa0&µ£}>÷µuS®1"1Ó*o´®¡‹9½‡ìÙcþ±ï§¬QP\»~+*€Ò²å×€ñyKžy¼bC䣰G«>›8ï.MC݈o_£½Cì ßŽ/ì‰^9ÑÍZfEøŠh* ¨¤Q¥üQD¯ð°nä}õíÞJ1…1Pu.’ÉD?±j祖łR®tH¨è±«.ÒH¬±ƒÂ™Ê»óßf¡ÖÛy)aÚ×B+˜ûøÙÅô/fÇkgöÛ¹ÙÄY”Ð> 2YýìŒ1±ïߪ\ì¥øbòOƆe³9&xÊÞ4ÿÃèrД俋 E]ᲃì µF[HèîŽY£÷ÖA{ƒàœÓªZÒ.wyKCSFû™qe4.Y¶|24Fóë•Usm´­K±}@—yólú-È#ÏÄTA²»6©Lì0±,Ÿ­Å»0ñ1z)ZàÁÅÝÛ¹6=’ké–Äò¤Ö'¶ `FªFØ”ûÈ¿ëƒþþ˜ùˆbh¹ÓfLµä%Ôi†c¢ÓFØðáq"'¼ ‹@Úóߟ1GÐë{•¶*í‡-7½´ÑÐ,–°vè$*] îr ¡4÷¤Æ“ß1(U=ÛcÛó峆û?ÑÔ£Ö²La§ÚZ4?íë%]@g`ê÷î‘ÍèÿúQoÃh#;}?+ñ-b\V‰ƒ§ã¦Øl•ÙÞÿÙ‚qÏ•…˜U»>ú¼Fsi/þ°töb>û΃ÇEA±1ënz 5.†É°TÕ‰¬ç'nù¨ÿ¥Gì˜^Rr D¯l, Óª#ø“ÂC+ýÔ?ÝÉ]ɪ þ*~b#Ïê4êoz5ƒÚRçÜ{•ð›Ä³º<â„·Ø1tù“î ’óeá‰iÍP’JÞi܈åf…ÈW½ P³Þÿ™ÃüÇ•™ñ0/p"F²sÎbqú7ú1[`Ã\ÚŠ™j‰ýrû.€|Mñ‰ Áû} w­Ò0iòxÍëmÆõ ¶t†óú´ôFò#†/Ú9r¡ïå{Æžt¶´ú¶3Á¡ók™KßÐâ7¾=ÿ˜ š{~JŒ˜£å‡oÞWmZ´ûµiŽ¡ÛÏGÊçà{ øõݺŽûCÏ%bì[²r&wúlqãÄ4J†ÞO:MmR/n—ÄŒô6sêˆ8fl¯äyð3Âl%S™ Ÿó5®ÀTç&¾+2ܘ¨T6`ɔïeöÊü! SHÑŠŒ<è=û\ô÷¶hÛØ³Åá-Á‘ür†«Jæ¨Ìcchš^C™‚€Ê…“T”ce½PY…ÊKwhÒV¢þÞ¾A:óh´†ÎÛÖþwÝ{Ý–ëÆað^ÕÓ”N%ŒüZ…îÙ÷˜Øj®–M2ÂTEO†é³|7r o˜Ù`6ŸÞ&hÂót9cñ¥˜ÿyt*ïÓ"(!—#ø_ º•-<÷¤¨×/^úH$òÑ>ú3…†8#ˆF|%Ná‘ì"K6_9þ púõ4üùäÿ‡àÔÜ2×>MVP{sÞŸ¸jÍk¹ zeŸ}sOT-®ˆ]Pwìdo4J¥Y^b—4á¹Ì“]ngˆ^kªXÔ/ÇüôNÁ(j2æŸ.1• ¸`n1t…­qsçgÙšZaÖÖxµ8’Œ™{*Þ™‡¶Ì¸I&c ¦\è×Þ¸ia",ºñÎfoŒ™û2Òec„qáàÉS±Ëͽ\…žÈ¤kÓ,tL¨¼¾Ÿ‚6ó :ãûÐêÎOŸ×BìPñ¹¯Ú¬èøhx=MìÛ•"D0X˜¨•±ˆ‘7M >ʇ1.ñ3³Z·“yF/iˆ=iB’_Ì`9ss‘çÌØ¨å/©c棈©XÂfNšå<“ùl¾*•ËSy¾È»Š‰ÀÕ‡¬a´ÿlðWM ?ˆ8a\†žîlÉDf´å^¯ovFƒ×a¡šÿ¡rÄv!ê‘4Êjø·¿Ùc„r¡4y¥Ü TÕ1?·¸ùOú^H¡ÚrIcèzr­£Ï]Çðþ5MNÅmÇÓrD½ÚõÐEÓ–G8Ý‹1ãq2aæ=Áý=QmWn.cþâ#òmFP„ïÜóŽ¥Èœz£HT¡ ¬µ@}±W=ã&‘‹Þ¢™Ä®ù—T¿ç1±{þ©¼ŸøIðdãžÆÖÇR\n‰}êÊÃ?i4± þ {*21@ìå@NÍÛá –]^² õýÕ©ŒÞvwËG€*HžÝ“àÝ´òú S"( ƒ”ˆ‡ê ˜þxTýE‚àP ´ÕŸuÌç\ì—tÇüÙ7~ž+˜KgLßïIôâŠï㺞̲8õz¿!üpBòj´¦ ¦m½œ®Ša2cu}¬§ã1ÓAÃ1ªÓaúÔ’Œáf^8å£_p?ÃÍ t‹~áTW@Çý“{Æ–hW~£eœ‰ö'®ªpZt]•yðü2úîÕzéà‹aºú…羄¿:’O^fÃxVxkÓ0'&—ÌB»ÃtáåÇö /+Ù/)#ò±c"â fÒ"Þ™­Úý»ò­‚d¡…t—ë¯0åΪFpGùø³AWŒº0Ÿ9xî4†Š…hçÉ£G½/)mm×›g¾+Fƒ¬Âù}Ù ¨üÓ¦_Øk‰òseFyº¨Øe!ªw€5N…ŸíÄ÷0‰Î°WèÐTdà»p }:Ù¬³‡A²dü|êÅÂãº^hÔ+bò]]–ø3YO5kö,a–®‚ïÞÐÌ=O>nÓùÀoÑ÷X6ƒrÅqè MP†ûÇã΃zÚañÒ_b÷:ª–8.ýßcË~{ÿ?Y, ­ÃÄyý×µl"'¡º[ç>9YÈêS |vÕì w>ÑG ÿe†X¿uÌÎZm®Ô:‰“C ~ÞvRd¿!¨æ;8Ï*zz„9¤2¢”Ÿßzfv‚’• Ô^»Š]›/çMPŽ:}ÒeÛùAó3W­D0ÿ$›é˜´<æVlXØâä¿M&v[ãŠ×≯}n9i˜ ²¬CzI¦bœÔYÏ`¢ Š½¤šcÞ·ô{#þaDÔ@|ïþÏŒ/{Ü¥°½^¯l3yo¢Ë¯Ì;·ç :ž<¡¼Q©\+Üè79c&%Œþ˜×?êØ³ ÿ3ÝòûFËåIŸÚ80!ûèçsWLÝ Íñ'î·PßKuÜÕiî^MÇL¾•Þ=ó|ÌdîÔqZàÆ ßµ;Ic‹˜¦B¨!­SGòÈj󲲫êÏÑ!8)¨Ó¾³ƒ³ŽJC¯jÑýÉ gVg;Zg|ìüdQß:Ï'%å*ú+|\“L(¯Ô»åúÝ•Üÿ‰¡vàtðµËh¹s-J†¸ž,RQÜ{ú –OìŒÃˆªó\$S5ÆŸd©¹‰ÜÅ”†çŒÈña£gŠ+޹cöI,s×ÞFÌu|jçÅ|‹Mêço_@y9²+̦”õ– -VPµéúÂVäAõ>µÎ¥GKä‚”01KìÛßädúˆóþÎÓo鉜d¦ðžr†-²“ðö£›‰×‹–‚Ú™W@ÜKt#Ñ7M¾ÑkŒ Æ¾ kº®ªeI_=‘ñ?j´Î ü˜œð Í%“?¡¿Á”'çfÝn¹‘žû“´@ìæêÎÿïcÞ¿îä‚j+æ÷î+¬LbÂÜÛ‹ 1¥å˜%M[í`ÅÌZ%[,Á×ï2ËcÇ0}? µ˜Li¨T“^Áx”3å)CF · 3ëU‚´M®Ñßâúä®ý"¸²:`qÔ Ý§îí{ÍÀ‡n—§Ïô. ÷3ßù â·ËŽQæžðnSÁØkaöÉ;1Q1›c½ Š©Æ­<_ÿ^¢ê|È~ÌÜà`¹l*™Éó ˜‰+Òº{÷È”®’Ý—1í{Éï;&««Y¶êˆcÜX,¥dý>FüõËÎ/càwnܽPFtõ›0òZ>Eëç‰3E~¨¿¨þàд,*ÿ—ÐòAÅñ…°I( jÇhhö{Ô?̧ÝÖE"ø©E2A÷ž•¬ÕÏr P~cWNôÑJ¸ &äî|S«ª_ä6e`F\=Ð3Ö³£gFâÌÿb~ßÃQ2á‹L7§Ÿ˜<åËßÑ$é— rÕžrVÕäAÇó‹Äçœs"R‘›ÈÅè8­Èÿ¿o+ÍlÛÖFœvw j‰Ý»Ñ)zjÇa"'ö•>ƒ—ˆœøUk½á³VÏ»¶+>»eɪuŠðÙíI!Å &l/M‰'zÆZ׃+–ðÑú¾ý›¥îpîg¼ J¼Þ·ÞTPÌžÜc2˜åÐÁÏz“^˜¿Üû[óѱÚVŠÌ‹+'í`Ç\†jиY,æ8E:³|Jªo `æ‚£t]ö=ÿ˺¥{gSöiºý0zXu®Lc‹ªƒ1rf"åQÉ ÝØúê°ßiôïíU§éÌEï=š¦R÷èõ q-ŠG¿³@k¿i†þ¸ï9ÂeŠ‘Œ[‘ÿ½aÅøö Án˜Ôäh—¤úaZZ†G?à0È‘¾zÔ{˜qqh+½ûšØ—üw²EõIôó86rú£ŸÎbZ96W¶>“ê#šóg0Öþµ¨ÜФµ’÷u ŸÌý½jË.tÑnòe2ÐDKkïÿ88ïx¬Þ>Ž+$*¥ÐV2RB)ÑGTDI))£(I{KÕOŠJ…hQd”•-{Ëž÷žG"y.Ï_ß^÷qÜ×û|Æ}®£ïø×B”&”‹îwA!½æÃC’Ë ÞÞ+8ëÖb©Ž¬¤ì8TL/xªuÿê>>¶ßåpÍþOž•G—ÚÆŠÐÈ—èå[¼ùäÉã_ßÏ!Òß¿¾WW›î—ûgB瓸M|óš¤k8oØ\>¦¡®°³Vr mMqÍ\r}þÕ‰Vu‰7cJ<ÉŸo{‹þú’ž;NOxìîEfa†Å]'2ïþðƒpÂYâ¦åÕ±¤<·ôu/6€ûê%kok*8wzLõî}_˜ë^7晋ÖǴʈÞf¨}î"º1Ó@è¶±¿Ë®D‡‡Ï¤9)~hû|p„íæŒ¶¸«~»_¡Ãs¥ÙÕoè>U0ý¤½ÞÞzö1 ¬XöFö-˜íï­KKσf¶¤¿k18ô#Í™)à¾S™‘T¨neêÍ£.fàž¨b&¹Û‚ã´«Ó;y ¬fÝyJ«,ÁÈ“‘ø<çh4ªŠÊyè>Býñ9°­…ÃKùÎÆhœ»RWSS5k(½þ÷Pòo«—Â¥rfdR}(ÛÂÍ‰âј˜”⨌¤+>Š}Šú²C½&óÝÑ2ìóu¶øtjÃ$þ›<•w±Ì䈲äÝàh%Æ×™¹·œ±éaÇ=ðܧúã Á§žu¿tê!<õÔk¯(„¼®I!ÁĶ'¹>Hr†×çô‡«ÛȺvë-žøü}œ¹iwÓD/.Y´zÉ·ã¾ÍCu¦„“?/âoNJòe¸‰¤÷lžþõâCÂI=ªóH?âÆZÎ- úÑß8¤› *nÛËÙâz Î©eÜ'ùdqÉçõ)Yňò©†ð"¿êŸD'„+ÕÃ%Ô!`h–éì%óíÍ Û"§@`åökÆ©MˆÑ*¶F;ƒÿf¤Fµ³|UIÃöþ\ðüJ´5Õ¸à–¨(+®§:ÊÈòr Ø/–FÄU€5×£B6Õ Œ_¶øÙB|#êî©MrèñÈ}d—K¡«Sç|‡ÉCtJHÍš&¸‹þ¨òG‹t…ÅqÎÛý±ÝÔ¤žeڱћnãF¹ªz?¬3̘m;_€#fºÜ)Œè†rØ÷ÜÏnàf)Iûüxn¾»ªï‡9àj‹çHèÖ‚3+Ûbç̹`Ùôú)“žÈXiäé¾N ½k…æoÐeÛ{.:Ò -!1CeÑ ð£StZªE‰¼šKGÉúÁ Uv•(t§M³y‰Â½§ ç=ü…ïôTÏ?›ZQ½Io}À‚4p“.ÏõGÛ1ÿO‘‡”У´ÛùÐd'Я¸5™Þ¬Ëvëç¯uàäiÎQzU^PÆô9‡—€/¨ÊÛ÷ÿc•èrý~½g9½ÔÔýþFÉÉ ¯R¨Q%}å1ëšz;éµÉU ßW.XOÌ?"³\æÆ†dútÊ"K”Õü |Œ±‚g‰O"œ¸±¦¯$Çû}¤ÚíéϼxÏÙ3¾‚úa+4WX*žÞ,bKtÆua£Lù¾lììÙÆ«!ül¹ó¨ât¢#Æ^——@ðGùdá0™ñsmgûédcdJüRapêGÑqð«ÏJ:¥ÍÿÒÙ£k]lÀÑÛyEè •î"' níîe2SÀáj+)K€ÍKß1Úh Ö«'åéÖÁ`Îø6ó¸ôbÐÍ;ïß{FòJ`Šª8ñýyÖÞóINÍÎûÏDÝ »þ¨8§+Öü$9ÕÎôEœr ñ›d¬‰®|iÆëeïÀù»@4Ó¯ì///E¬³eå‘\’ëé÷¼Q¼Ñ‹žÖ—É[ŸÌDÇXÎÕYL+4ïS²SÙ;ˆúÅSM÷-UEeà<õ˜t3|·iIÊGáºçÍŠ–(ôgõ…&Ž¢$çp§VWjlëm6_^â÷¬ŸV¢=ËîKr¥#zºÇt oŒ±š¿ÖÀ§ìIšµFÄ·Yh.3ý Þˆk€Îß6ÍÔ–tÛá‚S:Y‰ç!L-˜Qäz ”b»—õê{¤‡ç/È!y"4ãC†*á&«,ÀOügœ]vçµ ™•™û¥ÃÈ|ªúöÛ™²?/$úóoòÐ{#7ÂIچ݅΄“úùמ€â?_›ÖDúpS·ô:ÑXP_ÌÜ8ää³g$ì Óèo#6ÕAø"Dò1„Ê­>‘œš;ù˜âá ⦠·ÆA°8E°æ‰6øõw,—4üß§ŠýîÌ2ð×:¿©:;¼²A)sÃ]àí×L÷ýÜlŸ“±Ò7À­¨¹¼«œ…s«&`ðJs”€ùvÕ¦©6`,0Øw«þéAæFA1‡Ð«Q{¥#Z=Ö {:ž[ooÿ‡^ÑúÓÆ Ô ù ƲGÛ ³Á¾,~ÎZ ¶Ÿnlk!8•Ùbw•À ]žíºa9¸½yœ•ÿ–€2?k†æ:p2Ë+ÂvŒƒ½óŸó÷íóÁ4y"ö|'h3+ö¨ßCϲ‹ï7 µ¡ýÉ‚Á ±hšæí¼+ÃurŸöMNC…ì˜Uî?}_4¾?éõj-¼3(Ì5¾ŠÒbB c’wõh¾Rަ¹ñá¯TŠÑ)])ÏR+CïóâíØMt°õòj³«û‰ÎV‹üžMÞ/Ó*öšÛà¼Òu¬ß·}Z^µ¾îÖìñpeBØ,sMJ—äÑ…[tÎ’rsƒ¢ØÅ >˜Év7€*àWߨ[Lxàp÷ ¯ÇkÔK.<&óå­w“¹düÊŸ|ÂÉÂÞß ù;ĵ¢A m“cã\ºC¦‚j1?<ã á0ÑäyÉ×4ÂÉñá%7@‰ií§œŸCx§ó÷¹ƒ’ ½Kè6‘CDƒn7l€`Á{½«ràÉHŠ^/ÿjô§LÒ‡W”¾ö˜~¼ ï±àÝ8ñP?/¼7…wÎå’¼Ø\÷>È ~ºÂJ œåvRuòÁÖ*-I8k–ô3±×.-`ä.”.L˜úɧӣgÇ“|°[ ïÐ{óˆ|²azÏ–¯±î|Ú’¦¨ÏݳA?ýû²yñ 0ÅÕtô°¬(ñp{pæùšÎµ?IúÂrnyýR¢g¯½?ß îÏÉ Á‰žÜñíùÖεúðw‹ÀjŸþétHˆUF‚¦±Æ$ÕâºÖêÓõ¡MÉ4º¼m ÏX¨7=@ít¯h÷îm( ÌÍ_[E·­âUìPp²¿8˜YˆÂ&ï³4zʶØÓ$B\P[uª²øx šdl_%@×þâÚÌ…ÓA3º6Tx¿ÌÛ—§¶ô£tÁ½Òw/x«Ïë:=$½àÓîôzäkÚ^˜$áÃϯãöB8ø×Áç1ÉŸ¦{,?gêþšµ3x… >çå8æG€*31ÊÞ±•ðÀýÍó’"³îÊÆ«$އq žð£U)QCf„Í!ù“¤÷Ž.¾ú×MŸpòñüÁ¤™ „:=/æ½Õšþ)òÝâc›>LZGtÇuîã¨e"þ[Tå³™ôG)ÏäüJ8§þ®@'T™•Ð ~®Øê?'ÜÁ?&}P"ùø’¢<ðÒå› ´fwjoèüû²àÉûHv}ÿzT(\dñ¦æ^ñÕn‹…N8sŒ£E»N½Ë2ضüX+š‚>s«žÜ˜ñV0–4ñìσ®ø,„ñ3 4_Zûª÷æ Ý—^rSŠºvíðŒÏGÀ8ýßïô\0iÛU³MÛÆ¤EݰœwjñÇ¿–€ëïí4]r¼)?•¶6žw´Có©b¸ö§åg¸ƒ£Ñ›^ûHžä™ÖuÇþCÅ›7oo4z=öKºTmG×Á¾Hƒü:´¤î_î}Œƒ5¥¨ŸÇߺq¥Ó³bþd=D¡Ç43säsÊT—¡°«nEáPÊÚ½*e¢îbÉ:ÞÑ4´Èåû8žùnÃÏÿî<)Ótè Xr7´ ®­'â°C¸Üsðž,{]Ñþo— gAз&`»£+„¯D$>Z’õU[õáJ¨ã±¹ç±Ô³ØËñOˆ¿|Õ6 ½,U=vhC¹îÇy¿b²ÕÉlv¾?Hæ»™¡£ŸçkçtU='œì|aË9M8ÙÞ;¡+ÃS¥w&NFf\“¾ª}‰œÅ¿w RÍ•¹³ HŽ}~L¤P Â?‚'©ênZâLœÃÄs ze§Î)Ïó²‘,ß:MË7Ä <Ž…µ)É©;î§ùO' ÃÏû¸¬3âOW’Ü”hã°SÜ-"þR&à´•86[FòB©äÙ«ƒ`÷Š9WZö–G®RcÁºÕ—ãõ Ìp‘L“#`¤-ú‘ô4tážûéñJ ß2N¹*ôïðé«ÀÐKl‹ÑY æ1~yŒBXé’EóßlgZµ‰¬D2¸ªÁ}¡Ó׃ËV’½÷ëx›&ש‘\=åO]ð¼WàÑÏÏ©›ýÆú¼ý\0G.™H. ýq«µƒžš1û±Y.è Î0.B³Y‚œá±m¨7ü4M>hªÄ·(r5ðý¿¡=N!(p/Q±6.@¾ýáš,6$gÕ×W¢ÜöwT÷dyÔKô¨hÈÕ eTÎsZæt×™I‹ðA¿]8oqó°ÞéëOã¯wA’"3p-Ìð "½F°ùÈHµ'BŬ>³)~«xçLú&µ¢Ëм’äŒóK|_n;êuÓi±P?P9¹âŒÙ$Ï6Î>z3¯‡ðÀïM5ȱ?^»ŒÕ“ùá‚“N™[6íà“¾ûÏFä‚ÇÂɵ­§÷NÚu;KAQÉ­\_Pžs6wþþsà/%9öBÕ{Ó‡òÎ÷•n‚p›ÞCwvg­uÊÿUF^_Qx”•ízº?ÑÈoçúÛÀýwåûÔ Á<è{óÁp|ϰJÜ®„ˆÈqöLpÒbú?_kǾ¥zžÉb&Ù™ûf6YsÓâ(Øs×ZíµËS#&e-é…Í; ¶Õw©¦ì£b±Œà\ ³J`ìoži`†ç£û†Ž›Á\7ZÂ=”Öö+Brý°½ú7šÜ³'a™¢Ñ8ñ™ m‡Sàm9šJW!ç ££ ÞÌ_Z¯ÚÉù©,þG_6ì7ÖÆ±›À|PwkbÚß²õŸ{^ GùÁÆ@­Mh¿žßîqÞ?~[þŽ÷ u3Mœ¦éFÅ̺ôôÂ;(ž5&õgG$òÝ–eçÊT#¯få2âÂÔ›‡õ¿ø ¼t …2³C½_ÓÞC~|´V¥„«û© çà Ä`HöݺvT l¥w—òþ¤ƒë[À^eAÞoÃâa—ð[ÜxÞñèXéfó³Ê—AØ)zyyÚ~P[N-4p5n–%š>ñ¹¬WN¬áÂIÉò¶Û þÌ\ãçê§|ÑYï9 ºu–Üt8 *{gá²r’ƒ®K<5ë_BÎCÍ|ZÞmÕ}ÿ´Ý¼ Áý}‡–«€/¢3)uˆèö¿®Ü±“mªp?8Ù5FÆ)p,·/§- º1©ýû—J.Ø¿µî8Jƒ}k»Ú­'°¡ÿ³’¬«hm„µV XÅ6½S}¢Áò¾|õzÞb°ô—”$ÒŽN4áÿ½óK¿ö‡Q0ý 8œIŠÞ5ÿ~-É»SÝfbX j^§Ö>»i׋ìk¡à°ÚBuœÀm>½ïã=ðî-û¹f‘1xm—’ŽÖ‹‚—«ÞA¬oiøÇ¦?àp™£V=;9‹Ù¨ F⦽g *ÑÛ#\°]ér÷¼ÑRaôgƉÝhpÚ´ïgKªßÇ×ìÍÝ€’“ç2NOBÑs§=mk‘ë!±G>Z¹Ï}žü[ŒÂm딯kV£b{KDJæ<4a÷é’ë¤}]جãýãèÕ{ðA÷ôI0þi^4ùº”è¬ß%š˜x[oú½(%=rá<³ÁhÌW®ÝË! Q©.YwÔì‘ù©oÓAÙw_ÝMxx‘`¤hA®÷ø~¯´>Pµ]KÍ.éÙ>oógIÂå|5øÊxûQˉÏÛMz¦ûy¨•ó‚äÜ϶¹o^M8”~˜N89n¶z°ˆpòmŸQ Ñ¡žû¾ºƒÄÏ2 Ϧlu«ªV¬w „£ö#ꡤ­XX™ ÈÕ¦ ‘३^>0i¸;ò8½ˆ¯•U'yCÚ&0\¥ìPöPÜ(á`‡_UÔ)ÂÞÖå1F`•§Ý¡ V(£X¡®¬ ˇ _‰ƒµëHç s(XË¿ë-s¬ùÆ÷µ’`v(^;ÝpÌÒþ²ý¢†`66Ö+;€5/Ïðw™;=μ¶›¶^b–&8·+ìºeI{âSZÞ¡èÕš=¤soš2‹HSô»×fö<ö^úe ðVê6\’|Ní–3ëÿÞ«9G;Zì{}^'/C¯Í-û¨Ht>Ø%Y 3͵ Œ[Q¯wøDã×÷¨|ñPìH¸%ŠÓ”òµUc÷{VÈù±äÌ­žò ­9ÌÇŸjB¶¡ ¿ùðþ(TXEm3!:Òqâ¯lÞq´çœ. ˜oƒÞWï²)¢—'ß:yú8'®v^.S/prÒí}¾̲û…Fug±²úz ÌP߬=ÍÔʽüÖ[í .êå3›êÝu¿Pyß-Ã̼Aýˆâï[úÝ}ºí»XÂCßé–êÿß7>É?=q߸{üà$2¿¶¿L8‰ú/ƒôœ1™dû¿·'±“D‹'ýÇã?ƒê­­WÔø*]Ç÷®ë îôrÿ#¾%2pgƒø¡ê•6µYCà³ Þ›D6‚wù.$Õ Á]X<øm-82­?<\>ƒmõ¶:õÀ7°Z›éKsÀº{îµ7Ǭm6+Nl™Or¼¯YêG¢ýÖz?zÂHþXòcªs˜E³æ³–K€ùÕ0MhÊ3qÇCi›o`¦>2š²–f¥û³þC`‰wT‘þ ÖÅseS>.{©Üô¿–Á™*ÿ”®Þîô™+ìw‚79[dYñ™{‰—îoÔÆ\9ö|»¬©SHo—–¹"ûÖ4 œô_¹þÅà5 v;ü„ÀXšj±Q†pÓŒmL>„?²G$^o¥¿ñVI%ñ;Â<×Â.P1Þ+¨ÒwJtÌ9æNz¬àWédcP,›Ô<Õ NØž6¤×Žwø}÷&™é»õ:éd:µ%~õ/™Î_nO8Ñ?íHzÔŸA§Úç\ÂÉ«ÄÍ–ð6[ÌË|%¨Âþeu¢KÞjÁF*Ž ¦„;¼ž”CôdËsƒvàÿ`´{$‘^£;w_C9á#öýG-jì+W>à€õFJC÷¦7áÁ?ìôM0³–‡OÛ°LÏNËçƒy´ qz‹:˜;º¯ü,; ¦¾1«ùI˜[,ëû%&ƒ¹ËGvòñ0w;)Æ_ÓG¡Ã¤_š¼Jys‡ÀZúåA˜ ¬Ä{vÖF`»[|”¶¿ÎõAÿB:¸^.TB¤Á»$ùøsÆ-ðWy ¿êŸþÓ ól"¾ü=ÉY-d#øëeGÄü­WÆO‹Ú NÔ¡#z ¶`¹DžR6³=Œu3D‘‰ž ‘»goYvÇ_ë—üeàÇ‘ÿ”•7ïA­Š±æq­s(Š8[ ‰ÆiNuŠÈY#"܂̻{6œÞ“ˆìMFÁ Æ=©8T¬~hñàŸF|’”bW£#PTüÚ,iÐÖû<±šFþ>…ÊÒ½YàŠ±^ª%N_>³nÿ£:®½Zmü. £9ïUŽ™@Ø·â͹;$Gîí?lÊ]ê¡¢({µ+¨¤Æ­ã –‚ªü&¾•"}§3kí‘—lPÁ#j‘áágÈ®ë‰ý…F÷w²þc&ÓU$Zf7á¤P~ØKH89ðí‹ñ³‘ÍïèÊ„§_Rwç¾;EÓIŸþ>s|!Ë ÔýgÊÏ:²AÍXærúý6’O$šr½ÕÁ¯°,ªoÜž¤î…¹‹+ÁÙþÖÈt—$XëËüÙ7Àd9¤þ L³výIa` DÚÈ„#×hœ¾NŒÈ3T£7ƒVwâþËòõòɽ+ÀHg©þV£-ý7]÷˜Ó~ú7ª÷¹÷TíTgY0?…( W¸‚¥VÜ"·½—ü¾b-Ï;`:^ÿâgJ|C.?H¶ ÜÞÕ‚–ñWàÕ¼H˜:t|wûÖØ<ð›3[åü~Í­iW‚¿ŸeQáÞN#“I[pBdXgeÀ2Ht¼ôö:èûÙj5\ gZ 7Ç‘…¶ë Þ¾në@£ý¡„²w’¨ÑM¯µê0BÉþ§±Íf“o³ŸÿöÚndKóÚ¿F"½ýVУ dÍÚºjiæò“\¦çûš¢üç¤à·ƒhœ:‡;ÌUFGã´)ÒÝ,Ð\[$gU/Ër ×·*ÜÆ{ƒ:N¾ 8d¯/Á;wNç÷@ÝŽ+¥0Ÿë7m[©È:PÇ3Ê HÎ|>"ú3Š*SO?}Á PukÛ†ŸXºl%æƒâo˜þ!TðÐoÔÔ 6±¿`[¾ÙDžÍ‰”³$órê©_ã„“ºç]º· '—Åo^F8q¯>B|g`‰Ú/’w™—·{.;ªôœ¾[þfPþÓ\èãkAÉî<Ó_¾Bí#‹ÌqÀ/Ѷ‘!EÖã›Ñü#$rvg-µhË$âzž]=˜ë/4î«3ÿ&âË 30ÖM‹»ø QûaÑ‚ \:éñ@ú_/ûÝÖGÁUìq>^ †ÞÎÄï©„ŸK/ÓwΙFæõ3h€97·|4ŒèÌã;£×rýÀZ]U2öb¬?—½'ëœûwl®ü`,¸sÞFª¿öOýqVÔð½é.™Nò_aÞ=#Ñ d[Ú/§Ê?îøCv«ø KÚ"¯g¹@Ô¬ñ 8–™‹äèEÊÏ“ç7€.QݰW€î/­þéQSÐú6h‘Ó«B4x™nfè ªbÀ¨&]ÅŽ/4¸ªÈSŽoŽGæB“µ‹ðÕ,Ðn »uEv '›#ÃñE›öLCùëSþC£è’¦#QÇÐ9É*Mâ¬h¡™{˜Kÿþ·*ÄIƒën߱Ƅ\—·Ç;°þAP¢ún©Ëo_n÷¿²|*¨qÒç@¹|jpÏ&¹äÍ«QsI¿É«]}Àî¨&Ýfåü½äúWw›J¸%ÕÉæ N¤çŽÓÞU;Môáüog2o-^&ïA8é>+ÞItf,°Ûà3É?#9’9Ö$ßD9N÷»Fü+èÖú… Ês ¾ýêx7æ¢éÉ »BçA¨Ÿ}½DYüRjù¡Èlp‹…'TÅ'Á¯U÷ûS`~—™´¥n~[.r½Þç髹u _y0>ûÙ3ÐͧßóÝôpÚ m ÐO,äó´¾€þèÄÑÛ —&[øü#rî!¶ <ÂËì[zVq`0猺¢:vºê.X+­¯êŸ {šô$טqpˆ)ôQÁÝvÂþbÇð<ÍùA|ƪ2hO^øÿÞ+fq ¹3¾øôý_{^¨ø#µÃª7¬x=Òïòš#/ ÞÉ4u”o¢ºœä¡ß¶Çmä6:å™âmîßAË ¹¹pï(X™W÷xß7.ÎÏg€ÿÑåß;Ø£N†ÿ-…ðKQÓEã Vïž¾wì.¨¦œ y$zyÜÑúwÄ¢£¿Ä¾Õ¦•cø™¬kCÅrÄú¤/O‘”%<üºÓd{ubJ_Æ™Eg·j’Þ2î¹1àÑ•‚·[Þ‘œ;oŸmçI8=÷¾ Ô Zû½£ Ø1µ/¥Éq*ÇoMÙ*¨æšv)PJߨ3c Ü™·æ}¢Ñíºc[DtÁM —?›ÐMr«è,O>ŸøÌñJ~àtÐ.ìâ +ÿ]ŸTf ZñÆu;/hƒÕéb{Ò´d›mY\òý¶GòZÓ ?s«zœH.¥;Jøzœ½ÈVãÇk06Ð(ê#›•­øVL[×ÉÉ®%`©Æ%v§?$ýuøK‚ÂLp´nß6^¢®ÓãÈ™úàTiuÜ“ÿÞÂ-^Á¨ëÍîžÁ¥³kS Ø+þøÇïpðcrO˜—? 9Æüo$“øÎ#NÒB0¹2’²ò¡ Å¹™góûЭYšõîZ¶ÔKx ¥P/õÌ9x3P>®ywhk í 8ÞUø¶ìóõ}š–<ïó/‡z¤øŠ7n¾¸_¯,ÓþôyjuÓ:Õ{PVpxdí¼Oh(ެž½SH8áDŠí­vtàŒÕ3°:_o<ÿÜ†Ê _=¿,æµé Åíïff@X¼ÚlþEÒo7Þ.Möu·OEDÔ—´Â¬â3-ó>²H.É\QzºwãªòóŸ1k.¬#< Ì™¼n"·2×îPø5±E!Z}â~ñ½éÚ¥$—üÑeLøNiˆ‡æsPuäSˆÎ F§Lbi“œ“¶-v`¨šÕ¿(QÂSÈ^Ó=,’ŸÕ ßéý€ðÀøwÙ;à·/Lê¹óÜxl«.[Eר"Ü gû‰Ù 7ß~Ôu3h>?©áM‘ ©þÞµâhs–ç)ù>M]_ìØ/òý“7¤óÉLbÝ0 w]6/rÝN/Ð}³?8´€!°Yîî;0ÞË·Øg¶ƒiùþÞ[sâ7+}c¾ŒßkLI®¿Î·²w€ëé­ÁÜw¼Ï×Ý|O¢‹k•,^A°o¤š!êÁ‹˵S!p ÿÏe¿#øÅæ-rày××þâÁylÓ?Îßfû“}³Éùþ÷©£Êø)ºªŽ4Ýt'}8q}]EŠ!ê. ¶iÖCY“ñ˹v†(8|uPÇIY¶1}ZŽ U¿^ü[Û1$ï2»ú¬-iVs²ž†Ê#÷mâN›”m™·ß¼l5GÏjš£sòwïC©# µßÒ¡Ù~k8þpj¸‹=V¦¯$ýRÍ%øçI'›Bw2„Íßê³HÿØe®§¬’KòÁƒßšIOMs”9@t¥ö|kÐt²Î=íÝk ¹Äj‘å<²®¿Xùåžà䵓üµ‰}(ÇWzNôä²/Ç4N’ù0ô¸%9Îø”­“³Ò'´ ð'ç–ú‰~õ{ÙÂí_¦îÒøR7“üc¼]܇ü¾ð'Z…-% ´³L´å ´Wœù ÷.øå®üCû<Üσ^±¨ o\ü‚ÍÖêê.NXç)Ÿƒ eóžÞ˜nü\§|S!ù°+§³‚ÞËIi¯NƒóÒæÌǤ§ÿx¦Ô" Ú…ÊÚE‘¥èºjsþ¢é$4뛵ϻ‹Zª’Rªþ‹Ò<%σO‘Ág£:·ŽäkÃ, +$ ìTlº‘¤êçU]VˆÔ:;?ù¤!WÞô[ŠþE”Ɔ3h$·5˜Ÿ™sq®.:Ú'o‘lì'œdè¥zl[rCDýLð¦/ › ÈAwÍ÷5jîXšYV !;{ié'P– ¾0!º?x\Sl9¨ì]Zô@’o=î„æ½¡¿wOo'¹U¨[>ÇœÌۢėÆU^«Ø‡â9;2hbŠRÓ©‰Ïó9Ú÷ÿÆe26N½L8µ&N8‰ˆ,¸¿‹p¤—™Nú//nÀò8ñ¡SáæþJPïÒ·_žKxÛÜ>h>0ñ|Yë­î)þàÒ\žì7½µù`#XüýAµœ/`˜õ-ÿ’V ÚíésŒß¡÷îÍ·¡iëЫzys’FzW8,Ôq{€^» ³œ)¯Ð›m¹r¥Oh+¤ÊʼnõmŸn°ô]G˜ÊÿRÛõüuï¦>óÿæ™(®Ç°Ì.Î*?Yöþ€åŸ=~sE!âá¤DpcÄvëÎs¯é—™ßOÒßE%ÌûÌ ð^ ]ò»‚ÊÏCozˆ®DŠ;/º[þ°¥·çQðbÙFžºàD¶n}sí9˜M=†]‹A³úÚo¼]ÚÏnþvš†¦.}Õ#²@íÝYnì|Pò÷_j{Á5äE]Ññw݆ôËþ³ N#)¯•S óV¬AÊŽEeŸçPÈ‘+\2³W ¥2[WTk/Cƒ¨Çäª+¥èˆX#’OþþzG·¥¾a`ËÌI<¼ð;x‹ííÓí!˜ó8ÂͅÐè¤ûF‘½þ¶SŒö"}ø¸ùÖ {r‡™•X™§‚Ê¿̧‚j‘û-ýv1É%ón†îE1^¾O8ô*,*”Ÿà$rQÁ†‰}(AjY}óÆí‰þó|8é#ñ™ñE±Ìâ?²ÒÓlk'M¹Ÿ}ÝÙT¤Cô)8¸yÅP? òæÌõ!×þwÉKF¥Â|Ž<„·…w®y›@ #æå¶n¸e…N£#Q`1”f¯Ú= EÑ»x{ ´Õœ)zV)èUq)“no@Où¬Ï §E­ò Œ½JÓEÔ’÷¢7ફÁ/¢?r‹ ·ÎóíSW+cæÐ÷vër­CÄä¼éÒ§×f| ‘3ðØ/·)­`]7zÒ}Èì‡nÝüžNÐf=~Q¸ùç¨÷6ðرó?IÝ£§øÜ1‡àYÅËçŸ èéÙ¨»F‚Ìñc½²W!˜e[6ù3ÑŸ‚ÐOêÀIK2$½¾{õÅ9)± }ëË*ÓE×Tù;æ«· éù¯cƒî{Q»êÍ’ückQ²mÛ®¿çe;ŠÄÐØH|5\N©#ñë K+°ª-¾£Éû§6ÖýIÆ7‘¿²»Ÿú¢Äuyõc¢õ±yEÿµ£ã(c§òÒ1ÐòÖ~^ù„ ö¬§;»ÕÀ[ahùû ÑÃeZSâD¯B¸ï°^â ’['uí¹uŠôÐSs~I-$úñ>é¹~è"PÅc× ä@µë'-”$p¶í:}èÉ%öÛã??ùí½&`ÓFÂÁï%“S'ž/æ†ÝÝ?ñ¹[mÊËIOÉ ­H鞘˗( ‰oý[Á‹ þ4:õá‚ô>‰˹a¢3‚[ʊ4/©´“» êS¤§¼]8¨=ÖáC5ó 1m¨¶¦&"Üž¨§¡ÕÇÁâvý ɽ†xÈ>¦ÞAôx„¿½ÿ ==þ9l¹ôøÙÄm~0ˆž,;ǹè´JäD‡¥®M~cCtŸ9h™£÷:€îª3Ò`¨yï®Ócà€ï½³`–½»d¼sX ݯ×sÀŽ«¿§˜’ NŽZÞüp»þtõ7÷wO×7= ðÒ´¯•Ó!xgþêÝO6ý GyǩԌû–_®‚`…®žªù ðÚ7m©+4§²™>š &¥y‘}µ ´ã÷s§ß'Ž\çöŒ¨9Ë‘¦o2¹Úµ UŽ;¿¾ÐÇ3¯wC/‘ä29z÷¼ÍÈê©Z‰ïE»¯ÝPÿŠzÓå‘9èÈññNíCÑn)I¢'’SŸÕÆßQ×R¥ÿüÁê %6m:„Gíªâˆ.LsücU¥êÜýË4ç+¤çl<÷ô<Ñ…²Ÿ –,"¹¶krsÜã[ÄÖ\“³"ù¢?¡gj-ɳC§.gMpòÔ4üîÄ>”à-SÝ&ž#ýqõ%чñ7N–ûRÖÉiN ´þ³ |ê,=ÊœL^_Ó›¹­ŽøØþÞûkÝâíó~ì *ÞÉeRáÏbùüU,]CNŸZÚ¨>'(RÇÜ1/ÚçÀµÞª™<ô1ƒ¾“$z. Sœ£'Ý€£¹Õ=§%ï÷ŒíCÏÉ}§·ÜCÏXðЍשè}$ÕÛ[ š¶…ÉŽ²ë ±ëVd„Ž‚þ1올ñW–kÃó$0·\9|L$¬¹wÇ^•בß÷ö³Fɱ}Ýonme€3ø¨,£¬<ñŸ‡þ öõ;‹ÄìÀ²>~‚ø£»÷T€pR;{r'á…ž¸ôxU.ÛB¶§÷›WÿTn8ìysYÍ`‰¥>tuX š3ã¤lÎtrUÏž&£ æÂ{ŸQ“@qŽ¬ÙŠïëwÐ_Dý 3þ)©6‡¹Ç=A¤«5]]Wðyö÷›Æû¹H|Ú³tãµ¥È¤ï µìÂ÷y.GV÷ Žõ¨Ø¹¾ív%;]•Í»>nï1°FÖür°¬ouˆvÅÎíh‰Ì’ zr"ýÅ,n(¨9ËJš_i€ºR1ß=²~q¿nò%ë[u\6y#É=ç…ý&ëÌïÈ3õK&ùµÕ|ÛWcPÚáWu'îÿ MÆý ßá?8YMta¼±sW÷8™•S§=#S7øˆÆÄ~¥EiŠÄOFž8×kÔ^~ó’ø˜âʳªçIï~¤‘äéDñ Æ#PGîÕ)ý„0êÁÐuÿ'X–Ê.¼. þy‚[}Fìy­q}Í`H¬uò–/Co…ðöúgU艳˸^ž“ösôŠÑóªòô°…%zç/I2HyŽÞ ùRÛdÐÎݾ¸äÚ{Ð×ÉiÄÚû‚>â[a¨©Fi¨šß ̰ç÷í "Áº&ýE×oìC»ïdùc¨7øPå¸:Uo¶–·þ­çVð5Ööm›MüqvùÕ=ÖdÄ'¸]‚p¦@}qôK†Ê^ðdB`ŧ?ÉûþA¯øé6p§tîY¯æ ÖRÿ‹5¾ænãazNÖþ¿oßYï!LÜT‚šÇÖ7äóx(n §ïé€ÅÓù¿Ó‘òvÆ«vã…:b¥þâââ·2ÅvŸCBéA’­öÈèüCh°P|zQ¡§Ü~ÔÝÊ/È?õíº"™÷;‰ÏMúç¹F,z‰Ö:«sà©6¦û.|Áú¢ÔÝVÅ:é¾9K|aþÆþg²þ7GDî¼ì•0ôñM…ôœ§>´*€¢=”úC¦ÐJMóÍO’_»Þ>Aôe˜qîÅî N\æž›Øg/põ¢%ÙTµÑ€p7õïLÏ 2b7ÌqŸxÞØ±Äé(á䑸)òú‡gJKßNäóÅ\Â]Ç.›+»÷‚J¹CÅ|#}Ù.~ÅÔ›Ó L½rþàU·«RsÒÕÍàÜ,Äï `ëß_œ÷ Œeö_bV\BoGô4éÍèùfè²RÚ=fµ¥ ç»¼z¬Ñk‘Ó˜·r'hbÒ™R'û@+fÕÆgƒþ4p{—ÿ0NÚ}^?Gæ¦úe>OÁšYrê‰|,X,˱¹Q`ç}Xy~O%8oBÌÖTHëñ·;n¼sî™Ó¾å››‘=›ˆ?öÞÐì·ƒ ¤UCÌ” ¡ÂZJ™„RãY´–ó\ŒJZÛ³|­ÿ’¦l­w%Wî¨ùK° #w(n-8öø{q6ºæªÙuÜÕBÓ&µ–ìxÔ¸¹»,TJEñËÖŽgîš«3±?¶åã‘Ï{Åþ»ýs5™&ÎGGNn)†9kNR½YoI^¦u;„°Aõ½û¬5HŽ×ÙÎyÕ>êëRÑÍ$/½8ѹü<„… ´kE•!ðM‘$}€ç8ÝGrÞW° $ÆZõÀ0Ý¥ëÚ‘Å»>Æ¡‡U4/½=:+Ùó½Ð;+dË_“NôƾÛÀyFüßùcauVèo”ÀVêc=ƒñõjaØ,0³ºEâÜÀzbðÖöïe°O¾HZgPŽNøn¾$ÉÑ’%«”[¾‚Ûá6¶0%x‰þ3 Á¿;'Úµß Ãë¯k²^Cкªz­ª"„êÅˬÓC¸Dl÷l‰ÿÏ^ ð.VeÛ”€»ïELD Xg¦»\ß ZVŒVѵ£Rá×ô}h2Ý_dŽ™¨¹~|sRK ŠÏeÎp0¢á›üë*›OÁH¾/u\nÚYÄŸZ<µG1ûÞŸÚ.¼‚/Ö¦høâ+·]òø¤í(šzâùfþsÔ¾x=¤=œ¶ž#ãÓÐ;¬Ã›Nr?+JmøÑßðf,18âN8_·E³cõ)Ò7¶(˜±@-ýãReKrŠ×ÅÒû§IùºˆvΞôɺ/OÞÅàL~ÚIÖ³`“Ó&ÂÑïÇ¢õçO‘v3Wö  ¯sL]3±e~xn ™mÎYì‰ÿ_ð¥Ú£{B_I+>q „[÷tÙXµo¶=Xô‚ý²ð¦à»M?õG®ûãÀ¡`e¯œI8aYßÙ#“‹.ßÚ'z_˜hº`í¼v-j¼T/'‡¢Øf0aí™È.)HÑ\dÕ5ƒVŸçÞVA«Ÿ¸ÌÛÔ4‚Ïgƒu?{ÝDÚ˜vä!ƒtVfžë†ZÅ=¹ËhíhÍk™¼½ßœ(ƒYwÀò¬át½:îŸb VÙ'ï›çAôd<ð·!ñ‹eÛdo™ƒòfÚ©ñ‚Ê8røV?é5MU›ïÒˆ^°÷½uo%YÏ,Æü¯„Ÿ!¬>T^N8¹_ç¶nd‚ÿ½’ÏcPÝób&ö¡Ì?FM%3ùR˜ì„®½¾µ¶–p>£â1áblò´Äw?'÷¦w–ù\<ùº]N4ÉAÕí‚ rÝ“²%=úJ\Þ¼‹$ŸtÚj¬àAkí¡^êî/IšÚ`7Ó‡¥-üÁ¨vÎÑŸ)FôZ“>Ã9½/·R}>¢èõá¿éÖ.@ïÇX»AKØ&Ì6qýnÛä!é5¶ù•MyËI^M£kÓ%Àš?[ª© –`Ý î”q°ÓS/—ù ŽûjÍ:“eàêr}ÛwpÀín[Ó7Þ[÷ùðMüÛÂP¿¿/A[ù~™»-$5 ”4»Xì*¡ÅȇGY Üø=Oø)ûyì™k5ø‘™wFæÐÁýbšÌ˜ö¬êâcßj¯‚>Ÿ/y%"]MŠ·ôúÑq{îœÂè VM°úQƒb»·R¾ïCö«ícRŽmHêøzÓû³>b[Ö­{ºÑ—ó6*68#~s­o…Ùd¤Í3鲾у‚˜Š;{’<½K#EïZuÎs޲Hÿ“Ȉ ½ÖÁ0ßÌ¢ïàö^Nú>íKÓ6®L6†Ðå©3· ”ÒãÕ£m |Ÿ/n ;F®çùý³õ,IÿØÙrÕO‡ôá‹õSþ#¹¤ÿi{Ñ}ÒO†šÝ¥jIn)Ú7á+Ãô¿w'ö;ö…[Oì‡ïLÖN˜¸_œÆïi&Ü;ŒöÍ!}û_üþ§7„½çH¯ùS¿ÐS›äæþA ^$i¤÷JÊŸ±lä'yÝ­Ö¨“Árû¯—o)… ú»”îa ðº%vÇ,yÎܦk™w>€©´üøÆ!?Ð'Í3Ë×´Mv.ïñ¿`Ðæ<ž+¨äƒö<0[‹=úÁƺBâ3kŸ'ǘms¦Ìâ¿\0ùáTÊSÁ*¨T«™;ì'ú²µ‘áà̾y´1¸³}TI^åæmñœ9±oÛ»1·t/øS§nRQþ›"ϤƒÄO47,^Or¾àëÜêÐ×ë!\n/bò³Â3÷|Ùu“O„#9iöµv_ï[òr¢'ìíQkæ=còユ] (è\lÝ€îEâó#hb¶rÍTP“ŰjÚëâ¿w ûQ«¬óÚH$ÅÆïŒ³mGìÎý÷.EmBÔ—ËÕi‡·TEjŒT=Ë]mµP0imf;57•„–(Ë-FÖÿ¡W?ÈÃݪ,UÉÕë­à~wÌâ»A {rnb“„§N+\¤›N”7–%‹‚ºð'ÔŸä‘lG5‘{V Zo˜}Ž(®.Í!þñkÏíg¶Ä/†mð2ƒôà¿û ½$_ÿÙø¦wâÿ´ý´p1žxÞ«[oùÔ ßÉÔßqSœÌ3+52ú'ÙÍÇð—p²£¦°šü|daB^Ä 9®‘I¡{V K‰®v£«ó©Zñ-8ñ{t?÷ýú·AßõÁÛKÑ»ÀëLÏÙ'ÿü³Ýкðüúq·¿× ¸”,œ:Øœg÷ÜUá iímH5„¾S,%Ÿ*Cèé_^õÂÙ‡$º ÔXôƒô‹HwÁå°÷ۨ빂þÒ÷Zût[®ˆ9"|ƒæ¦½ötG@¹.Bí Š#º‹D×ýCvøs·I¯z‘xx›@V1ͳx5áˆ÷íÕ^Ù‹Øù×Ú© å´Ã­ä[ñÈ?|iÏZûDT»®Û%Û¡‹¹+ïÕD¿¡gÈ7%?ö˜¿äæ?^#nTýš¨­äüx>ÙÚ‡„ËèäƒRŒùäMòé=ºâð+²>ßvê%ºÑæ(æ®GÖ‘§!®:—äÎ_ÌBÛ{F„“êk‹ç=øû~ÛzzÆ'÷φL<—Ñ/²JYŸÌžDÙeûî¿9Æ"¹uüâ$qâWÿ*>†³ÈqÇ[ÊDFl‡6–’<ô«¹ÒtÉ-Œ‚ÆßÉ$OÄ_¹WŽœÏ­úXK’§'Óvêpàß7W¿càkšÞ;ÎÛCr_d€ÉqÐ9úü¢<_Ò—é»§øÎÏÝÕº5_ñ=SÅÏߥÒÀ¨¿j¯tz˜ñ­•­4Àzàú«ÉþØGkBcÛ^‚£²Uå¬{8=+‹ö/í÷ñŒáíÛà­ËÙ$™ÒÞ÷y{LÖlß|ô±7-üš Ö'­ 0Þ¹ÜØz)ôËD§ç_ ƒ©„gµÏ&ÌðÝhÄ[¹Z_?Ýú¤û7„›$þøçB 7mÂíWÀ;SWò§ó0ØoÞîršt t¦| O1Ý/"—üCsˆJ‡£ëÔ®ìãm¼îbÚÔP/gWd—Žñfj…#é¿ Ý\Äøü£OZVŽ—ë:ëh!Fõk¶§ƒ7’__ ˆÏ)D^ÊÕlý“KPåfpXzê4߉ál´oCOüN›¦þ03žz¾×—çµkåÂÿAQ“„Ö[¥’ë| ‚×ò=ɺ„*)¦­%œ”nåÕ.3L8©RËGúð©C™câ}ËÅ„NÅ¢«Ýœ4<ú9:ÁIÄï°¨‰}(òÕÿWãyέ=ÿ?çúýsÆ%„“Ö’BÉ^‰Ë@+pò^æ—v9®ÓÓEcã$/O6$¹ºl™™¶ñ{Pû2„„7i48O‚PÎÍÇïö-ð'º}mɇ{kgâ¶°‹mˆrQ#¸ò–©Ç ÐÇn+¾%ùCkÛ?ׇc`4øùÕ­» æ›Âžß>3Áº>ã~‚é/°÷ ß{tù¥'B¤î€SŸRÑ~Ü»Á®¹.qà©<ÑW‘/}hÊkóð·úèû¼~öÆ×VÒkÖ\Ÿ¶x&ÏC»ÖC0xeʈÈ’C´>.[–áÓ%A½{!Ì{7zoÎKsäMΚ<ëp…v‚SÁU«h“…“ÀKû}Ãa÷"°‡_ù‡¿—c˯1+#tÓÏ?ÓŸý-Óce¼6 öR¼öÁ óø®Å6=òQßfM ›½û5’žïÞs¿¿1æSÎþ¸¸Rß=mÍǧÝVíÞï‘ÔéÑ»¾¢yrZ“ÞÎD¥_MåÅñhbeYÞÞú=ö¸ 1L®7Å—ïºˆïØµ›Qlð»»ïçUA¸ßi8Íë!¨…ôùOÒšI>É©«²‰p"xÚT©K8ùo^̾ P|Ó¤È÷ÛÉzÖ°›£'úðöO®$÷ŽªžûS÷mWY½o?Hˆ€ 4A¥í9﹊¢`AŠ ÂÔHïE HG)Ò{A)!4¥¤…ÞkèB ¤œ‚T %ï:¿ñºçõ×^#¼GÎ~εÖOÖ]«{?gÍ\bµÅþ;âPÖZuÕ¥Fʮ˽1Ò•»×;ö¬‘ŸïwПtÏ·ŸOýÑÝuÏÍŸ]pæÌqWvçäõå÷ú¿®Cï¿°ñIÝù›ºD{ÞUo”á‡ÿ:¹}ã—eøÔÕ~½â›”áÅB~çô2ôÝ+O9bóeËÀ±¬uÉ„‡Êô¸á–'®|¢{þûâÿ\íŠòÖ÷=Á7(S&.¿óÒsü¡¼5ÛMÛ=ú§ÙÊ[ã/ÿhí1ï”·÷ØãüÛ¯[¦®ùÚWŸq`™6ߪ+­;|Z™öà;ÓüO—é~þûCöíž“—¼òû§œúã2cÂÒ7.±ëe rÛeÇoW&LþÛl—R¿¹üwç»`±2xÄ;÷ß2¬2øêïÏ>aŽ^²½®Õ=OxÕUǽ9¦ Ýðßo\úÂÊÐk_œ0êˆóËÐä~:pÄeèÄwºfÌ×Êà„Ûo¾ìàu»ûè“·m|IÝÝG?>oã×*S.üé_¶ÿÇuåµÕ_¼x‡çg•çO3ýCK–ÇZù»Ç¼>³ÜwæKÝñó Ê­c¼Î[ïlP&\{ä”±ž^.×®§\0ÇËÅÇÝ7ë“z¡ré~ú‹¡ Ë„å·YäÊ=(·ïù‡-tGyøœë®úÚÒó—g7Øl¡§þ¼Yymôï¶é å­5O½aõÓ-ÓÛG¾t«§ËÀCÕ=óßõÇ2ô³oõKK^S†½äÝØ=G1æϯÝ}.¹õÖï N8®;'>>ãš®7—Ž^ü 'Ëð+öÊÝ}äãû&_ñÖ˜îœüfÙ ¿6âgnsÀÚ#~òÞs+Ͻe÷:åÊ''uݘußæÄ3»ósýéÿÞ©.ƒïÍ½ÖÆ§ l{þ·7_m¡2íþy'~a¯]Ë[ Ÿ¼ý™®R^»à¸Ñ»Ü¶qya嘵â¯_-Oôîxn£W.÷å…¯Žš³Ü:ý‘Ó~9yz™ðæ.Yû×)—÷û|í•w+WËLúpžyÊ%—9lËÇ_.×ìóþ_7½ç”rÛÝWùôÏ)]óæ:ç·å™k»v“3Y^½kõM.œ¼y™2ëƒ+žÛw®2}þ7›Mß9¬û¾Øç€ËÏîž¿W?þƒW6íîÿ ùÃwtçâ°½·úúm#ç¤3Ç stçä…sãì›»s2eÒŸWß·{?wžkÏ×»ûÏdzf½´fw¿ùôˆ;G½näœ\túƒ#ÿ]çý²Æ #^iÊéSG\õ—¼¼}÷~Ï:vË3Gy÷:Ûö{ló÷îœ<÷ñ]Mw.?Ùì¾_^|íÈ߯±à‰·<Ú=/¯yå Ûž^†×BçÎìþý¿ÏuÐŇR†WþÏU§”®ã›nsÅ‚;Ü^^¹øÅgÊleúcë~¾Ê\7”©÷¯zÝûOo^Þ>aÊ Û¿ñ“òöº/_;f‰¥ËÛ—œ}Þ‘“Æ•©üûœs/]®L›ç•ÿü÷Âí»óQ½·ÐN£Ëô}w{ï¬ÖêÎÇ‚«7·ÞÙÞª'¸aw>Þyí]Î.W~tÝÆSn+ƒßXíØë¯Ü¡ þñ²O_9ï›eð‰cNÛõô/—¡%ß[᾿Lèžó>{ûØENíž?Ý÷Æõ×,CO{þ¦¶»¯Žzü³é ì]†—\ûн>˜Ð½îvÇ.×yôŸ»s08WÙguïç_ÿ}W\ÐÝ/Vºs¶ýF~ÞôeóݱÇH?f¾1n¹ÿ畆˜ãW#åË‹¾4òs þö±3»nÖI÷WŽüyÊ—ÿÅ©ÝçîÏÞÝp©}©;''ž±þ¶?,Ãnwü3Õ2ÝsКzã¸õÊð“¿yï‚›ºóyþ…‹5Ûu_ïú–Gþý×CËÐ.“/=¦ûÜ3÷w'λïGÝýá¬ÑKϳS™ö³õZùµîóÂ÷OûhÝ7ç/SGÏ6êWç?R¦î·Õ›Ëþ¾{ŽY|þU•i/{êôßí^¦°ñz͘{ËŒ%ªïqÑËŒkÊØ³þ~ah>=üÝ“¯(W¿²À„Í»ó°Äë´ÁseðO§œ1îô»óqÐĭο³ -qîþ;ÜÒ=Ÿnõ¥ßÜدÊÐÙwí³Ì1ÝsÉ£g¿°á|×—¡Ož8ù‡ÿížË—ùùO¾;éÞ2ü½¿¬ü£kº¯Ó÷'|ãÔ½FþþÞqãî|úª24v½ƒŸ\—þËëy¶L¿}×¹ÚòåíöÝõ„«/-¯ŸsÝù_9uVyñêù¿¾à˳—'uË)S¾9¹<ð£So\¼{^½}±+¶üÒ±³—k÷?ì³ðEåò½ìô¾tMwû ëmÓ}=ÆïyèÞã¾¹y¹º·Ïþ[žpO¹å°U'}e¿–Þžô½¡­‡ÊÓ·sotë©åÕ%9{ñ÷&—){í3þÅEË´«fµù1w–?}°áù;ž\†–Ùóñ9Ûõ®¯ž½þ »”áƒVŸÞõ/Ãw¸hÉk»÷÷¥½6Ýë;ÝóÄà|»ÿø¥îsÐ7Œzûîî¹cæ†K_ðãîü|zß¿6?ÿûÝûÿÉR“–øÉˆCÙsÎûFþÿ^ÓV˜c½î}žõ豓v{¥{=ý?«µÃÝë×~r€ÒÝæ9àæmÖîÎɯŽ9çöîœ<}þÂO¬Óu+&žüØgeøé÷sG÷¼2nþ¯í[.Ãk®´ÏmÃO–¡ƒ\çú_,T{ËŽÞçÒˌ݆6Y¸»_N»ÿ¶ÖÚÿ¥2uê—·ò¾w”©Ï¼¶ã‡ïX¦­ñè“ÖŸR¦½´ôw?½fwŸúòÜ×½4w™ñÍo¼rñi[—ÿþÞŽ·ÏÚª ¬~Þ¾ËÝÓ}]®[ëGß¿ï”î}{ø± ß{¡ b;~vôUeð©?ó³ÕÎëúñÔ\§ÏüGw>Úç–Ù¿;gÝôÑ…Õ/ÊÐÃkïõü'ë–¡ÿž?jîŻﻥYi§«»ßïßþí/N<£ o2~9¾²yÞô²‰ºåÈ®Ÿï{ÆÍÝçýËÏ=jEÿ¨ÛYpÎ ß­ÌøÙa×®zÿËÛ÷ºr¹ÎYÞ¨˜´twŸéÂ-÷®w¸¦<ùì>št`׃9ϽãM‹•Û½ñ6§ÍW®¼Ê²8o¹ü†KÆ,wè>eÜyo”•v*¿¹ËÞ-0º\õ·ÙÜoì–eâØñ«î3éíòÀÜïŸ2Û•§¦úëï¶—É'/ºÎ¶/m]¦|çóåö\ð¿eÚA«~ò¯,[m´î ·¯Ø}ŽŸóª¿© }~Õ¯¶ü¸;÷¼;¸îûÝ÷ÁÍ£Zÿ¸î9á¥ÙÇ-3òóf.»÷Guçäþå¾|Awÿ™¹ã÷xäéîœLþá¢÷Žœ‡O~­gß9'C?Ù}ä>3Ýg.sj÷úØãs<2r:ëåß¿=â!¿9¸ÆÝsóçËû½ãŽîÎÉû÷<Â*#?7çØ/ýpî<.9üúO»çâg·ºføˆ®#—®sDõãî9wÝ5Þ]g÷)eèÔåÎú†ÍU½ÿ‡S®¼¾Ì¸éñ‹>~úî2ýg‹ßÙ¼L;ùAí}Ù/Ë´Óþãüº¾L›5ÿè³ö;¾L?å•ÏüóÜ2ã;Îzü¹MËŒ‰¿œç–o_Õ}~¹f­-yª Ü8iÊÝš» .÷oørx°žmÏ‘?ÛoÞ­Ÿï¾/>ýÏšcþþ‡‘srÒ‡S~?âP¶{tï;FŠNùyÔ³žøtïuGÜÒ¹'ݾü·º×•½|ÿîsÒçõ±>û£îß_në'÷_äï¡<òž·vïÎÉgg.>íì2üüšã/øòŽeøŸ›mû wÏC¿üü²ñ|« ]ôŸµºü¦2xè’Ÿî:v§2ðŇ7ø©–éwÏÚ}ßOÿY¦ûé?ÿÛÂ{”é?;´Å¬ß–éWÏù{.=¾Ìh‡žÜv©ÑeÆ=c.XbÆneàg›ÿö´]»ç‚Ûv}ã?  ®8¸ÒÌóß)ƒGoóþصºóñâußYa“E»çÓó]}÷Üehûùúö•¡s–šø£-Þìî/_9wï×ëúqó¿9¤{>_búël¹\w>VßrùëÎ,ÿ™g§<¿sÞcŽ“.{°ë硱ɗŽîúyøé-¸\÷ý²ëi߽겻çÂ3öýÁ7Î)C¾Ó|g>ûQØúëGͱTwÞí¯sœðÚœåÍË?þ«÷¿U&Ïùþ’7_qWyzŸ³6š5éòÐ{™kçgÊ'_õ±æÁrÝôùw\rާËÇýì¶Å{˸“ŸwöU·)ãÞûùÂÛüyßrå¼G,çl[nÚiÃßžsüørßof»{ð”SË“×ýî•7ÿ³qy¥:tâ9[|\Þ<å¸eÇÎüW™¶à)¯¿ôâe`©¾¶ø_n/ƒÃÇÍqÒJW–¡Á7yi‡®óX|ßÝ?¶ _å…‹,Õ½Ï/\ýÜV7uÏ§Ž¾n׫ºsrÛJß?¯ûü;óÙ·8©ûý~úùÊ—|qäç|r·6»läœ<ýæR#ŸVÜ|ýFÊüc·ê^/œçÁîû`xVõàŸvïî3Ÿ¯ôŽ v=ùt£IÿÏ#üwžI“–Þ´ =±ÒÁG-ØÏ/oºãn]W®n¯zâ¿Ý똗Xó¨'ÊÐõ¾ÿ¿¾ºu¼d¶-ËÙ–w9í® f–?\õŒos¨Lô/ã—Ýñkeúà´¿-¼ìŒ2ãÿ6þËN_Ù®Ìxr‹Nxí2°ÑºÏsÁßËÀ½Í*?œTW½ü?Ýóù2xžï­sïÝçÛ¸kö;S†¾=å±Oèî';±âìŸÝX†Î_`÷UŽö2ôØÞC;=Þݯgž2°Õ[su÷—•NZúè‘óñáwÌÞC7|íÉî÷³ç7ϸú¯]øç×îV÷ë§]þï5®ìžÛÏÜcÇ“ÿÞÝW?òäWÞê~Ÿ?Xâ‘Ø³ûÜùç#¯¼`ïmËÀ´í&,{ØeeÚ‡_øè;OïY¦µù5GiÑòêš[?ñ•8©Ø=·üð®kŽœ­;'ãŸ>p®ÍFÎÉ^·<ÔÏæÚÅçyþøäÃyž¸~Ĭyïiï8”…Þ½ÓˆCù┟<нŽßh±?xê5æÕ3Ýsëç[´íùkuçäO+¬ñáÈÏWÚéïßÚ}~>ç[»MïÎëKw_7þ®çËðµïn1ù¸•Êð¶‡=²ü%Ÿ”¡û‡ÿpÓûË࣠lrÆr{–sV_ôÒÕÏêžCO½fÏ}n)3¶Úþ±÷.ë>·}Ã¥ƒ»RfÌ(O5Ï,_¶øÖ³-÷›2ðèÍ»O>ÎË`µîuW¯±lçÊ;|«¼µÏ¡Ën9ÏVåµoÞ®ò½éåÙþàá”GÇŸ»ÛÂë.VîšÃϹ«9§\¿ÅÏ¿R¿;£üóÑ&rwÏ-g0px÷½zÒ.WNèÎÏë¿Ýw³·Ê G~}‡çýW¹çöêäS9«çóy]oKâÛ-‰o·$¾Ý’øvKâÛ-‰o·$¾Ý’øvKâÛ-‰o·$¾Ý’øvKâÛ-‰o·$¾Ý’øvKâÛ-‰o·$¾Ý’øv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛøv ¾ˆoâÛáÿ}ûŸbæìÑîî2yã>NaøõÄ-Š8K¯]!¢3vpö5­ûO/äÜt |âù²¹°§µº[—q§tr¥«eîq™œ®%ãľ ˆëäÞÉ9™K8 sí{T}à†Š¼‡¯½ZƒãË?é¶lZŒòÉ[çÌøuvM柷-–uÛ§¯Eöv±¡âº\<îãü}ºqEMïÁÓ®å¸ß^R·7¼UÈA·ŠÔܨÛsÑkþ×Û8‚~ìkÆ•cã1änsËìüÏxÐðÙ–^¥DŒËœye­y"žø>»´Ñç3^<8áÂÄ]?0Í3TkgôjÌÒ6¿y{·æî‹°ç1cX°×¨°î­9½wðÈ>å%_{x«ñiÁ9Gñe|±ÅõÜ®©™X6-Ù0a‘$V ,Ï™&/U_ïýçñ kÏe‡<ðš†MÝg÷Gl=­Ïïå _€?:­<÷¾ìÅW…÷k _âÀ‡Ò%Ω8’k{C̃ñ”mÎÄøŠ{ü<Ëø{ýš.®\Å,ú‡®Æï—+ps‘+ã­÷»Á»ÎÿjÕz,áÚY1QRÛ±oëxÓ ;bWÊ ¾›0 ¿´¨߯Æ”b—?ü«§?(™å¤…ÏR¶¾T­À‚Ô .&Æo=M =Ý„nŸ}ÉÏ ã·¤} äÃy]³:ô„;ó»qhî)3-~·÷ÿ×Å;Ù„aû#¤i>À¨0QUÕËoøÆvLNO”žLZ¿r^œ'hþ´õ¦á}?ç€\ÌÚ´ÂjLê.æíÓ÷Ѫ ÆåÑÞî…°„ÿðÂõÙ/ñÙÒPíÄW{‡%?Uà îïl³X¹zÕµíqõX-±!êm)ÖØºlÜ;îÖåŠ;©5›æ&Z;.XƒŸ÷Gy¯ÔÅo5ÞŠá×ños²¼¿ãŒë7/îÄ‘CJËx#[®ltE&tFd *ú°©í¹x ·ìyõ§Ô16îl듊ML8_æÑ9lb‚'Z6îÏb|¼®yq‡ð¯ÿ Óµgq°Î>ýF‰ ö\ž:úP¿§É•õKc‹²^ O\Öºi—X9`Ù‹¨“ýe±èÝ„«ÖË1» Éyø÷;¼\}ê¿"Ó0±ð:·©¨ÜººÎ{½ÜFÂ~ßíÆ“E_Gã¢f÷±/9‰OrÇw×ùsS„Æ–I~wâ'ÝKX˜Ç¹(Ùñtqã‚ÇEÉ_;½ƒKr˜îì?éwãÝ«´Oü¸ÇÑZj‡6sïn /oËË}ß<ý¾äÜntêŒ(áß?P¬XùÉ´ ¿QõMÁÑì]åhâÜa¿½x;μþRkµt.ýlô~î\1ì{°dÚ-t|Ó³Óªf!nÝ,kj4ðw+-ݼÂ}Wöľ½!‚Áã›~ð®Ùƒª=§È­ÃèqÊ-;ÕÞb‚u.ß¡u»ñ¤Ó½ƒI‡ð"ÄÉÏú² ¯6…ȺXˆY“ƒ§Þx}ó./7 ¬Ƈ‰;Æ[˜`©×3Eÿ£<øRXÛµHaVÔ(À]·±*·³×X£kf4tªéÚaí®Ûª÷Þa}\…ät>_lÔ®0Xº›ÇMl®Áϳ—œkmš†íËMão¸âÏWûäÆ6cßHr·ªÕ|ü³nš›ÒwMÆ»2öÎSLPóÕCg-6.³qÝ©ÝyL4*!=Oï›hü„i²‰ç¯½~‡M8dnãh¿„‰èýL4ÝË„ÞXmÞòoÿt‰ù¥®ÇÑ–xƒ³&ãïÝ/ïæØnÂná`+Ç ]øåùîÌM}/°Q?9a“¤ VÚOtÑ7œŠ¥s4ýj«‡1ïú/ïjL«ûþý礋xŠÏzH9-Ž)](ì9{{&ÖM+8‰›uwm,Ü~müˆømxSRMzq²§”›õ·4©C‡[é)ù¨íÊ5ngˆ¯k÷׳ÜÁg¼:±.‡¸‹“:~_ðâr?ê¾’: \™šHÓ};î“ù‘Èó;¹>>¿ ¯q_PHw¼ˆUú#”[É#n„zü-•GX´ª+Ïì:Λ^òÇ+L—ûO›lÿ±7<1XRγ ·ž8ÑV䊻‰¨Ô_ºŒûVWè’ÅÐê›a³7%áÁÃ[#pÉjŒ9Ü®ks1Ѽ'B[/O«U?Öëûˆ‹mWóÍ5ë-Ï/Ú'‰™õ'­Ò§ubž­ÌÉþW[ðá€E°[”>yü{~Ý|u’¼ÞŽX™ìp­ôo:Ö]¬t ÃzËî)9º×°ñÀ×¾;Røq•²}[è06÷ -|#ó[vè]ܯ­—䔿ÜÁvëõžIZ;±Kºö8Ù`¯³Ò½Y/phEj‚OË ÆãûbТ ܾêl·ŸÒé=ç‘›èÜ1áà»ílÒÆ÷>¯º3 —µ?6o6e§g7ßœnÅ&õÆ=Êÿu›‰KÅ>sÞ‚‰*n Üwj ø[ÜgÊx‹LN\‘®Áák‹º§V*a¯Hèלçåø­Y«Êâ›?6ßÛ³­OK߯gžçÏÅDœ[O-Äû%÷“ª#GðÆÊg_coij-céøñȲFž0»×¸ïÓú–úCÐ5ή)-Í—?Ù{éÉ—{œö²nÁñ‚¯9« ßäãFb8GyÑeKwq¾µY3÷¶ÜáÄ×”™¿¨â®q~ ý9\‘ó¿<—«¹šI[­ü¹o{Ãræêq£CÛBů^ÀI'jfXLUD}\*+‚f¡ìGroᜬÿþ ˆ¢Ýâö„†»q‘õŸGW®¢ëáú™{Lqw›ž•¼B4ú¯Ê60j™Šá&"ß¹#ñxX;Åû1þî,ž€9!˜ôôR\¶ï*<+*›·SP STs»·¥bZÅ ½¶!Ìâ«y8–芹CV¼öG«ñáNÕÉ™²fXÚdöÑü –-ñöGäZ¬:±…‹çÇÚ#k¶¼ÒÀÆ›o_4,õÀæGÝ»¸Øòó¶uäò@lÍO¼¼!: ¿Îq,ÞY Œmßl¢®ž‰ßÿ<=áwv­þnA² öøl>ã{Ô¶+lômKÆ1\6úH7ˆñ{­;P™ÈÆí|ô|¡››˜¾L|úÀ&±Àõ‰@X8“šþlÿ­§LÚãGaÐû«LúÚ‰b‰3˜TkQ•Hl0“œ·;Sp/«Mì;“‰l^óáÚ/&P š¶<øwÀ¬/oð·CÈk[³kصîÏÉ”Îøù|ºÚ:s¬S—>ôã¬:–M?ðCp*>r}ã±ëf‹‰óœãŒï¯Û–^yãåbÜ{ã0hJgÍãpÝ–Fú‹áõ¼«"' r“'ÝžÿI…["Ù0TÕ¹™sœ£ëýéúÅßñ\ãvîôì~èÿ{»Ý¥zc‰ÏGîùlY ¸ßÂ}Ôÿ8V¢<×+f5½ìƒ< ó”K¬BùèÒËû.,BƒºÙofN(Å_ÔŸ¿‰‹²ìy¶o,@‡mªþk" p˺èÂÜ_Sq×û 7g>OÇ}#Ù§þ–bx^à÷óç0º’9ËÌ5Âc{Çó§åã©(;Ÿ¶%Þx¡äL‹ 5^Yh2ûêËm˜þå¶ãCÙhÌzbìÔ‘þó,#§âCÑ™Ýv1X·dY¤x.–I¬[óĬªßïåsú)Ö]þ=¯ÛP ?ªYf:ºcË·ÖÉËŸ½Ç¯ ã:£Õbû‡yu‡4+ñ‡ü§UW _`ÇwÛ¿•_4°ëᇠµþرڨË_ {껓„7>ÂßþÓ>ÇÏ¿Š#‚«E-’{ï§¥½~9Lèõ]á²w lBä8ö¦6œIXßhH­`ÒÝÙA]G™ì mÑL.3†ûï¬ “ëÕØ¡ê7™É‰ ܹ¿(™ÉhXÛ¾ëa’ž/wuV1±c3‹5ë Ø8õÑô"ÏyŒO¥ã˜í”lúähðCb!þJ:ƒ¦n€_ „Mm\ˆ ½‹äu¬Wá›5Yþ/î8àcSñ KØI¼Ã¾òO˜{/;[ÿІj<7·X$ÚCÛ­×Ê•à[nvµ/®ÑÓÜx†³ìÍÓØuÒ’[9AV#¡Y–Ûå¥=:g“6w(óôaá×…\Ê®ç×§[›s÷͹ç¯js•9ÚÅSOr_KÌ —qjç˅߬ÃIæ?û’,P£3Ûnèµ1šZî¶¼ÿZ¿›üüF®?i¿Š%¢“£û¾dkôœÿöXG‹:úY·>ä0ùÂó“^â»ÄêDm†‰G¼W˜vÏÔo˜§å„—^d,,wÄ«ß3Ýô†Zñ¦ð7¦¨ŽÙ«ÎØÿ4ó=¤ ÷¿Â‡Ñï>Ëk«`éú«Ë²ýðUÄÍ©ËTþbUòÊëËr±®ªƒï²Ä\lÖ ]í«2—ˆ`ûµ;Ö{7ÂŽ¢ôèéÿÆn­½CϼÃð×Áš-Úã±ç”…|º ÃÞ¤­33æc_W–â‘Æ4˜½7HæáþÑS¹qçìSÆsimšyü&ðëR۵׫˜ˆÿ±ˆBÓ86Éç‰NnP“jPùl>í߈lÏ”¯­d '=øÔÇ”´ìÅ#‡˜ÒŽ)`üš)ºÖ×§gòSvÇ%x3ÙI{]ÿ·‡‚†>9È=a¢gg©»ÔÌî·F}‡b=ûJc¸LûToDÙ€~çZî_ö?¿¾¼(Ü«îtŸ-¸m€¥ò£˜'d½Ññ¥6^5Þñ¾KF “fÚȼnÂkL¥þÊŸÀÝ%K-]*;p}JTQqÁgŽÝxShÜ«Á­(šo>GóÍœh­W¸„ öWmµwýŒê6“¿‹¸Ç_õ£“S¹ú#›rÇ t¹nO^·`¹8éÿ((¿å6~ñ^¸w4‘?â7g¡ò„cO*ÑÆæö³À|\'$ºµ V·­Î¹³}>îu]ÙT¬‹¡ÏæðDîJÄèe 3ìÆ]ÃÄ[ëVMZ”gu% æ¾Â˶f_*sK0=ôÃ쯘µÎ5¯…'sNLÒáUÁ{ùÆ›Öìׯ"K©RI‡›XZÙ'(u_­hª!¾«ð•xˆÆu¬ó|œ}rú!l6Ž?ñ·8[»ùn˜}¿ÏÿÂ…]™…?Ÿ‹z“sÇž LñKë”°/oáêàüí¹Ãõ÷À ¸ÞuÅîÉFÌ{8 ÷B‡%ÎM; ñ Gv¤l»ûá?ƳhIfÛòµŒÿø9û¬46ÎÎóedðj&æqçʯµLòåH¬ÛÁßLöøÃbå§âLQ«áà£ÙæLylò Á¡oL5ïËgݘLMȬ mw S©khZ8)­v0µ+ægr5r¼"ë™TiÿÔyol™¸E£ó«˜ðŽI+wªíb<±óåðw¡…×ޣعÅ~ÀjC¶H8k=Á‹5šÚN¡¼™øì@XËN÷wx·¥3\é’2¦‹‰}߯wOŽ%m¼># # î¥Û£w÷Èn¾[qÓŒQ[‹ÍÀ-HÈ©=5-‹Û’4qû¡”…\¨Á‘Ϧî’Üi§ïîæ„sÙ}Æc NFs/»þË™þ­Œk±°öÐÀ lMo;›ßˆ.ÌqþôÕ¯¾jFóçîþ:ù çºéþ:xö!®ôþà:hº7G×\ˆrÀÝU£wcM1h’æXu¡ Fµ}Ü«| =࿜?:†g¥äbmñŠÐ”Oå7a†§è¦öÄ^Ì–ô}´ó¥Ÿ•y¹ ë´Âó¥°¸1êMÐ=^|:[ê—Ž–éFZ-’؇U -r¶ò"Ö]RçÙ™‡‹6•îÞj„­ £Eã(ã÷ÞS1ØýüB„\€#ö±ƒÎE<8p@¤«ÎãðÂöú=|qdÓ®e«O¾ÅÑŠœî3Uú8ÖêqB§@•ñÈ÷”Ø®’g¼s¥¢Ë4ÿ–ø3Ó*¦1¡æcÉ7%Ú˜èïƒßJ¤˜„]ÄøÅNW˜ÌÌÓË’$70ŸTi}s¦²ìë¼×çSŸi:Ìû0˜iK®½YëË4V­Zúyñ^¦ž±£ÁóMSZ¾ÿYìS¼ªs#“•PU9.ôŠI¸eÍPÛoÆDtør®0¾âÎÞR8´Éè[rv»VVí[…­Çé©þÀÚ¤ŸlŠKð%g›§üv<Ùó²9Y3úOêˆÌ?„gžf,J~u¹ø®»%ð}´Ì"LjÏ¡³gÀ¥?«vsËJŽX´œGÜô¦‡Óu¸ƒï§™Íã.5¤ÿvÈ>ÊÝ¿‘¸i¹Ä:®ªwΜ#êÀ};'¢à½yüœ|w¯Di­o§~›ð£Þ.ËÌò‡c8£;ß2ÿ];Ú,wn4~ƒë7©»'ZíCwùó‹ÜŽæ£ß͸ž+Có0bÏf?ƒß¹_Å3âµ4 Ï8Γ›2ý^ÎͪϖÁÚõw6¨ü»£ëMc³oá=û„Ië‹”v®Tø×WKù ηl{ÏYVhŒ¿„¯g¶ì 9UM")«bÝ„×üä{øqF¹yz³#¶z9~xT†ß/ùÌs—îÃ_ã;­²¯˜`¿%$l—È¡ðÒ½ÆËp4¶XWÅxã \ïÇöéþë÷ë×n`|ÇUs&ˆÜcüj»~ɪ3þ¼}ÜÓI—™@…Eì2ÿL¨³ûHWÐJ&règ»Eö&ÞvRO—w%“ ŸPïš*Âä KîåÌfÊ\š~Ú8=¦ÎÔÎ[»Ê4z£<ß 0ÍÁ’Ïâ瘖æ¥Æ–sLÓES¨º°œ©×\Ëü+ø„©88÷wÛÁäW–˜Œ2dRfEg~5v² •Ó$txã˜ÀñÝéýéøç÷áä÷vì‘ô–r;'‹_§›=ñÖž?—¼½˾ÿÙØ¨ð&ë«Ïñ•Å[of­5š+ŒçÂw=)74Åè>ÞÙÛ^¢ŸÍã9öAj¸eªLBç_]ÎAj{ìè÷ܽi}¾½åâÎ:-8™Â]«Òÿ²pD…{|ØÏþt­÷Þáâ©y]¸_eyšߢPK¥ëFE[Tr8¬‰¦‹ÆÿJ—@k¡¾Y"¸bD‘õJVáÁ{ñaBgÑ[óコû1tïõYÆc¦xÔó£‡ôƒµxÒ©øø”ß‚˜²<%oNÝ f85<ˆ-Á;‡GŸ¨ôÏÀûÙŽÞU%“°8ò—‡ÙÓƒøtæï°b|å¿qóµù¬àƒÙÖO¶øÖqR§©’ÖKyœ^ò?Ï|7¯É[õoI»µkâwéµ´9£Ø]3qO›Fö»îI“{R‡Ãáù¿Œðïóß…}!ÎŒoc37õÒ{&°çð—¹§™àà—š] LèÛàš]EÑLØÛØ$²Ø€ ÿäø"÷õÙµù»ÿý×?¼|ð‰‰%L¸­ÜÆ$Å]>î,í`2¯VÏãbŠó?8½çÍÔ$ß½›õˆi¼¾§ }_˜ÖŇë& ‡2í<É1g&2í=× S˜¶¨Å2“C2LÓ¡>ÀÌÇ…©õÎܘ±Ü‚) Ms<¶I‰‘Øúº‰o,Z²Ú÷>ÚZ®*˜Z‰c»š¿ÚúÅÞŒ Q{óB±}Ê ÃÁ°qq«ÚܦQ¬ðß¿'Ôq)¥ýliVƬҺ¹¯åð¢8·M±z6ÆXßê½´ý×ï0¸®Ž.mó×åÏÞÊm´ó¿é%Âí·4O]È%ÝQH±ËéçnŸìñ{.÷ÂkÌtÒR®E*ÃaÌá7¸óIŧÛ1(î.›u µGÿB+ºGzޏèaÕ£ùÏŽâ:ñž'?lGwåÇÇ<"qßÿˆ;=­xðÄØ™øÃS11(ðr«76LNÕŒÆæH÷݉®ZغÇ,øúÌ øíõhßâb]ì’¿a$| û%ÿ>ðøSˆÃ§ÜïoUc<.“ƒåšÒýá¯ç¾3¡$!CC][6^¶fǼïvLäK…ÇšœT&: àÇ&øÝ»\ÑnÉ&TD¹H˜M<Žp[Çž‰ïz©‘ñ1ö_ÎìNy¤r”I/MŠ›*zÉëÌé~”kÈ”_ÿ‰ïßÂÔ˜I7ÿ®aZ¶-N낙δùé#©LwÍ‚ÞÊe‹™nàÌ’/«˜Îñkù+™V¡ÊÚëS˜Æ”i¯_Ô0åÀÄ« šÔ˜ì>©j˜٤ó¦ºÏcãd,NɼŒÅm;O­Ÿø³…â­ÕñÒÜñØ>ŒÛt*5¬ ðû…[ýñdã9=ÎåÈàaóæ\XµŠh;wœ;ç.¬ÌóšË—?›ðå¹J!ïïÕʵ‡]x“éÝ€Ÿ—Ú>|Z ßXn\ìð/¯¾ÝÓs¦ã`(Ö‹ßR}Ï? ›T%UOŒ ã§Á¦¹ìb~Iñ·‹rÄï«yû“äc÷f› ¿FG°ïúµ ^v×qX«hãy^}ÆãVý%|-ßi´öDnžÓâoùˆ‰î=swz_ÛýNüË©=eÑßëkÅØ¤–V§W×Ú˜„ W´´æ<“0½ìgïÏ$v«NÔóg’3CŸ­?¶ŽI}à ?Ìd¯ó ¯Ñý·GŽðg\\fÈÔ쪜õ¦1M.m®ñνL;Gárò–¯L÷Æ÷4K;]¦÷VབྷÏô~ÍrNÆtûÞ™ií`Úç/™UÎ4­½âOv¯cªÖ{&Ë·‡1¹Æ!]AL¢]§èN6Ÿ0æþD7”ñn<`ë²è1þö~§zîÖ0þ8]¢8pµ ›µåG\¿Š•ý{—,÷^€%¼]7õÕzðŽ–l¯e=¦ü'sóÁ*ŒÏn8rptöŒÿ ³·}H»ôUþ!çq>õáÓ$.ªé1Λv”»œ}©Òdé4îaçÄÕîÏ[¸ZyK¾åÒ\÷¶¾‘3.þ(dr¦.A •ýxÄŒ2Ñl×®÷V˦â¼ÅIó•Kþ ƒÏä—n„ã¶«mžA¿;Üýéj[ðàiAljǛñxØZ¯¥·>â¥<Þƒæ»ð¦Æùöåm]˜W•Âczu‹EKÌx¦ãsÛ°7Yý&ø&¾jñ‹O¯°æšêõíÁ‡±aþ²ñ{݇±9µUËZK?·~99Û¢ÿó·¾5ô<|ë¹I»«º¿8¥ˆc_ OÑ“î 8”)¼oäß|LJikZåÃø{r,ëç°q¶&û&7·± åBµc{kؤð¼æ÷­™ä<«Š˜TØXžÙ‘<&=yÏÑv;&íõ#~±“^$ªLzûáÅJµ™L†oÜãKËŽ2ٰʃãú2ݘÁMÐË”~Yz©7…l¾÷ºŠiˆ¶Ü¨¯b:C÷þŠžczƒ;U£¦k1Õ.´Zf`.¸,ç ÓWÿû›gë¦;Î6ì±Þ,¦eè÷øøö.¦öèsÏßg¦0NøÆÀT}&ù¬,BæÒ_&ò&NëOÞ¿1ëcð1~º²Õ;;ºÖVÜ…ÍCÆÜåŽWìNkû‚šõ‡Â. NÓݼó] .©¾Õð_/:fožUöMw-xX/‘Š!«í²fЉ`LËúŠƒ¬“U¹Héûm˜æé½µÆFïÌͺèg_†§¸?šÑ» Ÿ‘⚌xñ„âÒüÀeXÓz~_n6žðRÎ|òooœ°™³z~ù˜úyKÀvüÎ+Û×ï»»|;ªX‚¿~–çºMÙ€ýö¯m³÷ôSX¡œ¶F †)‡ÎMΘÉÔÜ?…à_¦)¢µHÔù*Ó>Ÿï|%´€éÉï-¨þ¯HJÉ4þÉa†¦sd>,ùÎ -#] Ü»™ø3èîfº©Êrù=Lëcn°×ùEL}¯¢zÝL!¦ðóð+å_|LjY¶™èSá[íßN3¾Æ:Çj0ÂA§ {ÎcçàäxÛƒ6øéàŸØy£Xª‘õô”5–^•Ù¿èæð<{™×zãíÄ;Üçî¡ÿ7âàØùfß4”Òå[YÛ¾õϯÛ¨l¯zÌm .8õÇ~‡nqÙþ4ÕÅ÷zF/p^ó¯×øŸæ¹ð#4—<ú\—rÛr-ÄDñÖ©ú»Çøðž¡ÃË»|²X’¿©Á»r7–{·Y)‹àÛû}¯kc±1©ü,¾…-iÒ_mn×c›ÛÂ%¬l;£pð&ÓÍoÛ*^Ï ú~½°ÞÏŒx7Øl¨òf†}k×eè2ƒû·ó}Ôî3½Ý£S2¯0í Ž{ôS¯{¬­À´ÿݳõÞ;Lª]Mî\ñ ›àÖsëom$ã·Iý;öDNYx×(»Ò.N®,ÀOk›ƒ»b°º'&=uá>Q |òd2æÎÝ·êÁðm¼²I¡96Ä%$ø=h0ÁPŞ‹î {RÓÝ_þœ/V¿mÙMîÌÅåcçªçq¹¿½º&îæ*gÛ6}¯ç¾n¯¯íE¾…{²“dPþN©Ø»ÞdœRÜb–u{Îõ¸°m`çat8õø¨ªõitãO[8£÷¯Ù³BøÅzŒÞZü""PO›È)æ,ùŠWëÕVFwœÇ;…õ¢¾âRX4[k—½Â4|±»ÜN°°«þþª¸Ñ… RO„èVaË®ò•c•Ø.úmD¿&viwëk™öX-Ò6 ¶ÂþÈ;±e>…8سúUüO_)éʧsŸñd¹H[_eüWlNFofÂûgÄݨ¸Ì&8,Y¢Ù(Î$ä²%¼êÿÝ‘ÎÑ×í²Lî¹@ö §+LqXYAÆw*S¹¤]òÞC©ík½u×Y¦n¶&üÆ]L}Ƹ9«|Ï2µ.Ã?Óßýë/ *e#Ž,bªc#qå 1µøß®¤>fê×J¶,ü‡iõj·žûiOPâá‹gº1¡OŸýaúo ¬¹1Ãdå‚û›¶2£Xóç%­˜‘{Ô§ì8f¨œúÍ8ÛŸéO¨ñ`Ó>»Áº?ß‹iˆdëõ¥¸1Åw=gSŸÅ0i5A/µúclBÞk™þQqÆ2køwD™ùM>ñÈ»†Æ»m²Y‡-*j®2Âñ­¾¢ß-Í\|âP×R'¯†¹ÁÜ»8O¼rªrMÞÈ{.=åxx†.MàÕó@÷®£ :¸§lÞ?|€»8|x^Åg®ÇÕ¡cUW3èì82ë×½5èìøãQØfí3_Û½¨¶ü‚Ã/qê,±·êúÿúÍZ»‚[ïqÃK=;‘äñ¸«)ÉܲCCŸoëZojˆñ•ç;ŸÜMÇ‹ãï^›qoªŒ¨ïé~UÔŽ‘ÅÒ¬K4äVàp™{ëîn¬›–eôÃå6~²Ê¿º§ÛBÆ5‹ëÍ®KÏrö‰bïäeþåëqÀT{»wÿ°ÿ~ELÿn§"Ô†&3ÞÎi 9” \¨p*ߞDŽ,fîɶfæž0ÚXÿ/Ôé[ý÷0€I+ñiz®`rO’£gðŒgJÇÖñÏ×ejÚ™ü~“¯0‰Ÿ.žÞiË4¥k²ŽðíešÇ£ùžg¾fšI!QW^©1ÍÙÊ`ÓÎ4ßݹ}ᦱÓ`‚ö&w¦¢e÷ÍÛijmÚý.w)Órs9혱“éÌH ›TÍôV /Ë™¸†l«~°~·3š{=¾é3ª }ï´"3:¡¤UÿÓ’N5·ôoÓ{e¼æ¿0¾÷jWRfƒÓw±VV,‡)VÜ(}¦sˆIË8à;·‹M¸¾Ãî¿g׿¯¾¡Èœ\Òq¹Ø=]»¾Û¶‡,¿‡-ÒïÅíuà[µ3ç¶¼‚OìF?u]¿‚¹ûøìÏð¬Ã+I¦—&»Ùà±g=Öc5û0ÔþZË…ÖBôà1>WÛ„;”·¡}í›c\ªkmAGG!W|YÛI[-ƒkÈз²\\ßUÛôЉ=8q¥ùØâòߨUáuÕ¹tÎð­Lþ[¨ŽË´>ÀÍ*xCVXáÞ‰‡ê®÷c¤j¦îkq'L2t*y¦ü¯Lqx+ó6³WȇŒ»`€®…ÿ¸ë“Š/EÃÞÍ Ä·nzÇtõßcSPaFU~¹´Wû*v&EáªõØ»p£°ŒÆcTŸ¿-ÙmŽª‰¨ßÁxÅŸmÜm7‡ñ'V*¯.cB³F­9{6~þÀŸ#’ql"……¶ÚÿúʧqN[”˜ÔÇ 'L˜œOÅLþá ¦¼BàW¥S»¹ø¶añj¦ñÚßEr¼+Óòâ/QÙÌ´Î.š²›é(÷Ÿ¸œéÈMÎá²™vê'ÛµKo3mA©¢ù ”™V zd‹É ¦ewÒ¹¶ëß|ÜT³ ºPÆ´Ó­ŸÜÍsgº“ÓkF´3}þ ¾8`U’µ‹Ök0£iK}EUg3£ºú:QÖÌhßÍ5[Ô÷0C¾°ϰt¦¿GýÅíoL{‹Ç GÙ9L½zé‡'왢ïwû'-ÁLªª`ûä+6aQá†ÁeŒßÌåê{1,[¹²¿­ »‚XÐ&3üTso…«l3V¿?Úí–„O„ú:9 sÍÇ^^žƒW>ª””ÃcÇWô=--ÅPÃŠá¼Øåè^]?³F×›‹­ÜþB»‚q×Ó>)nåžô œä/7ä>MÓܽJ+‰ʲ63Ÿaƒ’³ý&Öq¨Ÿ²©Äˆ[‡,}RûDÕX\¹Þ!ñ³H"nèöQ7²Â}f‚šW§`ôœ îˆ*žY6w’ëSL—ó2Ò똎yOãù„ë#±ä–ì“CCQøÆlÑë9±†X¿YàòÇ´ýØò{ß51ÛÝøC8ÒiÃâpìÙš;„öâÀpJk‹à^}¿&ò8ã“¶=—±2‹ j^?>&¥ÉÆéùnã™6™‰Z+$z…|ab¹F‹ÜM™ÄŽ$ÛÄür&-ñ(jýU&·àðé•%똒!w2Úh„©~ Ãyvÿr&yíŽi›¬”“kòe:};­§‡ŽgzS¤\ö{70½’âÂÿt®1½üðýbæLoòùD‰MfL×õÛðΑV¦suAµó¿½a‰›O&ó1ùF;×—2Žœ›«ž%3=ëø€á!¦âPþ5•Jf(å3\9ÀŒÌ·˜”å=bFg_vŸ¿šÈŒdOßûúÌ©]\ó|ŒéI_?± 1­®segÛ&2õ~ç6~ÚÇ*'ŵš¿aR+_Ïz;”ÁDc;ÎÊ(W2¾œµƒý oqÐð›væßÖ½uð?ü´eù@̬v4õpRÁÒƒã^Ç6 bNNÆË+·ñòç¶£2ÜA´$ãœüTM&ÖãUu•n¬¶Æ‹zÒ3…cñVEP7ÿ˜2 tjX•ãs£M QûZ°úóñÚ›!áøqr~o³l ¶--ú3ìÝÉoS³Z—âïsk·:€£ûZ¢‹¶2>ÏþÑž9LÈìjFØ6þËÙŸE&…lbðÃ6ï86)F¤@ü*/“ ~ÏŸ~e“~:›gß&w‚'UÔ³–)IHøæ¤¦2µñç2|l˜FOßÔõƒ¹LÛ‰õ¯Ñ‹cº×eæ_©Ãô^n™u‚|kž¢£Ï Ôy§[%3Ã5¶Wwe¾Ù‡ß/búÏ?ß—ÍôÚ¥ɉ`z¦åö]/3ÝN…ÙI˜ÞÔ÷E»®2½+Ï|f ÕÐ=*³“š¹ôô¤üë9£/|ù^2#½ž Šˆfèûþâ ϦÿîWºhÇa¦»QnÞÜË£Lk~tn׌L-?BéŒP"“ÿ%ïÿᓼè3¥n\)9úíó‡OŸ@ÑÁGK†q`‘¯ÃO¯¯ØqyùœåØ\ûèÖ-¬ºi_w`Iå£NÍÊhÌl¼ò{â¼<¿/6¨w&Ü–þþ®C_¸E/6E÷ Ÿ­œ¹“³6”[·äs9|¼‹÷ÎãÞìîŒ9h´ƒûöà§ñAî3òO U~×ô•¦½ž{Í79nírž‡ O^<<É7Ô³<§¸ûiáQéÆV ÿVx 11ÆœõE-ÇË'›gkžpÂìÌ:óXé‰Xôûõ%óYX¾"!IlÒF¬Ó÷Hô¿dlùÑ»¹©5;ß{ôSû ÷øg÷xà¿€Á×Ë3ï—ïKR\^3!'çà33Î0‘ŸÓ*¶T0ñͧxëõ˜DUÊqøý/ÿÛ|Ðó¸Ëde˦_ÜÄäM˜Üyç SJÜrÏõȦfmïj'{iT‰Çðå 3í…|¾e`º5c†Úb³™‹èki`FÖ‹÷Ïùµ•_=Úc÷eŒ™,=´í¬õ}f2µÄæø»Ì84/Ù<÷ 3òÈN —9à Q)réÒ«ÌÁJ¡íÓ¿TÚ­ß`Ïôðl]j/Âôßg:·"›„ž*’Öa†æ½6¤˜á¥ÎºwÒÌð€Éþª=uÌ ådã-¡}L¯£2,«µŸéø¨d ˜…3Í]—L ݙꢦ·‹l¼™ÜÃuN.ídE›¤•²v³ñ6kDæG«2^CWosü=åÚÉä<üa»ñËG»\ü8*ítÝ+ëx¾ˆ¾ÛŒûœF¦ãóª±-<嘸òeà LPü“–ª8†Á3-Óë@ݲTGsguϬèq^ÌÝÕ®Ýéü‹«~ukIÇ7®«÷ƒZáižàú{iÛsTwH»2T|A´ÉáL€ .]fŸtbG?:Ût—Ú¾÷*çþü» ÎÍé´:ƒ'wf¼usÆ´©‹òc˜çòóÁÛWXúßÙ³QÚK°òXTdYàlì¬âÙµ¿fÖÌK}Ö…ÝýÊjµ^ã ™Ö’r§Ïþ®i Ì;˜`@Æp[Å&&Òh²bùQ6É`í>ŸìcL²"á‘ê¼Lf9Ÿ½€Ð:&—÷ýwªÿR¦¨›*¶ž)×,ÖW[×ÄÔyc攞6e]ã|Œ:˜öÔ”¿øûL·xÇ¡SRÿråyÅ_'™Qû‚…-K½˜É_Ùš×±)^Á÷³>©3S± }“èXfʳ°¬èM›2Sÿ^3›Ì7âTx‡_šê÷NI­MYo8 7k?Œåãgµî ¡¼ÞÌ ?dÚ¶ñÑÌàS¯îw‡}ÌPUôÎ&“§ÌPׯGëU83¸›¨Ðþ‚é_9¿â¡Ó­3Ìo÷¯oy5ï¡^4Óð©Ù|õU4S>¯'ȳۑÉn{¸±;B›M*l×Ûºò?&\ÛÞž›ü—ñL®¹b‹}&) ……øí)D|^÷›fß>Û11ß|y0ËØ»ópÇö4b¶ÍªçÝíðRIÌ׋h†ñ‘Yë=„U1(^±ö‚x>º%ßT®y|’»ØS°~ªWØ"µ&sµ§ÏÏ<¬Ìõ¸ýr0‹rGÑ-óú ¬C-טï[ÜöãL½37ϘüAûçÇ£º´òÑ%äg’ÏÑDô{«¨¾' £7ðNi[܆ÉEãœ<ÛgbFyïÙh¼¼Úñ¹d¡Ž–;¾­P~~yê~Ò¸ÔØ ƒß›uêsmù°O¾É»Õ'Gn.TŽ·füÑn4‰lcãåx¦~bâM?Žz¹I¿‘ ;lËdmS–•æLb ³d’d,˜Ò°†oÏ‘@¦zK]qä2õç-kG[™æëÊ×ó}™ö®Æeñ[˜nIºæÐ×fàØø¤4ÉžK}°”ZÄ&_Ðw¬qNa¦N·n[9ÄÌT¥’Dõ:™™OtÁœ¢õÌÌåe`‹J 3*à_ëv†™Ú æÞÍøÄ¦ˆž€b“"f¼åöIjÌØèv×"á§ÿò‡ˆDæéÇÌ0I<ëpç\f8»ûØ„Âfð'‚OñY(381ýäàÝD¦_íwêoŸ2Ó;t®æ÷/ß\)KÏÙò/[ÚÉÍq`ê›g$—ç2ÅçÛ¹Žîj&ý3ðEq/·Út¢Tâ2²ž¡ß}†Çfê¬}>[{ãk…îAlW?ìßŽŽ§ôgæ¯ÂŠWM^v+°˜÷zó¢è=x{sã¨ri6^ö™úyæVŒ=zMFá ͯTX”&Šî «¾¨|>Â]YÃa¦3Æë[·e=¨ä>ßÏ«JzÂõgË $ÿ¸Ž“o:ÍoïDÝg¿5+#fM¹!v{3®¼²kó§Ü.hÑšáƒíë_.kÙ±æ)õwÍñ"çè1~¼)fÍ»³WÌq >*ýÌ×e†EüÍËä±n­k5ß4lxûú܃øÓçº;Y‹‡–rÜÄx^•y@j›:÷¾"›ø)ôý6…Z&y[ùyÿ{ ÜuYHoSÔ_š³jqS‰U[üõÂz¦¾ºù·sdÓ¨«£í¥Ê´¶XÇô¿`:ªKü^š®`zÚ’¶;Ü„™AÐ]§pof¬˜»iÚ2g6ùÊ=§1fš™{ ó뿹(ÎÜuä€)3)=úkŒ™× ~Q=eÉÌK‹ÚW½dæ+€öafv&ðAʘ+3-°hx Á¦¤…t³b&¤äçÌfÆ µqäg2#¾Õ –wÿÍKÿ÷ã ™Aåо òÏLXïÃ}ñ#L¯éJòB÷¦»î…ÍC¥L{“åøÍL£›ÂØõ&¦>2㤓¯evíÇD&å²þd™8° ]ËE¦y2dðÔ^#|Ôõy°Gï|Tt§~õö®z=n'¾ß¿ëÞãc'±¼òã%» ÖX4±rÇ7S)ÌŠï\ü2ü^ôÞ›qZÕãÎýgV¾Bƒn}³-ˆ\ñ\§vq×öšŒ–÷™q¥6eÒLŒ¸æ ^O['¥pC«§ðxèi äcÙÝo0 w}͘šˆVoîeÌL4D‡ªËÿr?z¼OKç‘ÄPý/jM;1¡QÿÈðË·˜òRóAëéy˜]9[ìç+Y,î~‰›'Ç7‹?-±ˆÄF}ûè.|‡mSúOí¾ƒ=æ‹¿¹¥Ã?³ÖÇæŸ|Åø½ºop›™HTôú6«LÂþWô¹È@&sÓDD%ï1ST˜]=ðaS]óan×y¦¡ñ¬¨d·Ólÿ¶MqHƒiÇ?½ôý2ÝiΖ¶²‡˜>Oþž¢=ÿz†È±_.F7˜±Óã ±Clr¿×ÂmzÌôÆæø¸>f.PÉÙˆ0 u²2Sufñ¾Õ0Ke<›:å֛͋lªB×fÞ©¯˜ÅeAÏ‹kd˜y³‹O`ÿKfÖy?Fož"3m lŸ™"Φ”4ŸéÜÀLú¦ÿ)~ÄŒW÷?ý—¿ »ýD+£ç2ƒ´,}›ÀËL½HöâÉs˜në÷ºs˜Žîð2K»<¦%%¡¹ÔÍ—©g¶8®¹”Δ§\I`ºL¶µ;ã;™DÍ!Í ×0‘SÕ±6µŒ¯/:F z½¾ÑѬ‰ÝOE§(µbkå;™¨ ÝX—Ù{åL<–ñáé=Çñ¡ï·/gIÌülß8põÿ¾qtƵËv÷[Ñ`à†Ì’]³VXwÆÚì z•»y±¼û”æ îÙ_ù3 6rŸÇïz.æÈnö­^›}e®Kšö'‡Ï2öz¥€ó¶<-³ìÀuÎíkq×{££I™~`³ªß„ǽÃyÆ'ïF°@yA&V*‡ˆØYkcìÑNE»úý­ìî„-èë¡_”~{hZ¢ÁSIŽÏ­%Qkè"ýY‚×ÔœIá ¥uA…ÆÉn‚x”yÞø-Í‘ŠkI;\×GákzrÅò^ZM&ö<”@JŒçgGLÛ#êWŸk˜9œ‰Aû"Ú 5¦ 7DCæ2ÏÅ‘Â$ËŠNHßê¥Ð°ÊidûãJãÃ/t“¯h;#Bwún"?”"¾~BûÝ(ʱXŒÎhéFåb„?ý¼…šäÛœyëIPÿÉ&õ[lÞhZnÓ³d€þlq |ÙùŽvBš:åîñ “ÖQN@%]zÖ Pf>²¶{««ªm•„w•f{·³øÎ0Ù¿±¡&·~ [µ 1“mñ”lâ%oL ëtu÷i?Ýã° µ± ¥ y¹ŠhWO_P0¢¸ÿäG7(|iOX]¥Ò?K<þç@yxí̾•öŠó¼?zAÕ×îºÝv¨Öl ‹%j¦ùû=~Ps¾$*&)ó”% ¬º™t”ˆê øN(1Ì?ºòämö-@V˜H®~¤Šÿ0º}ž —SV^/~‚˜.œ$vD(?Õ^gÁ¡– Ÿ3€?Y.Lèuð Àî_aýºŽ'͸9¢­1GÉéOèwMöI¾J4Í=L¾Ó׃ú«ûþzƒZ"mv=4“Qu—¼Lòü-TXÌòÕY‡^I¨kZÚ¢§!…kÆ(D Jˆ‰&ÝV›s°é*Ä”±û&Z{a1ÝB¢¬¼¿d0Kd=Y¾4ˆô÷M߫ƈç’ã ‹V:Rjrvì+oB†Î6«›óæÈ¡M ã}þ3äãLbP×”€Âj¤Œ7ÚѳÝS}éN”§«Qê¥Ýª€äÊ+#!Ô²öÁ­¯h >η¨kžG3ªö_9ÅÑZMSÀu}´gÈÞHâg¤Å'èªw€Fbeµ5Řu¨c+?§üú²g8•~]w•„Xr[©&@T3WºàÕHp?©éíê©·þ©|—;@f¬5p­óÈ%¯®Ä‚üÌߟ¡aL 0Mýt,÷(®i3¨ÊtV>äFs "‡a}dªÚ>çòÇüA&ñõ<¨•T^)W2µµoˆ¨µ_ÿMîÏj†n·F¨ÙAÕ{ÖI»ì¨˜(þÌ“e¢xµÊàPPŒº¼ôî…(PÞØ!û rTú% Ÿk@šsãã0S|/{£DKˆ[îÎßa•,Ÿtm>{ÿøÖsBlÝò€ËJæiÄÈs`t/"›7ÆxMRúc> >Ûbr‚œÈ<Ú.p£CWšsù•hÓœÙõ©+Z:¸h„¦4¹¸ÉHP¿RÞˆE¶(jÑu`ôà3 Þå0TT~j/c³½^káðÇþ@I‘|ÎÃú(¼‰ù5±¨ ˜ «y‹©µ$ne’ÂôSÙ=/5ÑÀ¬|®NãkDã–)/漚f„YGªÎ)N– ãlî@{2äÔ>ä¬De‡n5æü4‡"uÉt²Ñ‹q·‘)%TõФk¨VÑò³ÊþÔVþ•ìtÃ=4rb¨=ÝóšóÏnì,¦Cëfc¿ Ï¡CÆ5>K oŠóQß zI{:f? ¾{n™fëp/Ï 2߮Ȋ^í”ÿ@DÉÆçª÷ˆWú¸åf>©ÍgoY½¾‚l«$÷L³ȧ¿Àœ…¬šÖ”ePÌûú®F&›À÷Øa‚”_S?³¨«•œWWÄzA5ßYõoþuPKÏ>õu'÷¸æêw >Òyúíh°ñ)Ú‚ú²75¹¨;wü˜ä~ j¡ãzÑþ¿@Õ†g˜éO (oÆ ¢ P²':ûUŒ°?™l®°È-y_çzÒ¡¿MÏD¹€„¡-zÑk¢§o=p|eB÷©ÜµkDÑõÆCeà9 ¢4œV/•¸{FBÀ"Æsþm[0È^3à c*ùrÉ™s@²îKDR±öý·•m­Ð†2Ícϰ¿hq4:h²ñ4šlwø¼µÊ„úEHT÷÷î¡–yª€êzTÇ—Ìå–ìƒJòÿcfŽGoMHbüo çéÙ6PìøŸÓL×o¢`ÓHisLÃ`ŧ›a_1#;£dö˜u{-MW€N²§ÑNŸ2C‚NªTÚfQHC–>‘Ç䙦Ø,TÅ!—UÙÞó¬Ñ]­Ç¹+”(šœÖ‰ÛôzÙÛo%-5ŽŠÞÿxÑRо$ÅÏx¢Î /s‡Yèg¨ã§ër"h!½›w¶ð&ÚÔu_n¼·Ž;#ÏVú~„†­{œÀÈ@>z€ýòR»ït)ðe°k¼µ!Üèϧy¦ fº¸CYRÚ‚t9k Ûû]Úw9äöCÃ@ÑbÚúöeuPº”}³-”ïÿtZzA*ÿÑçÛ¿ÒU[¯’¬û væM-k¨ËšçÔtú¡Ak•?h¼)z|‹ I—u͸Ü4eëÿ$ÙÆžA8·³ hܸ€w)õˆ¿Qoä@ͲvD”kTFþÞf¼x”Å^Ìâ=AѸãÉU1qwÒ½´ÆvÒ›ÎãL]¯A”^ôÁŸEþ’9ü"éÁé÷Za ŽÀ/”Sÿ©9p[V`Mš€m$ \•L˜Å^¥$øõѧáD‚‡ •ï!OìeqÉ+ =uÝQ|8ZOz´Óý->d:s¸°Š&×Í¥¾,k£þ…á0»äjô£‚©J‡Ó }5¦4I=Ê>„¾ç÷tG¹_ý'Ï5Ê¡Ì'ÙQ’è¯*{‹(2ONØ;xÓA]åÇ#CŒ™ vy³pª ³ýØ%ù¢{æ¡+òE"tAœÑHÛÕ³ha¯  5w¬B×4*(‰HúÿPkj‚/ŠýuäÊ8•‹^Ýð£`³¹ƒJ¤n9&>@õ ]ób¢¨›ÿ{.’ÿ‡*S#MÐÒǘ(Ù…$´µU Ç~OX›x›Éø,Põ©ù72fS`Á·PáAà´²cæ9 ü™Úן¸ƒð:O¢'H8—gúìLi9ãï– ?y"Ne•ZkA™¶Åë ]"¨œI¿–w:T-7Zî$ðî|Æ[É+ Î·q—U# ÔWþì2ž¢e.Œh^6Üÿ~U4'VÔÒNZƒ–\8oÎ$+hi»6?xš*†‰"'AÓÕµœ©y4¯gó—U€:T;w7¸¥ä…SbŒ7(ÿbâ6f Å_§_*åÕ€|«'8UÈ87]x,à NR9–?‚ÈG5âä`‚nä{þñpŠÁî0¶òpÔ×´p Ö7ôçEêñ‹úDkk(ФE ­}ŠˆJ W±ÁLü¹‚ûh·îܵ^Ç#´þÌš®Óº -1ÓÑO£©&êc8ÑŠ Ü,~ä¢NCµì)ÔÀm·í2Ž*IÓCïL ¢‰ŸTúWÑÛ]‡ê¹ÝQô"ý@©tª= ¢OÕ2ŒxUrº/8³À"§9ŠsðìM&à1ÙÞ[ñdGâßݧ‚ ‘—]ÜÍØ¯È¢ÚQjãÓr«uäùýú |W’×\÷Åûœ‘ÉžPA¯ï:öµ¢N˜=ŸSè[T×qîÖê Ø­yâ­ˆ& °æ¤:îèw9CDãë'h'eÕ¤U®Hr¾¤HêŠæ­óròÀ)ÕßÁ“™ ½Ÿ7”D RN)ø”˜A§©#óû[ŠšÆ¸ó'7@YØãÉw'P©ÔL²®5¶oûcd„¼°˜U_ ÛâªИ®5?ýª4“‰ipSÜ ¥4˜V Ze/"ž¿Šm!¦øbWÐ>³Éw‰,´±Ú×ÔkÏÖ‡¸\ë8hY9˜»mƒ¦‹/ãÂKYÐàz$•z^ ÔüÏKþ7õTâ/:냒ç>7,Ç@AºMo›fdzúÔÊŒç@"È+< ÍD¢ØK¦¹@Åiššœø U·®{§ÀXXk>°ôƦ„ÝlF¾§âM@Ý|Ìw"‡(„D/˜wâïkÿ{IÚ»U°ñ`mœ­¹Uü-—s?aòšA¿<Ìb­ªÑÈû¢ÓYÑL¨‡ºá$ß‘jFo®~ø¾`»íÜѧÁÕ_(_ßꢷfz!&êrä…žU±5-åa¦Þ·ËÚß[Çü5ì­ô?U‰H†âÏ䜊@l¦LéãHºðj]>ÁSto ¿dWï¡ çÆÕcçÑõ”©÷ŸG5PиyÁ/{”À,ת割^å}ˆºƒ>ŸÎýsu}§ño| Œzü¾Ö u¡©a³~iåa´ò~†O­´íŠsþó"ÒRT7xkh–e“…¨«@ȹ/ûåÀ³w?Y¯Ÿ„h½vüÙL@œaÏ:¯”dôL%ŠAAÞøßòˆ6(ÅF¿Ñ Š•ìOíÉPPóˆýú¨‚ðÎG³­C*†@“˜Íåa‰h.}û|`ZY™ø|ÊqÐÖGÚy ý)ÈÐsÆ#ÓÒ—q€1Æ©¾3 Œ}óÓÞƒÓ€w AƒÏ@{*Üö&´5¾y­úG ³ÉÝyü 4æ­6 ºJ%ßÁ4Á“þ®ž¿-J«L“\?G÷}°Y,Ñm"ë>Èí{2í"¨ß<è•çßÔo%·ïp¼N)‰Sï÷Ôk¡¾À°øÓ›ýÅk þb¹pPàÿõ‹šqëi¯§hÿIå¿&´ÙðuÿâZIÁ ŸC”hލÚ7õB,”»§Pÿ‡¯<²nú¨ãD|ª¶Ðj¨ s>ÒGÕ/ÛÆÏDõ 9~BñÛl(·ÂãŒìcB? YûÒa~ëš9Ý›ÙíxhmöÙ QEAäqÄó­à[$µ9RÀríËÞ;ôœBiÈpŽÈú¿Äg=ÔÈëO¡în=-zôRñ̃¹@”8N4ë²âŽÞ]]UcI/Ee$JæCwëQcÊÕwDëOP¿¢#›£Ø ô‹Èúq –­éí'¸'¢½×ªé¿ë¬oIÿðÍ6ÐK´Õ©oô›I‡ wð¥î\k²ëaŸÝ÷Š@â6/ù¯‰,#×ÛïoEá›+³; ÜmÖóc¾ÔØ»r¨–‚µ&‹C7h>˜[öÿZ͆ÜÛU@»dXiüQ `„â÷W3¦Õ’&ÔHiƒQ$fÛDGÚ+  ²ƒ«óê€n6VPÜz HS ëÍcYÀ´^XR‘ «Kô©œk MëkkaÍëþ×·ÝAý—³v{ïIPmŒ –‡Ó |¥kY=˜ &¼L˜•ï€lAûݯ‹AbjŽ”Í1Dâ”’š¢%A`Ä•ï)à àéÒì>ޏî½Hà ` &—é;7Œ¢iüD€&º{Ûì± œ òß¼ $‹Œf&vèˆTMN&@íо:ƒþz ÏM˜í¢ÅÜʇqÎŒh:ÙþM$IsnÓ{K‰z–®kå1w£ÖÖ´;·â¯ ú™›«ãÁ¨ÒÓøK_v'*Ñ$~ù¶³å<¿S©uïf{çѵßçˆt@¬êö˜!bú/±×>© nÚÆà¬üŠy¾ð§ç[èÌSßì%%dgÏâJa¼€¼÷?-¾“UA!ª¡\QòÒ«KÿÈ ë:¨o<È4Fåƒl:…ÔÚ¨Y“( ÏÉŒžýYãC3Õ6‹Iµè¯’è=º˜xt@ŸíøÈg/üÎ~d —š'N{ø»³xΑÊðS±µ)' ÑÕ”V¬¼$4ö–Ð÷&ö*„ÑR46Ù€Êþ“©d6 þ_ìÏ|~Ð|, O_ÚÊ^󘆀 ”1ºfgèFDù5¯c†Ì¨fíP€ÛÌ—-1*Fd÷juÙ?}¬^sF!Œ)b×m„ŸÌ*²¬º˜ßÆ]ÍŒ Ý¿‹*Ú-}ƒ"m/Ðx\’‘[j¦k5¥Ö  Ü§aèö‘t|年ƒï¾Dã®HŠîž×^‘Šø ÎC¡ ð^efíðv]·¹ë «.i·‘2°RSûïHãðâ×jÐiÚ°œ*˦çÏK/ÙøŸ2ó=e êæ?‹D{·œïE=A›¦8ö ü1Z‰±Ùæb,Gs/¨It¬ÿ¡É'4Öv— I$ó%GÝ¥¸•rÔ¼ÁàêÑÜŒ¾~~u/=•nˆ/H¬DE=݃VÏï ’VJëj7Dϧkš¼Œ¸EæŽz‘Ä¥~[g7Ò’R¦ ¨ŽLÿ©úÈüEŽU”Rx3OPÄh½¡( “nà.ÚÝCϬâ ]°Û(7ÛAni¬UÎßgÖp¼‚Z)„sƒêçâZq'™œD³öÉ7׉EѺÓ&8:¼ÓK}(HK¿4/tÏ#“;eâ[Ràp4“eãþR–µ»wU@ä0<Ú_óHý\&½Rô(tŸçÓ;2¯=¸¶O€µYqV÷häÏø}Êî­?èZäçû€©qÊ9¸È ÀkyBà‡!èœt‰]¨_‹y¼uo­Açá¤Àæ=eЉ)ÞŒöàÇmÏUåÚAÇ+ÔLÓä6è…Ÿ<3:¬ÿÔ¾<Hf´ÿ˜¥èkH#OÝ À<¯wOYm&iÎMЬã{~æ'¨õþê1oPíì}•½ t}]‡‡äâ>7ùƒdÀiQk)9.ˆ¨A¤~êöÉIà»}Ãxß8ëê’58µ€Ú±jø 0“3=}f W^'?g> Ô‡’åÏÚƒáÄåA®–—@ª½ÜÊì:ŽæÛRtÑ?ê CA´îú÷öšƒ/ZþÔLnfб‘êº{hüUõŽÞÊ4ðøÎ°%ùÔå>ã[Á]‰šž³jE>D_^ÞLråòGŸ[ëK›ëÏ ºï/Ï.p#Ž©Ò7Ý‘°_›|-ÝR$ðçöj„šÄR]ßGç·ñü—x›ÐÎrùâm{t§œëüµS(ò´LVy¿z¡ßÿ2ÓåÛ–yÿ ~€jÎmÏKr³¡6f¯‚;V‘h¸™å½\- š+<”™ëAüGg[Š›ÐÑÂEå€ÖZ8±¢ñ—;O¿m¿·j½ œçˆß¬Øp€€©Å~¨âsmZe}š¥Òžù·&Aá=Ãч‘? ‘®Xÿ¢é‹UìtM1¬ä|\Žœ,`Éi™ôÎE‚N/•*n't$#x™@uÅ\"žHi?áÈž¨EP(´ëÅM§*&A³ŠG%<.ÔÏé²èçƒÊkÛ7bõ ؙ^7úªä)æBp´ 93è=(I¢.÷/·rÒƒ`þR.“¾œz¯¿ä ÜÄÓ2üµî¶¨¤²¯etìú€õ¤§Ò*hµ Eó,`3Öjx‚t4„c†îœ,‰ÄÙ[€Œax•q °Cª¶—»Ùò±˜Ô°¿ùUþ;l+G6Mg`Syæ’/¾¬õ²È¹{k€e4TXÞKRõ‹ vŽ £þùݹª ‘šOô\〹Åï½vS´Ì“¦šÂA½; ¥*ÝUÊÁ®“'AIàgÎÔòF“YÂ| år¡¨é‚ˆ.)[\ñ·!zKƒ4à÷k‹ní½ <¥r †bÞÀySįóÍ-`ûZ5÷žî°ß[eÆ©ùGο'nœ¥‡[ÀI"•_‘7cÜ&åÖÓæU s1ö•FûTº¥Ç§Ð Gß]ŠÖ$–’®$£…íæ˜4›]vè–ŠF§¯]¼…‰ú¼çbI\ëP;"“èÏ}ŠN«»$©ë#a‡Àw­4-HÎm­ýíÒR×mÏõçcC8Ïåª#idZe´ÃFÙßn¾/xyµýü°z5 .1yÈ£øgS*\¢EèµNûãõ×P‰“ìIé ôuÜis»ñ3êú¬EWtPŽÆ©¼‚)Ñâoq»ª9´åÏ1!§Äìý<áÇKpRÀbœæØ˜ªª6ß7_d*S€ ÷ÙOVU .£O¿~dSO…µEƒbyPÙÅbPU såï¶§®_T¼íƒ=U¾íŽÆMª~Õù±3~aØ×,§l–8@W1¥­æC3è>jÉŸÙšÝåËR“ƒ ý(wÔ^t¾8;be@W,ØÃ’Ø©—]OÈU'ð…Ra°RQ_ ºH@'û›](àï GKzS@â÷éûuïƒÖꔜ8khX¨ü!`1¨ÞÚ±ó1ˆ%âËü~òÏ%3Þ3©£šóÇë¢ –@7dK¼´¨‚Èï;8Ý7¤ÌT¾^ñ7ýÿz»û[T¤]pžÕÏé¶yvûºW†Àrc%?+ƾ†üxöë@gC4â|ìT*³íg…ìî½B±«@duQÃMÒíV‘M½dMA›L ³)Û’h•×ÍV±ˆæ› †\rMýùeÓÅ…F£F´ú ^Žk´ùO¸P볡óITü•ÝLùEz¤¾uÛùFÔG¤Û«7ƒÑ»i2¼3Armm×G¾#—])o‡âOȇ¯ÿÛè B!g ~o£ÄnjÖ`¿ßè­På-îÎTºÊĪÀ€h5Ì‘;êy¨3wýÔ 4yý;±Å°4úMaLbÉ9‰¶÷¨Ýžpm w-ÑN P{÷„®Ü’_/lHŇ³ö?Ëwì Ddûí}ˆVªýI%ô»m‹rÚd(I3|§Õê+ߩνMŸ¼Ø^Àxrܾõ3tô~áoóÖh JZ¢teóc—ŒA·ioź,p<–yïS§zòãÕœÀ é M¬ »Aühw0 t‹Ëe?O?Ý«ò6u KOaµ*)ج7Aß–‹eVntgbc7Íül¿šGð儳÷̲WAcc[{ë;¨Îû^M•â¥qjÉ>Í:ßzÊÉ•G Òe{Â9I î°ëÓ…{ ‡e²'tA0cA¾ëüžÔO2é_ZÑY)jàѹuÇÝ\8ç*?T¬°[‹JÛÅéKÂGÙÄ~Q`ÌÿRß^wh³ês"I€Ò¢K-¾Ø H³Øý3žQ cóÂÿÊÑ¿¯×‚z¬Ñ†‹ª`öºZ¡++/¬v¡i‘IVÝíh%M:ª£-õy0¦@j.&Â)n´D&#_éË6)™Gª-ðªJÈPG—Ð[³E{ˆÈéWty†b’JŸpPJñr&ç55šÚP:NЬïÖ•˜ßÄ”ÊxXKàˆ ¨û]OÀ–ã§JT}@÷]Ÿ°«ìGÀal±Åîõ˜nZÖ4àjSœ2:¯.OÖázþàü:æÕ]þNynôÜ!èÎ=ÇßM«ݨ¡¶Hƒß Ëׇõ`úؘáàÃG ÓñãvÏ}€\Ò*s[ÀèxØ‘ÿ»š7û”ØAíjrû·P6‘ð^{ öâü‘ “@ÂæYå –Êå+îò ÊAy"65„¾9ÖÑ‹ƒ ßxeñýàŸÎÊÇsÑÀ©„XéÃÝ àÕ…ëOÈy€+}7ÃÄLØßzŸIÿúXü“>]š©Fs¿â®·@SYP¼£ª'|LçÊÒ»€dU‡ þ Óà„lVÐ?² a}FZ´þãè}[ÑKôû×ÁØðv šÍMþ^]øM„VHÞßÊ@üƒ ú>ÝÿÚëQQµ2™¼MR1ñYEÍa†<‘Ãõ€G¯kzÂhÈcJt땰U(hë.7Ég ëØw½eèPãÈ~¢üK¹±¾&¨šNÖ£ùü\ApT•—ý*²WzÿŽ»"'àY’zÛ„œ¯l¦\¦ x!þ-eEkÀý=ÌzÕ¸B¢Í y À9>¿¾" 8JÚ|gŸ!ÐMý7Z+ ºä/ÚèÒ :·EAGÛ4e;² 0ÿ:oÚ•·ƒ‹¼{cè¨m ¥PGv€r{íu´!(Œœþ<„@öéåçC@Òkw|~òĬ—r>üeÒwf% Tu’x+½ _qTÄ‚@Ú°ˆzu0ðߌ¹¼Ð|2ûÖqmÀM4Ðí1Êìñ—g~ù ·¢Œ—0ô'§vX õ›k¹Íí@ñÉý@¨« H\Ø®dÊW¢Ã€\­·Ì)hÇ„üÒàW%´N;ªÙ¦–!RìwúµØ;8´‹~Ò’¼bˆG¦Ü ½v„{¿°ÓL:¡°M}“Rïú ׊Ê/[[÷ê¢}¾ ò·f¼¸hæ‹ß]%[©-A s¥ƒŒ¹ÑëŒúìßz¨8l²  ©}ñ‰1yÞY‡:D$’÷‰ÑHYKZ™ƒ"šë)Ýös@ëßøhêB½ÐaNÊ?K xöูýL¾Æžö;÷÷½þ“O”'bAD+AÿD6HÉm—$ÔüBªê—û |‹ŽÛSú¨³¹;4ßh­|ßS0Œ¢ŠÅæ!€¥#_Ù^o]«šsƒ|€³š«÷z(x*ñ1ìÈà½þ²JS•>ɼ+ÏðáGŒ:¹i€·±p9ýð¼½lž™ñ€ëËšÑÉv\`Õs‡¯€c¼¹“Sõ tï‹\¹{XØ’‡v×(E@'‡)h[SPu{Ñ}‡qÐúvAú«Û ¨Çe;—Y&‚Šæ ”ȯîQ$hQƒÜç³p•$*’ö,½ âõ ´¥@´yJd= "÷8¤ýo€pPEVÖ„¢§ºN‰Ñ ;…¼U:ðÀgà{¶à“x\s·ˆê«€]Øcø.ƒ=0ÇëÒj¾ K×÷{ªšxù‡ìû p£‰u ^¥k3ö±E/¿¼ŸÉAÛÃüò§ÑÚúíOÓúÏÐÂDÓz=šzzcјÖ]¿++–ˆœ_iGîNã¢Ã—ÐÍ'¼M‚Ú€î)hµ=(DÁŠcVåñ(†COzN$=»mËGz½~í>ÔR…>1§.¬Ïv¡oî{h¯Iåø9Úg;8?±¥¼ËTø‘^¤÷MðŸ¾.Ú·4þï6Cöà1•['ÿn¥P³îö€{¬=å›úžÀ1¥O¤ë¥¼+éUB Xv æòËÙO.,ÙQží›,\Ôñ ¯Âé­‚Êñºÿ»åDP"Oà5 òBm-ÅØA†YÐqOÆ$|sö‚¿Åja¶ˆ™&§ÿQ¿Óãδ¾ ’4"7Hè_á[úgußàî-5L˜ÈïÜÿØ|^† ÕÀu­q;î=°E5»¼²fÊ ó‡Ç@?èGlº ']8š`ÍÈÓRp š1@ì4AzQÞí›§Ïú?MB›C‹pè^‰VÊø®üÜ A³_¿29FH"§Ý£\C6gt4&!²ÝZ¡Ÿ<—{ùçüzi'¸‡‚¹1v‡jè ãJ×^H&J4R VC™Ê1¤ìjèƒ]ÿD&³+ªðatï?S‡G½Vß ¾;unÕ±hªT/ª©@ý‰/ÎÛe¡ï¢?Ýé“€ÄQßÔ—â¯æHøó³-ú¥ÀÍupç¿ƒß ÈË"àÛž b7#Æ#J.ƒÌm½œ=™ç H¼þØêñ¨Ü¶úSaýÔV}$–ÃAûŽV—ÑE€†ŸsyÖ1{á:£èæj?õV%ôH‡÷©-À{ÜI¹dpðãÍgH*-Ai°áscè±-…J=üFÅŒ{໊:u øçÿéråEÞ2¸~YŒÐ?›{-Œk·wEö(stÓŒÝ+øÕî[Ó‰“ùí­ÞÉ€1вpÜ"™ ZaÜóh½6ïàÞ˜&Zʨڽ_Ø€®¿äó|ýmù2¦cßž E÷»ÿ+šeKD!þqW|:äÑ“–ZçÚ{Qïá˜ü¾?J‹öN­ÐeBoÏe:m“¢â’¶“Å…Ó¨¶O©CZˆ~*0éÏå¢ÁÕ+=q /ÐŒŸæÙ¿!—ÑÚï;ÏEß$¢½u£ ¥[E@öJv^JDèq½¢Ù€5ÂJàr2)ðz/‡æÖ¶€Ð-…SÒM—Aü§y.ÿÈ.wÝÔ¿% ŠC%Ô.€* ‚ÆCÐxà~-ØL´G•œÝ?ôƒy¾T·y`ïÊÃÒÎ)Эè£..÷\UOзI ÀûÅ<Ë8øµ:•©¹Û '}0èð¢ô´^Øî|=Yj*ÆmÐcß<¬£üÂ}z- ø¢ÚŸrc„¼¹ÌÚp¶ØžÐGò ó„£q«¾»ö°»ª¿í}’A'ÃBâî° Žå¦£óQ YÛE[¥£ jÞåÉ!=.„¾üïÑ‘X(ìÐJ=ñÑyvÕupÉÂHÎ_Yi²9nO’=î²È6ÉG­ L7A¢âÉÓÎW žÊ~ºìU8ˆQe3º€÷“a nàŸg%ÑǬã³À+æuě園s‚æÏ}5²áZ<™0Kïªg@ç+=8§˜ ”³Jê^äH;8_>™ëAGoµM<®¢íýÏû7¶Ñû]ªŸáÈׂ–þÌšz`)ðF= =f!OVôÍC1l'_ÆŽ¹“&j·›Ñóƒ Ó©Z¤èu½òOM­4”×nHct„>KÉVÐâCõ·¢ÃÒ¡.…ˆ6-õT4º×ûVMüšÏ¥s0êGNž.GûÑè(õgíÙ 8¡6b¡1 «=%}²³ÀÞ(yîR¿ ð³8üvÅÒÞ‹Ý.ýOŒ—èûã3 ò¦¤Ìf')Aé‘rῃPm)нȨšŒð>{0¸Œ{¸ÌVÐä£gìcïý?V„9qqÒ´|¸&¤âK€¿1’ªº<øE7kÆÎnГhÿckz}47ÊTAį̈¢TDèiÏ—Í%€žHäEÀ®„áØziXóKà5^)&lÜ}5l_þÜæçL¾XjÙØq7C@ÜLë#A+Z‡™Øƒ@ZË$ß^®ƒ †U'dä?PlHjd ùß…e^œ9ÿÓ'-@fU §vUd¸†›Cn]éû-Ü‚ U}ùƒS8H¦iåqû_ Ša«J£:£ÛmݽÂÃsË/A0>@ä˜Ü ø­¹æ?MIO´ëã÷ç\€£ŒÏsHIXÅxÊX?écçé¥+ßö¼ÈußÓpâVÉý±Ž@ÂïVúáÈímùÜãŸuFê›…GÒœèÁµm[ë7P؉;4~äu(NZ4 ü4™?Ýþ˜{Ô­jBNsH™„tKºƒ9‡ë0²tXh >jß–?H…€Ü˜/P·ó,:®ŸÏ`­¼¶ —¾^ó—A·ÒDN}Dq•zÞÅ>(ÅÓÌ•|½ŒdFFÄ(ë•þvwŠ8ÊÍr:íï¨Ø;‘Nv‘•-ð3ò¶¼E_£¯×tœ´A?^ÜõÓ]ÒA•‘’zª²húÀå‚ùUs´êœNû˜I íêõ²I¼ßÒwúyi¯IÖù®Ó…3~ÀÊcÝ—mß¼Â\må9M t)…£›! Ä¿ö~·ôÙ~ *¢ x…Z¯;*þßÏQÉ€z0ùð“Ðò=˜œxHZŽÕôéwб-—ºk¬ذrá\B ýTC ¿ 8×—úÚé64Ša|\¹‘E/àgÈטª@SBºÞpˆ#61-ì„<±’ºÛõ‹/×È9û_Õ€ÞìÇÙ“  ‡>µô†~,C;pë=àå¼T¤Æ ó"e×Òﱯ ýA8rÉî!`¤ÒäoÌ+ƒÆè—wz;PôÑ\qôeÏ뜕4ïAñåMJzwQPð"á Mùšæ o}DrRúÈ3rVñ^°#äÍ”x2Yü3c#Ã$.ò´¾¿¢ ’•òW|\#@<¬QRY# D±?v½é@˜|âµH3L~N·ŽƒS™»ºñ´ôÀýLsÑßìé‚yî5¢À\xÙ"¼è[í2Ц€²æ›p”›&,ø'i£=}ºªU(ÎmÞþ¥­J%åùÔ>²†2›Vˆ >M£w™/®Œ£|ùˆ’«ìm¨$áB…F#*«ýB¢òeÕý÷ô[Ö?;Ô(…_þÀ•ƒºZu ÙU¿£‘‘7½Z hŽHTÒûÎ ôw«©"kË|xX"6 "vÍ/"€á6ëÜCªÓÀt$n¬*ü¼'÷él®‚ˆö$1‹³5Hn©­å§½ùP™ Ù© ”®ü1{ƒ T³¦+(Û@㱇eY h«ôn¾öwTxj“ýÿ~ê·éÖt\ Ø@‹ÔÓ {…{¡!Kp× q €kIH$ð,6ãSg˜6S7jz…îÝj.&ÿŸkGB–@ûæÜ/è¹ ÛR‚žÿGQµÍ„¹Ù®q$po—s(º xß{ªâ_ð€ó¿ìLÎ º²§ÜÎëã@çµtLþÀ¬|V<ßšo_ÇS­µB·ÑÄð PÑɆà\UPº¹î¹I ±µBgu­@!†Â‰ë97(ˆUóÀ,ȸ¾Û» 7­òÒ(¹Þ Ú×38=-CKîÒ¶´&QÓó ©­^‚¯qÊü³ªnJω^¡*¡ ¸c ¯3GfÊ6àmÕZOp}Ëfçû[l^_m ø“3cëš«oÒf¤ô€ošw%Ýý¯ßû”J9ûV¬b ½:Á¿ÍZ´‡²ëµ’üPá—ß=ßT»P©oJVÝÀUTQép Æù}á^¡ëúó5ägžÛº4ŽÚh «»ƒQŸçJ­á]4‘'ë/¯Ä_ê^vøˆ6½cÿ»À DÒç5Ô“€²GÕ8Óݘ.yW°‡}@Ä‘õEø–@µÉþÄp'ú»î‚ŒIþi™eFPè°Š"}nÊ«‚i{-@m>¾¡äº hf6¨Ý9ÕÆ &n8 ˆq€òá~=*5BëµÞÃÚxºŠ·elòó@wÔS˜ÒÎ-Çlù½ àÆ¾”íÿ‹¼VgºøœàŸœ0W«ª|Ï“áIEÐc·¨%䊅Ýúâ.o~ý­ŽÍ&|¯1™$pïAD±)àsZ†Ü¿§®2’…ç;aŸ;–lOœAgc©™—§Pft§ºËyÐrú»±|xÔ}Êåœ/ó€*Õ¬5G–(kµ Lðyƒ…öh_(úú)/ƒÂÏ7ëÍ´ª ö[Äñì(~{½JF˜›ù‚tÄ —åyNÜä)Ètu¸Z¦€T[îÞýf(»¦Î?@àÜ7í~Óå£ òtæ,±ÚÝ͹x wãfÞÉÔƒÇï\Óé· i/°$±Ë$ô÷îvO8)PJUÇ·¿â ûùçP¦eb7‘í9”=Z÷Áºû=*zÉ#FDa‹>‹yŘ0ç£ê+þÉ;èkþòyFÞIôý뫹$ú!­±³â—€ºÞm±pe¡¡éõ×?Ah:«ˆS«ïú#óCEV8íRo+ìLøH•2g†¨ßž¾è,"ÓaÜ™ÀS=¸x{¶ „¯\tŒ;ÎÂkÞÁO@®ép:0’”$éð÷wF@ÕÒéª^3h éSÿžF€VOœt=`L%Emªzx.3%z‚NÑ««÷6k[&G-t°;^ÆF¡! ´6KýLt÷õÕ/%b^»VÈHAÈ—¾tÑ‚bÀ 3ÇüûF ø@zÊD—pÀ ¨œ´=É7Ó¯òÜâÊë1Bà ½{ï¾ÝË=#2 *7À7æõj¸Ån¶åìLØ2èŒÐSŽüGµj?µ(@Óì ¹hÓ*/3pƒ†äÕr á|Pm¨4j9UÊ[ŒƒR91óÛUNPü{53<ù(ú–óۅʃ"ku+»Æ5Px|!Zâ(p½dMôsyG¦ i£©—ÌM 2rÁÒ«9@ ï<ªK~$,·|iÝ{@Ìvóå_¹x1ú~ëh¯„è3ˆFqUÀŸµÔß3®x-gæk à—GºÓÖœ«ÀÌÿð1è9V6L8E×T¦ãÄ'À·­Ìþ2"ðÉÞõÂóY„9ìþÐô=` °×n^;ÁÿàÓ³ñ= ÐÎÐI ÿR­eQý„uÕ<6¯py5ÊsÍâéíw lN–pÄ^ J}UÙvþ ¸ÚwÍU/ƒþî¥ihƒ"ÍíÛ«QgAá>›¢Üio;ëÄøäÉÚû¢º¤AÖfaàѯ§ ýÎâí³)œ÷Üt# ÆÔo#öÿ¼ˆQ@á°„[±ÓŠŒŸ@P÷ßÔuB=K5:œÿÅšq¹  QoÇõ2 ã,·‘òwd‡" ¨àïÙöJzô9A>äaUªsÁðso¨ †ËÓSÃÛ¨5h5ýü­uÔ¥‹ê7ýÊP¯¿ çeF4¨g8îaYŽ~†Û¼ÿž¦ƒJ˜Ïé ÅokÿÂÙCÐÝý_µÖè‡ëóê£E 0Ò:ÚøÌ õt.éò\Àá.öMù§ œbúÞ" b´ÅÞF9 óxû®M(ÞòOZd.•C÷bi>ÐÐL b9mÆ ~ÏP@gMühÞ¬é>ºM¥:´ö5š| ³´¿›ÿe°Š¢üݯ8ûÅù¯Ÿr[ôÊÖB^°{^×} }dÊûÛ‡©tK2å? N›Eÿ3à^/¾¬û xÞ~ Ï^oÀ?£Ñ'£ üÁKú£iÐS¸P@Útôø§CžM2¾âðON>¶í9©œÞî˜eãQm `ƒ­®àæxA‡Âþ.éåYÀ0øOü›MSû“õ“Π¶×lLêªb4jŸ˜Ü@¹·«Ôª°”–ZŠY9:@É &ã¥Þ/Pl*~žÙ• Š7Ãè]…òZÛ'~% Àrn"Hläú&bz#@Î8œ¬¬ø$ÈôÝÿZ Ò&§Þ&ÿ)É×åN¼y⟈©¶ÿ¨W kgÜ Ô6Ô´—ü‹|)wŒ»%Ïhh4Xg¢3¥Ó/ÃY}úC8Qw_ZwE•ÎÕm¼¤y‹j*¥­~ ï²!÷)_Š£6–”·‘=¨»c.„‘>õWéŒÌÍ¢á&Q1W‰H4Žò®XDÓ4‰~r—.£¹Ä‰‹dƉhEÏ„ÍhÐVAÌ—ñF@¤0ˆ:îåíÏs—–€ c]«½:\ÿ¡(Á{$¢oÎÈ€xÛ?ºÖ§ ÷gÐÅLF”ÊzgmyAíÊ™ü£®‹ YÉëH›˜û#ñ·g-âb˜-­ÜÊ3ޝìÑÔÔî]ÀRé»ðY°\ëÊ›$·+öIwS°:f%äëé@y>Ž3q‡å|_A—uúƒF]:èFý™ãl»8Ö›¨]€Ëv[µIÖ¼R^ÚÙÏŠ€×ÈÐáøÅâ¶ÊhbÀÏÙß+5ºø¨¿œëú77¤YPÚO˜“.2Ìø]#À†ã§-yoDvüåÀسêJ_ÍÏEÏ:W7@ýú†~Q¶¨¦üö`^¤µ( {VPÖÐzàLÕJ«¿í‚⢜„õHP´µ¿Ä¥Ø mÓ—¶YE@A9Ø#ò©œøX„An?ö*·.È6Ñ$l¸oƒL+÷˦0JQº’ÊDºk@l#ÈOÒhDtZUž:Í€ Šûq¶Nð½Yvñóö>Ÿ.4ã;§|ÞG ªJ)Ü}¾Šª~ùÖ÷üA –öó¹JÞ¨MûÏ[¢µ»¨§„¿ÀGâ4ÌÙQù%‰~Ö‘ž?Á`Š&ŠOˆ?B¿bÎß¾±tÍ5ѺTÅs¢åX Ó§!ô·Ùªþ5­ú—>{IçB¯`÷Þ?˜„“ï«dÇ®|æ£DÞ'Às•O‘©ß„ÿ¶”ˆ¼É»‹4 bT @Dd«¡FàÖÇóIl þeSî2g5h‹ú/ORšz—¥ûêt®E—­j$ƒÎvã~§Àʳ&{ܬ8Mó9ÍPÀ’ 7šH‚ÎU—ÂóJÐé°H®ñÃC¦pÀ²öErûªÖû°p5G°+¡dÏ@÷ÑÁ‰Æ AB¾ìýìTc\̓gDÛ_±O’ô¡"ðnÔOQ¾CÀ'Ð\ÀJ¼^âù Ç€{i™AÉvts^¹­‘Öç[½ù/ñ…æ­˜.æ±D&9Wvë³X@½¶Wè¬ïeP]ì¾lØJðý#é€\GP¾::¦è+ JOãâÓéâAq6m¥šå;o«*|êA¡â›g •ïÆí½÷vì½÷z.#TJH…¢¢ŒÐN¤AâW*2’H%‰Œ JBH²ŠÈÞ•½÷úŸÿ«ûÍóâÜç¾Îõý|žóº¶Dp ­Ì×'=sä·Ò%¢âˆÂZ¤^=Qûm«ÜEŒ ~>¨iËéµ%~'þ‰Ë¼ÁGôr.¶q­#©MN„ë۪b¨¯#Â\¥??ãi-qýá{‰éúߊíûãˆùáƒaÞÕæÄÚ¿h»ßŸA]UBOÝõ,}òåÄ‚6x…½‹ ú!fàXw¿Ò›—w –n@™qIÀ“™K¡òãöǡˣ÷á÷K=2ø¥üí…ɵªÚ¼6ò\z ªT> 3ŠRæ³/7Éçœá¹#ȈìÁíB2`fÍ^ÞM”Át2ëƒÚ–8L,ž å΂©ëµ÷*ÞÃtÏÍK9]Ñ0=ØÑߦµ®'Ka¶“ý–RÎÌþFí˱6‚yìTG ,ôÃ9{¶º`QÞyßO‹œ ‰¬=ö$l“«\e‡Å{¿Ÿ¦>,l¾râýÿ}Ùù™Ÿd>bšç½ÄSÅ®æÅ30¹ÞåpZ F|çeé˜t ?q¡í›„ªpo¸Áwj(Ç úÇw퀢O%»[Ù‡Je N*Cú¨R«õ:gžJ<‚P^lSîëàQ3Ž-¸|¬bŒÊ‰©Ä×Qê)FAâ‡ÿLWHS,ñ[Í&_u¦‚è]~œº7¢ŽRøË§ö½Šøw`¿Kÿ}b|ä\o1µ&;¾Ý2˜˜ ‹#Ýñ%æ/è…|I#–£øã?Y]!¶Õò¼=l ÚA )%`ç·Û]-ú|çJIÁo!¾8µ’›|²‚Ë~—Aå<Ÿs͹_Ûʺkͼ '¶'z¢FÚ!¢›F J#d›b¤aZôò¬0Ó ˜Ýû|0Ûö.Ìþœrd|Á³º¦ûë1E0ód§¬¸GžCûŒFýÈ|ëhZã—Xô›)ßDP.·,™-»ädȹ‘Ôžº§ŸÓgw_¥Ì ÂÌJÞººšÌ5+/¼3¢…ù‹Æ§d`¡Ë¢’â‹Æ×ýæa‘>â+|,'‚—ÇUBCzº;rw Ôó¬7zoCýp×+ar>ÕVj~k”BmóHþ‘2r^nóPs´äCµäŠ•Ý7E¨ÜQl÷JÖ öÂä^—Õ·þKCF5v~4® Q–U‘‘üþ%1»KI¼nöµ½`óJÒž:ú•høtM÷MXÑêéâX/pŸÜ œh¶ˆ¡ˆû.fé$b¤K¤ÉNe1%ÃÅ:wŸ‹˜¥~6²ã'1¯©òÅš‹X´ñnÍ-´%–‡ÓË Žë¿÷š¬ìæåðîX¿ ´ ÿñŠzñ9À‘!(u×! ü…µ/ßQ‚T®)î'9î_u‡ê›”OƒQÐJþ';DÉ}—ÐÔ\wê—¿_º W {YÈ}1õ>s°æ<=!¿4¿Â|/ǯ3s0çË™´…ÙŠë‚Ežäž¨ŸÐîX‡)¯oë{€ó’£—Xˆ@öÀ¾ ÎĦXK‚X~%rejXØ·òˆ|>¦©F=YNI0s>ê]}”Ÿ|î~â Û;`žÜÿîé3Ì—%óçÿ†»eMåa˜·_[;¨% s§}ìúv0K –·Ëý Ó43*ŸOd/–û±ïFœŒ×·‰I5ð¥õ×Ñ#Ðÿý[|o3ô8ÎWXXÇC'ä”cBã*´å®Ô‰ž”…åÍ’þh2ÕÖÑ–vAÃlüçƒ]¯ ž©³×ð?v¨cw³¥ú8Ôiy¢]k Ö£<þ/Ôš¸"ŸW¸@-µ›ªüt ÔX ÷S·ì…Jk—³mïq(uPŸöƒ‚pR• 3dÊϧŒƒ$û×Ó3¾A$k>;\éxß¿V¾Ã öƒ¿Âï¥Í×ÿ6Ø ]'¯E|ÛáD ¾ß ·vª%FÞ3lk¿KL»((ãÚ æò™‡“ž}! öˆÏž3&V,Gueˆµ;§·1íÈ"6Ù ëÎQ‚bB„Æ2n4f·Îçeω};Ÿ>­88+¾Æš4jB`ØÉ¿c§'$N6Ó ë¼Üßö÷¯ VüØ·Š>Ú¦J\ï²Y¡ß@q¾8\ &}$*U˜úüÜУˆƒYU_Þq!˜Gv¿²[†ù»zÙ—;³`~ÐéaÌ3˜=k³Ús; ¦Ÿn¶õöŠ-#R¬@ØGQ—äxÃ$(èÃöO0±N¼ñ)Í&ï•-¤§@¼$‚Ò9¨Éy)¼—ß Ó·Ì²e`vÜ¢Ì:lf {îüa1‡ùž‹ÇƯœ€ùñ…TJ*˜kEÓÛV“¹õãªc‹dŽ.Hìpž„©òèâJL6ÿ ‡Ü0ö_”2´„áù2NŠÉãÐsᬉÞÝgÛu:&Å—»Ï@ë‡vé»u^hÆz I.AãÆ/…L¨gó=z°êlÁî·{‹¡æ:x«²¿jÜ׸û ¡&IC'r ¶ï7­ª=3Ô¼Õº,.1Ay|›vP!T¶^œ«Šö„²8¥\¿ô(ü…Ž$0ƒ,Ͼ9FG6H,xw3I¢Júú™WvƒO¸uâjåQ°Ï´]ºáÌHüà—µà5$ú²/è•YÿÞÝ–ß_MLÛŽý úIÌ_oxXvÚ”X~|º\̇›XßéË’NlÙ[©cÅ`eÙžS Œ:òÐËÔ-þuŒ K´­!΂%èøä¸Æ¸zûŽ<ƒàZòǵGL¤j›ÌL„|œMáÑ1¨[Þu¬}fíòÑ´r-0ðnN)K„IÇgm£S0m ¸D[u æêqê%täuz³—4Ñ Vƒ»»3kaþ°W¬\efŸÿ¦?ˆiAqÁö³öíúu,´&i"ïGXa|×ÚÜ­ƪ6¡iYK0q1¶|á“c­cNÈyÙÝsßi ¦ÌÛjÕ_Á´˜‘.PmfÛtÜÛ®¿‚ÙC‰<¶§´0ËÙ®0lIÀ,˜3båÑ,̘E~œ†©7ïLT•`vÈ’’G—̯[kIv0*ŽIìÜ€Áh9Ÿƒ•)ôeeÂ÷Ö·C÷œM:ãx<´™à0| ­CF,1åyФ÷8–Võ!®*¦G{ ¶ªÇ¨ªÐÕ½{:Ë- Jÿå Ó}¨ôNÝUªTËîàÀF¨Æê$¼Ýâ†jO†™ú ¨¾ç¼Rp¬*ÍîÓ%BPæ˜`šgƒÂÙãbq‹¾•¦2PàU†ä)É¦ß jÏãþÉ}|ÆR1~{Žƒ‹æt~\ѳãè…Ø"â«ö¹Š]Äd‚€£òŒ;1¯j°’™G¬¸f>ÿd‰ØôÎì®:Ö Ê“Ü¶|Í Ö^ï»õ47û¥ûž6;t¯›k4è•üj2¾‚qLÇú>ç;°óv4¥Åý…òôË£ZÌ’Y†äå³r¾PàÙPõh; õ˜;?5$¡#^ö§Þ-}»Ì[”‚ð¢hÒ%ó©©bŖ柟°†¹ÁŠ*¸…ï3,œ ËhaþãøèÑ.2vža¨^€i®Ù[¹þd[×ÂzSÓ`B‚âbFïÜzÆÓâa$Wê°cW'Œœ½m·ÇÀXÞS¨ÐBŸì¯W ¯º•€(‹v¹)ý ¦ô ?¢‘ý;ÒV¦«U¦mzù±M0ʨ3–ƒi~Æý ïz˜nïJf™c¼,mì€ ÜÆ_Wîã‹ï[Êl`ØùÇúý’ ôE®«v©A/fù`ÜØt&õœéwBÛ!%ÃÛâ4kM«ÕS¡á¾)ÓÈ u•íA>ÎP=›¿ª_í¹òa>ÊP¾a;ßî@^/?»¶å‘l»¤siP¹õ†§±ó3T¬ZÕ¸½ Êú3ê»T²<'»¬¡ôf×¾C$((vÜ»äu2SORŒz' ¹C×îÙ°;D…–—¶VhÀÇ·[÷•Õاiì^ý&n”vmc&FWþ=)$fó&l_˜ËY!lãtÄæzß‹y” ŠÚþÞll´†ë”gº=A¿»\¢Ñ! ŸhÏõQ€±Šæžú€˜–¬ïV«óiµW?€c~ä÷½PðÊ|õ17„ððÉ€uYìÞcp¶í¹ÿt×,4A½ì+³¤Æ tœ/¤Ó+9ÁPñã3ƒU}csŸ;aær€¹ø>Ì¿¾“ÓI§Å-ᬶJXÜ_‘´8W JÒ7wÆàÿ¿·•ÿ¢L_æ<êN¨QxæÜèè>_ ?uç”= gùý–ÂPû5sh± ÍÍ7®NÁpqò¨ß2`,;øpáL¼Ú®‹Å€H} kÉ( Äîf».PHî™Âa*å˜r†HK>ðkF.§‚˜jžôÞe “Åક)?ö¨|=yF!ÖÙW#aÐ69gzúnC"V3ÐýmO[|:–·SWA+÷ÍúJ#4Ems]L ž1:¯+® Õê×èØ¬ò7׎¸(È.·€bsH0Ó(Ž}ÿ:ÅòJ—.ò†Þ„²yfDÓß(z†zÉB…?Ò³!Ê!K:ñ¡¸Õ™>"ÇùÄdë£õ2 lb¹œqcŠ6£m‰, mdovÚÉwŸüÁî´Ìiúù+ñçPåš¶1½#ÙKý.5±'ÇñIi±Qý±×¶oTù–¶gö_ÝáÈ’³A0F•&•S>óÒ÷ÂmÁæŸÀ}cl>Þ{µ[~€Ý”2«Cb!«Ïÿ¸ëòeWº· às(z´Á2‘’¹‰‡¢Î’yí[×â …”ÛûûŸžz ÿÖ㲞êg­rÚ„¡Í$•7Ë3Kí¥úWÉþ{…O~"æsÛ§³À¢¸kÊžÒUM ÏEç`!oÉ93õæÌ‚³Âaš©HwÉq Dðªoº´0¦ß}Ï~r.rËøý„cÊY&aæê±µ.Á ±õ¤çòE¶­½:ÀwƬ‡gêɹ7Qyš}µ¦ n޳ë/2ÿ²¾&çïıë½äy¶²”þmû&Lt=:óM¦ïÝýÝ FbÌùW‹a0ùÏ®ç¯ ôóìiLUh wtrüÄ;zè¬ôöxíËÚ–n.AsL³ò”M/4ζœ¹µ|ÆÊc,däÞ}ñ×Ît(ÑVù¹+C!çÎÕƒ÷.@ÿunCy6ô%F ¡Ð;–Û¡. Å* ËŠR/(ݹ2aïLæVÞm®y4P:võZq~0iE_ ÐC®Ìÿý«³¢þò`“ã³$œÌ½gß±B8Ýÿk!?x¶V ø”ÔÀæA{þeõ?b4[žýòœ*1çw÷>mûebu,øyT‘ (Ët„{tA·ýí¹›oëÁôBUw´ÓŠìI:·Î<ŠǃJý§ØÀé·\Û.cÎï~Áxmέ¡ÑZåMpÝÙ¨í·Ë$œÄ½ÃÀó?w1Žÿ zÃÞTû„,¤üýy¾| ™±4‡Åø ^ÏÞ¿FÚ cŸ,ÔâG`h™œÞí¸bÓ7žzü Ìn%Z’óÀ˜!°ãk,~“b}·Áâ¯Q‚QÊ!XXnJ6­œƒ¹¨íDˆL3î ‰y„ƒØI×4Ë—£'9Fõ¾†0H7+|q<úáK;—¶·Bßì4ç@'ôóÞ¸Y éBÊûïK0ÌKJJ»sF_þ}L†±_éQÇOä^*ýv1ÆÏõ5£ÏÂXÑ¡Èë[Œ|-_ÍŸ†áõôF§ç*0ﺠÛý«K!ÔCÏïÀ>ÅÞèn«¿UÍ_ íÍ]C½ ŸÍ–vKšlâ³ybåP¿¬wKä™>Tfܤ,"çÃZ©©åTÃëjªÉúÄ™õ¤rø7Ñù™íi /I§õuA B'Ëz,Ž@aéçë›­;¡èví„ïòcr>úî+ë€| ‡ÜµCž}yéT„}2¤Z¥Òÿtÿa[÷ „Ωš×é‚GÐ/½þXùÏPä(WS>¤.Z–«Äbß]ߊ° bë-Ï Ýf,hþlžüo©LF­Wø’ýˆŸ§\§œ=ªFùÎàxRº¯ž<·˜¾½mϳ‘´½¢àI|ïy}È<ÕÏlüJœÁ;,N)CY¯•Œ_Ž^ƒ˜É–è•¢@H˜u9…˜Õïž ž[µypÏèžÔ”N¡±¯ójˆÎŽöÇý0 )Î<ø|,˜­ÿÉÊÅàô;Õ>3X¬Ôç …óñÙï­0WT-ÛÁ½ Ó'èz®–G_aö,Œ¶Ež~7Ç~V}]èUï”7 =Ǥ-üÕ‡Þ£­x¿¤2èÙέò¾Ü7OÒ}øC`¨#â’yb† ,ºaëç`D=*ßrœì·–ÑEª÷ahçìzÇÛñzîDz$ _"ÊqüÜèu¦?{ñZ º+ÜGH’Ðem}Zúì!t˜?(¾Í¢‡ÖPŠq¡š1“Vn£— !èce g5á—©b‚¡Pæ¯;pK Þ ×øØ!·K+Ìæyd&¶}-xù2®r_Œ(™ s'HºSòdwޱI!_×Ö{¡Â òz¬3«Sg>~ûäO½]zvfr%o=™é!sh˜ó;] $‹üØŸð€øÞÜee:lFOü Y7-Û™Ñ7`m·"f·½n½wÈ—X}$<‘b>ªShχÃŽ@.žÝ` yð€Þ·\ú¯œ/³êçsC“Oª øîEPP o‚?b(“›°þ²¡õð9ð{ŒëN ¿¼ñÕßýÁ_>Ï!jõBì$¾²GCl¬n.¦ÌR××~M‚Â!"íêÏ`¨¦•¿ìv…ö\UÀ•]0¨«êçs;¾ãìn/˜y¤ì·Rm…ù ï» NIXtŸ}oó_(,6˜8WX ëò© %ûÐn…?dŽM£:Vö&KÏñó“¹Ä&­C;úñy†E¶— ÇU§Yt5ºgµ–µ¡¥³@?=ùˆiWí¡·èy8Àý ¹g¤iKa ¨ðîÖC&X¤RRjÆBKßαò6ôOon§H„Þû²u½­Ðïítmö‡® bW½#¡ãÞû·))ÚÉ\ÝÅò¡õ1,ný`4ó «Êe•¡È:SŸQ uŽ JaPï}9ðŠò“^Ù»¦Wr^ê dŽóÐ×òž‡4=.&Ôųz—ø õâ’ûŽðqH»Òùv§-d¼”ŽÚŸ¿Ù}e‘:ææm·oz¥› ÙÜ­£­,My“8¿Â©áÚ_Õ!qîKÜ¥ÙK5ˆ™ÚKăߑåÃxp~2Ýk²«Œ¯×ò¨tˆùõýür¯ˆÍC/F^UЪßþ~€Eåï!ʳ°˜¾ÓÍ!ï W‡?Xa®ªú½E̦É7ŽZ1ŤñêŽtÕÓ0|¾â^Ø—}¡0“&73èz«=[®`NÂ]DAçßc)!èÌÚOgr«A7aÓps°z*èÕïx½0)¹‚^è…tÑ8‘óÔ œ¿Ý{Ó!.CsÐù-ÃyJ=:BÑçr÷4AÛûBåhUH˜UÜx-ÁÔÿ1oBÓùÌUÇË‹Ðð½4BGÞ·Mä~Ó@eªfSìÐ(±f>W;yE»îÕ‚ÈÜs6£*N€ÔµÈ(¦}”•ÕÞ¼¹‰ãóÖÌq(—©ßÕÂÉ@ïCaYò:o÷h å¤w·p1‚ô?×8»š#®¿ïerR“öÚ9v´U¾KºÐ —CS<'„&Ø’6Àj'H÷ÈoÊ Ký›9¹¢>nb©¡Ùè†v.(÷zê'ƒÎg5·ï7س‡™¯†z€»ÛÄâôáyðvòZQ€ÐJîp™6D-B}.ÓAÌ5~Å”Nb¶ZÍŠFõ´˜™dl†ˆ©6#Å>¿™ ÑŸ,‚HΚߩ:òçJgòþ©Só*9>ûelij¹íOéí6¡-z…Ñô2¹¿ŸîNKa‚Iéa´t$Lg~9ÒØóä7;µïÂ"éÐ.KÍ.X4O­Ð)Í9ír5:Žß·+‹ˆAûmRüÖ+ÐÚØÿ8Á¬Z;ÿ“hm¿ͬQS«GåÐIðNž‚F´Uª÷½D¨Ijý*¡†º­˜Kd+T%OSf«·@)C$ÊÞ^ òÿ6~™²­BVfwjà>wH=‹2T蟀Dj¨Ýµ] ÙqüS‹{ñ(y½é!ˆ×¤¨Hí“)ºõå±üC¸Úá×é¤É£ºQúç!9â!°«’ž§b¥CRÀ…›}’¤´CGö„¨ ©Zü;®iqfƒ;þr5Ñy ¬ß·ËîМmüQ© 5#b5'ÙõþâvPû3…ïí>¦Ñë±ëäÞ‰qÚh쟩E@ms,„¢‡Ç]»_ALÓè»êú\·9ÝÖÒiÎYJ0"¤Î?{vý áÕ 3gĺËÕ7)!ú&áßè‹.ˆ.Ýrþ>ÒºÉýŸŒ eßp[öÅaÈ+¸½NµMƒj9ÃuÅíЊ«òç—8}½ù?ÅR,0žv¥²¼fÓ':GÖ¹ƒÆá3AC°pÇæ7°xÑôkÙOÊ,xïÕKöc Ù0y˜®óµ¯±ÃÄŸN,~ˆ†Œ'{gE §îU“v‡ :õCW‹\¡5Qäzy·1´?‘’¢¡u³0âÙÙ0hµ‹r>1†¶x ¿ÕshkÇ×ú_‡6…ð+®d´"š=.nþƒfŸ”µ‡Y4g¾Ihµ@#´îqóÉ ¨Ïl*×鞀úÅ5öèöP§üQtKxªã_úø'V¡rÅß­ÙÖJ¾øJ3ÒAÁîñ}É\ýÔEÿ.Òâ Ñkwu!ñ±zº[6âO?úþaQžªA¢þ„—è>9xŸ‡ˆÊà÷h‚ŸüûÜ.<û â–Ë&R [»¨g*Ò¿[Éá ] q1¨ÍK#1¥tè…þ“Ô¼! ceƒ†ÿ05 ŸÍ* ³¥)¾Û'`ÁѪïRL ïÍ‹‡‚¼a¾±ƒ"yE f›”³·QÂԥеžwL”*;¨`ðÖAQAÁºœîyœw„v¨¢4r ´Df{²¡ya57;æ4÷½ñ"®CóâUw?ÿ3ÐL¦,ø;}š±‚žw ¹ÝÖZ4–þc†Ò_ ÁïϺèóêÇu¬hêC-’úËÎ×òP ¿ðöê/¨ìÚ´_‡òÄŸYáP¦\c[¶ÿŲ_‰=Ü¢PàÈšüWÙ…Ž;LG®C:ŽÅÝÕÓ’lôÕ þEãÃB¯D$†"¿“çøåÄw™€ÀõK¶É(%ýðó'A°Ù…Eh3ÂÇÆEuL†!2úœò'™ÇEûG¦Å‡8!úÇm¼ä­D*m6¹^>„Pˆ@qFüv=¼m–Á}9(«ìVṉ̃•Ç@ß`¤#ÒGö^XŸc¹ ’6&IÏ@ùcó;Å`pXžˆ¿²— ¼gݘ²à 4,GÓ‹¶Øy‹H©vý£W…ÔÇI¨ŸÚ iÃîFÍ2H+¥ø¦â)Ó ÖÇÞÇ 1_Wé:SRÙç~óä«\=žw}¤ §àÉæ£œ&"ók!»)pó{8”—¢»JwˆAÓÎé ɰºE«z 50²ó¿Õ›ôH¾Ô=}:fw븯ÉÂ$dŽ' òŒë_ô¶NBöæë½ãonBú©qÎY3ò|8ý<’ç]Hj¬ECCä|hZUlúÇC aXÍ|¬|a³O?‡q‚÷LÊ?ž-ð†É,r*¾ß9V-ë“ào{¬‘ëìAÕMÁæ(»üiì„d&'>ñBP/Ê6üz¥6ÒRÁà9}¨%yr œr•“ßd]À|JÖmérhÒw\=YEln3©ÏáM¥µ†‡u^íLÌÍg4§sÊô_ðKçóö¦ÛŽù¿óà—äç— ½|(éÃ}Òåñ ¹“˜{ñ®c0½»Õ™tÞfÕ7Õõ_„Ã|×ëw»9`Î#g·Eã3åîÓ ÷º€k‰†Ñ”f0f)±»N_ý+ª/[@‚FMûÝh&%K… êz1Oôµ º~ÍìçÖ¨¤‹¥ê>üåÉXo÷¢(ûè¼m?¥ ?ââ6(6Kmãü …'C!¦%ßu½Òq^ r ј*^BfMwé#M!d´“éOðB:3j×0™ß¤µ\;N…ß${¬±Žßlý˜;YV ‰3kçÃ@’»ÖÓV@ž 9‘×vCsÀcîO;xSªÒ¹ì"Áõ•B»õY8š¢K»¹Éžñ5½u„ œ*|é}'Á¶í©]âz0ú—*Ø9‚f_×Ñ/%ˆÍå¼cÄ„±xV'¨R\ Ôá.õq®õ`9ö‰"ÚÜù¢Og$!¸p’7Œ$+ÍÌk4G uÂd#t×eyá¾"¹–YASŠlÈG7TÖÈöH‘ÞWxAzÞ‘Ê@$g7†•Œ!q‚ŽWwz¤qö"m׳˜™«ºèH×õú„õ@!!À+Þ§ê\ýêö¹éЦ5¸ºçÙèoŸJ>ûÆ~¡œ†ñÀBƦö£¿03lß÷EŽfÂÞdz—a–{¿¤B¦Í%”÷1®Úöô§Œî¸êÓ×XAŸâîméèDh¿cêÚjÿ%š§Ý8u? ‚t:b‘Þàý$\.Ï\®L®ªßÆÀ!œ½O˜ì‰,qsßžªéç!ÕÍÏÀôhqz2Áœy¨ÖáZXùM3mÏ»ÏÕ«ú)àP»âñ|Çwplc𑬻׬ßí'³`¥tdaèû Æ{£³ A{É¥½!f”jüzÉéĪò7»¯9qÄìò{ÞV’hv^ãH½ÓÖ»)žrÏýÀ¸`UspBkìB»ØAݾ-/ÞÒ*/nÖV@öŸ†åÇ-ÈWXĈŸ€BH¿÷AUPà»N³9¬¹l‰7‚ÛBæáñg!u´O©=:Ö/?»( RÝOjïm¥–TÑ,<©E¯9]È»tOD4“½'"ÁëP y.0Dl^xã=ùËOÛŸ¾„‘ÎRÔ1Š,Åé&ÒlÜ0}–µæVzfÛ$7(`¦öfœÏþ0LOúûù¬Øv¨Õ·' †ëŸç%¥ wÉáåBMhË­γß G«{Ï{AÕ–æ’ m”Ìî9Óµ_‚UÉÅ·¥Ûrz½H§IîIšÛ…2 +¼+$Íïd˜«oÙÝ®‡T»ù„øŒ2$õÏê=\…Ä¥Wíå! ÝKxº¿¨â-TR߸ ¶˜Äu´£b6ž+Yét½þo®_ß"Ž‹2Ç…ª ”»Õ 6Ë lûæÞÈýõ;ï8‘óq~VªØìwÄÜíÔÁìæ\g) •õv qÐ]±>¦eW:ÑÆ½)ú §‹ð‹Ú†sy6Vy†`œŠtÌ ¯Óܤᜠ˜…R¬_Æ7€IÕ²Ôùq'ÔãÞÊ‹­#‡µ6_?(Ç©m=>ë¯^f©˜  ¿»¤® ëSÙ늕*Æ iq*<è{ lû ä (‚—z=¦Mü4„ó#NZ>̀ġåšÑ"cH¿Wžø÷„r×od‰|„‚×Ó«Ò¡(ol|;þÞ™õ?Œ†¼Î®hàdi"£Ã» •Z¬˜%Ö‰§L§û”ɾ³«ÒwM¤™½©¤Sâbø·éÈñ´ÍdêkC¹ë²Ru4i¢,Ä|‡ÎFνµçª0˜!äÛ)Ý`âûŸ8sy °•ìf$+ ÓÜæÖ£¬0Íæé¹~±X‰‘q}“H›Ð(wýÿóÍ‘_sÐJÒ †V¢ÔØMÏSäyÓ°&lúÊ-¶—$J úiÌ[ÉrD£æ÷‹!S˜)j|â;¤cƒ|3Ê›!õ_øú5®THž¢U¤V~ ó5“”·ä}ð½*“»F1ºñ¤ïq9bìt} Âê6eO¢!tBEyD4 ‚­šŠ‡¤: ¨<ÞÊØ6 •‹ý¿ÔšÀ÷&Ÿtp§5x ~È6Pˉõçü¯°çÅÚ͘j€iYËæ†í-ÐÓ2œ’Ö‹KæA•ý-ì© ¨ìëˆwÕ‚¡(ëIJ=cî©Ä2ÓʧysÄÕ%ó½MÄ„ƒ}KQÆ^bØìyÍ]‡ÐJÛ© ®¼[mmü…‹+àu¼ŸÑûs""Iê{…‚!ñd‡ê ÚPÈÐüúÌí×Fþ>ký¦¢Z¡PYŸÐl (†Å½ÛcSEÚÙ¨ƒÛ?ýÓÑÊx…ÜÓ?ß|¢5‚TØòÁ–û— ¡ïªÙøUâ·Õ½‹õÏ@ÜêódÙ HÈ|ëq=Ýé3ý•œþ pAj},Ôú’=>6­û¼Îe¥ƒÐ³¹ùƤÕ†™’GªÒa²-}„Ú­Díò`®à(È€%vÓ!}ïqJÊ;2ºÁ€–µÑdt>IŽ{Ö™@óBë‹Ù—™PÝ|1ˆ(òv^í¨Sƒ¬ÉáNMHÅÉüê[\$ï;ìò© òœTlû™?¯ Ñ‘¶Uƒ3ËÎ:û)úz>/[a™ ÿÉð»_»ãÀû<•n¶`<„QɶL9p[*®«öåëÅîªDrn¸tVò>î’ç'æ‹´Sàdt=æ´a öešûöK`•”‰»sŒ¥ß?Züý:Éð²_É眷6v\ê7±o¬[¬œ@¬¹³Š‡Ë“‹Ó“™Ä²¾ÓK×Ú—ÄrÇ•eþ/‰UË@ó I1bíדßiGˆõ†®]íĆd”µðd±®ìøôï6b•uìSŸ$7±¸ÁkÒò…˜Û›“tCÑœ˜œ‘wÚÊ,#þÆ1ÔK4<&úù-‹ub\@ó7ÀÑÎ:lgeÝ,³ŒÁ˯@[”iáÿd# áwj+Á´Ò5´NEcv»lèÂU(Qs*4€¢VoÒµÝÁPxkûÙößaÈ‹öÞpÚ™*U~ÿP3HI›ýHu÷Hƒ4Ä<½•åÇB´ìåã;# ‘ì=7×n‘=ºØ/¶5rŸYjZ¨T¡òí—Ç£ÃÃÐt½ØE! ™Õ×?=da`œÊx±í7Œ~«IÜ¥¾“Ó çE=Á¤yôÒ©§K0^=P¶ #Ƭ×רV¡o³0çs1:âsm§¾@cøûÉ ú]PéèêN+ù ù_7Xã,!=%—Ö ‰Ž{šŽÏ±g­f‡H(»÷^éS\d¨½æ þÂ`î*+𦱴U¼iwÉ‚ÛÙÌ“àÕ¯,2ÈGGå°ré°/qó7=ÀÖùH¸W§lüj? ÁP°îláÉÔ ’uè×2‡}³Tný tÓcû"^V‡v:2— Tÿ ó䛩ŽM·ýuˆ•OÓÑû.‹r~6ÕTÄ<«!¯¬g1wèÔN.áÄ\MÕסÄ|·aæÒ‡çÄ"o¥ÃÚb#±¸pRå‚ó=bIÔáwÙgbñ @fã² 1Ÿ[Ø·FÌ"Z“†¤DL¾¶ÿaNü‹QpQ8¯@ Ί?[Ñ)}òAÖÁJÐøÄìæ(™뇯ÛY_)ƒ'Qì˜"„¥Å/.Q†µç³€²]Þ™\m\¹ rt_lx]E ß³Oˆ q»ËÞÉ C‡bßñ‡?ÈüÂZý+ãdÔÌ"Bæ½!y/Ý–#ïHʤ[¿$ê Ê^{åԈ2ÄdC¯rñ9C¢ì]Э–FȲXh îr„RaoÛÿÿÔû7jíÄf‘{m´Ðk¸Ÿ$´ C¯S·¶SÀ˜CJ ¤€ÆqǬŠÉó×hè´ù3ÚIJÜ®9 ½»öËѧ ⳯UÛ|ihBù˹N_]Èe ºïëƒÔýè_ÿ‚t¥°þÅDN³Fnã%ûi@àw>Oð8ríx´U’KÜùÀeØpD —}.©ï3ã’EË0åQÿà&bïy¶„50š\ñý „™2õ;@?ZmTA´‚nþh@ëAІ×õV=‰:aúFœ×IPZîÜ>ÐËHlÄKXæï'–›Ö::$‰ùò%9ÎzSb¦ì½~“Tbêßü|­m;1™Âÿ`¤;ˆ˜’R²s§½BLÙ»Èa¶LÌØûvÊí,1³±5“gBöQ½À$®"b&<š­¨kš˜ÖyîúÌí11þ¨£•‡®–øÇ©óöÌ1hr`óSÑ}ÐûWg0'ñkûŠ¡r“.¨_›R¿¹ –loÒœ£¸»ÄÅöl)AHyï:TA yӽػR1ê,ú‡Ö «-Äeçá¹Uƒ’Ö¼ÏxzÔ¿ÚòŠ/ø$Îþ†l+gÿ7rÿ¸½æ,÷N…D=ï;¦ð ˆu–_Ñyá+œç»‡© ´/ãd~A„ÊøÔzw|ÈØW4é#¾VüÞPxír6÷]Ô&…µ¾Þ°…–…ÿ铵ÒÐu?5[ýHú‹DEû" s2¬+;ÀÈVÌëG- kÞÊÜWö„V&·ÊØèÖš\é$ókÏê6‹ÃP¯}go·w’œÃÁRëáÈÞ߯¥üy’Ç㔨½1g³Ü󌮹­«û|´IœSdßã¶“–Û#NÑòÜPÍç`»–§¨,fÛ¨þ€×é`xýRܹò$èòf%ÒsÉy(•eê1h.¿|œa Ô½Ó-lŽ1 ÞÃð¡øx¨Âe/ÿŒ#ò )k^(/±§Dó—]€Xkˆþs½˜Xª¤¼{“˜ëÿÈÑ*BLGÉÇOlãÒk*JN;‰ÑGSÛ?§ö¿N¾Iü3pÏ© &F¼þ>=ÇÀFŒþŒ^êyFŒufœåW˜ Æ™„gû‡ˆ1R¹Î®+bDЩ#$žø#÷_µÕë(b 5“ï´äE¢û×ìÄÔD%ÑZB¼w{O4]fó¹é5 ªÏ:ßÚ+LÁ¼û;Iƒ†ìc#¹ƒ¿@`BTè¦èCˆ£6Ð’ú $Ÿ´¾é…èwO‹!Û²®4Y{rA'Ƈ!Gq|EËQ27­<ˆ]' å"76uö;H½ÆUy¦ *ÞýùáÐ}V…Ç-P <¤ž`i ÁöÿŠ)†ßCL-óÍI›UH–®vþ.¦ÜÛ+ª=ösPIf3KÛ¯ùO;^„öš÷Œƒìsèý7%.jƒ¾"‡e»aH—ÿÜ«µ/y›äÛ¹¡o¦Ÿc]jui—÷²Ð2ºæ u°7¹hBñý©ˆž´<Èľ6Zþn ûTêŸ#ÞÒÑh6?m´óžVp;Çл%ãAKØnÞk`é9}UÌ“ÜNáTÿ¼Æ@wêÖë½= \ÓâZ•ó« ³Ò+ ”M±0¿Þ Šcú¿£*‰­ªƒ «&ۉ͟¹í¿Îð‘ýâÀÑ«‡îkÙÜ㣽†ÄŠìeþÆ |Ä"i»Ýô± Äl_¡ÌÅbêšnÙåFbTt×¹»7¸ˆ?©ûÆ‹ˆÁ»çΚý B…"(š²Éç¬ô}è<1ôÔbÄ¢“Š˜aþ¬ùˆ¶¥»§óo€>£J71J }e¿ôvšÔt:9kKôÍ0éL<¥&º®™_*`X%Z„ÄíjÎ#~x„Ö5¨:ßôÎoÒÜejóÆ  _I7>ØÎo›>;Àæ©£ÚMˆz¬õ²sˆHqˆ W„Ô@uAíScÈ–ZÛ2³A–ë-G-džœîûÝïi#ÕZÖ VH*Òý9­zâlÞ†Ÿ„°ÚÆÍŠG²àr¾Âq|qzÿ> üþ¥ M4NÎ7“z %¾ó˜:ÈÔNWŽúBÉeáÚˆëW¨¿Ö¹“1m­G¢ï÷„t@Wl¦7' zÿ¾ìÏé¼ýÒµbg?èGÔýaÞ ½¹™7¡£·yÒÙaš÷5gª¡æùB©P(Ù>=ö½ÒOÅb”Ü΂´?ãWß?&þýÎlLù<ß÷ rU€“^'«u(,W.åuF2ÁâÜ×ûFdÿœ /ƒ¨lþÊꪅAP´JP2±áA: ¤x„XÛ­õ0ö¸4±²¶¯>øì bED¡ÜÿæNbÙöƒÁObi‡Dú`G ±ð=v€ù¦1Wg£~¼¦†˜ñôúüôF)1ñüÑ÷´?‘Ä¿—‹MéÄ뵑ßÖ‰~áx¢Cô.Ñä9š];Í)‹Z‰.‡€°´Dw¨õð‡û÷ˆ^¦S{3×–‰>«ÏσŒ‰>¨Ä*þ¢wo“nxáѵž×Ü"G´'¬Íß[@ü ŸÛì8Lü0V¤Ês†¨ÝV/`UH|aQ?]±uGrG®dƃ¾ÃË1%ªá«ÛýÁ[Èáºí „w%œ•Éz×O¡ä HP[´‚ÔŒdë`0 Ò×êCšÛ÷Ã:HVǽžW^©­¥Ç9¢™Å’›š¤¡S»Þ ]«Ó{äÁ“æfíñ ¼qût4 (Êòï݈ێU1º@jáMÔSŸf(hhVŠÈ®@uÄkTÒà4­Bí)jb¡ýi{å’.нcñ­’4ÈœÔUúÂõf0m‰Ê>9 ®öbÅëÀƺÓ鵂rª©nì »Ý@[.( ^Ò°¹Hl< ͧ¹E¬, êŒ&–l#ý"Üm‰…аñü´î{Å´ÄÜ“•ÉljÙeІúà&bVšMZ+ÄôÒ™#¦IšÄd½"0¨OŒ1{Rr9#þRø:+Ü ÷¿|ˆÈ©ƒD¯—äÙÙ‰×D‡á²·¤åÑ:J{܄śøuôJÀím,dŽÐèçÕ8K´òËÐ9©mj¿nØ;¿i¯'Îe|"~ËûÔð¡hs}í÷ÿG¾=®Q^'šù¬îŸczM4±.˜•hßÞŸŒw¬"¾$^t޾B”øò7þõÌ$6Y(ó:Ü@ÛÙe¼‘lv¾ñU9à^IÕî»A¦¬+Ú=–íÞ‘òÅô=H3êvÝ ÙÜ™l7ó{’uI¾çéOCÒû[‚Ôé HèRî`Ôè'óHhbbˆ„ª²”,޵ï_Æ%×ìà¡Øðà§×[½Ù%>?p‡þž:“œ¾¢;N&_@Ä/ŽÏà'$uW’ÓŸ…IýþêæP¾K§hHöTõµž¬gfï uŒóAœ’>t´Fî¥ AWóÒ÷å•(è•Ë Ö›CÇ.b@b1Z1“S¢TÝÐ0Rœ§3ƒŠ"UC¥ä6÷•ňC²Ód$ek¢º«?Ž|ø¾ÃýƒÅ Qà”õUžJ,SÊ·«Æ- å¢Ü‡ú— dùõX7Q¦Ú·ŸXêœ^»¦pŽ˜B•ËP}Œ˜µþÓB—Õ¬ Ñ´ï鮯ùÄ‘ à ÑkÄw<+uêĺ!çèÔ â‡nðr°]<ÑØaÜÒau¨ûs"*"›øš±ïCÐ ¢bF‡ù¡ 'QÒkÿGi/ñvªàLÜi´Îõ÷ÿq3‘)"$C\{ïÏÔðþTJƒáÛ Í…ŠJ$¥„¨¯Ò<(J¥Ò€BƒB!*)TD¥ !Só÷[ëÿ½öóÆYg¯sn¼n]ÏësõXçÛ/Ž~9ìM/š}õåŸg¿¾ë’}»Óü°í÷t;ky^µÖð“§6}8¯ùæà-?,ښשô[ÕJöçõ¦•˜òéOšóÐÜwôÍ”o}üKòc¦4¾k×øyýfWU^94¯óç Ÿµ{xD^KÇô9÷„(¯>å™Ð¶v©¼j©WŽ\÷^ó¼Ê=ü7ʸgÆÀ—ž½+¯~ËÉ£ŽNÊšvmÍS–ÿßß¿Ï~²]ÿªyãã¯?urݵy³s?Þ2öѾy«Û—E¯Ø/—j+Ÿýcý¹þ2óö™Ýöæ¶¹áäÃ;þœGUïÙ³ù×Á¹µ»å„–”ÌåíwFß^ùâ¼õðS{ßöeï¼ùþþß\vÛuy“eSFœ¼¤^Þ°Äi Ö”ú9¯3饦̾*¯¾òˆõõþÝ”W¾ Óùg¿(/?¥V¯cëOÏKiíåÛ>¹9ì{aȧ3þ˜þ©}ùI—öû'l¯û{—AŒ 6±fÙ;Ÿ Žx«ÁëÖ¯ùí¯•§ýÖxñ5éúáã'½Ü÷ƒ7Ãïç>þáf…µ§ŽÒç³Â¯ß•mñïS;Ú½Ç,¼ù‚¡áçáúöñ®á‡÷~ҽͅûpå? –ݾ.ÿùøÓ¾¹<|ñÙì®ã®½ºöɪ÷~>yg~ï½ÃBÞÿôƒ{ W¿uÛS× Ÿn?öþs×Í ‹õ{ SßaѺžÿpÛ›aQÅ÷okózXØ¢ë#îz5|rë…¿]ús¥07ºù“ºó„÷ÇöѧO–¸ú•ã–‡7n;vÜèæ…°ë²NíÛ>r^òý]5ŽÙ·$¯ðм®U>~/¯ÒúþF‡4Û‘Wo÷ÞúôÑŠy-k³½ë¬_ò:ª®6hH^÷ž æ]Ð*¯w[–sêîÉë.;çñ#Ϊ±ç¯hÿO^kçð㯮Ü#¯1~ýk·üqv^õ–rög×>y•Š5šwXrz^iã·í>¾«t^ù¤Ó|xà`ç;œù®Qq~dÃÿ¾3eéÅy½2Ÿ}:£Ì§ù±F,ozîþ¼é±2õîç_Ï[V›uþšoÛä­?ÿììÁ•6|îØ¢ã'^žë«ó¾¿þ¤Á¹þ^íº} zçšÿ8ò¬³Úç…/k¾pöøÅy«‘÷Î=¢Iµ¼Ù¼%C¶^10o¼´îó]˜7h4µÉºË×çµ,XÜæ°yµÛ»–nعc^ñ­²çÌ›Ú5/Ûø)?õäp`ÜÖõŸ(vÕs袚/†mkÌèùs›°ù¾Ú‹þ.Ó&¬8ôÌ_Ü~/÷ÄyS ‡†_Î8å£5á—nòûݾkw­~bÅ›ÃêOoiÖ(k~Þq×g_P-¬ü|Âî›Ï¼<ü°¯j럹+|7áÍö5¾»=,/}Ζ¡³_Kï^иã%ï†Å+ßÝç·ÎaAÕÒ¥;üx Ì[³ìîÚ}æžtB髦ÿæ,_ØeóÊsÂÜpb v[˜»«õì¦ãÖ…y£©òqÍ1aÞsáøEuscÖ°\ÞÙvÏè>‹siYëµËì—·^Ýpù=ó–ÿœ¾ A¿ùñ·ÝYéÉ©;òFsÛ¯­Á±ù1gÖ;!/äµ^šÜù²Z;Ú¢gë_ŽÊíTrúc÷^˜—ú{B“yñˆ°wøäÍ»mlØqé·'Gµn›·Mºúº‹–‡u®½vŰc¯?4úüê'Z†Õ«÷­>óûÛÃÊmïN;¯íªðãSío8®s™ðÃ1]_üý¥ãÃ÷{—´øeÈ‹á»ÙG~ØjÐÙáÛ£¯øaÔ)=Ãò’²,|¼-|5äð;_»ÿ­ðÅÓŸµl{ÂëáÓ+ñp·ƒ¿š»¶ÅMŽ sš¾6ºï¡uÃûþóß]õî ³~¾´ÄÏ_¼f5¬ó𸬧;lÞ¹ö¸ðœ³ñÒðÞe×½]â™'Ã{7ÿ •¦áÝQMgÌ?93'Ž=ÿÊe'„·ºuZå¦kÃÔQöÝWSê´nsôi?‡oøúß/:,kÙ¤ ~Þü0oûzí¼êˆCF}_¥F^«Û]‡}oCòúŸ=øfËfãóFÇ6úíê;çMœóÇØ7ŽË[L›¾;¯1 o}Ø ¿¼=í®¼Ðøƒ¹3^{6/ ÝYóŒú=òBÕ-¬ë?;oõå€áÖhž·8oj÷ûÖ~’7­]aÛOîÎ}ñ´£Þ­qi^oöŸ]ÏyÂò#[õèÜGçU6o}±ôÌy….õ÷ºìàóH³®­y°#ã÷è=$l=céÎLë†õ×Ðcô¾ƒÝè:£á¡{„UËŸÞ_ÿôaÅÔsþ;á§ðímNÌß¾$,vèGe÷gaÙ¹O¿Ýû¤Aáë®åîYrL¯ðUï¯Û—o·üãÜ'Wí ÿŒ½é¿mk”—¸`æ£ ×äe‡íùõІä‡þ3åí!3jæUªßùËËVçUÃÙǯ»­^mê##’oC^ýä°xçêŽyµ%]O«÷SšWÒ°ú eNÏ«Œit}½éMóНl½÷žËÎ+ôÛ÷ù«³+åeÏ/”;eý¼L¹‡Ú<ýî ¼ìIßþÕåØNù!7÷k}ß…Sò*þ<|[¿³ò+·O£î3Úæ­~½{ØÀ IÞò³½ÿT<½tÞì1Ý^ó¯oò&¯^6¥ñÇýò†ƒN¹î®o_Ì^óT‡Å{æ5ÞšÛºåÞ¾yå³î?¤Ë3y¹Â«í›Ñ/ü;'¯ÿ‘ÃÎVköÕ9âú°©ÿ/>Û®køíï#'=1õ¤°jÓ;õº!|÷ë·û¿sRXvˆ‰ÿ4¯–ÎürßÙÿÔ KšW¨ÖRåðy‹1åï»dXü^ùÎŒ¾‹Ú®™·ó±ËÂÂ;º\ôÔ©+Ã|íþp©|t˜wO§7›ïX>Êï>sõ†ráÝñg…&}g…·_|d˜œqSxëÝçJÞñtË0¥âìÓk\^);ø˜ûº‡—·Ž{é¿M‡ÉÍV\?¾íQaòÎÑÍ×w)^y¡áñ“6á•7ê8ô±¡aògÍw•{ã’ðÒ¦&Ï÷xpu˜tò˜ÙU¶7ËŽ~rÛÞááé6÷¾1ç¸Ã# GÌX½¾i}l“Þ_?‡#ÍþùÌ-aG¥ÏË îW.ìý´ïÉoϽ//Õñ™n«hŸ—Û~RÝa'|¸jÐ9Kþy?¯\©Ìì[^e^ßÉ¿õú%?"½êª'f¥y•>¾ ÖòÊwÞÙxÖaççOØ8{àü;ó =O´m‹Wæe¾9pE?,/3²ûºnyɸÞċϾ1/uýº£—Î/›—kßeJ­R·ç•øµò'åÕîþøßžÎÍZøçûI|A~Ì}‹+.ØüsÞ¨ë› —ŽŸ7­²¶JÉS;åÍŸ»¤Â/‹ó–gMXûÓ1_ç'3æònËOÍ[>zâÓe¾é’7ŸuÜÖ>·Ý7]ôÖKUþüàsñâÞÖ¶TÞ Í÷=ÛV“×Þñú­çó]^½Õ«·nü&¯TçêOz¯]–—¹ðæ}Í:-ì}ïš÷ži¼$l{sý¶‡®éÖç7–[Ø{CXsõGòàï†ïçÔ<ç“–…¯‡<õíÊÏ„/οíê=·öŸN]$ƒªæï©öH~à‘ðÉ¥cKv<ú½ðqtõýܱ#Ì«;|Úð[> s>¿µÂÒȇ»}¾ú­{¾?<ÚcöÞÂŒs~½G7, ÓN©xè/Ï^?ÿî¯öÜÕ&¼<©åÄq[w|Ý_•]óJ&Þ´râÞË j>læ,L˜¸iÔ®%ÃÄzïþïÕûÃćþ=áíÂı߾þH™SÄío 8ýüšá¹Kê\¶ç»¦áéWë\òÚÍ£Âãg|;vÆ´Gøç‡(ß1„Q×.}öñŠÝÂð'/ùè„í¿„?±ñ´ Ã_?Ì-a‡]þ¹ôÝgÞ8/ü;é=}ο2/}ίQç»ëçåKL:c[—jù¡µæ¯ýsêÁç—æ ;LyuG^qëæö5ìѼb§1‹úþñT~è€{î¹qÏ‚¼ü[ ^žùçڼ̈ »Wûè¼äƒÇmЮÿ.);¦æüma§'?¿ç«pàƒ–gŒý¿ÿãvó73Ú~ŸÞëÎw ½dþ¸‹„yõ'œ_1Ô½ß÷™ »„Ù5vµKûo ï·»´ËøÂúðîä“O,wR˜ùÑÜÊ:²tx§Ç¯ñÂI˜öÒýŸ¾6ò¿áÍ^{oÞzwxeòŸ\ÿZ˜ô¿ýìIa°—vhíðtç¯Ç´?âÖðD™;æŒ}7<öò÷ ^éödxìÙG®#ׄǵWÒã¸áñÙÏí-ýxÛðø‡]9õƒþá±ßVZ¿uãÇÊ·û¥D7eÁÍ;žÆ\_öÓö|Ùô²o,îiñXZ¶æþ0èKI ‹¯ ¿F›WJï÷¼:æÂÕƒÃö®Ÿ«±àû°ûþÙ=Û¾W7/Qjä–C;7ÉK9e舊Óó²¯4:sѰ#òò]W.jÑu]^¡\ç[?ÛðC^þže·]´ù´¼ì?ƒZλ¦\^úµéÇô½þݼd¥Û ¾.÷Ÿ4û¯ÒMn »?íývëÒS®…½ªxÂÂÞ¦^ýó¨ó?ƯO>ô¼ÜÛkÜYöýüðgæ—ùrÙÁÏ[C——œ8⓼öã|¿dPýü˜?›4íõïòcgެÒëßCò&}~kõAÍyÓKþxí3òãã £G6{1oúÛK/OÙ±6?î¦{l8øy¸ñ!Ãf/¬¶=oXªóio®®š×½¡É÷å›?–×ܺ²÷o}–Q·i³s?žW¸½õƒ—ÕÈK|»úˆÆsº‡¿o|ðÙ•µo›N¨¹bÓŽ·Â/¿·áòÂ÷§½6è‰;††¥Õ&ÿ8÷«×ÂNç\ØéôåaÎè3ëOü°wxo`χ/:¿_˜1ëÕ—4jÞ·6>«ÖYaz‹sÆÜ»¦t˜ºcèíC¦~Þztчžù[x}Å•ãÞy`Yxeÿg·ìœuexñ§?¾º¢ã÷aâò®ÙrFxfØø=[í -¾îÑ.7}ÆÍ9yÀÒ¡MÃØKo°j÷Š0zü+}¶¶2Œî>tè%g…1•í™ÏFžÆÌ¼áÏé_ìc¦Lh;¢ÁŸaôÈ«þlûÓ½aTòõU§þç†ðßßoë³~Õœ0|këGßÔ) ™uûUU§‡ÛÇö?©Ô™ÓÂ-#מ1ë÷SÃσG]º·÷’ðû–Žý†21lYPhüNËaÇ–•ퟻ* {òøÇ'Ïz8h¿iðàš—œÛ½a¥ÖóÒÍ^¹ìã#*䥧Þ÷æS“ËK·ýð·ªS÷ç¥Jõ¿hñÐ’y‰†Rzøæ1a_‰ë†a×{FUoÂÎ+†üœ¹?ì˜Wãù¯_þ>üScË¥…_‡ýUϼ¾á‰yéñý'ÿ´Y~èG\ÜzÚÁ硆-;|Ô¡w~äÄOû8uP^wÔ™{HüÁ+S¯ýdO·¼QÓK+wþ%o¼íÀÝOl7Ytûå5ž¹-oò ;¯öž¼ñ™«+µ=²I~ì1—ÝßæŒÒù1Ýïì_£C«¼ög~.=™W_[/º½ãô¼rƒéUÍËI»¹/?ÿ\ø·Û×{‡]ùjØQ¥qÕ«ßÖ¸¶ïf#ÂêÏ/½ëÇãÂò^÷ö¾ñ®wÂâ¯õÙ½¨K˜Ûïž ;;Y˜µv×ãk*ïÓÛl{hîM3Â[MvÏ]>çô0åë^8nP½ðê +ü¾wD˜üÍG/<²azxé—×·ûme˜4vÉŒ†5 ý之~]ž­ÒçÝá<ž4ißøK‡‡G|ù|õ¯â0¦FÏ}·»ë”·Ãð‘vûî«ëÒ_óF×ß¾0QØò|÷.ýòc ûà9ŸG²¦^ùf¯¼îè[o¾uæ7y­æ#ëTù¦¼êŠfõ9þù¼âáÓ:ÿ±¬W^úïC·½SºcØÏ[:ì³ÂÖï¶~s²ƒ¯£Ioõ÷ç÷…ŸªLjÕo[ÃWYÿãçõ™æ_vËç'6mÞ¿±ô¦›«daÚ‚o[üxqÏðÚoØ;¼´lë¿/n'L*¹¾ïi'L Ïw¬®;¯t˜°û³™×ÌÞžÓè«ß*— Oÿ{oÃ.Ë>O\Øç­ÏeVxä†F½z^ûTï¹Kªpÿõ‡ŸüéUO|Ý¿;xè7åÃÐrw¾àÈ(Ü•W-÷ää?»þó^¹Ã·¾W§Nó¾áŽå]6üÖÿÜ0¨íÏÕ{lEÔâÝÓî˜ôJ¸£yù¼s¿ÂÀfÛfoµ%ÜzÁч­^sQè»ioèU ½gÚè³9.ôøå­‰¿~6\={Õ6©0/,ïVþ¦›.ÝV¾9û “Ï ¿í¾¦ß ÷ÂÆ£ÞŸñû)uÂ_û&tßßø°ã´uÛW¾80ü½wØô£‡ »¾<ñƒVn »7Hy¾yصãçV•¯Úþ¹ðy;ldó°ãϲ³ïwRØÿÙ왃ï»[¼³ÑÆO¯Þzï§wù.üÙ»æó¡Ý†ð×%ž°ÂÓagÜo×ûk;„ým¯8}fû]y™kJv˜Ý®}~Øâ—Ê4{Z^õŒ>¼ÿþïò#KuÞØ#›ó:oÌü¥ÓÜ1yýù¿í9ýú¼A×ÿž<æ›yÃúלyñ ÷å K,éÈÍó‡ŒjÖÿî“òz3'÷yh¹åµ»VØôû˜QyG6ÿü?äU¾i½ôªM«òCp÷Cµ[ä%åÒ»ÞÇaWóïäüv•–/ juR!üúuóO*V:ø~“õzîÜ˾ _Ô{ô£×/ÚæÞ7îìé»?ï¼¹bäY—ÿ¦Ü2gÎm­_ “.ÙõÙ?… •›U+óÉ áéQÝï>eðØðÄÚ»·œ¿á¶ðØ_[òc'¼-Ý¿÷¾é?„q_wètøUÃØÎ->ŠNÛèqùÞË—n ÷†—hyeúòI‡Ÿ:¡Lôkõ»¾?< ùÐÏ|zbè|}‰I=BßÇšŸú¬›CßF[æ­¾i_èûŸï¿­; zè;zl‡êçüùÀ‹þ|þQáæ/×¾b‚†›»´Æ¹·N 7t«}ßµç®-÷ÁÑ'|Y6t»¹ýU/¸;\Q§ü§W=tê:é‚3«„¥G~÷Ð⋯ ßÝÜ~töøíaõÉ·¬Ö÷ñ°¶Çø5»Þœ6|½ü†Û¦/ [öí¹©iÙöÆín*³ð‰°ý±—ßM™°ã˜/®é64l§éÒ7j­ ÛúwÆ+k÷…¿î¿jcƒÃ? þÔigËvï…õõËÍì~å#á÷_¯jµ®Ù­á“.­ÑoËïaã‰Ç~ÿE•$lÝÖ¾º¾Þ/ì>¤K§æçÌKŽÉ §Œx2¯pøeïT_ÿ{^ùÃwNy&©W¯4øÎyÉÖ¼VëãG?Q>¯³¬Þ¦§¾ï•×Ú¬çûŽÎëÿ4þ±‡_•ןÞò¶‘sFæõù캳n™—שóÌ­ÏÆïäG¶ï5ì¾ WäժιýÕŽŸå•æ¬)uí/äåꟹô³þ‡‡ÝÖÞÞä¦OÃζ'öú!j6>÷Fç#8-¬ 3voyo|XþÍ —ä§OïiP¥ÓÉáƒÕ—õ™8ô´05¯ûøëåj|z~hW“³;…ñ¯œò]¥)ixì¿ã^ÜÓ±N·üù3§¿^/ŒýxÐ;ލF¿Ü«ÚäùLJvµ¼³_ÍCÂÈ7ÌWçË0bÊK/zø²0ì¸îvØiSÂ]7ßýo…—Ž ·ýçºÓßöj¸åâ¯; ØõVèsÇÖ6óë´ ½¶½÷[J“CÏÉû׬¿òÙÐc{ødÊSËBÏ#–?YjRÇÐóÂ+ÆÕh38ôluóÓúúƒ¡ÇEKçþ½¹J¸fêá·n’ö¡ë•+6èñh¸ÒzõÞñƽáân/W;å‹þáü¯{®Û Ã9+Ú½ùÓWK”(SªD‰²J”(Q¥D‰Úoü~ÈÁ¯’…ÿò¿CÿwØÿŽèGü¿#ùß‘þïÈþÿQªÐºxŠ—/-^V¼¢â¯¤x¥Å«¸!Å )nHqCŠRÜâ†7¤¸!Å )nhqC‹ZÜÐâ†7´¸¡Å -nhqC‹Vܰâ†7¬¸aÅ +nXqÊVܰâFT܈ŠQq#*nDŨ¸7¢âFT܈Šqq#.nÄŸ¸7ââF\܈‹qq#.n$Ť¸‘7’âFRÜHŠIq#)n$Ť¸‘7ÒâFZÜH‹iq#-n¤Å´¸‘7ÒâFVÜÈŠYq#+ndŬ¸‘7²âFVÜÈþ·QºÐºµŸ?ÅOõÓüŒüŒýLüLýôµ‚¯|­àk_+øZÁ× ¾V𵂯|M|M|M|M|M|M|M|M|M|M|M}M}M}M}M}M}M}M}M}M}Í|Í|Í|Í|Í|Í|Í|Í|Í|Í|-òµÈ×"_‹|-òµÈ×"_‹|-òµÈ×b_‹}-öµØ×b_‹}-öµØ×b_‹}-ñµÄ×_K|-ñµÄ×_K|-ñµÄ×R_K}-õµÔ×R_K}-õµÔ×R_K}-óµÌ×2_Ë|-óµÌ×2_Ë|-ó5o‰xKÄ["Þñ–ˆ·D¼%â-o‰xKÄ["Þñ–ˆ·D¼%â-o‰xKÄ["Þñ–ˆ·D¼%â-o‰xKÄ["Þñ–ˆ·D¼%â-o‰xKÄ["Þñ–ˆ·D¼%â-o‰xKÄ["Þñ–ˆ·D¼%â-o‰xKÄ["Þñ–ˆ·D¼%â-o‰xKÄ["Þñ–ˆ·D¼%â-o‰xKÄ["Þñ–ˆ·D¼%â-o‰xKÄ["Þñ–ˆ·D¼%â-o‰xKÄ["Þñ–ˆ·D¼%â-o‰xKÄ["Þñ–ˆ·D¼%â-o‰xKÄ["Þñ–¨·D½%ê-Qo‰zKÔ[¢Þõ–¨·D½%ê-Qo‰zKÔ[¢Þõ–¨·D½%ê-Qo‰zKÔ[¢Þõ–¨·D½%ê-Qo‰zKÔ[¢Þõ–¨·D½%ê-Qo‰zKÔ[¢Þõ–¨·D½%ê-Qo‰zKÔ[¢Þõ–¨·D½%ê-Qo‰zKÔ[¢Þõ–¨·D½%ê-Qo‰zKÔ[¢Þõ–¨·D½%ê-Qo‰zKÔ[¢Þõ–¨·D½%ê-Qo‰zKÔ[¢Þõ–¨·D½%ê-Qo‰zKÔ[¢Þõ–¨·D½%ê-Qo‰zKÔ[¢Þõ–¨·D½%ê-Qo‰yKÌ[bÞ󖘷ļ%æ-1o‰yKÌ[bÞ󖘷ļ%æ-1o‰yKÌ[bÞ󖘷ļ%æ-1o‰yKÌ[bÞ󖘷ļ%æ-1o‰yKÌ[bÞ󖘷ļ%æ-1o‰yKÌ[bÞ󖘷ļ%æ-1o‰yKÌ[bÞ󖘷ļ%æ-1o‰yKÌ[bÞ󖘷ļ%æ-1o‰yKÌ[bÞ󖘷ļ%æ-1o‰yKÌ[bÞ󖘷ļ%æ-1o‰yKÌ[bÞ󖘷ļ%æ-1o‰yKÌ[bÞ󖘷ļ%æ-1o‰yKÌ[bÞó–DÞ’È[yK"oIä-‰¼%‘·$ò–DÞ’È[yK"oIä-‰¼%‘·$ò–DÞ’È[yK"oIä-‰¼%‘·$ò–DÞ’È[yK"oIä-‰¼%‘·$ò–DÞ’È[yK"oIä-‰¼%‘·$ò–DÞ’È[yK"oIä-‰¼%‘·$ò–DÞ’È[yK"oIä-‰¼%‘·$ò–DÞ’È[yK"oIä-‰¼%‘·$ò–DÞ’È[yK"oIä-‰¼%‘·$ò–DÞ’È[yK"oIä-‰¼%‘·$ò–DÞ’È[yK"oIä-‰¼%‘·$ò–DÞ’È[yK"oIä-‰¼%‘·$ò–DÞ’È[yK"oIì-‰½%±·$ö–ÄÞ’Ø[{KboIì-‰½%±·$ö–ÄÞ’Ø[{KboIì-‰½%±·$ö–ÄÞ’Ø[{KboIì-‰½%±·$ö–ÄÞ’Ø[{KboIì-‰½%±·$ö–ÄÞ’Ø[{KboIì-‰½%±·$ö–ÄÞ’Ø[{KboIì-‰½%±·$ö–ÄÞ’Ø[{KboIì-‰½%±·$ö–ÄÞ’Ø[{KboIì-‰½%±·$ö–ÄÞ’Ø[{KboIì-‰½%±·$ö–ÄÞ’Ø[{KboIì-‰½%±·$ö–ÄÞ’Ø[{KboIì-‰½%±·$ö–ÄÞ’Ø[{KboIì-‰½%±·$ö–$Þ’Ä[’xKoIâ-I¼%‰·$ñ–$Þ’Ä[’xKoIâ-I¼%‰·$ñ–$Þ’Ä[’xKoIâ-I¼%‰·$ñ–$Þ’Ä[’xKoIâ-I¼%‰·$ñ–$Þ’Ä[’xKoIâ-I¼%‰·$ñ–$Þ’Ä[’xKoIâ-I¼%‰·$ñ–$Þ’Ä[’xKoIâ-I¼%‰·$ñ–$Þ’Ä[’xKoIâ-I¼%‰·$ñ–$Þ’Ä[’xKoIâ-I¼%‰·$ñ–$Þ’Ä[’xKoIâ-I¼%‰·$ñ–$Þ’Ä[’xKoIâ-I¼%‰·$ñ–$Þ’Ä[’xKoIâ-I¼%‰·$ñ–$Þ’Ä[’xKoIê-I½%©·$õ–¤Þ’Ô[’zKRoIê-I½%©·$õ–¤Þ’Ô[’zKRoIê-I½%©·$õ–¤Þ’Ô[’zKRoIê-I½%©·$õ–¤Þ’Ô[’zKRoIê-I½%©·$õ–¤Þ’Ô[’zKRoIê-I½%©·$õ–¤Þ’Ô[’zKRoIê-I½%©·$õ–¤Þ’Ô[’zKRoIê-I½%©·$õ–¤Þ’Ô[’zKRoIê-I½%©·$õ–¤Þ’Ô[’zKRoIê-I½%©·$õ–¤Þ’Ô[’zKRoIê-I½%©·$õ–¤Þ’Ô[’zKRoIê-I½%©·$õ–¤Þ’Ô[’zKRoIê-I½%©·$õ–dÞ’Ì[’yK2oIæ-ɼ%™·$ó–dÞ’Ì[’yK2oIæ-ɼ%™·$ó–dÞ’Ì[’yK2oIæ-ɼ%™·$ó–dÞ’Ì[’yK2oIæ-ɼ%™·$ó–dÞ’Ì[’yK2oIæ-ɼ%™·$ó–dÞ’Ì[’yK2oIæ-ɼ%™·$ó–dÞ’Ì[’yK2oIæ-ɼ%™·$ó–dÞ’Ì[’yK2oIæ-ɼ%™·$ó–dÞ’Ì[’yK2oIæ-ɼ%™·$ó–dÞ’Ì[’yK2oIæ-ɼ%™·$ó–dÞ’Ì[’yK2oIæ-ɼ%™·$ó–dÞ’Ì[’yK2oIæ-ɼ%™·$ó–dÞ’Ì[’yK²bKÊZcòw·àV܆;ÂãNp§¸±[Àn»ì°[Àn»ì°[Àn»‚]Á®`W°+Øì v»‚]Á®bW±«ØUì*v»Š]Å®bW±kØ5ìv »†]îa×°kØ5ìFذa7Ân„Ý»v#ìFذc7ÆnŒÝ»1vcìÆØ±c7Æn‚Ý» vì&ØM°›`7Án‚Ý»)vSì¦ØM±›b7ÅnŠÝ»)vSìfØÍ°›a7Ãn†Ý »v3ìfØE¯ èU½* Wôª€^ЫzU@¯ èU½* Wôª€^ЫzU@¯ èU½* Wôª€^ЫzU@¯ èU½* Wôª€^ЫzU@¯ èU½* Wôª€^ЫzU@¯ èU½* Wôª€^ЫzU@¯ èU½* Wôª€^ЫzU@¯ èU½* Wôª€^ЫzU@¯ èU½* Wôª€^ЫzU@¯ èU½* Wôª€^ЫzU@¯ èU½* Wôª€^ЫzU@¯ èU½* Wôª€^ЫzU@¯ èU½* WôJÐ+A¯½ôJÐ+A¯½ôJÐ+A¯½ôJÐ+A¯½ôJÐ+A¯½ôJÐ+A¯½ôJÐ+A¯½ôJÐ+A¯½ôJÐ+A¯½ôJÐ+A¯½ôJÐ+A¯½ôJÐ+A¯½ôJÐ+A¯½ôJÐ+A¯½ôJÐ+A¯½ôJÐ+A¯½ôJÐ+A¯½ôJÐ+A¯½ôJÐ+A¯½ôJÐ+A¯½ôJÐ+A¯½ôJÐ+A¯½ôJÐ+A¯½ôJÐ+A¯½ôJÐ+A¯½ôJÑ+E¯½RôJÑ+E¯½RôJÑ+E¯½RôJÑ+E¯½RôJÑ+E¯½RôJÑ+E¯½RôJÑ+E¯½RôJÑ+E¯½RôJÑ+E¯½RôJÑ+E¯½RôJÑ+E¯½RôJÑ+E¯½RôJÑ+E¯½RôJÑ+E¯½RôJÑ+E¯½RôJÑ+E¯½RôJÑ+E¯½RôJÑ+E¯½RôJÑ+E¯½RôJÑ+E¯½RôJÑ+E¯½RôJÑ+E¯½RôJÑ+E¯½RôJÑ+E¯½RôJÑ+E¯½RôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ôÊÐ+C¯ ½2ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*B¯"ô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*F¯bô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*A¯ô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*E¯Rô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯2ô*C¯àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]àÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ¾]áÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛ ¾ÝàÛíÿ5i¯¡·åw}ÇÏ™›c›è(‚ T±d”¨)]ïJ¡ûµø¤ÔñAã¥N$:)É”`‚ )„ô‚¥T¤­–ø •>°ÒÖ¦ˆ-ÿ±m”x‰FÁi4!‰“‹‰&Wssâ99ëÄׂÍ^ë·>k­ßúý¾¿½Ÿ¼ðí¾ýÀ·øöß~àÛ|ûo?ðí¾ýÀ·øöß~àÛ|ûo?ðí¾ýÀ·øöß~àÛ|ûo?ðí¾ýÀ·øöß~àÛ|ûo?ðí¾ýÀ·øöß~àÛ|ûo?ðí¾ýÀ·øöß~àÛ|ûo?ðí¾ýÀ·øöß~àÛ|ûo?ðí¾ýÀ·øöß~àÛ|ûo?ðí¾ýÀ·øöß~àÛ|ûo?ðí¾ýÀ·øöß~àÛ|ûo?ðí¾ýÀ·øöß~àÛ|ûo?ðí¾ýÀ·øöß~àÛ|ûo?ðí¾ýÀ·øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöðíáÛ÷‡oß¾=|{øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}øöáÛ‡o¾}w|û3·>Ÿwëó÷ž¸ï×oo¿ñÄ}7>³=qïߺ½OÜó=··ï}âæOÜÞ~ò‰gîNìÆõ3wÎ_êNûõ'ï\wýñ;ù빞¹Ÿ¹¹œ¹§ÏÜŸçßw¶¿ç¼î©3ÿŽ3÷–óüïœío<áÎ÷Ù½—óørž¿œùËyýå¼ßå¼ÿå|Þå|þåìÏåìßåìïåìÿå|ŸËù~—ó}/çû_Îñ¸œãs9ÇëêìßÕ9žWçø^ã}uŽÿÕ9Wçü\Ýæ8sŸsæ?zæ>ræ>|æ>|æîÖÏÏúøÀ™{úÌ=}æþô¼ÏŸítöã}gþÏÜ{ÎÜ»ÎÜÝz{ç™{Ç™{ëyþ-gûïž×Ý­Ãß:so<Ïÿß³ýÎãÿ|çû³õyŸuúøåÌŸõúøå¼ßgëö|ÞY¿_Îþœu|órö÷³õ|¾ÏY×^Î÷=ëûñË9g¿érŽ×Yï7/çxžuÿøå↓ÿ3wÎÏ圯s=þÛ¯{ó«ù’ËÓ_ú¶_ú¹OÿôõÛžóš}å?}áõ§þßù±yÉ—O¾í9oÅï½õòäÿùû?ûîû•ˇ~ñ­_øE?ô¯õ|úåÿû[žwyê¹_ûúôe½þà'ÿÕ§ü'ßrýî?xÅ¿øàßùùëÿú#í›^ñàW]žzøm/ùçû’ëß~Í—ÿÉ«ôÉËoþÚ[þüÛ^ø¼ËŸ^½ý^ûüϹº÷Û~â½ïüÿ/¼¼ÿkŸû’ýþnõç¯ÿ·ç¾~—§ßòàÃïÿêç]ÞýÃïxÁ{¾ý…—¼ëßÞóÚÇþûåßõ/æá7¼ëòÌ;ùñwþÉ­q¼ïÖÌÝóé[cùìÛõpëóEç÷3wÎݸyãÆC·ÿËîì‘—½øníÜþɺý3x»ñæ+ïî¼êܹøïî¿üû¿ïEçþƒ/{äû¿÷%=òÒóøÞ—¿òoþåîÝ?äû_öâGû;O¿ñÌ_³ÞéH¿$mda/data/glass.rda0000644000176200001440000001252513176401711013533 0ustar liggesusers‹í\˜TE¶îaÂÌ0$1œîÂtOÏ@ßÎ*ÜKÒ3#bEžŠ²ê®˜] ¬kÀ°+†ÝUž‡aÅu×,@ž²8€•Ì%¿š©ÿ?%gEWöùÞÚß§uï­ªóŸðŸs«êÎG¶×H+d¾Ïç«çË­¯þŸ«.ë×SÿËñÕ÷5VmÞYãª&Nôùr[ª›šEê¿E¶;¼húWéJÛíW• ÙnÞ[¿ãu?ì£Ne£m·ï‰‘™sŸ·Ýî§õ®ž½\ÝŸñøÞ_†U»nÏ=—m´ÝÁÓž(˜·Jݯø¥óÌ•¶ëœÈúššŸsèÇEj^«OÆ {UõßÕæÕ‘g˜çÄëßâÎëÜÓm÷„Ïß[|è9Ûí3ñªÅoQòœåܯðûOØö\u•z>eõÀ™êù¹ —>ÙÇàð¾ï¯ï?÷öMê~vzd3õ¼ïÛ×ßXy¯רmet½²£sç;/ò)}"C>Z¹Z=¿{mûe¶{âÌ]3C_š–x´¿ß²ÐË%AÕ?õÚÛÿ~§êïtk·«zÛî …þ°SÉxóŠÇ¬RÛ=¯ëÔ7Ýn»'5YÒyñ©ª®»yb}Û=­ÁÖé}.R¸+o[þµju/]`»Çv1ôÁuJþû³Î>åÕN:.9éYÛ¼b½5âQ5nNƒgþØQé±$ï³ME¦Üð´ñ ýÊ;FnkÑÆvÕÿ[ÏVóOJ¾y÷Úæ~Øö©'ŽU÷NÊ=éÃýÛSãöå_ÞªürÉ-ßo«ôyò?:ä]_û½÷κIñæ¸ó OºûOz©uÒv{Vµt?¤úg¿ì«¶ùµ«_:ßôw?éÁÖFNϱÓîiy¨º0¨¼|í¦çŒ¿=¾PÍ›vrÙ–—~¯²A»V~C.øÚ3üÐäKÆ)½Îî÷â=­æÏ}¨ùŒjՌοu¨ÁëñÜ é ¯Wqèü«Ë”šñäuïÊ ?jÑEù³bN›'{¾ùÕ¼JŸ>KO}âÓ€›Z ¼ó4ÛïSEÃm÷ô9³¦ WvÕýúä@Û½ÒWó³ÝvtÎ{¤±ò³ò^ ··ýmÓËUÜlv“ÝÍv't¹¢tþ¯m÷‚7ÏØ2^ÅÿŠ¢÷—œ¨ôyÄúdÈ)ª1çê¿Pó>¿hÊ•Š5f>ü€íöºæñŠy‡(½þxéŸÿ«wíÜws©çíüþÈÕ¸#&·¿^éÑû‹ÈÑ+T^ŸP~Eõ ŠÏñ—¨q}_nÒå\ïcþ¾¨Z;~öÍG­ºÆv³sI4™ñc›¿¶`¹Ò@Y Ò=ŸW ˜büÒ¿oƒÁïÜ­Úí5•Bù§UÉÛTöº5xÝ´kLÛ;õulÑ Ú8½½zÞrXß-5ÞÜ0¶…²cÏÉ·.¬ú‡i~×ðºûÆ‹'¡ÆŸ•j7å/jÜÀÖ7¼ªìí¥èþȵ¶;¢8Ñ1ü¼É7Žï}zõýkÎ6ø@é­ªLÅ…ÛxíÍo«ø× ¶ÌQy{KîW¿Ï·Ýn¹Þ~c’ÊŸ Gíü…âýÈu¿ùËz•Ç#[/{ô·ª.yø?ü_ݬôéÚ穱®íf»{O;•‡U^ÞT­x_Ýã®%WÛn¢Í§ÍzÁv‡Ö¤íXåïšÄi¥ô™§ ®0ùyÜðÏß5ÂÄûØx¨ãJNÜwÛümŠÃÚýšªƒ'?3¼g®Á¯øÓýÃîéj»•CÇ䬩æÕ5ÿÔ…×½3áhÛ=¹ñ•Oõhh»£–Õ<øFþÝ×%ç¸ÕýäÑÇ}¢âqNÞ”Ã~¥ìùúºç.žj»v¿+æÝv”jÿ¼ø©Üvªÿ…5CVþëVã¾zjþê;.Ÿ¥ò®ë+5„T~ž½õÐ -ã·žkG/í§ìíqô¥Ù…q5Ãð#š÷7y;`ïyÑÆ=LÞRÞõ¯ï;Gùé7‡‡îЍþûwZ{ùÅ÷–S®ß Nùëh›ªòð·iNhìÔ#ŸÍ¬sB7tðàâ|'8}òr5Ô ÝUó»Û œ¯~o;áCð¼6]}N°ft× œ ÆÿV[oœà³™/”D'˜B{_̓b'X w²Fù|-7”Üqf:ÔcšÖóC”_#¥l«èœ[«ˆ<ãja‚NzgÕ*Öüœ`©Æ VÕ:Ä Á^ú%X{{™†|¶ôKþB[>IëDÚ¡ç‡ ¿œ÷ýÊá¿Ð™µ?'´Tû'„8q|Ù*݄ڢϨ¶¯þ*Ï«uˆQë`_N»@|Ùv…\̯`œ¨O¥öcþdܤ]¹àGùb˸’!]ïЂšÛ¬È ó9Ç!!òö¡oþ ²ŸúcžÄ‰ò gü„_‚_ ¾À/#O ¯ü.TÇ­#âÑñ.Cú0®Ñß‘ü¦B¼ÄÐ[xA\òúÑîùFÐ.úñ(G•Ãoåää•{øWN¿Á^òXòžyÂ| 9žzÀ2üÅórä§Ìƒýeøþ ƒ?ÂCòŠqe]‚èk¬oåÀ'å„aW˜¼‚?;Áß1Ÿq¼<|'ÿ‰Ã:E­×ñ 3/à·0x&ÿÁã ø) ÿT@Ÿë õ†_¨óµ3ëô¨€aÄ¥q§Ü0ß ˆcÆ…1¿þ©„>ÀÊ­O+øœ-ô ƒ/aÈ'^âÈ÷ñÂ:òÞj¾Â?…ЯÉT­W!û'ãx?ñyêWèQ€|+ÿ ¡O!xØï­"Ìo½ÙO}Š_ÑyWÈç_€ùl ñ>(DÌ“ñðÈß Q§8®¸EüØQ€¸ÁNÚÏùùп äA¿|Ú=òá×ßò@ÿ<ø™zS~ØIÿ‹¿ ¯q+‚Žg\š n²•ø¢•xQ.ãIпœçå ìõ¶âoÄ›ÏQ>æ3ŽOOiOø[?äCý*¼„ùÓõ¦!üÛqɃŸ 6†êÖ÷Oþœ"èÕ8MÁ£¦Œôm‚çôwô‘|ñäÌ#zàµOûÅÞ¢ýo¯×~½šBNSÈažR¯"Æ‹|`\Éæ9üZ}ÉÛÆÔ¼=¡ŸðÊÓ¦žxøÊ{ÉGâ’ðC¾§7Oëeï†_öèùöN­ç³½]Ûm½rÙB¯ð7Gó×Þ©ýo¯Ùºýíüi ¿äÃNÚ•ýwãÜj—ŽËÕÿ'ðÓç„`×øÓÕq·7£Ý¿m×þ´7ê¸Úë5í-x.óµíÍšöVÍk¹ßŒþMº.Ø5/íuÚŸöFÍ'{§æ¹½ ø 1Žz1Ï6Bþ&Í'{+ÆmAœ¶BÞfÈß ½iõØ ^n_)o‹æ•à-Ã8¶`ÿ&'‚»úoB+úBŸU¨k1žzTÓOЗóEO|ˆÏûËyÚ±Nç?óÀ^PÎð7[ö1OívÈ'\àÈ=õÖä³÷ Þù ‡Ä ý.ê£óȃmÈgânƒßvCÚ» ñØÿråo=ðÉÃäú·Á;ïÏ1î3ØK£®9>øk=ì`»ú­=kðü3ðm3ü%|!· zºàía\™Ÿôí`~H^‡öí€þ´yÌ–|õÆy´zzã¿|aÞ€~úsë ôe¾Â/’—ÈŸ]Пqøzl‚?6{ìdÞ¬Àxò†öºžx|Éuîw{êÛ𫼀¾9ðlDƒï9ˆ‹äë!üÂ8î ¾Ðy'ë òéCè~89¸‡_ëpàw'ëˆÐ/{/æá½íÔG=¼ó`_}ð½æA'öí…¾õ`ç.ĉyº~ÎÃ{ëE™çü½‹:À÷–“Ù õÊVj9Y[¯o²ôülo½nÍvÓöd{kÿdÃ8ìeöYGÛ…ÝÙAz“Íêu–Ìï«q2Ð7ÛPûEôéRë'›£×GY ó»ã>¡ùÏ;Y¬Ë²=0®¿^‡d“{2˜O»FbÞ1п³Ö/³IÇ9‹uXF'ª´Ùî°vwÑvgp@y™]èÇþ?ó©Ž{fï¾~̬‡‡Aß8üM;»Á/ã ÷Ô›q ŸàÌWÀݨŸgAžúîF|Šàð2[ý¡gf›ŽŒï9IÄ ñÌ‚ßÙÃá×8üŽsb‰‡>Ès²ôú<…¿)¯9ù ½†À?AÄ5ùƒáŽï 9CêI>6ÃóVðïh½>ž}Èê3QËÍÌDüÞ„zCàdØs£lrf >”O’×¥Ào«åd‡ŸZa\.ì @ÿ¶‡s>òSø€\æöâ^xW ë†ð•v¼‹þbOD€O½z'ÄÇ9k¶âR2þ¬ Œ'ó¯=äD 7ý†Œ3ê]¦v1ïÃðëqÈð>[üß…ñ |bÊ\‚ç”K¾b_˜ÜK'ÖäOçê™Ç 3Œ‡¿¥Þ^¡nHÜiÿƒà…óQ—²§‚ïgÈ›Ì{9™[ß÷×›§ n¬§¬Ï#=yÅñœßzÞ<È?ñdŠqö¾õ^üɺƸ1oO„ýgá¹æ•ì·fáý½ í¼—W`½´ëœO=ëéÇû“÷\?®ÄzwÖ5˱.‘ùhWbô2ÆSŽg{ž¯Àúo%ÖgÕxßsÝÅ~¯^Ô‡xìç=û½vqÿCû_À:€­ø¸l_ź‡zÒ”?ó^ÂzŠóžÁºƒúp[ê#úC¾èO=€óWŒ{þ{[LJ›nûuà÷ Èg‹ñ2ÿè͸H¼áGî3wîKØ¿ëkö³eÿgð[ž,E|—@//Ï>õÄc)ýä5çyãJ?®ÆzÑˇUX_/B;óØ®%ßÀkúë9­ÿþÇð?ùîå©ÄÙ“ä¹7yïå…7ïØÿ 쬆_èœ_IüeäTƒ¯ÂKO1ÞÔ“q”úÀøbœÔè˼¢Ü:òxÿ±.@êÉ–rëª_ä5ù¾ƒòž¯p>yø5øÎþp>z8Þhůk0ï%Ù?ü(?Ùïmóð—xï/fÝßwÞÌo?7^£~xÇÛØ—×NÞ?æù~òqŽàÅ;€©z¿¸Rãã}ZŒõŒûD©~ÿI‹õ”ññã\Õs?ÖQÊÁzÐóììô¿®×ìŸK°_ à¹çÏìK0ãÀñã»qßKy/ϱoðã»f  r¡õ”{ø#{8_`UŠçlXW°¿ ^¥ðOßYD|.Å~½=ì ,Ðþo}J ¯v•¯„þ ŸÖë±›~ ^À n¥ðG)üPŠýO âW yÒROÌoG^à¹ð~*Š‘·¢p‹ÁƒbÄWZÊÅw ò¦-äûñw"ëh?Öù¼àÜö“gÂgÆ8%Ø—`?ù˜¾o[2IïcJ`W'ħúåïE`¬Ÿ;!^À¿ ð¨‚ßß™7´q„?ýX·#Ž´_üëõ3ì*ƹóGøõļêÀ¿;€]ü®ïèÑþf?âé$þÀçs?øí‡ýðCö1¿¨Ÿy"u€ö¯„ùL7òú—²¾°Ÿ¸”ž0ïC<Û#Ÿ;BÿN°¿ôa^t~æµA\Úà| _ RÔ¯Žà§ÔÜ—°^@Þ‘¬;ø»†°¿#øÜþnœÃh7ë óq`ºD¾Ã©·¬7°;ü|?Î%Ì7ÖMðÆ‹âZB¹°SÞ#äy¬ýÎ÷Ö¾ÿ¿þ¸Ï¨³ë´¥NãÇ}Íÿ¶ÿW~²OýžñçßkLÝ~ÌŸ½@×郎Ãý<öGïûþxÞÃ{þ=ÃŽóÎÁ±_¾íøö<—ý#÷_ÜŸÿ7öÍÛ±ÏäwJî[yŽ ûhÌã>ýÓ}óCö¯ü¾Êó |¯æ÷JùžÅ}<¿3Sù> Üâ·ïõÞ²ßûÇûZÙ‡{âÂ{ž›0Ïwp^q ó¾S®wß;z¤|²ß÷œkð<¢Žó#鯣^JþÓ¯uíÿëšïyN?Ë=Ï7ÙRžÓòüëƒöwI^ÿ×9î»Öÿ‰_æ{ìûþÈùtõd?yoÖ·á¯à-ãs€çuùe?;î{¾"ÏßÒ Nù/zòÒç×÷õ÷~¸žº.v¾x`y#8ïyžÓO8ýNû¿g©S¿Dœcÿ³òëÄåùï‚˃ƒ¦ó…-ÏYwqh_ý“ûûCý}k½¾ù¹ý¹=ÖñýÜþÜĶÑO¤=ä_Ôþ#µmÿ=Zï?¦q~Õyc&ª‹f¾šLC?¬—íÏ«ÁU¼t¯ºãÕÐsp•s,õ” =äªÏ\Õ?þÒ c<4¾püÅ•ßÔbeFxañ"Ê‹/â¼Hð"É‹/ÒÔ#ÒE®"reÉUT®br—«„\%å*%W‚a †%–`X‚a †%–`X‚a †%QÁˆ FT0¢‚Œ¨`D#*QÁˆ FL0b‚Œ˜`Ä#&1Áˆ FL0b‚Œ¸`Ä#.qÁˆ F\0₌¸`$#! ÁHFB0‚‘Œ„`$#!IÁH FR0’‚‘Œ¤`$#)IÁH FJ0R‚‘Œ”`¤#%)ÁH FJ0R‚‘Œ´`¤#-iÁH FZ0Ò‚‘Œ41r#]º˜Ëˆ¹´ÌeÔ\ÆÌeÜ\&ÌeÒ\¦Ì¥A‹´ˆA‹´ˆA‹´ˆA‹´ˆA‹´ˆA³ šeÐ,ƒf4Ë YÍ2h–A³ šeТ-jТ-jТ-jТ-jТ-jÐb-fÐb-fÐb-fÐb-fÐb-fÐâ-nÐâ-nÐâ-nÐâ-nÐâ-nÐ-aÐ-aÐ-aÐ-aÐ-aÐ’-iÐ’-iÐ’-iÐ’-iÐ’-iÐR-eÐR-eÐR-eÐR-eÐR-eÐÒ-mÐÒ-mÐÒ-mÐÒ-mÐÒÍÔËÔËÔËÔËÔËÔËÔËÔËÔËÔËÔËÔËÔËÔËÔKÕÏBk´þWËj—8|˜FÕEU•g^¨V?ênOÍÿVÂë Mmda/PORTING0000644000176200001440000000347510467142622012075 0ustar liggesusers* src (by BDR) Convert *.r by ratfor on Solaris. Use modreg versions of bsplvd.f bvalue.f bvalus.f qsbart.f sbart.f sgram.f sinerp.f sslvrg.f stxwx.f Change things like work(1) to work(*) As namat used a double workspace for integers, arrange for an iwork array. Change things like n-center, center logical (and dble(center) may not work on all platforms) Change uses of bvalue, bsplvd to match those in the modreg code (which has an extra lent argument). Chase down a difference in usage of dbksl and replace it by direct calls to dtrsl. In dmarss.f, the var array was used without being calculated, so add additional call to qrreg to calculate it. * src: ** Get additionally needed files from gamfit on Statlib/general. ** mspline.r: change temp=dble(n-center) / cost - dfoff to temp=dble(n-dble(center)) / cost - dfoff because center is logical ** remove unneeded symbols from *.r (warnings of f2c) as follows: bruto.r 36 ier ntype dcalcvar.r 43 dn wmean dwrss xbar xcov dmarss.r 88 tem 176 m v 614 flagtot 621 temm mspline.r 457 k 537 wmean 584 xbar 737 wmean splsm.r 117 scrat ** replace real -> double in ** convert *.r to FORTRAN using ratfor ** convert *.f to C using f2c -A -a -P ** beautify using MM's f2c-clean * Copy dumpdata.mda to R/mda.q. * mda.q: ** change all single to double ** change all sys.parent() to sys.frame(sys.parent()) ** delete code related to is.loaded() or {.bruto,.mars,.mda}.object. ** in predict.fda(), replace levels(pclass) <- dimnames(means)[[1]] return(factor(pclass)) by return(factor(pclass, labels = dimnames(means)[[1]])) ** in mda.fit(), remove unneeded final strcuture() wrapper. * Create zzz.R. * Use `Sd2Rd -x' to convert documentation sources to Rd format. The examples need major attention. mda/R/0000755000176200001440000000000013176636732011232 5ustar liggesusersmda/R/confusion.fda.R0000644000176200001440000000050411305473124014072 0ustar liggesusersconfusion.fda <- function (object, data, ...) { if (missing(data)) return(object$confusion) Terms <- terms(object) attr(Terms, "intercept") <- 0 m <- model.frame(Terms, data) x <- model.matrix(Terms, m) g <- model.extract(m, "response") confusion.default(predict(object, x, ...), g) } mda/R/fix.theta.R0000644000176200001440000000024612201315116013223 0ustar liggesusersfix.theta <- function (theta, Q) { M <- t(theta) %*% Q %*% theta eM <- eigen(M, symmetric = TRUE) scale(theta %*% eM$vectors, FALSE, sqrt(eM$values)) } mda/R/contr.fda.R0000644000176200001440000000051411305473124013215 0ustar liggesuserscontr.fda <- function (p = rep(1, d[1]), contrast.default = contr.helmert(length(p))) { d <- dim(contrast.default) sqp <- sqrt(p/sum(p)) x <- cbind(1, contrast.default) * outer(sqp, rep(1, d[2] + 1)) qx <- qr(x) J <- qx$rank qr.qy(qx, diag(d[1])[, seq(2, J)])/outer(sqp, rep(1, J - 1)) } mda/R/pplot4.R0000644000176200001440000000031111305473124012554 0ustar liggesuserspplot4 <- function (x, ...) { par(mfrow = c(3, 2)) for (i in 1:3) { for (j in (i + 1):4) pplot(x[, c(i, j)], xlab = paste("var", i), ylab = paste("var", j), ...) } } mda/R/mda.means.R0000644000176200001440000000066111305473124013205 0ustar liggesusersmda.means <- function (object, x, y) { weights <- means <- object$weights nn <- names(object$weights) for (i in nn) { xx <- x[y == i, ] ww <- weights[[i]] nc <- ncol(ww) xm <- matrix(0, ncol(x), nc) for (j in seq(nc)) { www <- ww[, j] www <- www/sum(www) xm[, j] <- apply(xx * www, 2, sum) } means[[i]] <- xm } means } mda/R/plot.fda.R0000644000176200001440000000441312201520557013047 0ustar liggesusersplot.fda <- function (x, data, coords = c(1, 2), group = c("true", "predicted"), colors, pch, mcolors = colors, mpch, pcex = 0.5, mcex = 2.5, ...) { object <- x # generic/method group <- match.arg(group) if (missing(data)) { vars <- predict(object, type = "var") g <- predict(object) group <- "predict" } else { if(group=="predicted"){ vars <- predict(object, data, type = "var") g <- predict(object, data) } else{ ff <- terms(object) attr(ff, "intercept") <- 0 m <- model.frame(ff, data) x <- model.matrix(ff, m) vars <- predict(object, x, type = "var") g <- model.extract(m, "response") } } means <- object$means g <- as.factor(g) cc <- as.numeric(g) np <- seq(levels(g)) if (missing(colors)) colors <- np+1 else colors <- rep(colors, length = length(np)) if (missing(pch)) pch <- paste(np) else pch <- rep(paste(pch), length = length(np)) mcolors <- rep(mcolors, length = length(np)) if (missing(mpch)) mpch <- pch else mpch <- rep(paste(mpch), length = length(np)) assign <- object$assign if (is.null(assign)) assign <- split(seq(np), seq(np)) if (!is.matrix(coords)) { coords <- matrix(coords, length(coords), length(coords)) tt <- lower.tri(coords) coords <- cbind(t(coords)[tt], coords[tt]) } for (ii in seq(nrow(coords))) { coord.pair <- coords[ii, ] plot(rbind(vars[, coord.pair], means[, coord.pair]), ..., type = "n", xlab = paste("Canonical Var", coord.pair[1]), ylab = paste("Canonical Var", coord.pair[2]), main = paste("Discriminant Plot for", group, "classes")) for (i in np) { which <- cc == i if (any(which)) points(vars[which, coord.pair, drop = FALSE], col = colors[i], pch = pch[i], cex = pcex) points(means[assign[[i]], coord.pair, drop = FALSE], col = mcolors[i], pch = 1, cex = mcex) points(means[assign[[i]], coord.pair, drop = FALSE], col = mcolors[i], pch = mpch[i], cex = mcex/2) } } invisible() } mda/R/coef.fda.R0000644000176200001440000000074312201530546013006 0ustar liggesuserscoef.fda <- function (object, ...) { fit <- object$fit Coefs <- fit$coef if (is.null(Coefs)) stop("No explicit coefficients in this formulation") dimension <- object$dimension Coefs <- Coefs %*% object$theta[, seq(dimension), drop = FALSE] lambda <- object$values alpha <- sqrt(lambda[seq(dimension)]) sqima <- sqrt(1 - lambda[seq(dimension)]) Coefs <- scale(Coefs, FALSE, sqima * alpha) attr(Coefs,"scaled:scale")=NULL Coefs } mda/R/onAttach.R0000644000176200001440000000021212201310024013054 0ustar liggesusers.onAttach=function(libname,pkgname){ packageStartupMessage("Loaded mda ", as.character(packageDescription("mda")[["Version"]]),"\n") } mda/R/predict.bruto.R0000644000176200001440000000311011305473124014116 0ustar liggesuserspredict.bruto <- function (object, newdata, type = c("fitted", "terms"), ...) { if (missing(newdata)) { z <- fitted(object) if (is.null(z)) stop("need to supply newdata") else return(z) } d <- as.integer(dim(newdata)) type <- match.arg(type) nq <- d[2] n <- d[1] if (nq != length(object$df)) stop(paste("newdata should have the same number of columns", "as the df component of object")) ybar <- object$ybar np <- as.integer(length(ybar)) eta <- matrix(double(n * np), n, np) Type <- as.numeric(object$type) storage.mode(Type) <- "integer" storage.mode(newdata) <- "double" if (type == "fitted") { .Fortran("pbruto", newdata, n, nq, ybar, np, object$knot, object$nkmax, object$nk, object$coef, Type, object$xrange, eta = eta, eta, PACKAGE = "mda")$eta } else { ob <- as.list(seq(nq)) names(ob) <- dimnames(newdata)[[2]] knot <- object$knot nk <- object$nk xrange <- object$xrange coef <- object$coef fitm <- matrix(double(n * np), n, np) dimnames(fitm) <- list(dimnames(newdata)[[1]], names(ybar)) for (i in seq(nq)) { if (Type[i] > 1) fit <- .Fortran("psspl2", newdata[, i], n, np, knot[, i], nk[i], xrange[, i], coef[, i], coef[, i], fit = fitm, as.integer(0), Type[i], PACKAGE = "mda")$fit else fit <- fitm ob[[i]] <- list(x = newdata[, i], y = fit) } ob } } mda/R/lvq.start.R0000644000176200001440000000264111305473124013300 0ustar liggesuserslvq.start <- function (x, g, subclasses) { cnames <- levels(fg <- factor(g)) J <- length(cnames) g <- as.numeric(g) weights <- as.list(cnames) names(weights) <- cnames subclasses <- rep(subclasses, length = length(cnames)) size <- sum(subclasses) cb <- lvqinit(x, g, size = size) TT <- olvq1(x, g, codebk = cb) TT <- lvq3(x, g, codebk = TT) cl <- as.numeric(TT$cl) R <- length(cl) cx <- TT$x p <- ncol(cx) for (j in seq(J)) { which <- cl == j number <- sum(which) if (number == 0) { cx <- rbind(cx, apply(x[g == j, ], 2, mean)) cl <- c(cl, j) wmj <- matrix(1, sum(g == j), 1) number <- 1 } else if (number == 1) wmj <- matrix(1, sum(g == j), 1) else { jcx <- cx[which, ] jcl <- seq(number) jcluster <- lvqtest(list(x = jcx, cl = jcl), x[g == j, ]) needed <- unique(jcluster) rcl <- rep(0, number) rcl[needed] <- j cl[which] <- rcl wmj <- diag(number)[jcluster, needed, drop = FALSE] number <- length(needed) } dimnames(wmj) <- list(NULL, paste("s", seq(number), sep = "")) weights[[j]] <- wmj } TT <- cl > 0 list(x = cx[TT, , drop = FALSE], cl = factor(cl[TT], labels = cnames), weights = weights) } mda/R/confusion.R0000644000176200001440000000007511305473124013344 0ustar liggesusersconfusion <- function (object, ...) UseMethod("confusion") mda/R/mspline.R0000644000176200001440000000466612633627625013036 0ustar liggesusersmspline <- function(x, y, w = rep(1, n), df=5, lambda, thresh = 1e-04, ...) { this.call <- match.call() y <- as.matrix(y) np <- ncol(y) n <- length(x) wp=rep(1/np,np) storage.mode(x) <- "double" storage.mode(y) <- "double" storage.mode(w) <- "double" storage.mode(wp) <- "double" nknotl <- function(n) { a1 <- log(50)/log(2) a2 <- log(100)/log(2) a3 <- log(140)/log(2) a4 <- log(200)/log(2) cx <- as.numeric(cut(n, c(0, 50, 200, 800, 3200))) if (is.na(cx)) cx <- 5 floor(switch(cx, n, 2^(a1 + ((a2 - a1) * (n - 50))/150), 2^(a2 + ((a3 - a2) * (n - 200))/600), 2^(a3 + ((a4 - a3) * (n - 800))/2400), 200 + (n - 3200)^0.2) + 6) } nkmax <- nknotl(n) - 4 coef <- double(nkmax * np) smat <- matrix(0,n,np) storage.mode(smat) <- "double" nk <- as.integer(0) knot <- double(nkmax + 4) Match <- integer(n) nef <- as.integer(0) if(df==0){ method=1 if(missing(lambda))stop("need a lambda") } else { method =2 lambda=0 } storage.mode(method) <- "integer" storage.mode(df) <- "double" storage.mode(lambda) <- "double" xrange <- double(2) fit <- .Fortran("sspl0", x, y, w, as.integer(n), as.integer(np), knot = knot, nk=nk, method, tol=as.double(thresh), wp, Match = Match, nef = nef, center=as.integer(0), dfoff=as.double(0), dfmax = as.double(df+2), cost = as.double(0), lambda = lambda, df = df, cv=double(1), gcv=double(1), coef = coef, s=smat, lev=double(n), xrange = xrange, work=double((2 * np + 2) * ((n + 1) + 1) + (2 * np + 16) *(n + 1) + 2 * (n + 1) + np), iwork=integer(n), integer(1), PACKAGE = "mda")[c("knot", "nk", "Match", "nef", "lambda", "df", "coef","s", "xrange","lev")] fit$call <- this.call structure(fit, class = "mspline") } mda/R/predict.gen.ridge.R0000644000176200001440000000025311305473124014632 0ustar liggesuserspredict.gen.ridge <- function (object, newdata, ...) { if (missing(newdata)) fitted(object) else scale(newdata, object$xmeans, FALSE) %*% object$coef } mda/R/llmult.R0000644000176200001440000000022211305473124012644 0ustar liggesusersllmult <- function (p, g) { index <- cbind(seq(along = g), as.numeric(g)) p <- p[index] -2 * sum(log(p[p > .Machine$double.eps])) } mda/R/transformPenalty.R0000644000176200001440000000312211305473124014705 0ustar liggesuserstransformPenalty <- function (Q, prior, cl, df = NULL, tot.df = NULL) { if (missing(Q)) Q <- meanPenalty(prior, cl) if (missing(prior)) prior <- attr(Q, "prior") if (missing(cl)) cl <- attr(Q, "cl") transform.pen <- function(Q, prior, df) { df.inv <- function(d, df, lambda = NULL, iterations = 10) { if (is.null(lambda)) { lambda <- 0.1 while (sum(1/(1 + d * lambda)) >= df) lambda <- lambda * 2 } df.diriv <- function(d, lambda) -sum((d * lambda)/(1 + d * lambda)^2) current.df <- sum(1/(1 + d * lambda)) if (abs((df - current.df)/df) < 1e-04 | iterations == 1) return(list(lambda = lambda, df = current.df)) else { lambda <- exp(log(lambda) - (current.df - df)/df.diriv(d, lambda)) Recall(d, df, lambda, iterations - 1) } } pQp <- Q/outer(sqrt(prior), sqrt(prior)) d <- svd(pQp)$d lambda <- df.inv(d, df)$lambda lambda * Q } if (!is.null(tot.df)) { if (tot.df >= length(prior)) return(Q * 0) else return(transform.pen(Q, prior, tot.df)) } else { ncl <- unique(cl) df <- rep(df, length = length(ncl)) for (i in seq(along = ncl)) { which <- cl == ncl[i] Q[which, which] <- Recall(Q[which, which, drop = FALSE], prior[which], tot.df = df[i]) } return(Q) } } mda/R/pplot.R0000644000176200001440000000077011305473124012501 0ustar liggesuserspplot <- function (x, g, colors, pch, add = FALSE, type = "p", ...) { g <- as.factor(g) cc <- as.numeric(g) np <- seq(levels(g)) if (missing(colors)) colors <- np + 1 else colors <- rep(colors, length = length(np)) if (missing(pch)) pch <- paste(np) else pch <- rep(pch, length = length(np)) if (!add) plot(x, type = "n", ...) for (i in unique(cc)) points(x[cc == i, , drop = FALSE], col = colors[i], pch = pch[i], type = type) } mda/R/print.fda.R0000644000176200001440000000126311305473124013226 0ustar liggesusersprint.fda <- function (x, ...) { if (!is.null(cl <- x$call)) { cat("Call:\n") dput(cl) } cat("\nDimension:", format(x$dimension), "\n") cat("\nPercent Between-Group Variance Explained:\n") print(round(x$percent, 2)) error <- x$confusion df <- x$fit if (!is.null(df)) df <- df$df if (!is.null(df)) { cat("\nDegrees of Freedom (per dimension):", format(sum(df)), "\n") } if (!is.null(error)) { n <- as.integer(sum(error)) error <- format(round(attr(error, "error"), 5)) cat("\nTraining Misclassification Error:", error, "( N =", n, ")\n") } invisible(x) } mda/R/print.mda.R0000644000176200001440000000025411305473124013234 0ustar liggesusersprint.mda <- function (x, ...) { NextMethod("print") if (!is.null(x$deviance)) cat("\nDeviance:", format(round(x$deviance, 3)), "\n") invisible(x) } mda/R/gen.ridge.R0000644000176200001440000000171211306745554013214 0ustar liggesusersgen.ridge <- function (x, y, weights, lambda = 1, omega, df, ...) { if (missing(df) && lambda <= .Machine$double.eps) return(polyreg(x, y)) d <- dim(x) mm <- apply(x, 2, mean) x <- scale(x, mm, FALSE) simple <- if (missing(omega)) TRUE else FALSE if (!simple) { if (!all(match(c("values", "vectors"), names(omega), FALSE))) stop("You must supply an eigen-decomposed version of omega") vals <- pmax(sqrt(.Machine$double.eps), sqrt(omega$values)) basis <- scale(omega$vectors, FALSE, vals) x <- x %*% basis } svd.x <- svd(x) dd <- svd.x$d if (!missing(df))lambda=df.gold(dd,df) df=sum(dd^2/(dd^2 + lambda)) y <- ( t(t(y) %*% svd.x$u) * dd)/(dd^2 + lambda) coef <- svd.x$v %*% y fitted <- x %*% coef if (!simple) coef <- basis %*% coef structure(list(fitted.values = fitted, coefficients = coef, df = df, lambda = lambda, xmeans = mm), class = "gen.ridge") } mda/R/laplacian.R0000644000176200001440000000075311305473124013270 0ustar liggesuserslaplacian <- function (size = 16, compose = FALSE) { gmat <- matrix(0, size, size) xx <- seq(size) for (v in xx) gmat[, v] <- sqrt(2/size) * cos(((xx - 0.5) * pi * (v - 1))/size) gmat[, 1] <- gmat[, 1]/sqrt(2) lvec <- -(2 * size^2) * (1 - cos(((xx - 1) * pi)/size)) gmat <- kronecker(gmat, gmat) lvec <- rep(lvec, rep(size, size)) + rep(lvec, size) if (compose) gmat %*% (lvec^2 * t(gmat)) else list(vectors = gmat, values = lvec^2) } mda/R/bruto.R0000644000176200001440000001342113176221634012500 0ustar liggesusersbruto <- function (x, y, w = rep(1, n), wp = rep(1/np, np), dfmax, cost = 2, maxit.select = 20, maxit.backfit = 20, thresh = 1e-04, trace.bruto = FALSE, start.linear = TRUE, fit.object, ...) { this.call <- match.call() y <- as.matrix(y) x <- as.matrix(x) np <- ncol(y) d <- dim(x) nq <- d[2] n <- d[1] xnames <- dimnames(x)[[2]] if (!length(xnames)) xnames <- NULL ynames <- dimnames(y)[[2]] if (!length(ynames)) ynames <- NULL storage.mode(x) <- "double" storage.mode(y) <- "double" storage.mode(w) <- "double" storage.mode(wp) <- "double" storage.mode(cost) <- "double" if (missing(fit.object)) { nknotl <- function(n) { a1 <- log(50)/log(2) a2 <- log(100)/log(2) a3 <- log(140)/log(2) a4 <- log(200)/log(2) cx <- as.numeric(cut(n, c(0, 50, 200, 800, 3200))) if (is.na(cx)) cx <- 5 floor(switch(cx, n, 2^(a1 + ((a2 - a1) * (n - 50))/150), 2^(a2 + ((a3 - a2) * (n - 200))/600), 2^(a3 + ((a4 - a3) * (n - 800))/2400), 200 + (n - 3200)^0.2) + 6) } check.range <- apply(x, 2, var) if (any(check.range < .Machine$double.eps)) stop(paste("A column of x is constant;", "do not include an intercept column")) nkmax <- nknotl(n) - 4 coef <- matrix(double(nkmax * np * nq), ncol = nq) ybar <- apply(y * w, 2, sum)/sum(w) if (start.linear && (nq * cost > n)) start.linear <- FALSE if (start.linear) { start.fit <- polyreg(x, y, w) eta <- fitted(start.fit) coef[seq(from = 2, by = 2, length = np), ] <- t(start.fit$coef)[, -1] type <- as.integer(rep(2, nq)) df <- as.double(rep(1, nq)) } else { eta <- outer(rep(1, n), ybar) type <- integer(nq) df <- double(nq) } nk <- integer(nq) knot <- matrix(double((nkmax + 4) * nq), ncol = nq) Match <- matrix(integer(n * nq), ncol = nq) nef <- integer(nq) lambda <- double(nq) xrange <- matrix(double(2 * nq), 2, nq) df <- double(nq) if (missing(dfmax)) dfmax <- (2 * nkmax)/3 if (length(dfmax) != nq) dfmax <- rep(dfmax, length = nq) if (cost > 0) { TD <- (n - sum(df))/cost TT <- dfmax > TD if (any(TT)) dfmax[TT] <- TD } storage.mode(dfmax) <- "double" } else { this.call <- fit.object$call ybar <- fit.object$ybar nkmax <- fit.object$nkmax dfmax <- fit.object$dfmax eta <- fit.object$fitted.values if (is.null(eta)) eta <- predict(fit.object, x) nk <- fit.object$nk knot <- fit.object$knot Match <- fit.object$Match nef <- fit.object$nef lambda <- fit.object$lambda coef <- fit.object$coef type <- unclass(fit.object$type) xrange <- fit.object$xrange maxit.select <- 0 maxit.backfit <- fit.object$nit[2] df <- fit.object$df } maxit <- as.integer(c(maxit.select, maxit.backfit)) names(df) <- xnames names(maxit) <- c("selection", "backfitting") gcv.select <- if (maxit.select) matrix(double(maxit.select * nq), nq, maxit.select) else double(1) gcv.backfit <- if (maxit.backfit) matrix(double(maxit.backfit * nq), nq, maxit.backfit) else double(1) df.select <- if (maxit.select) matrix(double(maxit.select * nq), nq, maxit.select) else double(1) names(lambda) <- xnames fit <- .Fortran("bruto", x, as.integer(n), as.integer(nq), y, as.integer(np), w, knot = knot, nkmax = as.integer(nkmax), nk = nk, wp, Match = Match, nef = nef, dfmax = dfmax, cost = cost, lambda = lambda, df = df, coef = coef, type = type, xrange = xrange, gcv.select = gcv.select, gcv.backfit = gcv.backfit, df.select = df.select, maxit = maxit, nit = maxit, fitted.values = eta, residuals = y - eta, as.double(thresh), double((2 * np + 2) * ((n + 1) + 1) + (2 * np + 16) * (n + 1) + 2 * (n + 1) + np), integer(n), as.integer(trace.bruto), PACKAGE = "mda")[c("knot", "nkmax", "nk", "Match", "nef", "dfmax", "cost", "lambda", "df", "coef", "type", "xrange", "gcv.select", "gcv.backfit", "df.select", "maxit", "nit", "fitted.values", "residuals")] if (TN <- fit$nit[1]) { TT <- fit$gcv.select[, seq(TN), drop = FALSE] dimnames(TT) <- list(xnames, NULL) } else TT <- NULL fit$gcv.select <- TT if (TN) { TT <- fit$df.select[, seq(TN), drop = FALSE] dimnames(TT) <- list(xnames, NULL) } else TT <- NULL fit$df.select <- TT if (TN <- fit$nit[2]) { TT <- fit$gcv.backfit[, seq(TN), drop = FALSE] dimnames(TT) <- list(xnames, NULL) } else TT <- NULL fit$gcv.backfit <- TT TT <- factor(fit$type, levels = 1:3, labels = c("excluded", "linear", "smooth")) names(TT) <- xnames fit$type <- TT fit$ybar <- ybar fit$call <- this.call structure(fit, class = "bruto") } mda/R/mda.start.R0000644000176200001440000000446511305473124013245 0ustar liggesusersmda.start <- function (x, g, subclasses = 3, trace.mda.start = FALSE, start.method = c("kmeans", "lvq"), tries = 5, criterion = c("misclassification", "deviance"), ...) { start.method <- match.arg(start.method) criterion <- match.arg(criterion) name.criterion <- switch(criterion, misclassification = "Misclassification Error", deviance = "Deviance(multinomial)") starter <- get(paste(start.method, "start", sep = "."), mode = "function") fg <- factor(g) cnames <- levels(fg) prior <- table(fg) J <- length(cnames) n <- length(g) g <- as.numeric(fg) best.ll <- 1/.Machine$double.eps for (try in seq(tries)) { start <- starter(x, fg, subclasses) weights <- start$weights if (criterion == "misclassification") { pg <- lvqtest(start, x) ll <- attr(confusion(pg, fg), "error") } else { subclasses <- sapply(weights, ncol) Assign <- split(seq(sum(subclasses)), rep(seq(J), subclasses)) names(Assign) <- cnames fit <- mda.fit(x, g, weights, assign.theta = Assign, Rj = subclasses, eps = .Machine$double.eps, method = polyreg, ...) dmat <- exp(-0.5 * predict.fda(fit, type = "distance")) sub.prior <- fit$sub.prior pclass <- matrix(1, n, J) for (j in seq(J)) { priorj <- sub.prior[[j]] ass <- Assign[[j]] TT <- dmat[, ass, drop = FALSE] TT <- TT * outer(rep(1, n), priorj) TTot <- drop(TT %*% rep(1, length(ass))) wmj <- TT[g == j, , drop = FALSE]/TTot[g == j] pclass[, j] <- prior[j] * TTot dimnames(wmj) <- list(NULL, paste("s", seq(along = ass), sep = "")) weights[[j]] <- wmj } pclass <- pclass/drop(pclass %*% rep(1, J)) ll <- llmult(pclass, g) } if (trace.mda.start) cat(start.method, "start \t", name.criterion, format(round(ll, 5)), "\n") if (ll < best.ll) { keep.weights <- weights best.ll <- ll } } structure(keep.weights, criterion = best.ll, name.criterion = name.criterion) } mda/R/mda.R0000644000176200001440000000707112203550076012105 0ustar liggesusersmda <- function(formula = formula(data), data = sys.frame(sys.parent()), subclasses = 3, sub.df = NULL, tot.df = NULL, dimension = sum(subclasses) - 1, eps = .Machine$double.eps, iter = 5, weights = mda.start(x, g, subclasses, trace, ...), method = polyreg, keep.fitted = (n * dimension < 5000), trace = FALSE, ...) { this.call <- match.call() m <- match.call(expand.dots = FALSE) m[[1]] <- as.name("model.frame") m <- m[match(names(m), c("", "formula", "data"), 0)] m <- eval(m, sys.frame(sys.parent())) Terms <- attr(m, "terms") g <- model.extract(m, "response") x <- model.matrix(Terms, m) if(attr(Terms, "intercept"))x=x[,-1,drop=FALSE] dd <- dim(x) n <- dd[1] m <- dd[2] rowmin <- function(mat) { ncc <- ncol(mat) if (ncc == 1) return(drop(mat)) rowm <- pmin(mat[, 1], mat[, 2]) if (ncc == 2) return(rowm) else { for (j in seq(from = 3, to = ncc)) rowm <- pmin(rowm, mat[, j]) } rowm } if (length(g) != n) stop("g should have length nrow(x)") fg <- factor(g) if (inherits(weights, "mda")) { if (is.null(weights$weights)) weights <- predict(weights, x, type = "weights", g = fg) else weights <- weights$weights } subclasses <- sapply(weights, ncol) prior <- table(fg) dim(prior) <- NULL prior <- prior/sum(prior) cnames <- levels(fg) g <- as.numeric(fg) J <- length(cnames) Assign <- split(seq(sum(subclasses)), rep(seq(J), subclasses)) names(Assign) <- cnames if (!is.null(tot.df)) { if (tot.df >= sum(subclasses)) tot.df <- NULL } if (!is.null(sub.df)) { sub.df <- rep(sub.df, length = length(prior)) sub.df <- pmin(sub.df, subclasses) if (all(sub.df == subclasses)) sub.df <- NULL } for (counter in seq(iter)) { fit <- mda.fit(x, g, weights, assign.theta = Assign, Rj = subclasses, sub.df = sub.df, tot.df = tot.df, dimension = dimension, eps = .Machine$double.eps, method = method, trace = trace, ...) dmat <- predict.fda(fit, type = "distance") sub.prior <- fit$sub.prior for (j in seq(J)) { TT <- dmat[g == j, Assign[[j]], drop = FALSE] TT <- exp(-0.5 * (TT - rowmin(TT))) TT <- TT * outer(rep(1, nrow(TT)), sub.prior[[j]]) weights[[j]][] <- TT/drop(TT %*% rep(1, ncol(TT))) } pclass <- matrix(1, n, J) dmat <- exp(-0.5 * (dmat - rowmin(dmat))) for (j in seq(J)) { priorj <- sub.prior[[j]] ass <- Assign[[j]] TT <- dmat[, ass, drop = FALSE] * outer(rep(1, n), priorj) TTot <- drop(TT %*% rep(1, length(ass))) pclass[, j] <- prior[j] * TTot } pclass <- pclass/drop(pclass %*% rep(1, J)) if (trace) cat("Iteration", counter, "\tDeviance(multinomial)", format(round(ll <- llmult(pclass, g), 5)), "\n") } if (!trace) ll <- llmult(pclass, g) if (!keep.fitted) fit$fit$fitted.values <- NULL dimnames(pclass) <- list(NULL, names(Assign)) conf <- confusion(softmax(pclass), fg) fit <- c(fit, list(weights = weights, prior = prior, assign.theta = Assign, deviance = ll, confusion = conf, terms = Terms)) fit$call <- this.call fit$sub.df <- sub.df fit$tot.df <- tot.df class(fit) <- c("mda", "fda") fit } mda/R/polyreg.R0000644000176200001440000000124711305473124013024 0ustar liggesuserspolyreg <- function (x, y, w, degree = 1, monomial = FALSE, ...) { x <- polybasis(x, degree, monomial) y <- as.matrix(y) # just making sure ... if (iswt <- !missing(w)) { if (any(w <= 0)) stop("only positive weights") w <- sqrt(w) y <- y * w x <- x * w } qrx <- qr(x) coef <- as.matrix(qr.coef(qrx, y)) fitted <- qr.fitted(qrx, y) if ((df <- qrx$rank) < ncol(x)) coef[qrx$pivot, ] <- coef if (iswt) fitted <- fitted/w structure(list(fitted.values = fitted, coefficients = coef, degree = degree, monomial = monomial, df = df), class = "polyreg") } mda/R/confusion.default.R0000644000176200001440000000121712522221056014763 0ustar liggesusersconfusion.default <- function (object, true, ...) { if (inherits(object, "data.frame")) confusion.list(object, true) else { jt <- table(predicted=object, true) jd <- dimnames(jt) jn <- unlist(jd) ju <- jn[duplicated(jn)] j1 <- jd[[1]][!match(jd[[1]], ju, 0)] j2 <- jd[[2]][!match(jd[[2]], ju, 0)] jt <- jt[c(ju, j1), c(ju, j2), drop = FALSE] realjt <- unclass(jt[ju, ju, drop = FALSE]) ntot <- sum(jt) mismatch <- (ntot - sum(realjt))/ntot structure(jt, error = (1 - sum(diag(realjt))/sum(realjt)), mismatch = if (mismatch > 0) mismatch else NULL) } } mda/R/mars.R0000644000176200001440000001022713176222251012304 0ustar liggesusersmars <- function (x, y, w = rep(1, nrow(x)), wp, degree = 1, nk = max(21, 2 * ncol(x) + 1), penalty = 2, thresh = 0.001, prune = TRUE, trace.mars = FALSE, forward.step = TRUE, prevfit = NULL, ...) { this.call <- match.call() if ((nk%%2) != 1) nk <- nk - 1 x <- as.matrix(x) np <- dim(x) n <- np[1] p <- np[2] y <- as.matrix(y) nclass <- ncol(y) if (is.null(np)) { np <- c(length(x), 1) x <- as.matrix(x) } if (forward.step) { interms <- 1 lenb <- nk bx <- matrix(rep(0, nrow(x) * nk), nrow = n) res <- matrix(rep(0, nrow(x) * ncol(y)), nrow = n) fullin <- rep(0, nk) cuts <- NULL factor <- NULL } else { bx <- model.matrix.mars(prevfit, x, full = TRUE) interms <- ncol(bx) lenb <- prevfit$lenb o <- prevfit$all.terms fullin <- rep(0, ncol(bx)) fullin[o] <- 1 res <- prevfit$res factor <- prevfit$factor cuts <- prevfit$cuts if (missing(penalty)) penalty <- prevfit$penalty degree <- prevfit$degree nk <- lenb thresh <- prevfit$thresh } if (missing(penalty) & (degree > 1)) penalty <- 3 if (!missing(wp)) { if (any(wp <= 0)) stop("wp should all be positive") wp <- sqrt(wp/sum(wp)) y <- y * outer(rep(1, n), wp) } else wp <- NULL tagx <- x storage.mode(tagx) <- "integer" for (j in 1:p) { tagx[, j] <- order(x[, j]) } bestin <- rep(0, nk) flag <- matrix(rep(0, nk * p), nrow = nk, ncol = p) if (is.null(cuts)) cuts <- matrix(rep(0, nk * p), nrow = nk, ncol = p) if (is.null(factor)) { dir <- matrix(rep(0, nk * p), nrow = nk, ncol = p) } else { dir <- factor } alpha <- rep(0, nclass) beta <- matrix(rep(0, nk * nclass), nrow = nk) bestgcv <- 0 storage.mode(y) <- "double" storage.mode(x) <- "double" storage.mode(bx) <- "double" storage.mode(flag) <- "integer" storage.mode(cuts) <- "double" storage.mode(dir) <- "double" storage.mode(res) <- "double" storage.mode(beta) <- "double" lenscrat <- 1 + n + 2 * n * nk + 4 * nk * nk + 3 * nk + 3 * nk * nclass + 3 * nclass + 28 * n + 51 junk <- .Fortran("marss", as.integer(n), as.integer(n), as.integer(p), as.integer(nclass), as.matrix(y), as.matrix(x), as.double(w), as.matrix(tagx), as.integer(degree), as.integer(nk), # as.double(penalty), as.double(thresh), as.logical(forward.step), as.double(penalty), as.double(thresh), as.integer(forward.step), # as.integer(interms), as.logical(prune), bx = as.matrix(bx), as.integer(interms), as.integer(prune), bx = as.matrix(bx), fullin = as.integer(fullin), lenb = as.integer(lenb), bestgcv = as.double(bestgcv), bestin = as.integer(bestin), flag = as.matrix(flag), cuts = as.matrix(cuts), dir = as.matrix(dir), res = as.matrix(res), alpha = as.double(alpha), beta = as.matrix(beta), double(lenscrat), integer(4 * nk), as.integer(trace.mars), PACKAGE = "mda") lenb <- junk$lenb all.terms <- seq(lenb)[junk$fullin[1:lenb] == 1] selected.terms <- seq(lenb)[junk$bestin[1:lenb] == 1] coefficients <- junk$beta[seq(selected.terms), , drop = FALSE] residuals <- junk$res fitted.values <- y - residuals if (!is.null(wp)) { TT <- outer(rep(1, n), wp) residuals <- residuals/TT fitted.values <- fitted.values/TT coefficients <- coefficients/outer(rep(1, length(selected.terms)), wp) } dir <- junk$dir[seq(lenb), , drop = FALSE] dimnames(dir) <- list(NULL, dimnames(x)[[2]]) cutss <- junk$cuts[seq(lenb), , drop = FALSE] x <- junk$bx[, selected.terms, drop = FALSE] structure(list(call = this.call, all.terms = all.terms, selected.terms = selected.terms, penalty = penalty, degree = degree, nk = nk, thresh = thresh, gcv = junk$bestgcv, factor = dir, cuts = cutss, residuals = residuals, fitted.values = fitted.values, lenb = junk$lenb, coefficients = coefficients, x = x), class = "mars") } mda/R/model.matrix.mars.R0000644000176200001440000000162711305473124014711 0ustar liggesusersmodel.matrix.mars <- function (object, x, which = object$selected.terms, full = FALSE, ...) { if (missing(x)) return(object$x) x <- as.matrix(x) dd <- dim(x) n <- dd[1] p <- dd[2] nterms <- length(which) dir <- object$factor cut <- object$cuts if (full) { bx <- matrix(0, nrow = n, ncol = object$lenb) bx[, 1] <- 1 } else bx <- matrix(1, nrow = n, ncol = nterms) which <- which[-1] for (i in seq(along = which)) { j <- which[i] if (all(dir[j, ] == 0)) { stop("error in factor or which") } temp1 <- 1 for (k in 1:p) { if (dir[j, k] != 0) { temp2 <- dir[j, k] * (x[, k] - cut[j, k]) temp1 <- temp1 * temp2 * (temp2 > 0) } } if (full) bx[, j] <- temp1 else bx[, i + 1] <- temp1 } bx } mda/R/meanPenalty.R0000644000176200001440000000057011305473124013616 0ustar liggesusersmeanPenalty <- function (prior, cl) { n <- length(prior) Q <- matrix(0, n, n) ll <- unique(cl) for (lll in ll) { which <- cl == lll pp <- prior[which] npp <- length(pp) pp <- diag(npp) - outer(rep(1, npp), pp/sum(pp)) Q[which, which] <- t(pp) %*% pp } attr(Q, "cl") <- cl attr(Q, "prior") <- prior Q } mda/R/predict.polyreg.R0000644000176200001440000000050711305473124014453 0ustar liggesuserspredict.polyreg <- function (object, newdata, ...) { if (missing(newdata)) { z <- fitted(object) if (is.null(z)) stop("need to supply newdata") else return(z) } degree <- object$degree monomial <- object$monomial polybasis(newdata, degree, monomial) %*% object$coef } mda/R/df.gold.R0000644000176200001440000000171411306744750012666 0ustar liggesusersdf.gold <- function(x,df.target,tol=0.001,trace.it=FALSE){ dof=function(x,lambda)sum(x^2/(x^2+lambda)) goldnew =function(x1,x3){ phi=(1+sqrt(5))/2#golden ratio (x3+phi*x1)/(1+phi) } if(df.target<1)stop("Cannot have less than 1 as L1 df.target") lambda1=0 ###find a lambda3 that undercuts lambda3=0.001 df3=dof(x,lambda3) df1=dof(x,0) while(df3>df.target){ lambda3=10*lambda3 df3=dof(x,lambda3) } lambda2=goldnew(0,lambda3) df2=dof(x,lambda2) crit = abs(df2-df.target) while( crit>tol){ if(trace.it) cat("df2",df2,"lambda",lambda2,"\n") lambda0=goldnew(lambda2,lambda3) df0=dof(x,lambda0) crit0=abs(df0-df.target) if(crit0, fix by ## Bj/orn-Helge Mevik . return(factor(pclass, levels = seq(J), labels = dimnames(means)[[1]])) }, posterior = { pclass <- matrix(0, nrow(newdata), J) for (i in seq(J)) pclass[, i] <- exp(-0.5 * dist(newdata, means[i, ], dimension)) * prior[i] dimnames(pclass) <- list(dimnames(newdata)[[1]], dimnames(means)[[1]]) return(pclass/drop(pclass %*% rep(1, J))) }, hierarchical = { prior <- 2 * log(prior) Pclass <- vector("list", length(dimension.set)) names(Pclass) <- paste("D", dimension.set, sep = "") for (ad in seq(along = dimension.set)) { d <- dimension.set[ad] dd <- seq(d) mindist <- dist(newdata[, dd, drop = FALSE], means[1, dd, drop = FALSE], d) - prior[1] pclass <- rep(1, nrow(newdata)) for (i in seq(2, J)) { ndist <- dist(newdata[, dd, drop = FALSE], means[i, dd, drop = FALSE], d) - prior[i] l <- ndist < mindist pclass[l] <- i mindist[l] <- ndist[l] } levels(pclass) <- dimnames(means)[[1]] Pclass[[ad]] <- pclass } rownames <- dimnames(newdata)[[1]] if (is.null(rownames)) rownames <- paste(seq(nrow(newdata))) return(structure(Pclass, class = "data.frame", row.names = rownames, dimensions = dimension.set)) }, distances = { dclass <- matrix(0, nrow(newdata), J) for (i in seq(J)) dclass[, i] <- dist(newdata, means[i, ], dimension) dimnames(dclass) <- list(dimnames(newdata)[[1]], dimnames(means)[[1]]) return(dclass) }) } mda/R/predict.mda.R0000644000176200001440000000575411305473124013544 0ustar liggesuserspredict.mda <- function (object, newdata, type = c("class", "variates", "posterior", "hierarchical", "weights"), prior = NULL, dimension = R - 1, g, ...) { type <- match.arg(type) Rk <- dim(object$means) R <- Rk[1] k <- Rk[2] if (type == "hierarchical") { if (missing(dimension)) dimension.set <- seq(k) else { dimension.set <- dimension[dimension <= k] if (!length(dimension.set)) dimension.set <- k dimension <- max(dimension.set) } Pclass <- vector("list", length(dimension.set)) names(Pclass) <- paste("D", dimension.set, sep = "") for (ad in seq(along = dimension.set)) { d <- dimension.set[ad] Pclass[[ad]] <- if (missing(newdata)) Recall(object, prior = prior, dimension = d, ...) else Recall(object, newdata, prior = prior, dimension = d, ...) } rownames <- names(Pclass[[1]]) if (is.null(rownames)) rownames <- paste(seq(along = Pclass[[1]])) return(structure(Pclass, class = "data.frame", row.names = rownames, dimensions = dimension.set)) } else dimension <- min(max(dimension), k) if (is.null(prior)) prior <- object$prior else { if (any(prior < 0) | round(sum(prior), 5) != 1) stop("innappropriate prior") } if (type == "variates") return(NextMethod("predict")) rowmin <- function(mat) { ncc <- ncol(mat) if (ncc == 1) return(drop(mat)) rowm <- pmin(mat[, 1], mat[, 2]) if (ncc == 2) return(rowm) else { for (j in seq(from = 3, to = ncc)) rowm <- pmin(rowm, mat[, j]) } rowm } dmat <- if (missing(newdata)) predict.fda(object, type = "distances", dimension = dimension, ...) else predict.fda(object, newdata, type = "distances", dimension = dimension, ...) Assign <- object$assign sub.prior <- object$sub.prior J <- length(Assign) if (type == "weights") { if (missing(newdata)) return(object$weights) g <- as.numeric(g) weights <- Assign for (j in seq(J)) { TT <- dmat[g == j, Assign[[j]], drop = FALSE] TT <- exp(-0.5 * (TT - rowmin(TT))) TT <- TT * outer(rep(1, nrow(TT)), sub.prior[[j]]) weights[[j]] <- TT/drop(TT %*% rep(1, ncol(TT))) } return(weights) } pclass <- matrix(1, nrow(dmat), J) dmat <- exp(-0.5 * (dmat - rowmin(dmat))) for (j in seq(J)) { TT <- dmat[, Assign[[j]], drop = FALSE] TT <- TT * outer(rep(1, nrow(TT)), sub.prior[[j]]) pclass[, j] <- prior[j] * drop(TT %*% rep(1, ncol(TT))) } dimnames(pclass) <- list(NULL, names(Assign)) switch(type, class = softmax(pclass), posterior = pclass/drop(pclass %*% rep(1, J))) } mda/R/mda.fit.R0000644000176200001440000000422012523506203012655 0ustar liggesusersmda.fit <- function (x, g, weights, theta, assign.theta, Rj, sub.df=NULL, tot.df=NULL, dimension = R - 1, eps = .Machine$double.eps, method = polyreg, ...) { this.call <- match.call() n <- nrow(x) cnames <- names(weights) J <- length(cnames) R <- sum(Rj) wtots <- lapply(weights, function(x) apply(x, 2, sum)) sub.prior <- lapply(wtots, function(x) x/sum(x)) dp <- unlist(wtots) subclass.names <- names(dp) dp <- dp/sum(dp) if (missing(theta)) theta <- contr.helmert(R) theta <- contr.fda(dp, theta) if (!(is.null(sub.df) & is.null(tot.df))) { Q <- diag(dp) + transformPenalty(prior = dp, cl = rep(seq(J), Rj), df = sub.df, tot.df = tot.df) theta <- fix.theta(theta, Q) } Theta <- matrix(0, n, R - 1) obs.weights <- double(n) for (j in seq(J)) { Theta[g == j, ] <- weights[[j]] %*% theta[assign.theta[[j]], , drop = FALSE] obs.weights[g == j] <- weights[[j]] %*% rep(1, Rj[j]) } fit <- method(x, Theta, obs.weights, ...) Theta <- Theta * obs.weights ssm <- t(Theta) %*% fitted(fit)/n ed <- svd(ssm, nu = 0) thetan <- ed$v lambda <- ed$d lambda[lambda > 1 - eps] <- 1 - eps discr.eigen <- lambda/(1 - lambda) pe <- (100 * cumsum(discr.eigen))/sum(discr.eigen) dimension <- min(dimension, sum(lambda > eps)) if (dimension == 0) { warning("degenerate problem; no discrimination") return(structure(list(dimension = 0, fit = fit, call = this.call), class = "fda")) } thetan <- thetan[, seq(dimension), drop = FALSE] pe <- pe[seq(dimension)] alpha <- sqrt(lambda[seq(dimension)]) sqima <- sqrt(1 - lambda[seq(dimension)]) vnames <- paste("v", seq(dimension), sep = "") means <- scale(theta %*% thetan, FALSE, sqima/alpha) dimnames(means) <- list(subclass.names, vnames) names(lambda) <- c(vnames, rep("", length(lambda) - dimension)) names(pe) <- vnames list(percent.explained = pe, values = lambda, means = means, theta.mod = thetan, dimension = dimension, sub.prior = sub.prior, fit = fit, call = this.call) } mda/R/kmeans.start.R0000644000176200001440000000177512523504165013766 0ustar liggesuserskmeans.start <- function (x, g, subclasses) { cnames <- levels(g <- factor(g)) J <- length(cnames) g <- as.numeric(g) weights <- as.list(cnames) names(weights) <- cnames subclasses <- rep(subclasses, length = length(cnames)) R <- sum(subclasses) cl <- rep(seq(J), subclasses) cx <- x[seq(R), , drop = FALSE] for (j in seq(J)) { nc <- subclasses[j] which <- cl == j xx <- x[g == j, , drop = FALSE] if ((nc <= 1) || (nrow(xx) <= nc)) { cx[which, ] <- apply(xx, 2, mean) wmj <- matrix(1, sum(g == j), 1) } else { ### start <- xx[sample(1:nrow(xx), size = nc), ] start=nc TT <- kmeans(xx, start) cx[which, ] <- TT$centers wmj <- diag(nc)[TT$cluster, ] } dimnames(wmj) <- list(NULL, paste("s", seq(dim(wmj)[2]), sep = "")) weights[[j]] <- wmj } list(x = cx, cl = factor(cl, labels = cnames), weights = weights) } mda/R/shrink.mda.R0000644000176200001440000000430711305473124013401 0ustar liggesusersshrink.mda <- function (object, sub.df = NULL, tot.df = NULL, ...) { if (is.null(sub.df) & is.null(tot.df)) { warning("No shrinkage parameters (sub.df or tot.df) given") return(object) } dimension <- object$dimension lambda <- object$values[seq(dimension)] theta.mod <- object$theta.mod theta <- object$means alpha <- sqrt(lambda) sqima <- sqrt(1 - lambda) theta <- scale(theta, FALSE, alpha/sqima) sub.prior <- unlist(object$sub.prior) prior <- object$prior Rj <- sapply(object$assign.theta, length) dp <- sub.prior * rep(prior, Rj) cl <- rep(seq(Rj), Rj) P <- diag(dp) + transformPenalty(prior = dp, cl = cl, df = sub.df, tot.df = tot.df) K <- t(theta) %*% P %*% theta TT <- chol((K + t(K))/2) Tinv <- backsolve(TT, diag(length(lambda))) M <- t(Tinv) %*% (lambda * Tinv) ed <- svd(M) thetan <- ed$v lambda <- ed$d discr.eigen <- lambda/(1 - lambda) pe <- (100 * cumsum(discr.eigen))/sum(discr.eigen) dimension <- min(dimension, sum(lambda > .Machine$double.eps)) if (dimension == 0) { warning("degenerate problem; no discrimination") return(structure(list(dimension = 0, fit = object$fit, call = object$call), class = "fda")) } thetan <- thetan[, seq(dimension), drop = FALSE] pe <- pe[seq(dimension)] alpha <- sqrt(lambda[seq(dimension)]) sqima <- sqrt(1 - lambda[seq(dimension)]) dm <- dimnames(theta) vnames <- dm[[2]][seq(dimension)] means <- scale(theta %*% Tinv %*% thetan, FALSE, sqima/alpha) dimnames(means) <- list(dm[[1]], vnames) names(lambda) <- c(vnames, rep("", length(lambda) - dimension)) names(pe) <- vnames theta.mod <- theta.mod %*% Tinv %*% thetan object$confusion <- object$deviance <- NULL incl.names <- c("percent.explained", "values", "means", "theta.mod", "dimension") rl <- list(pe, lambda, means, theta.mod, dimension) names(rl) <- incl.names object$sub.df <- sub.df object$tot.df <- tot.df object[incl.names] <- rl object$weights <- NULL update(object, sub.df = sub.df, tot.df = tot.df, weights = object, ...) } mda/R/shrink.R0000644000176200001440000000006711305473124012640 0ustar liggesusersshrink <- function (object, ...) UseMethod("shrink") mda/R/polybasis.R0000644000176200001440000000426211305473124013350 0ustar liggesuserspolybasis <- function (x, degree = 1, monomial = FALSE) { if (degree >= 3) warning("This is not a smart polynomial routine. You may get numerical problems with a degree of 3 or more") x <- as.matrix(x) dn <- dimnames(x) dd <- dim(x) np <- dd[2] if (np == 1) monomial <- TRUE if (degree > 1) { if (monomial) { px <- x cc <- sapply(split(paste(diag(np)), rep(seq(np), rep(np, np))), paste, collapse = "") tx <- x for (i in 2:degree) { px <- px * tx x <- cbind(x, px) cc <- c(cc, sapply(split(paste(diag(np) * i), rep(seq(np), rep(np, np))), paste, collapse = "")) } } else { matarray <- array(x, c(dd, degree)) for (i in 2:degree) matarray[, , i] <- x^i matarray <- aperm(matarray, c(1, 3, 2)) x <- matarray[, , np] ad0 <- seq(degree) ad <- ad0 ncol.mat0 <- degree ncol.x <- degree d0 <- paste(ad0) cc <- d0 for (ii in seq(np - 1, 1)) { index0 <- rep(seq(ncol.mat0), ncol.x) index <- rep(seq(ncol.x), rep(ncol.mat0, ncol.x)) newad <- ad0[index0] + ad[index] retain <- newad <= degree mat0 <- matarray[, , ii] if (any(retain)) newmat <- mat0[, index0[retain], drop = FALSE] * x[, index[retain], drop = FALSE] else newmat <- NULL ddn <- paste(d0[index0[retain]], cc[index[retain]], sep = "") zeros <- paste(rep(0, nchar(cc[1])), collapse = "") cc <- paste(0, cc, sep = "") d00 <- paste(d0, zeros, sep = "") x <- cbind(mat0, x, newmat) cc <- c(d00, cc, ddn) ad <- c(ad0, ad, newad[retain]) ncol.x <- length(ad) } } if (!is.null(dn)) dn[[2]] <- cc else dn <- list(NULL, cc) dimnames(x) <- dn } cbind(Intercept = 1, x) } mda/R/confusion.list.R0000644000176200001440000000045111305473124014314 0ustar liggesusersconfusion.list <- function (object, truth, ...) { dd <- names(object) y <- seq(dd) x <- attr(object, "dimension") if (!length(x)) x <- seq(dd) for (i in y) { confi <- confusion(object[, i], truth) y[i] <- attr(confi, "error") } return(x, y) } mda/R/fda.R0000644000176200001440000000530312203547737012104 0ustar liggesusersfda <- function (formula = formula(data), data = sys.frame(sys.parent()), weights, theta, dimension = J - 1, eps = .Machine$double.eps, method = polyreg, keep.fitted = (n * dimension < 5000), ...) { this.call <- match.call() m <- match.call(expand.dots = FALSE) m[[1]] <- as.name("model.frame") m <- m[match(names(m), c("", "formula", "data", "weights"), 0)] m <- eval(m, parent.frame()) Terms <- attr(m, "terms") g <- model.extract(m, "response") # attr(Terms, "intercept") <- 0 This fails if a factor is in the model formula x <- model.matrix(Terms, m) if(attr(Terms, "intercept"))x=x[,-1,drop=FALSE] dd <- dim(x) n <- dd[1] weights <- model.extract(m, weights) if (!length(weights)) weights <- rep(1, n) else if (any(weights < 0)) stop("negative weights not allowed") if (length(g) != n) stop("g should have length nrow(x)") fg <- factor(g) prior <- table(fg) prior <- prior/sum(prior) cnames <- levels(fg) g <- as.numeric(fg) J <- length(cnames) iswt <- FALSE if (missing(weights)) dp <- table(g)/n else { weights <- (n * weights)/sum(weights) dp <- tapply(weights, g, sum)/n iswt <- TRUE } if (missing(theta)) theta <- contr.helmert(J) theta <- contr.fda(dp, theta) Theta <- theta[g, , drop = FALSE] fit <- method(x, Theta, weights, ...) if (iswt) Theta <- Theta * weights ssm <- t(Theta) %*% fitted(fit)/n ed <- svd(ssm, nu = 0) thetan <- ed$v lambda <- ed$d lambda[lambda > 1 - eps] <- 1 - eps discr.eigen <- lambda/(1 - lambda) pe <- (100 * cumsum(discr.eigen))/sum(discr.eigen) dimension <- min(dimension, sum(lambda > eps)) if (dimension == 0) { warning("degenerate problem; no discrimination") return(structure(list(dimension = 0, fit = fit, call = this.call), class = "fda")) } thetan <- thetan[, seq(dimension), drop = FALSE] pe <- pe[seq(dimension)] alpha <- sqrt(lambda[seq(dimension)]) sqima <- sqrt(1 - lambda[seq(dimension)]) vnames <- paste("v", seq(dimension), sep = "") means <- scale(theta %*% thetan, FALSE, sqima/alpha) dimnames(means) <- list(cnames, vnames) names(lambda) <- c(vnames, rep("", length(lambda) - dimension)) names(pe) <- vnames obj <- structure(list(percent.explained = pe, values = lambda, means = means, theta.mod = thetan, dimension = dimension, prior = prior, fit = fit, call = this.call, terms = Terms), class = "fda") obj$confusion <- confusion(predict(obj), fg) if (!keep.fitted) obj$fit$fitted.values <- NULL obj } mda/R/softmax.R0000644000176200001440000000113711305473124013022 0ustar liggesuserssoftmax <- function (x, gap = FALSE) { d <- dim(x) maxdist <- x[, 1] pclass <- rep(1, d[1]) for (i in seq(2, d[2])) { l <- x[, i] > maxdist pclass[l] <- i maxdist[l] <- x[l, i] } dd <- dimnames(x)[[2]] if (gap) { x <- abs(maxdist - x) x[cbind(seq(d[1]), pclass)] <- drop(x %*% rep(1, d[2])) gaps <- do.call("pmin", data.frame(x)) } pclass <- if (is.null(dd) || !length(dd)) pclass else factor(pclass, levels = seq(d[2]), labels = dd) if (gap) list(class = pclass, gaps = gaps) else pclass } mda/MD50000644000176200001440000001131313176642232011330 0ustar liggesusers60fc574fbb70fc519de60564d4f70dd6 *ChangeLog 819d2b97c3cfeb90a7664a3d3f0a6820 *DESCRIPTION 4ee5c8bbb3fc6c56d92a541a88a17514 *NAMESPACE dbda29d4a4fc085f54d9bbc87ca32948 *PORTING 4893cbb3d6281aa19e2c9ecfb6cd1dec *R/bruto.R df9f5ffd1b3f05c90de51c4d3650b5ef *R/coef.fda.R c013510f47418f5a2321a4647cf08d22 *R/confusion.R b6ed1082eee5a7007b8ade9e960a2706 *R/confusion.default.R 7eac0cd2b179bd55995e20c80c60b655 *R/confusion.fda.R d9588148d4e90340320ba4d79cdacce1 *R/confusion.list.R 38fac132d0ccb9366555012b5846cffd *R/contr.fda.R f10594f4fc02a5d313997236a8f00bff *R/df.gold.R 071c047ee15e7fba05b0194f1f5c3b0a *R/fda.R eea377f9b91972cdf511cf9a849c5715 *R/fix.theta.R e362fbd33da836142c5cb5d83cbf241f *R/gen.ridge.R 0e91a958b86f2c64fd1b24ba67ed1144 *R/kmeans.start.R 81c98507d4e440b0a042b3dc2997b021 *R/laplacian.R 066dc9c4d8297360899c75f3e2f0d103 *R/llmult.R 3c6d47cb90deb7d649383e97302189d5 *R/lvq.start.R 6a0d18dd5c47833123be72e3cbf42c57 *R/mars.R d208262120083f8a2c84d7540432241b *R/mda.R 24fdad5bb03177583c462ffb0f674d89 *R/mda.fit.R a449cdc559c403675acc853c13c4ea26 *R/mda.means.R 2b3b9a1a3321ae08e6980c6c0881ce27 *R/mda.start.R 379870b2aa1f5e6384bdb33f4c150285 *R/meanPenalty.R 984915c3b88457fa6b678f5fd8868607 *R/model.matrix.mars.R 7877db54e9a6d15683ab029de8273bbf *R/mspline.R abc01219b9f154f43ff90af9238ade31 *R/onAttach.R 9f93cc1bd1780222b18eb1f0b1c15b9f *R/plot.fda.R f529a5159c4f4689ceaf15c24be5a8ff *R/polybasis.R bd65297ec7d49edd130c1bcb4f632f36 *R/polyreg.R dd9b3e7ab6c1b45dbfef554f0d40956f *R/pplot.R d77ea875335c2cbba7d283cdaa73fe0c *R/pplot4.R 1f3e5799dea687b86b1500049faa2195 *R/predict.bruto.R 976c4c72edbcf14dce25f9db11450ab6 *R/predict.fda.R 60b36ef1f52d35944a4be11c113a5aca *R/predict.gen.ridge.R 871bffe94856308e83d389984750fb0e *R/predict.mars.R 27d9c23df22366d5abe62df4956c6c73 *R/predict.mda.R 806f305aa93f3e9cfc258187f641d33b *R/predict.polyreg.R a25b2cdbc0ed0a241ff3027f4da1402f *R/print.fda.R 5467f48506ac353c9abb4215a0af8a3f *R/print.mda.R 81213b69f946fb0c6117546366fc1d1e *R/shrink.R 88604ec639733d6d48095263d7554e87 *R/shrink.mda.R edd4caac8a56625c57d1a3ce614bae58 *R/softmax.R b3237a9365f1a11398b6ea798a5953ac *R/transformPenalty.R 78a0c8ccea18c92729c6cdf44bf023e5 *README e47fcc9b9d35ea4673424369f0db27b4 *TODO c637b4768a3b0f29a6b5e71e4203c1a3 *data/ESL.mixture.rda 62dadfb8e34061e475fe9445750e6094 *data/glass.rda 2844cd9ad850947ca14c8c89d1a65036 *man/ESL.mixture.Rd 22ec7dd0558248f38d61e78323a879bd *man/bruto.Rd facea9384d4b7b1b6d44475a2426f4f2 *man/coef.fda.Rd 12a307bd41d7002ad3953f430a12cccc *man/confusion.Rd 18e6a2ac85e97cff55d0c63712f28322 *man/fda.Rd 99db2a448546ca2645da88ce6c22c560 *man/gen.ridge.Rd bed4b81a673740a9942a167df50ebcc2 *man/glass.Rd 3c7ef2c4bce68f5c0d08b6b9f0bf19d2 *man/laplacian.Rd 89f4b34c766cecb927fc84e9509141e6 *man/mars.Rd bc8e8ba9f9954f5aef14b40740bb9328 *man/mda.Rd bb8929ec7d2e2f28ceabbff0badc21d9 *man/mda.start.Rd d78bfa708f22d6f3a65bff7b7a7c9331 *man/model.matrix.mars.Rd 980b8172f151e41ba7662f3ec7229b6e *man/mspline.Rd 4d4382bf4772f0d1ba1e2c40db61589d *man/plot.fda.Rd d666df1df4b23ae705c7f3a1a17c5d08 *man/polyreg.Rd 035e45c1004a059a6c8331a5589ee924 *man/predict.bruto.Rd 9b25b73baaa2bfb9ed3d91cdd70e5a7d *man/predict.fda.Rd 0dae87b8d68b27c55e4a50852ee9b9ed *man/predict.mars.Rd 7579ef056ae46b8ffe701f776e12b01e *man/predict.mda.Rd 85cc9d91e20e7b3ae007506c911c62e0 *man/softmax.Rd aa03a53ba829d47ee9fbdaf82a6d01f9 *src/bruto.f f6e5b3dcd134cb325c0a13df98f3f923 *src/bsplvd.f 2cf888d1f6a6ca37a7211c7c6ab86c0e *src/bvalue.f da892c26dc2fcbf6cbc9fe5be433f782 *src/dcalcvar.f fdf64b0efb318190ac12e29401bdaa06 *src/dmarss.f 32fe427e7dbab87d36aa2715712d0a1c *src/dorthreg.f f4943e001de3a645d7b8d75cbbe20378 *src/dqrreg.f 22f6b21d08f265b9b92300e44dd5b119 *src/mda_init.c 7cb23ffe9bbee7df5e58e581d95688f8 *src/mspline.f f52bf4488781837d7c255f16280149a9 *src/rat/README 9d426796ce32cc0ce5f33f975ae7aa7a *src/rat/bruto.r d47f2a92367dcb5d9717670ebe3b771e *src/rat/dcalcvar.r d97875af5137bacc8c48607f92d38985 *src/rat/dmarss.r 5468af4a41b4e3653bb8732e00eeeb1a *src/rat/dorthreg.r 87e00acb8f53e360d0e7b19403cc0360 *src/rat/dqrreg.r 03a701e8cf11c5ac116cb33ae77c16fc *src/rat/mspline.r ec0f1cafcca3df67b1d4383893ce43e2 *src/rat/sknotl.r 946c8b4115b39c6d3bfb4b8ce340b359 *src/rat/splsm.r 968397cf73895f9a4b10e227b2c8ab8d *src/rat/sspl00.r d154fc7c93c425affd4bd6b796134139 *src/rat/tmatch.r 81b3b3142bd911c0d320cdb0d4f1cac9 *src/sbart.f 82da999d24034505301e31c78d1e58cc *src/sgram.f e353cbbcc757aef8d1c97eec614f51c2 *src/sinerp.f 8b9f448de62e4ecaa26ec27e66b0b35f *src/sknotl.f 26225b56823662b310db30460205567b *src/sortdi.f dfe91e04c159b744c2aa57ccbe32251c *src/splsm.f 27ffc403bda6e3ea8f60d8e8e978624d *src/sslvrg.f 3ea67e8456b3f7c8001f9c97fc099630 *src/sspl00.f90 621a4459f50179ef88916a91e20804fb *src/stxwx.f e9e3c986f45da4125c3105d14b8de76e *src/tmatch.f mda/README0000644000176200001440000000051310467142622011676 0ustar liggesusersThis is a first shot at porting the Hastie & Tibshirani mda package to R. mda and fda with MARS seem to work fine, but bruto is still broken and segfaults. Hopefully, this can be fixed soon. Kurt Hornik Friedrich Leisch Actually, mda was not fine: it was doing the pruning incorrectly. bruto now works. Brian Ripley 99/08/17 mda/DESCRIPTION0000644000176200001440000000111213176642232012522 0ustar liggesusersPackage: mda Version: 0.4-10 Date: 2017-11-02 Author: S original by Trevor Hastie & Robert Tibshirani. Original R port by Friedrich Leisch, Kurt Hornik and Brian D. Ripley. Maintainer: Trevor Hastie Description: Mixture and flexible discriminant analysis, multivariate adaptive regression splines (MARS), BRUTO, ... Title: Mixture and Flexible Discriminant Analysis Depends: R (>= 1.9.0), stats, class Suggests: earth License: GPL-2 Packaged: 2017-11-02 15:46:34 UTC; hastie Repository: CRAN Date/Publication: 2017-11-02 16:15:22 UTC NeedsCompilation: yes mda/ChangeLog0000644000176200001440000002150713176636671012612 0ustar liggesusers2017-11-02 Trevor Hastie * src/mspline.f: subtle bug in subroutine namat; missing branch * added foreign function registration code 2016-08-05 Trevor Hastie * R/mspline: added a function to compute vector smoothing spline * man/mspline: helpfile 2013-08-09 Trevor Hastie * DESCRIPTION (Version): New version is 0.4-3. * R/coef.fda: got rid of type="discriminant" which was wierd * man/coef.fda helpfile for coef * R/bruto: fixed bug in call to nknotl * src/dmarss.f: fixed subtle bug (in dmarss.r), pointed out by Gints Jekabsons/Stephen Milborrow * R/fda: fixed a bug, if some variables are factors 2009-12-09 Trevor Hastie * DESCRIPTION (Version): New version is 0.4-1. * R/plot.fda * R/fda * R/mda Small changes in behavior * R/df.gold * R/gen.ridge * R/laplacian * data/ESL.mixture * man/ESL.mixture New data object added Major changes and new functions, to make df work all the time, and laplacian * man/plot.fda * man/laplacian added 2009-11-22 Kurt Hornik * DESCRIPTION (Version): New version is 0.3-5. * man/bruto.Rd: * man/mars.Rd: * man/mda.Rd: * man/predict.fda.Rd: * man/predict.mda.Rd: Improve spelling. * R/mda.R ("mda.start"): Remove unnecessary run-time loading. 2009-01-04 Kurt Hornik * DESCRIPTION (Version): New version is 0.3-4. * man/mars.Rd: Documentation enhancements suggested by Stephen Milborrow . 2008-12-19 Kurt Hornik * DESCRIPTION (Version): New version is 0.3-3. * man/model.matrix.mars.Rd: Use \method markup in \usage. 2006-10-04 Kurt Hornik * DESCRIPTION (Version): New version is 0.3-2. (License): Standardize. 2005-12-02 Kurt Hornik * DESCRIPTION (Version): New version is 0.3-1. * man/mars.Rd: Additive => Adaptive (spotted by Gregory Dalhoff ). 2005-10-24 Kurt Hornik * DESCRIPTION (Version): New version is 0.3-0. * NAMESPACE: Added. 2005-09-09 Kurt Hornik * DESCRIPTION (Version): New version is 0.2-29. * R/mda.R: Fix codetools-spotted problems. 2005-07-25 Kurt Hornik * DESCRIPTION (Version): New version is 0.2-28. * R/mda.R: man/predict.bruto.Rd: man/predict.fda.Rd: man/predict.mars.Rd: man/predict.mda.Rd: Rename second argument of predict methods to 'newdata'. Patches kindly provided by Uwe Ligges. 2005-04-11 Kurt Hornik * src/dmarss.f (marsnew1): Correct double precision constants. 2004-09-15 Kurt Hornik * DESCRIPTION (Version): New version is 0.2-26. (Depends): Depend on R >= 1.9.0 and stats. * R/zzz.R (.First.lib): Require stats. * R/df.inv.R (df.diriv): Multi-argument return values are deprecated in R. * R/mda.R (df.diriv): Multi-argument return values are deprecated in R. ("mda.start"): Stop to require mva. ("polyreg"): Coerce y to matrix (e.g., in case it was subscripted from a data frame) 2004-08-12 Kurt Hornik * DESCRIPTION (Version): New version is 0.2-25. * R/df.inv.R: * man/mda-internal.Rd: New (internal) function df.inv() contributed by Trevor Hastie. Gets called by bruto(), and had been missing thus far. 2004-07-20 Kurt Hornik * DESCRIPTION (Version): New version is 0.2-24. * man/mars.Rd: Improve documentation on mars() return value as suggested by Charlotte Guddat . 2004-01-31 Kurt Hornik * DESCRIPTION (Version): New version is 0.2-23. * INDEX: Removed. 2003-12-18 Kurt Hornik * DESCRIPTION (Version): New version is 0.2-22. (Depends): Depend on R 1.5.0 or better. * src/interv.c: Remove (pre-1.5.0 compatibility code). * man/mda-internal.Rd: Change keyword to 'internal'. 2003-11-09 Kurt Hornik * DESCRIPTION (Version): New version is 0.2-21. * R/mda.R ("kmeans.start"): If nrow(xx) < nc, wmj has less than nc columns, and setting the colnames to something of length nc fails. * man/bruto.Rd: Fix codoc default value problem. 2003-10-10 Kurt Hornik * DESCRIPTION (Version): New version is 0.2-20. * R/mda.R (pplot, predict.bruto"): Hmm, the ChangeLog says that we already got rid of all occurrences of code() but apparently we did not. Replace the remaining ones by calls to as.numeric(). 2003-08-06 Kurt Hornik * DESCRIPTION (Version): New version is 0.2-19. * man/gen.ridge.Rd: Rd markup. * man/confusion.Rd: Move alias 'confusion.fda' over from 'fda.Rd' as 'confusion.Rd' has explicit usage for it. 2003-06-06 Kurt Hornik * DESCRIPTION (Version): New version is 0.2-18. * R/mda.R (nknotl, pplot, predict.bruto): Replace 'codes' by 'unclass' as the former is deprecated in R 1.8. 2003-04-23 Kurt Hornik * DESCRIPTION (Version): New version is 0.2-17. (Maintainer): Update KH email address. 2003-03-14 Kurt Hornik * DESCRIPTION (Version): New version is 0.2-16. * R/mda.R (fda): Remove 'm <- dd[2]' as subsequently m is still needed as a model frame (Jim Rogers ). 2002-01-10 Kurt Hornik * DESCRIPTION (Version): New version is 0.2-15. * src/bsplvd.f: * src/bvalue.f: * src/sgram.f: * src/sinerp.f: * src/sslvrg.f: * src/stxwx.f: * src/mspline.f: * src/interv.c: The code used calls to interv() which was recently added to R 1.5 but with a different interface. Hence, sync the code for spline smoothing (first 6 files) with the versions in R 1.5 modreg, change all usages of interv(), and provide the new version of interv() for R versions less than 1.5 in interv.c. All changes courtesy by Martin Maechler. 2001-11-27 Kurt Hornik * DESCRIPTION (Version): New version is 0.2-14. * R/mda.R: kmeans.start needed an improved case handling. 2001-10-27 Kurt Hornik * DESCRIPTION (Version): New version is 0.2-13. * R/mda.R: predict.fda gave an error when the predicted classes did not contain all possible classes. Fix by Bj/orn-Helge Mevik . 2001-08-20 Kurt Hornik * DESCRIPTION (Version): New version is 0.2-12. * R/mda.R: * man/confusion.Rd: * man/mda-internal.Rd: * man/predict.bruto.Rd: * man/predict.fda.Rd: * man/predict.mars.Rd: * man/predict.mda.Rd: Fix generic/method inconsistencies. 2001-08-19 Kurt Hornik * man/gen.ridge.Rd: * man/mda.start.Rd: * man/model.matrix.mars.Rd: * man/polyreg.Rd: Document undocumented '...' arguments. * R/mda.R: TnF fixes. 2001-07-22 Kurt Hornik * DESCRIPTION (Version): New version is 0.2-11. * src/dmarss.f: * src/dqrreg.f: * src/splsm.f: Ensure ANSI FORTRAN 77 compliant continuation lines (fixes provided by Tim Hoar ). 2001-07-14 Kurt Hornik * DESCRIPTION (Version): New version is 0.2-10. * man/mars.Rd: Fix unbalanced braces. 2001-06-18 Kurt Hornik * DESCRIPTION (Version): New version is 0.2-9. (Depends): Rename from 'Suggests'. 2001-06-02 Kurt Hornik * DESCRIPTION (Version): New version is 0.2-8. * man/bruto.Rd: * man/confusion.Rd: * man/predict.mda.Rd: * man/mars.Rd: Codoc fixes. 2001-03-24 Kurt Hornik * DESCRIPTION (Version): New version is 0.2-7. * R/mda.R: Add 'PACKAGE' argument to FF calls. Tidy up following R-exts, and rename from 'mda.q' to 'mda.R'. 2001-01-01 Kurt Hornik * DESCRIPTION (Version): New version is 0.2-6. * man/mda-internal.Rd: New file. * man/*.Rd: Miscellaneous improvements (add missing \description and \keyword entries; Rd improvements, and so on). 2000-12-24 Kurt Hornik * DESCRIPTION (Version): New version is 0.2-5. (Maintainer): New entry. 2000-12-19 Kurt Hornik * DESCRIPTION (Version): New version is 0.2-4. (Title): Added. * TITLE: Removed. * src/dqrreg.f (qrreg): Replace call to dqrdca (removed from S_compat in R 1.2.0) with the equivalent call to dqrdc2. * man/glass.Rd: Rewritten, added \keyword. Sun Aug 22 16:01:55 1999 Kurt Hornik * DESCRIPTION (Version): New version is 0.2-3. (License): Now released under GPL version 2. Thu Aug 19 10:50:59 1999 Kurt Hornik * DESCRIPTION (Version): New version is 0.2-2 (first release). * ChangeLog: Finally started. mda/man/0000755000176200001440000000000013176636732011604 5ustar liggesusersmda/man/predict.mda.Rd0000644000176200001440000000423511302276107014252 0ustar liggesusers\name{predict.mda} \alias{predict.mda} \title{Classify by Mixture Discriminant Analysis} \description{ Classify observations in conjunction with \code{mda}. } \usage{ \method{predict}{mda}(object, newdata, type, prior, dimension, g, \dots) } \arguments{ \item{object}{a fitted mda object.} \item{newdata}{new data at which to make predictions. If missing, the training data is used.} \item{type}{kind of predictions: \code{type = "class"} (default) produces a fitted factor, \code{type = "variates"} produces a matrix of discriminant variables (note that the maximal dimension is determined by the number of subclasses), \code{type = "posterior"} produces a matrix of posterior probabilities (based on a gaussian assumption), \code{type = "hierarchical"} produces the predicted class in sequence for models of dimensions specified by \code{dimension} argument.} \item{prior}{the prior probability vector for each class; the default is the training sample proportions.} \item{dimension}{the dimension of the space to be used, no larger than the dimension component of \code{object}, and in general less than the number of subclasses. \code{dimension} can be a vector for use with \code{type = "hierarchical"}.} \item{g}{???} \item{\dots}{further arguments to be passed to or from methods.} } \value{ An appropriate object depending on \code{type}. \code{object} has a component \code{fit} which is regression fit produced by the \code{method} argument to \code{mda}. There should be a \code{predict} method for this object which is invoked. This method should itself take as input \code{object} and optionally \code{newdata}. } \seealso{ \code{\link{mda}}, \code{\link{fda}}, \code{\link{mars}}, \code{\link{bruto}}, \code{\link{polyreg}}, \code{\link{softmax}}, \code{\link{confusion}} } \examples{ data(glass) samp <- sample(1:nrow(glass), 100) glass.train <- glass[samp,] glass.test <- glass[-samp,] glass.mda <- mda(Type ~ ., data = glass.train) predict(glass.mda, glass.test, type = "post") # abbreviations are allowed confusion(glass.mda, glass.test) } \keyword{classif} % Converted by Sd2Rd version 0.3-3. mda/man/softmax.Rd0000644000176200001440000000163211305674401013541 0ustar liggesusers\name{softmax} \alias{softmax} \title{Find the Maximum in Each Row of a Matrix} \description{Find the maximum in each row of a matrix.} \usage{ softmax(x, gap = FALSE) } \arguments{ \item{x}{a numeric matrix.} \item{gap}{if \code{TRUE}, the difference between the largest and next largest column is returned.} } \value{ A factor with levels the column labels of \code{x} and values the columns corresponding to the maximum column. If \code{gap = TRUE} a list is returned, the second component of which is the difference between the largest and next largest column of \code{x}. } \seealso{ \code{\link{predict.fda}}, \code{\link{confusion}}, \code{\link{fda}} \code{\link{mda}} } \examples{ data(iris) irisfit <- fda(Species ~ ., data = iris) posteriors <- predict(irisfit, type = "post") confusion(softmax(posteriors), iris[, "Species"]) } % Converted by Sd2Rd version 0.3-3. \keyword{utilities} mda/man/plot.fda.Rd0000644000176200001440000000361212201520661013561 0ustar liggesusers\name{plot.fda} \alias{plot.fda} \title{Plot for Flexible Discriminant Analysis} \description{Plot in discriminant (canonical) coordinates a \code{fda} or (by inheritance) a \code{mda} object. } \usage{ \method{plot}{fda}(x, data, coords, group, colors, pch, mcolors, mpch, pcex, mcex, \dots) } \arguments{ \item{x}{an object of class \code{"fda"}.} \item{data}{the data to plot in the discriminant coordinates. If \code{group="true"}, then data should be a data frame with the same variables that were used in the fit. If \code{group="predicted"}, \code{data} need not contain the response variable, and can in fact be the correctly-sized \code{"x"} matrix.} \item{coords}{vector of coordinates to plot, with default \code{coords="c(1,2)"}. All pairs of plots are produced.} \item{group}{if \code{group="true"} (the default), each point is color and symbol coded according to the response in \code{data}. If \code{group="predicted"}, the class of each point is predicted from the model, and used instead.} \item{colors}{a vector of colors to be used in the plotting.} \item{pch}{a vector of plotting characters.} \item{mcolors}{a vector of colors for the class centroids; default is \code{colors}.} \item{mpch}{a vector of plotting characters for the centroids.} \item{pcex}{character expansion factor for the points; defualt is \code{pcex="0.5"}.} \item{mcex}{character expansion factor for the centroids; defualt is \code{pcex="2.5"}.} \item{\dots}{further arguments to be passed to or from methods.} } \seealso{ \code{\link{fda}}, \code{\link{mda}}, \code{\link{predict.fda}} } \examples{ data(iris) irisfit <- fda(Species ~ ., data = iris) plot(irisfit) data(ESL.mixture) ## Not a data frame mixture.train=ESL.mixture[c("x","y")] mixfit=mda(y~x, data=mixture.train) plot(mixfit, mixture.train) plot(mixfit, data=ESL.mixture$xnew, group="pred") } \keyword{classif} mda/man/confusion.Rd0000644000176200001440000000221410467142622014063 0ustar liggesusers\name{confusion} \alias{confusion} \alias{confusion.default} \alias{confusion.list} \alias{confusion.fda} \title{Confusion Matrices} \description{ Compute the confusion matrix between two factors, or for an fda or mda object. } \usage{ \method{confusion}{default}(object, true, \dots) \method{confusion}{fda}(object, data, \dots) } \arguments{ \item{object}{the predicted factor, or an fda or mda model object.} \item{true}{the true factor.} \item{data}{a data frame (list) containing the test data.} \item{\dots}{further arguments to be passed to or from methods.} } \details{ This is a generic function. } \value{ For the default method essentially \code{table(object, true)}, but with some useful attribute(s). } \seealso{ \code{\link{fda}}, \code{\link{predict.fda}} } \examples{ data(iris) irisfit <- fda(Species ~ ., data = iris) confusion(predict(irisfit, iris), iris$Species) ## Setosa Versicolor Virginica ## Setosa 50 0 0 ## Versicolor 0 48 1 ## Virginica 0 2 49 ## attr(, "error"): ## [1] 0.02 } % Converted by Sd2Rd version 0.3-3. \keyword{category} mda/man/mda.start.Rd0000644000176200001440000000216610467142622013763 0ustar liggesusers\name{mda.start} \alias{mda.start} \title{Initialization for Mixture Discriminant Analysis} \description{Provide starting weights for the \code{mda} function which performs discriminant analysis by gaussian mixtures.} \usage{ mda.start(x, g, subclasses = 3, trace.mda.start = FALSE, start.method = c("kmeans", "lvq"), tries = 5, criterion = c("misclassification", "deviance"), \dots) } \arguments{ \item{x}{The x data, or an mda object.} \item{g}{The response vector g.} \item{subclasses}{number of subclasses per class, as in \code{mda}.} \item{trace.mda.start}{Show results of each iteration.} \item{start.method}{Either \code{"kmeans"} or \code{"lvq"}. The latter requires package \bold{class} (from the \bold{VR} package bundle.} \item{tries}{Number of random starts.} \item{criterion}{By default, classification errors on the training data. Posterior deviance is also an option.} \item{\dots}{arguments to be passed to the mda fitter when using posterior deviance.} } \value{ A list of weight matrices, one for each class. } % Converted by Sd2Rd version 0.3-3. \keyword{classif} mda/man/fda.Rd0000644000176200001440000001304412203551020012577 0ustar liggesusers\name{fda} \alias{fda} \alias{print.fda} \title{Flexible Discriminant Analysis} \description{ Flexible discriminant analysis.} \usage{ fda(formula, data, weights, theta, dimension, eps, method, keep.fitted, \dots) } \arguments{ \item{formula}{of the form \code{y~x} it describes the response and the predictors. The formula can be more complicated, such as \code{y~log(x)+z} etc (see \code{\link{formula}} for more details). The response should be a factor representing the response variable, or any vector that can be coerced to such (such as a logical variable).} \item{data}{data frame containing the variables in the formula (optional).} \item{weights}{an optional vector of observation weights.} \item{theta}{an optional matrix of class scores, typically with less than \code{J-1} columns.} \item{dimension}{The dimension of the solution, no greater than \code{J-1}, where \code{J} is the number classes. Default is \code{J-1}.} \item{eps}{a threshold for small singular values for excluding discriminant variables; default is \code{.Machine$double.eps}.} \item{method}{regression method used in optimal scaling. Default is linear regression via the function \code{polyreg}, resulting in linear discriminant analysis. Other possibilities are \code{mars} and \code{bruto}. For Penalized Discriminant analysis \code{gen.ridge} is appropriate.} \item{keep.fitted}{a logical variable, which determines whether the (sometimes large) component \code{"fitted.values"} of the \code{fit} component of the returned fda object should be kept. The default is \code{TRUE} if \code{n * dimension < 5000}.} \item{\dots}{additional arguments to \code{method}.} } \value{ an object of class \code{"fda"}. Use \code{predict} to extract discriminant variables, posterior probabilities or predicted class memberships. Other extractor functions are \code{coef}, \code{confusion} and \code{plot}. The object has the following components: \item{percent.explained}{the percent between-group variance explained by each dimension (relative to the total explained.)} \item{values}{optimal scaling regression sum-of-squares for each dimension (see reference). The usual discriminant analysis eigenvalues are given by \code{values / (1-values)}, which are used to define \code{percent.explained}.} \item{means}{class means in the discriminant space. These are also scaled versions of the final theta's or class scores, and can be used in a subsequent call to \code{fda} (this only makes sense if some columns of theta are omitted---see the references).} \item{theta.mod}{(internal) a class scoring matrix which allows \code{predict} to work properly.} \item{dimension}{dimension of discriminant space.} \item{prior}{class proportions for the training data.} \item{fit}{fit object returned by \code{method}.} \item{call}{the call that created this object (allowing it to be \code{update}-able)} \item{confusion}{confusion matrix when classifying the training data.} The \code{method} functions are required to take arguments \code{x} and \code{y} where both can be matrices, and should produce a matrix of \code{fitted.values} the same size as \code{y}. They can take additional arguments \code{weights} and should all have a \code{\dots} for safety sake. Any arguments to \code{method} can be passed on via the \code{\dots} argument of \code{fda}. The default method \code{\link{polyreg}} has a \code{degree} argument which allows polynomial regression of the required total degree. See the documentation for \code{\link{predict.fda}} for further requirements of \code{method}. The package \code{earth} is suggested for this package as well; \code{earth} is a more detailed implementation of the mars model, and works as a \code{method} argument. } \author{ Trevor Hastie and Robert Tibshirani } \seealso{ \code{\link{predict.fda}}, \code{\link{plot.fda}}, \code{\link{mars}}, \code{\link{bruto}}, \code{\link{polyreg}}, \code{\link{softmax}}, \code{\link{confusion}}, %% \code{\link{coefficients.fda}} } \references{ ``Flexible Disriminant Analysis by Optimal Scoring'' by Hastie, Tibshirani and Buja, 1994, JASA, 1255-1270. ``Penalized Discriminant Analysis'' by Hastie, Buja and Tibshirani, 1995, Annals of Statistics, 73-102. ``Elements of Statisical Learning - Data Mining, Inference and Prediction'' (2nd edition, Chapter 12) by Hastie, Tibshirani and Friedman, 2009, Springer } \examples{ data(iris) irisfit <- fda(Species ~ ., data = iris) irisfit ## fda(formula = Species ~ ., data = iris) ## ## Dimension: 2 ## ## Percent Between-Group Variance Explained: ## v1 v2 ## 99.12 100.00 ## ## Degrees of Freedom (per dimension): 5 ## ## Training Misclassification Error: 0.02 ( N = 150 ) confusion(irisfit, iris) ## Setosa Versicolor Virginica ## Setosa 50 0 0 ## Versicolor 0 48 1 ## Virginica 0 2 49 ## attr(, "error"): ## [1] 0.02 plot(irisfit) coef(irisfit) ## [,1] [,2] ## [1,] -2.126479 -6.72910343 ## [2,] -0.837798 0.02434685 ## [3,] -1.550052 2.18649663 ## [4,] 2.223560 -0.94138258 ## [5,] 2.838994 2.86801283 marsfit <- fda(Species ~ ., data = iris, method = mars) marsfit2 <- update(marsfit, degree = 2) marsfit3 <- update(marsfit, theta = marsfit$means[, 1:2]) ## this refits the model, using the fitted means (scaled theta's) ## from marsfit to start the iterations } \keyword{classif} % Converted by Sd2Rd version 0.3-3. mda/man/mspline.Rd0000644000176200001440000000233412750766264013545 0ustar liggesusers\name{mspline} \alias{mspline} \title{ Vector Smoothing Spline } \description{ Fit a smoothing spline to a matrix of responses, single x. } \usage{ mspline(x, y, w, df = 5, lambda, thresh = 1e-04, \dots) } \arguments{ \item{x}{ x variable (numeric vector). } \item{y}{ response matrix. } \item{w}{ optional weight vector, defaults to a vector of ones. } \item{df}{ requested degrees of freedom, as in \code{smooth.spline}. } \item{lambda}{ can provide penalty instead of df. } \item{thresh}{ convergence threshold for df inversion (to lambda). } \item{\dots}{ holdall for other arguments. } } \details{ This function is based on the ingredients of \code{smooth.spline}, and allows for simultaneous smoothing of multiple responses } \value{ A list is returned, with a number of components, only some of which are of interest. These are \item{lambda}{The value of lambda used (in case df was supplied)} \item{df}{The df used (in case lambda was supplied)} \item{s}{A matrix like \code{y} of smoothed responses} \item{lev}{Self influences (diagonal of smoother matrix)} } \author{ Trevor Hastie } \seealso{ \code{\link{smooth.spline}} } \examples{ x=rnorm(100) y=matrix(rnorm(100*10),100,10) fit=mspline(x,y,df=5) } mda/man/predict.fda.Rd0000644000176200001440000000412012201530643014231 0ustar liggesusers\name{predict.fda} \alias{predict.fda} \title{Classify by Flexible Discriminant Analysis} \description{ Classify observations in conjunction with \code{fda}. } \usage{ \method{predict}{fda}(object, newdata, type, prior, dimension, \dots) } \arguments{ \item{object}{an object of class \code{"fda"}.} \item{newdata}{new data at which to make predictions. If missing, the training data is used.} \item{type}{kind of predictions: \code{type = "class"} (default) produces a fitted factor, \code{type = "variates"} produces a matrix of discriminant (canonical) variables, \code{type = "posterior"} produces a matrix of posterior probabilities (based on a gaussian assumption), and \code{type = "hierarchical"} produces the predicted class in sequence for models of all dimensions.} \item{prior}{the prior probability vector for each class; the default is the training sample proportions.} \item{dimension}{the dimension of the space to be used, no larger than the dimension component of \code{object}.} \item{\dots}{further arguments to be passed to or from methods.} } \value{ An appropriate object depending on \code{type}. \code{object} has a component \code{fit} which is regression fit produced by the \code{method} argument to \code{fda}. There should be a \code{predict} method for this object which is invoked. This method should itself take as input \code{object} and optionally \code{newdata}. } \seealso{ \code{\link{fda}}, \code{\link{mars}}, \code{\link{bruto}}, \code{\link{polyreg}}, \code{\link{softmax}}, \code{\link{confusion}} } \examples{ data(iris) irisfit <- fda(Species ~ ., data = iris) irisfit ## Call: ## fda(x = iris$x, g = iris$g) ## ## Dimension: 2 ## ## Percent Between-Group Variance Explained: ## v1 v2 ## 99.12 100 confusion(predict(irisfit, iris), iris$Species) ## Setosa Versicolor Virginica ## Setosa 50 0 0 ## Versicolor 0 48 1 ## Virginica 0 2 49 ## attr(, "error"): ## [1] 0.02 } % Converted by Sd2Rd version 0.3-3. \keyword{classif} mda/man/mars.Rd0000644000176200001440000001041712203550517013022 0ustar liggesusers\name{mars} \alias{mars} \title{Multivariate Adaptive Regression Splines} \description{ Multivariate adaptive regression splines. } \usage{ mars(x, y, w, wp, degree, nk, penalty, thresh, prune, trace.mars, forward.step, prevfit, \dots) } \arguments{ \item{x}{a matrix containing the independent variables.} \item{y}{a vector containing the response variable, or in the case of multiple responses, a matrix whose columns are the response values for each variable.} \item{w}{an optional vector of observation weights (currently ignored).} \item{wp}{an optional vector of response weights.} \item{degree}{an optional integer specifying maximum interaction degree (default is 1).} \item{nk}{an optional integer specifying the maximum number of model terms.} \item{penalty}{an optional value specifying the cost per degree of freedom charge (default is 2).} \item{thresh}{an optional value specifying forward stepwise stopping threshold (default is 0.001).} \item{prune}{an optional logical value specifying whether the model should be pruned in a backward stepwise fashion (default is \code{TRUE}).} \item{trace.mars}{an optional logical value specifying whether info should be printed along the way (default is \code{FALSE}).} \item{forward.step}{an optional logical value specifying whether forward stepwise process should be carried out (default is \code{TRUE}).} \item{prevfit}{optional data structure from previous fit. To see the effect of changing the penalty parameter, one can use prevfit with \code{forward.step = FALSE}.} \item{\dots}{further arguments to be passed to or from methods.} } \value{ An object of class \code{"mars"}, which is a list with the following components: \item{call}{call used to \code{mars}.} \item{all.terms}{term numbers in full model. \code{1} is the constant term. Remaining terms are in pairs (\code{2 3}, \code{4 5}, and so on). \code{all.terms} indicates nonsingular set of terms.} \item{selected.terms}{term numbers in selected model.} \item{penalty}{the input penalty value.} \item{degree}{the input degree value.} \item{thresh}{the input threshold value.} \item{gcv}{gcv of chosen model.} \item{factor}{matrix with \eqn{ij}-th element equal to 1 if term \eqn{i} has a factor of the form \eqn{x_j > c}, equal to \eqn{-1} if term \eqn{i} has a factor of the form \eqn{x_j \le c}, and to 0 if \eqn{xj} is not in term \eqn{i}.} \item{cuts}{matrix with \eqn{ij}-th element equal to the cut point \eqn{c} for variable \eqn{j} in term \eqn{i}.} \item{residuals}{residuals from fit.} \item{fitted}{fitted values from fit.} \item{lenb}{length of full model.} \item{coefficients}{least squares coefficients for final model.} \item{x}{a matrix of basis functions obtained from the input x matrix.} } \note{ This function was coded from scratch, and did not use any of Friedman's mars code. It gives quite similar results to Friedman's program in our tests, but not exactly the same results. We have not implemented Friedman's anova decomposition nor are categorical predictors handled properly yet. Our version does handle multiple response variables, however. } \author{ Trevor Hastie and Robert Tibshirani } \references{ J. Friedman, ``Multivariate Adaptive Regression Splines'' (with discussion) (1991). \emph{Annals of Statistics}, \bold{19}/1, 1--141. } \seealso{ \code{\link{predict.mars}}, \code{\link{model.matrix.mars}}. Package \pkg{earth} also provides multivariate adaptive regression spline models based on the Hastie/Tibshirani mars code in package \pkg{mda}, adding some extra features. It can be used in the \code{method} argument of \code{fda} or \code{mda}. } \examples{ data(trees) fit1 <- mars(trees[,-3], trees[3]) showcuts <- function(obj) { tmp <- obj$cuts[obj$sel, ] dimnames(tmp) <- list(NULL, names(trees)[-3]) tmp } showcuts(fit1) ## examine the fitted functions par(mfrow=c(1,2), pty="s") Xp <- matrix(sapply(trees[1:2], mean), nrow(trees), 2, byrow=TRUE) for(i in 1:2) { xr <- sapply(trees, range) Xp1 <- Xp; Xp1[,i] <- seq(xr[1,i], xr[2,i], len=nrow(trees)) Xf <- predict(fit1, Xp1) plot(Xp1[ ,i], Xf, xlab=names(trees)[i], ylab="", type="l") } } % Converted by Sd2Rd version 0.3-3. \keyword{smooth} mda/man/ESL.mixture.Rd0000644000176200001440000000213013176210042014164 0ustar liggesusers\name{ESL.mixture} \alias{ESL.mixture} \title{Mixture example from "Elements of Statistical Learning"} \description{ A list with training data and other details for the mixture example } \usage{data(ESL.mixture)} \format{ This list contains the following elements: \describe{ \item{x}{a 200x2 matrix of predictors.} \item{y}{a 200 vector of y values taking values 0 or 1.} \item{xnew}{a 6831x2 matrix of prediction points, on a 69x99 grid.} \item{prob}{a vector of 6831 probabilities - the true probabilities of a 1 at each point in \code{xnew}.} \item{marginal}{the marginal distribution of the predictors t each point in \code{xnew}.} \item{px1}{grid values for first coordinate in \code{xnew}.} \item{px2}{grid values for second coordinate in \code{xnew}.} \item{means}{a 20 x 2 matrix of means used in the generation of these data.} } } \source{ "Elements of Statistical Learning (second edition)", Hastie, T., Tibshirani, R. and Friedman, J. (2009), Springer, New York. \url{http://www.stanford.edu/~hastie/ElemStatLearn} } \keyword{datasets} mda/man/predict.bruto.Rd0000644000176200001440000000207410467142622014650 0ustar liggesusers\name{predict.bruto} \alias{predict.bruto} \title{Predict method for BRUTO Objects} \description{ Predicted values based on `bruto' additive spline models which are fit by adaptive backfitting. } \usage{ \method{predict}{bruto}(object, newdata, type=c("fitted", "terms"), \dots) } \arguments{ \item{object}{a fitted bruto object} \item{newdata}{values at which predictions are to be made.} \item{type}{if type is \code{"fitted"}, the fitted values are returned. If type is \code{"terms"}, a list of fitted terms is returned, each with an \code{x} and \code{y} component. These can be used to show the fitted functions.} \item{\dots}{further arguments to be passed to or from methods.} } \value{ Either a fit matrix or a list of fitted terms. } \seealso{ \code{\link{bruto}}, \code{\link{predict}} } \examples{ data(trees) fit1 <- bruto(trees[,-3], trees[3]) fitted.terms <- predict(fit1, as.matrix(trees[,-3]), type = "terms") par(mfrow=c(1,2), pty="s") for(tt in fitted.terms) plot(tt, type="l") } % Converted by Sd2Rd version 0.3-3. \keyword{smooth} mda/man/bruto.Rd0000644000176200001440000000712011305671157013216 0ustar liggesusers\name{bruto} \alias{bruto} \title{ Fit an Additive Spline Model by Adaptive Backfitting } \description{ Fit an additive spline model by adaptive backfitting. } \usage{ bruto(x, y, w, wp, dfmax, cost, maxit.select, maxit.backfit, thresh = 0.0001, trace.bruto = FALSE, start.linear = TRUE, fit.object, \dots) } \arguments{ \item{x}{a matrix of numeric predictors (does not include the column of 1s).} \item{y}{a vector or matrix of responses.} \item{w}{optional observation weight vector.} \item{wp}{optional weight vector for each column of \code{y}; the RSS and GCV criteria use a weighted sum of squared residuals.} \item{dfmax}{a vector of maximum df (degrees of freedom) for each term.} \item{cost}{cost per degree of freedom; default is 2.} \item{maxit.select}{maximum number of iterations during the selection stage.} \item{maxit.backfit}{maximum number of iterations for the final backfit stage (with fixed lambda).} \item{thresh}{convergence threshold (default is 0.0001); iterations cease when the relative change in GCV is below this threshold.} \item{trace.bruto}{logical flag. If \code{TRUE} (default) a progress report is printed during the fitting.} \item{start.linear}{logical flag. If \code{TRUE} (default), the model starts with the linear fit.} \item{fit.object}{This the object returned by \code{bruto()}; if supplied, the same model is fit to the presumably new \code{y}.} \item{\dots}{further arguments to be passed to or from methods.} } \value{ A multiresponse additive model fit object of class \code{"bruto"} is returned. The model is fit by adaptive backfitting using smoothing splines. If there are \code{np} columns in \code{y}, then \code{np} additive models are fit, but the same amount of smoothing (df) is used for each term. The procedure chooses between \code{df = 0} (term omitted), \code{df = 1} (term linear) or \code{df > 0} (term fitted by smoothing spline). The model selection is based on an approximation to the GCV criterion, which is used at each step of the backfitting procedure. Once the selection process stops, the model is backfit using the chosen amount of smoothing. A bruto object has the following components of interest: \item{lambda}{a vector of chosen smoothing parameters, one for each column of \code{x}.} \item{df}{the df chosen for each column of \code{x}.} \item{type}{a factor with levels \code{"excluded"}, \code{"linear"} or \code{"smooth"}, indicating the status of each column of \code{x}.} \item{gcv.select gcv.backfit df.select}{The sequence of gcv values and df selected during the execution of the function.} \item{nit}{the number of iterations used.} \item{fitted.values}{a matrix of fitted values.} \item{residuals}{a matrix of residuals.} \item{call}{the call that produced this object.} } \references{ Trevor Hastie and Rob Tibshirani, \emph{Generalized Additive Models}, Chapman and Hall, 1990 (page 262). Trevor Hastie, Rob Tibshirani and Andreas Buja ``Flexible Discriminant Analysis by Optimal Scoring'' JASA 1994, 89, 1255-1270. } \seealso{ \code{\link{predict.bruto}} } \examples{ data(trees) fit1 <- bruto(trees[,-3], trees[3]) fit1$type fit1$df ## examine the fitted functions par(mfrow=c(1,2), pty="s") Xp <- matrix(sapply(trees[1:2], mean), nrow(trees), 2, byrow=TRUE) for(i in 1:2) { xr <- sapply(trees, range) Xp1 <- Xp; Xp1[,i] <- seq(xr[1,i], xr[2,i], len=nrow(trees)) Xf <- predict(fit1, Xp1) plot(Xp1[ ,i], Xf, xlab=names(trees)[i], ylab="", type="l") } } % Converted by Sd2Rd version 0.3-3. \keyword{smooth} mda/man/mda.Rd0000644000176200001440000002014612203551152012615 0ustar liggesusers\name{mda} \alias{mda} \alias{print.mda} \title{Mixture Discriminant Analysis} \description{ Mixture discriminant analysis. } \usage{ mda(formula, data, subclasses, sub.df, tot.df, dimension, eps, iter, weights, method, keep.fitted, trace, \dots) } \arguments{ \item{formula}{of the form \code{y~x} it describes the response and the predictors. The formula can be more complicated, such as \code{y~log(x)+z} etc (see \code{\link{formula}} for more details). The response should be a factor representing the response variable, or any vector that can be coerced to such (such as a logical variable).} \item{data}{data frame containing the variables in the formula (optional).} \item{subclasses}{Number of subclasses per class, default is 3. Can be a vector with a number for each class.} \item{sub.df}{If subclass centroid shrinking is performed, what is the effective degrees of freedom of the centroids per class. Can be a scalar, in which case the same number is used for each class, else a vector.} \item{tot.df}{The total df for all the centroids can be specified rather than separately per class.} \item{dimension}{The dimension of the reduced model. If we know our final model will be confined to a discriminant subspace (of the subclass centroids), we can specify this in advance and have the EM algorithm operate in this subspace.} \item{eps}{A numerical threshold for automatically truncating the dimension.} \item{iter}{A limit on the total number of iterations, default is 5.} \item{weights}{\emph{NOT} observation weights! This is a special weight structure, which for each class assigns a weight (prior probability) to each of the observations in that class of belonging to one of the subclasses. The default is provided by a call to \code{mda.start(x, g, subclasses, trace, \dots)} (by this time \code{x} and \code{g} are known). See the help for \code{\link{mda.start}}. Arguments for \code{mda.start} can be provided via the \code{\dots} argument to mda, and the \code{weights} argument need never be accessed. A previously fit mda object can be supplied, in which case the final subclass \code{responsibility} weights are used for \code{weights}. This allows the iterations from a previous fit to be continued.} \item{method}{regression method used in optimal scaling. Default is linear regression via the function \code{polyreg}, resulting in the usual mixture model. Other possibilities are \code{mars} and \code{bruto}. For penalized mixture discriminant models \code{gen.ridge} is appropriate.} \item{keep.fitted}{a logical variable, which determines whether the (sometimes large) component \code{"fitted.values"} of the \code{fit} component of the returned \code{mda} object should be kept. The default is \code{TRUE} if \code{n * dimension < 5000}.} \item{trace}{if \code{TRUE}, iteration information is printed. Note that the deviance reported is for the posterior class likelihood, and not the full likelihood, which is used to drive the EM algorithm under \code{mda}. In general the latter is not available.} \item{\dots}{additional arguments to \code{mda.start} and to \code{method}.} } \value{ An object of class \code{c("mda", "fda")}. The most useful extractor is \code{predict}, which can make many types of predictions from this object. It can also be plotted, and any functions useful for fda objects will work here too, such as \code{confusion} and \code{coef}. The object has the following components: \item{percent.explained}{the percent between-group variance explained by each dimension (relative to the total explained.)} \item{values}{optimal scaling regression sum-of-squares for each dimension (see reference).} \item{means}{subclass means in the discriminant space. These are also scaled versions of the final theta's or class scores, and can be used in a subsequent call to \code{mda} (this only makes sense if some columns of theta are omitted---see the references)} \item{theta.mod}{(internal) a class scoring matrix which allows \code{predict} to work properly.} \item{dimension}{dimension of discriminant space.} \item{sub.prior}{subclass membership priors, computed in the fit. No effort is currently spent in trying to keep these above a threshold.} \item{prior}{class proportions for the training data.} \item{fit}{fit object returned by \code{method}.} \item{call}{the call that created this object (allowing it to be \code{update}-able).} \item{confusion}{confusion matrix when classifying the training data.} \item{weights}{These are the subclass membership probabilities for each member of the training set; see the weights argument.} \item{assign.theta}{a pointer list which identifies which elements of certain lists belong to individual classes.} \item{deviance}{The multinomial log-likelihood of the fit. Even though the full log-likelihood drives the iterations, we cannot in general compute it because of the flexibility of the \code{method} used. The deviance can increase with the iterations, but generally does not.} The \code{method} functions are required to take arguments \code{x} and \code{y} where both can be matrices, and should produce a matrix of \code{fitted.values} the same size as \code{y}. They can take additional arguments \code{weights} and should all have a \code{\dots} for safety sake. Any arguments to method() can be passed on via the \code{\dots} argument of \code{mda}. The default method \code{polyreg} has a \code{degree} argument which allows polynomial regression of the required total degree. See the documentation for \code{\link{predict.fda}} for further requirements of \code{method}. The package \code{earth} is suggested for this package as well; \code{earth} is a more detailed implementation of the mars model, and works as a \code{method} argument. The function \code{mda.start} creates the starting weights; it takes additional arguments which can be passed in via the \code{\dots} argument to \code{mda}. See the documentation for \code{mda.start}. } \author{ Trevor Hastie and Robert Tibshirani } \seealso{ \code{\link{predict.mda}}, \code{\link{mars}}, \code{\link{bruto}}, \code{\link{polyreg}}, \code{\link{gen.ridge}}, \code{\link{softmax}}, \code{\link{confusion}} %%\code{\link{coef.fda}}, %%\code{\link{plot.fda}} } \references{ ``Flexible Disriminant Analysis by Optimal Scoring'' by Hastie, Tibshirani and Buja, 1994, JASA, 1255-1270. ``Penalized Discriminant Analysis'' by Hastie, Buja and Tibshirani, 1995, Annals of Statistics, 73-102 ``Discriminant Analysis by Gaussian Mixtures'' by Hastie and Tibshirani, 1996, JRSS-B, 155-176. ``Elements of Statisical Learning - Data Mining, Inference and Prediction'' (2nd edition, Chapter 12) by Hastie, Tibshirani and Friedman, 2009, Springer } \examples{ data(iris) irisfit <- mda(Species ~ ., data = iris) irisfit ## Call: ## mda(formula = Species ~ ., data = iris) ## ## Dimension: 4 ## ## Percent Between-Group Variance Explained: ## v1 v2 v3 v4 ## 96.02 98.55 99.90 100.00 ## ## Degrees of Freedom (per dimension): 5 ## ## Training Misclassification Error: 0.02 ( N = 150 ) ## ## Deviance: 15.102 data(glass) # random sample of size 100 samp <- c(1, 3, 4, 11, 12, 13, 14, 16, 17, 18, 19, 20, 27, 28, 31, 38, 42, 46, 47, 48, 49, 52, 53, 54, 55, 57, 62, 63, 64, 65, 67, 68, 69, 70, 72, 73, 78, 79, 83, 84, 85, 87, 91, 92, 94, 99, 100, 106, 107, 108, 111, 112, 113, 115, 118, 121, 123, 124, 125, 126, 129, 131, 133, 136, 139, 142, 143, 145, 147, 152, 153, 156, 159, 160, 161, 164, 165, 166, 168, 169, 171, 172, 173, 174, 175, 177, 178, 181, 182, 185, 188, 189, 192, 195, 197, 203, 205, 211, 212, 214) glass.train <- glass[samp,] glass.test <- glass[-samp,] glass.mda <- mda(Type ~ ., data = glass.train) predict(glass.mda, glass.test, type="post") # abbreviations are allowed confusion(glass.mda,glass.test) } \keyword{classif} % Converted by Sd2Rd version 0.3-3. mda/man/predict.mars.Rd0000644000176200001440000000121410467142622014452 0ustar liggesusers\name{predict.mars} \alias{predict.mars} \title{Predict method for MARS Objects} \description{ Predicted values based on `mars' multivariate adaptive regression spline models. } \usage{ \method{predict}{mars}(object, newdata, \dots) } \arguments{ \item{object}{an object of class \code{"mars"}.} \item{newdata}{values at which predictions are to be made.} \item{\dots}{further arguments to be passed to or from methods.} } \value{ the fitted values. } \seealso{ \code{\link{mars}}, \code{\link{predict}}, \code{\link{model.matrix.mars}} } %%\examples{ %%## see help for mars() %%} % Converted by Sd2Rd version 0.3-3. \keyword{smooth} mda/man/coef.fda.Rd0000644000176200001440000000233512201530443013517 0ustar liggesusers\name{coef.fda} \alias{coef.fda} \alias{coef.mda} \title{ Produce coefficients for an fda or mda object } \description{ a method for coef for extracting the canonical coefficients from an fda or mda object } \usage{ \method{coef}{fda}(object, \dots) } \arguments{ \item{object}{an \code{fda} or \code{mda} object. } \item{\dots}{ not relevant } } \details{ See the references for details. } \value{ A coefficient matrix} \author{ Trevor Hastie and Robert Tibshirani } \seealso{ \code{\link{predict.fda}}, \code{\link{plot.fda}}, \code{\link{mars}}, \code{\link{bruto}}, \code{\link{polyreg}}, \code{\link{softmax}}, \code{\link{confusion}}, %% \code{\link{coefficients.fda}} } \references{ ``Flexible Disriminant Analysis by Optimal Scoring'' by Hastie, Tibshirani and Buja, 1994, JASA, 1255-1270. ``Penalized Discriminant Analysis'' by Hastie, Buja and Tibshirani, 1995, Annals of Statistics, 73-102. ``Elements of Statisical Learning - Data Mining, Inference and Prediction'' (2nd edition, Chapter 12) by Hastie, Tibshirani and Friedman, 2009, Springer } \examples{ data(iris) irisfit <- fda(Species ~ ., data = iris) coef(irisfit) mfit=mda(Species~.,data=iris,subclass=2) coef(mfit) }\keyword{classif} mda/man/laplacian.Rd0000644000176200001440000000231711306747123014010 0ustar liggesusers\name{laplacian} \Rdversion{1.1} \alias{laplacian} \title{create penalty object for two-dimensional smoothing. } \description{ Creates a penalty matrix for use by \code{gen.ridge} for two-dimensional smoothing. } \usage{ laplacian(size, compose) laplacian(size = 16, compose = FALSE) } \arguments{ \item{size}{dimension of the image is \code{size x size}; default is 16.} \item{compose}{default is \code{compose=FALSE}, which means the penalty is returned as an eigen-decomposition. If \code{compose=TRUE}, a penalty matrix is returned.} } \details{ Formulas are used to construct a laplacian for smoothing a square image. } \value{ If \code{compose=FALSE}, an eigen-decomposition object is returned. The \code{vectors} component is a \code{size^2 x size^2} orthogonal matrix, and the \code{$values} component is a \code{size^2} vector of non-negative eigen-values. If \code{compose=TRUE}, these are multiplied together to form a single matrix. } \references{ Here we follow very closely the material on page 635 in JASA 1991 of O'Sullivan's article on discretized Laplacian Smoothing } \author{ Trevor Hastie