maxLik/0000755000175100001440000000000014600036201011505 5ustar hornikusersmaxLik/NAMESPACE0000644000175100001440000000453714077553264012762 0ustar hornikusersimportFrom("generics", "glance", "tidy") importFrom("methods", "new", "show", "slot", "slot<-", "slotNames", "validObject") importFrom("miscTools", "nObs", "nParam", "sumKeepAttr") importFrom( "miscTools", "stdEr" ) importFrom("sandwich", "bread", "estfun", "sandwich") importFrom("stats", "coef", "logLik", "optim", "pnorm", "printCoefmat", "vcov", "AIC", "qnorm") importFrom("utils", "head", "str", "tail") export( "activePar" ) export( "compareDerivatives" ) export( "condiNumber" ) export( "fnSubset" ) export( "glance" ) export( "gradient" ) export( "hessian" ) export( "maxBFGS" ) export( "maxBFGSR" ) export( "maxBHHH" ) export( "maxCG", "maxSGA", "maxAdam") export( "maximType" ) export( "maxValue" ) export( "maxLik" ) export( "maxNM" ) export( "maxNR" ) export( "maxSANN" ) export( "nIter" ) export( "numericGradient" ) export( "numericHessian" ) export( "numericNHessian" ) export( "objectiveFn" ) export( "returnCode" ) export( "returnMessage" ) export("storedParameters") export("storedValues") export("sumt") export( "tidy" ) exportClasses("MaxControl") exportMethods("maxControl") exportMethods("show") S3method( "activePar", "default" ) S3method( "AIC", "maxLik" ) S3method( "bread", "maxLik" ) S3method( "coef", "maxim" ) S3method( "coef", "maxLik" ) S3method( "coef", "summary.maxLik" ) S3method( "condiNumber", "default" ) S3method("condiNumber", "maxLik" ) S3method("confint", "maxLik" ) S3method("estfun", "maxLik" ) S3method("glance", "maxLik") S3method( "gradient", "maxim" ) S3method( "hessian", "default" ) S3method( "logLik", "maxLik" ) S3method( "logLik", "summary.maxLik" ) S3method( "maximType", "default" ) S3method( "maximType", "maxim" ) S3method( "maxValue", "maxim" ) S3method( "nIter", "default" ) S3method( "nObs", "maxLik" ) S3method( "nParam", "maxim" ) S3method( "print", "maxLik" ) S3method( "print", "summary.maxim" ) S3method( "print", "summary.maxLik" ) S3method( "objectiveFn", "maxim" ) S3method( "returnCode", "default" ) S3method( "returnCode", "maxim" ) S3method( "returnCode", "maxLik" ) S3method( "returnMessage", "default" ) S3method( "returnMessage", "maxim" ) S3method( "returnMessage", "maxLik" ) S3method( "stdEr", "maxLik" ) S3method( "storedParameters", "maxim" ) S3method( "storedValues", "maxim" ) S3method( "summary", "maxim" ) S3method( "summary", "maxLik" ) S3method("tidy", "maxLik") S3method("vcov", "maxLik") maxLik/man/0000755000175100001440000000000014077525067012305 5ustar hornikusersmaxLik/man/sumt.Rd0000644000175100001440000001231314077525067013564 0ustar hornikusers\name{sumt} \Rdversion{1.1} \alias{sumt} \title{ Equality-constrained optimization } \description{ Sequentially Unconstrained Maximization Technique (SUMT) based optimization for linear equality constraints. This implementation is primarily intended to be called from other maximization routines, such as \code{\link{maxNR}}. } \usage{ sumt(fn, grad=NULL, hess=NULL, start, maxRoutine, constraints, SUMTTol = sqrt(.Machine$double.eps), SUMTPenaltyTol = sqrt(.Machine$double.eps), SUMTQ = 10, SUMTRho0 = NULL, printLevel=print.level, print.level = 0, SUMTMaxIter = 100, ...) } \arguments{ \item{fn}{ function of a (single) vector parameter. The function may have more arguments (passed by \dots), but those are not treated as the parameter. } \item{grad}{ gradient function of \code{fn}. NULL if missing } \item{hess}{ function, Hessian of the \code{fn}. NULL if missing } \item{start}{ numeric, initial value of the parameter } \item{maxRoutine}{ maximization algorithm, such as \code{\link{maxNR}} } \item{constraints}{list, information for constrained maximization. Currently two components are supported: \code{eqA} and \code{eqB} for linear equality constraints: \eqn{A \beta + B = 0}{A \%*\% beta + B = 0}. The user must ensure that the matrices \code{A} and \code{B} are conformable.} \item{SUMTTol}{ stopping condition. If the estimates at successive outer iterations are close enough, i.e. maximum of the absolute value over the component difference is smaller than SUMTTol, the algorithm stops. Note this does not necessarily mean that the constraints are satisfied. If the penalty function is too \dQuote{weak}, SUMT may repeatedly find the same optimum. In that case a warning is issued. The user may set SUMTTol to a lower value, e.g. to zero. } \item{SUMTPenaltyTol}{ stopping condition. If the barrier value (also called penalty) \eqn{(A \beta + B)'(A \beta + B)}{t(A \%*\% beta + B) \%*\% (A \%*\% beta + B)} is less than \code{SUMTTol}, the algorithm stops } \item{SUMTQ}{ a double greater than one, controlling the growth of the \code{rho} as described in Details. Defaults to 10. } \item{SUMTRho0}{ Initial value for \code{rho}. If not specified, a (possibly) suitable value is selected. See Details. One should consider supplying \code{SUMTRho0} in case where the unconstrained problem does not have a maximum, or the maximum is too far from the constrained value. Otherwise the authomatically selected value may not lead to convergence. } \item{printLevel}{ Integer, debugging information. Larger number prints more details. } \item{print.level}{same as \sQuote{printLevel}, for backward compatibility} \item{SUMTMaxIter}{ Maximum SUMT iterations } \item{\dots}{ Other arguments to \code{maxRoutine} and \code{fn}. } } \details{ The Sequential Unconstrained Minimization Technique is a heuristic for constrained optimization. To minimize a function \eqn{f}{f} subject to constraints, it uses a non-negative penalty function \eqn{P}{P}, such that \eqn{P(x)}{P(x)} is zero iff \eqn{x}{x} satisfies the constraints. One iteratively minimizes \eqn{f(x) + \varrho_k P(x)}{f(x) + rho_k P(x)}, where the \eqn{\varrho}{rho} values are increased according to the rule \eqn{\varrho_{k+1} = q \varrho_k}{rho_{k+1} = q rho_k} for some constant \eqn{q > 1}{q > 1}, until convergence is achieved in the sense that the barrier value \eqn{P(x)'P(x)}{P(x)'P(x)} is close to zero. Note that there is no guarantee that the global constrained optimum is found. Standard practice recommends to use the best solution found in \dQuote{sufficiently many} replications. Any of the maximization algorithms in the \pkg{maxLik}, such as \code{\link{maxNR}}, can be used for the unconstrained step. Analytic gradient and hessian are used if provided. } \value{ Object of class 'maxim'. In addition, a component \item{constraints}{A list, describing the constrained optimization. Includes the following components: \describe{ \item{type}{type of constrained optimization} \item{barrier.value}{value of the penalty function at maximum} \item{code}{code for the stopping condition} \item{message}{a short message, describing the stopping condition} \item{outer.iterations}{number of iterations in the SUMT step} } } } \section{Note}{ In case of equality constraints, it may be more efficient to enclose the function in a wrapper function. The wrapper calculates full set of parameters based on a smaller set of parameters, and the constraints. } \author{ Ott Toomet, Arne Henningsen } \seealso{ \code{\link[clue]{sumt}} in package \pkg{clue}. } \examples{ ## We maximize exp(-x^2 - y^2) where x+y = 1 hatf <- function(theta) { x <- theta[1] y <- theta[2] exp(-(x^2 + y^2)) ## Note: you may prefer exp(- theta \%*\% theta) instead } ## use constraints: x + y = 1 A <- matrix(c(1, 1), 1, 2) B <- -1 res <- sumt(hatf, start=c(0,0), maxRoutine=maxNR, constraints=list(eqA=A, eqB=B)) print(summary(res)) } \keyword{optimize} maxLik/man/gradient.Rd0000644000175100001440000000373414077525067014400 0ustar hornikusers\name{gradient} \alias{gradient} \alias{gradient.maxim} \alias{estfun} \alias{estfun.maxLik} \title{Extract Gradients Evaluated at each Observation} \description{ Extract the gradients of the log-likelihood function evaluated at each observation (\sQuote{Empirical Estimating Function}, see \code{\link[sandwich]{estfun}}). } \usage{ \method{estfun}{maxLik}(x, ...) \method{gradient}{maxim}(x, ...) } \arguments{ \item{x}{an object inheriting from class \code{maxim} (for \code{gradient}) or \code{maxLik}. (for \code{estfun}.)} \item{\dots}{further arguments (currently ignored).} } \value{ \item{\code{gradient}}{vector, objective function gradient at estimated maximum (or the last calculated value if the estimation did not converge.)} \item{\code{estfun}}{ matrix, observation-wise log-likelihood gradients at the estimated parameter value evaluated at each observation. Observations in rows, parameters in columns.} } \section{Warnings}{ The \pkg{sandwich} package must be loaded in order to use \code{estfun}. \code{estfun} only works if the observaton-specific gradient information was available for the estimation. This is the case of the observation-specific gradient was supplied (see the \code{grad} argument for \code{\link{maxLik}}), or the log-likelihood function returns a vector of observation-specific values. } \author{ Arne Henningsen, Ott Toomet } \seealso{\code{\link{hessian}}, \code{\link[sandwich]{estfun}}, \code{\link{maxLik}}.} \examples{ ## ML estimation of exponential duration model: t <- rexp(10, 2) loglik <- function(theta) log(theta) - theta*t ## Estimate with numeric gradient and hessian a <- maxLik(loglik, start=1 ) gradient(a) # Extract the gradients evaluated at each observation library( sandwich ) estfun( a ) ## Estimate with analytic gradient. ## Note: it returns a vector gradlik <- function(theta) 1/theta - t b <- maxLik(loglik, gradlik, start=1) gradient(a) estfun( b ) } \keyword{methods} maxLik/man/maxLik.Rd0000644000175100001440000001320014077525067014015 0ustar hornikusers\name{maxLik} \alias{maxLik} \alias{print.maxLik} \title{Maximum likelihood estimation} \description{ This is the main interface for the \pkg{maxLik} package, and the function that performs Maximum Likelihood estimation. It is a wrapper for different optimizers returning an object of class "maxLik". Corresponding methods handle the likelihood-specific properties of the estimates, including standard errors. } \usage{ maxLik(logLik, grad = NULL, hess = NULL, start, method, constraints=NULL, ...) } \arguments{ \item{logLik}{log-likelihood function. Must have the parameter vector as the first argument. Must return either a single log-likelihood value, or a numeric vector where each component is log-likelihood of the corresponding individual observation.} \item{grad}{gradient of log-likelihood. Must have the parameter vector as the first argument. Must return either a single gradient vector with length equal to the number of parameters, or a matrix where each row is the gradient vector of the corresponding individual observation. If \code{NULL}, numeric gradient will be used.} \item{hess}{hessian of log-likelihood. Must have the parameter vector as the first argument. Must return a square matrix. If \code{NULL}, numeric Hessian will be used.} \item{start}{numeric vector, initial value of parameters. If it has names, these will also be used for naming the results.} \item{method}{maximisation method, currently either "NR" (for Newton-Raphson), "BFGS" (for Broyden-Fletcher-Goldfarb-Shanno), "BFGSR" (for the BFGS algorithm implemented in \R), "BHHH" (for Berndt-Hall-Hall-Hausman), "SANN" (for Simulated ANNealing), "CG" (for Conjugate Gradients), or "NM" (for Nelder-Mead). Lower-case letters (such as "nr" for Newton-Raphson) are allowed. The default method is "NR" for unconstrained problems, and "NM" or "BFGS" for constrained problems, depending on if the \code{grad} argument was provided. "BHHH" is a good alternative given the likelihood is returned observation-wise (see \code{\link{maxBHHH}}). Note that stochastic gradient ascent (SGA) is currently not supported as this method seems to be rarely used for maximum likelihood estimation. } \item{constraints}{either \code{NULL} for unconstrained maximization or a list, specifying the constraints. See \code{\link{maxBFGS}}. } \item{\dots}{further arguments, such as \code{control}, \code{iterlim}, or \code{tol}, are passed to the selected maximisation routine, i.e. \code{\link{maxNR}}, \code{\link{maxBFGS}}, \code{\link{maxBFGSR}}, \code{\link{maxBHHH}}, \code{\link{maxSANN}}, \code{\link{maxCG}}, or \code{\link{maxNM}} (depending on argument \code{method}). Arguments not used by the optimizers are forwarded to \code{logLik}, \code{grad} and \code{hess}. } } \details{ \code{maxLik} supports constrained optimization in the sense that constraints are passed further to the underlying optimization routines, and suitable default method is selected. However, no attempt is made to correct the resulting variance-covariance matrix. Hence the inference may be wrong. A corresponding warning is issued by the summary method. } \value{ object of class 'maxLik' which inherits from class 'maxim'. Useful methods include \itemize{ \item \code{\link[=AIC.maxLik]{AIC}}: estimated parameter value \item \code{\link[=coef.maxLik]{coef}}: estimated parameter value \item \code{\link[=logLik.maxLik]{logLik}}: log-likelihood value \item \code{\link{nIter}}: number of iterations \item \code{\link[=stdEr.maxLik]{stdEr}}: standard errors \item \code{\link[=summary.maxLik]{summary}}: print summary table with estimates, standard errors, p, and z-values. \item \code{\link[=vcov.maxLik]{vcov}}: variance-covariance matrix } } \section{Warning}{The constrained maximum likelihood estimation should be considered experimental. In particular, the variance-covariance matrix is not corrected for constrained parameter space. } \author{Ott Toomet, Arne Henningsen} \seealso{\code{\link{maxNR}}, \code{\link{nlm}} and \code{\link{optim}} for different non-linear optimisation routines, see \code{\link{maxBFGS}} for the constrained maximization examples.} \examples{ ## Estimate the parameter of exponential distribution t <- rexp(100, 2) loglik <- function(theta) log(theta) - theta*t gradlik <- function(theta) 1/theta - t hesslik <- function(theta) -100/theta^2 ## Estimate with numeric gradient and hessian a <- maxLik(loglik, start=1, control=list(printLevel=2)) summary( a ) ## ## Estimate with analytic gradient and hessian. ## require much smaller tolerance ## setting 'tol=0' or negative essentially disables this stopping criterion a <- maxLik(loglik, gradlik, hesslik, start=1, control=list(tol=-1, reltol=1e-12, gradtol=1e-12)) summary( a ) ## ## Next, we give an example with vector argument: ## fit normal distribution by estimating mean and standard deviation ## by maximum likelihood ## loglik <- function(param) { # param: vector of 2, c(mean, standard deviation) mu <- param[1] sigma <- param[2] ll <- -0.5*N*log(2*pi) - N*log(sigma) - sum(0.5*(x - mu)^2/sigma^2) # can use dnorm(x, mu, sigma, log=TRUE) instead ll } x <- rnorm(100, 1, 2) # use mean=1, stdd=2 N <- length(x) res <- maxLik(loglik, start=c(0,1)) # use 'wrong' start values summary(res) ## ## Same example, but now with named parameters and a fixed value ## resFix <- maxLik(loglik, start=c(mu=0, sigma=1), fixed="sigma") summary(resFix) # 'sigma' is exactly 1.000 now. } \keyword{optimize} maxLik/man/objectiveFn.Rd0000644000175100001440000000145414077525067015036 0ustar hornikusers\name{objectiveFn} \alias{objectiveFn} \alias{objectiveFn.maxim} \title{Optimization Objective Function} \description{ This function returns the optimization objective function from a \sQuote{maxim} object. } \usage{ objectiveFn(x, \dots) \method{objectiveFn}{maxim}(x, \dots) } \arguments{ \item{x}{an optimization result, inheriting from class \sQuote{maxim}} \item{\dots}{other arguments for methods} } \value{ function, the function that was optimized. It can be directly called, given that all necessary variables are accessible from the current environment. } \author{Ott Toomet} \examples{ hatf <- function(theta) exp(- theta \%*\% theta) res <- maxNR(hatf, start=c(0,0)) print(summary(res)) print(objectiveFn(res)) print(objectiveFn(res)(2)) # 0.01832 } \keyword{methods} \keyword{optimize} maxLik/man/maximType.Rd0000644000175100001440000000144214077525067014552 0ustar hornikusers\name{maximType} \alias{maximType} \alias{maximType.default} \alias{maximType.maxim} \alias{maximType.MLEstimate} \title{Type of Minimization/Maximization} \description{ Returns the type of optimization as supplied by the optimisation routine. } \usage{ maximType(x) } \arguments{ \item{x}{object of class 'maxim' or another object which involves numerical optimisation. } } \value{ A text message, describing the involved optimisation algorithm } \author{Ott Toomet} \seealso{\code{\link{maxNR}}} \examples{ ## maximize two-dimensional exponential hat. True maximum c(2,1): f <- function(a) exp(-(a[1] - 2)^2 - (a[2] - 1)^2) m <- maxNR(f, start=c(0,0)) coef(m) maximType(m) ## Now use BFGS maximisation. m <- maxBFGS(f, start=c(0,0)) maximType(m) } \keyword{optimize} \keyword{methods} maxLik/man/numericGradient.Rd0000644000175100001440000000541514077525067015721 0ustar hornikusers\name{numericGradient} \alias{numericGradient} \alias{numericHessian} \alias{numericNHessian} \title{Functions to Calculate Numeric Derivatives} \description{ Calculate (central) numeric gradient and Hessian, including of vector-valued functions. } \usage{ numericGradient(f, t0, eps=1e-06, fixed, \dots) numericHessian(f, grad=NULL, t0, eps=1e-06, fixed, \dots) numericNHessian(f, t0, eps=1e-6, fixed, \dots) } \arguments{ \item{f}{function to be differentiated. The first argument must be the parameter vector with respect to which it is differentiated. For numeric gradient, \code{f} may return a (numeric) vector, for Hessian it should return a numeric scalar} \item{grad}{function, gradient of \code{f}} \item{t0}{vector, the parameter values} \item{eps}{numeric, the step for numeric differentiation} \item{fixed}{logical index vector, fixed parameters. Derivative is calculated only with respect to the parameters for which \code{fixed == FALSE}, \code{NA} is returned for the fixed parameters. If missing, all parameters are treated as active.} \item{\dots}{furter arguments for \code{f}} } \details{ \code{numericGradient} numerically differentiates a (vector valued) function with respect to it's (vector valued) argument. If the functions value is a \eqn{N_{val} \times 1}{\code{N_val * 1}} vector and the argument is \eqn{N_{par} \times 1}{\code{N_par * 1}} vector, the resulting gradient is a \eqn{N_{val} \times N_{par}}{\code{NVal * NPar}} matrix. \code{numericHessian} checks whether a gradient function is present. If yes, it calculates the gradient of the gradient, if not, it calculates the full numeric Hessian (\code{numericNHessian}). } \value{ Matrix. For \code{numericGradient}, the number of rows is equal to the length of the function value vector, and the number of columns is equal to the length of the parameter vector. For the \code{numericHessian}, both numer of rows and columns is equal to the length of the parameter vector. } \section{Warning}{ Be careful when using numerical differentiation in optimization routines. Although quite precise in simple cases, they may work very poorly in more complicated conditions. } \author{Ott Toomet} \seealso{\code{\link{compareDerivatives}}, \code{\link{deriv}}} \examples{ # A simple example with Gaussian bell surface f0 <- function(t0) exp(-t0[1]^2 - t0[2]^2) numericGradient(f0, c(1,2)) numericHessian(f0, t0=c(1,2)) # An example with the analytic gradient gradf0 <- function(t0) -2*t0*f0(t0) numericHessian(f0, gradf0, t0=c(1,2)) # The results should be similar as in the previous case # The central numeric derivatives are often quite precise compareDerivatives(f0, gradf0, t0=1:2) # The difference is around 1e-10 } \keyword{math} \keyword{utilities} maxLik/man/storedValues.Rd0000644000175100001440000000323514077525067015257 0ustar hornikusers\name{storedValues} \alias{storedValues} \alias{storedValues.maxim} \alias{storedParameters} \alias{storedParameters.maxim} \title{Return the stored values of optimization} \description{ Retrieve the objective function value for each iteration if stored during the optimization. } \usage{ storedValues(x, \dots) \method{storedValues}{maxim}(x, \dots) storedParameters(x, \dots) \method{storedParameters}{maxim}(x, \dots) } \arguments{ \item{x}{a result of maximization, created by \code{\link{maxLik}}, \code{\link{maxSGA}} or another optimizer.} \item{\dots}{further arguments for other methods} } \details{ These is a generic method. If asked by control parameter \code{storeValues=TRUE} or \code{storeParameters=TRUE}, certain optimization methods store the objective function value and the parameter value at each epoch. These methods retrieves the stored values. } \value{ \itemize{ \item \code{storedValues}: a numeric vector, one value for each iteration \item \code{storedParameters}: a numeric matrix with rows corresponding to the iterations and columns to the parameter components. } In both cases, the first value stored corresponds to the initial parameter. } \author{Ott Toomet} \seealso{\code{\link{maxSGA}}, \code{\link{maxControl}} } \examples{ ## Estimate the exponential distribution parameter t <- rexp(100, 2) loglik <- function(theta, index) sum(log(theta) - theta*t[index]) ## Estimate with numeric gradient and numeric Hessian a <- maxSGA(loglik, start=1, control=list(storeValues=TRUE, storeParameters=TRUE, iterlim=10), nObs=100) storedValues(a) storedParameters(a) } \keyword{methods} maxLik/man/logLik.maxLik.Rd0000644000175100001440000000221214077525067015236 0ustar hornikusers\name{logLik.maxLik} \alias{logLik.maxLik} \alias{logLik.summary.maxLik} \title{Return the log likelihood value} \description{ Return the log likelihood value of objects of class \code{maxLik} and \code{summary.maxLik}. } \usage{ \method{logLik}{maxLik}( object, \dots ) \method{logLik}{summary.maxLik}( object, \dots ) } \arguments{ \item{object}{object of class \code{maxLik} or \code{summary.maxLik}, usually a model estimated with Maximum Likelihood} \item{...}{additional arguments to methods} } \value{ A scalar numeric, log likelihood of the estimated model. It has attribute \dQuote{df}, number of free parameters. } \author{ Arne Henningsen, Ott Toomet } \seealso{\code{\link{maxLik}}} \examples{ ## ML estimation of exponential duration model: t <- rexp(100, 2) loglik <- function(theta) log(theta) - theta*t gradlik <- function(theta) 1/theta - t hesslik <- function(theta) -100/theta^2 ## Estimate with analytic gradient and hessian a <- maxLik(loglik, gradlik, hesslik, start=1) ## print log likelihood value logLik( a ) ## print log likelihood value of summary object b <- summary( a ) logLik( b ) } \keyword{methods} maxLik/man/maxControl.Rd0000644000175100001440000002452614600003077014713 0ustar hornikusers\name{MaxControl-class} \Rdversion{1.1} \docType{class} \alias{MaxControl-class} \alias{maxControl} \alias{maxControl,MaxControl-method} \alias{maxControl,missing-method} \alias{maxControl,maxim-method} \alias{show,MaxControl-method} \title{Class \code{"MaxControl"}} \description{ This is the structure that holds the optimization control options. The corresponding constructors take the parameters, perform consistency checks, and return the control structure. Alternatively, it overwrites the supplied parameters in an existing \code{MaxControl} structure. There is also a method to extract the control structure from the estimated \sQuote{maxim}-objects. } \section{Slots}{ The default values and definition of the slots: \describe{ \item{tol}{1e-8, stopping condition for \code{\link{maxNR}} and related optimizers. Stop if the absolute difference between successive iterations is less than \code{tol}, returns code 2.} \item{reltol}{sqrt(.Machine$double.eps), relative convergence tolerance (used by \code{\link{maxNR}} related optimizers, and \code{\link{optim}}-based optimizers. The algorithm stops if it iteration increases the value by less than a factor of \code{reltol*(abs(val) + reltol)}. Returns code 2.} \item{gradtol}{1e-6, stopping condition for \code{\link{maxNR}} and related optimizers. Stops if norm of the gradient is less than \code{gradtol}, returns code 1.} \item{steptol}{1e-10, stopping/error condition for \code{\link{maxNR}} and related optimizers. If \code{qac == "stephalving"} and the quadratic approximation leads to a worse, instead of a better value, or to \code{NA}, the step length is halved and a new attempt is made. If necessary, this procedure is repeated until \code{step < steptol}, thereafter code 3 is returned.} % \item{lambdatol}{1e-6, (for \code{\link{maxNR}} related optimizers) controls whether Hessian is treated as negative definite. If the largest of the eigenvalues of the Hessian is larger than \code{-lambdatol} (Hessian is not negative definite), a suitable diagonal matrix is subtracted from the Hessian (quadratic hill-climbing) in order to enforce negative definiteness.} % \item{qac}{"stephalving", character, Qadratic Approximation Correction for \code{\link{maxNR}} related optimizers. When the new guess is worse than the initial one, program attempts to correct it: \code{"stephalving"} decreases the step but keeps the direction. \code{"marquardt"} uses \cite{Marquardt (1963)} method by decreasing the step length while also moving closer to the pure gradient direction. It may be faster and more robust choice in areas where quadratic approximation behaves poorly.} \item{qrtol}{1e-10, QR-decomposition tolerance for Hessian inversion in \code{\link{maxNR}} related optimizers. } \item{marquardt_lambda0}{0.01, a positive numeric, initial correction term for \cite{Marquardt (1963)} correction in \code{\link{maxNR}}-related optimizers} \item{marquardt_lambdaStep}{2, how much the \cite{Marquardt (1963)} correction is decreased/increased at successful/unsuccesful step for \code{\link{maxNR}} related optimizers} \item{marquardt_maxLambda}{1e12, maximum allowed correction term for \code{\link{maxNR}} related optimizers. If exceeded, the algorithm exits with return code 3.} % \item{nm_alpha}{1, Nelder-Mead simplex method reflection factor (see Nelder & Mead, 1965)} \item{nm_beta}{0.5, Nelder-Mead contraction factor} \item{nm_gamma}{2, Nelder-Mead expansion factor} % SANN \item{sann_cand}{\code{NULL} or a function for \code{"SANN"} algorithm to generate a new candidate point; if \code{NULL}, Gaussian Markov kernel is used (see argument \code{gr} of \code{\link{optim}}).} \item{sann_temp}{10, starting temperature for the \dQuote{SANN} cooling schedule. See \code{\link{optim}}.} \item{sann_tmax}{10, number of function evaluations at each temperature for the \dQuote{SANN} optimizer. See \code{\link{optim}}.} \item{sann_randomSeed}{123, integer to seed random numbers to ensure replicability of \dQuote{SANN} optimization and preserve \code{R} random numbers. Use options like \code{SANN_randomSeed=Sys.time()} or \code{SANN_randomeSeed=sample(1000,1)} if you want stochastic results. } % SG general General options for stochastic gradient methods: \item{SG_learningRate}{0.1, learning rate, numeric} \item{SG_batchSize}{\code{NULL}, batch size for Stochastic Gradient Ascent. A positive integer, or \code{NULL} for full-batch gradent ascent.} \item{SG_clip}{\code{NULL}, gradient clipping threshold. This is the max allowed squared Euclidean norm of the gradient. If the actual norm of the gradient exceeds (square root of) this threshold, the gradient will be scaled back accordingly while preserving its direction. \code{NULL} means no clipping. } \item{SG_patience}{\code{NULL}, or integer. Stopping condition: if the objective function is worse than its largest value so far this many times, the algorithm stops, and returns not the last parameter value but the one that gave the best results so far. This is mostly useful if gradient is computed on training data and the objective function on validation data. } \item{SG_patienceStep}{1L, integer. After how many epochs to check the patience value. 1 means to check (and hence to compute the objective function) at each epoch. } % Stochastic Gradient Ascent Options for SGA: \item{SGA_momentum}{0, numeric momentum parameter for SGA. Must lie in interval \eqn{[0,1]}{[0,1]}. } % Adam Options for Adam: \item{Adam_momentum1}{0.9, numeric in \eqn{[0,1]}{[0,1]}, the first moment momentum} \item{Adam_momentum2}{0.999, numeric in \eqn{[0,1]}{[0,1]}, the second moment momentum} % general General options: \item{iterlim}{150, stopping condition (the default differs for different methods). Stop if more than \code{iterlim} iterations performed. Note that \sQuote{iteration} may mean different things for different optimizers.} \item{max.rows}{20, maximum number of matrix rows to be printed when requesting verbosity in the optimizers. } \item{max.cols}{7, maximum number of columns to be printed. This also applies to vectors that are printed horizontally. } \item{printLevel}{0, the level of verbosity. Larger values print more information. Result depends on the optimizer. Form \code{print.level} is also accepted by the methods for compatibility.} \item{storeParameters}{\code{FALSE}, whether to store and return the parameter values at each epoch. If \code{TRUE}, the stored values can be retrieved with \code{\link{storedParameters}}-method. The parameters are stored as a matrix with rows corresponding to the epochs and columns to the parameter components. } \item{storeValues}{\code{FALSE}, whether to store and return the objective function values at each epoch. If \code{TRUE}, the stored values can be retrieved with \code{\link{storedValues}}-method.} } } \section{Methods}{ \describe{ \item{maxControl}{\code{(\dots)} creates a \dQuote{MaxControl} object. The arguments must be in the form \code{option1 = value1, option2 = value2, ...}. The options should be slot names, but the method also supports selected other parameter forms for compatibility reasons e.g. \dQuote{print.level} instead of \dQuote{printLevel}. In case there are more than one option with similar name, the last one overwrites the previous values. This allows the user to override default parameters in the control list. See example in \link{maxLik-package}. } \item{maxControl}{\code{(x = "MaxControl", \dots)} overwrites parameters of an existing \dQuote{MaxControl} object. The \sQuote{\dots} argument must be in the form \code{option1 = value1, option2 = value2, ...}. In case there are more than one option with similar name, only the last one is taken into account. This allows the user to override default parameters in the control list. See example in \link{maxLik-package}. } \item{maxControl}{\code{(x = "maxim")} extracts \dQuote{MaxControl} structure from an estimated model} \item{show}{shows the parameter values} } } \section{Details}{ Typically, the control options are supplied in the form of a list, in which case the corresponding default values are overwritten by the user-specified ones. However, one may also create the control structure by \code{maxControl(opt1=value1, opt2=value2, ...)} and supply such value directly to the optimizer. In this case the optimization routine takes all the values from the control object. } \references{ \itemize{ \item Nelder, J. A. & Mead, R. A (1965) Simplex Method for Function Minimization \emph{The Computer Journal} \bold{7}, 308--313 \item Marquardt, D. W. (1963) An Algorithm for Least-Squares Estimation of Nonlinear Parameters \emph{Journal of the Society for Industrial and Applied Mathematics} \bold{11}, 431--441 } } \author{ Ott Toomet } \note{ Several control parameters can also be supplied directly to the optimization routines. } \examples{ library(maxLik) ## Create a 'maxControl' object: maxControl(tol=1e-4, sann_tmax=7, printLevel=2) ## Optimize quadratic form t(D) %*% W %*% D with p.d. weight matrix, ## s.t. constraints sum(D) = 1 quadForm <- function(D) { return(-t(D) \%*\% W \%*\% D) } eps <- 0.1 W <- diag(3) + matrix(runif(9), 3, 3)*eps D <- rep(1/3, 3) # initial values ## create control object and use it for optimization co <- maxControl(printLevel=2, qac="marquardt", marquardt_lambda0=1) res <- maxNR(quadForm, start=D, control=co) print(summary(res)) ## Now perform the same with no trace information co <- maxControl(co, printLevel=0) res <- maxNR(quadForm, start=D, control=co) # no tracing information print(summary(res)) # should be the same as above maxControl(res) # shows the control structure } \keyword{utilities} maxLik/man/confint.maxLik.Rd0000644000175100001440000000261314077525067015462 0ustar hornikusers\name{confint.maxLik} \alias{confint.maxLik} \alias{confint} \title{confint method for maxLik objects} \description{ Wald confidence intervals for Maximum Likelihood Estimates } \usage{ \method{confint}{maxLik}(object, parm, level=0.95, ...) } \arguments{ \item{object}{ object of class \dQuote{maxLik} returned by \code{\link{maxLik}} function } \item{parm}{the name of parameters to compute the confidence intervals. If omitted, confidence intervals for all parameters are computed.} \item{level}{the level of confidence interval } \item{\dots}{additional arguments to be passed to the other methods } } \value{ A matrix of lower and upper confidence interval limits (in the first and second column respectively). The matrix rows are labeled by the parameter names (if any) and columns by the corresponding distribution quantiles. } \seealso{ \code{\link[stats]{confint}} for the generic \code{confint} function, \code{\link[=stdEr.maxLik]{stdEr}} for computing standard errors and \code{\link[=summary.maxLik]{summary}} for summary output that includes statistical significance information. } \author{Luca Scrucca} \examples{ ## compute MLE parameters of normal random sample x <- rnorm(100) loglik <- function(theta) { dnorm(x, mean=theta[1], sd=theta[2], log=TRUE) } m <- maxLik(loglik, start=c(mu=0, sd=1)) summary(m) confint(m) confint(m, "mu", level=0.1) } maxLik/man/maxLik-package.Rd0000644000175100001440000000727514077525067015425 0ustar hornikusers\name{maxLik-package} \alias{maxLik-package} \docType{package} \title{ Maximum Likelihood Estimation } \description{ This package contains a set of functions and tools for Maximum Likelihood (ML) estimation. The focus of the package is on non-linear optimization from the ML viewpoint, and it provides several convenience wrappers and tools, like BHHH algorithm, variance-covariance matrix and standard errors. } \details{ \pkg{maxLik} package is a set of convenience tools and wrappers focusing on Maximum Likelihood (ML) analysis, but it also contains tools for other optimization tasks. The package includes a) wrappers for several existing optimizers (implemented by \code{\link[stats:optim]{optim}}); b) original optimizers, including Newton-Raphson and Stochastic Gradient Ascent; and c) several convenience tools to use these optimizers from the ML perspective. Examples are BHHH optimization (\code{\link{maxBHHH}}) and utilities that extract standard errors from the estimates. Other highlights include a unified interface for all included optimizers, tools to test user-provided analytic derivatives, and constrained optimization. A good starting point to learn about the usage of \pkg{maxLik} are the included vignettes \dQuote{Introduction: what is maximum likelihood}, \dQuote{Maximum likelihood estimation with maxLik} and \dQuote{Stochastic Gradient Ascent in maxLik}. Another good source is Henningsen & Toomet (2011), an introductory paper to the package. Use \code{vignette(package="maxLik")} to see the available vignettes, and \code{vignette("using-maxlik")} to read the usage vignette. From the user's perspective, the central function in the package is \code{\link{maxLik}}. In its simplest form it takes two arguments: the log-likelihood function, and a vector of initial parameter values (see the example below). It returns an object of class \sQuote{maxLik} with convenient methods such as \code{\link[=summary.maxLik]{summary}}, \code{\link[=coef.maxLik]{coef}}, and \code{\link[=stdEr.maxLik]{stdEr}}. It also supports a plethora of other arguments, for instance one can supply analytic gradient and Hessian, select the desired optimizer, and control the optimization in different ways. A useful utility functions in the package is \code{\link{compareDerivatives}} that allows one to compare the analytic and numeric derivatives for debugging purposes. Another useful function is \code{\link{condiNumber}} for analyzing multicollinearity problems in the estimated models. In the interest of providing a unified user interface, all the optimizers are implemented as maximizers in this package. This includes the \code{\link{optim}}-based methods, such as \code{\link{maxBFGS}} and \code{\link{maxSGA}}, the maximizer version of popular Stochastic Gradient Descent. } \author{ Ott Toomet , Arne Henningsen , with contributions from Spencer Graves, Yves Croissant and David Hugh-Jones. Maintainer: Ott Toomet } \references{ Henningsen A, Toomet O (2011). \dQuote{maxLik: A package for maximum likelihood estimation in R.} Computational Statistics, 26(3), 443-458. doi: \doi{10.1007/s00180-010-0217-1}. } \keyword{Basics|package} \keyword{Mathematics|optimize} \examples{ ### estimate mean and variance of normal random vector ## create random numbers where mu=1, sd=2 set.seed(123) x <- rnorm(50, 1, 2 ) ## log likelihood function. ## Note: 'param' is a 2-vector c(mu, sd) llf <- function(param) { mu <- param[1] sd <- param[2] llValue <- dnorm(x, mean=mu, sd=sd, log=TRUE) sum(llValue) } ## Estimate it with mu=0, sd=1 as start values ml <- maxLik(llf, start = c(mu=0, sigma=1) ) print(summary(ml)) ## Estimates close to c(1,2) :-) } maxLik/man/maxLik-internal.Rd0000644000175100001440000000101314077525067015626 0ustar hornikusers\name{maxLik-internal} \alias{checkFuncArgs} \alias{constrOptim2} \alias{maximMessage} \alias{maxNRCompute} \alias{observationGradient} \alias{print.summary.maxLik} \alias{returnCode.maxim} % Document the following: %%%% \title{ Internal maxLik Functions } \description{ Internal maxLik Functions } \details{ These are either various methods, or functions, not intended to be called directly by the user (or in some cases are just waiting for proper documentation to be written :). } \keyword{ internal } maxLik/man/maxNR.Rd0000644000175100001440000004167114600005731013611 0ustar hornikusers\name{maxNR} \alias{maxNR} \alias{maxBFGSR} \alias{maxBHHH} \title{Newton- and Quasi-Newton Maximization} \description{ Unconstrained and equality-constrained maximization based on the quadratic approximation (Newton) method. The Newton-Raphson, BFGS (Broyden 1970, Fletcher 1970, Goldfarb 1970, Shanno 1970), and BHHH (Berndt, Hall, Hall, Hausman 1974) methods are available. } \usage{ maxNR(fn, grad = NULL, hess = NULL, start, constraints = NULL, finalHessian = TRUE, bhhhHessian=FALSE, fixed = NULL, activePar = NULL, control=NULL, ... ) maxBFGSR(fn, grad = NULL, hess = NULL, start, constraints = NULL, finalHessian = TRUE, fixed = NULL, activePar = NULL, control=NULL, ... ) maxBHHH(fn, grad = NULL, hess = NULL, start, finalHessian = "BHHH", ... ) } \arguments{ \item{fn}{the function to be maximized. It must have the parameter vector as the first argument and it must return either a single number, or a numeric vector (this is is summed internally). If the BHHH method is used and argument \code{gradient} is not given, \code{fn} must return a numeric vector of observation-specific log-likelihood values. If the parameters are out of range, \code{fn} should return \code{NA}. See details for constant parameters. \code{fn} may also return attributes "gradient" and/or "hessian". If these attributes are set, the algorithm uses the corresponding values as gradient and Hessian. } \item{grad}{gradient of the objective function. It must have the parameter vector as the first argument and it must return either a gradient vector of the objective function, or a matrix, where \emph{columns} correspond to individual parameters. The column sums are treated as gradient components. If \code{NULL}, finite-difference gradients are computed. If BHHH method is used, \code{grad} must return a matrix, where rows corresponds to the gradient vectors for individual observations and the columns to the individual parameters. If \code{fn} returns an object with attribute \code{gradient}, this argument is ignored. } \item{hess}{Hessian matrix of the function. It must have the parameter vector as the first argument and it must return the Hessian matrix of the objective function. If missing, finite-difference Hessian, based on \code{gradient}, is computed. Hessian is used by the Newton-Raphson method only, and eventually by the other methods if \code{finalHessian} is requested.} \item{start}{initial parameter values. If start values are named, those names are also carried over to the results.} \item{constraints}{either \code{NULL} for unconstrained optimization or a list with two components. The components may be either \code{eqA} and \code{eqB} for equality-constrained optimization \eqn{A \theta + B = 0}{A \%*\% theta + B = 0}; or \code{ineqA} and \code{ineqB} for inequality constraints \eqn{A \theta + B > 0}{A \%*\% theta + B > 0}. More than one row in \code{ineqA} and \code{ineqB} corresponds to more than one linear constraint, in that case all these must be zero (equality) or positive (inequality constraints). The equality-constrained problem is forwarded to \code{\link{sumt}}, the inequality-constrained case to \code{\link{constrOptim2}}. } \item{finalHessian}{how (and if) to calculate the final Hessian. Either \code{FALSE} (do not calculate), \code{TRUE} (use analytic/finite-difference Hessian) or \code{"bhhh"}/\code{"BHHH"} for the information equality approach. The latter approach is only suitable for maximizing log-likelihood functions. It requires the gradient/log-likelihood to be supplied by individual observations. Note that computing the (actual, not BHHH) final Hessian does not carry any extra penalty for the NR method, but does for the other methods.} \item{bhhhHessian}{logical. Indicating whether to use the information equality approximation (Bernd, Hall, Hall, and Hausman, 1974) for the Hessian. This effectively transforms \code{maxNR} into \code{maxBHHH} and is mainly designed for internal use.} \item{fixed}{parameters to be treated as constants at their \code{start} values. If present, it is treated as an index vector of \code{start} parameters.} \item{activePar}{this argument is retained for backward compatibility only; please use argument \code{fixed} instead.} \item{control}{list of control parameters. The control parameters used by these optimizers are \describe{ \item{tol}{\eqn{10^{-8}}{1e-8}, stopping condition. Stop if the absolute difference between successive iterations is less than \code{tol}. Return \code{code=2}. If set to a negative value, the criterion is never fulfilled, and hence disabled. } \item{reltol}{sqrt(.Machine$double.eps), stopping condition. Relative convergence tolerance: the algorithm stops if the relative improvement between iterations is less than \sQuote{reltol}. Return code 8. Negative value disables condition. } \item{gradtol}{stopping condition. Stop if norm of the gradient is less than \code{gradtol}. Return code 1. Negative value disables condition.} \item{steptol}{1e-10, stopping/error condition. If \code{qac == "stephalving"} and the quadratic approximation leads to a worse, instead of a better value, or to \code{NA}, the step length is halved and a new attempt is made. If necessary, this procedure is repeated until step < \code{steptol}, thereafter code 3 is returned.} \item{lambdatol}{\eqn{10^{-6}}{1e-6}, controls whether Hessian is treated as negative definite. If the largest of the eigenvalues of the Hessian is larger than \code{-lambdatol} (Hessian is not negative definite), a suitable diagonal matrix is subtracted from the Hessian (quadratic hill-climbing) in order to enforce negative definiteness. } \item{qrtol}{\eqn{10^{-10}}{1e-10}, QR-decomposition tolerance for the Hessian inversion. } \item{qac}{"stephalving", Quadratic Approximation Correction. When the new guess is worse than the initial one, the algorithm attemts to correct it: "stephalving" decreases the step but keeps the direction, "marquardt" uses \cite{Marquardt (1963)} method by decreasing the step length while also moving closer to the pure gradient direction. It may be faster and more robust choice in areas where quadratic approximation behaves poorly. \code{maxNR} and \code{maxBHHH} only. } \item{marquardt_lambda0}{\eqn{10^{-2}}{1e-2}, positive numeric, initial correction term for \cite{Marquardt (1963)} correction. } \item{marquardt_lambdaStep}{2, how much the \cite{Marquardt (1963)} correction term is decreased/increased at each successful/unsuccesful step. \code{maxNR} and \code{maxBHHH} only. } \item{marquardt_maxLambda}{\eqn{10^{12}}{1e12}, maximum allowed \cite{Marquardt (1963)} correction term. If exceeded, the algorithm exits with return code 3. \code{maxNR} and \code{maxBHHH} only. } \item{iterlim}{stopping condition. Stop if more than \code{iterlim} iterations, return \code{code=4}.} \item{printLevel}{this argument determines the level of printing which is done during the optimization process. The default value 0 means that no printing occurs, 1 prints the initial and final details, 2 prints all the main tracing information for every iteration. Higher values will result in even more output. } } } \item{\dots}{further arguments to \code{fn}, \code{grad} and \code{hess}. Further arguments to \code{maxBHHH} are also passed to \code{maxNR}. To maintain compatibility with the earlier versions, \dots also passes a number of control options (\code{tol}, \code{reltol}, \code{gradtol}, \code{steptol}, \code{lambdatol}, \code{qrtol}, \code{iterlim}) to the optimizers. } } \details{ The idea of the Newton method is to approximate the function at a given location by a multidimensional quadratic function, and use the estimated maximum as the start value for the next iteration. Such an approximation requires knowledge of both gradient and Hessian, the latter of which can be quite costly to compute. Several methods for approximating Hessian exist, including BFGS and BHHH. The BHHH (information equality) approximation is only valid for log-likelihood functions. It requires the score (gradient) values by individual observations and hence those must be returned by individual observations by \code{grad} or \code{fn}. The Hessian is approximated as the negative of the sum of the outer products of the gradients of individual observations, or, in the matrix form, \deqn{ \mathsf{H}^{BHHH} = -\frac{1}{N} \sum_{i=1}^N \left[ \frac{\partial \ell(\boldsymbol{\vartheta})} {\boldsymbol{\vartheta}} \frac{\partial \ell(\boldsymbol{\vartheta})} {\boldsymbol{\vartheta}'} \right] }{ \code{H = -t(gradient) \%*\% gradient = - crossprod( gradient )}. } The functions \code{maxNR}, \code{maxBFGSR}, and \code{maxBHHH} can work with constant parameters, useful if a parameter value converges to the boundary of support, or for testing. One way is to put \code{fixed} to non-NULL, specifying which parameters should be treated as constants. The parameters can also be fixed in runtime (only for \code{maxNR} and \code{maxBHHH}) by signaling it with the \code{fn} return value. See Henningsen & Toomet (2011) for details. } \value{ object of class "maxim". Data can be extracted through the following methods: \item{\code{\link{maxValue}}}{\code{fn} value at maximum (the last calculated value if not converged.)} \item{\code{\link[=coef.maxim]{coef}}}{estimated parameter value.} \item{gradient}{vector, last calculated gradient value. Should be close to 0 in case of normal convergence.} \item{estfun}{matrix of gradients at parameter value \code{estimate} evaluated at each observation (only if \code{grad} returns a matrix or \code{grad} is not specified and \code{fn} returns a vector).} \item{hessian}{Hessian at the maximum (the last calculated value if not converged).} \item{returnCode}{return code: \describe{ \item{1}{ gradient close to zero (normal convergence).} \item{2}{ successive function values within tolerance limit (normal convergence).} \item{3}{ last step could not find higher value (probably not converged). This is related to line search step getting too small, usually because hitting the boundary of the parameter space. It may also be related to attempts to move to a wrong direction because of numerical errors. In some cases it can be helped by changing \code{steptol}.} \item{4}{ iteration limit exceeded.} \item{5}{infinite value.} \item{6}{infinite gradient.} \item{7}{infinite Hessian.} \item{8}{successive function values within relative tolerance limit (normal convergence).} \item{9}{(BFGS) Hessian approximation cannot be improved because of gradient did not change. May be related to numerical approximation problems or wrong analytic gradient.} \item{100}{ Initial value out of range.} } } \item{returnMessage}{ a short message, describing the return code.} \item{activePar}{logical vector, which parameters are optimized over. Contains only \code{TRUE}-s if no parameters are fixed.} \item{nIter}{number of iterations.} \item{maximType}{character string, type of maximization.} \item{maxControl}{the optimization control parameters in the form of a \code{\linkS4class{MaxControl}} object.} The following components can only be extracted directly (with \code{\$}): \item{last.step}{a list describing the last unsuccessful step if \code{code=3} with following components: \describe{ \item{theta0}{ previous parameter value} \item{f0}{ \code{fn} value at \code{theta0}} \item{climb}{ the movement vector to the maximum of the quadratic approximation} } } \item{constraints}{A list, describing the constrained optimization (\code{NULL} if unconstrained). Includes the following components: \describe{ \item{type}{ type of constrained optimization} \item{outer.iterations}{ number of iterations in the constraints step} \item{barrier.value}{ value of the barrier function} } } } \section{Warning}{ No attempt is made to ensure that user-provided analytic gradient/Hessian is correct. The users are encouraged to use \code{\link{compareDerivatives}} function, designed for this purpose. If analytic gradient/Hessian are wrong, the algorithm may not converge, or may converge to a wrong point. As the BHHH method uses the likelihood-specific information equality, it is only suitable for maximizing log-likelihood functions! Quasi-Newton methods, including those mentioned above, do not work well in non-concave regions. This is especially the case with the implementation in \code{maxBFGSR}. The user is advised to experiment with various tolerance options to achieve convergence. } \references{ Berndt, E., Hall, B., Hall, R. and Hausman, J. (1974): Estimation and Inference in Nonlinear Structural Models, \emph{Annals of Social Measurement} \bold{3}, 653--665. Broyden, C.G. (1970): The Convergence of a Class of Double-rank Minimization Algorithms, \emph{Journal of the Institute of Mathematics and Its Applications} \bold{6}, 76--90. Fletcher, R. (1970): A New Approach to Variable Metric Algorithms, \emph{Computer Journal} \bold{13}, 317--322. Goldfarb, D. (1970): A Family of Variable Metric Updates Derived by Variational Means, \emph{Mathematics of Computation} \bold{24}, 23--26. Henningsen, A. and Toomet, O. (2011): maxLik: A package for maximum likelihood estimation in R \emph{Computational Statistics} \bold{26}, 443--458 Marquardt, D.W., (1963) An Algorithm for Least-Squares Estimation of Nonlinear Parameters, \emph{Journal of the Society for Industrial & Applied Mathematics} \bold{11}, 2, 431--441 Shanno, D.F. (1970): Conditioning of Quasi-Newton Methods for Function Minimization, \emph{Mathematics of Computation} \bold{24}, 647--656. } \author{Ott Toomet, Arne Henningsen, function \code{maxBFGSR} was originally developed by Yves Croissant (and placed in 'mlogit' package)} \seealso{\code{\link{maxLik}} for a general framework for maximum likelihood estimation (MLE); \code{\link{maxBHHH}} for maximizations using the Berndt, Hall, Hall, Hausman (1974) algorithm (which is a wrapper function to \code{maxNR}); \code{\link{maxBFGS}} for maximization using the BFGS, Nelder-Mead (NM), and Simulated Annealing (SANN) method (based on \code{\link{optim}}), also supporting inequality constraints; \code{\link{nlm}} for Newton-Raphson optimization; and \code{\link{optim}} for different gradient-based optimization methods.} \examples{ ## Fit exponential distribution by ML t <- rexp(100, 2) # create data with parameter 2 loglik <- function(theta) sum(log(theta) - theta*t) ## Note the log-likelihood and gradient are summed over observations gradlik <- function(theta) sum(1/theta - t) hesslik <- function(theta) -100/theta^2 ## Estimate with finite-difference gradient and Hessian a <- maxNR(loglik, start=1, control=list(printLevel=2)) summary(a) ## You would probably prefer 1/mean(t) instead ;-) ## The same example with analytic gradient and Hessian a <- maxNR(loglik, gradlik, hesslik, start=1) summary(a) ## BFGS estimation with finite-difference gradient a <- maxBFGSR( loglik, start=1 ) summary(a) ## For the BHHH method we need likelihood values and gradients ## of individual observations, not the sum of those loglikInd <- function(theta) log(theta) - theta*t gradlikInd <- function(theta) 1/theta - t ## Estimate with analytic gradient a <- maxBHHH(loglikInd, gradlikInd, start=1) summary(a) ## Example with a vector argument: Estimate the mean and ## variance of a random normal sample by maximum likelihood ## Note: you might want to use maxLik instead loglik <- function(param) { # param is a 2-vector of c(mean, sd) mu <- param[1] sigma <- param[2] ll <- -0.5*N*log(2*pi) - N*log(sigma) - sum(0.5*(x - mu)^2/sigma^2) ll } x <- rnorm(100, 1, 2) # use mean=1, sd=2 N <- length(x) res <- maxNR(loglik, start=c(0,1)) # use 'wrong' start values summary(res) ## The previous example with named parameters and a fixed value resFix <- maxNR(loglik, start=c(mu=0, sigma=1), fixed="sigma") summary(resFix) # 'sigma' is exactly 1.000 now. ### Constrained optimization ### ## We maximize exp(-x^2 - y^2) where x+y = 1 hatf <- function(theta) { x <- theta[1] y <- theta[2] exp(-(x^2 + y^2)) ## Note: you may prefer exp(- theta \%*\% theta) instead } ## use constraints: x + y = 1 A <- matrix(c(1, 1), 1, 2) B <- -1 res <- maxNR(hatf, start=c(0,0), constraints=list(eqA=A, eqB=B), control=list(printLevel=1)) print(summary(res)) } \keyword{optimize} maxLik/man/maxBFGS.Rd0000644000175100001440000002172514077525067014032 0ustar hornikusers\name{maxBFGS} \alias{maxBFGS} \alias{maxCG} \alias{maxSANN} \alias{maxNM} \title{BFGS, conjugate gradient, SANN and Nelder-Mead Maximization} \description{ These functions are wrappers for \code{\link{optim}}, adding constrained optimization and fixed parameters. } \usage{ maxBFGS(fn, grad=NULL, hess=NULL, start, fixed=NULL, control=NULL, constraints=NULL, finalHessian=TRUE, parscale=rep(1, length=length(start)), ... ) maxCG(fn, grad=NULL, hess=NULL, start, fixed=NULL, control=NULL, constraints=NULL, finalHessian=TRUE, parscale=rep(1, length=length(start)), ...) maxSANN(fn, grad=NULL, hess=NULL, start, fixed=NULL, control=NULL, constraints=NULL, finalHessian=TRUE, parscale=rep(1, length=length(start)), ... ) maxNM(fn, grad=NULL, hess=NULL, start, fixed=NULL, control=NULL, constraints=NULL, finalHessian=TRUE, parscale=rep(1, length=length(start)), ...) } \arguments{ \item{fn}{function to be maximised. Must have the parameter vector as the first argument. In order to use numeric gradient and BHHH method, \code{fn} must return a vector of observation-specific likelihood values. Those are summed internally where necessary. If the parameters are out of range, \code{fn} should return \code{NA}. See details for constant parameters.} \item{grad}{gradient of \code{fn}. Must have the parameter vector as the first argument. If \code{NULL}, numeric gradient is used (\code{maxNM} and \code{maxSANN} do not use gradient). Gradient may return a matrix, where columns correspond to the parameters and rows to the observations (useful for maxBHHH). The columns are summed internally.} \item{hess}{Hessian of \code{fn}. Not used by any of these methods, included for compatibility with \code{\link{maxNR}}.} \item{start}{initial values for the parameters. If start values are named, those names are also carried over to the results.} \item{fixed}{parameters to be treated as constants at their \code{start} values. If present, it is treated as an index vector of \code{start} parameters.} \item{control}{list of control parameters or a \sQuote{MaxControl} object. If it is a list, the default values are used for the parameters that are left unspecified by the user. These functions accept the following parameters: \describe{ \item{reltol}{sqrt(.Machine$double.eps), stopping condition. Relative convergence tolerance: the algorithm stops if the relative improvement between iterations is less than \sQuote{reltol}. Note: for compatibility reason \sQuote{tol} is equivalent to \sQuote{reltol} for optim-based optimizers. } \item{iterlim}{integer, maximum number of iterations. Default values are 200 for \sQuote{BFGS}, 500 (\sQuote{CG} and \sQuote{NM}), and 10000 (\sQuote{SANN}). Note that \sQuote{iteration} may mean different things for different optimizers. } \item{printLevel}{integer, larger number prints more working information. Default 0, no information. } \item{nm_alpha}{1, Nelder-Mead simplex method reflection coefficient (see Nelder & Mead, 1965) } \item{nm_beta}{0.5, Nelder-Mead contraction coefficient} \item{nm_gamma}{2, Nelder-Mead expansion coefficient} % SANN \item{sann_cand}{\code{NULL} or a function for \code{"SANN"} algorithm to generate a new candidate point; if \code{NULL}, Gaussian Markov kernel is used (see argument \code{gr} of \code{\link{optim}}).} \item{sann_temp}{10, starting temperature for the \dQuote{SANN} cooling schedule. See \code{\link{optim}}.} \item{sann_tmax}{10, number of function evaluations at each temperature for the \dQuote{SANN} optimizer. See \code{\link{optim}}.} \item{sann_randomSeed}{123, integer to seed random numbers to ensure replicability of \dQuote{SANN} optimization and preserve \code{R} random numbers. Use options like \code{sann_randomSeed=Sys.time()} or \code{sann_randomSeed=sample(100,1)} if you want stochastic results. } } } \item{constraints}{either \code{NULL} for unconstrained optimization or a list with two components. The components may be either \code{eqA} and \code{eqB} for equality-constrained optimization \eqn{A \theta + B = 0}{A \%*\% theta + B = 0}; or \code{ineqA} and \code{ineqB} for inequality constraints \eqn{A \theta + B > 0}{A \%*\% theta + B > 0}. More than one row in \code{ineqA} and \code{ineqB} corresponds to more than one linear constraint, in that case all these must be zero (equality) or positive (inequality constraints). The equality-constrained problem is forwarded to \code{\link{sumt}}, the inequality-constrained case to \code{\link{constrOptim2}}. } \item{finalHessian}{how (and if) to calculate the final Hessian. Either \code{FALSE} (not calculate), \code{TRUE} (use analytic/numeric Hessian) or \code{"bhhh"}/\code{"BHHH"} for information equality approach. The latter approach is only suitable for maximizing log-likelihood function. It requires the gradient/log-likelihood to be supplied by individual observations, see \code{\link{maxBHHH}} for details. } \item{parscale}{A vector of scaling values for the parameters. Optimization is performed on 'par/parscale' and these should be comparable in the sense that a unit change in any element produces about a unit change in the scaled value. (see \code{\link{optim}})} \item{\dots}{further arguments for \code{fn} and \code{grad}.} } \details{ In order to provide a consistent interface, all these functions also accept arguments that other optimizers use. For instance, \code{maxNM} accepts the \sQuote{grad} argument despite being a gradient-less method. The \sQuote{state} (or \sQuote{seed}) of R's random number generator is saved at the beginning of the \code{maxSANN} function and restored at the end of this function so this function does \emph{not} affect the generation of random numbers although the random seed is set to argument \code{random.seed} and the \sQuote{SANN} algorithm uses random numbers. } \value{ object of class "maxim". Data can be extracted through the following functions: \item{maxValue}{\code{fn} value at maximum (the last calculated value if not converged.)} \item{coef}{estimated parameter value.} \item{gradient}{vector, last calculated gradient value. Should be close to 0 in case of normal convergence.} \item{estfun}{matrix of gradients at parameter value \code{estimate} evaluated at each observation (only if \code{grad} returns a matrix or \code{grad} is not specified and \code{fn} returns a vector).} \item{hessian}{Hessian at the maximum (the last calculated value if not converged).} \item{returnCode}{integer. Success code, 0 is success (see \code{\link{optim}}).} \item{returnMessage}{ a short message, describing the return code.} \item{activePar}{logical vector, which parameters are optimized over. Contains only \code{TRUE}-s if no parameters are fixed.} \item{nIter}{number of iterations. Two-element integer vector giving the number of calls to \code{fn} and \code{gr}, respectively. This excludes those calls needed to compute the Hessian, if requested, and any calls to \code{fn} to compute a finite-difference approximation to the gradient.} \item{maximType}{character string, type of maximization.} \item{maxControl}{the optimization control parameters in the form of a \code{\linkS4class{MaxControl}} object.} The following components can only be extracted directly (with \code{\$}): \item{constraints}{A list, describing the constrained optimization (\code{NULL} if unconstrained). Includes the following components: \describe{ \item{type}{type of constrained optimization} \item{outer.iterations}{number of iterations in the constraints step} \item{barrier.value}{value of the barrier function} } } } \author{Ott Toomet, Arne Henningsen} \seealso{\code{\link{optim}}, \code{\link{nlm}}, \code{\link{maxNR}}, \code{\link{maxBHHH}}, \code{\link{maxBFGSR}} for a \code{\link{maxNR}}-based BFGS implementation.} \references{ Nelder, J. A. & Mead, R. A, Simplex Method for Function Minimization, The Computer Journal, 1965, 7, 308-313 } \examples{ # Maximum Likelihood estimation of Poissonian distribution n <- rpois(100, 3) loglik <- function(l) n*log(l) - l - lfactorial(n) # we use numeric gradient summary(maxBFGS(loglik, start=1)) # you would probably prefer mean(n) instead of that ;-) # Note also that maxLik is better suited for Maximum Likelihood ### ### Now an example of constrained optimization ### f <- function(theta) { x <- theta[1] y <- theta[2] exp(-(x^2 + y^2)) ## you may want to use exp(- theta \%*\% theta) instead } ## use constraints: x + y >= 1 A <- matrix(c(1, 1), 1, 2) B <- -1 res <- maxNM(f, start=c(1,1), constraints=list(ineqA=A, ineqB=B), control=list(printLevel=1)) print(summary(res)) } \keyword{optimize} maxLik/man/fnSubset.Rd0000644000175100001440000000506114077525067014367 0ustar hornikusers\name{fnSubset} \alias{fnSubset} \title{ Call fnFull with variable and fixed parameters } \description{ Combine variable parameters with with fixed parameters and pass to \code{fnFull}. Useful for optimizing over a subset of parameters without writing a separate function. Values are combined by name if available. Otherwise, \code{xFull} is constructed by position (the default). } \usage{ fnSubset(x, fnFull, xFixed, xFull=c(x, xFixed), ...) } \arguments{ \item{x}{ Variable parameters to be passed to \code{fnFull}. } \item{fnFull}{ Function whose first argument has length = length(xFull). } \item{xFixed}{ Parameter values to be combined with \code{x} to construct the first argument for a call to \code{fnFull}. } \item{xFull}{ Prototype initial argument for \code{fnFull}. } \item{\dots}{ Optional arguments passed to \code{fnFull}. } } \details{ This function first confirms that \code{length(x) + length(xFixed) == length(xFull)}. Next, \itemize{ \item If \code{xFull} has names, match at least \code{xFixed} by name. \item Else \code{xFull = c(x, xFixes)}, the default. } Finally, call \code{fnFull(xFull, ...)}. } \value{ value returned by \code{fnFull} } %\references{ } \author{ Spencer Graves } \seealso{ \code{\link{optim}} \code{\link[dlm]{dlmMLE}} \code{\link{maxLik}} \code{\link{maxNR}} } \examples{ ## ## Example with 'optim' ## fn <- function(x) (x[2]-2*x[1])^2 # note: true minimum is 0 on line 2*x[1] == x[2] fullEst <- optim(par=c(1,1), method="BFGS", fn=fn) fullEst$par # par = c(0.6, 1.2) at minimum (not convex) # Fix the last component to 4 est4 <- optim(par=1, fn=fnSubset, method="BFGS", fnFull=fn, xFixed=4) est4$par # now there is a unique minimun x[1] = 2 # Fix the first component fnSubset(x=1, fnFull=fn, xFixed=c(a=4), xFull=c(a=1, b=2)) # After substitution: xFull = c(a=4, b=1), # so fn = (1 - 2*4)^2 = (-7)^2 = 49 est4. <- optim(par=1, fn=fnSubset, method="BFGS", fnFull=fn, xFixed=c(a=4), xFull=c(a=1, b=2)) est4.$par # At optimum: xFull=c(a=4, b=8), # so fn = (8 - 2*4)^2 = 0 ## ## Example with 'maxLik' ## fn2max <- function(x) -(x[2]-2*x[1])^2 # -> need to have a maximum max4 <- maxLik(fnSubset, start=1, fnFull=fn2max, xFixed=4) summary(max4) # Similar result using fixed parameters in maxNR, called by maxLik max4. <- maxLik(fn2max, start=c(1, 4), fixed=2) summary(max4.) } \keyword{optimize} \keyword{utilities} maxLik/man/reexports.Rd0000644000175100001440000000047314077525067014633 0ustar hornikusers\docType{import} \name{reexports} \alias{reexports} \alias{tidy} \alias{glance} \title{Objects exported from other packages} \keyword{internal} \description{ These objects are imported from the "generics" package. See \code{\link[generics:tidy]{tidy}} and \code{\link[generics:glance]{glance}} for details. } maxLik/man/compareDerivatives.Rd0000644000175100001440000001076514077525067016441 0ustar hornikusers\name{compareDerivatives} \alias{compareDerivatives} \title{function to compare analytic and numeric derivatives} \description{ This function compares analytic and numerical derivative and prints related diagnostics information. It is intended for testing and debugging code for analytic derivatives for maximization algorithms. } \usage{ compareDerivatives(f, grad, hess=NULL, t0, eps=1e-6, printLevel=1, print=printLevel > 0, max.rows=getOption("max.rows", 20), max.cols=getOption("max.cols", 7), ...) } \arguments{ \item{f}{ function to be differentiated. The parameter (vector) of interest must be the first argument. The function may return a vector, in that case the derivative will be a matrix. } \item{grad}{ analytic gradient. This may be either a function, returning the analytic gradient, or a numeric vector, the pre-computed gradient. The function must use the same set of parameters as \code{f}. If \code{f} is a vector-valued function, grad must return/be a matrix where the number of rows equals the number of components of \code{f}, and the number of columns must equal to the number of components in \code{t0}. } \item{hess}{ function returning the analytic hessian. If present, hessian matrices are compared too. Only appropriate for scalar-valued functions. } \item{t0}{ numeric vector, parameter at which the derivatives are compared. The derivative is taken with respect to this vector. both \code{f}m \code{grad} (if function) and \code{hess} (if present) must accept this value as the first parameter. } \item{eps}{ numeric. Step size for numeric differentiation. Central derivative is used. } \item{printLevel}{ numeric: a positive number prints summary of the comparison. 0 does not do any printing, only returns the comparison results (invisibly). } \item{print}{ deprecated (for backward compatibility only). } \item{max.rows}{maximum number of matrix rows to be printed. } \item{max.cols}{maximum number of columns to be printed. } \item{\dots}{ further arguments to \code{f}, \code{grad} and \code{hess}. } } \details{ Analytic derivatives (and Hessian) substantially improve the estimation speed and reliability. However, these are typically hard to program. This utility compares the programmed result and the (internally calculated) numeric derivative. For every component of \code{f}, it prints the parameter value, analytic and numeric derivative, and their relative difference \deqn{\textrm{rel.diff} = \frac{\textrm{analytic} - \textrm{numeric}}{\frac{1}{2}(|\textrm{analytic}| + |\textrm{numeric}|)}.}{rel.diff = (analytic - numeric)/(0.5*(abs(analytic) + abs(numeric))).} If \eqn{\textrm{analytic} = 0}{analytic == 0} and \eqn{\textrm{numeric} = 0}{numeric == 0}, then rel.diff is also set to 0. If analytic derivatives are correct and the function is sufficiently smooth, expect the relative differences to be less than \eqn{10^{-7}}{1e-7}. } \value{ A list with following components: \item{t0}{the input argument \code{t0}} \item{f.t0}{f(t0)} \item{compareGrad}{ a list with components \code{analytic} = grad(t0), \code{nmeric} = numericGradient(f, t0), and their \code{rel.diff}. } \item{maxRelDiffGrad}{max(abs(rel.diff))} If \code{hess} is also provided, the following optional components are also present: \item{compareHessian}{ a list with components \code{analytic} = hess(t0), \code{numeric} = numericGradient(grad, t0), and their \code{rel.diff}. } \item{maxRelDiffHess}{max(abs(rel.diff)) for the Hessian} } \author{Ott Toomet \email{otoomet@ut.ee} and Spencer Graves} \seealso{ \code{\link{numericGradient}} \code{\link{deriv}} } \examples{ ## A simple example with sin(x)' = cos(x) f <- function(x) c(sin=sin(x)) Dsin <- compareDerivatives(f, cos, t0=c(angle=1)) ## ## Example of normal log-likelihood. Two-parameter ## function. ## x <- rnorm(100, 1, 2) # generate rnorm x l <- function(b) sum(dnorm(x, mean=b[1], sd=b[2], log=TRUE)) gradl <- function(b) { c(mu=sum(x - b[1])/b[2]^2, sigma=sum((x - b[1])^2/b[2]^3 - 1/b[2])) } gradl. <- compareDerivatives(l, gradl, t0=c(mu=1,sigma=2)) ## ## An example with f returning a vector, t0 = a scalar ## trig <- function(x)c(sin=sin(x), cos=cos(x)) Dtrig <- function(x)c(sin=cos(x), cos=-sin(x)) Dtrig. <- compareDerivatives(trig, Dtrig, t0=1) } \keyword{math} \keyword{utilities} maxLik/man/nParam.Rd0000644000175100001440000000236114077525067014014 0ustar hornikusers\name{nParam.maxim} \alias{nParam.maxim} \title{Number of model parameters} \description{ This function returns the number of model parameters. } \usage{ \method{nParam}{maxim}(x, free=FALSE, \dots) } \arguments{ \item{x}{a model returned by a maximisation method from the \pkg{maxLik} package.} \item{free}{logical, whether to report only the free parameters or the total number of parameters (default)} \item{\dots}{other arguments for methods} } \details{ Free parameters are the parameters with no equality restrictions. Some parameters may be jointly restricted (e.g. sum of two probabilities equals unity). In this case the total number of parameters may depend on the normalization. } \value{ Number of parameters in the model } \author{Ott Toomet} \seealso{\code{\link{nObs}} for number of observations} \examples{ ## fit a normal distribution by ML # generate a variable from normally distributed random numbers x <- rnorm( 100, 1, 2 ) # log likelihood function (for individual observations) llf <- function( param ) { return( dnorm( x, mean = param[ 1 ], sd = param[ 2 ], log = TRUE ) ) } ## ML method ml <- maxLik( llf, start = c( mu = 0, sigma = 1 ) ) # return number of parameters nParam( ml ) } \keyword{methods} maxLik/man/condiNumber.Rd0000644000175100001440000000645614077525067015054 0ustar hornikusers\name{condiNumber} \alias{condiNumber} \alias{condiNumber.default} \alias{condiNumber.maxLik} \title{Print matrix condition numbers column-by-column} \description{ This function prints the condition number of a matrix while adding columns one-by-one. This is useful for testing multicollinearity and other numerical problems. It is a generic function with a default method, and a method for \code{maxLik} objects. } \usage{ condiNumber(x, ...) \method{condiNumber}{default}(x, exact = FALSE, norm = FALSE, printLevel=print.level, print.level=1, digits = getOption( "digits" ), ... ) \method{condiNumber}{maxLik}(x, ...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{x}{numeric matrix, condition numbers of which are to be printed} \item{exact}{logical, should condition numbers be exact or approximations (see \code{\link{kappa}})} \item{norm}{logical, whether the columns should be normalised to have unit norm} \item{printLevel}{numeric, positive value will output the numbers during the calculations. Useful for interactive work.} \item{print.level}{same as \sQuote{printLevel}, for backward compatibility} \item{digits}{minimal number of significant digits to print (only relevant if argument \code{print.level} is larger than zero).} \item{\dots}{Further arguments to \code{condiNumber.default} are currently ignored; further arguments to \code{condiNumber.maxLik} are passed to \code{condiNumber.default}.} } \details{ Statistical model often fail because of a high correlation between the explanatory variables in the linear index (multicollinearity) or because the evaluated maximum of a non-linear model is virtually flat. In both cases, the (near) singularity of the related matrices may help to understand the problem. \code{condiNumber} inspects the matrices column-by-column and indicates which variables lead to a jump in the condition number (cause singularity). If the matrix column name does not immediately indicate the problem, one may run an OLS model by estimating this column using all the previous columns as explanatory variables. Those columns that explain almost all the variation in the current one will have very high \eqn{t}{t}-values. } \value{ Invisible vector of condition numbers by column. If the start values for \code{\link{maxLik}} are named, the condition numbers are named accordingly. } \references{ Greene, W. (2012): \emph{Econometrics Analysis}, 7th edition, p. 130. } \author{Ott Toomet} \seealso{\code{\link{kappa}}} \examples{ set.seed(0) ## generate a simple nearly multicollinear dataset x1 <- runif(100) x2 <- runif(100) x3 <- x1 + x2 + 0.000001*runif(100) # this is virtually equal to x1 + x2 x4 <- runif(100) y <- x1 + x2 + x3 + x4 + rnorm(100) m <- lm(y ~ -1 + x1 + x2 + x3 + x4) print(summary(m)) # note the outlandish estimates and standard errors # while R^2 is 0.88. This suggests multicollinearity condiNumber(model.matrix(m)) # note the value 'explodes' at x3 ## we may test the results further: print(summary(lm(x3 ~ -1 + x1 + x2))) # Note the extremely high t-values and R^2: x3 is (almost) completely # explained by x1 and x2 } \keyword{math} \keyword{utilities} \keyword{debugging} % is it debugging? maxLik/man/nObs.Rd0000644000175100001440000000227314077525067013501 0ustar hornikusers\name{nObs.maxLik} \alias{nObs.maxLik} \title{Number of Observations} \description{ Returns the number of observations for statistical models, estimated by Maximum Likelihood using \code{\link{maxLik}}. } \usage{ \method{nObs}{maxLik}(x, \dots) } \arguments{ \item{x}{a statistical model estimated by Maximum Likelihood using \code{\link{maxLik}}.} \item{\dots}{further arguments (currently ignored).} } \details{ The \code{nObs} method for \dQuote{maxLik} objects can return the number of observations only if log-likelihood function (or the gradient) returns values by individual observation. } \value{ numeric, number of observations } \author{Arne Henningsen, Ott Toomet} \seealso{\code{\link[miscTools]{nObs}}, \code{\link{maxLik}}, \code{\link{nParam}}.} \examples{ ## fit a normal distribution by ML # generate a variable from normally distributed random numbers x <- rnorm( 100, 1, 2 ) # log likelihood function (for individual observations) llf <- function( param ) { return( dnorm( x, mean = param[ 1 ], sd = param[ 2 ], log = TRUE ) ) } ## ML method ml <- maxLik( llf, start = c( mu = 0, sigma = 1 ) ) # return number of onservations nObs( ml ) } \keyword{methods} maxLik/man/summary.maxLik.Rd0000644000175100001440000000436514077525067015525 0ustar hornikusers\name{summary.maxLik} \alias{summary.maxLik} \alias{coef.summary.maxLik} \title{summary the Maximum-Likelihood estimation} \description{ Summary the Maximum-Likelihood estimation including standard errors and t-values. } \usage{ \method{summary}{maxLik}(object, eigentol=1e-12, ... ) \method{coef}{summary.maxLik}(object, \ldots) } \arguments{ \item{object}{ object of class 'maxLik', or 'summary.maxLik', usually a result from Maximum-Likelihood estimation. } \item{eigentol}{ The standard errors are only calculated if the ratio of the smallest and largest eigenvalue of the Hessian matrix is less than \dQuote{eigentol}. Otherwise the Hessian is treated as singular. } \item{\ldots}{currently not used.} } \value{ An object of class 'summary.maxLik' with following components: \describe{ \item{type}{type of maximization.} \item{iterations}{number of iterations.} \item{code}{code of success.} \item{message}{a short message describing the code.} \item{loglik}{the loglik value in the maximum.} \item{estimate}{numeric matrix, the first column contains the parameter estimates, the second the standard errors, third t-values and fourth corresponding probabilities.} \item{fixed}{logical vector, which parameters are treated as constants.} \item{NActivePar}{number of free parameters.} \item{constraints}{information about the constrained optimization. Passed directly further from \code{maxim}-object. \code{NULL} if unconstrained maximization. } } } \author{Ott Toomet, Arne Henningsen} \seealso{ \code{\link{maxLik}} for maximum likelihood estimation, \code{\link{confint}} for confidence intervals, and \code{\link{tidy}} and \code{\link{glance}} for alternative quick summaries of the ML results. } \examples{ ## ML estimation of exponential distribution: t <- rexp(100, 2) loglik <- function(theta) log(theta) - theta*t gradlik <- function(theta) 1/theta - t hesslik <- function(theta) -100/theta^2 ## Estimate with numeric gradient and hessian a <- maxLik(loglik, start=1, control=list(printLevel=2)) summary(a) ## Estimate with analytic gradient and hessian a <- maxLik(loglik, gradlik, hesslik, start=1, control=list(printLevel=2)) summary(a) } \keyword{models} maxLik/man/activePar.Rd0000644000175100001440000000265714077525067014524 0ustar hornikusers\name{activePar} \alias{activePar} \alias{activePar.default} \title{free parameters under maximization} \description{ Return a logical vector, indicating which parameters were free under maximization, as opposed to the fixed parameters that are treated as constants. See argument \dQuote{fixed} for \code{\link{maxNR}}. } \usage{ activePar(x, \dots) \method{activePar}{default}(x, \dots) } \arguments{ \item{x}{object, created by a maximization routine, such as \code{\link{maxNR}} or \code{\link{maxLik}}, or derived from a maximization object. } \item{\dots}{further arguments for methods} } \details{ Several optimization routines allow the user to fix some parameter values (or do it automatically in some cases). For gradient or Hessian based inference one has to know which parameters carry optimization-related information. } \value{ A logical vector, indicating whether the parameters were free to change during optimization algorithm. } \author{Ott Toomet} \seealso{\code{\link{maxNR}}, \code{\link{nObs}}} \examples{ ## a two-dimensional exponential hat f <- function(a) exp(-a[1]^2 - a[2]^2) ## maximize wrt. both parameters free <- maxNR(f, start=1:2) summary(free) # results should be close to (0,0) activePar(free) ## keep the first parameter constant cons <- maxNR(f, start=1:2, fixed=c(TRUE,FALSE)) summary(cons) # result should be around (1,0) activePar(cons) } \keyword{methods} \keyword{optimize} maxLik/man/vcov.maxLik.Rd0000644000175100001440000000265214077525067015002 0ustar hornikusers\name{vcov.maxLik} \alias{vcov.maxLik} \title{Variance Covariance Matrix of maxLik objects} \description{ Extract variance-covariance matrices from \code{\link{maxLik}} objects. } \usage{ \method{vcov}{maxLik}( object, eigentol=1e-12, ... ) } \arguments{ \item{object}{a \sQuote{maxLik} object.} \item{eigentol}{ eigenvalue tolerance, controlling when the Hessian matrix is treated as numerically singular. } \item{\dots}{further arguments (currently ignored).} } \value{ the estimated variance covariance matrix of the coefficients. In case of the estimated Hessian is singular, it's values are \code{Inf}. The values corresponding to fixed parameters are zero. } \details{ The standard errors are only calculated if the ratio of the smallest and largest eigenvalue of the Hessian matrix is less than \dQuote{eigentol}. Otherwise the Hessian is treated as singular. } \author{ Arne Henningsen, Ott Toomet } \seealso{\code{\link[stats]{vcov}}, \code{\link{maxLik}}.} \examples{ ## ML estimation of exponential random variables t <- rexp(100, 2) loglik <- function(theta) log(theta) - theta*t gradlik <- function(theta) 1/theta - t hesslik <- function(theta) -100/theta^2 ## Estimate with numeric gradient and hessian a <- maxLik(loglik, start=1, control=list(printLevel=2)) vcov(a) ## Estimate with analytic gradient and hessian a <- maxLik(loglik, gradlik, hesslik, start=1) vcov(a) } \keyword{methods} maxLik/man/maxSGA.Rd0000644000175100001440000003567614077525067013735 0ustar hornikusers\name{maxSGA} \alias{maxSGA} \alias{maxAdam} \title{Stochastic Gradient Ascent} \description{ Stochastic Gradient Ascent--based optimizers } \usage{ maxSGA(fn = NULL, grad = NULL, hess = NULL, start, nObs, constraints = NULL, finalHessian = FALSE, fixed = NULL, control=NULL, ... ) maxAdam(fn = NULL, grad = NULL, hess = NULL, start, nObs, constraints = NULL, finalHessian = FALSE, fixed = NULL, control=NULL, ... ) } \arguments{ \item{fn}{the function to be maximized. As the objective function values are not directly used for optimization, this argument is optional, given \code{grad} is provided. It must have the parameter vector as the first argument, and it must have an argument \code{index} to specify the integer index of the selected observations. It must return either a single number, or a numeric vector (this is is summed internally). If the parameters are out of range, \code{fn} should return \code{NA}. See details for constant parameters. \code{fn} may also return attributes "gradient" and/or "hessian". If these attributes are set, the algorithm uses the corresponding values as gradient and Hessian. } \item{grad}{gradient of the objective function. It must have the parameter vector as the first argument, and it must have an argument \code{index} to specify the integer index of selected observations. It must return either a gradient vector of the objective function, or a matrix, where columns correspond to individual parameters. The column sums are treated as gradient components. If \code{NULL}, finite-difference gradients are computed. If \code{fn} returns an object with attribute \code{gradient}, this argument is ignored. If \code{grad} is not supplied, it is computed by finite-difference method using \code{fn}. However, this is only adviseable for small-scale tests, not for any production run. Obviously, \code{fn} must be correctly defined in that case. } \item{hess}{Hessian matrix of the function. Mainly for compatibility reasons, only used for computing the final Hessian if asked to do so by setting \code{finalHessian} to \code{TRUE}. It must have the parameter vector as the first argument and it must return the Hessian matrix of the objective function. If missing, either finite-difference Hessian, based on \code{gradient} or BHHH approach is computed if asked to do so. } \item{start}{initial parameter values. If these have names, the names are also used for results.} \item{nObs}{number of observations. This is used to partition the data into individual batches. The resulting batch indices are forwarded to the \code{grad} function through the argument \code{index}.} \item{constraints}{either \code{NULL} for unconstrained optimization or a list with two components. The components may be either \code{eqA} and \code{eqB} for equality-constrained optimization \eqn{A \theta + B = 0}{A \%*\% theta + B = 0}; or \code{ineqA} and \code{ineqB} for inequality constraints \eqn{A \theta + B > 0}{A \%*\% theta + B > 0}. More than one row in \code{ineqA} and \code{ineqB} corresponds to more than one linear constraint, in that case all these must be zero (equality) or positive (inequality constraints). The equality-constrained problem is forwarded to \code{\link{sumt}}, the inequality-constrained case to \code{\link{constrOptim2}}. } \item{finalHessian}{how (and if) to calculate the final Hessian. Either \code{FALSE} (do not calculate), \code{TRUE} (use analytic/finite-difference Hessian) or \code{"bhhh"}/\code{"BHHH"} for the information equality approach. The latter approach is only suitable when working with a log-likelihood function, and it requires the gradient/log-likelihood to be supplied by individual observations. Hessian matrix is not often used for optimization problems where one applies SGA, but even if one is not interested in standard errors, it may provide useful information about the model performance. If computed by finite-difference method, the Hessian computation may be very slow. } \item{fixed}{parameters to be treated as constants at their \code{start} values. If present, it is treated as an index vector of \code{start} parameters.} \item{control}{list of control parameters. The ones used by these optimizers are \describe{ \item{SGA_momentum}{0, numeric momentum parameter for SGA. Must lie in interval \eqn{[0,1]}{[0,1]}. See details. } Adam-specific parameters \item{Adam_momentum1}{0.9, numeric in interval \eqn{(0,1)}{(0,1)}, the first moment momentum} \item{Adam_momentum2}{0.999, numeric in interval \eqn{(0,1)}{(0,1)}, the second moment momentum} General stochastic gradient parameters: \item{SG_learningRate}{step size the SGA algorithm takes in the gradient direction. If 1, the step equals to the gradient value. A good value is often 0.01--0.3} \item{SG_batchSize}{SGA batch size, an integer between 1 and \code{nObs}. If \code{NULL} (default), the full batch gradient is computed. } \item{SG_clip}{\code{NULL}, gradient clipping threshold. The algorithm ensures that \eqn{||g(\theta)||_2^2 \le \kappa}{norm(gradient)^2 <= kappa} where \eqn{\kappa}{kappa} is the \code{SG_clip} value. If the actual norm of the gradient exceeds (square root of) \eqn{\kappa}{kappa}, the gradient will be scaled back accordingly while preserving its direction. \code{NULL} means no clipping. } Stopping conditions: \item{gradtol}{stopping condition. Stop if norm of the gradient is less than \code{gradtol}. Default 0, i.e. do not use this condition. This condition is useful if the objective is to drive full batch gradient to zero on training data. It is not a good objective in case of the stochastic gradient, and if the objective is to optimize the objective on validation data. } \item{SG_patience}{\code{NULL}, or integer. Stopping condition: the algorithm counts how many times the objective function has been worse than its best value so far, and if this exceeds \code{SG_patience}, the algorithm stops. } \item{SG_patienceStep}{1L, integer. After how many epochs to check the patience value. \code{1} means to check at each epoch, and hence to compute the objective function. This may be undesirable if the objective function is costly to compute. } \item{iterlim}{stopping condition. Stop if more than \code{iterlim} epochs, return \code{code=4}. Epoch is a set of iterations that cycles through all observations. In case of full batch, iterations and epochs are equivalent. If \code{iterlim = 0}, does not do any learning and returns the initial values unchanged. } \item{printLevel}{this argument determines the level of printing which is done during the optimization process. The default value 0 means that no printing occurs, 1 prints the initial and final details, 2 prints all the main tracing information for every epoch. Higher values will result in even more output. } \item{storeParameters}{logical, whether to store and return the parameter values at each epoch. If \code{TRUE}, the stored values can be retrieved with \code{\link{storedParameters}}-method. The parameters are stored as a matrix with rows corresponding to the epochs and columns to the parameter components. There are \code{iterlim} + 1 rows, where the first one corresponds to the initial parameters. Default \code{FALSE}. } \item{storeValues}{logical, whether to store and return the objective function values at each epoch. If \code{TRUE}, the stored values can be retrieved with \code{\link{storedValues}}-method. There are \code{iterlim} + 1 values, where the first one corresponds to the value at the initial parameters. Default \code{FALSE}. } } See \code{\link{maxControl}} for more information. } \item{\dots}{further arguments to \code{fn}, \code{grad} and \code{hess}. To maintain compatibility with the earlier versions, \dots also passes certain control options to the optimizers. } } \details{ Gradient Ascent (GA) is a optimization method where the algorithm repeatedly takes small steps in the gradient's direction, the parameter vector \eqn{\theta}{theta} is updated as \eqn{\theta \leftarrow theta + \mathrm{learning rate}\cdot \nabla f(\theta)}{theta <- learning rate * gradient f(theta)}. In case of Stochastic GA (SGA), the gradient is not computed on the full set of observations but on a small subset, \emph{batch}, potentially a single observation only. In certain circumstances this converges much faster than when using all observation (see \cite{Bottou et al, 2018}). If \code{SGA_momentum} is positive, the SGA algorithm updates the parameters \eqn{\theta}{theta} in two steps. First, the momentum is used to update the \dQuote{velocity} \eqn{v}{v} as \eqn{v \leftarrow \mathrm{momentum}\cdot v + \mathrm{learning rate}\cdot \nabla f(\theta)}{v <- momentum*v + learning rate* gradient f(theta)}, and thereafter the parameter \eqn{\theta}{theta} is updates as \eqn{\theta \leftarrow \theta + v}{theta <- theta + v}. Initial velocity is set to 0. The Adam algorithm is more complex and uses first and second moments of stochastic gradients to automatically adjust the learning rate. See \cite{Goodfellow et al, 2016, page 301}. The function \code{fn} is not directly used for optimization, only for printing or as a stopping condition. In this sense it is up to the user to decide what the function returns, if anything. For instance, it may be useful for \code{fn} to compute the objective function on either full training data, or on validation data, and just ignore the \code{index} argument. The latter is useful if using \emph{patience}-based stopping. However, one may also choose to select the observations determined by the index to compute the objective function on the current data batch. % Does it support contraints? } \value{ object of class "maxim". Data can be extracted through the following methods: \item{\code{\link{maxValue}}}{\code{fn} value at maximum (the last calculated value if not converged.)} \item{\code{\link{coef}}}{estimated parameter value.} \item{\code{\link{gradient}}}{vector, last calculated gradient value. Should be close to 0 in case of normal convergence.} \item{estfun}{matrix of gradients at parameter value \code{estimate} evaluated at each observation (only if \code{grad} returns a matrix or \code{grad} is not specified and \code{fn} returns a vector).} \item{\code{\link{hessian}}}{Hessian at the maximum (the last calculated value if not converged).} \item{\code{\link{storedValues}}}{return values stored at each epoch} \item{\code{\link{storedParameters}}}{return parameters stored at each epoch} \item{\code{\link{returnCode}}}{ a numeric code that describes the convergence or error. } \item{\code{\link{returnMessage}}}{a short message, describing the return code.} \item{\code{\link{activePar}}}{logical vector, which parameters are optimized over. Contains only \code{TRUE}-s if no parameters are fixed.} \item{\code{\link{nIter}}}{number of iterations.} \item{\code{\link{maximType}}}{character string, type of maximization.} \item{\code{\link{maxControl}}}{the optimization control parameters in the form of a \code{\linkS4class{MaxControl}} object.} } \references{ Bottou, L.; Curtis, F. & Nocedal, J.: Optimization Methods for Large-Scale Machine Learning \emph{SIAM Review}, 2018, \bold{60}, 223--311. Goodfellow, I.; Bengio, Y.; Courville, A. (2016): Deep Learning, \emph{MIT Press} Henningsen, A. and Toomet, O. (2011): maxLik: A package for maximum likelihood estimation in R \emph{Computational Statistics} \bold{26}, 443--458 } \author{Ott Toomet, Arne Henningsen} \seealso{ A good starting point to learn about the usage of stochastic gradient ascent in \pkg{maxLik} package is the vignette \dQuote{Stochastic Gradient Ascent in maxLik}. The other related functions are \code{\link{maxNR}} for Newton-Raphson, a popular Hessian-based maximization; \code{\link{maxBFGS}} for maximization using the BFGS, Nelder-Mead (NM), and Simulated Annealing (SANN) method (based on \code{\link[stats]{optim}}), also supporting inequality constraints; \code{\link{maxLik}} for a general framework for maximum likelihood estimation (MLE); \code{\link{optim}} for different gradient-based optimization methods. } \examples{ ## estimate the exponential distribution parameter by ML set.seed(1) t <- rexp(100, 2) loglik <- function(theta, index) sum(log(theta) - theta*t[index]) ## Note the log-likelihood and gradient are summed over observations gradlik <- function(theta, index) sum(1/theta - t[index]) ## Estimate with full-batch a <- maxSGA(loglik, gradlik, start=1, control=list(iterlim=1000, SG_batchSize=10), nObs=100) # note that loglik is not really needed, and is not used # here, unless more print verbosity is asked summary(a) ## ## demonstrate the usage of index, and using ## fn for computing the objective function on validation data. ## Create a linear model where variables are very unequally scaled ## ## OLS loglik function: compute the function value on validation data only loglik <- function(beta, index) { e <- yValid - XValid \%*\% beta -crossprod(e)/length(y) } ## OLS gradient: compute it on training data only ## Use 'index' to select the subset corresponding to the minibatch gradlik <- function(beta, index) { e <- yTrain[index] - XTrain[index,,drop=FALSE] \%*\% beta g <- t(-2*t(XTrain[index,,drop=FALSE]) \%*\% e) -g/length(index) } N <- 1000 ## two random variables: one with scale 1, the other with 100 X <- cbind(rnorm(N), rnorm(N, sd=100)) beta <- c(1, 1) # true parameter values y <- X \%*\% beta + rnorm(N, sd=0.2) ## training-validation split iTrain <- sample(N, 0.8*N) XTrain <- X[iTrain,,drop=FALSE] XValid <- X[-iTrain,,drop=FALSE] yTrain <- y[iTrain] yValid <- y[-iTrain] ## ## do this without momentum: learning rate must stay small for the gradient not to explode cat(" No momentum:\n") a <- maxSGA(loglik, gradlik, start=c(10,10), control=list(printLevel=1, iterlim=50, SG_batchSize=30, SG_learningRate=0.0001, SGA_momentum=0 ), nObs=length(yTrain)) print(summary(a)) # the first component is off, the second one is close to the true value ## do with momentum 0.99 cat(" Momentum 0.99:\n") a <- maxSGA(loglik, gradlik, start=c(10,10), control=list(printLevel=1, iterlim=50, SG_batchSize=30, SG_learningRate=0.0001, SGA_momentum=0.99 # no momentum ), nObs=length(yTrain)) print(summary(a)) # close to true value } \keyword{optimize} maxLik/man/tidy.maxLik.Rd0000644000175100001440000000352514077525067014776 0ustar hornikusers\name{tidy.maxLik} \alias{tidy.maxLik} \alias{glance.maxLik} \title{tidy and glance methods for maxLik objects} \description{ These methods return summary information about the estimated model. Both require the \pkg{tibble} package to be installed. } \usage{ \method{tidy}{maxLik}(x, ...) \method{glance}{maxLik}(x, ...) } \arguments{ \item{x}{ object of class 'maxLik'. } \item{\ldots}{Not used.} } \value{ For \code{tidy()}, a tibble with columns: \describe{ \item{term}{The name of the estimated parameter (parameters are sequentially numbered if names missing).} \item{estimate}{The estimated parameter.} \item{std.error}{The standard error of the estimate.} \item{statistic}{The \eqn{z}{z}-statistic of the estimate.} \item{p.value}{The \eqn{p}{p}-value.} } This is essentially the same table as \code{summary}-method prints, just in form of a tibble (data frame). For \code{glance()}, a one-row tibble with columns: \describe{ \item{df}{The degrees of freedom of the model.} \item{logLik}{The log-likelihood of the model.} \item{AIC}{Akaike's Information Criterion for the model.} \item{nobs}{The number of observations, if this is available, otherwise \code{NA}.} } } \seealso{ The functions \code{\link[generics:tidy]{tidy}} and \code{\link[generics:glance]{glance}} in package \pkg{generics}, and \code{\link[=summary.maxLik]{summary}} to display the \dQuote{standard} summary information. } \author{David Hugh-Jones} \examples{ ## Example with a single parameter t <- rexp(100, 2) loglik <- function(theta) log(theta) - theta*t a <- maxLik(loglik, start=2) tidy(a) glance(a) ## Example with a parameter vector x <- rnorm(100) loglik <- function(theta) { dnorm(x, mean=theta[1], sd=theta[2], log=TRUE) } a <- maxLik(loglik, start=c(mu=0, sd=1)) tidy(a) glance(a) } maxLik/man/bread.maxLik.Rd0000644000175100001440000000277014077525067015103 0ustar hornikusers\name{bread.maxLik} \alias{bread} \alias{bread.maxLik} \title{Bread for Sandwich Estimator} \description{ Extracting an estimator for the \sQuote{bread} of the sandwich estimator, see \code{\link[sandwich]{bread}}. } \usage{ \method{bread}{maxLik}( x, ... ) } \arguments{ \item{x}{an object of class \code{maxLik}.} \item{\dots}{further arguments (currently ignored).} } \value{ Matrix, the inverse of the expectation of the second derivative (Hessian matrix) of the log-likelihood function with respect to the parameters. In case of the simple Maximum Likelihood, it is equal to the variance covariance matrix of the parameters, multiplied by the number of observations. } \section{Warnings}{ The \pkg{sandwich} package is required for this function. This method works only if the observaton-specific gradient information was available for the estimation. This is the case if the observation-specific gradient was supplied (see the \code{grad} argument for \code{\link{maxLik}}), or the log-likelihood function returns a vector of observation-specific values. } \author{ Arne Henningsen } \seealso{\code{\link[sandwich]{bread}}, \code{\link{maxLik}}.} \examples{ ## ML estimation of exponential duration model: t <- rexp(100, 2) loglik <- function(theta) log(theta) - theta*t ## Estimate with numeric gradient and hessian a <- maxLik(loglik, start=1 ) # Extract the "bread" library( sandwich ) bread( a ) all.equal( bread( a ), vcov( a ) * nObs( a ) ) } \keyword{methods} maxLik/man/returnCode.Rd0000644000175100001440000000552214600003172014666 0ustar hornikusers\name{returnCode} \alias{returnCode} \alias{returnCode.default} \alias{returnCode.maxLik} \alias{returnMessage} \alias{returnMessage.default} \alias{returnMessage.maxim} \alias{returnMessage.maxLik} \title{Success or failure of the optimization} \description{ These function extract success or failure information from optimization objects. The \code{returnCode} gives a numeric code, and \code{returnMessage} a brief description about the success or failure of the optimization, and point to the problems occured (see documentation for the corresponding functions). } \usage{ returnCode(x, ...) \method{returnCode}{default}(x, ...) \method{returnCode}{maxLik}(x, ...) returnMessage(x, ...) \method{returnMessage}{maxim}(x, ...) \method{returnMessage}{maxLik}(x, ...) } \arguments{ \item{x}{object, usually an optimization result} \item{...}{further arguments for other methods} } \details{ \code{returnMessage} and \code{returnCode} are a generic functions, with methods for various optimisation algorithms. The message should either describe the convergence (stopping condition), or the problem. The known codes and the related messages are: \describe{ \item{1}{ gradient close to zero (normal convergence).} \item{2}{ successive function values within tolerance limit (normal convergence).} \item{3}{ last step could not find higher value (probably not converged). This is related to line search step getting too small, usually because hitting the boundary of the parameter space. It may also be related to attempts to move to a wrong direction because of numerical errors. In some cases it can be helped by changing \code{steptol}.} \item{4}{ iteration limit exceeded.} \item{5}{ Infinite value.} \item{6}{ Infinite gradient.} \item{7}{ Infinite Hessian.} \item{8}{Successive function values withing relative tolerance limit (normal convergence).} \item{9}{ (BFGS) Hessian approximation cannot be improved because of gradient did not change. May be related to numerical approximation problems or wrong analytic gradient. } \item{10}{ Lost patience: the optimizer has hit an inferior value too many times (see \code{\link{maxSGA}} for more information) } \item{100}{ Initial value out of range.} } } \value{ Integer for \code{returnCode}, character for \code{returnMessage}. Different optimization routines may define it in a different way. } \author{Ott Toomet} \seealso{\code{\link{maxNR}}, \code{\link{maxBFGS}}} \examples{ ## maximise the exponential bell f1 <- function(x) exp(-x^2) a <- maxNR(f1, start=2) returnCode(a) # should be success (1 or 2) returnMessage(a) ## Now try to maximise log() function a <- maxNR(log, start=2) returnCode(a) # should give a failure (4) returnMessage(a) } \keyword{methods} \keyword{utilities} maxLik/man/maxValue.Rd0000644000175100001440000000161114077525067014355 0ustar hornikusers\name{maxValue} \alias{maxValue} \alias{maxValue.maxim} \title{Function value at maximum} \description{ Returns the function value at (estimated) maximum. } \usage{ maxValue(x, ...) \method{maxValue}{maxim}(x, \dots) } \arguments{ \item{x}{a statistical model, or a result of maximisation, created by \code{\link{maxLik}}, \code{\link{maxNR}} or another optimizer.} \item{\dots}{further arguments for other methods} } \value{ numeric, the value of the objective function at maximum. In general, it is the last calculated value in case the process did not converge. } \author{Ott Toomet} \seealso{\code{\link{maxLik}}, \code{\link{maxNR}} } \examples{ ## Estimate the exponential distribution parameter: t <- rexp(100, 2) loglik <- function(theta) sum(log(theta) - theta*t) ## Estimate with numeric gradient and numeric Hessian a <- maxNR(loglik, start=1) maxValue(a) } \keyword{methods} maxLik/man/nIter.Rd0000644000175100001440000000206714077525067013662 0ustar hornikusers\name{nIter} \alias{nIter} \alias{nIter.default} \title{Return number of iterations for iterative models} \description{ Returns the number of iterations for iterative models. The default method assumes presence of a component \code{iterations} in \code{x}. } \usage{ nIter(x, \dots) \method{nIter}{default}(x, \dots) } \arguments{ \item{x}{a statistical model, or a result of maximisation, created by \code{\link{maxLik}}, \code{\link{maxNR}} or another optimizer.} \item{\dots}{further arguments for methods} } \details{ This is a generic function. The default method returns the component \code{x$iterations}. } \value{ numeric, number of iterations. Note that \sQuote{iteration} may mean different things for different optimizers. } \author{Ott Toomet} \seealso{\code{\link{maxLik}}, \code{\link{maxNR}} } \examples{ ## Estimate the exponential distribution parameter: t <- rexp(100, 2) loglik <- function(theta) sum(log(theta) - theta*t) ## Estimate with numeric gradient and numeric Hessian a <- maxNR(loglik, start=1) nIter(a) } \keyword{methods} maxLik/man/summary.maxim.Rd0000644000175100001440000000365114077525067015410 0ustar hornikusers\name{summary.maxim} \alias{summary.maxim} \alias{print.summary.maxim} \title{Summary method for maximization} \description{ Summarizes the general maximization results in a way that does not assume the function is log-likelihood. } \usage{ \method{summary}{maxim}( object, hessian=FALSE, unsucc.step=FALSE, ... ) \method{print}{summary.maxim}(x, max.rows=getOption("max.rows", 20), max.cols=getOption("max.cols", 7), ... ) } \arguments{ \item{object}{optimization result, object of class \code{maxim}. See \code{\link{maxNR}}.} \item{hessian}{logical, whether to display Hessian matrix.} \item{unsucc.step}{logical, whether to describe last unsuccesful step if \code{code} == 3} \item{x}{object of class \code{summary.maxim}, summary of maximization result. } \item{max.rows}{maximum number of rows to be printed. This applies to the resulting coefficients (as those are printed as a matrix where the other column is the gradient), and to the Hessian if requested. } \item{max.cols}{maximum number of columns to be printed. Only Hessian output, if requested, uses this argument. } \item{\ldots}{currently not used.} } \value{ Object of class \code{summary.maxim}, intended to be printed with corresponding print method. } \author{Ott Toomet} \seealso{\code{\link{maxNR}}, \code{\link{returnCode}}, \code{\link{returnMessage}}} \examples{ ## minimize a 2D quadratic function: f <- function(b) { x <- b[1]; y <- b[2]; val <- -(x - 2)^2 - (y - 3)^2 # concave parabola attr(val, "gradient") <- c(-2*x + 4, -2*y + 6) attr(val, "hessian") <- matrix(c(-2, 0, 0, -2), 2, 2) val } ## Note that NR finds the minimum of a quadratic function with a single ## iteration. Use c(0,0) as initial value. res <- maxNR( f, start = c(0,0) ) summary(res) summary(res, hessian=TRUE) } \keyword{methods} \keyword{print} maxLik/man/hessian.Rd0000644000175100001440000000336714077525067014237 0ustar hornikusers\name{hessian} \alias{hessian} \alias{hessian.default} \title{Hessian matrix} \description{ This function extracts the Hessian of the objective function at optimum. The Hessian information should be supplied by the underlying optimization algorithm, possibly by an approximation. } \usage{ hessian(x, \dots) \method{hessian}{default}(x, \dots) } \arguments{ \item{x}{an optimization result of class \sQuote{maxim} or \sQuote{maxLik}} \item{\dots}{other arguments for methods} } \value{ A numeric matrix, the Hessian of the model at the estimated parameter values. If the maximum is flat, the Hessian is singular. In that case you may want to invert only the non-singular part of the matrix. You may also want to fix certain parameters (see \code{\link{activePar}}). } \author{Ott Toomet} \seealso{\code{\link{maxLik}}, \code{\link{activePar}}, \code{\link{condiNumber}}} \examples{ # log-likelihood for normal density # a[1] - mean # a[2] - standard deviation ll <- function(a) sum(-log(a[2]) - (x - a[1])^2/(2*a[2]^2)) x <- rnorm(100) # sample from standard normal ml <- maxLik(ll, start=c(1,1)) # ignore eventual warnings "NaNs produced in: log(x)" summary(ml) # result should be close to c(0,1) hessian(ml) # How the Hessian looks like sqrt(-solve(hessian(ml))) # Note: standard deviations are on the diagonal # # Now run the same example while fixing a[2] = 1 mlf <- maxLik(ll, start=c(1,1), activePar=c(TRUE, FALSE)) summary(mlf) # first parameter close to 0, the second exactly 1.0 hessian(mlf) # Note that now NA-s are in place of passive # parameters. # now invert only the free parameter part of the Hessian sqrt(-solve(hessian(mlf)[activePar(mlf), activePar(mlf)])) # gives the standard deviation for the mean } \keyword{methods} \keyword{optimize} maxLik/man/maxLik-methods.Rd0000644000175100001440000000326014077525067015463 0ustar hornikusers\name{AIC.maxLik} \alias{AIC.maxLik} \alias{coef.maxim} \alias{coef.maxLik} \alias{stdEr.maxLik} \title{Methods for the various standard functions} \description{ These are methods for the maxLik related objects. See also the documentation for the corresponding generic functions } \usage{ \method{AIC}{maxLik}(object, \dots, k=2) \method{coef}{maxim}(object, \dots) \method{coef}{maxLik}(object, \dots) \method{stdEr}{maxLik}(x, eigentol=1e-12, \dots) } \arguments{ \item{object}{a \sQuote{maxLik} object (\code{coef} can also handle \sQuote{maxim} objects)} \item{k}{numeric, the penalty per parameter to be used; the default \sQuote{k = 2} is the classical AIC.} \item{x}{a \sQuote{maxLik} object} \item{eigentol}{ The standard errors are only calculated if the ratio of the smallest and largest eigenvalue of the Hessian matrix is less than \dQuote{eigentol}. Otherwise the Hessian is treated as singular. } \item{\dots}{other arguments for methods} } \details{ \describe{ \item{AIC}{calculates Akaike's Information Criterion (and other information criteria).} \item{coef}{extracts the estimated parameters (model's coefficients).} \item{stdEr}{extracts standard errors (using the Hessian matrix). } } } \examples{ ## estimate mean and variance of normal random vector set.seed(123) x <- rnorm(50, 1, 2) ## log likelihood function. ## Note: 'param' is a vector llf <- function( param ) { mu <- param[ 1 ] sigma <- param[ 2 ] return(sum(dnorm(x, mean=mu, sd=sigma, log=TRUE))) } ## Estimate it. Take standard normal as start values ml <- maxLik(llf, start = c(mu=0, sigma=1) ) coef(ml) stdEr(ml) AIC(ml) } \keyword{methods} maxLik/DESCRIPTION0000644000175100001440000000247414600036200013221 0ustar hornikusersPackage: maxLik Version: 1.5-2.1 Title: Maximum Likelihood Estimation and Related Tools Authors@R: c(person("Ott", "Toomet", role=c("aut", "cre"), email="otoomet@gmail.com"), person("Arne", "Henningsen", role=c("aut"), email="arne.henningsen@gmail.com"), person("Spencer", "Graves", role=c("ctb")), person("Yves", "Croissant", role=c("ctb")), person("David", "Hugh-Jones", role=c("ctb")), person("Luca", "Scrucca", role=c("ctb")) ) Depends: R (>= 2.4.0), miscTools (>= 0.6-8), methods Imports: sandwich, generics Suggests: MASS, clue, dlm, plot3D, tibble, tinytest Description: Functions for Maximum Likelihood (ML) estimation, non-linear optimization, and related tools. It includes a unified way to call different optimizers, and classes and methods to handle the results from the Maximum Likelihood viewpoint. It also includes a number of convenience tools for testing and developing your own models. License: GPL (>= 2) ByteCompile: yes NeedsCompilation: no Packaged: 2024-03-24 11:40:11 UTC; hornik Author: Ott Toomet [aut, cre], Arne Henningsen [aut], Spencer Graves [ctb], Yves Croissant [ctb], David Hugh-Jones [ctb], Luca Scrucca [ctb] Maintainer: Ott Toomet Repository: CRAN Date/Publication: 2024-03-24 14:45:20 UTC maxLik/build/0000755000175100001440000000000014600010432012602 5ustar hornikusersmaxLik/build/vignette.rds0000644000175100001440000000051014600010432015135 0ustar hornikusers‹•R]KÃ0ÍÚ:Ý@ìÕ<*Òýß„1D}ð56i{Y›Œ&¥úæך¸[gT¦>ä&÷䜜Ë!÷CBH@¢0 AháØ–¾]#׈ ì~ÒT*6*.Ù#”u0äJñÉl¶¯Jr¦ $qV1B§¸„ù'Ö¨Ö 3‡ˆûf‡çΌ׉%Oh“3CASt¦+gäßžRð4&ôiHh­Y&¨JÜòPrtõí1*ìØ%szÚ€Éérîÿ±àé‚X±ü î›í­MI»ë2GÎŽŸ¸EÆï6K;òÃþË}ØÒÃ×7$+…ÆË>‚Ñ ÑîÀ|4áõt†Ç^7ßæT,„äÛ­ ñÔ¨Êö¾Ñ Rͤ3ÛvßöÙ–¶m_¾N”Lwuà3Ã&ieõ¶{}!]¡âømaxLik/build/partial.rdb0000644000175100001440000000007514600010357014737 0ustar hornikusers‹‹àb```b`afb`b1…À€… H02°0piÖ¼ÄÜÔb C"Éð§%!ˆ7maxLik/tests/0000755000175100001440000000000014077525067012674 5ustar hornikusersmaxLik/tests/tinytest.R0000644000175100001440000000015614077525067014704 0ustar hornikusers### Run tinytest tests if(requireNamespace("tinytest", quietly=TRUE)) { tinytest::test_package("maxLik") } maxLik/tests/numericGradient.Rout.save0000644000175100001440000000330314077525067017623 0ustar hornikusers R version 3.0.1 (2013-05-16) -- "Good Sport" Copyright (C) 2013 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > > ### test numeric methods, in particular handling of unequal > ### function lengths > library(maxLik) Loading required package: miscTools Please cite the 'maxLik' package as: Henningsen, Arne and Toomet, Ott (2011). maxLik: A package for maximum likelihood estimation in R. Computational Statistics 26(3), 443-458. DOI 10.1007/s00180-010-0217-1. If you have questions, suggestions, or comments regarding the 'maxLik' package, please use a forum or 'tracker' at maxLik's R-Forge site: https://r-forge.r-project.org/projects/maxlik/ > > f <- function(x) { + if(x[1] <= 0) + return(NA) + # support of x[1] is (0, Inf) + return(c(log(x[1]),x[2])) + } > > ng <- numericGradient(f, c(0.01,1), eps=0.1) Warning message: In numericGradient(f, c(0.01, 1), eps = 0.1) : Function value at -0.04 1.00 = NA (length 1) does not conform with the length at original value 2 Component 1 set to NA > > nh <- try(numericHessian(f, t0=c(0.01,1), eps=0.1)) There were 13 warnings (use warnings() to see them) > > proc.time() user system elapsed 0.188 0.016 0.192 maxLik/tests/BFGSR.R0000644000175100001440000000357714077525067013676 0ustar hornikusers### BFGSR-related tests ## 1. Test maximization algorithm for convex regions ## ## Optimize quadratic form t(D) %*% W %*% D with p.d. weight matrix ## (ie unbounded problems). ## All solutions should go to large values with a message about successful convergence set.seed(0) options(digits=4) quadForm <- function(D) { C <- seq(1, N) return( - t(D - C) %*% W %*% ( D - C) ) } N <- 3 # 3-dimensional case ## a) test quadratic function t(D) %*% D library(maxLik) W <- diag(N) D <- rep(1/N, N) res <- maxBFGSR(quadForm, start=D) all.equal(coef(res), 1:3, tolerance=1e-4) all.equal(gradient(res), rep(0,3), tolerance=1e-3) all.equal(nIter(res) < 100, TRUE) all.equal(returnCode(res) < 4, TRUE) ## Next, optimize hat function in non-concave region. Does not work well. hat <- function(param) { ## Hat function. Hessian negative definite if sqrt(x^2 + y^2) < 0.5 x <- param[1] y <- param[2] exp(-(x-2)^2 - (y-2)^2) } hatNC <- maxBFGSR(hat, start=c(1,1), tol=0, reltol=0) all.equal(coef(hatNC), rep(2,2), tolerance=1e-4) all.equal(gradient(hatNC), rep(0,2), tolerance=1e-3) all.equal(nIter(hatNC) < 100, TRUE) all.equal(returnCode(hatNC) < 4, TRUE) ## Test BFGSR with fixed parameters and equality constraints ## Optimize 3D hat with one parameter fixed (== 2D hat). ## Add an equality constraint on that hat3 <- function(param) { ## Hat function. Hessian negative definite if sqrt((x-2)^2 + (y-2)^2) < 0.5 x <- param[1] y <- param[2] z <- param[3] exp(-(x-2)^2-(y-2)^2-(z-2)^2) } sv <- c(x=1,y=1,z=1) ## constraints: x + y + z = 8 A <- matrix(c(1,1,1), 1, 3) B <- -8 constraints <- list(eqA=A, eqB=B) hat3CF <- maxBFGSR(hat3, start=sv, constraints=constraints, fixed=3) all.equal(coef(hat3CF), c(x=3.5, y=3.5, z=1), tolerance=1e-4) all.equal(nIter(hat3CF) < 100, TRUE) all.equal(returnCode(hat3CF) < 4, TRUE) all.equal(sum(coef(hat3CF)), 8, tolerance=1e-4) maxLik/tests/numericGradient.R0000644000175100001440000000052414077525067016140 0ustar hornikusers ### test numeric methods, in particular handling of unequal ### function lengths library(maxLik) f <- function(x) { if(x[1] <= 0) return(NA) # support of x[1] is (0, Inf) return(c(log(x[1]),x[2])) } ng <- numericGradient(f, c(0.01,1), eps=0.1) nh <- try(numericHessian(f, t0=c(0.01,1), eps=0.1)) maxLik/tests/constraints.R0000644000175100001440000003177714077525067015405 0ustar hornikusers### Various tests for constrained optimization ### options(digits=4) ### -------------------- Normal mixture likelihood, no additional parameters -------------------- ### param = c(rho, mean1, mean2) ### ### X = N(mean1) w/Pr rho ### X = N(mean2) w/Pr 1-rho ### logLikMix <- function(param) { ## a single likelihood value rho <- param[1] if(rho < 0 || rho > 1) return(NA) mu1 <- param[2] mu2 <- param[3] ll <- log(rho*dnorm(x - mu1) + (1 - rho)*dnorm(x - mu2)) ll <- sum(ll) ll } gradLikMix <- function(param) { rho <- param[1] if(rho < 0 || rho > 1) return(NA) mu1 <- param[2] mu2 <- param[3] f1 <- dnorm(x - mu1) f2 <- dnorm(x - mu2) L <- rho*f1 + (1 - rho)*f2 g <- matrix(0, length(x), 3) g[,1] <- (f1 - f2)/L g[,2] <- rho*(x - mu1)*f1/L g[,3] <- (1 - rho)*(x - mu2)*f2/L colSums(g) g } hessLikMix <- function(param) { rho <- param[1] if(rho < 0 || rho > 1) return(NA) mu1 <- param[2] mu2 <- param[3] f1 <- dnorm(x - mu1) f2 <- dnorm(x - mu2) L <- rho*f1 + (1 - rho)*f2 dldrho <- (f1 - f2)/L dldmu1 <- rho*(x - mu1)*f1/L dldmu2 <- (1 - rho)*(x - mu2)*f2/L h <- matrix(0, 3, 3) h[1,1] <- -sum(dldrho*(f1 - f2)/L) h[2,1] <- h[1,2] <- sum((x - mu1)*f1/L - dldmu1*dldrho) h[3,1] <- h[1,3] <- sum(-(x - mu2)*f2/L - dldmu2*dldrho) h[2,2] <- sum(rho*(-f1 + (x - mu1)^2*f1)/L - dldmu1^2) h[2,3] <- h[3,2] <- -sum(dldmu1*dldmu2) h[3,3] <- sum((1 - rho)*(-f2 + (x - mu2)^2*f2)/L - dldmu2^2) h } logLikMixInd <- function(param) { ## individual obs-wise likelihood values rho <- param[1] if(rho < 0 || rho > 1) return(NA) mu1 <- param[2] mu2 <- param[3] ll <- log(rho*dnorm(x - mu1) + (1 - rho)*dnorm(x - mu2)) ll <- sum(ll) ll } gradLikMixInd <- function(param) { rho <- param[1] if(rho < 0 || rho > 1) return(NA) mu1 <- param[2] mu2 <- param[3] f1 <- dnorm(x - mu1) f2 <- dnorm(x - mu2) L <- rho*f1 + (1 - rho)*f2 g <- matrix(0, length(x), 3) g[,1] <- (f1 - f2)/L g[,2] <- rho*(x - mu1)*f1/L g[,3] <- (1 - rho)*(x - mu2)*f2/L colSums(g) g } ### -------------------------- library(maxLik) ## mixed normal set.seed(1) N <- 100 x <- c(rnorm(N, mean=-1), rnorm(N, mean=1)) ## ---------- INEQUALITY CONSTRAINTS ----------- ## First test inequality constraints, numeric/analytical gradients ## Inequality constraints: rho < 0.5, mu1 < -0.1, mu2 > 0.1 A <- matrix(c(-1, 0, 0, 0, -1, 0, 0, 0, 1), 3, 3, byrow=TRUE) B <- c(0.5, 0.1, 0.1) start <- c(0.4, 0, 0.9) ineqCon <- list(ineqA=A, ineqB=B) ## analytic gradient cat("Inequality constraints, analytic gradient & Hessian\n") a <- maxLik(logLikMix, grad=gradLikMix, hess=hessLikMix, start=start, constraints=ineqCon) all.equal(coef(a), c(0.5, -1, 1), tolerance=0.1) # TRUE: relative tolerance 0.045 ## No analytic gradient cat("Inequality constraints, numeric gradient & Hessian\n") a <- maxLik(logLikMix, start=start, constraints=ineqCon) all.equal(coef(a), c(0.5, -1, 1), tolerance=0.1) # should be close to the true values, but N is too small ## NR method with inequality constraints try( maxLik(logLikMix, start = start, constraints = ineqCon, method = "NR" ) ) # Error in maxRoutine(fn = logLik, grad = grad, hess = hess, start = start, : # Inequality constraints not implemented for maxNR ## BHHH method with inequality constraints try( maxLik(logLikMix, start = start, constraints = ineqCon, method = "BHHH" ) ) # Error in maxNR(fn = fn, grad = grad, hess = hess, start = start, finalHessian = finalHessian, : # Inequality constraints not implemented for maxNR ## ---------- EQUALITY CONSTRAINTS ----------------- cat("Test for equality constraints mu1 + 2*mu2 = 0\n") A <- matrix(c(0, 1, 2), 1, 3) B <- 0 eqCon <- list( eqA = A, eqB = B ) ## default, numeric gradient mlEq <- maxLik(logLikMix, start = start, constraints = eqCon, tol=0) # only rely on gradient stopping condition all.equal(coef(mlEq), c(0.33, -1.45, 0.72), tolerance=0.01, scale=1) ## default, individual likelihood mlEqInd <- maxLik(logLikMixInd, start = start, constraints = eqCon, tol=0) # only rely on gradient stopping condition all.equal(coef(mlEq), coef(mlEqInd), tol=1e-4) ## default, analytic gradient mlEqG <- maxLik(logLikMix, grad=gradLikMix, start = start, constraints = eqCon ) all.equal(coef(mlEq), coef(mlEqG), tolerance=1e-4) ## default, analytic gradient, individual likelihood mlEqGInd <- maxLik(logLikMixInd, grad=gradLikMixInd, start = start, constraints = eqCon ) all.equal(coef(mlEqG), coef(mlEqGInd), tolerance=1e-4) ## default, analytic Hessian mlEqH <- maxLik(logLikMix, grad=gradLikMix, hess=hessLikMix, start=start, constraints=eqCon) all.equal(coef(mlEqG), coef(mlEqH), tolerance=1e-4) ## BFGS, numeric gradient eqBFGS <- maxLik(logLikMix, start=start, method="bfgs", constraints=eqCon, SUMTRho0=1) all.equal(coef(eqBFGS), c(0.33, -1.45, 0.72), tolerance=0.01, scale=1) ## BHHH, analytic gradient (numeric does not converge?) eqBHHH <- maxLik(logLikMix, gradLikMix, start=start, method="bhhh", constraints=eqCon, SUMTRho0=1) all.equal(coef(eqBFGS), coef(eqBHHH), tol=1e-4) ### ------------------ Now test additional parameters for the function ---- ### similar mixture as above but rho is give as an extra parameter ### logLikMix2 <- function(param, rho) { mu1 <- param[1] mu2 <- param[2] ll <- log(rho*dnorm(x - mu1) + (1 - rho)*dnorm(x - mu2)) # ll <- sum(ll) ll } gradLikMix2 <- function(param, rho) { mu1 <- param[1] mu2 <- param[2] f1 <- dnorm(x - mu1) f2 <- dnorm(x - mu2) L <- rho*f1 + (1 - rho)*f2 g <- matrix(0, length(x), 2) g[,1] <- rho*(x - mu1)*f1/L g[,2] <- (1 - rho)*(x - mu2)*f2/L # colSums(g) g } hessLikMix2 <- function(param, rho) { mu1 <- param[1] mu2 <- param[2] f1 <- dnorm(x - mu1) f2 <- dnorm(x - mu2) L <- rho*f1 + (1 - rho)*f2 dldrho <- (f1 - f2)/L dldmu1 <- rho*(x - mu1)*f1/L dldmu2 <- (1 - rho)*(x - mu2)*f2/L h <- matrix(0, 2, 2) h[1,1] <- sum(rho*(-f1 + (x - mu1)^2*f1)/L - dldmu1^2) h[1,2] <- h[2,1] <- -sum(dldmu1*dldmu2) h[2,2] <- sum((1 - rho)*(-f2 + (x - mu2)^2*f2)/L - dldmu2^2) h } ## ---------- Equality constraints & extra parameters ------------ A <- matrix(c(1, 2), 1, 2) B <- 0 start <- c(0, 1) ## We run only a few iterations as we want to test correct handling ## of parameters, not the final value. We also avoid any ## debug information iterlim <- 3 cat("Test for extra parameters for the function\n") ## NR, numeric gradient cat("Newton-Raphson, numeric gradient\n") a <- maxLik(logLikMix2, start=start, method="nr", constraints=list(eqA=A, eqB=B), iterlim=iterlim, SUMTRho0=1, rho=0.5) all.equal(coef(a), c(-1.36, 0.68), tol=0.01) ## NR, numeric hessian a <- maxLik(logLikMix2, gradLikMix2, start=start, method="nr", constraints=list(eqA=A, eqB=B), iterlim=iterlim, SUMTRho0=1, rho=0.5) all.equal(coef(a), c(-1.36, 0.68), tol=0.01) ## nr, analytic hessian a <- maxLik(logLikMix2, gradLikMix2, hessLikMix2, start=start, method="nr", constraints=list(eqA=A, eqB=B), iterlim=iterlim, SUMTRho0=1, rho=0.5) all.equal(coef(a), c(-1.36, 0.68), tol=0.01) ## BHHH cat("BHHH, analytic gradient, numeric Hessian\n") a <- maxLik(logLikMix2, gradLikMix2, start=start, method="bhhh", constraints=list(eqA=A, eqB=B), iterlim=iterlim, SUMTRho0=1, rho=0.5) all.equal(coef(a), c(-1.36, 0.68), tol=0.01) ## BHHH, analytic a <- maxLik(logLikMix2, gradLikMix2, start=start, method="bhhh", constraints=list(eqA=A, eqB=B), iterlim=iterlim, SUMTRho0=1, rho=0.5) all.equal(coef(a), c(-1.36, 0.68), tol=0.01) ## bfgs, no analytic gradient a <- maxLik(logLikMix2, start=start, method="bfgs", constraints=list(eqA=A, eqB=B), iterlim=iterlim, SUMTRho0=1, rho=0.5) all.equal(coef(a), c(-1.36, 0.68), tol=0.01) ## bfgs, analytic gradient a <- maxLik(logLikMix2, start=start, method="bfgs", constraints=list(eqA=A, eqB=B), iterlim=iterlim, SUMTRho0=1, rho=0.5) all.equal(coef(a), c(-1.36, 0.68), tol=0.01) ## SANN, analytic gradient a <- maxLik(logLikMix2, gradLikMix2, start=start, method="SANN", constraints=list(eqA=A, eqB=B), iterlim=iterlim, SUMTRho0=1, rho=0.5) all.equal(coef(a), c(-1.36, 0.68), tol=0.01) ## NM, numeric a <- maxLik(logLikMix2, start=start, method="nm", constraints=list(eqA=A, eqB=B), iterlim=100, # use more iters for NM SUMTRho0=1, rho=0.5) all.equal(coef(a), c(-1.36, 0.68), tol=0.01) ## -------------------- NR, multiple constraints -------------------- f <- function(theta) exp(-theta %*% theta) # test quadratic function ## constraints: ## theta1 + theta3 = 1 ## theta1 + theta2 = 1 A <- matrix(c(1, 0, 1, 1, 1, 0), 2, 3, byrow=TRUE) B <- c(-1, -1) cat("NR, multiple constraints\n") a <- maxNR(f, start=c(1,1.1,2), constraints=list(eqA=A, eqB=B)) theta <- coef(a) all.equal(c(theta[1] + theta[3], theta[1] + theta[2]), c(1,1), tolerance=1e-4) ## Error handling for equality constraints A <- matrix(c(1, 1), 1, 2) B <- -1 cat("Error handling: ncol(A) != lengths(start)\n") try(a <- maxNR(f, start=c(1, 2, 3), constraints=list(eqA=A, eqB=B))) # ncol(A) != length(start) A <- matrix(c(1, 1), 1, 2) B <- c(-1, 2) try(a <- maxNR(f, start=c(1, 2), constraints=list(eqA=A, eqB=B))) # nrow(A) != nrow(B) ## ## -------------- inequality constraints & extra paramters ---------------- ## ## mu1 < 1 ## mu2 > -1 A <- matrix(c(-1, 0, 0, 1), 2,2, byrow=TRUE) B <- c(1,1) start <- c(0.8, 0.9) ## inEGrad <- maxLik(logLikMix2, gradLikMix2, start=start, method="bfgs", constraints=list(ineqA=A, ineqB=B), rho=0.5) all.equal(coef(inEGrad), c(-0.98, 1.12), tol=0.01) ## inE <- maxLik(logLikMix2, start=start, method="bfgs", constraints=list(ineqA=A, ineqB=B), rho=0.5) all.equal(coef(inEGrad), coef(inE), tol=1e-4) ## inENM <- maxLik(logLikMix2, gradLikMix2, start=start, method="nm", constraints=list(ineqA=A, ineqB=B), rho=0.5) all.equal(coef(inEGrad), coef(inENM), tol=1e-3) # this is further off than gradient-based methods ## ---------- test vector B for inequality -------------- ## mu1 < 1 ## mu2 > 2 A <- matrix(c(-1, 0, 0, 1), 2,2, byrow=TRUE) B1 <- c(1,-2) a <- maxLik(logLikMix2, gradLikMix2, start=c(0.5, 2.5), method="bfgs", constraints=list(ineqA=A, ineqB=B1), rho=0.5) theta <- coef(a) all.equal(c(theta[1] < 1, theta[2] > 2), c(TRUE, TRUE)) # components should be larger than # (-1, -2) ## ## ---- ERROR HANDLING: insert wrong A and B forms ---- ## A2 <- c(-1, 0, 0, 1) try(maxLik(logLikMix2, gradLikMix2, start=start, method="bfgs", constraints=list(ineqA=A2, ineqB=B), print.level=1, rho=0.5) ) # should explain that matrix needed A2 <- matrix(c(-1, 0, 0, 1), 1, 4) try(maxLik(logLikMix2, gradLikMix2, start=start, method="bfgs", constraints=list(ineqA=A2, ineqB=B), print.level=1, rho=0.5) ) # should explain that wrong matrix # dimension B2 <- 1:3 try(maxLik(logLikMix2, gradLikMix2, start=start, method="bfgs", constraints=list(ineqA=A, ineqB=B2), print.level=1, rho=0.5) ) # A & B do not match cat("A & B do not match\n") B2 <- matrix(1,2,2) try(maxLik(logLikMix2, gradLikMix2, start=start, method="bfgs", constraints=list(ineqA=A, ineqB=B2), print.level=1, rho=0.5) ) # B must be a vector ## ---- fixed parameters with constrained optimization ----- ## Thanks to Bob Loos for finding this error. ## Optimize 3D hat with one parameter fixed (== 2D hat). ## Add an equality constraint on that cat("Constraints + fixed parameters\n") hat3 <- function(param) { ## Hat function. Hessian negative definite if sqrt(x^2 + y^2) < 0.5 x <- param[1] y <- param[2] z <- param[3] exp(-x^2-y^2-z^2) } sv <- c(1,1,1) ## constraints: x + y + z >= 2.5 A <- matrix(c(x=1,y=1,z=1), 1, 3) B <- -2.5 constraints <- list(ineqA=A, ineqB=B) res <- maxBFGS(hat3, start=sv, constraints=constraints, fixed=3, iterlim=3) all.equal(coef(res), c(0.770, 0.770, 1), tol=0.01) maxLik/tests/finalHessian.Rout.save0000644000175100001440000002665314077525067017124 0ustar hornikusers R version 4.0.3 (2020-10-10) -- "Bunny-Wunnies Freak Out" Copyright (C) 2020 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > ### Test the 'finalHessian' argument of optimization routines > > library(maxLik) Loading required package: miscTools Please cite the 'maxLik' package as: Henningsen, Arne and Toomet, Ott (2011). maxLik: A package for maximum likelihood estimation in R. Computational Statistics 26(3), 443-458. DOI 10.1007/s00180-010-0217-1. If you have questions, suggestions, or comments regarding the 'maxLik' package, please use a forum or 'tracker' at maxLik's R-Forge site: https://r-forge.r-project.org/projects/maxlik/ > set.seed( 4 ) > > # log-likelihood function, gradient, and Hessian for 1-parameter case (exponential distribution) > ll1i <- function(theta) { + if(!all(theta > 0)) + return(NA) + log(theta) - theta*t + } > ll1 <- function(theta) sum( log(theta) - theta*t ) > gr1i <- function(theta) 1/theta - t > gr1 <- function(theta) sum( 1/theta - t ) > hs1 <- function(theta) -100/theta^2 > t <- rexp( 100, 2 ) > > ## the same functions for 2-variable case (normal distribution) > ll2 <- function( param ) { + ## log likelihood function + mu <- param[ 1 ] + sigma <- param[ 2 ] + if(!(sigma > 0)) + return(NA) + # to avoid warnings in the output + N <- length( x ) + llValue <- -0.5 * N * log( 2 * pi ) - N * log( sigma ) - + 0.5 * sum( ( x - mu )^2 / sigma^2 ) + return( llValue ) + } > > ## log likelihood function (individual observations) > ll2i <- function( param ) { + mu <- param[ 1 ] + sigma <- param[ 2 ] + if(!(sigma > 0)) + return(NA) + # to avoid warnings in the output + llValues <- -0.5 * log( 2 * pi ) - log( sigma ) - + 0.5 * ( x - mu )^2 / sigma^2 + return( llValues ) + } > > gr2 <- function( param ) { + ## function to calculate analytical gradients + mu <- param[ 1 ] + sigma <- param[ 2 ] + N <- length( x ) + llGrad <- c( sum( ( x - mu ) / sigma^2 ), + - N / sigma + sum( ( x - mu )^2 / sigma^3 ) ) + return( llGrad ) + } > > ## function to calculate analytical gradients (individual observations) > gr2i <- function( param ) { + mu <- param[ 1 ] + sigma <- param[ 2 ] + llGrads <- cbind( ( x - mu ) / sigma^2, + - 1 / sigma + ( x - mu )^2 / sigma^3 ) + return( llGrads ) + } > > ## function to calculate analytical Hessians > hs2 <- function( param ) { + mu <- param[ 1 ] + sigma <- param[ 2 ] + N <- length( x ) + llHess <- matrix( c( + N * ( - 1 / sigma^2 ), + sum( - 2 * ( x - mu ) / sigma^3 ), + sum( - 2 * ( x - mu ) / sigma^3 ), + N / sigma^2 + sum( - 3 * ( x - mu )^2 / sigma^4 ) ), + nrow = 2, ncol = 2 ) + return( llHess ) + } > x <- rnorm(100, 1, 2) > > > ## NR > # Estimate with only function values (single parameter) > a <- maxLik( ll1i, gr1i, start = 1, method = "NR" ) > summary(a ) -------------------------------------------- Maximum Likelihood estimation Newton-Raphson maximisation, 5 iterations Return code 1: gradient close to zero (gradtol) Log-Likelihood: -25.05386 1 free parameters Estimates: Estimate Std. error t value Pr(> t) [1,] 2.1159 0.2116 10 <2e-16 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 -------------------------------------------- > b <- maxLik( ll1i, gr1i, start = 1, method = "NR", finalHessian="bhhh") > # should issue a warning as BHHH not possible > summary(b ) -------------------------------------------- Maximum Likelihood estimation Newton-Raphson maximisation, 5 iterations Return code 1: gradient close to zero (gradtol) Log-Likelihood: -25.05386 1 free parameters Estimates: Estimate Std. error t value Pr(> t) [1,] 2.1159 0.2145 9.863 <2e-16 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 -------------------------------------------- > c <- maxLik( ll1i, gr1i, start = 1, method = "NR", finalHessian=FALSE) > summary(c) -------------------------------------------- Maximum Likelihood estimation Newton-Raphson maximisation, 5 iterations Return code 1: gradient close to zero (gradtol) Log-Likelihood: -25.05386 1 free parameters Estimates: Estimate t value Pr(> t) [1,] 2.116 NA NA -------------------------------------------- > ## (vector parameter) > a <- maxLik( ll2, gr2, start = c(0,1), method = "NR" ) > summary(a ) -------------------------------------------- Maximum Likelihood estimation Newton-Raphson maximisation, 7 iterations Return code 1: gradient close to zero (gradtol) Log-Likelihood: -212.7524 2 free parameters Estimates: Estimate Std. error t value Pr(> t) [1,] 0.8532 0.2031 4.201 2.66e-05 *** [2,] 2.0311 0.1436 14.142 < 2e-16 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 -------------------------------------------- > b <- maxLik( ll2, gr2, start = c(0,1), method = "NR", finalHessian="bhhh") Warning message: In maxNRCompute(fn = function (theta, fnOrig, gradOrig = NULL, hessOrig = NULL, : For computing the final Hessian by 'BHHH' method, the log-likelihood or gradient must be supplied by observations > # should issue a warning as BHHH not possible > summary(b ) -------------------------------------------- Maximum Likelihood estimation Newton-Raphson maximisation, 7 iterations Return code 1: gradient close to zero (gradtol) Log-Likelihood: -212.7524 2 free parameters Estimates: Estimate t value Pr(> t) [1,] 0.8532 NA NA [2,] 2.0311 NA NA -------------------------------------------- > c <- maxLik( ll2, gr2, start = c(0,1), method = "NR", finalHessian=FALSE) > summary(c) -------------------------------------------- Maximum Likelihood estimation Newton-Raphson maximisation, 7 iterations Return code 1: gradient close to zero (gradtol) Log-Likelihood: -212.7524 2 free parameters Estimates: Estimate t value Pr(> t) [1,] 0.8532 NA NA [2,] 2.0311 NA NA -------------------------------------------- > > ## BFGSR > # Estimate with only function values (single parameter) > a <- maxLik( ll1i, gr1i, start = 1, method = "BFGSR" ) > summary(a ) -------------------------------------------- Maximum Likelihood estimation BFGSR maximization, 26 iterations Return code 2: successive function values within tolerance limit (tol) Log-Likelihood: -25.05386 1 free parameters Estimates: Estimate Std. error t value Pr(> t) [1,] 2.1159 0.2116 10 <2e-16 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 -------------------------------------------- > b <- maxLik( ll1i, gr1i, start = 1, method = "BFGSR", finalHessian="bhhh") > # should issue a warning as BHHH not possible > summary(b ) -------------------------------------------- Maximum Likelihood estimation BFGSR maximization, 26 iterations Return code 2: successive function values within tolerance limit (tol) Log-Likelihood: -25.05386 1 free parameters Estimates: Estimate Std. error t value Pr(> t) [1,] 2.1159 0.2145 9.863 <2e-16 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 -------------------------------------------- > c <- maxLik( ll1i, gr1i, start = 1, method = "BFGSR", finalHessian=FALSE) > summary(c) -------------------------------------------- Maximum Likelihood estimation BFGSR maximization, 26 iterations Return code 2: successive function values within tolerance limit (tol) Log-Likelihood: -25.05386 1 free parameters Estimates: Estimate t value Pr(> t) [1,] 2.116 NA NA -------------------------------------------- > # Estimate with only function values (vector parameter) > a <- maxLik( ll2, gr2, start = c(0,1), method = "BFGSR" ) > summary(a ) -------------------------------------------- Maximum Likelihood estimation BFGSR maximization, 22 iterations Return code 2: successive function values within tolerance limit (tol) Log-Likelihood: -212.7524 2 free parameters Estimates: Estimate Std. error t value Pr(> t) [1,] 0.8528 0.2031 4.199 2.68e-05 *** [2,] 2.0309 0.1436 14.144 < 2e-16 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 -------------------------------------------- > b <- maxLik( ll2, gr2, start = c(0,1), method = "BFGSR", finalHessian="bhhh") Warning message: In maxBFGSRCompute(fn = function (theta, fnOrig, gradOrig = NULL, : For computing the final Hessian by 'BHHH' method, the log-likelihood or gradient must be supplied by observations > # should issue a warning as BHHH not possible > summary(b ) -------------------------------------------- Maximum Likelihood estimation BFGSR maximization, 22 iterations Return code 2: successive function values within tolerance limit (tol) Log-Likelihood: -212.7524 2 free parameters Estimates: Estimate t value Pr(> t) [1,] 0.8528 NA NA [2,] 2.0309 NA NA -------------------------------------------- > c <- maxLik( ll2, gr2, start = c(0,1), method = "BFGSR", finalHessian=FALSE) > summary(c) -------------------------------------------- Maximum Likelihood estimation BFGSR maximization, 22 iterations Return code 2: successive function values within tolerance limit (tol) Log-Likelihood: -212.7524 2 free parameters Estimates: Estimate t value Pr(> t) [1,] 0.8528 NA NA [2,] 2.0309 NA NA -------------------------------------------- > > > ### Nelder-Mead > ## Individual observations only > b <- maxLik( ll2i, start = c(0,1), method = "NM", finalHessian="bhhh") > summary(b) -------------------------------------------- Maximum Likelihood estimation Nelder-Mead maximization, 63 iterations Return code 0: successful convergence Log-Likelihood: -212.7524 2 free parameters Estimates: Estimate Std. error t value Pr(> t) [1,] 0.8530 0.2032 4.199 2.69e-05 *** [2,] 2.0312 0.1670 12.163 < 2e-16 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 -------------------------------------------- > ## Individual observations, summed gradient > b <- maxLik( ll2i, gr2, start = c(0,1), method = "NM", finalHessian="bhhh") Warning message: In maxOptim(fn = fn, grad = grad, hess = hess, start = start, method = "Nelder-Mead", : For computing the final Hessian by 'BHHH' method, the log-likelihood or gradient must be supplied by observations > # should issue a warning as BHHH not selected > # (yes, could do it based on individual likelihood and numeric gradient) > summary(b) -------------------------------------------- Maximum Likelihood estimation Nelder-Mead maximization, 63 iterations Return code 0: successful convergence Log-Likelihood: -212.7524 2 free parameters Estimates: Estimate t value Pr(> t) [1,] 0.853 NA NA [2,] 2.031 NA NA -------------------------------------------- > > proc.time() user system elapsed 0.436 0.020 0.447 maxLik/tests/BFGSR.Rout.save0000644000175100001440000000631414077525067015353 0ustar hornikusers R version 3.6.0 (2019-04-26) -- "Planting of a Tree" Copyright (C) 2019 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > ### BFGSR-related tests > > ## 1. Test maximization algorithm for convex regions > ## > ## Optimize quadratic form t(D) %*% W %*% D with p.d. weight matrix > ## (ie unbounded problems). > ## All solutions should go to large values with a message about successful convergence > set.seed(0) > options(digits=4) > quadForm <- function(D) { + C <- seq(1, N) + return( - t(D - C) %*% W %*% ( D - C) ) + } > N <- 3 > # 3-dimensional case > ## a) test quadratic function t(D) %*% D > library(maxLik) Loading required package: miscTools Please cite the 'maxLik' package as: Henningsen, Arne and Toomet, Ott (2011). maxLik: A package for maximum likelihood estimation in R. Computational Statistics 26(3), 443-458. DOI 10.1007/s00180-010-0217-1. If you have questions, suggestions, or comments regarding the 'maxLik' package, please use a forum or 'tracker' at maxLik's R-Forge site: https://r-forge.r-project.org/projects/maxlik/ > W <- diag(N) > D <- rep(1/N, N) > res <- maxBFGSR(quadForm, start=D) > all.equal(coef(res), 1:3, tolerance=1e-4) [1] TRUE > all.equal(gradient(res), rep(0,3), tolerance=1e-3) [1] TRUE > all.equal(nIter(res) < 100, TRUE) [1] TRUE > all.equal(returnCode(res) < 4, TRUE) [1] TRUE > > ## Next, optimize hat function in non-concave region. Does not work well. > hat <- function(param) { + ## Hat function. Hessian negative definite if sqrt(x^2 + y^2) < 0.5 + x <- param[1] + y <- param[2] + exp(-(x-2)^2 - (y-2)^2) + } > > hatNC <- maxBFGSR(hat, start=c(1,1), tol=0, reltol=0) > all.equal(coef(hatNC), rep(2,2), tolerance=1e-4) [1] TRUE > all.equal(gradient(hatNC), rep(0,2), tolerance=1e-3) [1] TRUE > all.equal(nIter(hatNC) < 100, TRUE) [1] TRUE > all.equal(returnCode(hatNC) < 4, TRUE) [1] TRUE > > ## Test BFGSR with fixed parameters and equality constraints > ## Optimize 3D hat with one parameter fixed (== 2D hat). > ## Add an equality constraint on that > hat3 <- function(param) { + ## Hat function. Hessian negative definite if sqrt((x-2)^2 + (y-2)^2) < 0.5 + x <- param[1] + y <- param[2] + z <- param[3] + exp(-(x-2)^2-(y-2)^2-(z-2)^2) + } > sv <- c(x=1,y=1,z=1) > ## constraints: x + y + z = 8 > A <- matrix(c(1,1,1), 1, 3) > B <- -8 > constraints <- list(eqA=A, eqB=B) > hat3CF <- maxBFGSR(hat3, start=sv, constraints=constraints, fixed=3) > all.equal(coef(hat3CF), c(x=3.5, y=3.5, z=1), tolerance=1e-4) [1] TRUE > all.equal(nIter(hat3CF) < 100, TRUE) [1] TRUE > all.equal(returnCode(hat3CF) < 4, TRUE) [1] TRUE > all.equal(sum(coef(hat3CF)), 8, tolerance=1e-4) [1] TRUE > > proc.time() user system elapsed 0.562 0.560 0.338 maxLik/tests/constraints.Rout.save0000644000175100001440000004257514077525067017070 0ustar hornikusers R version 3.5.3 (2019-03-11) -- "Great Truth" Copyright (C) 2019 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > ### Various tests for constrained optimization > ### > options(digits=4) > > ### -------------------- Normal mixture likelihood, no additional parameters -------------------- > ### param = c(rho, mean1, mean2) > ### > ### X = N(mean1) w/Pr rho > ### X = N(mean2) w/Pr 1-rho > ### > logLikMix <- function(param) { + ## a single likelihood value + rho <- param[1] + if(rho < 0 || rho > 1) + return(NA) + mu1 <- param[2] + mu2 <- param[3] + ll <- log(rho*dnorm(x - mu1) + (1 - rho)*dnorm(x - mu2)) + ll <- sum(ll) + ll + } > > gradLikMix <- function(param) { + rho <- param[1] + if(rho < 0 || rho > 1) + return(NA) + mu1 <- param[2] + mu2 <- param[3] + f1 <- dnorm(x - mu1) + f2 <- dnorm(x - mu2) + L <- rho*f1 + (1 - rho)*f2 + g <- matrix(0, length(x), 3) + g[,1] <- (f1 - f2)/L + g[,2] <- rho*(x - mu1)*f1/L + g[,3] <- (1 - rho)*(x - mu2)*f2/L + colSums(g) + g + } > > hessLikMix <- function(param) { + rho <- param[1] + if(rho < 0 || rho > 1) + return(NA) + mu1 <- param[2] + mu2 <- param[3] + f1 <- dnorm(x - mu1) + f2 <- dnorm(x - mu2) + L <- rho*f1 + (1 - rho)*f2 + dldrho <- (f1 - f2)/L + dldmu1 <- rho*(x - mu1)*f1/L + dldmu2 <- (1 - rho)*(x - mu2)*f2/L + h <- matrix(0, 3, 3) + h[1,1] <- -sum(dldrho*(f1 - f2)/L) + h[2,1] <- h[1,2] <- sum((x - mu1)*f1/L - dldmu1*dldrho) + h[3,1] <- h[1,3] <- sum(-(x - mu2)*f2/L - dldmu2*dldrho) + h[2,2] <- sum(rho*(-f1 + (x - mu1)^2*f1)/L - dldmu1^2) + h[2,3] <- h[3,2] <- -sum(dldmu1*dldmu2) + h[3,3] <- sum((1 - rho)*(-f2 + (x - mu2)^2*f2)/L - dldmu2^2) + h + } > > logLikMixInd <- function(param) { + ## individual obs-wise likelihood values + rho <- param[1] + if(rho < 0 || rho > 1) + return(NA) + mu1 <- param[2] + mu2 <- param[3] + ll <- log(rho*dnorm(x - mu1) + (1 - rho)*dnorm(x - mu2)) + ll <- sum(ll) + ll + } > > gradLikMixInd <- function(param) { + rho <- param[1] + if(rho < 0 || rho > 1) + return(NA) + mu1 <- param[2] + mu2 <- param[3] + f1 <- dnorm(x - mu1) + f2 <- dnorm(x - mu2) + L <- rho*f1 + (1 - rho)*f2 + g <- matrix(0, length(x), 3) + g[,1] <- (f1 - f2)/L + g[,2] <- rho*(x - mu1)*f1/L + g[,3] <- (1 - rho)*(x - mu2)*f2/L + colSums(g) + g + } > > ### -------------------------- > library(maxLik) Loading required package: miscTools Please cite the 'maxLik' package as: Henningsen, Arne and Toomet, Ott (2011). maxLik: A package for maximum likelihood estimation in R. Computational Statistics 26(3), 443-458. DOI 10.1007/s00180-010-0217-1. If you have questions, suggestions, or comments regarding the 'maxLik' package, please use a forum or 'tracker' at maxLik's R-Forge site: https://r-forge.r-project.org/projects/maxlik/ > ## mixed normal > set.seed(1) > N <- 100 > x <- c(rnorm(N, mean=-1), rnorm(N, mean=1)) > > ## ---------- INEQUALITY CONSTRAINTS ----------- > ## First test inequality constraints, numeric/analytical gradients > ## Inequality constraints: rho < 0.5, mu1 < -0.1, mu2 > 0.1 > A <- matrix(c(-1, 0, 0, + 0, -1, 0, + 0, 0, 1), 3, 3, byrow=TRUE) > B <- c(0.5, 0.1, 0.1) > start <- c(0.4, 0, 0.9) > ineqCon <- list(ineqA=A, ineqB=B) > ## analytic gradient > cat("Inequality constraints, analytic gradient & Hessian\n") Inequality constraints, analytic gradient & Hessian > a <- maxLik(logLikMix, grad=gradLikMix, hess=hessLikMix, + start=start, + constraints=ineqCon) > all.equal(coef(a), c(0.5, -1, 1), tolerance=0.1) [1] "Mean relative difference: 0.1624" > # TRUE: relative tolerance 0.045 > ## No analytic gradient > cat("Inequality constraints, numeric gradient & Hessian\n") Inequality constraints, numeric gradient & Hessian > a <- maxLik(logLikMix, + start=start, + constraints=ineqCon) > all.equal(coef(a), c(0.5, -1, 1), tolerance=0.1) [1] "Mean relative difference: 0.2547" > # should be close to the true values, but N is too small > ## NR method with inequality constraints > try( maxLik(logLikMix, start = start, constraints = ineqCon, method = "NR" ) ) Error in maxRoutine(fn = logLik, grad = grad, hess = hess, start = start, : Inequality constraints not implemented for maxNR > # Error in maxRoutine(fn = logLik, grad = grad, hess = hess, start = start, : > # Inequality constraints not implemented for maxNR > > ## BHHH method with inequality constraints > try( maxLik(logLikMix, start = start, constraints = ineqCon, method = "BHHH" ) ) Error in maxNR(fn = fn, grad = grad, hess = hess, start = start, finalHessian = finalHessian, : Inequality constraints not implemented for maxNR > # Error in maxNR(fn = fn, grad = grad, hess = hess, start = start, finalHessian = finalHessian, : > # Inequality constraints not implemented for maxNR > > ## ---------- EQUALITY CONSTRAINTS ----------------- > cat("Test for equality constraints mu1 + 2*mu2 = 0\n") Test for equality constraints mu1 + 2*mu2 = 0 > A <- matrix(c(0, 1, 2), 1, 3) > B <- 0 > eqCon <- list( eqA = A, eqB = B ) > ## default, numeric gradient > mlEq <- maxLik(logLikMix, start = start, constraints = eqCon, tol=0) > # only rely on gradient stopping condition > all.equal(coef(mlEq), c(0.33, -1.45, 0.72), tolerance=0.01, scale=1) [1] "Mean absolute difference: 0.1777" > ## default, individual likelihood > mlEqInd <- maxLik(logLikMixInd, start = start, constraints = eqCon, tol=0) > # only rely on gradient stopping condition > all.equal(coef(mlEq), coef(mlEqInd), tol=1e-4) [1] TRUE > ## default, analytic gradient > mlEqG <- maxLik(logLikMix, grad=gradLikMix, + start = start, constraints = eqCon ) > all.equal(coef(mlEq), coef(mlEqG), tolerance=1e-4) [1] TRUE > ## default, analytic gradient, individual likelihood > mlEqGInd <- maxLik(logLikMixInd, grad=gradLikMixInd, + start = start, constraints = eqCon ) > all.equal(coef(mlEqG), coef(mlEqGInd), tolerance=1e-4) [1] TRUE > ## default, analytic Hessian > mlEqH <- maxLik(logLikMix, grad=gradLikMix, hess=hessLikMix, + start=start, + constraints=eqCon) > all.equal(coef(mlEqG), coef(mlEqH), tolerance=1e-4) [1] TRUE > > > ## BFGS, numeric gradient > eqBFGS <- maxLik(logLikMix, + start=start, method="bfgs", + constraints=eqCon, + SUMTRho0=1) > all.equal(coef(eqBFGS), c(0.33, -1.45, 0.72), tolerance=0.01, scale=1) [1] "Mean absolute difference: 0.1777" > > ## BHHH, analytic gradient (numeric does not converge?) > eqBHHH <- maxLik(logLikMix, gradLikMix, + start=start, method="bhhh", + constraints=eqCon, + SUMTRho0=1) > all.equal(coef(eqBFGS), coef(eqBHHH), tol=1e-4) [1] "Mean relative difference: 0.003536" > > > ### ------------------ Now test additional parameters for the function ---- > ### similar mixture as above but rho is give as an extra parameter > ### > logLikMix2 <- function(param, rho) { + mu1 <- param[1] + mu2 <- param[2] + ll <- log(rho*dnorm(x - mu1) + (1 - rho)*dnorm(x - mu2)) + # ll <- sum(ll) + ll + } > > gradLikMix2 <- function(param, rho) { + mu1 <- param[1] + mu2 <- param[2] + f1 <- dnorm(x - mu1) + f2 <- dnorm(x - mu2) + L <- rho*f1 + (1 - rho)*f2 + g <- matrix(0, length(x), 2) + g[,1] <- rho*(x - mu1)*f1/L + g[,2] <- (1 - rho)*(x - mu2)*f2/L + # colSums(g) + g + } > > hessLikMix2 <- function(param, rho) { + mu1 <- param[1] + mu2 <- param[2] + f1 <- dnorm(x - mu1) + f2 <- dnorm(x - mu2) + L <- rho*f1 + (1 - rho)*f2 + dldrho <- (f1 - f2)/L + dldmu1 <- rho*(x - mu1)*f1/L + dldmu2 <- (1 - rho)*(x - mu2)*f2/L + h <- matrix(0, 2, 2) + h[1,1] <- sum(rho*(-f1 + (x - mu1)^2*f1)/L - dldmu1^2) + h[1,2] <- h[2,1] <- -sum(dldmu1*dldmu2) + h[2,2] <- sum((1 - rho)*(-f2 + (x - mu2)^2*f2)/L - dldmu2^2) + h + } > > ## ---------- Equality constraints & extra parameters ------------ > A <- matrix(c(1, 2), 1, 2) > B <- 0 > start <- c(0, 1) > ## We run only a few iterations as we want to test correct handling > ## of parameters, not the final value. We also avoid any > ## debug information > iterlim <- 3 > cat("Test for extra parameters for the function\n") Test for extra parameters for the function > ## NR, numeric gradient > cat("Newton-Raphson, numeric gradient\n") Newton-Raphson, numeric gradient > a <- maxLik(logLikMix2, + start=start, method="nr", + constraints=list(eqA=A, eqB=B), + iterlim=iterlim, SUMTRho0=1, rho=0.5) > all.equal(coef(a), c(-1.36, 0.68), tol=0.01) [1] "Mean relative difference: 0.3619" > ## NR, numeric hessian > a <- maxLik(logLikMix2, gradLikMix2, + start=start, method="nr", + constraints=list(eqA=A, eqB=B), + iterlim=iterlim, SUMTRho0=1, rho=0.5) > all.equal(coef(a), c(-1.36, 0.68), tol=0.01) [1] "Mean relative difference: 0.3619" > ## nr, analytic hessian > a <- maxLik(logLikMix2, gradLikMix2, hessLikMix2, + start=start, method="nr", + constraints=list(eqA=A, eqB=B), + iterlim=iterlim, SUMTRho0=1, rho=0.5) > all.equal(coef(a), c(-1.36, 0.68), tol=0.01) [1] "Mean relative difference: 0.3619" > ## BHHH > cat("BHHH, analytic gradient, numeric Hessian\n") BHHH, analytic gradient, numeric Hessian > a <- maxLik(logLikMix2, gradLikMix2, + start=start, method="bhhh", + constraints=list(eqA=A, eqB=B), + iterlim=iterlim, SUMTRho0=1, rho=0.5) > all.equal(coef(a), c(-1.36, 0.68), tol=0.01) [1] "Mean relative difference: 0.3512" > ## BHHH, analytic > a <- maxLik(logLikMix2, gradLikMix2, + start=start, method="bhhh", + constraints=list(eqA=A, eqB=B), + iterlim=iterlim, SUMTRho0=1, rho=0.5) > all.equal(coef(a), c(-1.36, 0.68), tol=0.01) [1] "Mean relative difference: 0.3512" > ## bfgs, no analytic gradient > a <- maxLik(logLikMix2, + start=start, method="bfgs", + constraints=list(eqA=A, eqB=B), + iterlim=iterlim, SUMTRho0=1, rho=0.5) > all.equal(coef(a), c(-1.36, 0.68), tol=0.01) [1] "Mean relative difference: 0.3381" > ## bfgs, analytic gradient > a <- maxLik(logLikMix2, + start=start, method="bfgs", + constraints=list(eqA=A, eqB=B), + iterlim=iterlim, SUMTRho0=1, rho=0.5) > all.equal(coef(a), c(-1.36, 0.68), tol=0.01) [1] "Mean relative difference: 0.3381" > ## SANN, analytic gradient > a <- maxLik(logLikMix2, gradLikMix2, + start=start, method="SANN", + constraints=list(eqA=A, eqB=B), + iterlim=iterlim, SUMTRho0=1, rho=0.5) Warning message: In (function (fn, grad = NULL, hess = NULL, start, maxRoutine, constraints, : problem in imposing equality constraints: the constraints are not satisfied (barrier value = 0.00173566161904632). Try setting 'SUMTTol' to 0 > all.equal(coef(a), c(-1.36, 0.68), tol=0.01) [1] "Mean relative difference: 0.2285" > ## NM, numeric > a <- maxLik(logLikMix2, + start=start, method="nm", + constraints=list(eqA=A, eqB=B), + iterlim=100, + # use more iters for NM + SUMTRho0=1, rho=0.5) > all.equal(coef(a), c(-1.36, 0.68), tol=0.01) [1] "Mean relative difference: 0.3621" > > ## -------------------- NR, multiple constraints -------------------- > f <- function(theta) exp(-theta %*% theta) > # test quadratic function > ## constraints: > ## theta1 + theta3 = 1 > ## theta1 + theta2 = 1 > A <- matrix(c(1, 0, 1, + 1, 1, 0), 2, 3, byrow=TRUE) > B <- c(-1, -1) > cat("NR, multiple constraints\n") NR, multiple constraints > a <- maxNR(f, start=c(1,1.1,2), constraints=list(eqA=A, eqB=B)) > theta <- coef(a) > all.equal(c(theta[1] + theta[3], theta[1] + theta[2]), c(1,1), tolerance=1e-4) [1] TRUE > ## Error handling for equality constraints > A <- matrix(c(1, 1), 1, 2) > B <- -1 > cat("Error handling: ncol(A) != lengths(start)\n") Error handling: ncol(A) != lengths(start) > try(a <- maxNR(f, start=c(1, 2, 3), constraints=list(eqA=A, eqB=B))) Error in sumt(fn = function (theta) : Equality constraint matrix A must have the same number of columns as the parameter length (currently 2 and 3) > # ncol(A) != length(start) > A <- matrix(c(1, 1), 1, 2) > B <- c(-1, 2) > try(a <- maxNR(f, start=c(1, 2), constraints=list(eqA=A, eqB=B))) Error in sumt(fn = function (theta) : Equality constraint matrix A must have the same number of rows as the matrix B (currently 1 and 2) > # nrow(A) != nrow(B) > ## > ## -------------- inequality constraints & extra paramters ---------------- > ## > ## mu1 < 1 > ## mu2 > -1 > A <- matrix(c(-1, 0, + 0, 1), 2,2, byrow=TRUE) > B <- c(1,1) > start <- c(0.8, 0.9) > ## > inEGrad <- maxLik(logLikMix2, gradLikMix2, + start=start, method="bfgs", + constraints=list(ineqA=A, ineqB=B), + rho=0.5) > all.equal(coef(inEGrad), c(-0.98, 1.12), tol=0.01) [1] "Mean relative difference: 0.2716" > ## > inE <- maxLik(logLikMix2, + start=start, method="bfgs", + constraints=list(ineqA=A, ineqB=B), + rho=0.5) > all.equal(coef(inEGrad), coef(inE), tol=1e-4) [1] TRUE > ## > inENM <- maxLik(logLikMix2, gradLikMix2, + start=start, method="nm", + constraints=list(ineqA=A, ineqB=B), + rho=0.5) > all.equal(coef(inEGrad), coef(inENM), tol=1e-3) [1] TRUE > # this is further off than gradient-based methods > ## ---------- test vector B for inequality -------------- > ## mu1 < 1 > ## mu2 > 2 > A <- matrix(c(-1, 0, + 0, 1), 2,2, byrow=TRUE) > B1 <- c(1,-2) > a <- maxLik(logLikMix2, gradLikMix2, + start=c(0.5, 2.5), method="bfgs", + constraints=list(ineqA=A, ineqB=B1), + rho=0.5) > theta <- coef(a) > all.equal(c(theta[1] < 1, theta[2] > 2), c(TRUE, TRUE)) [1] TRUE > # components should be larger than > # (-1, -2) > > ## > ## ---- ERROR HANDLING: insert wrong A and B forms ---- > ## > A2 <- c(-1, 0, 0, 1) > try(maxLik(logLikMix2, gradLikMix2, + start=start, method="bfgs", + constraints=list(ineqA=A2, ineqB=B), + print.level=1, rho=0.5) + ) Error in maxOptim(fn = fn, grad = grad, hess = hess, start = start, method = "BFGS", : Inequality constraint A must be a matrix Current dimension > # should explain that matrix needed > A2 <- matrix(c(-1, 0, 0, 1), 1, 4) > try(maxLik(logLikMix2, gradLikMix2, + start=start, method="bfgs", + constraints=list(ineqA=A2, ineqB=B), + print.level=1, rho=0.5) + ) Error in maxOptim(fn = fn, grad = grad, hess = hess, start = start, method = "BFGS", : Inequality constraint A must have the same number of columns as length of the parameter. Currently 4 and 2. > # should explain that wrong matrix > # dimension > B2 <- 1:3 > try(maxLik(logLikMix2, gradLikMix2, + start=start, method="bfgs", + constraints=list(ineqA=A, ineqB=B2), + print.level=1, rho=0.5) + ) Error in maxOptim(fn = fn, grad = grad, hess = hess, start = start, method = "BFGS", : Inequality constraints A and B suggest different number of constraints: 2 and 3 > # A & B do not match > cat("A & B do not match\n") A & B do not match > B2 <- matrix(1,2,2) > try(maxLik(logLikMix2, gradLikMix2, + start=start, method="bfgs", + constraints=list(ineqA=A, ineqB=B2), + print.level=1, rho=0.5) + ) Error in maxOptim(fn = fn, grad = grad, hess = hess, start = start, method = "BFGS", : Inequality constraint B must be a vector (or Nx1 matrix). Currently 2 columns > # B must be a vector > > ## ---- fixed parameters with constrained optimization ----- > ## Thanks to Bob Loos for finding this error. > ## Optimize 3D hat with one parameter fixed (== 2D hat). > ## Add an equality constraint on that > cat("Constraints + fixed parameters\n") Constraints + fixed parameters > hat3 <- function(param) { + ## Hat function. Hessian negative definite if sqrt(x^2 + y^2) < 0.5 + x <- param[1] + y <- param[2] + z <- param[3] + exp(-x^2-y^2-z^2) + } > sv <- c(1,1,1) > ## constraints: x + y + z >= 2.5 > A <- matrix(c(x=1,y=1,z=1), 1, 3) > B <- -2.5 > constraints <- list(ineqA=A, ineqB=B) > res <- maxBFGS(hat3, start=sv, constraints=constraints, fixed=3, + iterlim=3) > all.equal(coef(res), c(0.770, 0.770, 1), tol=0.01) [1] TRUE > > proc.time() user system elapsed 1.676 0.329 1.571 maxLik/tests/finalHessian.R0000644000175100001440000000772014077525067015431 0ustar hornikusers### Test the 'finalHessian' argument of optimization routines library(maxLik) set.seed( 4 ) # log-likelihood function, gradient, and Hessian for 1-parameter case (exponential distribution) ll1i <- function(theta) { if(!all(theta > 0)) return(NA) log(theta) - theta*t } ll1 <- function(theta) sum( log(theta) - theta*t ) gr1i <- function(theta) 1/theta - t gr1 <- function(theta) sum( 1/theta - t ) hs1 <- function(theta) -100/theta^2 t <- rexp( 100, 2 ) ## the same functions for 2-variable case (normal distribution) ll2 <- function( param ) { ## log likelihood function mu <- param[ 1 ] sigma <- param[ 2 ] if(!(sigma > 0)) return(NA) # to avoid warnings in the output N <- length( x ) llValue <- -0.5 * N * log( 2 * pi ) - N * log( sigma ) - 0.5 * sum( ( x - mu )^2 / sigma^2 ) return( llValue ) } ## log likelihood function (individual observations) ll2i <- function( param ) { mu <- param[ 1 ] sigma <- param[ 2 ] if(!(sigma > 0)) return(NA) # to avoid warnings in the output llValues <- -0.5 * log( 2 * pi ) - log( sigma ) - 0.5 * ( x - mu )^2 / sigma^2 return( llValues ) } gr2 <- function( param ) { ## function to calculate analytical gradients mu <- param[ 1 ] sigma <- param[ 2 ] N <- length( x ) llGrad <- c( sum( ( x - mu ) / sigma^2 ), - N / sigma + sum( ( x - mu )^2 / sigma^3 ) ) return( llGrad ) } ## function to calculate analytical gradients (individual observations) gr2i <- function( param ) { mu <- param[ 1 ] sigma <- param[ 2 ] llGrads <- cbind( ( x - mu ) / sigma^2, - 1 / sigma + ( x - mu )^2 / sigma^3 ) return( llGrads ) } ## function to calculate analytical Hessians hs2 <- function( param ) { mu <- param[ 1 ] sigma <- param[ 2 ] N <- length( x ) llHess <- matrix( c( N * ( - 1 / sigma^2 ), sum( - 2 * ( x - mu ) / sigma^3 ), sum( - 2 * ( x - mu ) / sigma^3 ), N / sigma^2 + sum( - 3 * ( x - mu )^2 / sigma^4 ) ), nrow = 2, ncol = 2 ) return( llHess ) } x <- rnorm(100, 1, 2) ## NR # Estimate with only function values (single parameter) a <- maxLik( ll1i, gr1i, start = 1, method = "NR" ) summary(a ) b <- maxLik( ll1i, gr1i, start = 1, method = "NR", finalHessian="bhhh") # should issue a warning as BHHH not possible summary(b ) c <- maxLik( ll1i, gr1i, start = 1, method = "NR", finalHessian=FALSE) summary(c) ## (vector parameter) a <- maxLik( ll2, gr2, start = c(0,1), method = "NR" ) summary(a ) b <- maxLik( ll2, gr2, start = c(0,1), method = "NR", finalHessian="bhhh") # should issue a warning as BHHH not possible summary(b ) c <- maxLik( ll2, gr2, start = c(0,1), method = "NR", finalHessian=FALSE) summary(c) ## BFGSR # Estimate with only function values (single parameter) a <- maxLik( ll1i, gr1i, start = 1, method = "BFGSR" ) summary(a ) b <- maxLik( ll1i, gr1i, start = 1, method = "BFGSR", finalHessian="bhhh") # should issue a warning as BHHH not possible summary(b ) c <- maxLik( ll1i, gr1i, start = 1, method = "BFGSR", finalHessian=FALSE) summary(c) # Estimate with only function values (vector parameter) a <- maxLik( ll2, gr2, start = c(0,1), method = "BFGSR" ) summary(a ) b <- maxLik( ll2, gr2, start = c(0,1), method = "BFGSR", finalHessian="bhhh") # should issue a warning as BHHH not possible summary(b ) c <- maxLik( ll2, gr2, start = c(0,1), method = "BFGSR", finalHessian=FALSE) summary(c) ### Nelder-Mead ## Individual observations only b <- maxLik( ll2i, start = c(0,1), method = "NM", finalHessian="bhhh") summary(b) ## Individual observations, summed gradient b <- maxLik( ll2i, gr2, start = c(0,1), method = "NM", finalHessian="bhhh") # should issue a warning as BHHH not selected # (yes, could do it based on individual likelihood and numeric gradient) summary(b) maxLik/vignettes/0000755000175100001440000000000014600010432013513 5ustar hornikusersmaxLik/vignettes/probability-density.pdf0000644000175100001440000002637714077553422020245 0ustar hornikusers%PDF-1.4 %Çì¢ %%Invocation: gs -q -dNOPAUSE -dBATCH -P -dSAFER -dDELAYSAFER -sDEVICE=pdfwrite -dEPSCrop -dSubsetFonts=true -dEmbedAllFonts=true -dMaxSubsetPct=100 -dPDFSETTINGS=/prepress -dCompatibilityLevel=1.4 -dAutoRotatePages=/None -g612x792 %%+ -dDEVICEWIDTHPOINTS=315.873 -dDEVICEHEIGHTPOINTS=113.838 -sOutputFile=? ? ? -f ? 5 0 obj <> stream xœÕ˜»Žd·†wàg8átÐïN ”Y;™¤h+YØ ßßOž OOËZ“‹EwUW‘uý«8?/Ö¸Åêßúùòzù꛲üðÏ‹5ÍÚÐÜòÃ%Øb\ò‹kÙTë–×’5¥,Ÿ/!$“–½q¹òLK(ÁäP–Ð`¤k2þË%´f|Îpª±e‰6›ÑkÎØä–肉2ç ò+c3àó“>_>]œi­¥¸ürqË×üÿéb—¿ý>Œÿñòáòí¢iQ'­Ÿß“ˆVk­­ñ-Ì®¬œPœI^¾èœ¡[¥·Þ“ÇÂ6… 98Ø&½ÕÌCheÌ2ûIÕw_w¡!!Ÿ’É9NBÞUb˜OR–ÂÂtŽË³ä¦KÔm«HîœÇFqî´¾OïxÖ‡)ä1WÝìK²‰Î8ûÝâç»w½ý¦³[s¯5üx¿³T –bá—¶¢¸+üA Øß*¡{©×KöÄö™õޏ%lU~ I× ÆQòv™Ãu O»ÖçKªÁ¤t✕FÌÞë¤3êÑôÖd7uÛÆitD² »+¡š‚d¢Ü+)hšßÒá)i©@Fàö4€ 1¢I …j·ÔÚŒä«ç² éŸ ù•sîÞ®;èûÝX= 4:¦Ûç=æm¶Ìþœ­{\°»×¥aH™âàȯ©£`7;'©ÍòYj×´;I N—ʹQt³T¦Ør8IÙ^YŒŒóy»®ÚUX»qðÇÔà{ÏZ£ôßיּ}]­NÞO§6N ùìqÑ„zŠËЛnÚOÚ­¹ÓZýx·³ÁÞ}ÍÈŸòçߪ¢;)†Šê‚7ëMqk5ƒ¯KM Vè÷ Î |»ÔdMa©»žµV ò3笵ÆíÝÎúpÉò#4ü Z!î¾S}ìÝÓL¢R8©*D·Îà²q--žuJàz4r´&›ä\_Q2Á+X›hÝÆgqŒ„–—ĉlBh”˜{̱qli…¢äÿ’0Ò‚`ÕãKX2 !D{¹TVª‚ÞVGï ñ§P£Í3›"Ö‘”–äGKÕTêN·óÑÀ]b_'Âkë©v¿”¤ÑÕñÖæ„CKa˜ylq4„!¥a=íá9Â2»á³+ÂÛ¥Ûw^çI+ÞW|k}‚cX~kk*…‚í%vË\p£3jéuáX «Õ43#—.mDVC" @Ú"±Eå¨ùî|ÌM kƒ8(‹fRöFf2ÞA&4 ‰¦Êð=à-äºm ‹!®ÓÅzÄÁ7FôIXú$ìƒðÍàÓ¤#dšt|]:àš«¨Y4úª•wS }AYtÁ¤H_`nÅ«®±µÞž oé‹F®иx›Š®”-‘jð–båóȶw:‹z   ¡Çq¡`a;'Û”V÷æ('OÿI gµ$­êé ÈÈ'/>°ÒRÚGÁ"né°EñÕXô®àÄDò÷‘œà£)|¤r€Àôê H° °U%ªD‘ô‰®PcîÇ.îUQ%KÒ|¢+0zxÀÀg²FªŽæö¹ãí_;Ðà!¦¹­ëõBÓáÀ ¾äñ²CÚõ•®B¥8®¨´øq ”¯XC²‚NÊ`X#¤üœÊ7¢ZzWD£Þ6ú¡·P¢^îàç½#åw }9‹à4¶Ú´ÜéÓ¨8$Z÷éUœPYÐý»Š€·M‰IEpÔªmH´Öi ]'ý2îP7 Ñ´‰h-Ç.¡ßQZ˜®3|l§G1$x«fŽz½\ëÚ‰pšz—i5°_tw´ô¶8èŒU£sxxpÆq‚j³Nwþ°Õ­p4oÒ“|5’¦¦`üî¸Ïis]qT”[ ØY—ʪ^ƒK0'‰lѳºôWô‘q4Y¶„:´ŽØ­~2üVŠ oü z¥ôʘ÷Œ”†µ“Pêméä‡þ’„óMtÁ|ŠƒºÆ‹õ7«B„9ÓYx¸Šó¿ ‰¼Ò!ŒÓý §˜4Õú¬¥±­Ï hÚ³Š&m¢µ`Œ+ôzâ”~´hí¤¢kZö˜ ²+ð³"ÍðÌç+T¡“}ÊOF2í];¹¡ùß&?A¾¾’nqØé=R;g¥í~ 4Å©Ï- Õn?°%9?¥ÐÝ·ä¾¼Iw/¦k3Âìýõkì¯ÚOòIhçBwõuÜ!ÒÇJ™ÑleL".Oˆ·q¡ŸÙgú_#×—×å/Ï—¯¾a¨Òù™Ð=ãÙ`ȳ©îÈ‹¶„ç×Ë·Oÿ¾Þ8Ÿqç¾þMê­H]•²cÔåF¤³Õûü%w­X`m\uü|·,gñ?_o›dœ%ñØiÐÛ!ö‡Cìt Kâ&â®ÚVY¨†ÜÉM,wæMôOWz$YW ¸Í7çql,O­ó¥=¥'ý›[´g]!€]ç—+qr,ÁOÿØnzúx½i£Á¾§]oHó:rO?®ÜXXÍë¸'£[òôÇëóOMÐÄvrã ïé0îûtõš›î‘;¿¹òÝ“.&7>=¸-˜=>[âCü­Ä§VòœøØRxdETžNâß]1FNŠ^E Qo£{²=´¼MÅþ¬)¬é R¸Ÿ¹¦PßÒ¹'i/T½öX¾ÌAI9ÿÝàG7¤‡f>ì†/ „ªZ÷ÿÄ"ÌǪty ¤qÚãÒ­i+]Ó^º©l¥ ÷‹K·wÈ£Ò­î¡íoj·ßüEµËåWÒT´öÜÕnOS|@v¯žÙ_+_÷6kÜñŽåvÜ©ýÛÇ vïÉÚ?ˆý­è ÍNô8.§+o^ó^úè®É¹)ÅÈdG„nÅò8Muã'3n¤¿•À8J±3õjôülæ_Ÿ/çßgïbƒendstream endobj 6 0 obj 2275 endobj 4 0 obj <> /Contents 5 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R ] /Count 1 >> endobj 1 0 obj <> endobj 7 0 obj <>endobj 16 0 obj <> endobj 17 0 obj <> endobj 14 0 obj <> endobj 22 0 obj <> endobj 12 0 obj <> endobj 10 0 obj <> endobj 8 0 obj <> endobj 23 0 obj <> endobj 15 0 obj <> endobj 18 0 obj <>stream xœcd`ab`dddsö Ž´±T~H3þaú!ËÜÝý3æûÖnæn–•ß;„¾G ~çÿ"ÀÀÌȘWÜäœ_PY”™žQ¢ ‘¬©`hii®£`d``©à˜›Z”™œ˜§à›X’‘š›Xää(ç'g¦–T*hØd””Xéë———ë%æëå¥Ûiê(”g–d(¥§•¥¦(¸åç•(ø%æ¦*€¦&ós JKR‹|óSR‹òx##‹æ¾Ÿ›¿Wnc|ø“ù§ù÷Jѹóº.(ï®’ÿ³‡­ª¼»¬t^÷\y¾âÅ?í²ý–™Æ¾k·‹XZ=ç¶9<<@ÌËÀt\Ò endstream endobj 13 0 obj <> endobj 19 0 obj <>stream xœuT{PSw¾1{‹BzË£îMu|ÚõAW냕"ŠR­£‚"ˆá!  •’!¼ŸAÂ+>ª‚Š®Z­®\­­]­¸®µhõ®³íÎôŸ3sçÞ™ßùî÷ßw>e7‚öþÁ«ü†_&Ú>ØÆŒ°ýI$(}(Û…àh· s .팫GSB@‘¤õW&¦«âbbÕÒIQ“¥3üüæL“Îôõõ“.RÈTqQ‘ ÒàHu¬L©æ?äÒÕʨ8™:]:i^¬Zø©OZZšw¤"Ù[©Šùlò4iZœ:VºJ–,S¥Ê¶H” jéŠH…L:ÌÍ{øá¯T$¦¨e*i°r‹L•@Q”‹:mKlœßüI“§ûΘùɬÙs)j µŽZB-¥‚(OŠ£> ('Ê…r¥ÄÔ‡ÔG”åA¹òš);*Pà 0p¡2 ¡EøÖNlWhwÛ>Ðþ(›v§lz'›—¶Å&¶âÜzÁË~ôlâmÛxÖJ&àr%mœ;~ŠžQÝ'­4±ûAÝwùÀ¥kÜåz‘<&&þYËaí4ô•Öló´ ꇾ¹à}¶áüa“yc¥£ôØ 2ØQǽät·±*Ò Ë«ßéC Ü'b³®  À£ÉšßÄYéúÍrH€ø÷{¡ÞX¾½T[z0è´`ô#)îÓ°2·òÁäÑ|ê†û jcÿ¯ˆ{ßו†Š8dÉK÷ÂÌ‚¬j¨S¹©l÷¹?'ûLY&m5xTCA™©Œq²]ÖZ¶[mY0ºËuÿ=´\sï³y # é ß–*ߨ‰‚ˆjLêJê6œƒ½p¬¨¯©³aïaktAgj³¬"Œ a γº¢ð¾ùÀgéd—gqä#ÝæZ‰xÃ2§–Û[éϳ‹{%¶4™¤µ—ÓWJw†Jxð;Úõct¿— ±8ò¦†Þ¨…¥œœ>–_·«xÆ>/×J/ÕÂQ Ñ/ož¼x®2t%G2þïÙu £•Á/i¸ ­ÊêYåz„ÐXùjÆ(ržˆ}:"åú=R‹øa àrÛ –Œ¦r©47TBÌÿƒ?’oÞõ5ÔðSèÕ¿ƒÊ+<$ÿZ`ë`Û’rµ*!aÊÚÖØØÆ9ÙÊRZ>úÉbkqíþ9h?»‰_Ùœñ ›B=F¬R¯3íKâL¢áèdšÒë•JMºbi_ÄCdùrG%'~Äñ»„žàM܈øÑT´çįn@g_m7CØ¿² ñ4Ð Ãâ›;ÚNªl‡+Ð`ʪŠ6­€fñV¯éœÓP'Š»qV·àÌÐBáÐ:ü‰­ªsC l“¼y%Ú–)©õP)±½&lu4˜5°]òæ­hG¤¦4@5u^$ßüzU½à׋B|L²Y(Ôä¶`  ? O†àXô4™ò  )Ö™vfÎð'‚5\ØÔäñ@F‚)&çˆóÀâ `Š MÅ@ÆLúšXø1G¬Ea:{ßÈ&Ë£×åë‹wJήÅd  ^I$ŒL ôyy côù9e¯£à×ó¤ñ9 #ã„ÿÂà ‚rlb³Hs0=|=–!W‹ óVÝÚxƒ…Ëú{±77=^Ðø¬„É›¦Æè>…”?¥{Þ±Ù·3ŽÂ·ÐßÒõ¨írÑM¸Ã9¹Ê*À¿JƒöYçàœá‡þ}Åéú—j÷C\L«ó.ÿæÃr†9Y!©D´(Kü–ñ¾;h`Ú-!ž³c¾Š ^æÃç#§ëà<œjbÞTÑÑúLo.^.j/x‡ùzíï¬O{ë+J†îàà‹A«àÄ Œ$´mÆ%¬RdØ‘²##7;€O †ˆ~yŒsqÜù>ô@zÚâLèù¾¾ë»u¥ m5ím© rŒy\ãµK{O3x`ZÀ„Ïæ†­•e$T«¨=lbÑ;Oó{‚ãšÐáÙÞ×(Àõ‹ÝÄoñ,þÆøúü¹5û/¯ù! ¶6hZ[ÍæÖÉÕq\S×ùú^`îÖ,Ý È SÉ$òðXC‚Ae0@0âÿdsŒZÏ%°›;&ºß±dùðó˜uš)…ýá’v]‹ö3ûTæ•b[äÌdÐeàá '~ ÷ú§š™wÜPðƒ,èvWpâ@­³ _àS6´U%¦Ò"®­«§ñ$0¯€xÇÈ!X.IŒŒÔl<˜Ü¿ Š ÅÀÔ·V¶[SjS•™Q¾ÿðA!ŽzþGã¨Y¿AXhFL¬×ÓmÙVt¾þ ²4פãeè²%4s"ùø /ÙX—Uhàs’É„¬¯$ïØÙ$–»:‡ÓA|¼AO~a°üLóÉúýgû¡Žæí‰a¢34‰Iµi--uµm‹êóåÃu,“d‰ø5iD§ÀÇ(|6ÀǃØç áÓàÍJˆˆU®dp4¹Í®‚­Ç2[5GŒw¡†¹lEêIM/ïåêd|N„ñª‰–¯Ú´3ÞÏlÈ™gt*©[z’N¹‰oáB[(«¨S7ÃAæÛ«‡¾»uaÍ’%+7F©9K{¼ñÆqøy<ýôŒq~ }dU1 ÜnMQÞÙhFüà“È~žc ä-Â<ý©/êQÕpÚ’„ÚÌbfB‹®ó÷l;+<æý%lÞŸ_¸{ýø7WÛ9§”›ÿnL(/j‘Í´Õ¡$ç`7§ÞñK‘£cã(Šú/§CÍ endstream endobj 11 0 obj <> endobj 20 0 obj <>stream xœcd`ab`ddduö 21T~H3þaú!ËÜÝýcÝO]Önæn–µ?”„¾G ~åÿ(ÀÀÌȘ[Øàœ_PY”™žQ¢ ‘¬©`hii®£`d``©à˜›Z”™œ˜§à›X’‘š›Xää(ç'g¦–T*hØd””Xéë———ë%æëå¥Ûiê(”g–d(¥§•¥¦(¸åç•(ø%æ¦*€\¦"œós JKR‹|óSR‹ò˜ „„Abñ?ô£ƒïÇ÷îM?æoÚ>ŸñûÒ‡Ìßÿä]ÙÞ+çé­ÚÞ͑¾´ûl÷ñåzÙ³ºëTäRØõßì> „7»µïåQÞ”À®Ò=c<Ȩ§ßŸgx²‰ñòw†ïS?0ÿX÷Ý_4­³¶Ñ³¦¡¥Õª»¶›ã·?Ûw‘Ïk—=9½j¥äÊ•[öu_âø.ø›õÊo©ß¢†fºÛZ§-Y1wýºÕñr‹öØx¡›ãËa[+—'Woùß¿s»ººs$¸³ñ•-øá<ë{þÔÉ Ø~'NcßÄu[Ž‹Å|>çêI<<÷æðð20Fh®Ò endstream endobj 9 0 obj <> endobj 21 0 obj <>stream xœ[HSaÇ¿Óæ:ÙXZÕÙ¡ ) -‰D‰"YÁ’Ê.sK=éÑ-·sÖÙÙ­Ômi}˜nÙr³mn§žÈX`t#Zd=„ôäCAy¡"ˆzˆïÈyÉ|ùóû¿ý~P®†© F㱊ÿ´SÚŒI[VH[P¦¤©EKT+ Z9¾èX.­CÔd^ ”Ƹ:» ¬ÓÏÙZ¬>stream 2021-07-26T08:38:58-07:00 2021-07-26T08:38:58-07:00 dvips(k) 5.999 Copyright 2019 Radical Eye Software probability-density_.dvi endstream endobj 2 0 obj <>endobj xref 0 25 0000000000 65535 f 0000002913 00000 n 0000010646 00000 n 0000002854 00000 n 0000002697 00000 n 0000000332 00000 n 0000002677 00000 n 0000002978 00000 n 0000003842 00000 n 0000008108 00000 n 0000003685 00000 n 0000007368 00000 n 0000003341 00000 n 0000004870 00000 n 0000003112 00000 n 0000004301 00000 n 0000003019 00000 n 0000003049 00000 n 0000004510 00000 n 0000005179 00000 n 0000007581 00000 n 0000008332 00000 n 0000003255 00000 n 0000004204 00000 n 0000009177 00000 n trailer << /Size 25 /Root 1 0 R /Info 2 0 R /ID [<0EBD16C126AFE1F871F9B1F51F37959F><0EBD16C126AFE1F871F9B1F51F37959F>] >> startxref 10865 %%EOF maxLik/vignettes/probability-density.asy0000644000175100001440000000403614077525067020260 0ustar hornikusersunitsize(25mm,65mm); defaultpen(fontsize(9)); real xLeft = -2.2; real xRight = 2.2; real yTop = 0.5; // normal density real dnorm(real x) { return 1/sqrt(2*pi)*exp(-1/2*x^2); } // compute normal curve, plot later path normalCurve; for(real x = xLeft + 0.1; x < xRight - 0.1; x += 0.15) { normalCurve = normalCurve..(x, dnorm(x)); } // Example points real xs[] = {-1.695, 0.3}; real delta = 0.15; int i = 1; for(real x : xs) { real fx = dnorm(x); real xl = x - delta/2; real xr = x + delta/2; real tl = times(normalCurve, xl)[0]; real tr = times(normalCurve, xr)[0]; path striptop = subpath(normalCurve, tl, tr); path area = (xl, 0)--striptop--(xr, 0)--cycle; filldraw(area, lightgray, linewidth(0.2)); draw((x, 0)--(x, dnorm(x)), dashed); label("$x_" + string(i) + " = " + format("%f", x) +"$", (x, 0), S + 0.2E); // width marks and width real barheight = dnorm(x) + 0.06; Label widthLabel = Label("width $\delta$", MidPoint, 2N); draw(widthLabel, (xl, barheight)--(xr, barheight), linewidth(0.4), Bars); arrow((xl, barheight), W, length=50delta, margin=DotMargin, linewidth(0.4)); arrow((xr, barheight), E, length=50delta, margin=DotMargin); // mark the function value real xmarker = x + 1.5delta; draw((x, fx)--(xmarker,fx), dotted); Label valueLabel = Label("$f(x_" + string(i) + ") = " + format("%5.3f", fx) + "$", position=EndPoint, E); path valuePath = (xmarker, fx)--(xmarker+delta, fx); draw(valueLabel, valuePath, linewidth(0.4)); pair barx = relpoint(valuePath, 0.5); draw((barx.x, 0)--barx, Arrow(4)); // ++i; } // add normal curve later as filling area cuts into the curve otherwise draw(normalCurve, linewidth(0.7)); // Add Axes after are to avoid cutting into it path xaxis = (xLeft,0)--(xRight,0); path yaxis = (0,0)--(0,yTop); draw(xaxis, Arrow(TeXHead, 1)); draw(yaxis, Arrow(TeXHead, 1)); label("$x$", point(xaxis, 1), 2S); // Axis labels real tickLength = 0.05*yTop; for(int x = (int)xLeft; x <= (int)xRight; ++x) { draw((x,0)--(x,-tickLength)); label(string(x), (x,-tickLength), 3S); } maxLik/vignettes/maxlik.bib0000644000175100001440000001237714077525067015517 0ustar hornikusers% Encoding: UTF-8 @Article{bottou2018SIAM, author = {Bottou, L. and Curtis, F. and Nocedal, J.}, title = {Optimization Methods for Large-Scale Machine Learning}, journal = {SIAM Review}, year = {2018}, volume = {60}, number = {2}, pages = {223-311}, doi = {10.1137/16M1080173}, eprint = {https://doi.org/10.1137/16M1080173}, owner = {otoomet}, review = {A long review of different optimization methods from ML perspective. Revolves around SGD and a lot of space is devoted to show how other popular methods are related to SGD. A lot about convergence speed. Very little about non-smooth objective functions, just l1 norm optimization.}, timestamp = {2019.08.06}, url = { https://doi.org/10.1137/16M1080173 }, } @Article{keskar+2016ArXiv, author = {Nitish Shirish Keskar and Dheevatsa Mudigere and Jorge Nocedal and Mikhail Smelyanskiy and Ping Tak Peter Tang}, title = {On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima}, journal = {ArXiv}, year = {2016}, volume = {abs/1609.04836}, abstract = {The stochastic gradient descent (SGD) method and its variants are algorithms of choice for many Deep Learning tasks. These methods operate in a small-batch regime wherein a fraction of the training data, say $32$-$512$ data points, is sampled to compute an approximation to the gradient. It has been observed in practice that when using a larger batch there is a degradation in the quality of the model, as measured by its ability to generalize. We investigate the cause for this generalization drop in the large-batch regime and present numerical evidence that supports the view that large-batch methods tend to converge to sharp minimizers of the training and testing functions - and as is well known, sharp minima lead to poorer generalization. In contrast, small-batch methods consistently converge to flat minimizers, and our experiments support a commonly held view that this is due to the inherent noise in the gradient estimation. We discuss several strategies to attempt to help large-batch methods eliminate this generalization gap}, owner = {siim}, review = {Analyze the sharpness of obtained minima in loss function when using small/large batches for SGD. Incorporate several mid-size neural networks for image processing, including fully connected and convolutional. Show both using graphs and computing sharpness that small batches lead to flat minima while large ones to sharp minima. Speculate it is because the small batches are more noisy, will jump out of the sharp basing but get stuck in flat ones. Give some evidence that small batch followed by large batch may improve the results.}, timestamp = {2020.04.08}, } @Book{goodfellow+2016DL, title = {Deep Learning}, publisher = {MIT Press}, year = {2016}, author = {Ian J. Goodfellow and Yoshua Bengio and Aaron Courville}, editor = {Thomas Dietterich}, isbn = {9780262035613}, owner = {siim}, timestamp = {2020.06.02}, } @Article{henningsen+toomet2011, author = {Henningsen, Arne and Toomet, Ott}, title = {maxLik: A package for maximum likelihood estimation in R}, journal = {Computational Statistics}, year = {2011}, volume = {26}, pages = {443-458}, issn = {0943-4062}, note = {10.1007/s00180-010-0217-1}, affiliation = {Institute of Food and Resource Economics, University of Copenhagen, Rolighedsvej 25, 1958 Frederiksberg C, Denmark}, issue = {3}, keyword = {Computer Science}, owner = {siim}, publisher = {Physica Verlag, An Imprint of Springer-Verlag GmbH}, timestamp = {2020.06.02}, url = {http://dx.doi.org/10.1007/s00180-010-0217-1}, } @Article{smith+2018arXiv, author = {Samuel L. Smith and Pieter-Jan Kindermans and Quoc V. Le}, title = {Don't Decay the Learning Rate, Increase the Batch Size}, journal = {ArXiv}, year = {2018}, volume = {abs/1711.00489}, abstract = {It is common practice to decay the learning rate. Here we show one can usually obtain the same learning curve on both training and test sets by instead increasing the batch size during training. This procedure is successful for stochastic gradient descent (SGD), SGD with momentum, Nesterov momentum, and Adam. It reaches equivalent test accuracies after the same number of training epochs, but with fewer parameter updates, leading to greater parallelism and shorter training times. We can further reduce the number of parameter updates by increasing the learning rate ϵ and scaling the batch size BâˆÏµ. Finally, one can increase the momentum coefficient m and scale Bâˆ1/(1−m), although this tends to slightly reduce the test accuracy. Crucially, our techniques allow us to repurpose existing training schedules for large batch training with no hyper-parameter tuning. We train ResNet-50 on ImageNet to 76.1% validation accuracy in under 30 minutes.}, owner = {siim}, review = {Employ Smith and Le (2017) scaling result that noise scale ~ B/n(1-m). Instead of decreasing the learning rate, they propose to increase the batch size. Show that this works well, mostly in SGD with momentum framework.}, timestamp = {2020.05.04}, } @Comment{jabref-meta: databaseType:bibtex;} maxLik/vignettes/using-maxlik.Rnw0000644000175100001440000010626014077525067016647 0ustar hornikusers\documentclass[a4paper]{article} \usepackage{amsmath} \usepackage{bbm} \usepackage[inline]{enumitem} \usepackage[T1]{fontenc} \usepackage[bookmarks=TRUE, colorlinks, pdfpagemode=none, pdfstartview=FitH, citecolor=black, filecolor=black, linkcolor=blue, urlcolor=black, ]{hyperref} \usepackage{graphicx} \usepackage{icomma} \usepackage[utf8]{inputenc} \usepackage{mathtools} % for extended pderiv arguments \usepackage{natbib} \usepackage{xargs} % for extended pderiv arguments \usepackage{xspace} % \SweaveUTF8 \newcommand{\COii}{\ensuremath{\mathit{CO}_{2}}\xspace} \DeclareMathOperator*{\E}{\mathbbm{E}}% expectation \newcommand*{\mat}[1]{\mathsf{#1}} \newcommand{\likelihood}{\mathcal{L}}% likelihood \newcommand{\loglik}{\ell}% log likelihood \newcommand{\maxlik}{\texttt{maxLik}\xspace} \newcommand{\me}{\mathrm{e}} % Konstant e=2,71828 \newcommandx{\pderiv}[3][1={}, 2={}]{\frac{\partial^{#2}{#1}}{\mathmbox{\partial{#3}}^{#2}}} % #1: function to differentiate (optional, empty = write after the formula) % #2: the order of differentiation (optional, empty=1) % #3: the variable to differentiate wrt (mandatory) \newcommand{\R}{\texttt{R}\xspace} \newcommand*{\transpose}{^{\mkern-1.5mu\mathsf{T}}} \renewcommand*{\vec}[1]{\boldsymbol{#1}} % \VignetteIndexEntry{Maximum likelihood estimation with maxLik} \title{Maximum Likelihood Estimation with \emph{maxLik}} \author{Ott Toomet} \begin{document} \maketitle <>= library(maxLik) set.seed(6) @ \section{Introduction} \label{sec:introduction} This vignette is intended for users who are familiar with concepts of likelihood and with the related methods, such as information equality and BHHH approximation, and with \R language. The vignette focuses on \maxlik usage and does not explain the underlying mathematical concepts. Potential target group includes researchers, graduate students, and industry practitioners who want to apply their own custom maximum likelihood estimators. If you need a refresher, consult the accompanied vignette ``Getting started with maximum likelihood and \maxlik''. The next section introduces the basic usage, including the \maxlik function, the main entry point for the package; gradients; different optimizers; and how to control the optimization behavior. These are topics that are hard to avoid when working with applied ML estimation. Section~\ref{sec:advanced-usage} contains a selection of more niche topics, including arguments to the log-likelihood function, other types of optimization, testing condition numbers, and constrained optimization. \section{Basic usage} \label{sec:basic-usage} \subsection{The maxLik function} \label{sec:maxlik-function} The main entry point to \maxlik functionality is the function of the same name, \verb|maxLik|. It is a wrapper around the underlying optimization algorithms that ensures that the returned object is of the right class so one can use the convenience methods, such as \verb|summary| or \verb|logLik|. It is important to keep in mind that \maxlik \emph{maximizes}, not minimizes functions. The basic usage of the function is very simple: just pass the log-likelihood function (argument \verb|logLik|) and the start value (argument \verb|start|). Let us demonstrate the basic usage by estimating the normal distribution parameters. We create 100 standard normals, and estimate the best fit mean and standard deviation. Instead of explicitly coding the formula for log-likelihood, we rely on the \R function \verb|dnorm| instead (see Section~\ref{sec:different-optimizers} for a version that does not use \verb|dnorm|): <<>>= x <- rnorm(100) # data. true mu = 0, sigma = 1 loglik <- function(theta) { mu <- theta[1] sigma <- theta[2] sum(dnorm(x, mean=mu, sd=sigma, log=TRUE)) } m <- maxLik(loglik, start=c(mu=1, sigma=2)) # give start value somewhat off summary(m) @ The algorithm converged in 7 iterations and one can check that the results are equal to the sample mean and variance.\footnote{Note that \R function \texttt{var} returns the unbiased estimator by using denominator $n-1$, the ML estimator is biased with denominator $n$. } This example demonstrates a number of key features of \verb|maxLik|: \begin{itemize} \item The first argument of the likelihood must be the parameter vector. In this example we define it as $\vec{\theta} = (\mu, \sigma)$, and the first lines of \verb|loglik| are used to extract these values from the vector. \item The \verb|loglik| function returns a single number, sum of individual log-likelihood contributions of individual $x$ components. (It may also return the components individually, see BHHH method in Section~\ref{sec:different-optimizers} below.) \item Vector of start values must be of correct length. If its components are named, those names are also displayed in \verb|summary| (and for \verb|coef| and \verb|stdEr|, see below). \item \verb|summary| method displays a handy summary of the results, including the convergence message, the estimated values, and statistical significance. \item \verb|maxLik| (and other auxiliary optimizers in the package) is a \emph{maximizer}, not minimizer. \end{itemize} As we did not specify the optimizer, \verb|maxLik| picked Newton-Raphson by default, and computed the necessary gradient and Hessian matrix numerically. \bigskip Besides summary, \verb|maxLik| also contains a number of utility functions to simplify handling of estimated models: \begin{itemize} \item \verb|coef| extracts the model coefficients: <<>>= coef(m) @ \item \verb|stdEr| returns the standard errors (by inverting Hessian): <<>>= stdEr(m) @ \item Other functions include \verb|logLik| to return the log-likelihood value, \verb|returnCode| and \verb|returnMessage| to return the convergence code and message respectively, and \verb|AIC| to return Akaike's information criterion. See the respective documentation for more information. \item One can also query the number of observations with \verb|nObs|, but this requires likelihood values to be supplied by observation (see the BHHH method in Section~\ref{sec:different-optimizers} below). \end{itemize} \subsection{Supplying analytic gradient} \label{sec:supplying-gradients} The simple example above worked fast and well. In particular, the numeric gradient \verb|maxLik| computed internally did not pose any problems. But users are strongly advised to supply analytic gradient, or even better, both the gradient and the Hessian matrix. More complex problems may be intractably slow, converge to a sub-optimal solution, or not converge at all if numeric gradients are noisy. Needless to say, unreliable Hessian also leads to unreliable inference. Here we show how to supply gradient to the \verb|maxLik| function. We demonstrate this with a linear regression example. Non-linear optimizers perform best in regions where level sets (contours) are roughly circular. In the following example we use data in a very different scale and create the log-likelihood function with extremely elongated elliptical contours. Now Newton-Raphson algorithm fails to converge when relying on numeric derivatives, but works well with analytic gradient. % using matrix notation We combine three vectors, $\vec{x}_{1}$, $\vec{x}_{2}$ and $\vec{x}_{3}$, created at a very different scale, into the design matrix $\mat{X} = \begin{pmatrix} \vec{x}_{1} & \vec{x}_{2} & \vec{x}_{3} \end{pmatrix}$ and compute $\vec{y}$ as \begin{equation} \label{eq:linear-regression-matrix} \vec{y} = \mat{X} \begin{pmatrix} 1 \\ 1 \\ 1 \end{pmatrix} + \vec{\epsilon}. \end{equation} We create $\vec{x}_{1}$, $\vec{x}_{2}$ and $\vec{x}_{3}$ as random normals with standard deviation of 1, 1000 and $10^{7}$ respectively, and let $\vec{\epsilon}$ be standard normal disturbance term: <<>>= ## create 3 variables with very different scale X <- cbind(rnorm(100), rnorm(100, sd=1e3), rnorm(100, sd=1e7)) ## note: correct coefficients are 1, 1, 1 y <- X %*% c(1,1,1) + rnorm(100) @ Next, we maximize negative of sum of squared errors \emph{SSE} (remember, \verb|maxLik| is a maximizer not minimizer) \begin{equation} \label{eq:ols-sse-matrix} \mathit{SSE}(\vec{\beta}) = (\vec{y} - \mat{X} \cdot \vec{\beta})^{\transpose} (\vec{y} - \mat{X} \cdot \vec{\beta}) \end{equation} as this is equivalent to likelihood maximization: <<>>= negSSE <- function(beta) { e <- y - X %*% beta -crossprod(e) # note '-': we are maximizing } m <- maxLik(negSSE, start=c(0,0,0)) # give start values a bit off summary(m, eigentol=1e-15) @ As one can see, the algorithm gets stuck and fails to converge, the last parameter value is also way off from the correct value $(1, 1, 1)$. We have amended summary with an extra argument, \verb|eigentol=1e-15|. Otherwise \maxlik refuses to compute standard errors for near-singular Hessian, see the documentation of \verb|summary.maxLik|. It makes no difference right here but we want to keep it consistent with the two following examples. Now let's improve the model performance with analytic gradient. The gradient of \emph{SSE} can be written as \begin{equation} \label{eq:ols-sse-gradient-matrix} \pderiv{\vec{\beta}}\mathit{SSE}(\vec{\beta}) = -2(\vec{y} - \mat{X}\vec{\beta})^{\transpose} \mat{X}. \end{equation} \maxlik uses numerator layout, i.e. the derivative of the scalar log-likelihood with respect to the column vector of parameters is a row vector. We can code the negative of it as <<>>= grad <- function(beta) { 2*t(y - X %*% beta) %*% X } @ We can add gradient to \verb|maxLik| as an additional argument \verb|grad|: <<>>= m <- maxLik(negSSE, grad=grad, start=c(0,0,0)) summary(m, eigentol=1e-15) @ Now the algorithm converges rapidly, and the estimate is close to the true value. Let us also add analytic Hessian, in this case it is \begin{equation} \label{eq:ols-sse-hessian-matrix} \frac{\partial^{2}}{\partial\vec{\beta}\,\partial\vec{\beta}^{\transpose}} \mathit{SSE}(\vec{\beta}) = 2\mat{X}^{\transpose}\mat{X} \end{equation} and we implement the negative of it as <<>>= hess <- function(beta) { -2*crossprod(X) } @ Analytic Hessian matrix can be included with the argument \verb|hess|, and now the results are <>= m <- maxLik(negSSE, grad=grad, hess=hess, start=c(0,0,0)) summary(m, eigentol=1e-15) @ Analytic Hessian did not change the convergence behavior here. Note that as the loss function is quadratic, Newton-Raphson should provide the correct solution in a single iteration only. However, this example has numerical issues when inverting near-singular Hessian. One can easily check that when creating covariates in a less extreme scale, then the convergence is indeed immediate. While using separate arguments \texttt{grad} and \texttt{hess} is perhaps the most straightforward way to supply gradients, \maxlik also supports gradient and Hessian supplied as log-likelihood attributes. This is motivated by the fact that computing gradient often involves a number of similar computations as computing log-likelihood, and one may want to re-use some of the results. We demonstrate this on the same example, by writing a version of log-likelihood function that also computes the gradient and Hessian: <>= negSSEA <- function(beta) { ## negative SSE with attributes e <- y - X %*% beta # we will re-use 'e' sse <- -crossprod(e) # note '-': we are maximizing attr(sse, "gradient") <- 2*t(e) %*% X attr(sse, "Hessian") <- -2*crossprod(X) sse } m <- maxLik(negSSEA, start=c(0,0,0)) summary(m, eigentol=1e-15) @ The log-likelihood with ``gradient'' and ``Hessian'' attributes, \verb|negSSEA|, computes log-likelihood as above, but also computes its gradient, and adds it as attribute ``gradient'' to the log-likelihood. This gives a potential efficiency gain as the residuals $\vec{e}$ are re-used. \maxlik checks the presence of the attribute, and if it is there, it uses the provided gradient. In real applications the efficiency gain will depend on the amount of computations re-used, and the number of likelihood calls versus gradient calls. While analytic gradients are always helpful and often necessary, they may be hard to derive and code. In order to help to derive and debug the analytic gradient, another provided function, \verb|compareDerivatives|, takes the log-likelihood function, analytic gradent, and compares the numeric and analytic gradient. As an example, we compare the log-likelihood and gradient functions we just coded: <<>>= compareDerivatives(negSSE, grad, t0=c(0,0,0)) # 't0' is the parameter value @ The function prints the analytic gradient, numeric gradient, their relative difference, and the largest relative difference value (in absolute value). The latter is handy in case of large gradient vectors where it may be hard to spot a lonely component that is off. In case of reasonably smooth functions, expect the relative difference to be smaller than $10^{-7}$. But in this example the numerical gradients are clearly problematic. \verb|compareDerivatives| supports vector functions, so one can test analytic Hessian in the same way by calling \verb|compareDerivatives| with \verb|gradlik| as the first argument and the analytic hessian as the second argument. \subsection{Different optimizers} \label{sec:different-optimizers} By default, \maxlik uses Newton-Raphson optimizer but one can easily swap the optimizer by \verb|method| argument. The supported optimizers include ``NR'' for the default Newton-Raphson, ``BFGS'' for gradient-only Broyden-Fletcher-Goldfarb-Shannon, ``BHHH'' for the information-equality based Berndt-Hall-Hall-Hausman, and ``NM'' for gradient-less Nelder-Mead. Different optimizers may be based on a very different approach, and certain concepts, such as \emph{iteration}, may mean quite different things. For instance, although Newton-Raphson is a simple, fast and intuitive method that approximates the function with a parabola, it needs to know the Hessian matrix (the second derivatives). This is usually even harder to program than gradient, and even slower and more error-prone when computed numerically. Let us replace NR with gradient-only BFGS method. It is a quasi-Newton method that computes its own internal approximation of the Hessian while relying only on gradients. We re-use the data and log-likelihood function from the first example where we estimated normal distribution parameters: <>= m <- maxLik(loglik, start=c(mu=1, sigma=2), method="BFGS") summary(m) @ One can see that the results were identical, but while NR converged in 7 iterations, it took 20 iterations for BFGS. In this example the BFGS approximation errors were larger than numeric errors when computing Hessian, but this may not be true for more complex objective functions. In a similar fashion, one can simply drop in most other provided optimizers. One method that is very popular for ML estimation is BHHH. We discuss it here at length because that method requires both log-likelihood and gradient function to return a somewhat different value. The essence of BHHH is information equality, the fact that in case of log-likelihood function $\loglik(\theta)$, the expected value of Hessian at the true parameter value $\vec{\theta}_{0}$ can be expressed through the expected value of the outer product of the gradient: \begin{equation} \label{eq:information-equality} \E \left[ \frac{\partial^2 l(\vec{\theta})} {\partial\vec{\theta}\, \partial\vec{\theta}^{\transpose}} \right]_{\vec{\theta} = \vec{\theta}_0} = - \E \left[ \left. \frac{\partial l(\vec{\theta})} {\partial\vec{\theta}^{\transpose}} \right|_{\vec{\theta} = \vec{\theta}_0} \cdot \left. \frac{\partial l(\vec{\theta})} {\partial\vec{\theta}} \right|_{\vec{\theta} = \vec{\theta}_0} \right]. \end{equation} Hence we can approximate Hessian by the average outer product of the gradient. Obviously, this is only an approximation, and it is less correct when we are far from the true value $\vec{\theta}_{0}$. Note also that when approximating expected value with average we rely on the assumption that the observations are independent. This may not be true for certain type of data, such as time series. However, in order to compute the average outer product, we need to compute gradient \emph{by observation}. Hence it is not enough to just return a single gradient vector, we have to compute a matrix where rows correspond to individual data points and columns to the gradient components. We demonstrate BHHH method by replicating the normal distribution example from above. Remember, the normal probability density is \begin{equation} \label{eq:normal-pdf} f(x; \mu, \sigma) = \frac{1}{\sqrt{2\pi}} \frac{1}{\sigma} \, \me^{ -\displaystyle\frac{1}{2} \frac{(x - \mu)^{2}}{\sigma^{2}} }. \end{equation} and hence the log-likelihood contribution of $x$ is \begin{equation} \label{eq:normal-loglik} \loglik(\mu, \sigma; x) = - \log{\sqrt{2\pi}} - \log \sigma - \frac{1}{2} \frac{(x - \mu)^{2}}{\sigma^{2}} \end{equation} and its gradient \begin{equation} \label{eq:normal-loglik-gradient} \begin{split} \pderiv{\mu} \loglik(\mu, \sigma; x) &= \frac{1}{\sigma^{2}}(x - \mu) \\ \pderiv{\sigma} \loglik(\mu, \sigma; x) &= -\frac{1}{\sigma} + \frac{1}{\sigma^{2}}(x - \mu)^{2}. \end{split} \end{equation} We can code these two functions as <<>>= loglik <- function(theta) { mu <- theta[1] sigma <- theta[2] N <- length(x) -N*log(sqrt(2*pi)) - N*log(sigma) - sum(0.5*(x - mu)^2/sigma^2) # sum over observations } gradlikB <- function(theta) { ## BHHH-compatible gradient mu <- theta[1] sigma <- theta[2] N <- length(x) # number of observations gradient <- matrix(0, N, 2) # gradient is matrix: # N datapoints (rows), 2 components gradient[, 1] <- (x - mu)/sigma^2 # first column: derivative wrt mu gradient[, 2] <- -1/sigma + (x - mu)^2/sigma^3 # second column: derivative wrt sigma gradient } @ Note that in this case we do not sum over the individual values in the gradient function (but we still do in log-likelihood). Instead, we fill the rows of the $N\times2$ gradient matrix with the values observation-wise. The results are similar to what we got above and the convergence speed is in-between that of Newton-Raphson and BFGS: \label{code:bhhh-example} <<>>= m <- maxLik(loglik, gradlikB, start=c(mu=1, sigma=2), method="BHHH") summary(m) @ In case we do not have time and energy to code the analytic gradient, we can let \maxlik compute the numeric one for BHHH too. In this case we have to supply the log-likelihood by observation. This essentially means we remove summing from the original likelihood function: <<>>= loglikB <- function(theta) { mu <- theta[1] sigma <- theta[2] -log(sqrt(2*pi)) - log(sigma) - 0.5*(x - mu)^2/sigma^2 # no summing here # also no 'N*' terms as we work by # individual observations } m <- maxLik(loglikB, start=c(mu=1, sigma=2), method="BHHH") summary(m) @ Besides of relying on information equality, BHHH is essentially the same algorithm as NR. As the Hessian is just approximated, its is converging at a slower pace than NR with analytic Hessian. But when relying on numeric derivatives only, BHHH may be more reliable. For convenience, the other methods also support observation-wise gradients and log-likelihood values, those numbers are just summed internally. So one can just code the problem in an BHHH-compatible manner and use it for all supported optimizers. \maxlik package also includes stochastic gradient ascent optimizer. As that method is rarely used for ML estimation, it cannot be supplied through the ``method'' argument. Consult the separate vignette ``Stochastic gradient ascent in \maxlik''. \subsection{Control options} \label{sec:control-options} \maxlik supports a number of control options, most of which can be supplied through \verb|control=list(...)| method. Some of the most important options include \verb|printLevel| to control debugging information, \verb|iterLim| to control the maximum number of iterations, and various \verb|tol|-parameters to control the convergence tolerances. For instance, we can limit the iterations to two, while also printing out the parameter estimates at each step. We use the previous example with BHHH optimizer: <<>>= m <- maxLik(loglikB, start=c(mu=1, sigma=2), method="BHHH", control=list(printLevel=3, iterlim=2)) summary(m) @ The first option, \verb|printLevel=3|, make \verb|maxLik| to print out parameters, gradient a few other bits of information at every step. Larger levels output more information, printlevel 1 only prints the first and last parameter values. The output from \maxlik-implemented optimizers is fairly consistent, but methods that call optimizers in other packages, such as BFGS, may output debugging information in a quite different way. The second option, \verb|iterLim=2| stops the algorithm after two iterations. It returns with code 4: iteration limit exceeded. Other sets of handy options are the convergence tolerances. There are three convergence tolerances: \begin{description} \item[tol] This measures the absolute convergence tolerance. Stop if successive function evaluations differ by less than \emph{tol} (default $10^{-8}$). \item[reltol] This is somewhat similar to \emph{tol}, but relative to the function value. Stop if successive function evaluations differ by less than $\mathit{reltol}\cdot (\loglik(\vec{\theta}) + \mathit{reltol})$ (default \verb|sqrt(.Machine[["double.eps"]])|, may be approximately \Sexpr{formatC(sqrt(.Machine[["double.eps"]]), digits=1)} on a modern computer). \item[gradtol] stop if the (Euclidean) norm of the gradient is smaller than this value (default $10^{-6}$). \end{description} Default tolerance values are typically good enough, but in certain cases one may want to adjust these. For instance, in case of function values are very large, one may rely only on tolerance, and ignore relative tolerance and gradient tolerance criteria. A simple way to achieve this is to set both \emph{reltol} and \emph{gradtol} to zero. In that case these two conditions are never satisfied and the algorithm stops only when the absolute convergence criterion is fulfilled. For instance, in the previous case we get: <<>>= m <- maxLik(loglikB, start=c(mu=1, sigma=2), method="BHHH", control=list(reltol=0, gradtol=0)) summary(m) @ When comparing the result with that on Page~\pageref{code:bhhh-example} we can see that the optimizer now needs more iterations and it stops with a return code that is related to tolerance, not relative tolerance. Note that BFGS and other optimizers that are based on the \verb|stats::optim| does not report the convergence results in a similar way as BHHH and NR, the algorithms provided by the \maxlik package. Instead of tolerance limits or gradient close to zero message, we hear about ``successful convergence''. Stochastic gradient ascent relies on completely different convergence criteria. See the dedicated vignette ``Stochastic Gradient Ascent in \maxlik''. \section{Advanced usage} \label{sec:advanced-usage} This section describes more advanced and less frequently used aspects of \maxlik. \subsection{Additional arguments to the log-likelihood function} \label{sec:additional-arguments-loglik} \maxlik expects the first argument of log-likelihood function to be the parameter vector. But the function may have more arguments. Those can be passed as additional named arguments to \verb|maxLik| function. For instance, let's change the log-likelihood function in a way that it expects data $\vec{x}$ to be passed as an argument \verb|x|. Now we have to call \maxlik with an additional argument \verb|x=...|: <<>>= loglik <- function(theta, x) { mu <- theta[1] sigma <- theta[2] sum(dnorm(x, mean=mu, sd=sigma, log=TRUE)) } m <- maxLik(loglik, start=c(mu=1, sigma=2), x=x) # named argument 'x' will be passed # to loglik summary(m) @ This approach only works if the argument names do not overlap with \verb|maxLik|'s arguments' names. If that happens, it prints an informative error message. \subsection{Maximizing other functions} \label{sec:maximizing-other-functions} \verb|maxLik| function is basically a wrapper around a number of maximization algorithms, and a set of likelihood-related methods, such as standard errors. However, from time-to-time we need to optimize other functions where inverting the Hessian to compute standard errors is not applicable. In such cases one can call the included optimizers directly, using the form \verb|maxXXX| where \verb|XXX| stands for the name of the method, e.g. \verb|maxNR| for Newton-Rapshon (\verb|method="NR"|) and \verb|maxBFGS| for BFGS. There is also \verb|maxBHHH| although the information equality--based BHHH is not correct if we do not work with log-likelihood functions. The arguments for \verb|maxXXX|-functions are largely similar to those for \maxlik, the first argument is the function, and one also has to supply start values. Let us demonstrate this functionality by optimizing 2-dimensional bell curve, \begin{equation} \label{eq:2d-bell-curve} f(x, y) = \me^{-x^{2} - y^{2}}. \end{equation} We code this function and just call \verb|maxBFGS| on it: <<>>= f <- function(theta) { x <- theta[1] y <- theta[2] exp(-x^2 - y^2) # optimum at (0, 0) } m <- maxBFGS(f, start=c(1,1)) # give start value a bit off summary(m) @ Note that the summary output is slightly different: it reports the parameter and gradient value, appropriate for a task that is not likelihood optimization. Behind the scenes, this is because the \verb|maxXXX|-functions return an object of \emph{maxim}-class, not \emph{maxLik}-class. \subsection{Testing condition numbers} \label{sec:testing-condition-numbers} Analytic gradient we demonstrated in Section~\ref{sec:supplying-gradients} helps to avoid numerical problems. But not all problems can or should be solved by analytic gradients. For instance, multicollinearity should be addressed on data or model level. \maxlik provides a helper function, \verb|condiNumbers|, to detect such problems. We demonstrate this by creating a highly multicollinear dataset and estimating a linear regression model. We re-use the regression code from Section~\ref{sec:supplying-gradients} but this time we create multicollinear data in similar scale. <<>>= ## create 3 variables, two independent, third collinear x1 <- rnorm(100) x2 <- rnorm(100) x3 <- x1 + x2 + rnorm(100, sd=1e-6) # highly correlated w/x1, x2 X <- cbind(x1, x2, x3) y <- X %*% c(1, 1, 1) + rnorm(100) m <- maxLik(negSSEA, start=c(x1=0, x2=0, x3=0)) # negSSEA: negative sum of squared errors # with gradient, hessian attribute summary(m) @ As one can see, the model converges but the standard errors are missing (because Hessian is not negative definite). In such case we may learn more about the problem by testing the condition numbers $\kappa$ of either the design matrix $\mat{X}$ or of the Hessian matrix. It is instructive to test not just the whole matrix, but to do it column-by-column, and see where the number suddenly jumps. This hints which variable does not play nicely with the rest of data. \verb|condiNumber| provides such functionality. First, we test the condition number of the design matrix: <<>>= condiNumber(X) @ We can see that when only including $\vec{x}_{1}$ and $\vec{x}_{2}$ into the design, the condition number is 1.35, far from any singularity-related problems. However, adding $\vec{x}_{3}$ to the matrix causes $\kappa$ to jump to over 5 millions. This suggests that $\vec{x}_{3}$ is highly collinear with $\vec{x}_{1}$ and $\vec{x}_{2}$. In this example the problem is obvious as this is how we created $\vec{x}_{3}$, in real applications one often needs further analysis. For instance, the problem may be in categorical values that contain too few observations or complex fixed effects that turn out to be perfectly multicollinear. A good suggestion is to estimate a linear regression model where one explains the offending variable using all the previous variables. In this example we might estimate \verb|lm(x3 ~ x1 + x2)| and see which variables help to explain $\vec{x}_{3}$ perfectly. Sometimes the design matrix is fine but the problem arises because data and model do not match. In that case it may be more informative to test condition number of Hessian matrix instead. The example below creates a linearly separated set of observations and estimates this with logistic regression. As a refresher, the log-likelihood of logistic regression is \begin{equation} \label{eq:logistic-loglik} \loglik(\beta) = \sum_{i: y_{i} = 1} \log\Lambda(\vec{x}_{i}^{\transpose} \vec{\beta}) + \sum_{i: y_{i} = 0} \log\Lambda(-\vec{x}_{i}^{\transpose} \vec{\beta}) \end{equation} where $\Lambda(x) = 1/(1 + \exp(-x))$ is the logistic cumulative distribution function. We implement it using \R function \verb|plogis| <<>>= x1 <- rnorm(100) x2 <- rnorm(100) x3 <- rnorm(100) X <- cbind(x1, x2, x3) y <- X %*% c(1, 1, 1) > 0 # y values 1/0 linearly separated loglik <- function(beta) { link <- X %*% beta sum(ifelse(y > 0, plogis(link, log=TRUE), plogis(-link, log=TRUE))) } m <- maxLik(loglik, start=c(x1=0, x2=0, x3=0)) summary(m) @ Not surprisingly, all coefficients tend to infinity and inference is problematic. In this case the design matrix does not show any issues: <<>>= condiNumber(X) @ But the Hessian reveals that including $\vec{x}_{3}$ in the model is still problematic: <<>>= condiNumber(hessian(m)) @ Now the problem is not multicollinearity but the fact that $\vec{x}_{3}$ makes the data linearly separable. In such cases we may want to adjust our model or estimation strategy. \subsection{Fixed parameters and constrained optimization} \label{sec:fixed-parameters} \maxlik supports three types of constrains. The simplest case just keeps certain parameters' values fixed. The other two, general linear equality and inequality constraints are somewhat more complex. Occasionally we want to treat one of the model parameters as constant. This can be achieved in a very simple manner, just through the argument \verb|fixed|. It must be an index vector, either numeric, such as \verb|c(2,4)|, logical as \verb|c(FALSE, TRUE, FALSE, TRUE)|, or character as \verb|c("beta2", "beta4")| given \verb|start| is a named vector. We revisit the first example of this vignette and estimate the normal distribution parameters again. However, this time we fix $\sigma = 1$: <<>>= x <- rnorm(100) loglik <- function(theta) { mu <- theta[1] sigma <- theta[2] sum(dnorm(x, mean=mu, sd=sigma, log=TRUE)) } m <- maxLik(loglik, start=c(mu=1, sigma=1), fixed="sigma") # fix the component named 'sigma' summary(m) @ The result has $\sigma$ exactly equal to $1$, it's standard error $0$, and $t$ value undefined. The fixed components are ignored when computing gradients and Hessian in the optimizer, essentially reducing the problem from 2-dimensional to 1-dimensional. Hence the inference for $\mu$ is still correct. Next, we demonstrate equality constraints. We take the two-dimensional function we used in Section~\ref{sec:maximizing-other-functions} and add constraints $x + y = 1$. The constraint must be described in matrix form $\mat{A}\,\vec{\theta} + \vec{B} = 0$ where $\vec{\theta}$ is the parameter vector and matrix $\mat{A}$ and vector $\vec{B}$ describe the constraints. In this case we can write \begin{equation} \label{eq:equality-constraints} \begin{pmatrix} 1 & 1 \end{pmatrix} \cdot \begin{pmatrix} x \\ y \end{pmatrix} + \begin{pmatrix} -1 \end{pmatrix} = 0, \end{equation} i.e. $\mat{A} = (1 \; 1)$ and $\vec{B} = -1$. These values must be supplied to the optimizer argument \verb|constraints|. This is a list with components names \verb|eqA| and \verb|eqB| for $\mat{A}$ and $\vec{B}$ accordingly. We do not demonstrate this with a likelihood example as no corrections to the Hessian matrix is done and hence the standard errors are incorrect. But if you are not interested in likelihood-based inference, it works well: <<>>= f <- function(theta) { x <- theta[1] y <- theta[2] exp(-x^2 - y^2) # optimum at (0, 0) } A <- matrix(c(1, 1), ncol=2) B <- -1 m <- maxNR(f, start=c(1,1), constraints=list(eqA=A, eqB=B)) summary(m) @ The problem is solved using sequential unconstrained maximization technique (SUMT). The idea is to add a small penalty for the constraint violation, and to slowly increase the penalty until violations are prohibitively expensive. As the example indicates, the solution is extremely close to the constraint line. The usage of inequality constraints is fairly similar. We have to code the inequalities as $\mat{A}\,\vec{\theta} + \vec{B} > 0$ where the matrices $\mat{A}$ and $\vec{B}$ are defined as above. Let us optimize the function over the region $x + y > 1$. In matrix form this will be \begin{equation} \label{eq:inequality-constraints-1} \begin{pmatrix} 1 & 1 \end{pmatrix} \cdot \begin{pmatrix} x \\ y \end{pmatrix} + \begin{pmatrix} -1 \end{pmatrix} > 0. \end{equation} Supplying the constraints is otherwise similar to the equality constraints, just the constraints-list components must be called \verb|ineqA| and \verb|ineqB|. As \verb|maxNR| does not support inequality constraints, we use \verb|maxBFGS| instead. The corresponding code is <<>>= A <- matrix(c(1, 1), ncol=2) B <- -1 m <- maxBFGS(f, start=c(1,1), constraints=list(ineqA=A, ineqB=B)) summary(m) @ Not surprisingly, the result is exactly the same as in case of equality constraints, in this case the optimum is found at the boundary line, the same line what we specified when demonstrating the equality constraints. One can supply more than one set of constraints, in that case these all must be satisfied at the same time. For instance, let's add another condition, $x - y > 1$. This should be coded as another line of $\mat{A}$ and another component of $\vec{B}$, in matrix form the constraint is now \begin{equation} \label{eq:inequality-constraints-2} \begin{pmatrix} 1 & 1\\ 1 & -1 \end{pmatrix} \cdot \begin{pmatrix} x \\ y \end{pmatrix} + \begin{pmatrix} -1 \\ -1 \end{pmatrix} > \begin{pmatrix} 0 \\ 0 \end{pmatrix} \end{equation} where ``>'' must be understood as element-wise operation. We also have to ensure the initial value satisfies the constraint, so we choose $\vec{\theta}_{0} = (2, 0)$. The code will be accordingly: <<>>= A <- matrix(c(1, 1, 1, -1), ncol=2) B <- c(-1, -1) m <- maxBFGS(f, start=c(2, 0), constraints=list(ineqA=A, ineqB=B)) summary(m) @ The solution is $(1, 0)$ the closest point to the origin where both constraints are satisfied. \bigskip This example concludes the \maxlik usage introduction. For more information, consult the fairly extensive documentation, and the other vignettes. % \bibliographystyle{apecon} % \bibliography{maxlik} \end{document} maxLik/vignettes/intro-to-maximum-likelihood.Rnw0000644000175100001440000010672614077525067021615 0ustar hornikusers\documentclass[a4paper]{article} \usepackage{graphics} \usepackage{amsmath} \usepackage{amssymb} \usepackage[font={small,sl}]{caption} \usepackage[inline]{enumitem} \usepackage{indentfirst} \usepackage[utf8]{inputenc} \usepackage{natbib} \usepackage{siunitx} \usepackage{xspace} % \SweaveUTF8 \newcommand{\COii}{\ensuremath{\mathit{CO}_{2}}\xspace} \newcommand*{\mat}[1]{\mathsf{#1}} \newcommand{\likelihood}{\mathcal{L}}% likelihood \newcommand{\loglik}{\ell}% log likelihood \newcommand{\maxlik}{\texttt{maxLik}\xspace} \newcommand{\me}{\mathrm{e}} % Konstant e=2,71828 \newcommand{\R}{\texttt{R}\xspace} \newcommand*{\transpose}{^{\mkern-1.5mu\mathsf{T}}} \renewcommand*{\vec}[1]{\boldsymbol{#1}} % \VignetteIndexEntry{Introduction: what is maximum likelihood} \begin{document} <>= options(keep.source = TRUE, width = 60, try.outFile=stdout() # make try to produce error messages ) set.seed(34) @ \title{Getting started with maximum likelihood and \texttt{maxLik}} \author{Ott Toomet} \maketitle \section{Introduction} This vignette is intended for readers who are unfamiliar with the concept of likelihood, and for those who want a quick intuitive brush-up. The potential target group includes advanced undergraduate students in technical fields, such as statistics or economics, graduate students in social sciences and engineering who are devising their own estimators, and researchers and practitioners who have little previous experience with ML. However, one should have basic knowledge of \R language. If you are familiar enough with the concept of likelihood and maximum likelihood, consult instead the other vignette ``Maximum Likelihood Estimation with \maxlik''. Maximum Likelihood (ML) in its core is maximizing the \emph{likelihood} over the parameters of interest. We start with an example of a random experiment that produces discrete values to explain what is likelihood and how it is related to probability. The following sections cover continuous values, multiple parameters in vector form, and we conclude with a linear regression example. The final section discusses the basics of non-linear optimization. The examples are supplemented with very simple code and assume little background besides basic statistics and basic \R knowledge. \section{Discrete Random Values} \label{sec:discrete-random-variables} We start with a discrete case. ``Discrete'' refers to random experiments or phenomena with only limited number of possible outcomes, and hence we can compute and tabulate every single outcome separately. Imagine you are flipping a fair coin. What are the possible outcomes and what are the related probabilities? Obviously, in case of a coin there are only two outcomes, heads $H$ and tails $T$. If the coin is fair, both of these will have probability of exactly 0.5. Such random experiment is called \emph{Bernoulli process}. More specifically, this is \emph{Bernoulli(0.5)} process as for the fair coin the probability of ``success'' is 0.5 (below we consider success to be heads, but you can choose tails as well). If the coin is not fair, we denote the corresponding process Bernoulli($p$), where $p$ is the probability of heads. Now let us toss the coin two times. What is the probability that we end up with one heads and one tails? As the coin flips are independent,\footnote{Events are independent when outcome of one event does not carry information about the outcome of the other event. Here the result of the second toss is not related to the outcome of the first toss.} we can just multiply the probabilities: $0.5$ for a single heads and $0.5$ for a single tails equals $0.25$ when multiplied. However, this is not the whole story--there are two ways to get one heads and one tails, either $H$ first and $T$ thereafter or $T$ first and $H$ thereafter. Both of these events are equally likely, so the final answer will be 0.5. But now imagine we do not know if the coin is fair. Maybe we are not tossing a coin but an object of a complex shape. We can still label one side as ``heads'' and the other as ``tails''. But how can we tell what is the probability of heads? Let's start by denoting this probability with $p$. Hence the probability of tails will be $1-p$, and the probability to receive one heads, one tails when we toss the object two times will be $2 p (1-p)$: $p$ for one heads, $1-p$ for one tails, and ``2'' takes into account the fact that we can get this outcome in two different orders. This probability is essentially likelihood. We denote likelihood with $\likelihood(p)$, stressing that it depends on the unknown probability $p$. So in this example we have \begin{equation} \label{eq:2-coin-likelihood} \likelihood(p) = 2 \, p \, (1-p). \end{equation} $p$ is the \emph{model parameter}, the unknown number we want to compute with the help of likelihood. Let's repeat here what did we do above: \begin{enumerate} \item We observe data. In this example data contains the counts: one heads, one tails. \item We model the coin toss experiment, the data generating process, as Bernoulli($p$) random variable. $p$, the probability of heads, is the model parameter we want to calculate. Bernoulli process has only a single parameter, but more complex processes may contain many more. \item Thereafter we compute the probability to observe the data based on the model. Here it is equation~\eqref{eq:2-coin-likelihood}. This is why we need a probability model. As the model contains unknown parameters, the probability will also contain parameters. \item And finally we just call this probability \emph{likelihood} $\likelihood(p)$. We write it as a function of the parameter to stress that the parameter is what we are interested in. Likelihood also depends on data (the probability will look different for e.g. two heads instead of a head and a tail) but we typically do not reflect this in notation. \end{enumerate} The next task is to use this likelihood function to \emph{estimate} the parameter, to use data to find the best possible parameter value. \emph{Maximum likelihood} (ML) method finds such parameter value that maximizes the likelihood function. It can be shown that such parameter value has a number of desirable properties, in particular it will become increasingly similar to the ``true value'' on an increasingly large dataset (given that our probability model is correct).\footnote{This property is formally referred to as \emph{consistency}. ML is a consistent estimator.} These desirable properties, and relative simplicity of the method, have made ML one of the most widely used statistical estimators. Let us generalize the example we did above for an arbitrary number of coin flips. Assume the coin is of unknown ``fairness'' where we just denote the probability to receive heads with $p$. Further, assume that out of $N$ trials, $N_{H}$ trials were heads and $N_{T}$ trials were tails. The probability of this occuring is \begin{equation} \label{eq:general-cointoss-probability} \binom{N}{N_{H}} \, p^{N_{H}} \, (1 - p)^{N_{T}} \end{equation} $p^{N_{H}}$ is the probability to get $N_{H}$ heads, $(1 - p)^{N_{T}}$ is the probability to get $N_{T}$ tails, and the binomial coefficient $\displaystyle\binom{N}{N_{H}} = \displaystyle\frac{N!}{N_{H}! (N - N_{H})!}$ takes into account that there are many ways how heads and tail can turn up while still resulting $N_{H}$ heads and $N_{T}$ tails. In the previous example $N=2$, $N_{H} = 1$ and there were just two possible combinations as $\displaystyle\binom{2}{1} = 2$. The probability depends on both the parameter $p$ and data--the corresponding counts $N_{H}$ and $N_{T}$. Equation~\eqref{eq:general-cointoss-probability} is essentially likelihood--probability to observe data. We are interested how does it depend on $p$ and stress this by writing $p$ in the first position followed by semicolon and data as we care less about the dependency on data: \begin{equation} \label{eq:general-cointoss-likelihood} \likelihood(p; N_{H}, N_{T}) = \binom{N}{N_{H}} \, p^{N_{H}} \, (1 - p)^{N_{T}} \end{equation} Technically, it is easier to work with log-likelihood instead of likelihood (as log is monotonic function, maximum of likelihood and maximum of log-likelihood occur at the same parameter value). We denote log-likelihood by $\loglik$ and write \begin{equation} \label{eq:general-cointoss-loglik} \loglik(p; N_{H}, N_{T}) = \log\likelihood(p; N_{H}, N_{T}) = \log \binom{N}{N_{H}} + N_{H} \log p + N_{T} \log (1 - p). \end{equation} ML estimator of $p$ is the value that maximizes this expression. Fortunately, in this case the binomial coefficient $\displaystyle\binom{N}{N_{H}}$ depends only on data but not on the $p$. Intuitively, $p$ determines the probability of various combinations of heads and tails, but \emph{what kind of combinations are possible} does not depend on $p$. Hence we can ignore the first term on the right hand side of~\eqref{eq:general-cointoss-loglik} when maximizing the log-likelihood. Such approach is very common in practice, many terms that are invariant with respect to parameters are often ignored. Hence, with we can re-define the log-likelihood as \begin{equation} \label{eq:general-cointoss-partial-loglik} \loglik(p; N_{H}, N_{T}) = N_{H} \log p + N_{T} \log (1 - p). \end{equation} It is easy to check that the solution, the value of $p$ that maximizes log-likelihood~\eqref{eq:general-cointoss-partial-loglik} is\footnote{Just differentiate $\loglik(p)$ with respect to $p$, set the result to zero, and isolate $p$.} \begin{equation} \label{eq:general-cointoss-solution} p^{*} = \frac{N_{H}}{N_{H} + N_{T}} = \frac{N_{H}}{N}. \end{equation} This should be surprise to no-one: the intuitive ``fairness'' of the coin is just the average percentage of heads we get. Now it is time to try this out on computer with \texttt{maxLik}. Let's assume we toss a coin and receive $H_{H} = 3$ heads and $H_{T} = 7$ tails: <<>>= NH <- 3 NT <- 7 @ Next, we have to define the log-likelihood function. It has to be a function of the parameter, and the parameter must be its first argument. We can access data in different ways, for instance through the \R workspace environment. So we can write the log-likelihood as <<>>= loglik <- function(p) { NH*log(p) + NT*log(1-p) } @ And finally, we can use \texttt{maxLik} function to compute the likelihood. In its simplest form, \texttt{maxLik} requires two arguments: the log-likelihood function, and the start value for the iterative algorithm (see Section~\ref{sec:non-linear-optimization}, and the documentation and vignette \textsl{Maximum Likelihood Estimation with \maxlik} for more detailed explanations). The start value must be a valid parameter value (the loglik function must not give errors when called with the start value). We can choose $p_{0} = 0.5$ as the initial value, and let the algorithm find the best possible $p$ from there: <<>>= library(maxLik) m <- maxLik(loglik, start=0.5) summary(m) @ As expected, the best bet for $p$ is 0.3. Our intuitive approach--the percentage of heads in the experiment--turns also out to be the ML estimate. Next, we look at an example with continuous outcomes. \section{Continuous case: probability density and likelihood} \label{sec:continuous-outcomes} In the example above we looked at a discrete random process, a case where there were only a small number of distinct possibilities (heads and tails). Discrete cases are easy to understand because we can actually compute the respective probabilities, such as the probability to receive one heads and one tails in our experiment. Now we consider continuous random variables where the outcome can be any number in a certain interval. Unfortunately, in continuous case we cannot compute probability of any particular outcome. Or more precisely--we can do it, but the answer is always 0. This may sound a little counter-intuitive but perhaps the following example helps. If you ask the computer to generate a single random number between 0 and 1, you may receive \Sexpr{x <- runif(1); x}. What is the probability to get the same number again? You can try, you will get close but you won't get exactly the same number.\footnote{As computers operate with finite precision, the actual chances to repeat any particular random number are positive, although small. The exact answer depends on the numeric precision and the quality of random number generator. } But despite the probability to receive this number is zero, we somehow still produced it in the first place. Clearly, zero probability does not mean the number was impossible. However, if we want to receive a negative number from the same random number generator, it will be impossible (because we chose a generator that only produces numbers between 0 and 1). So probability 0-events may be possible and they may also be impossible. And to make matter worse, they may also be more likely and less likely. For instance, in case of standard normal random numbers (these numbers are distributed according to ``bell curve'') the values near $0$ are much more likely than values around $-2$, despite of the probability to receive any particular number still being 0 (see Figure~\ref{fig:standard-normal-intervals}). The solution is to look not at the individual numbers but narrow interval near these numbers. Consider the number of interest $x_{1}$, and compute the probability that the random outcome $X$ falls into the narrow interval of width $\delta$, $[x_{1} - \delta/2,\, x_{1} + \delta/2]$, around this number (Figure~\ref{fig:standard-normal-intervals}). Obviously, the smaller the width $\delta$, the less likely it is that $X$ falls into this narrow interval. But it turns out that when we divide the probability by the width, we get a stable value at the limit which we denote by $f(x_{1})$: \begin{equation} \label{eq:probability-density} f(x_{1}) = \lim_{\delta\to0} \frac{\Pr(X \in [x_{1} - \delta/2,\, x_{1} + \delta/2])}{\delta}. \end{equation} In the example on the Figure the values around $x_{1}$ are less likely than around $x_{2}$ and hence $f(x_{1}) < f(x_{2})$. The result, $f(x)$, is called \emph{probability density function}, often abbreviated as \emph{pdf}. In case of continuous random variables, we have to work with pdf-s instead of probabilities. \begin{figure}[ht] \centering \includegraphics{probability-density.pdf} \caption{Standard normal probability density (thick black curve). While $\Pr(X = x_{1}) = 0$, i.e. the probability to receive a random number exactly equal to $x_{1}$ is 0, the probability to receive a random number in the narrow interval of width $\delta$ around $x_{1}$ is positive. In this example, the probability to get a random number in the interval around $x_{2}$ is four times larger than for the interval around $x_{1}$. } \label{fig:standard-normal-intervals} \end{figure} Consider the following somewhat trivial example: we have sampled two independent datapoints $x_{1}$ and $x_{2}$ from normal distribution with variance 1 and mean (expected value) equal to $\mu$. Say, $x_{1} = \Sexpr{x1 <- rnorm(1); round(x1, 3)}$ and $x_{2} = \Sexpr{x1 <- rnorm(1); round(x1, 3)}$. Assume we do not know $\mu$ and use ML to estimate it. We can proceed in a similar steps as what we did for the discrete case: \begin{enumerate*}[label=\roman*)] \item observe data, in this case $x_{1}$ and $x_{2}$; \item set up the probability model; \item use the model to compute probability to observe the data; \item write the probability as $\loglik(\mu)$, log-likelihood function of the parameter $\mu$; \item and finally, find $\mu^{*}$, the $\mu$ value that maximizes the corresponding log-likelihood. \end{enumerate*} This will be our best estimate for the true mean. As we already have our data points $x_{1}$ and $x_{2}$, our next step is the probability model. The probability density function (pdf) for normal distribution with mean $\mu$ and variance 1 is \begin{equation} \label{eq:standard-normal-pdf} f(x; \mu) = \frac{1}{\sqrt{2\pi}} \, \me^{ \displaystyle -\frac{1}{2} (x - \mu)^{2} } \end{equation} (This is the thick curve in Figure~\ref{fig:standard-normal-intervals}). We write it as $f(x; \mu)$ as pdf is usually written as a function of data. But as our primary interest is $\mu$, we also add this as an argument. Now we use this pdf and~\eqref{eq:probability-density} to find the probability that we observe a datapoint in the narrow interval around $x$. Here it is just $f(x; \mu)\cdot \delta$. As $x_{1}$ and $x_{2}$ are independent, we can simply multiply the corresponding probabilities to find the combined probability that both random numbers are near their corresponding values: \begin{multline} \label{eq:two-normal-probability-likelihood} \Pr{\Big(X_{1} \in [x_{1} - \delta/2, x_{1} + \delta/2] \quad\text{and}\quad X_{2} \in [x_{2} - \delta/2, x_{2} + \delta/2]\Big)} =\\[2ex]= \underbrace{ \frac{1}{\sqrt{2\pi}} \, \me^{ \displaystyle -\frac{1}{2} (x_{1} - \mu)^{2} } \cdot\delta\ }_{ \text{First random value near $x_{1}$} } \times \underbrace{ \frac{1}{\sqrt{2\pi}} \, \me^{ \displaystyle -\frac{1}{2} (x_{2} - \mu)^{2} } \cdot\delta }_{ \text{Second random value near $x_{2}$} } \equiv\\[2ex]\equiv \tilde\likelihood(\mu; x_{1}, x_{2}). \end{multline} The interval width $\delta$ must be small for the equation to hold precisely. We denote this probability with $\tilde\likelihood$ to stress that it is essentially the likelihood, just not written in the way it is usually done. As in the coin-toss example above, we write it as a function of the parameter $\mu$, and put data $x_{1}$ and $x_{2}$ after semicolon. Now we can estimate $\mu$ by finding such a value $\mu^{*}$ that maximizes the expression~\eqref{eq:two-normal-probability-likelihood}. But note that $\delta$ plays no role in maximizing the likelihood. It is just a multiplicative factor, and it cannot be negative because it is a width. So for our maximization problem we can just ignore it. This is what is normally done when working with continuous random variables. Hence we write the likelihood as \begin{equation} \label{eq:two-normal-likelihood} \likelihood(\mu; x_{1}, x_{2}) = \frac{1}{\sqrt{2\pi}} \, \me^{ \displaystyle -\frac{1}{2} (x_{1} - \mu)^{2} } \times \frac{1}{\sqrt{2\pi}} \, \me^{ \displaystyle -\frac{1}{2} (x_{2} - \mu)^{2} }. \end{equation} We denote this by $\likelihood$ instead of $\tilde\likelihood$ to stress that this is how likelihood function for continuous random variables is usually written. Exactly as in the discrete case, it is better to use log-likelihood instead of likelihood to actually compute the maximum. From~\eqref{eq:two-normal-likelihood} we get log-likelihood as \begin{multline} \label{eq:two-standard-normal-loglik} \loglik(\mu; x_{1}, x_{2}) = -\log{\sqrt{2\pi}} -\frac{1}{2} (x_{1} - \mu)^{2} + (- \log{\sqrt{2\pi}}) -\frac{1}{2} (x_{2} - \mu)^{2} =\\[2ex]= - 2\log{\sqrt{2\pi}} - \frac{1}{2} \sum_{i=1}^{2} (x_{i} - \mu)^{2}. \end{multline} The first term, $- 2\log{\sqrt{2\pi}}$, is just an additive constant and plays no role in the actual maximization but it is typically still included when defining the likelihood function.\footnote{Additive or multiplicative constants do not play any role for optimization, but they are important when comparing different log-likelihood values. This is often needed for likelihood-based statistical tests. } One can easily check by differentiating the log-likelihood function that the maximum is achieved at $\mu^{*} = \frac{1}{2}(x_{1} + x_{2})$. It is not surprising, our intuitive understanding of mean value carries immediately over to the normal distribution context. Now it is time to demonstrate these results with \texttt{maxLik} package. First, create our ``data'', just two normally distributed random numbers: <<>>= x1 <- rnorm(1) # centered around 0 x2 <- rnorm(1) x1 x2 @ and define the log-likelihood function. We include all the terms as in the final version of~\eqref{eq:two-standard-normal-loglik}: <<>>= loglik <- function(mu) { -2*log(sqrt(2*pi)) - 0.5*((x1 - mu)^2 + (x2 - mu)^2) } @ We also need the parameter start value--we can pick $0$. And we use \texttt{maxLik} to find the best $\mu$: <<>>= m <- maxLik(loglik, start=0) summary(m) @ The answer is the same as sample mean: <<>>= (x1 + x2)/2 @ \section{Vector arguments} \label{sec:vector-arguments} The previous example is instructive but it does have very few practical applications. The problem is that we wrote the probability model as normal density with unknown mean $\mu$ but standard deviation $\sigma$ equal to one. However, in practice we hardly ever know that we are dealing with unit standard deviation. More likely both mean and standard deviation are unknown. So we have to incorporate the unknown $\sigma$ into the model. The more general normal pdf with standard deviation $\sigma$ is \begin{equation} \label{eq:normal-pdf} f(x; \mu, \sigma) = \frac{1}{\sqrt{2\pi}} \frac{1}{\sigma} \, \me^{ -\displaystyle\frac{1}{2} \frac{(x - \mu)^{2}}{\sigma^{2}} }. \end{equation} Similar reasoning as what we did above will give the log-likelihood \begin{equation} \label{eq:two-normal-loglik} \loglik(\mu, \sigma; x_{1}, x_{2}) = - 2\log{\sqrt{2\pi}} - 2\log \sigma - \frac{1}{2} \sum_{i=1}^{2} \frac{(x_{i} - \mu)^{2}}{\sigma^{2}}. \end{equation} We write the log-likelihood as function of both parameters, $\mu$ and $\sigma$; the semicolon that separates data $x_{1}$ and $x_{2}$ shows that though the log-likelihood depends on data too, we are not much interested in that dependency for now. This formula immediately extends to the case of $N$ datapoints as \begin{equation} \label{eq:normal-loglik} \loglik(\mu, \sigma) = - N\log{\sqrt{2\pi}} - N\log \sigma - \frac{1}{2} \sum_{i=1}^{N} \frac{(x_{i} - \mu)^{2}}{\sigma^{2}} \end{equation} where we have dropped the dependency on data in the notation. In this case we can actually do the optimization analytically, and derive the well-known intuitive results: the best estimator for mean $\mu$ is the sample average, and the best estimator for $\sigma^{2}$ is the sample variance. However, in general the expression cannot be solved analytically. We have to use numeric optimization to search for the best $\mu$ and $\sigma$ combination. The common multi-dimensional optimizers rely on linear algebra and expect all the parameters submitted as a single vector. So we can write the log-likelihood as \begin{equation} \label{eq:normal-loglik-vector} \loglik(\vec{\theta}) \quad\text{where}\quad \vec{\theta} = (\mu, \sigma). \end{equation} Here we denote both parameters $\mu$ and $\sigma$ as components of a single parameter vector $\vec{\theta}$. (Traditionally vectors are denoted by bold symbols.) We have also dropped dependency on data in notation, but remember that in practical applications log-likelihood always depends on data. This notation can be converted to computer code almost verbatim, just remember to extract the parameters $\mu$ and $\sigma$ from $\vec{\theta}$ in the log-likelihood function. Let us illustrate this using the \emph{CO2} dataset (in package \emph{datasets}). It describes \COii uptake (\si{\micro\mol\per\meter\squared\sec}, variable \emph{uptake}) by different grasses in various conditions. Let us start by plotting the histogram of uptake: <>= data(CO2) hist(CO2$uptake) @ Let us model the uptake as a normal random variable with expected value $\mu$ and standard deviation $\sigma$. We code~\eqref{eq:normal-loglik} while keeping both parameters in a single vector as in~\eqref{eq:normal-loglik-vector}: <<>>= loglik <- function(theta) { mu <- theta[1] sigma <- theta[2] N <- nrow(CO2) -N*log(sqrt(2*pi)) - N*log(sigma) - 0.5*sum((CO2$uptake - mu)^2/sigma^2) } @ The function is similar to the function \texttt{loglik} we used in Section~\ref{sec:continuous-outcomes}. There are just two main differences: \begin{itemize} \item both arguments, $\mu$ and $\sigma$ are passed as components of $\vec{\theta}$, and hence the function starts by unpacking the values. \item instead of using variables \texttt{x1} and \texttt{x2}, we now extract data directly from the data frame. \end{itemize} Besides these two differences, the formula now also includes $\sigma$ and sums over all observations, not just over two observations. As our parameter vector now contains two components, the start vector must also be of length two. Based on the figure we guess that a good starting value might be $\mu=30$ and $\sigma=10$: <<>>= m <- maxLik(loglik, start=c(mu=30, sigma=10)) summary(m) @ Indeed, our guess was close. \section{Final Example: Linear Regression} \label{sec:linear-regression} Now we have the main tools in place to extend the example above to a real statistical model. Let us build the previous example into linear regression. We describe \COii uptake (variable \emph{uptake}) by \COii concentration in air (variable \emph{conc}). We can write the corresponding regression model as \begin{equation} \label{eq:co2-regression} \mathit{uptake}_{i} = \beta_{0} + \beta_{1} \cdot \mathit{conc}_{i} + \epsilon_{i}. \end{equation} In order to turn this regression model into a ML problem, we need a probability model. Assume that the disturbance term $\epsilon$ is normally distributed with mean 0 and (unknown) variance $\sigma^{2}$ (this is a standard assumption in linear regression). Now we can follow~\eqref{eq:two-normal-loglik} and write log of pdf for a single observation as \begin{equation} \label{eq:co2-epsilon-loglik} \loglik(\sigma; \epsilon_{i}) = - \log{\sqrt{2\pi}} - \log \sigma - \frac{1}{2} \frac{\epsilon_{i}^{2}}{\sigma^{2}}. \end{equation} Here we have replaced $x_{i}$ by the random outcome $\epsilon_{i}$. As the expected value $\mu=0$ by assumption, we do not include $\mu$ in~\eqref{eq:co2-epsilon-loglik} and hence we drop it also from the argument list of $\loglik$. We do not know $\epsilon_{i}$ but we can express it using linear regression model~\eqref{eq:co2-regression}: \begin{equation} \label{eq:co2-epsilon} \epsilon_{i} = \mathit{uptake}_{i} - \beta_{0} - \beta_{1} \cdot \mathit{conc}_{i}. \end{equation} This expression depends on two additional unknown parameters, $\beta_{0}$ and $\beta_{1}$. These are the linear regression coefficients we want to find. Now we plug this into~\eqref{eq:co2-epsilon-loglik}: \begin{multline} \label{eq:co2-single-loglik} \loglik(\beta_{0}, \beta_{1}, \sigma; \mathit{uptake}_{i}, \mathit{conc}_{i}) =\\= - \log{\sqrt{2\pi}} - \log \sigma - \frac{1}{2} \frac{( \mathit{uptake}_{i} - \beta_{0} - \beta_{1} \cdot \mathit{conc}_{i} )^{2}}{\sigma^{2}}. \end{multline} We have designed log-likelihood formula for a single linear regression observation. It depends on three parameters, $\beta_{0}$, $\beta_{1}$ and $\sigma$. For $N$ observations we have \begin{multline} \label{eq:co2-loglik} \loglik(\beta_{0}, \beta_{1}, \sigma; \vec{\mathit{uptake}}, \vec{\mathit{conc}}) =\\= - N\log{\sqrt{2\pi}} - N\log \sigma - \frac{1}{2} \sum_{i=1}^{N} \frac{( \mathit{uptake}_{i} - \beta_{0} - \beta_{1} \cdot \mathit{conc}_{i})^{2}}{\sigma^{2}} \end{multline} where vectors $\vec{\mathit{uptake}}$ and $\vec{\mathit{conc}}$ contain the data values for all the observations. This is a fully specified log-likelihood function that we can use for optimization. Let us repeat what we have done: \begin{itemize} \item We wrote log-likelihood as a function of parameters $\beta_{0}$, $\beta_{1}$ and $\sigma$. Note that in case of linear regression we typically do not call $\sigma$ a parameter. But it is still a parameter, although one we usually do not care much about (sometimes called ``nuisance parameter''). \item The likelihood function also depends on data, here the vectors $\vec{\mathit{uptake}}$ and $\vec{\mathit{conc}}$. \item The function definition itself is just sum of log-likelihood contributions of individual normal disturbance terms, but as we do not observe the disturbance terms, we express those through the regression equation in~\eqref{eq:co2-single-loglik}. \end{itemize} Finally, we combine the three parameters into a single vector $\vec{\theta}$, suppress dependency on data in the notation, and write \begin{equation} \label{eq:co2-loglik-simplified} \loglik(\vec{\theta}) = - N\log{\sqrt{2\pi}} - N\log \sigma - \frac{1}{2} \sum_{i=1}^{N} \frac{( \mathit{uptake}_{i} - \beta_{0} - \beta_{1} \cdot \mathit{conc}_{i})^{2}}{\sigma^{2}}. \end{equation} This is the definition we can easily code and estimate. We guess start values $\beta_{0} = 30$ (close to the mean), $\beta_{1} = 0$ (uptake does not depend on concentration) and $\sigma=10$ (close to sample standard deviation). We can convert~\eqref{eq:co2-loglik-simplified} into code almost verbatim, below we choose to compute the expected uptake $\mu$ as an auxiliary variable: <<>>= loglik <- function(theta) { beta0 <- theta[1] beta1 <- theta[2] sigma <- theta[3] N <- nrow(CO2) ## compute new mu based on beta1, beta2 mu <- beta0 + beta1*CO2$conc ## use this mu in a similar fashion as previously -N*log(sqrt(2*pi)) - N*log(sigma) - 0.5*sum((CO2$uptake - mu)^2/sigma^2) } m <- maxLik(loglik, start=c(beta0=30, beta1=0, sigma=10)) summary(m) @ These are the linear regression estimates: $\beta_{0} = \Sexpr{round(coef(m)["beta0"], 3)}$ and $\beta_{1} = \Sexpr{round(coef(m)["beta1"], 3)}$. Note that \maxlik output also provides standard errors, $z$-values and $p$-values, hence we see that the results are highly statistically significant. One can check that a linear regression model will give similar results: <<>>= summary(lm(uptake ~ conc, data=CO2)) @ Indeed, the results are close although not identical. \section{Non-linear optimization} \label{sec:non-linear-optimization} Finally, we discuss the magic inside \texttt{maxLik} that finds the optimal parameter values. Although not necessary in everyday work, this knowledge helps to understand the issues and potential solutions when doing non-linear optimization. So how does the optimization work? Consider the example in Section~\ref{sec:vector-arguments} where we computed the normal distribution parameters for \COii intake. There are two parameters, $\mu$ and $\sigma$, and \maxlik returns the combination that gives the largest possible log-likelihood value. We can visualize the task by plotting the log-likelihood value for different combinations of $\mu$, $\sigma$ (Figure~\ref{fig:mu-sigma-plot}). \begin{figure}[ht] \centering <>= loglik <- function(theta) { mu <- theta[1] sigma <- theta[2] N <- nrow(CO2) -N*log(sqrt(2*pi)) - N*log(sigma) - 0.5*sum((CO2$uptake - mu)^2/sigma^2) } m <- maxLik(loglik, start=c(mu=30, sigma=10)) params <- coef(m) np <- 33 # number of points mu <- seq(6, 36, length.out=np) sigma <- seq(5, 50, length.out=np) X <- as.matrix(expand.grid(mu=mu, sigma=sigma)) ll <- matrix(apply(X, 1, loglik), nrow=np) levels <- quantile(ll, c(0.05, 0.4, 0.6, 0.8, 0.9, 0.97)) # where to draw the contours colors <- colorRampPalette(c("Blue", "White"))(30) par(mar=c(0,0,0,0), mgp=2:0) ## Perspective plot if(require(plot3D)) { persp3D(mu, sigma, ll, xlab=expression(mu), ylab=expression(sigma), zlab=expression(log-likelihood), theta=40, phi=30, colkey=FALSE, col=colors, alpha=0.5, facets=TRUE, shade=1, lighting="ambient", lphi=60, ltheta=0, image=TRUE, bty="b2", contour=list(col="gray", side=c("z"), levels=levels) ) ## add the dot for maximum scatter3D(rep(coef(m)[1], 2), rep(coef(m)[2], 2), c(maxValue(m), min(ll)), col="red", pch=16, facets=FALSE, bty="n", add=TRUE) ## line from max on persp to max at bottom surface segments3D(coef(m)[1], coef(m)[2], maxValue(m), coef(m)[1], coef(m)[2], min(ll), col="red", lty=2, bty="n", add=TRUE) ## contours for the bottom image contour3D(mu, sigma, z=min(ll) + 0.1, colvar=ll, col="black", levels=levels, add=TRUE) } else { plot(1:2, type="n") text(1.5, 1.5, "This figure requires 'plot3D' package", cex=1.5) } @ \caption{Log-likelihood surface as a function of $\mu$ and $\sigma$. The optimum, denoted as the red dot, is at $\mu=\Sexpr{round(coef(m)[1], 3)}$ and $\sigma=\Sexpr{round(coef(m)[2], 3)}$. The corresponding countour plot is shown at the bottom of the figure box. } \label{fig:mu-sigma-plot} \end{figure} So how does the algorithm find the optimal parameter value $\vec{\theta}^*$, the red dot on the figure? All the common methods are iterative, i.e. they start with a given start value (that's why we need the start value), and repeatedly find a new and better parameter that gives a larger log-likelihood value. While humans can look at the figure and immediately see where is its maximum, computers cannot perceive the image in this way. And more importantly--even humans cannot visualize the function in more than three dimensions. This visualization is so helpful for us because we can intuitively understand the 3-dimensional structure of the surface. It is 3-D because we have two parameters, $\mu$ and $\sigma$, and a single log-likelihood value. Add one more parameter as we did in Section~\ref{sec:linear-regression}, and visualization options are very limited. In case of 5 parameters, it is essentially impossible to solve the problem by just visualizations. Non-linear optimization is like climbing uphill in whiteout conditions where you cannot distinguish any details around you--sky is just a white fog and the ground is covered with similar white snow. But you can still feel which way the ground goes up and so you can still go uphill. This is what the popular algorithms do. They rely on the slope of the function, the gradient, and follow the direction suggested by gradient. Most optimizers included in the \texttt{maxLik} package need gradients, including the default Newton-Raphson method. But how do we know the gradient if the log-likelihood function only returns a single value? There are two ways: \begin{enumerate*}[label=\roman*)] \item provide a separate function that computes gradient; \item compute the log-likelihood value in multiple points nearby and deduce the gradient from that information. \end{enumerate*} The first option is superior, in high dimensions it is much faster and much less error prone. But computing and coding gradient can easily be days of work. The second approach, numeric gradient, forces the computer to do more work and hence it is slower. Unfortunately importantly, it may also unreliable for more complex cases. In practice you may notice how the algorithm refuses to converge for thousands of iterations. But numeric gradient works very well in simple cases we demonstrated here. This also hints why it is useful to choose good start values. The closer we start to our final destination, the less work the computer has to do. And while we may not care too much about a few seconds of computer's work, we also help the algorithm to find the correct maximum. The less the algorithm has to work, the less likely it is that it gets stuck in a wrong place or just keeps wandering around in a clueless manner. If this is the case, you may see how the algorithm gets slow, does not converge (returns the ``maximum number of iterations exceeded'' message), how the results look weird, or standard errors are extremely large. % \bibliographystyle{apecon} % \bibliography{maxlik} \end{document} maxLik/vignettes/stochastic-gradient-maxLik.Rnw0000644000175100001440000007613714077525067021432 0ustar hornikusers\documentclass{article} \usepackage{graphics} \usepackage{amsmath} \usepackage{amssymb} \usepackage{indentfirst} \usepackage[utf8]{inputenc} \usepackage{natbib} \usepackage{xspace} \newcommand{\elemProd}{\ensuremath{\odot}} % elementwise product of matrices \newcommand*{\mat}[1]{\mathsf{#1}} \newcommand{\maxlik}{\texttt{maxLik}\xspace} \newcommand*{\transpose}{^{\mkern-1.5mu\mathsf{T}}} %\newcommand{\transpose}{\intercal} \renewcommand*{\vec}[1]{\boldsymbol{#1}} % \VignetteIndexEntry{SGA introduction: the basic usage of maxSGA} \begin{document} <>= options(keep.source = TRUE, width = 60, try.outFile=stdout() # make try to produce error messages ) foo <- packageDescription("maxLik") @ \title{Stochastic Gradient Ascent in maxLik} \author{Ott Toomet} \maketitle \section{\texttt{maxLik} and Stochastic Gradient Ascent} \texttt{maxLik} is a package, primarily intended for Maximum Likelihood and related estimations. It includes several optimizers and associated tools for a typical Maximum Likelihood workflow. However, as predictive modeling and complex (deep) models have gained popularity in the recend decade, \texttt{maxLik} also includes a few popular algorithms for stochastic gradient ascent, the mirror image for the more widely known stochastic gradient descent. This vignette gives a brief overview of these methods, and their usage in \texttt{maxLik}. \section{Stochastic Gradient Ascent} \label{sec:stochastic-gradient-ascent} In machine learning literature, it is more common to describe the optimization problems as minimization and hence to talk about gradient descent. As \texttt{maxLik} is primarily focused on maximizing likelihood, it implements the maximization version of the method, stochastic gradient ascent (SGA). The basic method is simple and intuitive, it is essentially just a careful climb in the gradient's direction. Given and objective function $f(\vec{\theta})$, and the initial parameter vector $\vec{\theta}_{0}$, the algorithm will compute the gradient $\vec{g}(\vec{\theta}_{0}) = \nabla_{\vec{\theta}} f(\vec{\theta})\big|_{\vec{\theta} = \vec{\theta}_{0}}$, and update the parameter vector as $\vec{\theta}_{1} = \vec{\theta}_{0} + \rho \vec{g}(\vec{\theta}_{0})$. Here $\rho$, the \emph{learning rate}, is a small positive constant to ensure we do not overshoot the optimum. Depending on the task it is typically of order $0.1 \dots 0.001$. In common tasks, the objective function $f(\vec{\theta})$ depends on data, ``predictors'' $\mat{X}$ and ``outcome'' $\vec{y}$ in an additive form $f(\vec{\theta}; \mat{X}, \vec{y}) = \sum_{i} f(\vec{\theta}; \vec{x}_{i}, y_{i})$ where $i$ denotes ``observations'', typically arranged as the rows of the design matrix $\mat{X}$. Observations are often considered to be independent of each other. The overview above does not specify how to compute the gradient $\vec{g}(\vec{\theta}_{0})$ in a sense of which observations $i$ to include. A natural approach is to include the complete data and compute \begin{equation} \label{eq:full-batch-gradient} \vec{g}_{N}(\vec{\theta}_{0}) = \frac{1}{N}\sum_{i=1}^{N} \nabla_{\vec{\theta}} f(\vec{\theta}; \vec{x}_{i})\big|_{\vec{\theta} = \vec{\theta}_{0}}. \end{equation} In SGA context, this approach is called ``full batch'' and it has a number of advantages. In particular, it is deterministic (given data $\mat{X}$ and $\vec{y}$), and computing of the sum can be done in parallel. However, there are also a number of reasons why full-batch approach may not be desirable \citep[see][]{bottou2018SIAM}: \begin{itemize} \item Data over different observations is often more or less redundant. If we use all the observations to compute the update then we spend a substantial effort on redundant calculations. \item Full-batch gradient is deterministic and hence there is no stochastic noise. While advantageous in the latter steps of optimization, the noise helps the optimizer to avoid local optima and overcome flat areas in the objective function early in the process. \item SGA achieves much more rapid initial convergence compared to the full batch method (although full-batch methods may achieve better final result). \item Cost of computing the full-batch gradient grows with the sample size but that of minibatch gradient does not grow. \item It is empirically known that large-batch optimization tend to find sharp optima \citep[see][]{keskar+2016ArXiv} that do not generalize well to validation data. Small batch approach leads to a better validation performance. \end{itemize} In contrast, SGA is an approach where the gradient is computed on just a single observation as \begin{equation} \label{eq:stochastic-gradient} \vec{g}_{1}(\vec{\theta}_{0}) = \nabla_{\vec{\theta}} f(\vec{\theta}; \vec{x}_{i}, y_{i})\big|_{\vec{\theta} = \vec{\theta}_{0}} \end{equation} where $i$ is chosen randomly. In applications, all the observations are usually walked through in a random order, to ensure that each observation is included once, and only once, in an \emph{epoch}. Epoch is a full walk-through of the data, and in many ways similar to iteration in a full-batch approach. As SGA only accesses a single observation at time, it suffers from other kind of performance issues. In particular, one cannot parallelize the gradient function \eqref{eq:stochastic-gradient}, operating on individual data vectors may be inefficient compared to larger matrices, and while we gain in terms of gradient computation speed, we lose by running the optimizer for many more loops. \emph{Minibatch} approach offers a balance between the full-batch and SGA. In case of minibatch, we compute gradient not on individual observations but on \emph{batches} \begin{equation} \label{eq:minibatch-gradient} \vec{g}_{m}(\vec{\theta}_{0}) = \frac{1}{|\mathcal{B}|}\sum_{i\in\mathcal{B}} \nabla_{\vec{\theta}} f(\vec{\theta}; \vec{x}_{i}, y_{i})\big|_{\vec{\theta} = \vec{\theta}_{0}} \end{equation} where $\mathcal{B}$ is the batch, a set of observations that are included in the gradient computation. Normally the full data is partitioned into a series of minibatches and walked through sequentially in one epoch. \section{SGA in \texttt{maxLik} package} \label{sec:sga-in-maxlik} \maxlik implements two different optimizers: \texttt{maxSGA} for simple SGA (including momentum), and \texttt{maxAdam} for the Adaptive Moments method \citep[see][p. 301]{goodfellow+2016DL}. The usage of both methods mostly follows that of the package's main workhorse, \texttt{maxNR} \citep[see][]{henningsen+toomet2011}, but their API has some important differences due to the different nature of SGA. The basic usage of the maxSGA is as follows: <>= maxSGA(fn, grad, start, nObs, control) @ where \texttt{fn} is the objective function, \texttt{grad} is the gradient function, \texttt{nObs} is number of observations, and \texttt{control} is a list of control parameters. From the user's perspective, \texttt{grad} is typically the most important (and the most complex) argument. Next, we describe the API and explain the differences between the \texttt{maxSGA} API and \texttt{maxNR} API, and thereafter give a few toy examples that demonstrate how to use \texttt{maxSGA} in practice. \subsection{The objective function} Unlike in \texttt{maxNR} and the related optimizers, SGA does not directly need the objective function \texttt{fn}. The function can still be provided (and perhaps will in most cases), but one can run the optimizer without it. If provided, the function can be used for printing the value at each epoch (by setting a suitable \texttt{printLevel} control option), and for stopping through \emph{patience} stopping condition. If \texttt{fn} is not provided, do not forget to add the argument name for the gradient, \texttt{grad=}, as otherwise the gradient will be treated as the objective function with unexpected results! If provided, the function should accept two (or more) arguments: the first must be the numeric parameter vector, and another one, named \texttt{index}, is the list of indices in the current minibatch. As the function is not needed by the optimizer itself, it is up to the user to decide what it does. An obvious option is to compute the objective function value on the same minibatch as used for the gradient computation. But one can also opt for something else, for instance to compute the value on the validation data instead (and ignore the provided \emph{index}). The latter may be a useful option if one wants to employ the patience-based stopping criteria. \subsection{Gradient function} \label{sec:gradient-function} Gradient is the work-horse of the SGA methods. Although \maxlik can also compute numeric gradient using the finite difference method (this will be automatically done if the objective function is provided but the gradient isn't), this is not advisable, and may be very slow in high-dimensional problems. \texttt{maxLik} uses the numerator layout, i.e. the gradient should be a $1\times K$ matrix where columns correspond to the components of the parameter vector $\vec{\theta}$. For compatibility with other optimizers in \texttt{maxLik} it also accepts a observation-wise matrix where rows correspond to the individual observations and columns to the parameter vector components. The requirements for the gradient function arguments are the same as for \texttt{fn}: the first formal argument must be the parameter vector, and it must also have an argument \texttt{index}, a numeric index for the observations to be included in the minibatch. \subsection{Stopping Conditions} \label{sec:stopping-conditions} \texttt{maxSGA} uses three stopping criteria: \begin{itemize} \item Number of epochs (control option \texttt{iterlim}): number of times all data is iterated through using the minibatches. \item Gradient norm. However, in case of stochastic approach one cannot expect the gradient at optimum to be close to zero, and hence the corresponding criterion (control option \texttt{gradtol}) is set to zero by default. If interested, one may make it positive. \item Patience. Normally, each new iteration has better (higher) value of the objective function. However, in certain situations this may not be the case. In such cases the algorithm does not stop immediately, but continues up to \emph{patience} more epochs. It also returns the best parameters, not necessarily the last parameters. Patience can be controlled with the options \texttt{SG\_patience} and \texttt{SG\_patienceStep}. The former controls the patience itself--how many times the algorithm is allowed to produce an inferior result (default value \texttt{NULL} means patience criterion is not used). The latter controls how often the patience criterion is checked. If computing the objective function is costly, it may be useful to increase the patience step and decrease the patience. \end{itemize} \subsection{Optimizers} \label{sec:optimizers} \texttt{maxLik} currently implements two optimizers: \emph{SGA}, the stock gradient ascent (including momentum), and \emph{Adam}. Here we give some insight into the momentum, and into the Adam method, the basic gradient-only based optimization technique was explained in Section~\ref{sec:stochastic-gradient-ascent}. It is easy and intuitive to extend the SGA method with momentum. As implemented in \texttt{maxSGA}, the momentum $\mu$ ($0 < \mu < 1$) is incorporated into the the gradient update as \begin{equation} \label{eq:gradient-update-momentum} \vec{\theta}_{t+1} = \vec{\theta}_{t} + \vec{v}_{t} \quad\text{where}\quad \vec{v}_{t} = \mu \vec{v}_{t-1} + \rho \vec{g}(\vec{\theta}_{t}). \end{equation} See \citet[p. 288]{goodfellow+2016DL}. The algorithm takes the initial ``velocity'' $\vec{v}_{0} = \vec{0}$. It is easy to see that $\mu=0$ is equivalent to no-momentum case, and if $\vec{g}(\vec{\theta})$ is constant, $\vec{v}_{t} \to \rho \vec{g}(\vec{\theta})/(1 - \mu)$. So the movement speeds up in a region with stable gradient. As a downside, it is also easier overshoot a maximum. But this behavior makes momentum-equipped SGA less prone of getting stuck in a local optimum. Momentum can be set by the control option \texttt{SG\_momentum}, the default value is 0. Adaptive Moments method, usually referred to as \emph{Adam}, \citep[p. 301]{goodfellow+2016DL} adapts the learning rate by variance of the gradient--if gradient components are unstable, it slows down, and if they are stable, it speeds up. The adaptation is proportional to the weighted average of the gradient divided by the square root of the weighted average of the gradient squared, all operations done component-wise. In this way a stable gradient component (where moving average is similar to the gradient value) will have higher speed than a fluctuating gradient (where the components frequently shift the sign and the average is much smaller). More specifically, the algorithm is as follows: \begin{enumerate} \item Initialize the first and second moment averages $\vec{s} = \vec{0}$ and $\vec{r} = \vec{0}$. \item Compute the gradient $\vec{g}_{t} = \vec{g}(\vec{\theta}_{t})$. \item Update the average first moment: $\vec{s}_{t+1} = \mu_{1} \vec{s}_{t} + (1 - \mu_{1}) \vec{g}_{t}$. $\mu_{1}$ is the decay parameter, the larger it is, the longer memory does the method have. It can be adjusted with the control parameter \texttt{Adam\_momentum1}, the default value is 0.9. \item Update the average second moment: $\vec{r}_{t+1} = \mu_{2} \vec{r}_{t} + (1 - \mu_{2}) \vec{g}_{t} \elemProd \vec{g}_{t}$ where $\elemProd$ denotes element-wise multiplication. The control parameter for the $\mu_{2}$ is \texttt{Adam\_momentum2}, the default value is 0.999. \item As the algorithm starts with the averages $\vec{s}_{0} = \vec{r}_{0}= 0$, we also correct the resulting bias: $\hat{\vec{s}} = \vec{s}/(1 - \mu_{1}^{t})$ and $\hat{\vec{r}} = \vec{r}/(1 - \mu_{2}^{t})$. \item Finally, update the estimate: $\vec{\theta}_{t+1} = \vec{\theta}_{t} + \rho \hat{\vec{s}}/(\delta + \sqrt{\hat{\vec{r}}})$ where division and square root are done element-wise and $\delta=10^{-8}$ takes care of numerical stabilization. \end{enumerate} Adam optimizer can be used with \texttt{maxAdam}. \subsection{Controlling Optimizers} \label{sec:control-options} Both \texttt{maxSGA} and \texttt{maxAdam} are designed to be similar to \texttt{maxNR}, and mostly expect similar arguments. In particular, both functions expect the objective function \texttt{fn}, gradient \texttt{grad} and Hessian function \texttt{hess}, and the initial parameter start values \texttt{start}. As these optimizers only need gradient, one can leave out both \texttt{fn} and \texttt{hess}. The Hessian is mainly included for compatibility reasons and only used to compute the final Hessian, if requested by the user. As SGA methods are typically used in contexts where Hessian is not needed, by default the algorithms do not return Hessian matrix and hence do not use the \texttt{hess} function even if provided. Check out the argument \texttt{finalHessian} if interested. An important SGA-specific control options is \texttt{SG\_batchSize}. This determines the batch size, or \texttt{NULL} for the full-batch approach. Finally, unlike the traditional optimizers, stochastic optimizers need to know the size of data (argument \texttt{nObs}) in order to calculate the batches. \section{Example usage: Linear regression} \label{sec:example-usage-cases} \subsection{Setting Up} \label{sec:setting-up} We demonstrate the usage of \texttt{maxSGA} and \texttt{maxAdam} to solve a linear regression (OLS) problem. Although OLS is not a task where one commonly relies on stochastic optimization, it is a simple and easy-to understand model. We use the Boston housing data, a popular dataset where one traditionally attempts to predict the median house price across 500 neighborhoods using a number of neighborhood descriptors, such as mean house size, age, and proximity to Charles river. All variables in the dataset are numeric, and there are no missing values. The data is provided in \emph{MASS} package. First, we create the design matrix $\mat{X}$ and extract the house price $y$: <<>>= i <- which(names(MASS::Boston) == "medv") X <- as.matrix(MASS::Boston[,-i]) X <- cbind("const"=1, X) # add constant y <- MASS::Boston[,i] @ Although the model and data are simple, it is not an easy task for stock gradient ascent. The problem lies in different scaling of variables, the means are <<>>= colMeans(X) @ One can see that \emph{chas} has an average value \Sexpr{round(mean(X[,"chas"]), 3)} while that of \emph{tax} is \Sexpr{round(mean(X[,"tax"]), 3)}. This leads to extremely elongated contours of the loss function: <>= eigenvals <- eigen(crossprod(X))$values @ One can see that the ratio of the largest and the smallest eigenvalue is $\mat{X}^{\transpose} \mat{X} = \Sexpr{round(eigenvals[1]/eigenvals[14], -5)}$. Solely gradient-based methods, such as SGA, have trouble working in the resulting narrow valleys. For reference, let's also compute the analytic solution to this linear regression model (reminder: $\hat{\vec{\beta}} = (\mat{X}^{\transpose}\,\mat{X})^{-1}\,\mat{X}^{\transpose}\,\vec{y}$): <<>>= betaX <- solve(crossprod(X)) %*% crossprod(X, y) betaX <- drop(betaX) # matrix to vector betaX @ Next, we provide the gradient function. As a reminder, OLS gradient in numerator layout can be expressed as \begin{equation} \label{eq:ols-gradient} \vec{g}_{m}(\vec{\theta}) = -\frac{2}{|\mathcal{B}|} \sum_{i\in\mathcal{B}} \left(y_{i} - \vec{x}_{i}^{\transpose} \cdot \vec{\theta} \right) \vec{x}_{i}^{\transpose} = -\frac{2}{|\mathcal{B}|} \left(y_{\mathcal{B}} - \mat{X}_{\mathcal{B}} \cdot \vec{\theta} \right)^{\transpose} \mat{X}_{\mathcal{B}} \end{equation} where $y_{\mathcal{B}}$ and $\mat{X}_{\mathcal{B}}$ denote the elements of the outcome vector and the slice of the design matrix that correspond to the minibatch $\mathcal{B}$. We choose to divide the value by batch size $|\mathcal{B}|$ in order to have gradient values of roughly similar size, independent of the batch size. We implement it as: <<>>= gradloss <- function(theta, index) { e <- y[index] - X[index,,drop=FALSE] %*% theta g <- t(e) %*% X[index,,drop=FALSE] 2*g/length(index) } @ The \texttt{gradloss} function has two arguments: \texttt{theta} is the parameter vector, and \texttt{index} tells which observations belong to the current minibatch. The actual argument will be an integer vector, and hence we can use \texttt{length(index)} to find the size of the minibatch. Finally, we return the negative of~\eqref{eq:ols-gradient} as \texttt{maxSGA} performs maximization, not minimization. First, we demonstrate how the models works without the objective function. We have to supply the gradient function, initial parameter values (we use random normals below), and also \texttt{nObs}, number of observations to select the batches from. The latter is needed as the optimizer itself does not have access to data but still has to partition it into batches. Finally, we may also provide various control parameters, such as number of iterations, stopping conditions, and batch size. We start with only specifying the iteration limit, the only stopping condition we use here: <>= library(maxLik) set.seed(3) start <- setNames(rnorm(ncol(X), sd=0.1), colnames(X)) # add names for better reference res <- try(maxSGA(grad=gradloss, start=start, nObs=nrow(X), control=list(iterlim=1000) ) ) @ This run was a failure. We encountered a run-away growth of the gradient because the default learning rate $\rho=0.1$ is too big for such strongly curved objective function. But before we repeat the exercise with a smaller learning rate, let's incorporate gradient clipping. Gradient clipping, performed with \texttt{SG\_clip} control option, caps the $L_{2}$-norm of the gradient while keeping it's direction. We clip the squared norm at 10,000, i.e. the gradient norm cannot exceed 100: <<>>= res <- maxSGA(grad=gradloss, start=start, nObs=nrow(X), control=list(iterlim=1000, SG_clip=1e4) # limit ||g|| <= 100 ) summary(res) @ This time the gradient did not explode and we were able to get a result. But the estimates are rather far from the analytic solution shown above, e.g. the constant estimate \Sexpr{round(coef(res)[1], 3)} is very different from the corresponding analytic value \Sexpr{round(betaX[1], 3)}. Let's analyze what is happening inside the optimizer. We can ask for both the parameter values and the objective function value to be stored for each epoch. But before we can store its value, in this case mean squared error (MSE), we have to supply an objective function to maxSGA. We compute MSE on the same minibatch as <<>>= loss <- function(theta, index) { e <- y[index] - X[index,] %*% theta -crossprod(e)/length(index) } @ Now we can store the values with the control options \texttt{storeParameters} and \texttt{storeValues}. The corresponding numbers can be retrieved with \texttt{storedParameters} and \texttt{storedValues} methods. For \texttt{iterlim=R}, the former returns a $(R+1) \times K$ matrix, one row for each epoch and one column for each parameter component, and the latter returns a numeric vector of length $R+1$ where $R$ is the number of epochs. The first value in both cases is the initial value, so we have $R+1$ values in total. Let's retrieve the values and plot both. We decrease the learning rate to $0.001$ using the \texttt{SG\_learningRate} control. Note that although we maximize negative loss, we plot positive loss. \setkeys{Gin}{width=\textwidth, height=80mm} <>= res <- maxSGA(loss, gradloss, start=start, nObs=nrow(X), control=list(iterlim=1000, # will misbehave with larger numbers SG_clip=1e4, SG_learningRate=0.001, storeParameters=TRUE, storeValues=TRUE ) ) par <- storedParameters(res) val <- storedValues(res) par(mfrow=c(1,2)) plot(par[,1], par[,2], type="b", pch=".", xlab=names(start)[1], ylab=names(start)[2], main="Parameters") ## add some arrows to see which way the parameters move iB <- c(40, nrow(par)/2, nrow(par)) iA <- iB - 10 arrows(par[iA,1], par[iA,2], par[iB,1], par[iB,2], length=0.1) ## plot(seq(length=length(val))-1, -val, type="l", xlab="epoch", ylab="MSE", main="Loss", log="y") @ We can see how the parameters (the first and the second components, ``const'' and ``crim'' in this figure) evolve through the iterations while the loss is rapidly falling. One can see an initial jump where the loss is falling very fast, followed but subsequent slow movement. It is possible the initial jump be limited by gradient clipping. \subsection{Training and Validation Sets} \label{sec:training-validation} However, as we did not specify the batch size, \texttt{maxSGA} will automatically pick the full batch (equivalent to control option \texttt{SG\_batchSize = NULL}). So there was nothing stochastic in what we did above. Let us pick a small batch size--a single observation at time. However, as smaller batch sizes introduce more noise to the gradient, we also make the learning rate smaller and choose \texttt{SG\_learningRate = 1e-5}. But now the existing loss function, calculated just at the single observation, carries little meaning. Instead, we split the data into training and validation sets and feed batches of training data to gradient descent while calculating the loss on the complete validation set. This can be achieved with small modifications in the \texttt{gradloss} and \texttt{loss} function. But as the first step, we split the data: <<>>= i <- sample(nrow(X), 0.8*nrow(X)) # training indices, 80% of data Xt <- X[i,] # training data yt <- y[i] Xv <- X[-i,] # validation data yv <- y[-i] @ Thereafter we modify \texttt{gradloss} to only use the batches of training data while \texttt{loss} will use the complete validation data and just ignore \texttt{index}: <<>>= gradloss <- function(theta, index) { e <- yt[index] - Xt[index,,drop=FALSE] %*% theta g <- -2*t(e) %*% Xt[index,,drop=FALSE] -g/length(index) } loss <- function(theta, index) { e <- yv - Xv %*% theta -crossprod(e)/length(yv) } @ Note that because the optimizer only uses training data, the \texttt{nObs} argument now must equal to the size of training data in this case. Another thing to discuss is the computation speed. \texttt{maxLik} implements SGA in a fairly complex loop that does printing, storing, and complex function calls, computes stopping conditions and does many other checks. Hence a smaller batch size leads to many more such auxiliary computations per epoch and the algorithm gets considerably slower. This is less of a problem for complex objective functions or larger batch sizes, but for linear regression, the slow-down is very large. For demonstration purposes we lower the number of epochs from 1000 to 100. How do the convergence properties look now with the updated approach? <>= res <- maxSGA(loss, gradloss, start=start, nObs=nrow(Xt), # note: only training data now control=list(iterlim=100, SG_batchSize=1, SG_learningRate=1e-5, SG_clip=1e4, storeParameters=TRUE, storeValues=TRUE ) ) par <- storedParameters(res) val <- storedValues(res) par(mfrow=c(1,2)) plot(par[,1], par[,2], type="b", pch=".", xlab=names(start)[1], ylab=names(start)[2], main="Parameters") iB <- c(40, nrow(par)/2, nrow(par)) iA <- iB - 1 arrows(par[iA,1], par[iA,2], par[iB,1], par[iB,2], length=0.1) plot(seq(length=length(val))-1, -val, type="l", xlab="epoch", ylab="MSE", main="Loss", log="y") @ We can see the parameters evolving and loss decreasing over epochs. The convergence seems to be smooth and not ruptured by gradient clipping. Next, we try to improve the convergence by introducing momentum. We add momentum $\mu = 0.95$ to the gradient and decrease the learning rate down to $1\cdot10^{-6}$: <>= res <- maxSGA(loss, gradloss, start=start, nObs=nrow(Xt), control=list(iterlim=100, SG_batchSize=1, SG_learningRate=1e-6, SG_clip=1e4, SGA_momentum = 0.99, storeParameters=TRUE, storeValues=TRUE ) ) par <- storedParameters(res) val <- storedValues(res) par(mfrow=c(1,2)) plot(par[,1], par[,2], type="b", pch=".", xlab=names(start)[1], ylab=names(start)[2], main="Parameters") iB <- c(40, nrow(par)/2, nrow(par)) iA <- iB - 1 arrows(par[iA,1], par[iA,2], par[iB,1], par[iB,2], length=0.1) plot(seq(length=length(val))-1, -val, type="l", xlab="epoch", ylab="MSE", main="Loss", log="y") @ We achieved a lower loss but we are still far from the correct solution. As the next step, we use Adam optimizer. Adam has two momentum parameters but we leave those untouched at the initial values. \texttt{SGA\_momentum} is not used, so we remove that argument. <>= res <- maxAdam(loss, gradloss, start=start, nObs=nrow(Xt), control=list(iterlim=100, SG_batchSize=1, SG_learningRate=1e-6, SG_clip=1e4, storeParameters=TRUE, storeValues=TRUE ) ) par <- storedParameters(res) val <- storedValues(res) par(mfrow=c(1,2)) plot(par[,1], par[,2], type="b", pch=".", xlab=names(start)[1], ylab=names(start)[2], main="Parameters") iB <- c(40, nrow(par)/2, nrow(par)) iA <- iB - 1 arrows(par[iA,1], par[iA,2], par[iB,1], par[iB,2], length=0.1) plot(seq(length=length(val))-1, -val, type="l", xlab="epoch", ylab="MSE", main="Loss", log="y") @ As visible from the figure, Adam was marching toward the solution without any stability issues. \subsection{Sequence of Batch Sizes } \label{sec:sequence-batch-sizes} The OLS' loss function is globally convex and hence there is no danger to get stuck in a local maximum. However, when the objective function is more complex, the noise that is generated by the stochastic sampling helps the algorithm to leave local maxima. A suggested strategy is to increase the batch size over time to achieve good exploratory properties early in the process and stable convergence later \citep[see][for more information]{smith+2018arXiv}. This approach is in some ways similar to Simulated Annealing. Here we introduce such an approach by using batch sizes $B=1$, $B=10$ and $B=100$ in succession. We also introduce patience stopping condition. If the objective function value is worse than the best value so far for more than \emph{patience} times then the algorithm stops. Here we use patience value 5. We also store the loss values from all the batch sizes into a single vector \texttt{val}. If the algorithm stops early, some of the stored values are left uninitialized (\texttt{NA}-s), hence we use \texttt{na.omit} to include only the actual values in the final \texttt{val}-vector. We allow the algorithm to run for 200 epochs, but as we now have introduced early stopping through patience, the actual number of epochs may be less than that. \setkeys{Gin}{width=\textwidth, height=110mm} <>= val <- NULL # loop over batch sizes for(B in c(1,10,100)) { res <- maxAdam(loss, gradloss, start=start, nObs=nrow(Xt), control=list(iterlim=200, SG_batchSize=1, SG_learningRate=1e-6, SG_clip=1e4, SG_patience=5, # worse value allowed only 5 times storeValues=TRUE ) ) cat("Batch size", B, ",", nIter(res), "epochs, function value", maxValue(res), "\n") val <- c(val, na.omit(storedValues(res))) start <- coef(res) } plot(seq(length=length(val))-1, -val, type="l", xlab="epoch", ylab="MSE", main="Loss", log="y") summary(res) @ Two first batch sizes run through all 200 epochs, but the last run stopped early after 7 epochs only. The figure shows that Adam works well for approximately 170 epochs, thereafter the steady pace becomes uneven. It may be advantageous to slow down the movement further. As explained above, this dataset is not an easy task for methods that are solely gradient-based, and so we did not achieve a result that is close to the analytic solution. But our task here is to demonstrate the usage of the package, not to solve a linear regression exercise. We believe every \emph{R}-savy user can adapt the method to their needs. \bibliographystyle{apecon} \bibliography{maxlik} \end{document} maxLik/NEWS0000644000175100001440000002362614600010344012215 0ustar hornikusersTHIS IS THE CHANGELOG OF THE "maxLik" PACKAGE Please note that only the most significant user visible changes are reported here. A full ChangeLog is available in the log messages of the SVN repository on R-Forge. CHANGES IN VERSION 1.5-0 (2020-07-26) * maxLik methods for 'tidy' and 'glance' generics (by David Hugh-Jones) * maxLik method for 'confint' (by Luca Scrucca) * most tests moved to 'tinytest' package * fixed an issue with negative reltol values CHANGES IN VERSION 1.4-8 (2020-03-22) * added two vignettes: "Getting started with maximum likelihood and maxLik" and "maximum likelihood estimation with maxLik" CHANGES IN VERSION 1.4-6 (2020-11-24) * changed the name of internal function head... to headDots to avoid issues with perforce VCS * maxNR and friends now correctly return code 8 if reltol stopping condition invoked * documentation fixes and clean-ups CHANGES IN VERSION 1.4-4 (2020-07-08) * fixed another issue with CRAN tests on ATLAS CHANGES IN VERSION 1.4-2 (2020-07-08) * fixed CRAN test issues CHANGES IN VERSION 1.4-0 (2020-07-07) * includes stochastic gradient ascent and Adam optimizer CHANGES IN VERSION 1.3-10 (2020-05-13) * fixed an issue where maxControl() silently ignored a number of parameters * print.summary.maxim accepts parameters max.rows and max.cols, and only prints this many columns/rows of output matrices CHANGES IN VERSION 1.3-8 (2019-05-18) * better handling of matrix class CHANGES IN VERSION 1.3-8 (2020-01-01) * better handling of matrix class CHANGES IN VERSION 1.3-6 (2019-05-18) * 'maxim' objects now support 'maxValue' and 'gradient' methods. * tests cleaned and give fewer notes on check CHANGES IN VERSION 1.3-4 (2015-11-08) * If Hessian is not negative definite in maxNRCompute, the program now attempts to correct this repeatedly, but not infinite number of times. If Marquardt selected, it uses Marquardt lambda and it's update method. * Fixed an issue where summary.maxLik did not use 'eigentol' option for displaying standard errors CHANGES IN VERSION 1.3-2 (2015-10-28) * Corrected a bug that did not permit maxLik to pass additional arguments to the likelihood function CHANGES IN VERSION 1.3-0 (2015-10-24) * maxNR & friends now support argument 'qac' (quadratic approximation correction) option that allows to choose the behavior if the next guess performs worse than the previous one. This includes the original step halving while keeping direction, and now also Marquardt's (1963) shift toward the steepest gradient. * all max** functions now take control options in the form as 'control=list(...)', analogously as 'optim'. The former method of directly supplying options is preserved for compatibility reasons. * sumt, and stdEr method for 'maxLik' are now in namespace * the preferred way to specify the amount of debugging information is now 'printLevel', not 'print.level'. CHANGES IN VERSION 1.2-4 (2014-12-31) * Equality constraints (SUMT) checks conformity of the matrices * coef.maxim() is now exported * added argument "digits" to print.summary.maxLik() * added argument "digits" to condiNumber.default() * further arguments to condiNumber.maxLik() are now passed to condiNumber.default() rather than to hessian() CHANGES IN VERSION 1.2-0 (2013-10-22) * Inequality constraints now support multiple constraints (B may be a vector). * Fixed a bug in documentation, inequality constraint requires A %*% theta + B > 0, not >= 0 as stated earlier. * function sumKeepAttr() is imported from the miscTools package now (before maxLik() could not be used by another package when this package imported (and not depended on) the maxLik package) (bug reported and solution provided by Martin Becker) CHANGES IN VERSION 1.1-8 (2013-09-17) * fixed bug that could occur in the Newton-Raphson algorithm if the log-likelihood function returns a vector with observation-specific values or if there are NAs in the function values, gradients, or Hessian CHANGES IN VERSION 1.1-4 (2013-09-16) * the package code is byte-compiled * if the log-likelihood function contains NA, the gradient is not calculated; if components of the gradient contain NA, the Hessian is not calculated * slightly improved documentation * improved warning messages and error messages when doing constrained optimisation * added citation information * added start-up message CHANGES IN VERSION 1.1-2 (2012-03-04) * BHHH only considers free parameters when analysing the size of gradient * numericGradient and numericHessian check for the length of vector function CHANGES IN VERSION 1.1-0 (2012-01-...) * Conjugate-gradient (CG) optimization method included. * it is guaranteed now that the variance covariance matrix returned by the vcov() method is always symmetric. * summary.maxLik is guaranteed to use maxLik specific methods, even if corresponding methods for derived classes have higher priority. CHANGES IN VERSION 1.0-2 (2011-10-16) This is mainly bugfix release. * maxBFGSR works with fixed parameters. * maxBFGS and other optim-based routines work with both fixed parameters and inequality constraints. * constrOptim2 removed from API. Names of it's formal arguments are changed. CHANGES IN VERSION 1.0-0 (2010-10-15) * moved the generic function stdEr() including a default method and a method for objects of class "lm" to the "miscTools" package (hence, this package now depends on the version 0.6-8 of the "miscTools" package that includes stdEr() * if argument print.level is 0 (the default) and some parameters are automatically fixed during the estimation, because the returned log-likelihood value has attributes "constPar" and "newVal", the adjusted "starting values" are no longer printed. CHANGES IN VERSION 0.8-0 * fixed bug that occured in maxBFGS(), mxNM(), and maxSANN if the model had only one parameter and the function specified by argument "grad" returned a vector with the analytical gradients at each observation * maxNR() now performs correctly with argument "iterlim" set to 0 * maxNR, maxBHHH(), maxBFGS(), maxNM(), and maxSANN() now use attributes "gradient" and "hessian" of the object returned by the log-likelihood function; if supplied, these are used instead of arguments "grad" and "hess" * added function maxBFGSR() that implements the BFGS algorithm (in R); this function was originally developed by Yves Croissant and placed in the "mlogit" package * maxNR() now has an argument "bhhhHessian" (defaults to FALSE): if this argument is TRUE, the Hessian is approximated by the BHHH method (using information equality), i.e. the BHHH optimization algorithm is used * maxLik() now has an argument 'finalHessian'; if it is TRUE, the final Hessian is returned; if it is the character string "BHHH", the BHHH approximation of the Hessian matrix (using information equality) with attribute "type" set to "BHHH" is returned * maxNR(), maxBHHH(), maxBFGS(), maxNM(), and maxSANN() now additionally return a component "gradientObs" that is the matrix of gradients evaluated at each observation if argument "grad" returns a matrix or argument "grad" is not specified and argument "fn" returns a vector * the definitions of the generic functions nObs() and nParam() have been moved to the "miscTools" package * added methods bread() and estfun() for objects of class "maxLik" (see documentation of the generic functions bread() and estfun() defined in package "sandwich") * replaced argument "activePar" of numericGradient(), numericHessian(), and numericNHessian() by argument "fixed" to be consistent with maxLik(), maxNR(), and the other maxXXX() functions * maxNR(), maxBHHH(), maxBFGSYC(), maxBFGS(), maxNM(), maxSANN(), and summary.maxLik() now return component "fixed" instead of component "activePar" CHANGES IN VERSION 0.7-2 * corrected negative definiteness correction of Hessian in maxNR() which led to infinite loops * changed stopping condition in sumt(): instead of checking whether estimates are stimilar, we check for penalty being low now CHANGES IN VERSION 0.7-0 * Holding parameters fixed in maxNR() (and hence, also in maxBHHH()) should now be done by the new (optional) argument "fixed", because it is convenient to use than the "old" argument "activePar" in many situations. However, the "old" argument "activePar" is kept for backward-compatibility. * added (optional) argument "fixed" to functions maxBFGS(), maxNM(), and maxSANN(), which can be used for holding parameters fixed at their starting values * added function constrOptim2(), which is a modified copy of constrOptim() from the "stats" package, but which includes a bug fix * added optional argument "cand" to function maxSANN(), which can be used to specify a function for generating a new candidate point (passed to argument "gr" of optim()) * added argument "random.seed" to maxSANN() to ensure replicability * several mainly smaller improvements in ML estimations with linear equality and inequality constraints (via sumt() and constrOptim2(), respectively) * several internal changes that make the code easier to maintain CHANGES IN VERSION 0.6-0 * maxLik() can perform maximum likelihood estimations under linear equality and inequality constraints on the parameters now (see documentation of the new argument "constraints"). Please note that estimations under constraints are experimental and have not been thoroughly tested yet. * a new method "stdEr" to extract standard errors of the estimates has been introduced * added a "coef" method for objects of class "summary.maxLik" that extracts the matrix of the estimates, standard errors, t-values, and P-values * some minor bugs have been fixed * we did some general polishing of the returned object and under the hood CHANGES IN VERSION 0.5-12 AND BEFORE * please take a look at the log messages of the SVN repository on R-Forge maxLik/R/0000755000175100001440000000000014077525067011733 5ustar hornikusersmaxLik/R/logLikAttr.R0000644000175100001440000001447514077525067014145 0ustar hornikusers### this function returns the log-likelihood value with gradient and Hessian as ### attributes. If the log-likelihood function provided by the user does not add ### these attributes, this functions uses the functions provided by the user ### as arguments "grad" and "hess" or (if they are not provided) uses the ### finite-difference method to obtain the gradient and Hessian logLikAttr <- function(theta, fnOrig, gradOrig=NULL, hessOrig=NULL, fixed, sumObs = FALSE, returnHessian = TRUE, ...) { ## fixed: logical, which parameters to keep fixed ## # large initial indentation to be able to diff to previous version # that was defined in maxNR() / maxNR.R. ## number of parameters nParam <- length( theta ) ## value of log-likelihood function f <- fnOrig(theta, ...) ## if there are NA-s in the function value, do not ## compute gradient and Hessian if(any(is.na(f))) { attr(f, "gradient") <- NA attr(f, "hessian") <- NA return(f) } ## gradient of log-likelihood function gr <- attr( f, "gradient" ) if( is.null( gr ) ) { if( !is.null( gradOrig ) ) { gr <- gradOrig(theta, ...) } else { gr <- numericGradient(f = fnOrig, t0 = theta, fixed=fixed, ...) } } ## if there are NA-s in active gradient, do not compute Hessian if(is.matrix(gr)) { if(ncol(gr) != length(theta)) { stop(paste0("if gradient is a matrix, it must have length(parameter) colums (currently ", length(theta), "), not ", ncol(gr))) } activeGr <- gr[,!fixed] } else { activeGr <- gr[!fixed] } if(any(is.na(activeGr))) { attr(f, "gradient") <- gr attr(f, "hessian") <- NA return(f) } # if gradients are observation-specific, they must be stored in a matrix if(observationGradient(gr, length(theta))) { gr <- as.matrix(gr) } ## Set gradients of fixed parameters to NA so that they are always NA ## (no matter if they are analytical or finite-difference gradients) if( is.null( dim( gr ) ) ) { gr[ fixed ] <- NA } else { gr[ , fixed ] <- NA } ## Hessian of log-likelihood function if( isTRUE( returnHessian ) ) { h <- attr( f, "hessian" ) if( is.null( h ) ) { if(!is.null(hessOrig)) { h <- as.matrix(hessOrig(theta, ...)) } else { llFunc <- function( theta, ... ) { return( sum( fnOrig( theta, ... ) ) ) } if( !is.null( attr( f, "gradient" ) ) ) { gradFunc <- function( theta, ... ) { return( sumGradients( attr( fnOrig( theta, ... ), "gradient" ), nParam ) ) } } else if( !is.null( gradOrig ) ) { gradFunc <- function( theta, ... ) { return( sumGradients( gradOrig( theta, ... ), nParam ) ) } } else { gradFunc <- NULL } h <- numericHessian(f = llFunc, grad = gradFunc, t0 = theta, fixed=fixed, ...) } } ## Check the correct size of Hessian. if((dim(h)[1] != nParam) | (dim(h)[2] != nParam)) { stop("Wrong hessian dimension. Needed ", nParam, "x", nParam, " but supplied ", dim(h)[1], "x", dim(h)[2]) } else { ## Set elements of the Hessian corresponding to the ## fixed parameters ## to NA so that they are always zero ## (no matter if they are ## calculated analytical or by the finite-difference ## method) h[ fixed, ] <- NA h[ , fixed ] <- NA } } else if( tolower( returnHessian ) == "bhhh" ) { ## We have to return BHHH Hessian. Check if it contains NA in free paramateres, otherwise ## return outer product as Hessian. h <- NULL # to keep track of what we have done if(is.null(dim(gr)) & any(is.na(gr[!fixed]))) { # NA gradient: do not check but send the wrong values to the optimizer. # The optimizer should take corresponding action, such as looking for another value h <- NA } else if(is.matrix(gr)) { if(any(is.na(gr[,!fixed]))) { # NA gradient: do not check but send the wrong values to the optimizer. # The optimizer should take corresponding action, such as looking for another value h <- NA } } if(is.null(h)) { # gr seems not to contain NA-s at free parameters checkBhhhGrad( g = gr, theta = theta, analytic = ( !is.null( attr( f, "gradient" ) ) || !is.null( gradOrig ) ), fixed=fixed) h <- - crossprod( gr ) } attr( h, "type" ) = "BHHH" } else { h <- NULL } ## sum log-likelihood values over observations (if requested) if( sumObs ) { f <- sumKeepAttr( f ) } ## sum gradients over observations (if requested) if( sumObs ) { ## We need just summed gradient gr <- sumGradients( gr, nParam ) } if( !is.null( gradOrig ) && !is.null( attr( f, "gradient" ) ) ) { attr( f, "gradBoth" ) <- TRUE } if( !is.null( hessOrig ) && !is.null( attr( f, "hessian" ) ) ) { attr( f, "hessBoth" ) <- TRUE } attr( f, "gradient" ) <- gr attr( f, "hessian" ) <- h return( f ) } maxLik/R/maxCG.R0000644000175100001440000000266614077525067013067 0ustar hornikusersmaxCG <- function(fn, grad=NULL, hess=NULL, start, fixed = NULL, control=NULL, constraints=NULL, finalHessian=TRUE, parscale=rep(1, length=length(start)), ...) { ## Wrapper of optim-based 'Conjugate Gradient' optimization ## ## contraints constraints to be passed to 'constrOptim' ## hessian: how (and if) to calculate the final Hessian: ## FALSE not calculate ## TRUE use analytic/numeric Hessian ## bhhh/BHHH use information equality approach ## ... : further arguments to fn() ## ## Note: grad and hess are for compatibility only, SANN uses only fn values ## if(!inherits(control, "MaxControl")) { mControl <- addControlList(maxControl(iterlim=500), control) # default values } else { mControl <- control } # default, user values mControl <- addControlList(mControl, list(...), check=FALSE) # open values result <- maxOptim( fn = fn, grad = grad, hess = hess, start = start, method = "CG", fixed = fixed, constraints = constraints, finalHessian=finalHessian, parscale = parscale, control=mControl, ... ) return(result) } maxLik/R/addFixedPar.R0000644000175100001440000000025414077525067014232 0ustar hornikusersaddFixedPar <- function( theta, start, fixed, ...) { if( is.null( fixed ) ) { start <- theta } else { start[ !fixed ] <- theta } return( start ) } maxLik/R/maxNR.R0000644000175100001440000001233214077525067013104 0ustar hornikusersmaxNR <- function(fn, grad=NULL, hess=NULL, start, constraints=NULL, finalHessian=TRUE, bhhhHessian=FALSE, fixed=NULL, activePar=NULL, control=NULL, ...) { ## Newton-Raphson maximisation ## Parameters: ## fn - the function to be minimized. Returns either scalar or ## vector value with possible attributes ## constPar and newVal ## grad - gradient function (numeric used if missing). Must return either ## * vector, length=nParam ## * matrix, dim=c(nObs, 1). Treated as vector ## * matrix, dim=c(M, nParam), where M is arbitrary. In this case the ## rows are simply summed (useful for maxBHHH). ## hess - hessian function (numeric used if missing) ## start - initial parameter vector (eventually w/names) ## ... - extra arguments for fn() ## finalHessian include final Hessian? As computing final hessian does not carry any extra penalty for NR method, this option is ## mostly for compatibility reasons with other maxXXX functions. ## TRUE/something else include ## FALSE do not include ## activePar - an index vector -- which parameters are taken as ## variable (free). Other paramters are treated as ## fixed constants ## fixed index vector, which parameters to keep fixed ## ## RESULTS: ## a list of class "maxim": ## maximum function value at maximum ## estimate the parameter value at maximum ## gradient gradient ## hessian Hessian ## code integer code of success: ## 1 - gradient close to zero ## 2 - successive values within tolerance limit ## 3 - could not find a higher point (step error) ## 4 - iteration limit exceeded ## 100 - initial value out of range ## message character message describing the code ## last.step only present if code == 3 (step error). A list with following components: ## theta0 - parameter value which led to the error ## f0 - function value at these parameter values ## climb - the difference between theta0 and the new approximated parameter value (theta1) ## activePar - logical vector, which parameters are active (not constant) ## activePar logical vector, which parameters were treated as free (resp fixed) ## iterations number of iterations ## type "Newton-Raphson maximisation" ## ## ------------------------------ ## Add parameters from ... to control if(!inherits(control, "MaxControl")) { mControl <- addControlList(maxControl(), control) } else { mControl <- control } mControl <- addControlList(mControl, list(...), check=FALSE) ## argNames <- c(c("fn", "grad", "hess", "start", "activePar", "fixed", "control"), openParam(mControl)) # Here we allow to submit all parameters outside of the # 'control' list. May eventually include only a # subset here ## checkFuncArgs( fn, argNames, "fn", "maxNR" ) if( !is.null( grad ) ) { checkFuncArgs( grad, argNames, "grad", "maxNR" ) } if( !is.null( hess ) ) { checkFuncArgs( hess, argNames, "hess", "maxNR" ) } ## establish the active parameters. Internally, we just use 'activePar' fixed <- prepareFixed( start = start, activePar = activePar, fixed = fixed ) ## chop off the control args from ... and forward the new ... dddot <- list(...) dddot <- dddot[!(names(dddot) %in% openParam(mControl))] cl <- list(start=start, finalHessian=finalHessian, bhhhHessian=bhhhHessian, fixed=fixed, control=mControl) if(length(dddot) > 0) { cl <- c(cl, dddot) } ## if(is.null(constraints)) { ## call maxNRCompute with the modified ... list cl <- c(quote(maxNRCompute), fn=logLikAttr, fnOrig = fn, gradOrig = grad, hessOrig = hess, cl) result <- eval(as.call(cl)) } else { if(identical(names(constraints), c("ineqA", "ineqB"))) { stop("Inequality constraints not implemented for maxNR") } else if(identical(names(constraints), c("eqA", "eqB"))) { # equality constraints: A %*% beta + B = 0 cl <- c(quote(sumt), fn=fn, grad=grad, hess=hess, maxRoutine=maxNR, constraints=list(constraints), cl) result <- eval(as.call(cl)) } else { stop("maxNR only supports the following constraints:\n", "constraints=list(ineqA, ineqB)\n", "\tfor A %*% beta + B >= 0 linear inequality constraints\n", "current constraints:", paste(names(constraints), collapse=" ")) } } ## Save the objective function result$objectiveFn <- fn ## return( result ) } maxLik/R/logLik.maxLik.R0000644000175100001440000000047314077525067014527 0ustar hornikusers### Methods for accessing loglik value maximum likelihood estimates logLik.summary.maxLik <- function( object, ...) { ll <- object$loglik attr(ll, "df") <- sum(activePar(object)) ll } logLik.maxLik <- function( object, ...) { ll <- maxValue(object) attr(ll, "df") <- sum(activePar(object)) ll } maxLik/R/nParam.R0000644000175100001440000000040214077525067013270 0ustar hornikusers## Return the #of parameters of model nParam.maxim <- function(x, free=FALSE, ...) { if(!inherits(x, "maxim")) { stop("'nParam.maxim' called on non-'maxim' object") } if(free) sum( activePar( x ) ) else length( x$estimate ) } maxLik/R/condiNumber.R0000644000175100001440000000273114077525067014326 0ustar hornikusers### condiNumber: print matrix' condition number adding columns one by one. ### In this way user may investigate the which columns cause problems with singularity condiNumber <- function(x, ...) UseMethod("condiNumber") condiNumber.default <- function(x, exact=FALSE, norm=FALSE, printLevel=print.level, print.level=1, digits = getOption( "digits" ), ... ) { ## x: a matrix, condition number of which are to be printed ## exact: whether the condition number have to be exact or approximated (see 'kappa') ## norm: whether to normalise the matrix' columns. ## printLevel: whether to print the condition numbers while calculating. Useful for interactive testing. savedDigits <- getOption("digits") options( digits = digits ) if(dim(x)[2] > dim(x)[1]) { warning(paste(dim(x)[1], "rows and", dim(x)[2], "columns, use transposed matrix")) x <- t(x) } cn <- numeric(ncol(x)) if(norm) { # Now normalise column vectors x <- apply(x, 2, FUN=function(v) v/sqrt(sum(v*v))) } for(i in seq(length=ncol(x))) { m <- x[,1:i] cn[i] <- kappa(m, exact=exact) if(printLevel > 0) cat(colnames(x)[i], "\t", cn[i], "\n") } names(cn) <- colnames(x) options( digits = savedDigits ) invisible(cn) } condiNumber.maxLik <- function(x, ...) condiNumber.default( x = hessian(x)[activePar(x), activePar(x),drop=FALSE], ... ) maxLik/R/tidyMethods.R0000644000175100001440000000142014077525067014350 0ustar hornikusers require_tibble_package <- function () { if (! requireNamespace("tibble", quietly = TRUE)) { stop("The `tibble` package must be installed to use tidy() or glance() methods") } } tidy.maxLik <- function (x, ...) { require_tibble_package() s <- summary(x) ret <- tibble::as_tibble(s$estimate, rownames = "term") colnames(ret) <- c("term", "estimate", "std.error", "statistic", "p.value") ret } glance.maxLik <- function (x, ...) { require_tibble_package() ll <- logLik(x) nobs <- tryCatch(nObs(x), error = function(e) NA) # nobs = NA in case of error ret <- tibble::tibble( df = attr(ll, "df"), logLik = as.numeric(ll), AIC = AIC(x), nobs = nobs ) ret } maxLik/R/callWithoutArgs.R0000644000175100001440000000051214077525067015170 0ustar hornikusers## strip arguments "args" and call the function with name "fName" thereafter callWithoutArgs <- function(theta, fName, args, ...) { f <- match.call() f[ args ] <- NULL f[[1]] <- as.name(fName) names(f)[2] <- "" f[["fName"]] <- NULL f[["args"]] <- NULL f1 <- eval(f, sys.frame(sys.parent())) return( f1 ) } maxLik/R/observationGradient.R0000644000175100001440000000053714077525067016074 0ustar hornikusers ### The function tests whether a given gradient is given ### observation-wise. It tests essentially the # of rows ### in the gradient observationGradient <- function(g, nParam) { if(is.null(dim(g))) { if(nParam == 1 & length(g) > 1) return(TRUE) return(FALSE) } if(nrow(g) == 1) return(FALSE) return(TRUE) } maxLik/R/maxSANN.R0000644000175100001440000000356614077525067013335 0ustar hornikusersmaxSANN <- function(fn, grad=NULL, hess=NULL, start, fixed = NULL, control=NULL, constraints = NULL, finalHessian=TRUE, parscale=rep(1, length=length(start)), ... ) { ## Wrapper of optim-based 'SANN' optimization ## ## contraints constraints to be passed to 'constrOptim' ## finalHessian: how (and if) to calculate the final Hessian: ## FALSE not calculate ## TRUE use analytic/numeric Hessian ## bhhh/BHHH use information equality approach ## ## ... : further arguments to fn() ## ## Note: grad and hess are for compatibility only, SANN uses only fn values if(!inherits(control, "MaxControl")) { mControl <- maxControl(iterlim=10000L) mControl <- addControlList(mControl, control) # default values } else { mControl <- control } mControl <- addControlList(mControl, list(...), check=FALSE) ## save seed of the random number generator if( exists( ".Random.seed" ) ) { savedSeed <- .Random.seed } # set seed for the random number generator (used by 'optim( method="SANN" )') set.seed(slot(mControl, "sann_randomSeed")) # restore seed of the random number generator on exit # (end of function or error) if( exists( "savedSeed" ) ) { on.exit( assign( ".Random.seed", savedSeed, envir = sys.frame() ) ) } else { on.exit( rm( .Random.seed, envir = sys.frame() ) ) } result <- maxOptim( fn = fn, grad = grad, hess = hess, start = start, method = "SANN", fixed = fixed, constraints = constraints, finalHessian=finalHessian, parscale = parscale, control=mControl, ... ) return(result) } maxLik/R/zzz.R0000644000175100001440000000157414077525067012722 0ustar hornikusers.onAttach <- function( libname, pkgname ) { packageStartupMessage( paste0( "\nPlease cite the 'maxLik' package as:\n", "Henningsen, Arne and Toomet, Ott (2011). ", "maxLik: A package for maximum likelihood estimation in R. ", "Computational Statistics 26(3), 443-458. ", "DOI 10.1007/s00180-010-0217-1.\n\n", "If you have questions, suggestions, or comments ", "regarding the 'maxLik' package, ", "please use a forum or 'tracker' at maxLik's R-Forge site:\n", "https://r-forge.r-project.org/projects/maxlik/"), domain = NULL, appendLF = TRUE ) } .onLoad <- function(libname, pkgname) { ## max rows and columns to output when printing matrices/vectors options(max.rows = 20L, max.cols = 7L) } .onUnload <- function(libpath) { .Options$max.rows <- NULL .Options$max.cols <- NULL } maxLik/R/headDots.R0000644000175100001440000000034414077525067013612 0ustar hornikusers### paste head of vector, and if some of it is left out, add '...' to it. headDots <- function(x, max.cols) { s <- paste(head(x, max.cols), collapse=", ") if(length(x) > max.cols) { s <- paste(s, "...") } s } maxLik/R/summary.maxim.R0000644000175100001440000000612714077525067014673 0ustar hornikusersprint.summary.maxim <- function( x, max.rows=getOption("max.rows", 20), max.cols=getOption("max.cols", 7), ... ) { summary <- x cat("--------------------------------------------\n") cat(summary$type, "\n") cat("Number of iterations:", summary$iterations, "\n") cat("Return code:", summary$code, "\n") cat(summary$message, "\n") if(!is.null(summary$unsucc.step)) { cat("Last (unsuccessful) step: function value", summary$unsucc.step$value, "\n") print(summary$unsucc.step$parameters) } if(!is.null(summary$estimate)) { cat("Function value:", summary$maximum, "\n") cat("Estimates:\n") printRowColLimits(summary$estimate, max.rows, max.cols, ...) if(!is.null(summary$hessian)) { cat("Hessian:\n") printRowColLimits(summary$hessian, max.rows, max.cols, ...) } } if(!is.null(summary$constraints)) { cat("\nConstrained optimization based on", summary$constraints$type, "\n") if(!is.null(summary$constraints$code)) cat("Return code:", summary$constraints$code, "\n") # note: this is missing for 'constrOptim' if(!is.null(summary$constraints$message)) cat(summary$constraints$message, "\n") # note: this is missing for 'constrOptim' cat(summary$constraints$outer.iterations, " outer iterations, barrier value", summary$constraints$barrier.value, "\n") } cat("--------------------------------------------\n") } summary.maxim <- function(object, hessian=FALSE, unsucc.step=FALSE, ... ) { ## The object of class "maxim" should include following components: ## maximum : function value at optimum ## estimate : matrix, estimated parameter values and gradient at optimum ## hessian : hessian ## code : code of convergence ## message : message, description of the code ## last.step : information about last step, if unsuccessful ## iterations : number of iterations ## type : type of optimisation ## nParam <- length(object$estimate) if(object$code == 3 & unsucc.step) { a <- cbind(object$last.step$theta0, object$last.step$theta1) dimnames(a) <- list(parameter=object$names, c("current par", "new par")) unsucc.step <- list(value=object$last.step$f0, parameters=a) } else { unsucc.step <- NULL } estimate <- cbind("estimate"=object$estimate, "gradient"=object$gradient) if(hessian) { H <- object$hessian } else { H <- NULL } summary <- list(maximum=object$maximum, type=object$type, iterations=object$iterations, code=object$code, message=object$message, unsucc.step=unsucc.step, estimate=estimate, hessian=H, constraints=object$constraints) class(summary) <- c("summary.maxim", class(summary)) summary } maxLik/R/maxSGACompute.R0000644000175100001440000003047114077525067014540 0ustar hornikusersmaxSGACompute <- function(fn, grad, hess, start, nObs, finalHessian=FALSE, bhhhHessian = FALSE, fixed=NULL, control=maxControl(), optimizer="SGA", # type of optimizer: SGA, Adam ...) { ## Stochastic Gradient Ascent: implements ## * SGA with momentum ## * Adam ## Parameters: ## fn - the function to be maximized. Returns either scalar or ## vector value with possible attributes ## constPar and newVal ## start - initial parameter vector (eventually w/names) ## control MaxControl object: ## The stopping criteria ## tol - maximum allowed absolute difference between sequential values ## reltol - maximum allowed reltive difference (stops if < reltol*(abs(fn) + reltol) ## gradtol - maximum allowed norm of gradient vector ## ## iterlim - maximum # of iterations ## ## finalHessian include final Hessian? As computing final hessian does not carry any extra penalty for NR method, this option is ## mostly for compatibility reasons with other maxXXX functions. ## TRUE/something else include ## FALSE do not include ## fixed - a logical vector -- which parameters are taken as fixed. ## Other paramters are treated as variable (free). ## ... additional argument to 'fn'. This may include ## 'fnOrig', 'gradOrig', 'hessOrig' if called fromm ## 'maxNR'. ## ## RESULTS: ## an object of class 'maxim' ## ## ------------------------------------------------- maximType <- "Stochastic Gradient Ascent" iterlim <- slot(control, "iterlim") nParam <- length(start) start1 <- start storeParameters <- slot(control, "storeParameters") storeValues <- slot(control, "storeValues") learningRate <- slot(control, "SG_learningRate") clip <- slot(control, "SG_clip") max.rows <- slot(control, "max.rows") max.cols <- slot(control, "max.cols") patience <- slot(control, "SG_patience") patienceStep <- slot(control, "SG_patienceStep") printLevel <- slot(control, "printLevel") batchSize <- slot(control, "SG_batchSize") if(optimizer == "Adam") { maximType <- "Stochastic Gradient Ascent/Adam" Adam.momentum1 <- slot(control, "Adam_momentum1") Adam.momentum2 <- slot(control, "Adam_momentum2") Adam.delta <- 1e-8 # maybe make it a parameter in the future Adam.s <- 0 Adam.r <- 0 Adam.time <- 0 } else if(optimizer == "SGA") { momentum <- slot(control, "SGA_momentum") v <- 0 # velocity that retains the momentum } else { stop(paste("unknown optimizer", optimizer)) } ## ---------- How many batches if(is.null(batchSize)) { nBatches <- 1 index <- seq(from=1, to=nObs, by=nBatches) } else { nBatches <- max(1L, nObs %/% batchSize) # ensure that we get at least one batch if batchSize set too large shuffledIndex <- sample(nObs, nObs) index <- shuffledIndex[seq(from=1, to=nObs, by=nBatches)] } ## f1 <- NULL # mark that we haven't computed the fcn value if(printLevel > 0) { f1 <- fn(start, fixed = fixed, sumObs = TRUE, index=index, ...) cat("Initial function value:", f1, "\n") if( isTRUE( attr( f1, "gradBoth" ) ) ) { warning( "the gradient is provided both as attribute 'gradient' and", " as argument 'grad': ignoring argument 'grad'" ) } if( isTRUE( attr( f1, "hessBoth" ) ) ) { warning( "the Hessian is provided both as attribute 'hessian' and", " as argument 'hess': ignoring argument 'hess'" ) } } if(!is.null(patience)) { if(is.null(f1)) { f1 <- fn(start, fixed = fixed, sumObs = TRUE, index=index, ...) } fBest <- f1 # remember the previous best value paramBest <- start patienceCount <- 0 # how many times have we hit a worse outcome } G1 <- grad(start, fixed = fixed, sumObs = TRUE, index=index, ...) # have to compute fn as we cannot get gradient otherwise if(any(is.na(G1[!fixed]))) { stop("NA in the initial gradient") } if(any(is.infinite(G1[!fixed]))) { stop("Infinite initial gradient") } if(length(G1) != nParam) { stop( "length of gradient (", length(G1), ") not equal to the no. of parameters (", nParam, ")" ) } if(length(clip) > 0) { if((norm2 <- sum(G1*G1)) > clip) G1 <- G1/sqrt(norm2)*sqrt(clip) } if(storeValues) { valueStore <- rep(NA_real_, iterlim + 1) if(is.null(f1)) { f1 <- fn(start, fixed = fixed, sumObs = TRUE, index=index, ...) } valueStore[1] <- f1 } if(storeParameters) { parameterStore <- matrix(NA_real_, iterlim + 1, nParam) dimnames(parameterStore) <- list(epoch=c("start", 1:iterlim), parameter=names(start)) parameterStore[1,] <- start } if(printLevel > 1) { cat( "----- Initial parameters: -----\n") cat( "fcn value:", as.vector(f1), "\n") a <- cbind(start1, G1, as.integer(!fixed)) dimnames(a) <- list(names(start1), c("parameter", "initial gradient", "free")) printRowColLimits(a, max.rows, max.cols) } ## ---------------- Main interation loop ------------------------ iter <- 0L ## we do not need to compute the function itself here, except for ## printing repeat { # repeat over epochs ## break here if iterlim == 0 if( iter >= iterlim) { code <- 4; break } ## break here to avoid potentially costly gradient computation if( iter >= slot(control, "iterlim")) { code <- 4; break } iter <- iter + 1L if(printLevel > 1) { cat( "----- epoch", iter, "-----\n") } for(iBatch in 1:nBatches) { # repeat over minibatches if(!is.null(batchSize)) { index <- shuffledIndex[seq(from=iBatch, to=nObs, by=nBatches)] } start0 <- start1 G0 <- G1 if(any(is.na(G0[!fixed]))) { stop("NA in gradient") } if(optimizer == "SGA") { v <- momentum*v + learningRate*G0 start1 <- start0 + v } else if(optimizer == "Adam") { Adam.time <- Adam.time + 1 Adam.s <- Adam.momentum1*Adam.s + (1 - Adam.momentum1)*G0 Adam.r <- Adam.momentum2*Adam.r + (1 - Adam.momentum2)*G0*G0 Adam.shat <- Adam.s/(1 - Adam.momentum1^Adam.time) Adam.rhat <- Adam.r/(1 - Adam.momentum2^Adam.time) v <- learningRate*Adam.shat/(sqrt(Adam.rhat) + Adam.delta) start1 <- start0 + v } f1 <- NULL # we are at a new location, mark that we haven't computed the f1 values ## still iterations to go, hence compute gradient G1 <- grad(start1, fixed = fixed, sumObs = TRUE, index=index, ...) if(any(is.na(G1[!fixed])) || any(is.infinite(G1[!fixed]))) { cat("Iteration", iter, "\n") cat("Parameter:\n") print(headDots(start1, max.cols), quote=FALSE) cat("Gradient:\n") printRowColLimits(G1, max.rows, max.cols) stop("NA/Inf in gradient") } if(length(clip) > 0) { if((norm2 <- sum(G1*G1)) > clip) # compute norm w/o cross-product as grad may not be a vector G1 <- G1/sqrt(norm2*clip) } ## print every batch if someone wants... if(printLevel > 4) { f1 <- fn(start1, fixed = fixed, sumObs = TRUE, index=index, ...) cat(" - batch", iBatch, "index", index, "learning rate", learningRate, " fcn value:", formatC(as.vector(f1), digits=8, format="f"), "\n") a <- cbind(learningRate*G0, start1, G1, as.integer(!fixed)) dimnames(a) <- list(names(start0), c("delta-v", "param", "gradient", "active")) printRowColLimits(a, max.rows, max.cols) } if(any(is.infinite(G1))) { code <- 6; break; } } # end of repeat over batches if(storeValues) { ## store last value of the epoch if(is.null(f1)) { f1 <- fn(start1, fixed = fixed, sumObs = TRUE, index=index, ...) } valueStore[iter + 1L] <- c(f1) # c removes dimensions and attributes } if(storeParameters) { ## store last value of the epoch parameterStore[iter + 1L,] <- c(start1) # c removes dimensions and attributes } if(slot(control, "printLevel") > 2) { if(is.null(f1)) { f1 <- fn(start1, fixed = fixed, sumObs = TRUE, index=index, ...) } cat(" learning rate", learningRate, " fcn value:", formatC(as.vector(f1), digits=8, format="f"), "\n") a <- cbind(learningRate*G0, start1, G1, as.integer(!fixed)) dimnames(a) <- list(names(start0), c("amount", "param", "gradient", "active")) printRowColLimits(a, max.rows, max.cols) } ## stopping criteria if( sqrt( crossprod( G1[!fixed] ) ) < slot(control, "gradtol") ) { code <-1; break } if(!is.null(patience) && (iter %% patienceStep == 0)) { if(is.null(f1)) { f1 <- fn(start1, fixed = fixed, sumObs = TRUE, index=index, ...) } if(f1 < fBest) { patienceCount <- patienceCount + 1 } else { patienceCount <- 0 fBest <- f1 paramBest <- start1 } if(patienceCount > patience) { code <- 10 f1 <- fBest start1 <- paramBest break } } } # main iteration loop over epochs if(printLevel > 0) { cat( "--------------\n") cat( maximMessage( code), "\n") cat( iter, " iterations\n") cat( "estimate:", headDots(start1, max.cols), "\n") if(is.null(f1)) { f1 <- fn(start1, fixed = fixed, sumObs = TRUE, index=index, ...) } cat( "Function value:", f1, "\n") } if(finalHessian & !bhhhHessian) { G1 <- grad( start1, fixed = fixed, sumObs = FALSE, index=index, ... ) } if(observationGradient(G1, length(start1))) { gradientObs <- G1 colnames( gradientObs ) <- names(start1) G1 <- colSums(as.matrix(G1 )) } else { gradientObs <- NULL } names( G1 ) <- names(start1) ## calculate (final) Hessian if(tolower(finalHessian) == "bhhh") { if(!is.null(gradientObs)) { hessian <- - crossprod( gradientObs ) attr(hessian, "type") <- "BHHH" } else { hessian <- NULL warning("For computing the final Hessian by 'BHHH' method, the log-likelihood or gradient must be supplied by observations") } } else if( finalHessian != FALSE ) { hessian <- hess( start1, fixed = fixed, index=index, ... ) } else { hessian <- NULL } if( !is.null( hessian ) ) { rownames( hessian ) <- colnames( hessian ) <- names(start1) } ## remove attributes from final value of objective (likelihood) function attributes( f1 )$gradient <- NULL attributes( f1 )$hessian <- NULL attributes( f1 )$gradBoth <- NULL attributes( f1 )$hessBoth <- NULL ## result <- list( maximum = unname( drop( f1 ) ), estimate=start1, gradient=drop(G1), hessian=hessian, code=code, message=maximMessage( code), fixed=fixed, iterations=iter, type=maximType, valueStore = if(storeValues) valueStore else NULL, parameterStore = if(storeParameters) parameterStore else NULL ) if( exists( "gradientObs" ) ) { result$gradientObs <- gradientObs } result <- c(result, control=control) # attach the control parameters ## class(result) <- c("maxim", class(result)) invisible(result) } maxLik/R/logLikFunc.R0000644000175100001440000000251314077525067014114 0ustar hornikusersif( getRversion() >= "2.15.1" ) { globalVariables( c( "lastFuncGrad", "lastFuncParam" ) ) } ## objective function: ## sum over possible individual likelihoods logLikFunc <- function(theta, fnOrig, # the original user-supplied function we wrap here gradOrig, hessOrig, # Arguments "gradOrig" and "hessOrig" are just for compatibility with # logLikGrad() and logLikHess() start = NULL, fixed = NULL, sumObs = TRUE, ...) { if(missing(fnOrig)) { stop("Cannot compute the objective function value: no objective function supplied") } theta <- addFixedPar( theta = theta, start = start, fixed = fixed, ...) result <- fnOrig( theta, ... ) ## save gradients and the corresponding parameter values assign( "lastFuncGrad", attr( result, "gradient" ), inherits = TRUE ) assign( "lastFuncParam", theta, inherits = TRUE ) if( sumObs ) { result <- sumKeepAttr( result ) g <- attributes( result )$gradient if( !is.null( g ) ) { g <- sumGradients( g, length( theta ) ) names( g ) <- names( theta ) if( !is.null( fixed ) ) { g <- g[ !fixed ] } attributes( result )$gradient <- g } } return( result ) } maxLik/R/showMaxControl.R0000644000175100001440000000111114077525067015037 0ustar hornikusers showMaxControl <- function(object) { cat("A 'MaxControl' object with slots:\n") for(s in slotNames(object)) { if(s == "sann_cand") { ## This is a function or NULL, handle with care: if(is.null(slot(object, s))) { cat("sann_cand = \n") } else { cat("sann_cand =\n") print(str(slot(object, s))) } } else { ## Just print cat(s, "=", slot(object, s), "\n") } } } setMethod("show", "MaxControl", showMaxControl) maxLik/R/maxNM.R0000644000175100001440000000253514077525067013103 0ustar hornikusersmaxNM <- function(fn, grad=NULL, hess=NULL, start, fixed = NULL, control=NULL, constraints=NULL, finalHessian=TRUE, parscale=rep(1, length=length(start)), ...) { ## Wrapper of optim-based 'Nelder-Mead' optimization ## ## contraints constraints to be passed to 'constrOptim' ## hessian: how (and if) to calculate the final Hessian: ## FALSE not calculate ## TRUE use analytic/numeric Hessian ## bhhh/BHHH use information equality approach ## ... : further arguments to fn() ## ## Note: grad and hess are for compatibility only, SANN uses only fn values if(!inherits(control, "MaxControl")) { mControl <- addControlList(maxControl(iterlim=500L), control) # default values } else { mControl <- control } mControl <- addControlList(mControl, list(...), check=FALSE) ## result <- maxOptim( fn = fn, grad = grad, hess = hess, start = start, method = "Nelder-Mead", fixed = fixed, constraints = constraints, finalHessian=finalHessian, parscale = parscale, control=mControl, ... ) return(result) } maxLik/R/maxValue.R0000644000175100001440000000014714077525067013642 0ustar hornikusersmaxValue <- function(x, ...) UseMethod("maxValue") maxValue.maxim <- function(x, ...) x$maximum maxLik/R/20-maxControl.R0000644000175100001440000000114014077525067014417 0ustar hornikusers ### Default constructor of MaxControl object: ### take a list of parameters and overwrite the default values maxControl.default <- function(...) { result <- new("MaxControl") result <- addControlDddot(result, ...) return(result) } ### Standard method for any arguments setGeneric("maxControl", function(x, ...) standardGeneric("maxControl") ) ### Method for 'maxim' objects: fetch the stored MaxControl setMethod("maxControl", "maxim", function(x, ...) x$control) ### Method for missing arguments: just default values setMethod("maxControl", "missing", maxControl.default) maxLik/R/coef.maxLik.R0000644000175100001440000000036514077525067014222 0ustar hornikuserscoef.maxim <- function( object, ... ) { return( object$estimate ) } coef.maxLik <- function( object, ... ) { return( object$estimate ) } coef.summary.maxLik <- function( object, ... ) { result <- object$estimate return( result ) } maxLik/R/storedValues.R0000644000175100001440000000033314077525067014535 0ustar hornikusers## Return the stored values in 'maxim' object storedValues <- function(x, ...) ## stored optimization values at each iteration UseMethod("storedValues") storedValues.maxim <- function(x, ...) x$valueStore maxLik/R/maxBFGS.R0000644000175100001440000000244214077525067013307 0ustar hornikusersmaxBFGS <- function(fn, grad=NULL, hess=NULL, start, fixed = NULL, control=NULL, constraints=NULL, finalHessian=TRUE, parscale=rep(1, length=length(start)), ## sumt parameters ...) { ## Wrapper of optim-based 'BFGS' optimization ## ## contraints constraints to be passed to 'constrOptim' ## finalHessian: how (and if) to calculate the final Hessian: ## FALSE not calculate ## TRUE use analytic/numeric Hessian ## bhhh/BHHH use information equality approach ## ## ... further arguments to fn() and grad() if(!inherits(control, "MaxControl")) { mControl <- addControlList(maxControl(iterlim=200), control) # default values } else { mControl <- control } mControl <- addControlList(mControl, list(...), check=FALSE) result <- maxOptim( fn = fn, grad = grad, hess = hess, start = start, method = "BFGS", fixed = fixed, constraints = constraints, finalHessian=finalHessian, parscale = parscale, control=mControl, ... ) return(result) } maxLik/R/maxLik.R0000644000175100001440000000616414077525067013312 0ustar hornikusersmaxLik <- function(logLik, grad=NULL, hess=NULL, start, method, constraints=NULL, ...) { ## Maximum Likelihood estimation. ## ## Newton-Raphson maximisation ## Parameters: ## logLik log-likelihood function. First argument must be the vector of parameters. ## grad gradient of log-likelihood. If NULL, numeric gradient is used. Must return either ## * vector, length=nParam ## * matrix, dim=c(nObs, 1). Treated as vector ## * matrix, dim=c(nObs, nParam). In this case the rows are simply ## summed (useful for maxBHHH). ## hess Hessian function (numeric used if NULL) ## start initial vector of parameters (eventually w/names) ## method maximisation method (Newton-Raphson) ## constraints constrained optimization: a list (see below) ## ... additional arguments for the maximisation routine ## ## RESULTS: ## list of class c("maxLik", "maxim"). This is in fact equal to class "maxim", just the ## methods are different. ## maximum function value at maximum ## estimate the parameter value at maximum ## gradient gradient ## hessian Hessian ## code integer code of success, depends on the optimization ## method ## message character message describing the code ## type character, type of optimization ## ## there may be more components, depending on the choice of ## the algorith. ## argNames <- c( "logLik", "grad", "hess", "start", "method", "constraints" ) checkFuncArgs( logLik, argNames, "logLik", "maxLik" ) if( !is.null( grad ) ) { checkFuncArgs( grad, argNames, "grad", "maxLik" ) } if( !is.null( hess ) ) { checkFuncArgs( hess, argNames, "hess", "maxLik" ) } ## Constrained optimization. We can two possibilities: ## * linear equality constraints ## * linear inequality constraints ## if(missing(method)) { if(is.null(constraints)) { method <- "nr" } else if(identical(names(constraints), c("ineqA", "ineqB"))) { if(is.null(grad)) method <- "Nelder-Mead" else method <- "BFGS" } else method <- "nr" } maxRoutine <- switch(tolower(method), "newton-raphson" =, "nr" = maxNR, "bfgs" = maxBFGS, "bfgsr" =, "bfgs-r" = maxBFGSR, "bhhh" = maxBHHH, "conjugate-gradient" =, "cg" = maxCG, "nelder-mead" =, "nm" = maxNM, "sann" = maxSANN, stop( "Maxlik: unknown maximisation method ", method ) ) result <- maxRoutine(fn=logLik, grad=grad, hess=hess, start=start, constraints=constraints, ...) class(result) <- c("maxLik", class(result)) result } maxLik/R/printRowColLimits.R0000644000175100001440000000164714077525067015532 0ustar hornikusers### print vector/matrix while limiting the number of rows/columns printed printRowColLimits <- function(x, max.rows=getOption("max.rows", 20), max.cols=getOption("max.cols", 7), ... # other arguments to 'print.matrix' ) { x1 <- x msg <- NULL if(is.null(dim(x))) { x1 <- matrix(x, nrow=1) colnames(x1) <- names(x) x <- x1 } ## we have a matrix (higher-D arrays not supported) if(ncol(x) > max.cols) { x1 <- x[, seq(length=max.cols), drop=FALSE] msg <- paste(msg, "reached getOption(\"max.cols\") -- omitted", ncol(x) - max.cols, "columns\n") } print(head(x1, max.rows), ...) if(nrow(x) > max.rows) { msg <- paste(msg, "reached getOption(\"max.rows\") -- omitted", nrow(x) - max.rows, "rows\n") } cat(msg) } maxLik/R/prepareFixed.R0000644000175100001440000000572614077525067014506 0ustar hornikusersprepareFixed <- function( start, activePar, fixed ) { nParam <- length( start ) ## establish the active parameters. if(!is.null(fixed)) { if(!is.null(activePar)) { if(!all(activePar)) { warning("Both 'activePar' and 'fixed' specified. 'activePar' ignored") } } if( is.logical( fixed ) ) { if( length ( fixed ) != length( start ) || !is.null( dim( fixed ) ) ) { stop( "if fixed parameters are specified using logical values,", " argument 'fixed' must be a logical vector", " with one element for each parameter", " (number of elements in argument 'start')" ) } activePar <- !fixed } else if( is.numeric( fixed ) ) { if( length ( fixed ) >= length( start ) || !is.null( dim( fixed ) ) ) { stop( "if fixed parameters are specified using their positions,", " argument 'fixed' must be a numerical vector", " with less elements than the number of parameters", " (number of elements in argument 'start'" ) } else if( min( fixed ) < 1 || max(fixed ) > length( start ) ) { stop( "if fixed parameters are specified using their positions,", " argument 'fixed' must have values between 1 and", " the total number of parameter", " (number of elements in argument 'start'" ) } activePar <- ! c( 1:length( start ) ) %in% fixed } else if( is.character( fixed ) ) { if( length ( fixed ) >= length( start ) || !is.null( dim( fixed ) ) ) { stop( "if fixed parameters are specified using their names,", " argument 'fixed' must be a vector of character strings", " with less elements than the number of parameters", " (number of elements in argument 'start'" ) } else if( is.null( names( start ) ) ) { stop( "if fixed parameters are specified using their names,", " parameter names have to be specified in argument 'start'" ) } else if( any( ! names( fixed ) %in% names( start ) ) ) { stop( "if fixed parameters are specified using their names,", " all parameter names specified in argument 'fixed'", " must be specified in argument 'start'" ) } activePar <- ! names( start ) %in% fixed } else { stop( "argument 'fixed' must be either a logical vector,", " a numeric vector, or a vector of character strings" ) } } else { if( is.null( activePar ) ) { activePar <- rep( TRUE, length( start ) ) } else if(is.numeric(activePar)) { a <- rep(FALSE, nParam) a[activePar] <- TRUE activePar <- a } } names( activePar ) <- names( start ) if( all( !activePar ) ){ stop( "At least one parameter must not be fixed", " using argument 'fixed'" ) } return( !activePar ) }maxLik/R/nObs.R0000644000175100001440000000131614077525067012760 0ustar hornikusers## Return #of observations for models nObs.maxLik <- function(x, ...) { if( is.null( x$gradientObs ) ) { stop( "cannot return the number of observations:", " please re-run 'maxLik' and", " provide a gradient function using argument 'grad' or", " (if no gradient function is specified) a log-likelihood function", " using argument 'logLik'", " that return the gradients or log-likelihood values, respectively,", " at each observation" ) } else if( is.matrix( x$gradientObs ) ) { return( nrow( x$gradientObs ) ) } else { stop( "internal error: component 'gradientObs' is not a matrix.", " Please contact the developers." ) } } maxLik/R/maximMessage.R0000644000175100001440000000230214077525067014473 0ustar hornikusersmaximMessage <- function(code) { message <- switch(code, "1" = "gradient close to zero (gradtol)", "2" = "successive function values within tolerance limit (tol)", "3" = paste("Last step could not find a value above the", "current.\nBoundary of parameter space?", " \nConsider switching to a more robust optimisation method temporarily."), "4" = "Iteration limit exceeded (iterlim)", "5" = "Infinite value", "6" = "Infinite gradient", "7" = "Infinite Hessian", "8" = "successive function values within relative tolerance limit (reltol)", "9" = paste("Gradient did not change,", "cannot improve BFGS approximation for the Hessian.\n", "Use different optimizer and/or analytic gradient."), "10" = "Lost patience (SG_patience)", "100" = "Initial value out of range.", paste("Code", code)) return(message) } maxLik/R/estfun.maxLik.R0000644000175100001440000000104514077525067014606 0ustar hornikusersestfun.maxLik <- function( x, ... ) { if( is.null( x$gradientObs ) ) { stop( "cannot return the gradients of the log-likelihood function", " evaluated at each observation: please re-run 'maxLik' and", " provide a gradient function using argument 'grad' or", " (if no gradient function is specified) a log-likelihood function", " using argument 'logLik'", " that return the gradients or log-likelihood values, respectively,", " at each observation" ) } return( x$gradientObs ) } maxLik/R/05-classes.R0000644000175100001440000000007114077525067013733 0ustar hornikusers## first to be loaded: setOldClass(c("maxLik", "maxim")) maxLik/R/sumt.R0000644000175100001440000001751214077525067013054 0ustar hornikusers### SUMT (Sequential Unconstrained Maximization Technique) ### borrowed from package 'clue' ### ### Adapted for linear constraints sumt <- function(fn, grad=NULL, hess=NULL, start, maxRoutine, constraints, SUMTTol = sqrt(.Machine$double.eps), # difference between estimates for successive outer iterations SUMTPenaltyTol = sqrt(.Machine$double.eps), # maximum allowed penalty SUMTQ = 10, SUMTRho0 = NULL, printLevel=print.level, print.level=0, SUMTMaxIter=100, ...) { ## constraints list w/components eqA and eqB. Maximization will ## be performed wrt to the constraint ## A %*% theta + B = 0 ## The user must ensure the matrices are in correct ## form ## maxSUMTiter how many SUMT iterations to perform max ## penalty <- function(theta) { p <- A %*% theta + B sum(p*p) } ## Penalty gradient and Hessian are used only if corresponding function ## for the likelihood function is provided gPenalty <- function(theta) { 2*(t(theta) %*% t(A) %*% A - t(B) %*% A) } hessPenalty <- function(theta) { 2*t(A) %*% A } ## strip possible arguments of maxRoutine and call the function thereafter callWithoutMaxArgs <- function(theta, fName, ...) { return( callWithoutArgs( theta, fName = fName, args = names(formals(maxRoutine)), ... ) ) } SUMTMessage <- function(code) { message <- switch(code, "1" = "penalty close to zero", "2" = "successive function values within tolerance limit", "4" = "Outer iteration limit exceeded (increase SUMTMaxIter ?).", paste("Code", code)) return(message) } ## the penalized objective function Phi <- function(theta, ...) { llVal <- callWithoutMaxArgs( theta, "logLikFunc", fnOrig = fn, gradOrig = grad, hessOrig = hess, sumObs = FALSE, ... ) llVal <- llVal - rho * penalty( theta ) / length( llVal ) g <- attributes( llVal )$gradient if( !is.null( g ) ) { if( is.matrix( g ) ) { g <- g - matrix( rep( rho * gPenalty( theta ) / nrow( g ), each = nrow( g ) ), nrow = nrow( g ), ncol = ncol( g ) ) } else { g <- g - rho * gPenalty( theta ) } attributes( llVal )$gradient <- g } h <- attributes( llVal )$hessian if( !is.null( h ) ) { attributes( llVal )$hessian <- h - rho * hessPenalty( theta ) } return( llVal ) } ## gradient of the penalized objective function if(!is.null(grad)) { gradPhi<- function(theta, ...) { g <- grad(theta, ...) if(is.matrix(g)) { g <- g - matrix( rep( rho * gPenalty( theta ) / nrow( g ), each = nrow( g ) ), nrow = nrow( g ), ncol = ncol( g ) ) } else { g <- g - rho * gPenalty( theta ) } return( g ) } } else { gradPhi <- NULL } ## Hessian of the penalized objective function if(!is.null(hess)) { hessPhi <- function(theta, ...) { return( hess(theta, ...) - rho*hessPenalty(theta) ) } } else { hessPhi <- NULL } ## -------- SUMT Main code --------- ## Note also that currently we do not check whether optimization was ## "successful" ... A <- constraints$eqA B <- as.matrix(constraints$eqB) ## Check if the matrices conform if(ncol(A) != length(start)) { stop("Equality constraint matrix A must have the same number\n", "of columns as the parameter length ", "(currently ", ncol(A), " and ", length(start), ")") } if(nrow(A) != nrow(B)) { stop("Equality constraint matrix A must have the same number\n", "of rows as the matrix B ", "(currently ", nrow(A), " and ", nrow(B), ")") } ## Find a suitable inital value for rho if not specified if(is.null(SUMTRho0)) { rho <- 0 result <- maxRoutine(fn=Phi, grad=gradPhi, hess=hessPhi, start=start, printLevel=max(printLevel - 1, 0), ...) theta <- coef(result) # Note: this may be a bad idea, # if unconstrained function is unbounded # from above. In that case rather specify SUMTRho0. if(printLevel > 0) { cat("SUMT initial: rho = ", rho, ", function = ", callWithoutMaxArgs( theta, "logLikFunc", fnOrig = fn, gradOrig = grad, hessOrig = hess, ... ), ", penalty = ", penalty(theta), "\n") cat("Estimate:") print(theta) } ## Better upper/lower bounds for rho? rho <- max( callWithoutMaxArgs( theta, "logLikFunc", fnOrig = fn, gradOrig = grad, hessOrig = hess, ... ), 1e-3) / max(penalty(start), 1e-3) } ## if rho specified, simply pick that and use previous initial values else { rho <- SUMTRho0 theta <- start } ## iter <- 1L repeat { thetaOld <- theta result <- maxRoutine(fn=Phi, grad=gradPhi, hess=hessPhi, start=thetaOld, printLevel=max(printLevel - 1, 0), ...) theta <- coef(result) if(printLevel > 0) { cat("SUMT iteration ", iter, ": rho = ", rho, ", function = ", callWithoutMaxArgs( theta, "logLikFunc", fnOrig = fn, gradOrig = grad, hessOrig = hess, ... ), ", penalty = ", penalty(theta), "\n", sep="") cat("Estimate:") print(theta) } if(max(abs(thetaOld - theta)) < SUMTTol) { SUMTCode <- 2 break } if(penalty(theta) < SUMTPenaltyTol) { SUMTCode <- 1 break } if(iter >= SUMTMaxIter) { SUMTCode <- 4 break } iter <- iter + 1L rho <- SUMTQ * rho } ## Now we replace the resulting gradient and Hessian with those, ## calculated on the original function llVal <- callWithoutMaxArgs( theta, "logLikFunc", fnOrig = fn, gradOrig = grad, hessOrig = hess, sumObs = FALSE, ... ) gradient <- attr( llVal, "gradient" ) if( is.null( gradient ) ) { gradient <- callWithoutMaxArgs( theta, "logLikGrad", fnOrig = fn, gradOrig = grad, hessOrig = hess, sumObs = FALSE, ... ) } if( !is.null( dim( gradient ) ) ) { if( nrow( gradient ) > 1 ) { gradientObs <- gradient } gradient <- colSums( gradient ) } else if( length( start ) == 1 && length( gradient ) > 1 ) { gradientObs <- matrix( gradient, ncol = 1 ) gradient <- sum( gradient ) } result$gradient <- gradient names( result$gradient ) <- names( result$estimate ) result$hessian <- callWithoutMaxArgs( theta, "logLikHess", fnOrig = fn, gradOrig = grad, hessOrig = hess, ... ) result$constraints <- list(type="SUMT", barrier.value=penalty(theta), code=SUMTCode, message=SUMTMessage(SUMTCode), outer.iterations=iter ) if( exists( "gradientObs" ) ) { result$gradientObs <- gradientObs colnames( result$gradientObs ) <- names( result$estimate ) } if( result$constraints$barrier.value > 0.001 ) { warning( "problem in imposing equality constraints: the constraints", " are not satisfied (barrier value = ", result$constraints$barrier.value, "). Try setting 'SUMTTol' to 0" ) } return(result) } maxLik/R/numericGradient.R0000644000175100001440000000452514077525067015204 0ustar hornikusersnumericGradient <- function(f, t0, eps=1e-6, fixed, ...) { ## numeric gradient of a vector-valued function ## f function, return Nval x 1 vector of values ## t0 NPar x 1 vector of parameters ## fixed calculate the gradient based on these parameters only ## return: ## NvalxNPar matrix, gradient ## gradient along parameters which are not active are NA warnMessage <- function(theta, value, i) { ## issue a warning if the function value at theta is not a scalar max.print <- 10 if(length(value) != nVal) { warnMsg <- "Function value at\n" warnMsg <- c(warnMsg, paste(format(theta[seq(length=min(max.print,length(theta)))]), collapse=" "), "\n") if(max.print < length(theta)) warnMsg <- c(warnMsg, "...\n") warnMsg <- c(warnMsg, " =\n") warnMsg <- c(warnMsg, paste(format(value[seq(length=min(max.print,length(value)))]), collapse=" "), "\n") if(max.print < length(value)) warnMsg <- c(warnMsg, "...\n") warnMsg <- c(warnMsg, "(length ", length(value), ") does not conform with ", "the length at original value ", nVal, "\n") warnMsg <- c(warnMsg, "Component ", i, " set to NA") return(warnMsg) } if(!all(is.na(value)) & !is.numeric(value)) stop("The function value must be numeric for 'numericGradient'") return(NULL) } NPar <- length(t0) nVal <- length(f0 <- f(t0, ...)) grad <- matrix(NA, nVal, NPar) row.names(grad) <- names(f0) colnames(grad) <- names(t0) if(missing(fixed)) fixed <- rep(FALSE, NPar) for(i in 1:NPar) { if(fixed[i]) next t2 <- t1 <- t0 t1[i] <- t0[i] - eps/2 t2[i] <- t0[i] + eps/2 ft1 <- f(t1, ...) ft2 <- f(t2, ...) ## give meaningful error message if the functions give vectors ## of different length at t1, t2 if(!is.null(msg <- warnMessage(t1, ft1, i))) { warning(msg) ft1 <- NA } if(!is.null(msg <- warnMessage(t2, ft2, i))) { warning(msg) ft2 <- NA } grad[,i] <- (ft2 - ft1)/eps } return(grad) } maxLik/R/maxNRCompute.R0000644000175100001440000004272414077525067014451 0ustar hornikusersmaxNRCompute <- function(fn, start, # maximum lambda for Marquardt (1963) finalHessian=TRUE, bhhhHessian = FALSE, fixed=NULL, control=maxControl(), ...) { ## Newton-Raphson maximisation ## Parameters: ## fn - the function to be maximized. Returns either scalar or ## vector value with possible attributes ## constPar and newVal ## fn must return the value with attributes 'gradient' ## and 'hessian' ## fn must have an argument sumObs ## start - initial parameter vector (eventually w/names) ## control MaxControl object: ## steptol - minimum step size ## lambda0 initial Hessian corrector (see Marquardt, 1963, p 438) ## lambdaStep how much Hessian corrector lambda is changed between ## two lambda trials ## (nu in Marquardt (1963, p 438) ## maxLambda largest possible lambda (if exceeded will give step error) ## lambdatol - max lowest eigenvalue when forcing pos. definite H ## qrtol - tolerance for qr decomposition ## qac How to handle the case where new function value is ## smaller than the original one: ## "stephalving" smaller step in the same direction ## "marquardt" Marquardt (1963) approach ## ## finalHessian include final Hessian? As computing final hessian does not carry any extra penalty for NR method, this option is ## mostly for compatibility reasons with other maxXXX functions. ## TRUE/something else include ## FALSE do not include ## fixed - a logical vector -- which parameters are taken as fixed. ## Other paramters are treated as variable (free). ## ... additional argument to 'fn'. This may include ## 'fnOrig', 'gradOrig', 'hessOrig' if called fromm ## 'maxNR'. ## ## RESULTS: ## a list of class "maxim": ## maximum function value at maximum ## estimate the parameter value at maximum ## gradient gradient ## hessian Hessian ## code integer code of success, see maximMessage ## message character message describing the code ## last.step only present if code == 3 (step error). A list with following components: ## theta0 - parameter value which led to the error ## f0 - function value at these parameter values ## climb - the difference between theta0 and the new approximated parameter value (theta1) ## fixed - logical vector, which parameters are constant (fixed, inactive, non-free) ## fixed logical vector, which parameters were treated as constant (fixed, inactive, non-free) ## iterations number of iterations ## type "Newton-Raphson maximisation" ## ## References: ## Marquardt (1963), "An algorithm for least-squares estimation of nonlinear ## parameters", J. Soc. Indust. Appl. Math 11(2), 431-441 ## max.eigen <- function( M) { ## return maximal eigenvalue of (symmetric) matrix val <- eigen(M, symmetric=TRUE, only.values=TRUE)$values val[1] ## L - eigenvalues in decreasing order, [1] - biggest in abs value } ## ------------------------------------------------- if(slot(control, "qac") == "marquardt") marquardt <- TRUE else marquardt <- FALSE ## maximType <- "Newton-Raphson maximisation" if(marquardt) { maximType <- paste(maximType, "with Marquardt (1963) Hessian correction") } nimed <- names(start) nParam <- length(start) samm <- NULL # data for the last step that could not find a better # value I <- diag(rep(1, nParam)) # I is unit matrix start1 <- start iter <- 0L returnHessian <- ifelse( bhhhHessian, "BHHH", TRUE ) f1 <- fn(start1, fixed = fixed, sumObs = TRUE, returnHessian = returnHessian, ...) if(slot(control, "printLevel") > 2) { cat("Initial function value:", f1, "\n") } if(any(is.na( f1))) { result <- list(code=100, message=maximMessage("100"), iterations=0, type=maximType) class(result) <- "maxim" return(result) } if(any(is.infinite( f1)) && sum(f1) > 0) { # we stop at +Inf but not at -Inf result <- list(code=5, message=maximMessage("5"), iterations=0, type=maximType) class(result) <- "maxim" return(result) } if( isTRUE( attr( f1, "gradBoth" ) ) ) { warning( "the gradient is provided both as attribute 'gradient' and", " as argument 'grad': ignoring argument 'grad'" ) } if( isTRUE( attr( f1, "hessBoth" ) ) ) { warning( "the Hessian is provided both as attribute 'hessian' and", " as argument 'hess': ignoring argument 'hess'" ) } G1 <- attr( f1, "gradient" ) if(slot(control, "printLevel") > 2) { cat("Initial gradient value:\n") print(G1) } if(any(is.na(G1[!fixed]))) { stop("NA in the initial gradient") } if(any(is.infinite(G1[!fixed]))) { stop("Infinite initial gradient") } if(length(G1) != nParam) { stop( "length of gradient (", length(G1), ") not equal to the no. of parameters (", nParam, ")" ) } H1 <- attr( f1, "hessian" ) if(slot(control, "printLevel") > 3) { cat("Initial Hessian value:\n") print(H1) } if(length(H1) == 1) { # Allow the user program to return a # single NA in case of out of support or # other problems if(is.na(H1)) stop("NA in the initial Hessian") } if(any(is.na(H1[!fixed, !fixed]))) { stop("NA in the initial Hessian") } if(any(is.infinite(H1))) { stop("Infinite initial Hessian") } if( slot(control, "printLevel") > 1) { cat( "----- Initial parameters: -----\n") cat( "fcn value:", as.vector(f1), "\n") a <- cbind(start, G1, as.integer(!fixed)) dimnames(a) <- list(nimed, c("parameter", "initial gradient", "free")) print(a) cat( "Condition number of the (active) hessian:", kappa( H1[!fixed, !fixed]), "\n") if( slot(control, "printLevel") > 3) { print( H1) } } lambda1 <- slot(control, "marquardt_lambda0") step <- 1 ## ---------------- Main interation loop ------------------------ repeat { if( iter >= slot(control, "iterlim")) { code <- 4; break } iter <- iter + 1L if(!marquardt) { lambda1 <- 0 # assume the function is concave at start0 } start0 <- start1 f0 <- f1 G0 <- G1 if(any(is.na(G0[!fixed]))) { stop("NA in gradient (at the iteration start)") } H0 <- H1 if(any(is.na(H0[!fixed, !fixed]))) { stop("NA in Hessian (at the iteration start)") } if(marquardt) { lambda1 <- lambda1/slot(control, "marquardt_lambdaStep") # initially we try smaller lambda # lambda1: current lambda for calculations H <- H0 - lambda1*I } else { step <- 1 H <- H0 } ## check whether hessian is positive definite aCount <- 0 # avoid inifinite number of attempts because of # numerical problems while((me <- max.eigen( H[!fixed,!fixed,drop=FALSE])) >= -slot(control, "lambdatol") | (qRank <- qr(H[!fixed,!fixed], tol=slot(control, "qrtol"))$rank) < sum(!fixed)) { # maximum eigenvalue -> negative definite # qr()$rank -> singularity if(marquardt) { lambda1 <- lambda1*slot(control, "marquardt_lambdaStep") } else { lambda1 <- abs(me) + slot(control, "lambdatol") + min(abs(diag(H)[!fixed]))/1e7 # The third term corrects numeric singularity. If diag(H) only contains large values, # (H - (a small number)*I) == H because of finite precision } H <- (H - lambda1*I) # could we multiply it with something like (for stephalving) # *abs(me)*lambdatol # -lambda*I makes the Hessian (barely) # negative definite. # *me*lambdatol keeps the scale roughly # the same as it was before -lambda*I aCount <- aCount + 1 if(aCount > 100) { # should be enough even in the worst case break } } amount <- vector("numeric", nParam) inv <- try(qr.solve(H[!fixed,!fixed,drop=FALSE], G0[!fixed], tol=slot(control, "qrtol"))) if(inherits(inv, "try-error")) { # could not get the Hessian to negative definite samm <- list(theta0=start0, f0=f0, climb=amount) code <- 3 break } amount[!fixed] <- inv start1 <- start0 - step*amount # note: step is always 1 for Marquardt method f1 <- fn(start1, fixed = fixed, sumObs = TRUE, returnHessian = returnHessian, ...) # The call calculates new function, # gradient, and Hessian values ## Are we requested to fix some of the parameters? constPar <- attr(f1, "constPar") if(!is.null(constPar)) { if(any(is.na(constPar))) { stop("NA in the list of constants") } fixed <- rep(FALSE, nParam) fixed[constPar] <- TRUE } ## Are we asked to write in a new value for some of the parameters? if(is.null(newVal <- attr(f1, "newVal"))) { ## no ... if(marquardt) { stepOK <- lambda1 <= slot(control, "marquardt_maxLambda") } else { stepOK <- step >= slot(control, "steptol") } while( any(is.na(f1)) || ( ( sum(f1) < sum(f0) ) & stepOK)) { # We end up in a NA or a higher value. # try smaller step if(marquardt) { lambda1 <- lambda1*slot(control, "marquardt_lambdaStep") H <- (H0 - lambda1*I) amount[!fixed] <- qr.solve(H[!fixed,!fixed,drop=FALSE], G0[!fixed], tol=slot(control, "qrtol")) } else { step <- step/2 } start1 <- start0 - step*amount if(slot(control, "printLevel") > 2) { if(slot(control, "printLevel") > 3) { cat("Try new parameters:\n") print(start1) } cat("function value difference", f1 - f0) if(marquardt) { cat(" -> lambda", lambda1, "\n") } else { cat(" -> step", step, "\n") } } f1 <- fn(start1, fixed = fixed, sumObs = TRUE, returnHessian = returnHessian, ...) # WTF does the 'returnHessian' do here ? ## Find out the constant parameters -- these may be other than ## with full step constPar <- attr(f1, "constPar") if(!is.null(constPar)) { if(any(is.na(constPar))) { stop("NA in the list of constants") } fixed[constPar] <- TRUE ## Any new values requested? if(!is.null(newVal <- attr(f1, "newVal"))) { ## Yes. Write them to parameters and go for ## next iteration start1[newVal$index] <- newVal$val break; } } } if(marquardt) { stepOK <- lambda1 <= slot(control, "marquardt_maxLambda") } else { stepOK <- step >= slot(control, "steptol") } if(!stepOK) { # we did not find a better place to go... start1 <- start0 f1 <- f0 samm <- list(theta0=start0, f0=f0, climb=amount) } } else { ## Yes, indeed. New values given to some of the params. ## Note, this may result in a lower function value, ## hence we do not check f1 > f0 start1[newVal$index] <- newVal$val if( slot(control, "printLevel") > 0 ) { cat( "Keeping parameter(s) ", paste( newVal$index, collapse = ", " ), " at the fixed values ", paste( newVal$val, collapse = ", " ), ", as the log-likelihood function", " returned attributes 'constPar' and 'newVal'\n", sep = "" ) } } G1 <- attr( f1, "gradient" ) if(any(is.na(G1[!fixed]))) { cat("Iteration", iter, "\n") cat("Parameter:\n") print(start1) cat("Gradient (first 30 components):\n") print(head(G1, n=30)) stop("NA in gradient") } if(any(is.infinite(G1))) { code <- 6; break; } H1 <- attr( f1, "hessian" ) if( slot(control, "printLevel") > 1) { cat( "-----Iteration", iter, "-----\n") } if(any(is.infinite(H1))) { code <- 7; break } if(slot(control, "printLevel") > 2) { cat( "lambda ", lambda1, " step", step, " fcn value:", formatC(as.vector(f1), digits=8, format="f"), "\n") a <- cbind(amount, start1, G1, as.integer(!fixed)) dimnames(a) <- list(names(start0), c("amount", "new param", "new gradient", "active")) print(a) if( slot(control, "printLevel") > 3) { cat("Hessian\n") print( H1) } if(!any(is.na(H1[!fixed, !fixed]))) { cat( "Condition number of the hessian:", kappa(H1[!fixed,!fixed,drop=FALSE]), "\n") } } if( step < slot(control, "steptol")) { # wrong guess in step halving code <- 3; break } if(lambda1 > slot(control, "marquardt_maxLambda")) { # wrong guess in Marquardt method code <- 3; break } if( sqrt( crossprod( G1[!fixed] ) ) < slot(control, "gradtol") ) { code <- 1; break } if(is.null(newVal) && ((sum(f1) - sum(f0)) < slot(control, "tol"))) { code <- 2; break # } if(is.null(newVal) && (sum(f1) - sum(f0) < slot(control, "reltol")*abs(sum(f1) + slot(control, "reltol"))) # We need abs(f1) to ensure RHS is positive # (as long as reltol is positive) ) { code <- 8; break } if(any(is.infinite(f1)) && sum(f1) > 0) { code <- 5; break } } if( slot(control, "printLevel") > 0) { cat( "--------------\n") cat( maximMessage( code), "\n") cat( iter, " iterations\n") cat( "estimate:", start1, "\n") cat( "Function value:", f1, "\n") } names(start1) <- nimed F1 <- fn( start1, fixed = fixed, sumObs = FALSE, returnHessian = ( finalHessian == TRUE ), ... ) G1 <- attr( F1, "gradient" ) if(observationGradient(G1, length(start1))) { gradientObs <- G1 colnames( gradientObs ) <- nimed G1 <- colSums(as.matrix(G1 )) } else { gradientObs <- NULL } names( G1 ) <- nimed ## calculate (final) Hessian if(tolower(finalHessian) == "bhhh") { if(!is.null(gradientObs)) { hessian <- -crossprod( gradientObs ) attr(hessian, "type") <- "BHHH" } else { hessian <- NULL warning("For computing the final Hessian by 'BHHH' method, the log-likelihood or gradient must be supplied by observations") } } else if( finalHessian != FALSE ) { hessian <- attr( F1, "hessian" ) } else { hessian <- NULL } if( !is.null( hessian ) ) { rownames( hessian ) <- colnames( hessian ) <- nimed } ## remove attributes from final value of objective (likelihood) function attributes( f1 )$gradient <- NULL attributes( f1 )$hessian <- NULL attributes( f1 )$gradBoth <- NULL attributes( f1 )$hessBoth <- NULL ## result <-list( maximum = unname( drop( f1 ) ), estimate=start1, gradient=drop(G1), hessian=hessian, code=code, message=maximMessage( code), last.step=samm, # only when could not find a # lower point fixed=fixed, iterations=iter, type=maximType) if( exists( "gradientObs" ) ) { result$gradientObs <- gradientObs } result <- c(result, control=control) # attach the control parameters ## class(result) <- c("maxim", class(result)) invisible(result) } maxLik/R/maxOptim.R0000644000175100001440000002777514077525067013676 0ustar hornikusersmaxOptim <- function(fn, grad, hess, start, method, fixed, constraints, finalHessian=TRUE, parscale, control=maxControl(), ...) { ## Wrapper of optim-based optimization methods ## ## finalHessian: how (and if) to calculate the final Hessian: ## FALSE not calculate ## TRUE use analytic/numeric Hessian ## bhhh/BHHH use information equality approach ## if( method == "Nelder-Mead" ) { maxMethod <- "maxNM" } else { maxMethod <- paste( "max", method, sep = "" ) } ## ## Add parameters from ... to control if(!inherits(control, "MaxControl")) { stop("'control' must be a 'MaxControl' object, created by 'maxControl()'") } control <- addControlList(control, list(...), check=FALSE) ## Any forbidden arguments in fn? argNames <- c( "fn", "grad", "hess", "start", "print.level", "iterlim", "constraints", "tol", "reltol", "parscale", "alpha", "beta", "gamma", "cand", "temp", "tmax" ) checkFuncArgs( fn, argNames, "fn", maxMethod ) if( !is.null( grad ) ) { checkFuncArgs( grad, argNames, "grad", maxMethod ) } if( !is.null( hess ) ) { checkFuncArgs( hess, argNames, "hess", maxMethod ) } ## check argument 'fixed' fixed <- prepareFixed( start = start, activePar = NULL, fixed = fixed ) message <- function(c) { switch(as.character(c), "0" = "successful convergence", "1" = "iteration limit exceeded", "10" = "degeneracy in Nelder-Mead simplex", "51" = "warning from the 'L-BFGS-B' method; see the corresponding component 'message' for details", "52" = "error from the 'L-BFGS-B' method; see the corresponding component 'message' for details" ) } ## initialize variables for saving gradients provided as attributes ## and the corresponding parameter values lastFuncGrad <- NULL lastFuncParam <- NULL ## chop off the control args from '...' and forward the new '...' dddot <- list(...) dddot <- dddot[!(names(dddot) %in% openParam(control))] # unfortunately now you have to do # do.call(function, args, dddot) instead of just calling # func(args, ...) ## strip possible SUMT parameters and call the function thereafter environment( callWithoutSumt ) <- environment() maximType <- paste( method, "maximization" ) parscale <- rep(parscale, length.out=length(start)) oControl <- list(trace=max(slot(control, "printLevel"), 0), REPORT=1, fnscale=-1, reltol=slot(control, "tol"), maxit=slot(control, "iterlim"), parscale=parscale[ !fixed ], alpha=slot(control, "nm_alpha"), beta=slot(control, "nm_beta"), gamma=slot(control, "nm_gamma"), temp=slot(control, "sann_temp"), tmax=slot(control, "sann_tmax") ) oControl$reltol <- slot(control, "reltol") argList <- list(theta=start, fName="logLikFunc", fnOrig = fn, gradOrig = grad, hessOrig = hess) if(length(dddot) > 0) { argList <- c(argList, dddot) } f1 <- do.call(callWithoutSumt, argList) if(is.na( f1)) { result <- list(code=100, message=maximMessage("100"), iterations=0, type=maximType) class(result) <- "maxim" return(result) } if(slot(control, "printLevel") > 2) { cat("Initial function value:", f1, "\n") } hasGradAttr <- !is.null( attr( f1, "gradient" ) ) if( hasGradAttr && !is.null( grad ) ) { grad <- NULL warning( "the gradient is provided both as attribute 'gradient' and", " as argument 'grad': ignoring argument 'grad'" ) } hasHessAttr <- !is.null( attr( f1, "hessian" ) ) if( hasHessAttr && !is.null( hess ) ) { hess <- NULL warning( "the Hessian is provided both as attribute 'hessian' and", " as argument 'hess': ignoring argument 'hess'" ) } if( method == "BFGS" ) { argList <- list(theta=start, fName="logLikGrad", fnOrig = fn, gradOrig = grad, hessOrig = hess) if(length(dddot) > 0) { argList <- c(argList, dddot) } G1 <- do.call(callWithoutSumt, argList) if(slot(control, "printLevel") > 2) { cat("Initial gradient value:\n") print(G1) } if(any(is.na(G1))) { stop("NA in the initial gradient") } if(any(is.infinite(G1))) { stop("Infinite initial gradient") } if(length(G1) != length(start)) { stop( "length of gradient (", length(G1), ") not equal to the no. of parameters (", length(start), ")" ) } } ## function to return the gradients (BFGS, CG) or the new candidate point (SANN) if( method == "BFGS" ) { gradOptim <- logLikGrad } else if( method == "SANN" ) { if( is.null(slot(control, "sann_cand") ) ) { gradOptim <- NULL } else { gradOptim <- function( theta, fnOrig, gradOrig, hessOrig, start, fixed, ... ) { return(control@sann_cand( theta, ... ) ) } } } else if( method == "CG" ) { gradOptim <- logLikGrad } else if( method == "Nelder-Mead" ) { gradOptim <- NULL } else { stop( "internal error: unknown method '", method, "'" ) } ## A note about return value: ## We can the return from 'optim' in a object of class 'maxim'. ## However, as 'sumt' already returns such an object, we return the ## result of 'sumt' directly, without the canning if(is.null(constraints)) { cl <- list(quote(optim), par = start[ !fixed ], fn = logLikFunc, control = oControl, method = method, gr = gradOptim, fnOrig = fn, gradOrig = grad, hessOrig = hess, start = start, fixed = fixed) if(length(dddot) > 0) { cl <- c(cl, dddot) } result <- eval(as.call(cl)) resultConstraints <- NULL } else { ## linear equality and inequality constraints # inequality constraints: A %*% beta + B >= 0 if(identical(names(constraints), c("ineqA", "ineqB"))) { nra <- nrow(constraints$ineqA) nrb <- nrow(as.matrix(constraints$ineqB)) ncb <- ncol(as.matrix(constraints$ineqB)) if(ncb != 1) { stop("Inequality constraint B must be a vector ", "(or Nx1 matrix). Currently ", ncb, " columns") } if(length(dim(constraints$ineqA)) != 2) { stop("Inequality constraint A must be a matrix\n", "Current dimension", dim(constraints$ineqA)) } if(ncol(constraints$ineqA) != length(start)) { stop("Inequality constraint A must have the same ", "number of columns as length of the parameter.\n", "Currently ", ncol(constraints$ineqA), " and ", length(start), ".") } if(ncol(constraints$ineqA) != length(start)) { stop("Inequality constraint A cannot be matrix multiplied", " with the start value.\n", "A is a ", nrow(constraints$ineqA), "x", ncol(constraints$ineqA), " matrix,", " start value has lenght ", length(start)) } if(nra != nrb) { stop("Inequality constraints A and B suggest different number ", "of constraints: ", nra, " and ", nrb) } cl <- list(quote(constrOptim2), theta = start, f = logLikFunc, grad = gradOptim, ineqA=constraints$ineqA, ineqB=constraints$ineqB, control=oControl, method = method, fnOrig = fn, gradOrig = grad, hessOrig = hess, fixed = fixed, start=start) # 'start' argument is needed for adding fixed parameters later in the call chain if(length(dddot) > 0) { cl <- c(cl, dddot) } result <- eval(as.call(cl)) resultConstraints <- list(type="constrOptim", barrier.value=result$barrier.value, outer.iterations=result$outer.iterations ) } else if(identical(names(constraints), c("eqA", "eqB"))) { # equality constraints: A %*% beta + B = 0 argList <- list(fn=fn, grad=grad, hess=hess, start=start, fixed = fixed, maxRoutine = get( maxMethod ), constraints=constraints, parscale = parscale, control=control) # recursive evaluation-> pass original (possibly # supplemented) control if(length(dddot) > 0) { argList <- c(argList, dddot) } result <- do.call( sumt, argList[ !sapply( argList, is.null ) ] ) return(result) # this is already maxim object } else { stop( maxMethod, " only supports the following constraints:\n", "constraints=list(ineqA, ineqB)\n", "\tfor A %*% beta + B >= 0 linear inequality constraints\n", "current constraints:", paste(names(constraints), collapse=" ")) } } # estimates (including fixed parameters) estimate <- start estimate[ !fixed ] <- result$par ## Calculate the final gradient argList <- list(estimate, "logLikGrad", fnOrig = fn, gradOrig = grad, hessOrig = hess, sumObs = FALSE) if(length(dddot) > 0) { argList <- c(argList, dddot) } gradient <- do.call(callWithoutSumt, argList) if(observationGradient(gradient, length(start))) { gradientObs <- gradient gradient <- colSums(as.matrix(gradient )) } else { gradientObs <- NULL } ## calculate (final) Hessian if(tolower(finalHessian) == "bhhh") { if(!is.null(gradientObs)) { hessian <- - crossprod( gradientObs ) attr(hessian, "type") <- "BHHH" } else { hessian <- NULL warning("For computing the final Hessian by 'BHHH' method, the log-likelihood or gradient must be supplied by observations") } } else if(finalHessian != FALSE) { argList <- list( estimate, fnOrig = fn, gradOrig = grad, hessOrig = hess) if(length(dddot) > 0) { argList <- c(argList, dddot) } hessian <- as.matrix( do.call(logLikHess, argList) ) } else { hessian <- NULL } if( !is.null( hessian ) ) { rownames( hessian ) <- colnames( hessian ) <- names( estimate ) } result <- list( maximum=result$value, estimate=estimate, gradient=drop(gradient), # ensure the final (non-observation) gradient is just a vector hessian=hessian, code=result$convergence, message=paste(message(result$convergence), result$message), last.step=NULL, fixed = fixed, iterations=result$counts[1], type=maximType, constraints=resultConstraints ) if( exists( "gradientObs" ) ) { result$gradientObs <- gradientObs } result <- c(result, control=control, objectiveFn=fn) # attach the control parameters class(result) <- "maxim" return(result) } maxLik/R/logLikGrad.R0000644000175100001440000000415614077525067014103 0ustar hornikusers## gradient function: ## sum over possible individual gradients logLikGrad <- function(theta, fnOrig, gradOrig=NULL, hessOrig=NULL, start = NULL, fixed = NULL, sumObs = TRUE, gradAttr = NULL, ...) { # Argument "hessOrig" is just for compatibility with logLikHess() # argument "gradAttr" should be # - FALSE if the gradient is not provided as attribute of the log-lik value # - TRUE if the gradient is provided as attribute of the log-lik value # - NULL if this is not known theta <- addFixedPar( theta = theta, start = start, fixed = fixed, ...) if(!is.null(gradOrig)) { g <- gradOrig(theta, ...) } else if( isTRUE( gradAttr ) || is.null( gradAttr ) ) { if( exists( "lastFuncGrad" ) && exists( "lastFuncParam" ) ) { if( identical( theta, lastFuncParam ) ) { g <- lastFuncGrad } else { g <- "different parameters" } } else { g <- "'lastFuncGrad' or 'lastFuncParam' does not exist" } if( is.character( g ) ) { # do not call fnOrig() if 'lastFuncGrad' is NULL g <- attr( fnOrig( theta, ... ), "gradient" ) } } else { g <- NULL } if( is.null( g ) ) { g <- numericGradient(logLikFunc, theta, fnOrig = fnOrig, sumObs = sumObs, ...) } if( sumObs ) { ## We were requested a single (summed) gradient. Return a vector g <- sumGradients( g, length( theta ) ) names( g ) <- names( theta ) if( !is.null( fixed ) ) { g <- g[ !fixed ] } } else { ## we were requested individual gradients (if possible). Ensure g is a matrix if(observationGradient(g, length(theta))) { ## it was indeed by observations g <- as.matrix(g) colnames( g ) <- names( theta ) if( !is.null( fixed ) ) { g <- g[ , !fixed ] } } else { ## it wasn't g <- drop(g) names(g) <- names(theta) if( !is.null( fixed ) ) { g <- g[ !fixed ] } } } return( g ) } maxLik/R/print.maxLik.R0000644000175100001440000000064014077525067014436 0ustar hornikusersprint.maxLik <- function( x, ... ) { cat("Maximum Likelihood estimation\n") cat(maximType(x), ", ", nIter(x), " iterations\n", sep="") cat("Return code ", returnCode(x), ": ", returnMessage(x), "\n", sep="") if(!is.null(x$estimate)) { cat("Log-Likelihood:", x$maximum ) cat( " (", sum( activePar( x ) ), " free parameter(s))\n", sep = "" ) cat("Estimate(s):", x$estimate, "\n" ) } } maxLik/R/fnSubset.R0000644000175100001440000000272014077525067013650 0ustar hornikusersfnSubset <- function(x, fnFull, xFixed, xFull=c(x, xFixed), ...){ ## ## 1. Confirm length(x)+length(xFixed) = length(xFull) ## nx <- length(x) nFixed <- length(xFixed) nFull <- length(xFull) if((nx+nFixed) != nFull) stop("length(x)+length(xFixed) != length(xFull): ", nx, " + ", nFixed, " != ", nFull) ## ## 2. names(xFull)? ## # 2.1. is.null(names(xFull)) if(is.null(names(xFull))) return(fnFull(c(x, xFixed), ...)) # 2.2. xFull[names(xFixed)] <- xFixed, ... { if(is.null(names(xFixed))){ if(is.null(names(x))) xFull <- c(x, xFixed) else { x. <- (names(xFull) %in% names(x)) if(sum(x.) != nx){ print(x) print(xFull) stop("x has names not in xFull.") } xFull[names(x)] <- x xFull[!x.] <- xFixed } } else { Fixed <- (names(xFull) %in% names(xFixed)) if(sum(Fixed) != nFixed){ print(xFixed) print(xFull) stop("xFixed has names not in xFull.") } xFull[names(xFixed)] <- xFixed { if(is.null(names(x))) xFull[!Fixed] <- x else { x. <- (names(xFull) %in% names(x)) if(sum(x.) != nx){ print(x) print(xFull) stop("x has names not in xFull.") } xFull[names(x)] <- x } } } } ## ## 3. fnFull(...) ## fnFull(xFull, ...) } maxLik/R/sumGradients.R0000644000175100001440000000044114077525067014522 0ustar hornikusers### Sum the observation-wise gradient sumGradients <- function( gr, nParam ) { if( !is.null(dim(gr))) { gr <- colSums(gr) } else { ## ... or vector if only one parameter if( nParam == 1 && length( gr ) > 1 ) { gr <- sum(gr) } } return( gr ) } maxLik/R/maxBFGSR.R0000644000175100001440000001245614077525067013437 0ustar hornikusers maxBFGSR <- function(fn, grad=NULL, hess=NULL, start, constraints=NULL, finalHessian=TRUE, fixed=NULL, activePar=NULL, control=NULL, ...) { ## Newton-Raphson maximization ## Parameters: ## fn - the function to be minimized. Returns either scalar or ## vector value with possible attributes ## constPar and newVal ## grad - gradient function (numeric used if missing). Must return either ## * vector, length=nParam ## * matrix, dim=c(nObs, 1). Treated as vector ## * matrix, dim=c(M, nParam), where M is arbitrary. In this case the ## rows are simply summed (useful for maxBHHH). ## hess - hessian function (numeric used if missing) ## start - initial parameter vector (eventually w/names) ## ... - extra arguments for fn() ## The maxControl structure: ## The stopping criteria ## tol - maximum allowed absolute difference between sequential values ## reltol - maximum allowed reltive difference (stops if < reltol*(abs(fn) + reltol) ## gradtol - maximum allowed norm of gradient vector ## steptol - minimum step size ## iterlim - maximum # of iterations ## finalHessian include final Hessian? As computing final hessian does not carry any extra penalty for NR method, this option is ## mostly for compatibility reasons with other maxXXX functions. ## TRUE/something else include ## FALSE do not include ## activePar - an index vector -- which parameters are taken as ## variable (free). Other paramters are treated as ## fixed constants ## fixed index vector, which parameters to keep fixed ## ## RESULTS: ## a list of class "maxim": ## maximum function value at maximum ## estimate the parameter value at maximum ## gradient gradient ## hessian Hessian ## code integer code of success: ## 1 - gradient close to zero ## 2 - successive values within tolerance limit ## 3 - could not find a higher point (step error) ## 4 - iteration limit exceeded ## 100 - initial value out of range ## message character message describing the code ## last.step only present if code == 3 (step error). A list with following components: ## theta0 - parameter value which led to the error ## f0 - function value at these parameter values ## climb - the difference between theta0 and the new approximated parameter value (theta1) ## activePar - logical vector, which parameters are active (not constant) ## activePar logical vector, which parameters were treated as free (resp fixed) ## iterations number of iterations ## type "Newton-Raphson maximization" ## ## ------------------------------ ## Add parameters from ... to control if(!inherits(control, "MaxControl")) { mControl <- addControlList(maxControl(), control) } else { mControl <- control } mControl <- addControlList(mControl, list(...), check=FALSE) ## argNames <- c(c( "fn", "grad", "hess", "start", "activePar", "fixed", "control"), openParam(mControl)) checkFuncArgs( fn, argNames, "fn", "maxBFGSR" ) if( !is.null( grad ) ) { checkFuncArgs( grad, argNames, "grad", "maxBFGSR" ) } if( !is.null( hess ) ) { checkFuncArgs( hess, argNames, "hess", "maxBFGSR" ) } ## establish the active parameters. Internally, we just use 'activePar' fixed <- prepareFixed( start = start, activePar = activePar, fixed = fixed ) ## chop off the control args from ... and forward the new ... dddot <- list(...) dddot <- dddot[!(names(dddot) %in% openParam(mControl))] cl <- list(start=start, finalHessian=finalHessian, fixed=fixed, control=mControl) if(length(dddot) > 0) { cl <- c(cl, dddot) } if(is.null(constraints)) { cl <- c(quote(maxBFGSRCompute), fn=logLikAttr, fnOrig = fn, gradOrig = grad, hessOrig = hess, cl) result <- eval(as.call(cl)) } else { if(identical(names(constraints), c("ineqA", "ineqB"))) { stop("Inequality constraints not implemented for maxBFGSR") } else if(identical(names(constraints), c("eqA", "eqB"))) { # equality constraints: A %*% beta + B = 0 cl <- c(quote(sumt), fn=fn, grad=grad, hess=hess, maxRoutine=maxBFGSR, constraints=list(constraints), cl) result <- eval(as.call(cl)) } else { stop("maxBFGSR only supports the following constraints:\n", "constraints=list(ineqA, ineqB)\n", "\tfor A %*% beta + B >= 0 linear inequality constraints\n", "current constraints:", paste(names(constraints), collapse=" ")) } } result$objectiveFn <- fn return( result ) } maxLik/R/25-addControlList.R0000644000175100001440000000661214077525067015234 0ustar hornikusers ## Function overwrite parameters of an existing MaxControl object using ## parameters supplied in a single list. ## We do not make it to a method: the signature would be indistinguishable ## from add(maxControl, ...) where ... is a single list addControlList <- function(x, y, check=TRUE) { ## add list y to the control x ## ## x: a maxcontrol object ## y: a named list of additional maxControl parameters ## ## check only accept known control options. ## useful if attaching known control list ## if false, no checks performed and can add arbitrary list ## setSlot <- function(openName, slotName=openName[1], convert=function(x) x ) { ## Store potentially differently named value in slot ## ## openName vector of accepted name forms ## slotName corresponding actual slot name ## convert how to convert the value ## if(!any(openName %in% names(y))) { return(NULL) } i <- tail(which(names(y) %in% openName), 1) # pick the last occurrence: allow user to overwrite defaults slot(x, slotName) <- convert(y[[i]]) assign("x", x, envir=parent.frame()) # save modified x into parent frame } if(!inherits(x, "MaxControl")) { stop("'x' must be of class 'MaxControl'") } if(is.null(y)) { return(x) } if(!inherits(y, "list")) { stop("Control arguments to 'maxControl' must be supplied in the form of a list") } if(check) { knownNames <- union(openParam(x), slotNames(x)) if(any(uNames <- !(names(y) %in% knownNames))) { cat("Unknown control options:\n") print(names(y)[uNames]) stop("Unknown options not accepted") } } ## setSlot("tol") setSlot("reltol") setSlot("gradtol") setSlot("lambdatol") setSlot("qrtol") ## QAC setSlot(c("qac", "QAC"), "qac") setSlot(c("marquardt_lambda0", "Marquardt_lambda0")) setSlot(c("marquardt_lambdaStep", "Marquardt_lambdaStep")) setSlot(c("marquardt_maxLambda", "Marquardt_maxLambda")) ## NM setSlot(c("nm_alpha", "NM_alpha", "alpha")) setSlot(c("nm_beta", "NM_beta", "beta")) setSlot(c("nm_gamma", "NM_gamma", "gamma")) ## SANN setSlot(c("sann_cand", "SANN_cand", "cand")) setSlot(c("sann_temp", "SANN_temp", "temp")) setSlot(c("sann_tmax", "SANN_tmax", "tmax"), convert=as.integer) setSlot(c("sann_randomSeed", "SANN_randomSeed", "random.seed"), convert=as.integer) ## SGA setSlot("SGA_momentum") ## Adam setSlot("Adam_momentum1", convert=as.numeric) setSlot("Adam_momentum2", convert=as.numeric) ## SG general setSlot("SG_learningRate") setSlot("SG_batchSize", convert=as.integer) setSlot("SG_clip", convert=as.numeric) setSlot("SG_patience", convert=as.integer) setSlot("SG_patienceStep", convert=as.integer) ## setSlot("iterlim", convert=as.integer) setSlot("max.rows", convert=as.integer) setSlot("max.cols", convert=as.integer) setSlot(c("printLevel", "print.level"), convert=as.integer) setSlot("storeValues", convert=as.logical) setSlot("storeParameters", convert=as.logical) ## validObject(x) return(x) } ### Method for 'MaxControl' objects: add the second argument, list setMethod("maxControl", signature("MaxControl"), addControlList) maxLik/R/10-MaxControl_class.R0000644000175100001440000002247614077525067015562 0ustar hornikusers ### should move checkMaxControl to a separate file but how to do it? setClassUnion("functionOrNULL", c("function", "NULL")) setClassUnion("integerOrNULL", c("integer", "NULL")) setClassUnion("numericOrNULL", c("numeric", "NULL")) checkMaxControl <- function(object) { ## check validity of MaxControl objects if(!inherits(object, "MaxControl")) { stop("'MaxControl' object required. Currently '", paste(class(object), sep=", "), "'") } ## errors <- character(0) ## Check length of componenents for(s in slotNames(object)) { if(s == "sann_cand") { if(length(slot(object, s)) > 1) { errors <- c(errors, paste("'", s, "' must be either 'NULL' or ", "a function of length 1, not of length ", length(slot(object, s)), sep="")) } } else if(s %in% c("SG_batchSize", "SG_clip", "SG_patience")) { # integerOrNULL if(length(slot(object, s)) > 1) { errors <- c(errors, paste("'", s, "' must be either 'NULL' or ", "of length 1, not of length ", length(slot(object, s)), sep="")) } } else if(length(slot(object, s)) != 1) { # length 1 errors <- c(errors, paste("'", s, "' must be of length 1, not ", length(slot(object, s)), sep="")) } } ## check missings for(s in slotNames(object)) { if(is.vector(slot(object, s)) && any(is.na(slot(object, s)))) { # is.na only works for vectors errors <- c(errors, paste0("NA in '", s, "'") ) return(errors) # return errors here as otherwise NA-s will interfere the # block of if-s below } } ## if(slot(object, "steptol") < 0) { errors <- c(errors, paste("'steptol' must be non-negative, not", slot(object, "steptol"))) } if(slot(object, "lambdatol") < 0) { errors <- c(errors, paste("'lambdatol' must be non-negative, not", slot(object, "lambdatol"))) } ## qac valid values--only check if length 1 if(length(slot(object, "qac")) == 1 && !pmatch(slot(object, "qac"), c("stephalving", "marquardt"))) { errors <- c(errors, paste("'qac' must be 'stephalving' or 'marquadt', not", slot(object, "qac"))) } if(slot(object, "qrtol") < 0) { errors <- c(errors, paste("'qrtol' must be non-negative, not", slot(object, "qrtol"))) } if(slot(object, "marquardt_lambda0") < 0) { errors <- c(errors, paste("'lambda0' must be non-negative, not", slot(object, "lambda0"))) } if(slot(object, "marquardt_lambdaStep") <= 1) { errors <- c(errors, paste("'lambdaStep' must be > 1, not", slot(object, "lambdaStep"))) } if(slot(object, "marquardt_maxLambda") < 0) { errors <- c(errors, paste("'maxLambda' must be non-negative, not", slot(object, "maxLambda"))) } ## NM if(slot(object, "nm_alpha") < 0) { errors <- c(errors, paste("Nelder-Mead reflection factor 'alpha' ", "must be non-negative, not", slot(object, "nm_alpha"))) } if(slot(object, "nm_beta") < 0) { errors <- c(errors, paste("Nelder-Mead contraction factor 'beta' ", "must be non-negative, not", slot(object, "nm_beta"))) } if(slot(object, "nm_gamma") < 0) { errors <- c(errors, paste("Nelder-Mead expansion factor 'gamma' ", "must be non-negative, not", slot(object, "nm_gamma"))) } ## SANN if(!inherits(slot(object, "sann_cand"), c("function", "NULL"))) { # errors <- c(errors, paste("'SANN_cand' must be either NULL or a function, not", slot(object, "SANN_cand"))) } if(slot(object, "sann_tmax") < 1) { errors <- c(errors, paste("SANN number of calculations at each temperature ", "'tmax' ", "must be positive, not", slot(object, "sann_tmax"))) } ## SGA if(slot(object, "SGA_momentum") < 0 || slot(object, "SGA_momentum") > 1) { errors <- c(errors, paste("SGA momentum parameter must be in [0,1], not", slot(object, "SGA_momentum"))) } ## Adam if(slot(object, "Adam_momentum1") < 0 || slot(object, "Adam_momentum1") > 1) { errors <- c(errors, paste("Adam momentum1 parameter must be in [0,1], not", slot(object, "Adam_momentum1"))) } if(slot(object, "Adam_momentum2") < 0 || slot(object, "Adam_momentum2") > 1) { errors <- c(errors, paste("Adam momentum2 parameter must be in [0,1], not", slot(object, "Adam_momentum2"))) } ## SG general if(slot(object, "SG_learningRate") <= 0) { errors <- c(errors, paste("learning rate for SGA must be positive, not", slot(object, "SG_learningRate"))) } if(length(slot(object, "SG_batchSize")) > 0 && slot(object, "SG_batchSize") <= 0L) { errors <- c(errors, paste("SGA batch size must be positive, not", slot(object, "SG_batchSize"))) } if(length(slot(object, "SG_clip")) > 0 && slot(object, "SG_clip") <= 0L) { errors <- c(errors, paste("SGA gradient clip norm threshold must be positive, not", slot(object, "SG_clip"))) } if(length(slot(object, "SG_patience")) > 0 && slot(object, "SG_patience") <= 0L) { errors <- c(errors, paste("SG patience must be positive (or NULL), not", slot(object, "SG_patience"))) } if(slot(object, "SG_patienceStep") <= 0L) { errors <- c(errors, paste("SG patience step must be positive, not", slot(object, "SG_patienceStep"))) } ## general if(slot(object, "iterlim") < 0) { errors <- c(errors, paste("'iterlim' must be non-negative, not", slot(object, "iterlim"))) } if(slot(object, "max.rows") < 0) { errors <- c(errors, paste("'max.rows' must be non-negative, not", slot(object, "max.rows"))) } if(slot(object, "max.cols") < 0) { errors <- c(errors, paste("'max.cols' must be non-negative, not", slot(object, "max.cols"))) } if(length(errors) > 0) return(errors) return(TRUE) } ### MaxControls contains all control parameters for max* family setClass("MaxControl", slots=representation( tol="numeric", reltol="numeric", gradtol="numeric", steptol="numeric", # lambdatol="numeric", qrtol="numeric", ## Qadratic Approximation Control qac="character", marquardt_lambda0="numeric", marquardt_lambdaStep="numeric", marquardt_maxLambda="numeric", ## Optim Nelder-Mead: nm_alpha="numeric", nm_beta="numeric", nm_gamma="numeric", ## SANN sann_cand="functionOrNULL", sann_temp="numeric", sann_tmax="integer", sann_randomSeed="integer", ## SGA SGA_momentum = "numeric", ## Adam Adam_momentum1 = "numeric", Adam_momentum2 = "numeric", ## SG general SG_patience = "integerOrNULL", # NULL: don't care about patience SG_patienceStep = "integer", # check patience at every epoch SG_learningRate="numeric", SG_batchSize = "integerOrNULL", # NULL: full batch SG_clip="numericOrNULL", # NULL: do not clip ## iterlim="integer", max.rows="integer", max.cols="integer", printLevel="integer", storeValues="logical", storeParameters="logical" ), ## prototype=prototype( tol=1e-8, reltol=sqrt(.Machine$double.eps), gradtol=1e-6, steptol=1e-10, # lambdatol=1e-6, # qac="stephalving", qrtol=1e-10, marquardt_lambda0=1e-2, marquardt_lambdaStep=2, marquardt_maxLambda=1e12, ## Optim Nelder-Mead nm_alpha=1, nm_beta=0.5, nm_gamma=2, ## SANN sann_cand=NULL, sann_temp=10, sann_tmax=10L, sann_randomSeed=123L, ## SGA SGA_momentum = 0, ## Adam Adam_momentum1 = 0.9, Adam_momentum2 = 0.999, ## SG_learningRate=0.1, SG_batchSize=NULL, SG_clip=NULL, SG_patience = NULL, SG_patienceStep = 1L, ## iterlim=150L, max.rows=as.integer(getOption("max.rows", 20L)), max.cols=as.integer(getOption("max.cols", 7L)), printLevel=0L, storeValues=FALSE, storeParameters=FALSE), ## validity=checkMaxControl ) maxLik/R/confint.maxLik.R0000644000175100001440000000126414077525067014745 0ustar hornikusers## confint method by Lucca Scrucca confint.maxLik <- function(object, parm, level = 0.95, ...) { cf <- coef(object) if(missing(parm)) parm <- seq_along(cf) pnames <- names(cf) if(is.null(pnames)) pnames <- parm else if(is.numeric(parm)) parm <- pnames[parm] a <- (1 - level)/2 a <- c(a, 1 - a) pct <- format.perc(a, 3) q <- qnorm(a) ci <- array(NA, dim = c(length(parm), 2L), dimnames = list(parm, pct)) se <- sqrt(diag(vcov(object)))[parm] ci[] <- cf[parm] + se %o% q return(ci) } format.perc <- function(probs, digits) paste(format(100 * probs, trim = TRUE, scientific = FALSE, digits = digits), "%") maxLik/R/nIter.R0000644000175100001440000000030214077525067013132 0ustar hornikusers## Return #of iterations for maxim objects nIter <- function(x, ...) ## Number of iterations for iterative models UseMethod("nIter") nIter.default <- function(x, ...) x$iterations maxLik/R/gradient.R0000644000175100001440000000021314077525067013647 0ustar hornikusers## Return gradient of an object gradient <- function(x, ...) UseMethod("gradient") gradient.maxim <- function(x, ...) x$gradient maxLik/R/constrOptim2.R0000644000175100001440000001227614077525067014471 0ustar hornikusers# This file is a modified copy of src/library/stats/R/constrOptim.R # Part of the R package, http://www.R-project.org ### This foutine is not intended for end-user use. ### API is subject to change. constrOptim2<-function(theta, f,grad=NULL, ineqA,ineqB, mu=0.0001,control=list(), method=if(is.null(grad)) "Nelder-Mead" else "BFGS", outer.iterations=100,outer.eps=0.00001, ...){ ## Optimize with inequality constraint using SUMT/logarithmic ## barrier ## ## start initial value of parameters, included the fixed ones ## ## This function has to operate with free parameter components ## only as 'optim' cannot handle ## fixed parameters. However, for computing constraints in ## 'R' and 'dR' we have to use the complete parameter vector. ## R <- function(thetaFree, thetaFree.old, ...) { ## Wrapper for the function. As this will be feed to the ## 'optim', we have to call it with free parameters only ## (thetaFree) and internally expand it to the full (theta) ## ## Were we called with 'fixed' argument in ... ? dotdotdot <- list(...) # can this be made better? fixed <- dotdotdot[["fixed"]] theta <- addFixedPar( theta = thetaFree, start = theta0, fixed = fixed) theta.old <- addFixedPar( theta = thetaFree.old, start = theta0, fixed = fixed) ineqA.theta<-ineqA%*%theta gi<- ineqA.theta + ineqB if(any(gi < 0)) ## at least one of the constraints not fulfilled return(NaN) gi.old <- ineqA%*%theta.old + ineqB bar <- sum(gi.old*log(gi) - ineqA.theta) # logarithmic barrier value: sum over # components if(!is.finite(bar)) bar<- -Inf result <- f(thetaFree, ...)-mu*bar # do not send 'fixed' and 'start' to the # function here -- we have already # expanded theta to the full parameter result } dR<-function(thetaFree, thetaFree.old, ...){ ## Wrapper for the function. As this will be feed to the 'optim', ## we have to call it with free parameters only (thetaFree) and ## internally expand it to the full (theta) ## ## Were we called with 'fixed' argument in ... ? dotdotdot <- list(...) # can this be made better? fixed <- dotdotdot[["fixed"]] theta <- addFixedPar( theta = thetaFree, start = theta0, fixed = fixed) theta.old <- addFixedPar( theta = thetaFree.old, start = theta0, fixed = fixed) ineqA.theta<-ineqA%*%theta gi<-drop(ineqA.theta + ineqB) gi.old<-drop(ineqA%*%theta.old + ineqB) dbar<-colSums( ineqA*gi.old/gi-ineqA) if(!is.null(fixed)) gr <- grad(thetaFree,...)- (mu*dbar)[!fixed] # grad only gives gradient for the free parameters in order to maintain # compatibility with 'optim'. Hence we compute barrier gradient # for the free parameters only as well. else gr <- grad(thetaFree,...)- (mu*dbar) return(gr) } if (!is.null(control$fnscale) && control$fnscale<0) mu <- -mu ##maximizing if(any(ineqA%*%theta + ineqB < 0)) stop("initial value not the feasible region") theta0 <- theta # inital value, for keeping the fixed params ## Were we called with 'fixed' argument in ... ? fixed <- list(...)[["fixed"]] if(!is.null(fixed)) thetaFree <- theta[!fixed] else thetaFree <- theta ## obj<-f(thetaFree, ...) r<-R(thetaFree,thetaFree,...) for(i in 1L:outer.iterations){ obj.old<-obj r.old<-r thetaFree.old<-thetaFree fun<-function(thetaFree,...){ R(thetaFree,thetaFree.old,...)} if( method == "SANN" ) { if( is.null( grad ) ) { gradient <- NULL } else { gradient <- grad } } else { gradient <- function(thetaFree, ...) { dR(thetaFree, thetaFree.old, ...) } } ## As 'optim' does not directly support fixed parameters, a<-optim(par=thetaFree.old,fn=fun,gr=gradient,control=control,method=method,...) r<-a$value if (is.finite(r) && is.finite(r.old) && abs(r-r.old)/(outer.eps+abs(r-r.old))obj.old) break } if (i==outer.iterations){ a$convergence<-7 a$message<-"Barrier algorithm ran out of iterations and did not converge" } if (mu>0 && obj>obj.old){ a$convergence<-11 a$message<-paste("Objective function increased at outer iteration",i) } if (mu<0 && obj (eigentol*max(hessev))) { ## If hessian is not singular, fill in the free parameter values varcovar[activePar,activePar] <- solve(-hessian(object)[activePar,activePar]) # guarantee that the returned variance covariance matrix is symmetric varcovar <- ( varcovar + t( varcovar ) ) / 2 } else { ## If singular, the free parameter values will be Inf varcovar[activePar,activePar] <- Inf } return(varcovar) } else return(NULL) } maxLik/R/maxAdam.R0000644000175100001440000001063614077525067013434 0ustar hornikusers maxAdam <- function(fn=NULL, grad=NULL, hess=NULL, start, nObs, constraints=NULL, finalHessian=FALSE, fixed=NULL, control=NULL, ...) { ## Adam stochastic gradient ascent ## Parameters: ## fn - the function to be minimized. Returns either scalar or ## vector value with possible attributes ## constPar and newVal ## grad - gradient function (numeric used if missing). Must return either ## * vector, length=nParam ## * matrix, dim=c(nObs, 1). Treated as vector ## * matrix, dim=c(M, nParam), where M is arbitrary. In this case the ## rows are simply summed (useful for maxBHHH). ## hess - hessian function (used only for finalHessian, otherwise ignored) ## start - initial parameter vector (eventually w/names) ## ... - extra arguments for fn() ## finalHessian include final Hessian? As computing final hessian does not carry any extra penalty for NR method, this option is ## mostly for compatibility reasons with other maxXXX functions. ## TRUE/something else include ## FALSE do not include ## fixed index vector, which parameters to keep fixed ## ## RESULTS: ## an object of class "maxim": ## ------------------------------ ## Add parameters from ... to control if(!inherits(control, "MaxControl")) { mControl <- addControlList(maxControl(gradtol=0, SG_learningRate=0.001), control) } else { mControl <- control } mControl <- addControlList(mControl, list(...), check=FALSE) ## argNames <- c(c("fn", "grad", "hess", "start", "fixed", "control"), openParam(mControl)) # Here we allow to submit all parameters outside of the # 'control' list. May eventually include only a # subset here ## ensure that 'fn', 'grad', and 'hess' do not take any arguments that maxSGA eats up if(!is.null(fn)) { checkFuncArgs( fn, argNames, "fn", "maxAdam" ) } if( !is.null( grad ) ) { checkFuncArgs( grad, argNames, "grad", "maxAdam" ) } if( !is.null( hess ) ) { checkFuncArgs( hess, argNames, "hess", "maxAdam" ) } ## ensure that at least 'fn' or 'grad' are supplied if(is.null(fn) & is.null(grad)) { stop("maxAdam requires at least 'fn' or 'grad' to be supplied") } if(length(start) < 1) { stop("'start' must be of positive length!") } ## establish the active parameters. Internally, we just use 'activePar' fixed <- prepareFixed( start = start, activePar = NULL, fixed = fixed ) ## chop off the control args from ... and forward the new ... dddot <- list(...) dddot <- dddot[!(names(dddot) %in% openParam(mControl))] cl <- list(start=start, finalHessian=finalHessian, fixed=fixed, control=mControl, optimizer="Adam") if(length(dddot) > 0) { cl <- c(cl, dddot) } ## if(is.null(constraints)) { ## call maxSGACompute with the modified ... list cl <- c(quote(maxSGACompute), fn=logLikFunc, grad=logLikGrad, hess=logLikHess, fnOrig = fn, gradOrig = grad, hessOrig = hess, # these are forwarded to the logLikAttr nObs=nObs, cl) result <- eval(as.call(cl)) } else { if(identical(names(constraints), c("ineqA", "ineqB"))) { stop("Inequality constraints not implemented for maxSGA") } else if(identical(names(constraints), c("eqA", "eqB"))) { # equality constraints: A %*% beta + B = 0 cl <- c(quote(sumt), fn=fn, grad=grad, hess=hess, maxRoutine=maxSGA, constraints=list(constraints), cl) result <- eval(as.call(cl)) } else { stop("maxNR only supports the following constraints:\n", "constraints=list(ineqA, ineqB)\n", "\tfor A %*% beta + B >= 0 linear inequality constraints\n", "current constraints:", paste(names(constraints), collapse=" ")) } } ## Save the objective function result$objectiveFn <- fn ## return( result ) } maxLik/R/bread.maxLik.R0000644000175100001440000000011314077525067014352 0ustar hornikusersbread.maxLik <- function( x, ... ) { return( vcov( x ) * nObs( x ) ) } maxLik/R/numericHessian.R0000644000175100001440000000543714077525067015044 0ustar hornikusersnumericHessian <- function(f, grad=NULL, t0, eps=1e-6, fixed, ...) { a <- f(t0, ...) if(is.null(grad)) { numericNHessian( f = f, t0 = t0, eps = eps, fixed=fixed, ...) # gradient not provided -> everything numerically } else { numericGradient( f = grad, t0 = t0, eps = eps, fixed=fixed, ...) # gradient is provided -> Hessian is grad grad } } numericNHessian <- function( f, t0, eps=1e-6, fixed, ...) { ## Numeric Hessian without gradient ## Assume f() returns a scalar ## ## fixed calculate the Hessian only for the non-fixed parameters warnMessage <- function(theta, value) { ## issue a warning if the function value at theta is not a scalar max.print <- 10 if(length(value) != 1) { warnMsg <- "Function value at\n" warnMsg <- c(warnMsg, paste(format(theta[seq(length=min(max.print,length(theta)))]), collapse=" "), "\n") if(max.print < length(theta)) warnMsg <- c(warnMsg, "...\n") warnMsg <- c(warnMsg, " =\n") warnMsg <- c(warnMsg, paste(format(value[seq(length=min(max.print,length(value)))]), collapse=" "), "\n") if(max.print < length(value)) warnMsg <- c(warnMsg, "...\n") warnMsg <- c(warnMsg, "but numeric Hessian only works on numeric scalars\n", "Component set to NA") return(warnMsg) } if(!is.numeric(value)) stop("The function value must be numeric") return(NULL) } f00 <- f( t0, ...) if(!is.null(msg <- warnMessage(t0, f00))) { warning(msg) f00 <- NA } eps2 <- eps*eps N <- length( t0) H <- matrix(NA, N, N) if(missing(fixed)) fixed <- rep(FALSE, length(t0)) for( i in 1:N) { if(fixed[i]) next for( j in 1:N) { if(fixed[j]) next t01 <- t0 t10 <- t0 t11 <- t0 # initial point t01[i] <- t01[i] + eps t10[j] <- t10[j] + eps t11[i] <- t11[i] + eps t11[j] <- t11[j] + eps f01 <- f( t01, ...) if(!is.null(msg <- warnMessage(t01, f01))) { warning(msg) f01 <- NA } f10 <- f( t10, ...) if(!is.null(msg <- warnMessage(t10, f10))) { warning(msg) f10 <- NA } f11 <- f( t11, ...) if(!is.null(msg <- warnMessage(t11, f11))) { warning(msg) f11 <- NA } H[i,j] <- ( f11 - f01 - f10 + f00)/eps2 } } return( H ) } maxLik/R/stdEr.maxLik.R0000644000175100001440000000077414077525067014373 0ustar hornikusers stdEr.maxLik <- function(x, eigentol=1e-12, ...) { ## if(!inherits(x, "maxLik")) ## stop("'stdEr.maxLik' called on a non-'maxLik' object") ## Here we should actually coerce the object to a 'maxLik' object, dropping all the subclasses... ## Instead, we force the program to use maxLik-related methods if(!is.null(vc <- vcov(x, eigentol=eigentol))) { s <- sqrt(diag(vc)) names(s) <- names(coef(x)) return(s) } # if vcov is not working, return NULL return(NULL) } maxLik/R/summary.maxLik.R0000644000175100001440000000611514077525067015002 0ustar hornikusersprint.summary.maxLik <- function( x, digits = max( 3L, getOption("digits") - 3L ), ... ) { cat("--------------------------------------------\n") cat("Maximum Likelihood estimation\n") cat(maximType(x), ", ", nIter(x), " iterations\n", sep="") cat("Return code ", returnCode(x), ": ", returnMessage(x), "\n", sep="") if(!is.null(x$estimate)) { cat("Log-Likelihood:", x$loglik, "\n") cat(x$NActivePar, " free parameters\n") cat("Estimates:\n") printCoefmat( x$estimate, digits = digits ) } if(!is.null(x$constraints)) { cat("\nWarning: constrained likelihood estimation.", "Inference is probably wrong\n") cat("Constrained optimization based on", x$constraints$type, "\n") if(!is.null(x$constraints$code)) cat("Return code:", x$constraints$code, "\n") # note: this is missing for 'constrOptim' if(!is.null(x$constraints$message)) cat(x$constraints$message, "\n") # note: this is missing for 'constrOptim' cat(x$constraints$outer.iterations, " outer iterations, barrier value", x$constraints$barrier.value, "\n") } cat("--------------------------------------------\n") } summary.maxLik <- function(object, eigentol=1e-12,... ) { ## object object of class "maxLik" ## ## RESULTS: ## list of class "summary.maxLik" with following components: ## maximum : function value at optimum ## estimate : estimated parameter values at optimum ## gradient : gradient at optimum ## code : code of convergence ## message : message, description of the code ## iterations : number of iterations ## type : type of optimisation ## if(!inherits(object, "maxLik")) stop("'summary.maxLik' called on a non-'maxLik' object") ## Here we should actually coerce the object to a 'maxLik' object, dropping all the subclasses... ## Instead, we force the program to use maxLik-related methods result <- object$maxim nParam <- length(coef.maxLik(object)) activePar <- activePar( object ) if((object$code < 100) & !is.null(coef.maxLik(object))) { # in case of infinity at initial values, the coefs are not provided t <- coef( object ) / stdEr( object, eigentol = eigentol ) p <- 2*pnorm( -abs( t)) t[!activePar(object)] <- NA p[!activePar(object)] <- NA results <- cbind("Estimate" = coef( object ), "Std. error" = stdEr( object, eigentol = eigentol ), "t value" = t, "Pr(> t)" = p ) } else { results <- NULL } summary <- list(maximType=object$type, iterations=object$iterations, returnCode=object$code, returnMessage=object$message, loglik=object$maximum, estimate=results, fixed=!activePar, NActivePar=sum(activePar), constraints=object$constraints) class(summary) <- "summary.maxLik" summary } maxLik/R/compareDerivatives.R0000644000175100001440000000651614077525067015722 0ustar hornikuserscompareDerivatives <- function(f, grad, hess=NULL, t0, eps=1e-6, printLevel=1, print=printLevel > 0, max.rows=getOption("max.rows", 20), max.cols=getOption("max.cols", 7), ...) { ### t0 - initial parameter vector ## ## 1. Initial function and grad eval ## if(print) cat("-------- compare derivatives -------- \n") f0 <- f(t0, ...) attributes(f0) <- NULL # keep only array data when printing if(is.function(grad)) analytic <- grad(t0, ...) else if(is.numeric(grad)) analytic = grad else stop("Argument 'grad' must be either gradient function or ", "pre-computed numeric gradient matrix") out <- list(t0=t0, f.t0=f0, compareGrad = list(analytic=analytic)) # if(is.null(dim(analytic))) { if(print) cat("Note: analytic gradient is vector. ", "Transforming into a matrix form\n") if(length(f0) > 1) analytic <- matrix(analytic, length(analytic), 1) # Note: we assume t0 is a simple vector -> hence gradient # will be a column vector else analytic <- matrix(analytic, 1, length(analytic)) # f returns a scalar -> we have row vector along t0 } if(print) { cat("Function value:\n") print(f0) } if(print) cat("Dim of analytic gradient:", dim(analytic), "\n") numeric <- numericGradient(f, t0, eps, ...) out$compareGrad$numeric = numeric if(print) cat(" numeric :", dim(numeric), "\n") rDiff <- ((analytic - numeric) / (0.5*(abs(analytic) + abs(numeric))) ) rDiff[(analytic==0) & (numeric==0)] <- 0 rDiff. <- max(abs(rDiff), na.rm=TRUE) out$compareGrad$rel.diff <- rDiff out$maxRelDiffGrad <- rDiff. # if(print){ if(ncol(analytic) < 2) { a <- cbind(t0, analytic, numeric, rDiff) dimnames(a) <- list(param=names(f0), c("theta 0", "analytic", "numeric", "rel.diff")) printRowColLimits(a, max.rows, max.cols) } else { cat("t0\n") printRowColLimits(t0, max.rows, max.cols) cat("analytic gradient\n") printRowColLimits(analytic, max.rows, max.cols) cat("numeric gradient\n") printRowColLimits(numeric, max.rows, max.cols) cat(paste("(anal-num)/(0.5*(abs(anal)+abs(num)))\n")) printRowColLimits(rDiff, max.rows, max.cols) a=list(t0=t0, analytic=analytic, numeric=numeric, rel.diff=rDiff) } cat("Max relative difference:", rDiff., "\n") } # out <- list(t0=t0, f.t0=f0, compareGrad=a, maxRelDiffGrad=rDiff.) ## ## Hessian? ## if(!is.null(hess)) { if(print) cat("Comparing hessians: relative dfference\n") anHess <- hess(t0, ...) numHess <- numericGradient(grad, t0, eps, ...) rDifHess <- (anHess-numHess) / (0.5*(abs(anHess)+abs(numHess))) rDifHess[(anHess==0) & (numHess==0)] <- 0 rDifHess. <- max(abs(rDifHess), na.rm=TRUE) if(print) printRowColLimits(rDifHess., max.rows, max.cols) out$compareHessian <- list(analytic = anHess, numeric = numHess, rel.diff = rDifHess) out$maxRelDiffHess = rDifHess. } if(print) cat("-------- END of compare derivatives -------- \n") invisible(out) } maxLik/R/activePar.R0000644000175100001440000000061514077525067013776 0ustar hornikusers## activePar: returns parameters which are free under maximisation (not fixed as constants) activePar <- function(x, ...) UseMethod("activePar") activePar.default <- function(x, ...) { if( !is.null( x$fixed ) ) { result <- !x$fixed } else { result <- x$activePar } if( is.null( result ) ) { result <- rep( TRUE, length( coef( x ) ) ) } return( result ) } maxLik/R/AIC.R0000644000175100001440000000021214077525067012445 0ustar hornikusers## Akaike (and other) information criteria AIC.maxLik <- function(object, ..., k = 2) -2*logLik(object) + k*nParam(object, free=TRUE) maxLik/R/checkBhhhGrad.R0000644000175100001440000000645414077525067014534 0ustar hornikuserscheckBhhhGrad <- function( g, theta, analytic, fixed=NULL) { ## This function controls if the user-supplied analytic or ## numeric gradient of the right dimension. ## If not, signals an error. ## ## analytic: logical, do we have a user-supplied analytic ## gradient? if(is.null(fixed)) { activePar <- rep(T, length=length(theta)) } else { activePar <- !fixed } if( analytic ) { ## Gradient supplied by the user. ## Check whether the gradient has enough rows (about enough ## observations in data) if( !is.matrix( g ) ) { stop("gradient is not a matrix but of class '", class( g ), "';\n", "the BHHH method requires that the gradient function\n", "(argument 'grad') returns a numeric matrix,\n", "where each row must correspond to the gradient(s)\n", "of the log-likelihood function at an individual\n", "(independent) observation and each column must\n", "correspond to a parameter" ) } else if( nrow( g ) < length( theta[activePar] ) ) { stop( "the matrix returned by the gradient function", " (argument 'grad') must have at least as many", " rows as the number of parameters (", length( theta ), "),", " where each row must correspond to the gradients", " of the log-likelihood function of an individual", " (independent) observation:\n", " currently, there are (is) ", length( theta ), " parameter(s)", " but the gradient matrix has only ", nrow( g ), " row(s)" ) } else if( ncol( g ) != length( theta ) ) { stop( "the matrix returned by the gradient function", " (argument 'grad') must have exactly as many columns", " as the number of parameters:\n", " currently, there are (is) ", length( theta ), " parameter(s)", " but the gradient matrix has ", ncol( g ), " columns" ) } } else { ## numeric gradient ## Check whether the gradient has enough rows. This is the case ## if and only if loglik has enough rows, hence the error message ## about loglik. if( !is.matrix( g ) || nrow( g ) == 1 ) { stop( "if the gradients (argument 'grad') are not provided by the user,", " the BHHH method requires that the log-likelihood function", " (argument 'fn') returns a numeric vector,", " where each element must be the log-likelihood value corresponding", " to an individual (independent) observation" ) } if( nrow( g ) < length( theta ) ) { stop( "the vector returned by the log-likelihood function", " (argument 'fn') must have at least as many elements", " as the number of parameters,", " where each element must be the log-likelihood value corresponding", " to an individual (independent) observation:\n", " currently, there are (is) ", length( theta ), " parameter(s)", " but the log likelihood function return only ", nrow( g ), " element(s)" ) } } return( NULL ) } maxLik/R/hessian.R0000644000175100001440000000021014077525067013501 0ustar hornikusers## Return Hessian of an object hessian <- function(x, ...) UseMethod("hessian") hessian.default <- function(x, ...) x$hessian maxLik/R/maxBHHH.R0000644000175100001440000000155214077525067013300 0ustar hornikusersmaxBHHH <- function(fn, grad=NULL, hess=NULL, start, finalHessian="BHHH", ...) { ## hess: Hessian, not used, for compatibility with the other methods ## check if arguments of user-provided functions have reserved names argNames <- c( "fn", "grad", "hess", "start", "print.level", "iterlim" ) checkFuncArgs( fn, argNames, "fn", "maxBHHH" ) if( !is.null( grad ) ) { checkFuncArgs( grad, argNames, "grad", "maxBHHH" ) } if( !is.null( hess ) ) { checkFuncArgs( hess, argNames, "hess", "maxBHHH" ) } ## using the Newton-Raphson algorithm with BHHH method for Hessian a <- maxNR( fn=fn, grad = grad, hess = hess, start=start, finalHessian = finalHessian, bhhhHessian = TRUE, ...) a$type = "BHHH maximisation" invisible(a) } maxLik/R/returnMessage.R0000644000175100001440000000036014077525067014701 0ustar hornikusers returnMessage <- function(x, ...) UseMethod("returnMessage") returnMessage.default <- function(x, ...) x$returnMessage returnMessage.maxim <- function(x, ...) x$message returnMessage.maxLik <- function(x, ...) x$message maxLik/R/openParam.R0000644000175100001440000000130414077525067013776 0ustar hornikusersopenParam <- function(object) { ## Return character list of 'open parameters', parameters that can ## be supplied to max* outside of 'control' list ## if(!inherits(object, "MaxControl")) { stop("'MaxControl' object required. Currently ", class(object)) } c("tol", "reltol", "gradtol", "steptol", # "lambdatol", ## Qadratic Approximation Control "qac", "qrtol", "lambda0", "lambdaStep", "maxLambda", ## optim Nelder-Mead "alpha", "beta", "gamma", ## SANN (open versions) "cand", "temp", "tmax", "random.seed", ## SGA ## - none ## "iterlim", "printLevel", "print.level") } maxLik/R/returnCode.R0000644000175100001440000000054714077525067014176 0ustar hornikusers### Returns return code of maxim objects ### This is tells either error, or other cause the iterations ended, ### such as the result converged returnCode <- function(x, ...) UseMethod("returnCode") returnCode.default <- function(x, ...) x$returnCode returnCode.maxim <- function(x, ...) x$code returnCode.maxLik <- function(x, ...) x$code maxLik/R/callWithoutSumt.R0000644000175100001440000000032414077525067015225 0ustar hornikusers## strip possible SUMT parameters and call the function thereafter callWithoutSumt <- function(theta, fName, ...) { return( callWithoutArgs( theta, fName = fName, args = names(formals(sumt)), ... ) ) } maxLik/R/maxSGA.R0000644000175100001440000001174514077525067013206 0ustar hornikusers maxSGA <- function(fn=NULL, grad=NULL, hess=NULL, start, nObs, constraints=NULL, finalHessian=FALSE, fixed=NULL, control=NULL, ...) { ## Newton-Raphson maximisation ## Parameters: ## fn - the function to be maximized. Returns either scalar or ## vector value with possible attributes ## constPar and newVal ## grad - gradient function (numeric used if missing). Must return either ## * vector, length=nParam ## * matrix, dim=c(nObs, 1). Treated as vector ## * matrix, dim=c(M, nParam), where M is arbitrary. In this case the ## rows are simply summed (useful for maxBHHH). ## hess - hessian function (used only for finalHessian, otherwise ignored) ## start - initial parameter vector (eventually w/names) ## ... - extra arguments for fn() ## finalHessian include final Hessian? As computing final hessian does not carry any extra penalty for NR method, this option is ## mostly for compatibility reasons with other maxXXX functions. ## TRUE/something else include ## FALSE do not include ## fixed index vector, which parameters to keep fixed ## ## RESULTS: ## a list of class "maxim": ## maximum function value at maximum ## estimate the parameter value at maximum ## gradient gradient ## hessian Hessian ## code integer code of success: ## 1 - gradient close to zero ## 2 - successive values within tolerance limit ## 3 - could not find a higher point (step error) ## 4 - iteration limit exceeded ## 100 - initial value out of range ## message character message describing the code ## iterations number of iterations ## type "Newton-Raphson maximisation" ## ## ------------------------------ ## Add parameters from ... to control if(!inherits(control, "MaxControl")) { mControl <- addControlList(maxControl(gradtol=0), control) } else { mControl <- control } mControl <- addControlList(mControl, list(...), check=FALSE) ## argNames <- c(c("fn", "grad", "hess", "start", "fixed", "control"), openParam(mControl)) # Here we allow to submit all parameters outside of the # 'control' list. May eventually include only a # subset here ## ensure that 'fn', 'grad', and 'hess' do not take any arguments that maxSGA eats up if(!is.null(fn)) { checkFuncArgs( fn, argNames, "fn", "maxSGA" ) } if( !is.null( grad ) ) { checkFuncArgs( grad, argNames, "grad", "maxSGA" ) } if( !is.null( hess ) ) { checkFuncArgs( hess, argNames, "hess", "maxSGA" ) } ## ensure that at least 'fn' or 'grad' are supplied if(is.null(fn) & is.null(grad)) { stop("maxSGA/maxAdam requires at least 'fn' or 'grad' to be supplied") } if(length(start) < 1) { stop("'start' must be of positive length!") } ## establish the active parameters. Internally, we just use 'activePar' fixed <- prepareFixed( start = start, activePar = NULL, fixed = fixed ) ## chop off the control args from ... and forward the new ... dddot <- list(...) dddot <- dddot[!(names(dddot) %in% openParam(mControl))] cl <- list(start=start, finalHessian=finalHessian, fixed=fixed, control=mControl, optimizer="SGA") if(length(dddot) > 0) { cl <- c(cl, dddot) } ## if(is.null(constraints)) { ## call maxSGACompute with the modified ... list cl <- c(quote(maxSGACompute), fn=logLikFunc, grad=logLikGrad, hess=logLikHess, fnOrig = fn, gradOrig = grad, hessOrig = hess, # these are forwarded to the logLikAttr nObs=nObs, cl) result <- eval(as.call(cl)) } else { if(identical(names(constraints), c("ineqA", "ineqB"))) { stop("Inequality constraints not implemented for maxSGA") } else if(identical(names(constraints), c("eqA", "eqB"))) { # equality constraints: A %*% beta + B = 0 cl <- c(quote(sumt), fn=fn, grad=grad, hess=hess, maxRoutine=maxSGA, constraints=list(constraints), cl) result <- eval(as.call(cl)) } else { stop("maxNR only supports the following constraints:\n", "constraints=list(ineqA, ineqB)\n", "\tfor A %*% beta + B >= 0 linear inequality constraints\n", "current constraints:", paste(names(constraints), collapse=" ")) } } ## Save the objective function result$objectiveFn <- fn ## return( result ) } maxLik/R/maximType.R0000644000175100001440000000022114077525067014026 0ustar hornikusersmaximType <- function(x) UseMethod("maximType") maximType.default <- function(x) x$maximType maximType.maxim <- function(x) x$type maxLik/R/logLikHess.R0000644000175100001440000000360214077525067014123 0ustar hornikusers## Calculate the Hessian of the function, either by analytic or numeric method logLikHess <- function( theta, fnOrig, gradOrig=NULL, hessOrig=NULL, start = NULL, fixed = NULL, gradAttr = NULL, hessAttr = NULL, ... ) { # argument "gradAttr" should be # - FALSE if the gradient is not provided as attribute of the log-lik value # - TRUE if the gradient is provided as attribute of the log-lik value # - NULL if this is not known # argument "hessAttr" should be # - FALSE if the Hessian is not provided as attribute of the log-lik value # - TRUE if the Hessian is provided as attribute of the log-lik value # - NULL if this is not known theta <- addFixedPar( theta = theta, start = start, fixed = fixed, ...) if(!is.null(hessOrig)) { hessian <- as.matrix(hessOrig( theta, ... )) } else { if( is.null( hessAttr ) || hessAttr || is.null( gradAttr ) ) { llVal <- fnOrig( theta, ... ) gradient <- attr( llVal, "gradient" ) hessian <- attr( llVal, "hessian" ) gradAttr <- !is.null( gradient ) hessAttr <- !is.null( hessian ) } if( !hessAttr ) { if( !is.null( gradOrig ) ) { grad2 <- logLikGrad } else if( gradAttr ) { grad2 <- function( theta, fnOrig = NULL, gradOrig = NULL, ... ) { gradient <- attr( fnOrig( theta, ... ), "gradient" ) gradient <- sumGradients( gradient, length( theta ) ) return( gradient ) } } else { grad2 <- NULL } hessian <- numericHessian( f = logLikFunc, grad = grad2, t0 = theta, fnOrig = fnOrig, gradOrig = gradOrig, ... ) } } rownames( hessian ) <- colnames( hessian ) <- names( theta ) if( !is.null( fixed ) ) { hessian <- hessian[ !fixed, !fixed, drop = FALSE ] } return( hessian ) } maxLik/R/objectiveFn.R0000644000175100001440000000025714077525067014320 0ustar hornikusers## Return the objective function, used for optimization objectiveFn <- function(x, ...) UseMethod("objectiveFn") objectiveFn.maxim <- function(x, ...) x$objectiveFn maxLik/R/storedParameters.R0000644000175100001440000000036414077525067015405 0ustar hornikusers## Return the stored parameters in a 'maxim' object storedParameters <- function(x, ...) ## stored parameter values at each epoch/iteration UseMethod("storedParameters") storedParameters.maxim <- function(x, ...) x$parameterStore maxLik/R/maxBFGSRCompute.R0000644000175100001440000003452014077525067014770 0ustar hornikusersmaxBFGSRCompute <- function(fn, start, finalHessian=TRUE, fixed=NULL, control=maxControl(), ...) { ## This function is originally developed by Yves Croissant (and placed in 'mlogit' package). ## Fitted for 'maxLik' by Ott Toomet, and revised by Arne Henningsen ## ## BFGS maximisation, implemented by Yves Croissant ## Parameters: ## fn - the function to be minimized. Returns either scalar or ## vector value with possible attributes ## constPar and newVal ## fn must return the value with attribute 'gradient' ## (and also attribute 'hessian' if it should be returned) ## fn must have an argument sumObs ## start - initial parameter vector (eventually w/names) ## finalHessian include final Hessian? As computing final hessian does not carry any extra penalty for NR method, this option is ## mostly for compatibility reasons with other maxXXX functions. ## TRUE/something else include ## FALSE do not include ## fixed - a logical vector -- which parameters are taken as fixed. ## control MaxControl object: ## steptol - minimum step size ## lambdatol - max lowest eigenvalue when forcing pos. definite H ## qrtol - tolerance for qr decomposition ## qac How to handle the case where new function value is ## smaller than the original one: ## "stephalving" smaller step in the same direction ## "marquardt" Marquardt (1963) approach ## The stopping criteria ## tol - maximum allowed absolute difference between sequential values ## reltol - maximum allowed reltive difference (stops if < reltol*(abs(fn) + reltol) ## gradtol - maximum allowed norm of gradient vector ## ## iterlim - maximum # of iterations ## ## Other paramters are treated as variable (free). ## ## RESULTS: ## a list of class "maxim": ## maximum function value at maximum ## estimate the parameter value at maximum ## gradient gradient ## hessian Hessian ## code integer code of success: ## 1 - gradient close to zero ## 2 - successive values within tolerance limit ## 3 - could not find a higher point (step error) ## 4 - iteration limit exceeded ## 100 - initial value out of range ## message character message describing the code ## last.step only present if code == 3 (step error). A list with following components: ## theta0 - parameter value which led to the error ## f0 - function value at these parameter values ## climb - the difference between theta0 and the new approximated parameter value (theta1) ## fixed - logical vector, which parameters are constant (fixed, inactive, non-free) ## fixed logical vector, which parameters were treated as constant (fixed, inactive, non-free) ## iterations number of iterations ## type "BFGSR maximisation" ## ## max.eigen <- function( M) { ## return maximal eigenvalue of (symmetric) matrix val <- eigen(M, symmetric=TRUE, only.values=TRUE)$values val[1] ## L - eigenvalues in decreasing order, [1] - biggest in abs value } ## maxim.type <- "BFGSR maximization" param <- start nimed <- names(start) nParam <- length(param) ## chi2 <- 1E+10 iter <- 0L # eval a first time the function, the gradient and the hessian x <- sumKeepAttr( fn( param, fixed = fixed, sumObs = FALSE, returnHessian = FALSE, ... ) ) # sum of log-likelihood value but not sum of gradients if (slot(control, "printLevel") > 0) cat( "Initial value of the function :", x, "\n" ) if(is.na(x)) { result <- list(code=100, message=maximMessage("100"), iterations=0, type=maxim.type) class(result) <- "maxim" return(result) } if(is.infinite(x) & (x > 0)) { # we stop at +Inf but not at -Inf result <- list(code=5, message=maximMessage("5"), iterations=0, type=maxim.type) class(result) <- "maxim" return(result) } if( isTRUE( attr( x, "gradBoth" ) ) ) { warning( "the gradient is provided both as attribute 'gradient' and", " as argument 'grad': ignoring argument 'grad'" ) } if( isTRUE( attr( x, "hessBoth" ) ) ) { warning( "the Hessian is provided both as attribute 'hessian' and", " as argument 'hess': ignoring argument 'hess'" ) } ## ## gradient by individual observations, used for BHHH approximation of initial Hessian. ## If not supplied by observations, we use the summed gradient. gri <- attr( x, "gradient" ) gr <- sumGradients( gri, nParam = length( param ) ) if(slot(control, "printLevel") > 2) { cat("Initial gradient value:\n") print(gr) } if(any(is.na(gr[!fixed]))) { stop("NA in the initial gradient") } if(any(is.infinite(gr[!fixed]))) { stop("Infinite initial gradient") } if(length(gr) != nParam) { stop( "length of gradient (", length(gr), ") not equal to the no. of parameters (", nParam, ")" ) } ## initial approximation for inverse Hessian. We only work with the non-fixed part if(observationGradient(gri, length(param))) { invHess <- -solve(crossprod(gri[,!fixed])) # initial approximation of inverse Hessian (as in BHHH), if possible if(slot(control, "printLevel") > 3) { cat("Initial inverse Hessian by gradient crossproduct\n") if(slot(control, "printLevel") > 4) { print(invHess) } } } else { invHess <- -1e-5*diag(1, nrow=length(gr[!fixed])) # ... if not possible (Is this OK?). Note we make this negative definite. if(slot(control, "printLevel") > 3) { cat("Initial inverse Hessian is diagonal\n") if(slot(control, "printLevel") > 4) { print(invHess) } } } if( slot(control, "printLevel") > 1) { cat("-------- Initial parameters: -------\n") cat( "fcn value:", as.vector(x), "\n") a <- cbind(start, gr, as.integer(!fixed)) dimnames(a) <- list(nimed, c("parameter", "initial gradient", "free")) print(a) cat("------------------------------------\n") } samm <- NULL # this will be returned in case of step getting too small I <- diag(nParam - sum(fixed)) direction <- rep(0, nParam) ## ----------- Main loop --------------- repeat { iter <- iter + 1L if( iter > slot(control, "iterlim")) { code <- 4; break } if(any(is.na(invHess))) { cat("Error in the approximated (free) inverse Hessian:\n") print(invHess) stop("NA in Hessian") } if(slot(control, "printLevel") > 0) { cat("Iteration ", iter, "\n") if(slot(control, "printLevel") > 3) { cat("Eigenvalues of approximated inverse Hessian:\n") print(eigen(invHess, only.values=TRUE)$values) if(slot(control, "printLevel") > 4) { cat("inverse Hessian:\n") print(invHess) } } } ## Next, ensure that the approximated inverse Hessian is negative definite for computing ## the new climbing direction. However, retain the original, potentially not negative definite ## for computing the following approximation. ## This procedure seems to work, but unfortunately I have little idea what I am doing :-( approxHess <- invHess # approxHess is used for computing climbing direction, invHess for next approximation while((me <- max.eigen( approxHess)) >= -slot(control, "lambdatol") | (qRank <- qr(approxHess, tol=slot(control, "qrtol"))$rank) < sum(!fixed)) { # maximum eigenvalue -> negative definite # qr()$rank -> singularity lambda <- abs(me) + slot(control, "lambdatol") + min(abs(diag(approxHess)))/1e7 # The third term corrects numeric singularity. If diag(H) only contains # large values, (H - (a small number)*I) == H because of finite precision approxHess <- approxHess - lambda*I if(slot(control, "printLevel") > 4) { cat("Not negative definite. Subtracting", lambda, "* I\n") cat("Eigenvalues of new approximation:\n") print(eigen(approxHess, only.values=TRUE)$values) if(slot(control, "printLevel") > 5) { cat("new Hessian approximation:\n") print(approxHess) } } # how to make it better? } ## next, take a step of suitable length to the suggested direction step <- 1 direction[!fixed] <- as.vector(approxHess %*% gr[!fixed]) oldx <- x oldgr <- gr oldparam <- param param[!fixed] <- oldparam[!fixed] - step * direction[!fixed] x <- sumKeepAttr( fn( param, fixed = fixed, sumObs = FALSE, returnHessian = FALSE, ... ) ) # sum of log-likelihood value but not sum of gradients ## did we end up with a larger value? while((is.na(x) | x < oldx) & step > slot(control, "steptol")) { step <- step/2 if(slot(control, "printLevel") > 2) { cat("Function decreased. Function values: old ", oldx, ", new ", x, ", difference ", x - oldx, "\n") if(slot(control, "printLevel") > 3) { resdet <- cbind(param = param, gradient = gr, direction=direction, active=!fixed) cat("Attempted parameters:\n") print(resdet) } cat(" -> step ", step, "\n", sep="") } param[!fixed] <- oldparam[!fixed] - step * direction[!fixed] x <- sumKeepAttr( fn( param, fixed = fixed, sumObs = FALSE, returnHessian = FALSE, ... ) ) # sum of log-likelihood value but not sum of gradients } if(step < slot(control, "steptol")) { # we did not find a better place to go... samm <- list(theta0=oldparam, f0=oldx, climb=direction) } gri <- attr( x, "gradient" ) # observation-wise gradient. We only need it in order to compute the BHHH Hessian, if asked so. gr <- sumGradients( gri, nParam = length( param ) ) incr <- step * direction y <- gr - oldgr if(all(y == 0)) { # gradient did not change -> cannot proceed code <- 9; break } ## Compute new approximation for the inverse hessian update <- outer( incr[!fixed], incr[!fixed]) * (sum(y[!fixed] * incr[!fixed]) + as.vector( t(y[!fixed]) %*% invHess %*% y[!fixed])) / sum(incr[!fixed] * y[!fixed])^2 + (invHess %*% outer(y[!fixed], incr[!fixed]) + outer(incr[!fixed], y[!fixed]) %*% invHess)/ sum(incr[!fixed] * y[!fixed]) invHess <- invHess - update ## chi2 <- - crossprod(direction[!fixed], oldgr[!fixed]) if (slot(control, "printLevel") > 0){ cat("step = ",step, ", lnL = ", x,", chi2 = ", chi2, ", function increment = ", x - oldx, "\n",sep="") if (slot(control, "printLevel") > 1){ resdet <- cbind(param = param, gradient = gr, direction=direction, active=!fixed) print(resdet) cat("--------------------------------------------\n") } } if( step < slot(control, "steptol")) { code <- 3; break } if( sqrt( crossprod( gr[!fixed] ) ) < slot(control, "gradtol") ) { code <- 1; break } if(x - oldx < slot(control, "tol")) { code <- 2; break } if(x - oldx < slot(control, "reltol")*(x + slot(control, "reltol"))) { code <- 8; break } if(is.infinite(x) & x > 0) { code <- 5; break } } if( slot(control, "printLevel") > 0) { cat( "--------------\n") cat( maximMessage( code), "\n") cat( iter, " iterations\n") cat( "estimate:", param, "\n") cat( "Function value:", x, "\n") } if( is.matrix( gr ) ) { if( dim( gr )[ 1 ] == 1 ) { gr <- gr[ 1, ] } } names(gr) <- names(param) # calculate (final) Hessian if(tolower(finalHessian) == "bhhh") { if(observationGradient(gri, length(param))) { hessian <- - crossprod( gri ) attr(hessian, "type") <- "BHHH" } else { hessian <- NULL warning("For computing the final Hessian by 'BHHH' method, the log-likelihood or gradient must be supplied by observations") } } else if(finalHessian) { hessian <- attr( fn( param, fixed = fixed, returnHessian = TRUE, ... ) , "hessian" ) } else { hessian <- NULL } if( !is.null( hessian ) ) { rownames( hessian ) <- colnames( hessian ) <- nimed } ## remove attributes from final value of objective (likelihood) function attributes( x )$gradient <- NULL attributes( x )$hessian <- NULL attributes( x )$gradBoth <- NULL attributes( x )$hessBoth <- NULL ## result <-list( maximum = unname( drop( x ) ), estimate=param, gradient=gr, hessian=hessian, code=code, message=maximMessage( code), last.step=samm, # only when could not find a # lower point fixed=fixed, iterations=iter, type=maxim.type) if(observationGradient(gri, length(param))) { colnames( gri ) <- names( param ) result$gradientObs <- gri } result <- c(result, control=control) # attach the control parameters class(result) <- c("maxim", class(result)) invisible(result) } maxLik/R/checkFuncArgs.R0000644000175100001440000000231214077525067014562 0ustar hornikusers### check of any of the args to the function that calls 'func' ### match arguments of 'func' ### checkFuncArgs <- function( func, checkArgs, argName, funcName ) { ## is the 'func' a function? if( !is.function( func ) ) { stop( "argument '", argName, "' of function '", funcName, "' is not a function" ) } funcArgs <- names( formals( func ) ) if( length( funcArgs ) > 1 ) { a <- charmatch( funcArgs[ -1 ], checkArgs ) if( sum( !is.na( a ) ) == 1 ) { stop( "argument '", funcArgs[ -1 ][ !is.na( a ) ], "' of the function specified in argument '", argName, "' of function '", funcName, "' (partially) matches the argument names of function '", funcName, "'. Please change the name of this argument" ) } else if( sum( !is.na( a ) ) > 1 ) { stop( "arguments '", paste( funcArgs[ -1 ][ !is.na( a ) ], collapse = "', '" ), "' of the function specified in argument '", argName, "' of function '", funcName, "' (partially) match the argument names of function '", funcName, "'. Please change the names of these arguments" ) } } return( NULL ) } maxLik/MD50000644000175100001440000001620014600036201012014 0ustar hornikusers720c1d318ff00b2de92ff5485bbada22 *DESCRIPTION 111e2bb5ed9300c47b52b11a72c6839e *NAMESPACE b1e0337b88240a2a98bf57333278ab3d *NEWS 07512e0403e60dbe4c310f66880b4fb0 *R/05-classes.R 08296268a86bd7e22e055f73a666ed67 *R/10-MaxControl_class.R a9f1662e6dabd302ab25fafb6fead56c *R/20-maxControl.R c24d12178e12dc7a13df319bfbc65368 *R/25-addControlList.R 495172f78b9e46d0169fe8e40f65f6c8 *R/30-addControlDddot.R 23151b49bc8cdafc5378098818605dc8 *R/AIC.R 616d4b76bd50cdff58e1b31249581c2a *R/activePar.R 6b999dafa9bdf5880be41146752383ae *R/addFixedPar.R 1cb94fb786cf735b89302987f2f45ece *R/bread.maxLik.R 628fd12f511412a5431211ebc242b33b *R/callWithoutArgs.R b281b27bd439a07982fc1363b2c95e44 *R/callWithoutSumt.R f6b11464c98bd3662e2b4aae72410ee9 *R/checkBhhhGrad.R e5e6a17510e2f5b56254f573cc03d43e *R/checkFuncArgs.R 7446aa5174844bfb8b0c530d4b0292da *R/coef.maxLik.R a5a97856a454fa21a85d28c0638a0c1f *R/compareDerivatives.R f3c12fa85c5c5fb1f6e4b9ca564536b1 *R/condiNumber.R 59725aaae98563f4590529586dc1921b *R/confint.maxLik.R 16ce669188a2349f588a121fc48f85b9 *R/constrOptim2.R 804efa9a9611766159532fa1ba2535b7 *R/estfun.maxLik.R 1d0a677cc7248ab9651c2bec1d3316d6 *R/fnSubset.R 9732841388f169abd62c06b2dc886baf *R/gradient.R 3db7b1048b55148dd123d70e61c8d733 *R/headDots.R 64d17ba17bea697ac45de7f5ec616c47 *R/hessian.R 21446ccb89769a76daad63220a2f2640 *R/logLik.maxLik.R 4e136956778600d4bcdc8b0b3d52d876 *R/logLikAttr.R 1e691a97c6eb732e7267ebf51942426a *R/logLikFunc.R 110d44648be69c6a208bd84d6bb29ef9 *R/logLikGrad.R 770537e5bbde56b8e3590b68bca2d033 *R/logLikHess.R b45d21b3666c4b778868fe1c902df8e6 *R/maxAdam.R 4a93edf08f36c69063511a11c81f4a05 *R/maxBFGS.R 002a26be9f64bbf092e7e33a1805a53c *R/maxBFGSR.R 9447998fb601ccd499919c8796882000 *R/maxBFGSRCompute.R fe5933fbf427415757cac7cccc7ed277 *R/maxBHHH.R dc26c765189aab53893ef20871587498 *R/maxCG.R fbd13bdfa6f2dc09a1a22bd6ee8569ba *R/maxLik.R b71d12473ef6a49f903b66a2aa2fb8b1 *R/maxNM.R 962f17ef6572a024e2bb64c32a0961bc *R/maxNR.R c4632c52075b7f1504bb80e59eecd042 *R/maxNRCompute.R af12951f1f661072362aa23df9a0b16a *R/maxOptim.R 63c770407939aefb4bfd99529cf92517 *R/maxSANN.R ff2d179d6daeb89e49c6122713c30107 *R/maxSGA.R 47d4f0a4a4564a349d468723b56aefd8 *R/maxSGACompute.R 64abe1be44c5c8f770fe8af7e2f57bca *R/maxValue.R c80a65acb972edefc36fb40ed9fc127b *R/maximMessage.R 999df96b4d40ca70de26151b9f04d63e *R/maximType.R f4e22fe11b2dcb40e338b2f19dbfbde8 *R/nIter.R aa6c83d64ee8b14b3b5934fca4e1cf90 *R/nObs.R 1dc47c8109c34ff37a0c657d1cc82419 *R/nParam.R 76c96796242b1f29c693fff5946344d4 *R/numericGradient.R fd6764e2955ed5802e9d5c02dcc8cd17 *R/numericHessian.R 2f8dcbd5c37ed9702f45baed2bc79b7d *R/objectiveFn.R 32ee3ff9f876da5b606fea22ee11c3ce *R/observationGradient.R d6b8d3df6587f6fe54074c51e40c1dcf *R/openParam.R 0db0a207aa820ecd499edc72f953ef1e *R/prepareFixed.R f681ec2a71708e712ea0c3841ecc9711 *R/print.maxLik.R eb71f0f87deded32d343f3838e844c49 *R/printRowColLimits.R 3ec0b9003101ec88c863870f2d30e6bb *R/returnCode.R 69d1f09210d746bb394c6dd9bfa680bc *R/returnMessage.R 0ad6b3077e2e22603a12300892089655 *R/showMaxControl.R 39305dd91a5f62f3b5da99daee4bfa7f *R/stdEr.maxLik.R a355236eada2891f64bc25ad3937aba7 *R/storedParameters.R e696f2804d0a702a70a5f9666caf61ee *R/storedValues.R 1fe4bf86e3e4b60e8460780b4142d567 *R/sumGradients.R b482c4c3a7a159b72916328d7ed1ef2a *R/summary.maxLik.R c8eb0796e44b16d1224d56d12a532288 *R/summary.maxim.R e6734c7b9e086764cd181d3213d668ce *R/sumt.R fd6d0b337a47860570a58d9584fe146e *R/tidyMethods.R 7f8d32f62e006396f5dab695599f9037 *R/vcov.maxLik.R 68795c50173f11bb4b55f764cea06751 *R/zzz.R 8faf250d78a120ba4c7ea2186efddd24 *build/partial.rdb 9902afbc6c54fcf67687b14c7223116a *build/vignette.rds 6bb1b8e24134c4322e0b6d50f3d87b6e *inst/CITATION 04940345afaff3ea5cf2b68e8ab3a9e8 *inst/doc/intro-to-maximum-likelihood.R a1ca41b6ee4853ab70480b92916ceddc *inst/doc/intro-to-maximum-likelihood.Rnw 3a7256e18b58650e56c297c56b5db196 *inst/doc/intro-to-maximum-likelihood.pdf 1d29293bd50b9db3de7c4d10061a0dac *inst/doc/stochastic-gradient-maxLik.R 77a22f458067cb82babeca70de304851 *inst/doc/stochastic-gradient-maxLik.Rnw 52297c5298e3b140e81e5a498de1c201 *inst/doc/stochastic-gradient-maxLik.pdf 6159ce7b0178bc8d0a201642d8ad2bb0 *inst/doc/using-maxlik.R c8e525273570da2c5e6d7b9605f445c5 *inst/doc/using-maxlik.Rnw dabbf622a11d948e8e6c8ce95267d8bc *inst/doc/using-maxlik.pdf f569138ad20796e8a2f4589f8ee8ed2c *inst/tinytest/test-basic.R 910334fb9160bb263386bcb59f471615 *inst/tinytest/test-maxControl.R 9bca2fe2c1a2c40104a088f1a6de2260 *inst/tinytest/test-maxSG.R edcb435c99d3b127b13cd18177dc93f0 *inst/tinytest/test-methods.R fdcd59987029bf9017113aaa16ca9659 *inst/tinytest/test-optimizers.R 133dc8408ac5caab3d8ca4e21d9a7c2b *inst/tinytest/test-parameters.R 1839a6ad526946c4b9029de91b55e58c *man/activePar.Rd d5c48ed9e4983ebae6a5d9f9c53136c7 *man/bread.maxLik.Rd 45b84f03f0c60f456444e163360fee34 *man/compareDerivatives.Rd 789962ea4222142cd8f51f51172c79ac *man/condiNumber.Rd 65bf0d37c2054eb707194f98846a432c *man/confint.maxLik.Rd 812c056426e615573fe71f21ca484374 *man/fnSubset.Rd e57b580051b91705923cb2eef891c83b *man/gradient.Rd 4cb76c1ed5f2dc2508d1010893089052 *man/hessian.Rd 0c14b964346dbc38fb5a13009bcbd85c *man/logLik.maxLik.Rd 2a6b97101ae7e49f852bc19a2762a36d *man/maxBFGS.Rd 3e69da935c298f34961e0e5c40405b9e *man/maxControl.Rd 3649275859d0c46a5bb9ecdb1fc9ce59 *man/maxLik-internal.Rd 0cdf8c75edd5da491dd355e1339f0e57 *man/maxLik-methods.Rd 4879bb28b424061901b63104d2d95c89 *man/maxLik-package.Rd 0641331cba5492be390b0715f27efa40 *man/maxLik.Rd 54562c66ad418a38e08220e98b39ddf5 *man/maxNR.Rd e225ef8eafd05364957af6d7026dd317 *man/maxSGA.Rd f76b141dc0d11b6e22d9391a1f82f905 *man/maxValue.Rd 35f8dbfb6a4aefdeede7ce8f3095f441 *man/maximType.Rd 22d3768a69246b071d441f4130db0a8a *man/nIter.Rd a74b0179e0c41a659aa1c359ba4ce082 *man/nObs.Rd 9619ae8a8492398dc9280cfe608a33e7 *man/nParam.Rd 3552f1fe651edc3af0638c1ec4493b1b *man/numericGradient.Rd 4bf4ed2639941e261d783a1625f9958e *man/objectiveFn.Rd efade94935dfb91192c52aec7655a68b *man/reexports.Rd 353b9db4026a3bbb073eb918e1422f5d *man/returnCode.Rd 8046210012af544d6987ac1f35fbb67f *man/storedValues.Rd 0e302b5c44fb4c66365ff606f5c758fd *man/summary.maxLik.Rd 416c56ea557a1c2933d86c0daa3c17ac *man/summary.maxim.Rd e39688cb93ce2092adca8dcb79617203 *man/sumt.Rd 322d257b978770eb56ff86558ab34f63 *man/tidy.maxLik.Rd c9832e82bd584e5837f81a676c5e877b *man/vcov.maxLik.Rd b2d527d3c65311cbb6e3e035a81b4268 *tests/BFGSR.R 7b1651cf9375022a41f4084af5270f70 *tests/BFGSR.Rout.save 29c954c33db65e9105745799a996cb8d *tests/constraints.R 76f00749d5657d785a124bb8df9d50e5 *tests/constraints.Rout.save 70db31a194f4a57154ea8d6ca822dc52 *tests/finalHessian.R 22066f4a839377d0a775a0d33d8825d9 *tests/finalHessian.Rout.save c1bbe611737d8fb90e93a7bac3b1be7a *tests/numericGradient.R da073867a297c038b711fda70344d2b7 *tests/numericGradient.Rout.save 03c1442d4a9c62351f781935c265f2e5 *tests/tinytest.R a1ca41b6ee4853ab70480b92916ceddc *vignettes/intro-to-maximum-likelihood.Rnw 991278afedabd4e7507305b345a73c2c *vignettes/maxlik.bib db26618cc7773afcaf2fae96043b1673 *vignettes/probability-density.asy e5cee16df2fac32daf93cce4a359f204 *vignettes/probability-density.pdf 77a22f458067cb82babeca70de304851 *vignettes/stochastic-gradient-maxLik.Rnw c8e525273570da2c5e6d7b9605f445c5 *vignettes/using-maxlik.Rnw maxLik/inst/0000755000175100001440000000000014077553514012505 5ustar hornikusersmaxLik/inst/doc/0000755000175100001440000000000014600010432013225 5ustar hornikusersmaxLik/inst/doc/using-maxlik.pdf0000644000175100001440000036621714600010432016347 0ustar hornikusers%PDF-1.5 %¿÷¢þ 1 0 obj << /Type /ObjStm /Length 4138 /Filter /FlateDecode /N 75 /First 621 >> stream xœÍÙrÛ8ò}¿o3[S#7¸5•*_JœøŠe'v¦ò K´Í,y$*Ç|ýv$E”L;Ú­-Z&@âh4úF““ˆÂ'’ˆHEd̈&Z)bˆe±$–šÄÐ&âêLGðI WÒ&°74‚Q¤º"ÂXXÉ´3DJžY"­ç1QÞóˆ(%#ÂQ*œea\.ˆŽ,Ü%Ñ\ÀsE´”Ð ³Bnˆ‰ Ln‰‘FcdhjÀ!±R0î±!B«àˆµîŠÄ…•ɘ°$60‰€ÕÆ8,%b@ k '¤‰ˆD,h ƒeD ’‘SIf¡¬– È4XÐV ÿ%bÒÀ° ±Ç’XŒ3,ÀÈ\–ŒÌVDÁÈ‚Áú$ W0²ÐÑÈŽ`j#KÁD¿°0ÃB`'BÁÆ–$LÁ:›Pà°0 SP®ad¥`¥·OÃŽj‹Àn¬2!,Ÿ¹ý˜f–ئ̈›ªUû#k ¸°™6°ƒ€+¦mÄþñÇ„'Ùp<̆°_@z焞>&ÓQ–ΦäO ?÷¬ŸfoÈgx·Ì&é4Yûgûäx6NΦ‰¯/€tÝË‹ðhŸÌîÈ«Wn¾ev?›“_ÿ oæÉçÙf ùuÿ_<l .é,ú-b¿DÑ/E;ìs4¼H®È·4»'÷0ö|žÜÂëwÉo³ùxáÆ`žîl>/G Œ÷ú숼¾Ÿ-²Åhž>f@>½ˆ÷´,oþŒ27äEšM,å+Ø›-§r }—¬’àÞ´û¤êîÀ˜þîqbòšo¥ýCÆ}Õª¼ê‘ëG°¾çãH?K,òjÞEæÓ)ÿús|¿ê§ÓY†³8R­÷fÓ,™ÂKà ¿yÇÉ8îξCsSŪÌm%ëDŸqä9t(¶ú™Ò”þ›~¡ú@§t J‹Î(¨(úH‘ô'ÉmæKs7:h“t6¦Ñ¿–³,ßL\ƒ¢âÛ¸š/Îé‚.’‡ÔƒºH¾Â„‹ô;Íhv?Oš}›Ñ%ýJ¿Ñïôý›þÌg JÀ[¿s0;h2¼Ceéx×3ëï àÝ[`šØ¡ñ³ßO'  ¹äÂG'Ǥ…ÑAߦ£éh-¨§‹°cGÍt%Ðî¨2P…÷^~}pv±³S\\4yY6yYÈ—yÀ˺#/+®V¤ÍÕVáˆÝæXKÛxQ㾩·1Ÿ¿Êb¾&ËêXWYVƒeøL–½†.Fiš¥“qEdÅ`â›ùpô%ÉåeÏ8k¹û¯åp‚̽™¥‘¡'Ébñ<®~œ,޵“Ú›%[ûŠӫ¼]pôb‚R§3_ƒxÌùZ×ùZù—àe9Ä7¸:nruÀr›¸ZáÖå\ žZ;WÓ«|£Ño XüýÕõÛO§0ßîãuWMg/`qùbu­5õÔ% á 3¸OÕߺ>àiâèe]+ðP+oÑeDDZú½$»~@ô¬± *KwG7- u BÕ ¥Xä­ó·àªÂ>£ò”ù›(oí~0f T£ºRJù³ïøùÑ+Od)¯#=5˜ù¦dÏHïuúv´]#k¤ˆ6uùw`Œ(^¬uÔ$ë€Ì6*+³"kµŽ¬J>;{{zÝGÎ9l(+ ¹éÎt‘®¬h©€¦õËMPÕf›mº´©÷ÐÜÔê›èÞ‚›)u½äÿ GóXæ`ÉYf=×0onJX‘;C^öÀ0³Ÿ‡©ë©«y¤8pdˆDx×FxžÖ¾¶Q˜,( ` HL3s7_ƒÂX“‚íßHaà.•‚S¿Hp¾=ÿøç4m£MäÖf%Ù€ÜÔ3¬¤—ÙívFÝ^i³{ÖY@¡¥ÓÕ*zäÛ±_j­l¢#°‡[h”ÎGˇ¦1””¦Pne<ÇBªÚFÌ¢åÃM2_¤wÓ'#\q`$å¶ÑÏ™A¥{7ì ÎükÍÚ !Í›üðW•ŸgL!ðbŸdh^2ôl>Næy´$r1 ”èœE¯®?ad¸g#Œ—s‘ér2Á¶oF ©Œ2Œè ‰ájÙ“Î\ˆzî’«еÏ?J§_ ]'ˆøHofÉ–ÀOJú™ÀÏÁ÷ìõ Ãð©Ô«}À ùÏD‚®ß¾¿.RP¨ t>U7<ù×\G%ÝÈ ¢3M¢k’ÄF‰²0;mW¢;9íŸà çu’+b+ã2¤¸Ð¶Œººç±ÜákÝcÛ+÷¦;o^ܵ«¶ÞÎ%&­ÎÈó9Š@xƒTÁ CÞQ=äUÉïhøp3–ÖÛXh›­14¿V!e´°¾‡v•Úà‡ãÁ„£A¬a̸FJ]I5êLªW;ƒƒ«kÇ 5Z5…»¶I<Š( Ö'ÄcÎkTu/¥k« 0åá$ãÿÿœØDúñ4„(ó«Ä¦6ê"þ$« [™ŸLåsÆÍ0ƒ(…?®G¶ ÍT{â…¦÷=nKWãËðñqˆ>†ß$ú°DÒÍÒádœÞÞ–D ®Ât\9 m÷ ¶¶†MÔ¤áu%b±Î+ÈÑ4Ø!·ÃÉ")Z­lâ€Ê{ûýÝkoÎéŸ1l‹£Öç¶š±öîÁjýbÃVEÊõoìEt 0±i7¢ ÃVu•({{ýÓã~Û×a˜E¨NÒ¥ Ù]»c˜gmQj¦IvÌvu¬ÄfÍôÔûz,ƒÕ i_-·ÿ¶~N¿V÷³Œî0ÁXˆñØi>¦±Ÿ¢¹Ÿ~7ŠqÁJÁ?¹"·s÷ºúþÔé Ûq/‹ÂÍŒƒÍìlN·äNHÉê^rí˜gZE<‹6cžy´ã ÔÁˆ:.:ªÏx]$¢Sc-g2ÎÏNÐÞ\Wñ^zQ%¶C\KÖÀuWLc&hÓ(°‚i_-1ýN—‹6åØD3fä×»ä Q_xWw¹›Z<==8ë¿GC¾+=·˜òÅæG«0Ùb\ Ï[ƒ¸šÑM,×°ÐÉ@{›qÜ) œ'}úˆ°Œz‘ÄŒl÷¸Rk"Â<6½ÈjÐ7º'1M[ôð\YjÛ“q·xp7ØL´"XÍ-ïqÁÖ€&£¸aöœ Ì.zÔ¢Ø0‘¹pç:"Â3mñ†Ê%æ¹ÀL켌¹Üª(sÌI÷eåòÏó2ÇÜó¼, /Ú+—sž—-áÅø˜K΋2†Û‹²ÂÜò¼l0¯{s¶{¾»ƒfºò™ ù¬©6tWËã×ÕŸS䵺àÞ™´& T`¦C•#MÍ!ðñ†jF)*)må‰OØÈ¾øÚFÚM×`à xVCoçÈYg)yý~çØKáëjÃé0!@5U‘íjÂégFL½ÏÕ<˜”µ]Œ“WÝåªVÜõolK&jà­«ð”d]YןoOÐ9¸ª‡‰ gƒ] šJ«u3VA"³)H$A„È59¢–(Œ©¸.¤âëÃ’.ÑØ®ðX°¬ÙìIviÓ¼X[rn=äSøTΡwÓ»»jý¦RwAÊÝæ×¢ gB­V©Ö²U9{¬Ä=Ë>ñ|µ!…n‹%8Ÿ˜Á7N“áú5ùž%Ó1’á$©‰¦X­I°ò— Zf²å­<”:väÞ=V:xwvøz&¸8ì.œB#Nq Öõä®™{Ô ä™GÅås‡VÏCè«L#æx‰?{ðÕJNÑ€&.v>§Y=Å`³'„©òRµl½ªï@g+½ƒ/ÄÃý¾<<{s|é\‚ºÐ+œã BEá.wÍI3y€zû‡)ÿO~Ïðù¿m'3 6;ì—⼃éÉbÛã1Ôt·¼£¼Æ*Ó”ïZ ù™V1(?YX¼@ÿùWbPÆ5e÷yc^6¤øÆéÜâ·¾I¾Þ¿Ãhõ9lÙø%#M9ªÞÒp¨¸ñ°©©ÌQÁ,`lº¥YÉ3¶‡„ª‰OêÆ»[TÍ(w ª9.Po¸$p1\ºtÃQ!gâB./ƒÔœ$Úª?R#sÞcÓ½ØúF—{‹¡ w¦Ž9ôa‰œ>¦îËw„Ž_(çgjÄŸ¹¹`‘;X/VR¿»Ûüd~[ ÈÕ!IýKH Ïåßc:z›bâ~™ét÷ê{ªms_ŽÔ*ðvŒè›déã䇷…çÃq:N¶Å>õ¥Ä^R¶3EŽÀÿ…Œúe|t(endstream endobj 77 0 obj << /Subtype /XML /Type /Metadata /Length 1388 >> stream GPL Ghostscript 10.02.1 2024-03-24T12:40:10+01:00 2024-03-24T12:40:10+01:00 LaTeX with hyperref endstream endobj 78 0 obj << /Type /ObjStm /Length 2838 /Filter /FlateDecode /N 75 /First 659 >> stream xœ½ZÛn9}߯àã.Ӽ߀ €ljw­Øc;‰³4RÛnŒ,’<“ì×oû~Q«e+GQ_ØdñÔá)V©­'Œ8F´#ŽîáKéq’h-Y£‰ÓÄkhhgÎøÇ…‚sG¸pÛn'žî +ω`¾BJâ%JzâÚè‹§àÜÉ¡o‰”ΑF…Cépƈ\Ã'J1œ ¢Ç0•œ)¢ÑÎ4ÑRã-¶CœY¢­æh4Ñ^c‡žÎá)Îà@Â-Ή8w.ˆQÚÀm£4 Ãnib,‡Ér8(·Äx˜‡«– <ðÄ ·#VáSˆ5ž‚X§ñ–„‹·`fÀTä\p@¸ðJ†O/¤Á+Ü€S–€¸Æé€ÝÎjT‚‡< Çd®ðŠÔÑ0 .Sh˜¼ap`htØä½‚ b;†Øò€Ÿp¹B¸$ÞQÁßq…0[†G¯C$ñyæ-<§ ¢(ð¢'ÐM Á’hÅ5˜Å@ šsà¼ÏÁÙ!¶A|¸þ¯^úfù´ØIèI²Zo Œ\z6Á›ž\ÿøzþ´™'‹xM^¿OÇÐä+Ñi››/ÿE°#sŽ›H8 Ôâi>'·„~ˆ¿oö¡éÅdØÖg½'›yL^ÝÅww @`ÌÄŒYÇpÍెo™^7>»¿ÎmIgñ«êµJZYnK«²)‹ê”Mz’l; ¾XÅ@Õ­G‹a)Y™Y ßp)X®Á=cá£_@Q*a7 eͨÔšQr8N:¾™evÁ55Ílû=»g2tã^„3;M—·9‹ŒM;U§)x¢Ëh™ÅÒC­ÏŒ‰Sà‚Á<;çe›Âè plk3g˜üžÎ©Õœ”혔p"’7'ez&%»‘n²Î +ŒÉ ¾Ë&ž·Ÿ¥ßvR>ce…ï‹ °Æ Ž:ŽgÉähù¦ƒÌ ŽPÖ dÜgN¹Œ×˧Õ3öv½Ì&³œ^ň ½8>ùàÄoaä\.&÷qA×Å_ËMÄ|…¨©.Ôdο†L· •·•ÛÁu1WH8-EpEðªGºŸÊ8gM…«2s¹*]æ*Ë"ޤÆIÏꜴ=6åk¡ \¾–òõ·™0Ìêtµ¹¨©ôùâ¸*8Ó¬o\³³ì<ÐW~î²vw%6©²Ì¡–€4/X¾ÃcF©H Ûô˜èôXJ)×徊~·Ô¡)wuw +wÃZ[;£Åb À~ ´÷1ø}[ƒÝ vÿ|Ø=¢<)ìj;ì¾+œ‡0š­Ô®*Ô™Ú¶²B»¸²’Ä.Aw‡‚U©À*»äRŠÈ)Ýô’]±]™ ×ÐÁªÞðRk¬ª¢Ôˆûª~î¡¢ŸÜS•±zC,ߪ3G“uð¤ŸþóáÝÑÉ/W'—cÈÁ¡oÓå,YÜú9YŒ뤼É›‡É ’—Ôìt•|Û,W˜Œñ%´ÁL†^=ý¾ î@§ðÜ7éП“ÙæW¤ k¥üÓ˜#^»¶ýHúäIŠ»âX„Ø…G˜v…6NBºéb¸ ¢1ÛÞz±ž" $›ôÍäÛû8¹€Sí§‡Üû'}KÏè˜NèŒÆô&ô:§tA—tM7ô‰þE¿ÿ+Ð/ôõ+À{2ŸÜ¯1ÃÄ3q”¯¸í ™ÂoÓ['É<†¼&Wa¼ôaòwxít3™'ÓÑâè °“õ\†2¡«Müø)õI郊ûèM6CÙZ‹%ŸÏOOFïa¼ëÓ=X©z‹%•]Èž,ÑÎdxÝ5¯ˆ AJ¢¯­qÝOÁÝýü¾G¯?Öýìûý ©>Ì¥íç\¯K?·pïõ3DúÜϰvú™·ý|>zw|}žò äe Ÿ•j ƒ¥—†£¹èhaEáFßø¿?çmpw)%–ÙÒ„q¤.þ! ñ&뛊2ì“ñÿ&e,3Uʤ§eÆôœ^m¦tº||œ€pÜAõxÕXjlþZÒÿÅ«e•PP/¥°Ó" Ö o’ªåä^R‰’TÂî&•í㣛«cïèÂ÷`RµC VrCÕ"|þé! ¤MÖ‰Ú5Åôž´KÇ@¢Ήfå5Yé+ÜˬQÊåQ°ÆÃuЯ6­DV¢J«=¢§V‹îA•0 -1p cÑæaÇ[OôÏ*µRjIѤÞ´°mÂÁ´-­jº¹—Vf/­Ò® Õr5‹WÙþ‘…Í;îéó“}ŠïÁDÜdNñ Éaˆ¥bØ’b¥X aÙQ0aY÷¶Â³³dñGnrH+rã.E(N§›Wp¥Ïì¸ZyŸ‹PÎN)®c4?Æ2kvŒµÕ¼O¬©¦}Ö¹¡`•W¸‘žÜxLOkúø4ß$ßæ?è·x•,gø\¼Šgt5™%Óɼ¿LÁ‰vð2XF–aŒ%d“O/Þ?þòf|õ…ï ®’:Ó’–ËÑ磷8ÀÕÐM‰ë V¶¡+Øh¬X¡Û[ؾֶ ¶êŒë ÐÊFkãH³ð$~0«&Ìu†¢Ìd?ÊeöæPŽ{û}óîj3ÙÄáG”bá—”ýºK ¡äÕ…°m%u¯z©ñ·¤üR„âº#"ïÇ¡xçÇ(ä—h“ûðƒQzùƒöU«* žSÁ‹†òçb¸'n˜J¹]–¸µ±:X&wý~Àì CŸ×P÷¨x]Ô¼.žãu"| í{‰<÷¹ñÅßÓÒ¡Z9&P!i†œº§ñd³J #ûÊlß\9¾­,vVX¹­6 £Ê»Tþ‹ßÞžœƒæOlÍpÑ4œ»¶âsßPüÁIŽÛok¶yˆ7“Î2@GÀ°ŽÝ–ȳ©Róó(ú~[úßÂ÷lÔ¶L·%Oïæ×”E8°`±«äN ™d ö<-×ì•J›®ònk2Ó‚³7•vr§ÔT2i»EeP%äߥ$›ébMì› Ý—•|ýíææ|ü)DO;¬ø~X›­ºÉVäalU¬¬,vý…oŸùŽð'ëáOVÙ™ÐïôG“ª¿rˆ 4P;jðR7yY‡m`üsª†| )ká-Aí…•“mÝ«À4è•¡zIˆHz¿ @sG¤´Q˜,ˆ5¾m8¨ÀôÓŒó*’_eÔƒõ§˜ÀýFêÈ 9°øõ‚¥º;{lǾƒ½ ¡ž“G•Zr=:{?º‹bèV¹SKT«¸­†E>);t¢^…2µ*TRûuïøq‡_±‹†BئBÔÁ¨¸ƒïÝ!×W>7,¼gÚªþžîK8?À’V+ßbQ©!·µ5q¸×,ž³¦NÃÞ)ªÉ“P6RÀ>£$´"ˆßÔ1ZE‚ó—ÉÓ‹Š‚DiK•?˜[žóRÑO/ë C!/ô¾ÍˆBÿfT¾GÑ“»»¬Eó¾†R¨õà,RЦÏékdX ëìíÿÍÓg‹endstream endobj 154 0 obj << /Filter /FlateDecode /Length 3177 >> stream xœ­YK“ÛÆ¾ï)9'Våa""˜0ãD9¨Ê+%Wb‡©´>@$v ÒxHÚäÏçëž\Q¶\Ié èéééÇ×_Ïþ°Ê3¹Êé_üw¼ÉW÷7?ÜH~»Šÿ펫Û›?|«Š•,3%­Ymïn¹’Ze¹¶«¢0™òrµ=Þ¼_WëMžåF:m­øÐ¬ñ U!K+ŽkUàKéÅx\o´T™·J¼ "RzoÄ[É!\+—"§õ†„´1"þ´ÒŠ=iÔXëÄ—ýp¹-Ùã”,•ˆÆ)kL!.¤NË/-+ï—ûëï¶%g¸¥3Ti3¯²Ýãø¼™.íõG#¥V;çÎÖkøNâèVÑú42s…[m”Ëœ+}Ðó·a€ º})¶k—ó:o™åR*q:Ö+ܸ¬,-–ëLã^ýuÕíÈ“ÞÃQQá…2Ïè.“…P¹2É$µ’&Ó¦ˆ&!°V©Õ¦i[r½‘2Çq¤xÙ®5 ²¥CÇÞÕÚ[½÷ÎQ8ÈƹŠqù°šS^ØR—&Z`V&"Ñȧðˆt«í«›íï^‹íCÓ¯7ÆK¶úÝšvVH#ÑÜ·5)ò^*‹p5‰±…a~æJ4íZ•b¨Û} «ŒÃ>Έ»SD(¶c_wÓŠB¼§ãoÎ#e$©QNtõlÆ]ulMÕ%… É‚ ‰«J±;µ»ú<,”žîÒj) ½„ ÞׇfÃaI!Ó±9Ï%´ñ'ŽIŽ5¹ÁkXÖòƒåSÆíãÓðP§ »ÕPO²R u&íp;GV¥È‘¢wlšW^<„½Ø }üí 8Î;V!ŽA§õ!×%’HŒÕ¡‚šÜˆÇ(U$‹5;ìÅW_}µ8¸O¯ÎçîÜC²PÛ„MÉÚÂSžE…Fqu° b:‹t’ÈíÒ¡DÅ·ëí÷OÎg…öy‘ŠøPµ÷cu_gëMYjŽÞ–7zËyWp†Ô£¯ý]ªRÄa‡ÌêÓBm{Õ>‹ýŒö 7Þ^1RÛ¬tpS{HR@*AµN Dg`Ïhï9ö‹\b{¸ŽKÑž†$dD½tõùP5m4!Ÿ’àˆJêËÀ´÷ñ3 AzuéJëè±ÙU‡ôÝL¥ïì2)þ¾FyP¢k¶ÒWš´„Re¨ºûwOªä¾;gº`ZÓî㞎Þ”H~”HIyL?sBŽ!´O=QCQÇùKIáh:z¢5Ô»Jho£ „{ÃéžQJ”Xµ4Õ'wcÞÇNȤ­@¦‡Ë\‰— m¬ÑkáSÇáÔš+àåÝlø#«+¬§q~ÛrL¤AÓ¨LÉ!hϺ žg·;„ŽI ê1¨ö0Cý 7GÇGõãÜUP cŽòrQív§ã¹j‚=]P5~¢ji1 õÁcHc–.ôªÂò‚÷ ËŸáÝÉ›Qß…;Óy’75•×zS‡tº‚ Wåg€ƒäî¤~™108™ÉRú …ÀÀH¦Ñb ?Û‹¢gÊ¡ø°}û4^p%[±`èâè¤ûqÇ¥Fk€2ÃRó›ªovñÑéWL>R‘gógËK¯œ]Y`øÖOÞdÖE &îÆvºƒ#8]ô‰\†-UEh£GF:U(æu` TȪöRœã‰ÑOÑÔ6‡ á½d‚5x½T^Šsµ›¼][¢a„÷õ)þ\ò 8M „âž?ZF£}󫺣TĀʸ+íéŒÚkþ xaù‚¡’A)ìn‰C$šñ>YK°’ò%4§;è ·ópˆÒp=ÇbÇ"V¼‰mÙ_?fÀ„QÄ .+îÔeD3,e`Ÿ´ƒqT]•ä›]O6šQ iG$ò‡ªÛA ce0×%„ïfði&a ®Û+ |êÞƒø»MÍ肱>Ò+~*ZŒ¶lÌׯÒo— ¾"þ`¯øG¬'ÚõËíÍ77a„ê>=s]dx¹´&š.Wè:\BS¢G?WÑYaíR]L J&M·iûx4G~R,úú@GšqüÄÕÀq-;*^ü²6l "³o",kÍah§ì@àÊee2µÑܘ#]æ¥p2õÏ¡C€ë饼0%»:¸3k²]Ícá‹ùE¨ƒ‹©ÙêÓ™Ï-a̯Næ“OTÆ'ØÊ9Ì|Kîqfç/ˆjü„­9+i²c`*¤3ä+’6å§Ðiõ•!¹ªyOS(ag°L-סàc{$â¾ARºø±¾A+¬ŠŸÎy™9e>£ëéD ^OY&/â]Á0p†ƒ­‘ȧc¤5ñ µ”» JLu!j¿c´ˆÏ®Y¾‘ ô²°þy¤åµ ´”†¬—u (}Ÿ†SÍø£4þû <—.•$KQ–c&à¹4H‡a¥?5¸•îI›£ÕáþÔù}”ò±%1œEó7S5Ó)jÒ.”¼ ‰[˜¶šû[#ŠEWcªd‘%(\ËÍÕˆï®IT³XEÀ¸À&}tÍýÃÔï‡ D½gšs©ÁÃUß'µ¢?-´¶uR«Å®j燱O6»‹ m¤ÔeuU^oxeZÇì+X³¼ˆ ;¼åöä""Ìb’."®Žøyf&¢ØÇc…Jü8ã ÄJ—fh°¶ r¡ øf‹Ä&Ñ0>3w BE¹›Œå°ño !¤+S¼S7¤‘Ïj±XÁ‹GE/ÞN쥮ÏÉižØø$rlâа‘˜¬r êEåqî}|Dnëòk3…É/¦¥›Å˜mö×Üj2§KŸ¼‘zºt¸aˆç¸`‰MµM_õY¼×,%Î=a a|á[OŽ ƒ_^ÓÅy¿DÃävTªxÇG-hzä** 7½a©sEzÑëÓW¹`”5Ïú¤Á ½!º‡ú ”o„§ïÇ>\¨¢ôà¸ï9`¦ig ,‘“%‡HDÅzz)úÀMƒfpé«ù(êo—”‰Ëj¸VJ>Ï,iøYù»¡ÄÕÂ\LÖ€½Î±ky¤ŽßøÍ’ÙˆSub·—ÜN× •Ä©0ÕÆšgÝÛ hÒËÙP”ªGÌ_Õ“% ¹ ª÷™ÔþÉ´¸¯*ñ},9ƒ´Mƒ.½Ïõ”fññÍÄÏãKm§ ¹ DÔW2Ñké~õž5†@lß¼c^Ê‚M8WñPw±b¦1?€í¿Öޝt¥˜°»®ǰá&Ôm~€Û=UÄ} Ì‚!ýÌò'N^F2‰u—aÒ¿¼ïlvÍÀWl¹¦ë»Ýòž#D*Wœp²<àÝ„OÌnܰ<:ñçÍbO®ÍC_|OmuÚÅÓ þcT¨]ºEfC~ûQU@ï|rý²!*õ“ë’+mB{0r›Tí)®Až)p*°&¹ÜHÃ$ó£"·Ô\jÿ¯Aê\^®0åg¾ä9XeÿË$ŒcÕú^Ç?Ép§YÍ?—= ð*ÃÍÊÃ\(s?’/Jš*çqùb@d €'÷˰¯k$[åctyÙê?ž üü}½ºÐ…64 >¶?S; Óþ‡ùçŸ6ô;ü%ˆ/fù–Ÿv¿%4¡N sŽÅoæUûj¨²ðC¡=ë@ÇYßóyAþl~Ý7÷Ç*öV€ÒBJ^û›ÀÂnÔ•^|.&ã—|ã– i¨ÈpC‰ÿgºú=”ó.. ]:W¿–ß][3Yn?^¦¾»ÝK #üºîýÀ> Pùü8N‚ÔþyØJŠg§¾ýöŸ_Þ®q¸k#n, iM¡Ò]Áí.MEôÍÍ+?Ê5endstream endobj 155 0 obj << /Filter /FlateDecode /Length 3711 >> stream xœZÛn䯵_…ù€¼ `îq44ûÞmÄAlcu`¯a¯€Xåš¡$Æœ™äìZù‚|vªª»y¥ÕzаÙ׺œ:UÍßVyÆW9þÅÿÛýY¾º9ûíŒSë*þÛîWß\œ}ñ³4+Ÿy#Ìêâú,Œà+îMf-_ÙÜd\øÕÅþì ÛŸÖi¬bmu³/Öÿ¾øçÙFÙ,7‚¯6œg^+»ºØAÏMžå<¹±f½á¹òŒg¹pÂÛÜѸ/~Öb´ì†~rœÆgÐGà4ìë‹ÿÌ7˜:æÔ£ív/šØKz Ÿ)£\èõ†5ewj-ì^Ê,Ï%ënËðà½IŠÃ®hvØ"¨¥lšc“ºsÎ.ÙÕZ8v-*˵`ÕàwìíZXXX{ÖU‡›4d/˶­Ö ï¬v¬Xƒr@(0ØxÏ.×_F¨‰@Ò 6ÜeJ‹pŽ¿¯7Zh:ü’í/×qøDJŠgv1gÔW67Qaßy¬B°Ô—*.Ê-´å–ábÂrÎå‡kS=¦Í7ìGÐK³ÞñŠ]ŸÛ®:¢â„°”û6ÈNiÅêÓ®\:=l<³"jŸÕÇ›ï«_åjg}Z¼;¦el4˜ô¬‚½àƒ÷'ܬA©ôÀYM öV:É`´å+ëê'„G§5߆ŒbGÕh=9˜E}*Ï¡T¦„ŒÇ[úöG~x”pyf¥:Ôœ†€Y/xèÄÈÜO¦ý,µ¸YšÙòL£„$µ'õ$!á3zIp*zÉÙö<$=ήŒ¹)[ìfr4#èF2B°`»r˜·Þϵ»‹ Vnï`\tÀr» †ìyƽœÈv\Õ`=e}¿v D•;vŽ 2*\lɉl¦¸QP_÷í‚xÀ;ÔìĆ ÚÌ`Bøë}ýëZk'-+ÐN nI±ò³6öAã¾>6ûM>M#Ù¶©º²¦l žê Ÿ^øQ¢aN¦¬4-?ÑD A\Fg–ļ|8Âî†å`ÄÛÓ¾<Ð0xèâÆ†:{%T»ðàáõáØÅ7xÆ Ž-ù*z¢GK›MSHÍîšãU]î[ŒkÒÑDßœº8É©%9çÊJä6½à¬hb³ÜÃÍxkÛ5Çà íUs´=VìÞŽì¥jé¨UÐwà3¨ÎˆViœS‚3ß±5·ÎÇjÈskYwŽí#STŒÚ,ß|ð0,4ËdK£ígôêq$î³çVaüØ <1‰íƒh“òAÁ°èÁ‡\£&5€CAˆnª±#<p¢(¢+oÈÊÐ4É „ÝOy´Ñ+1´`oÈ*ﻫA²0a“,ªkŠmW\ÕýHQêèÂàòïÎû3Θ%z¶åÄ,‘VFGj5šT~bàlOW›ã]W틚Y{¬OPV‘ÔHFQÿ`Ø4xiYJùÆËÝhÙºNc!1¸M:"ä硈î^ÛA±b)ØRÕ ®£p¬d¯ÊrWƒŽcZ J$PŠëX[ô“†ÁàùH/pÆÓ¡¢/‡±½µP¾ R +¼–`Å®_‰OVz8›CJX6Èû³¦ù„i/˦L©¶ 0J!qJ'X{{ ûWˆ³Ø—…–-9¶¤]à,½+SºŽ‚]'(Ù èM²F}0]g)#Èõ3Õx•8%±öÜ¡9ç3Nö/Ò‰‡ Iªv²+÷@,Á/º2ò@¢?Dý*D× œECOt±®eѤW˜0Ý -¤R„0ÓÊ1h)»P)Ùp4öÕñ°æÓäDÕ– ‰9æ²j^…‚²Á¬ñ,$Ôc<À(+'ëñ71Û›@­Ã Û`**”꯷ë¡[[vý ô±÷\¦zjÚË5½ŽN?šãéæ–ìIpöª¡0b°h.ÆÃ”¦·ŽYp¾>Öu°Slç•‚'Á) â«wcæ%D¿2ŽsÜ]1ÌUR7ΊaÄ”îB+ˆÔAç °­=L+Y»-†}è<"è7%^xîƒIX•* C`L õüÔB‡2KòЂÈ,Ÿñ¼®)÷eÏà£W€8_Ê¢Ñê ¬rKÐgc6iô©sN§}U•Ñ¡¶óª|×½Ï7C¬Ÿ‹»Û–víLà†õÍÒôÛ}hB¿.ª­Ð…¬Àçï‰$.°%0õC¡X³îKLå¨ÜҀߢ`ì¨jŽ¢Öñ0¬»xâü;x ùiŠT+ÂÞ‰aÂ{‰«Ó(ËZr)©&!óÔík¯jŒð" r}Ò<=©Ç¸E#ù€Ǹ2¡El%ÛáDiÂ`%ÙUu(“ À6eßQŒõ³íŽM› uz’·p`ò.Š~!Áú¨ô= &ˆ9–X3AL…­q< †ðÊÝB6¤2¢Ó«ÑÙ4÷du“A˜Ìå¯.ž\ü–›Éê}=qzzBÿÁëË÷žÞC×É"Êd`ŸvQS¹ Ü‹´¦‰òÑO;GEjn9AEŒ ô* âyŒivZ‰™9%Ê:"X0 ž1".»²­nBÍìá‡v|R¸Î3!ûk‹_°³Ísgd´ºéMˆâùP,úŠ:ƒ;8g–“™3Ô&ì܇#>Âö,lZ%ôÒg(׋GL{j2 ])V£N­œšMýÀnÿèÔwýÀ$'2L&‰73ZÈ0äã™gNäœöp€‰ÜCm› Ǥ¼{ V´Ïì¨ô~ÿÔJèƒÀ¦¢킟‚»Œ È—%ϸKõÞù´3âþqãmì1ãÈÒÁ’ÂÊ•oš6ãž±¢ aXœûÇú³ù~\fi?Ôâè`j8nˆÐÐðÙ¤ÈÇiž™*!ð;³IP­d˜g´þ××ço¹\m€¿xÁ£ÿ:‹~PÇv½ ÿŒÄxûºÉ¾G‹}¿œO<-— “9Ÿ®B/^‹9†”HóÁêX& q0Ï©†YÞ’ÿCž¢žT¤ÕÏ i ÔãÅk ž?;¤ô«¿/¤)­™¬þhH†é>xý§C®o„^M†˜Îùx¡»9î£v8æú;¨S§R¾çÃ-ØpoÞc¸™TºÒM’‰Üñz˜‰c(Í-±)ˆ:y y9@ŽVÔF"šÝ"JÓ_Žñ|AFÉðef8ÊŠÎkß#"ë|n¢ÆcFwYvGwYÒöWzÒáóxùcë²[2qOWùåd_œR ×|³ÛޏæÃï‚Sq„ëh»SsU„+PgÙì—¿àRgу:P¨^>øà“Oð·¢µR‘‰69t{[4T‘icï>Ï Oœ½%nO°ÃkªÕtC×%.ýÑF~~þm3ÚÓ:}û${wÉÈ%Üåú<}V0jíÛ4kw_õw^ÊQùè^ÚËuü b¶Á±¤Ç®ü2 Êc’Ø4`Sé=&åõuµ…£#‰éP(À׈™ü|˜jò{iÝûeÁü’ô¤Ø§Ÿšd KéÎá+¡/Çè’¦H§tP(ÐJrñ*-Æõë«i*ËÕX4šBÙcikœ¼Q©'dÙ‡ò¦OWà Kð{,´îéElÌCõuzQ BÝ¥T_§On¢äã;Qi2áR˜{ýúÅÒ½)Þ­Ê>Æ‚¥•û2¦xz(¸c]¢YüÖÒÊ}_i¨“€tËÌ“‚>½u”{à¥ø‚›! •åˆOûêÞ÷ºtzŒSµŽC¬²$•Фã5áäõÊN~¿˜ó‹js= Uù<ÊÌa5!uþӓɘž¸ ý a'÷Hñ§uê= ¼”â1¾ëìÕ˜T}ô$11°‡Ìt:3XLÞç`?ÉíÐkûÜûÈh" Ø!Á± ÒFA$´ç>å'8ÂxíÍYW3qþÍdÌû•¬Äóe1ÿd>|½ñ ™;ó|™s¡Ÿ/óþž™Ë!ÐÒ\21'ÔøµLã½ÓÛX–÷zéë ÞS¬²iaÕCÿíÉÂD*¦†êöSÅTª-ŒñÁ„¸_ Ü W3”8gC*?|žðÓÙÿ·\Ü>endstream endobj 156 0 obj << /Filter /FlateDecode /Length 2901 >> stream xœYMÛFÝóœœsö `ÛJ† û“d€]`Žã,lkÏÍ“Gê1¡H™¤<öþú­n’ÒÈÀfÉîêêêW¯^u>­²T®2ü ÿnöWÙêñêÓ•¤·«ðÏf¿º¹½úé½6«2-r«Û‡+ž!WR™´ÈÔ*Ï\*U¹ºÝ_}ÿÖ‰ÉtZ–VT-ÿÎ2+ü—u’¥™•Æ)Qí¿†JÁÇR<­U3òBø0»(ŦÛª>¼È¤ãnújDÓ=&Mý'MÔ¥ðM½ëÖ >Ö üYÀ$eÅç(²XµÛÙÀc_mkß’¢#~1äÍñ݌u×Ñ{ÉfJLÞHñÇq׿ßþûJÊ´´&_ݾ¹ºýá#¸Ín”™[¿ý™ÆüôÞ¨eË´ÐNÇ)ÿ\'VYXHÇM¿ô}ý¹×^š\‹ú³îDë?|øåšF“ÿ×a¢ÔbÌþ±¹Ù5üÝ­ïÖaUí«* Çe˸jþCü•sÄñE& ðŸÜÀÕ£‹ÅŸö2þàî|”ì2€WkuÑeír<¦ox}yâ©×iáÌòø&Õ Ë,f˜½èóÅ<×ïÖ?Aú¥öxu?Pâæ`ˆÜ­„—w‚ÆMééTš›RŸ7ŸBNžÄ-MOt’¦ÔJÄýZARy¾?d^—eátÄt ûQ*/•öIæ˜RT g—ðFΠz[}™³«÷ ÑÁ|¼ÛúáÁ÷¾ÝøŸçã],Í¡!·hˆ¢¬T ¤KDK”çÔ‚h!Ã`‰¿…Áå’%„RB=Ë(—ÿŽ©|fÎBÈJp²ŸÛÈR™ñm4 /xÄGQ󾩾ÅHCªýDq~ôý|œÄ©‘á—•9‘E‘Bž¯’‰ëq‘[4¬ I†&ŠÖV²\úÊ ”Àß)ö#gª¥Ò­Kàjf[úZÚe¼çb„ФKMçÛNE=&6-˜Ùg¥w1 Ö®ûèZ„Ûk9Háç•wÉ­ µ(À뜰Jõ_k‹)vI_œhª~Ó#¼Ç¸k”xãp“3àµÕ99£8ò=/Ä#qCŸ×ÖpP•é Â’È nãS4Ñ5ÇqòBÍ»[§ùVSy¿½ÍÁÛñS 1¤%ÆO‰ìñ+>BZ9ÍëI.ƒ›jða`‘SÂño…»¤O—T‘–˜oFðÆ0nÆ®Â"™O;߇éõ_±¯Ö ã\=evÔ‘*…ŸÇîª~ž$ô.~Qb8)ëÆù}5ÿlºÖŸ`4‰„gC¥0ª„–œ£Sw=YÚ1Óåd¸ûNÀƒÊï·6Θ"IOL]øO°÷ÕеÕ=ºCV'Ã>ªQNŒ»°ÖBg"DsCBÃ9Ì*=/Êx¥™±xŽ~ŸÚP²m)á¶Œhd’­ô•cG¿ÏN†§jð¾j$|B¸ÚÀ=ö„ùl‘êì @ób ÷wï¿‹ÔdÒÜåg{ rÌX,‡*NË›ðâyzÎxý%±§/Å‹›WëXóýðò$ì$ËÂx‰Ä0Ý- ºgñžt-9®X¿é»…ü‚PجPŠe\ÚäUãÇ ‰" ©Ü/îtæ ­_»fûPõ÷Apd „ø* ¥M@ž’ |qóúõkðÝ‚ %¿aÁ(éùGÕ-|òXZÿiòcÕ€\àËfP\÷ ¼¶³åß·Ûq)„Äk ïdRÆü4/óº:‚ž¡Ð‡»¡p%˜™½x÷–‚_’Ð ÁÏ ç…> stream xœYÝܶß§ä9}X ÇuOŠø!Š4rbÀ‰[¸FboÑ_ëVº=5+é,iís‚þï’’v-;n}€WÉáð7¿ù õvÄ|àŸÿÝÕ«d½_½]qz»ö?»zýd»úö¥Ôk[-ôz{»r3øš ›D¬³DÇ\Øõ¶^½f}µ¯óMÄ ãq"ÌþçÚZ&ì&‰…Ë’81š[jð籕Û)ô ö(#®7Q*Ò8I4{ôèÑæ—íßW8.UÙzû|Å¢(Ú\¬¶^³WÕ¾©nc®@ša»¶(ûÇÓ -qM‚LÉހРßäuJPÙÄjŸɰ /Ùpŧ֛©Ë`WJ-ö&>yͧƛIîÅôÈÏ÷†šF ÿH¿Œ›ÅN€‚Àdjf2r¹ bÿuW6›H*Ší6Q‚€éİ–„ aXíÞjžfì>ï6Ð0Ò&ŠUͬgR:Æ»24$ëÊþx\1z_ w¡—ÃÐ<ôY>[“tÒ$í§ ´ó}I{yº]ý¼r”ë>CQµ@Q)“8Sv­¥Ž%1”ÙÍößAäÿ,ÍÆ<ËfÒ^³÷‘Á>2ÃÊ Œ]>îE²¾,=ØFí}šfíýPÕÕoeG›ŽW±ÌÒuDœHùz[ÀrMKëXäý&R«XS–EM„2euÛ•Ôɪ¡ìò¡j›Þ†uò¦ àY «¦¬ÚûÞ7­ðFgMãºr8vMhƒ£S# HQ†×Âo5̯F 8äCéµìØÐNìÇ:ší´ovå%€$Õ°„OJd “S½#DR™‘hŸæÆN2 ¯?óE;ø)h'oÀÐZÅžüDbfìÇW^.l–ÀscÀb`¿nÖ ì?%4ïÜzì&ïËÂ=¶Mè·Äï½ó€+4ypÔ3åCÿø1­†\>#k$L‚³½h%ÜD mìL¬”½÷¶–µëq, Cv oÆ!¯SËÊn_Ø8,ƒaÊGZ'%6aÜ çÌ—(2Huu€ø2¾˜ü)§ux¦Ø/7•ð2D‹>,ÆÙ“gÏž Öó›ÔUìÅË˵ìH-r<-‰Žùaßv@öí¦Ïî»CÐ; v°®å(\Íp¤£›QÑþ¥Î>e@ã3`?<¯~]0Ä€Ìݨ×vw#Ò¿nRd0§ ˆINJö·¦ÊXÌ= «immرŸ–ú^€0°£ÞtÁkÁè2±qš}‘Í•ðÂÉÍÚy´3¹T Vk\Þ|I&Ǻœ#|`qN%YF¢%©qƇ“l %ÄûDrˆÃ‹ <£Ð’wû㬫40ý§1`„?FwqÏXÎ&”“¨C»°KäŸÉ¥C5‰Ð`Öð(êIr!œÝd qÐÏ™i½”šL !ˆc@øâ#€±Ü’!/•³¨à ŠE…³'% —]ºþÔõι+¡­ºôá \Œº\&Ææ†ñ /O9˜P¢Aáx€ ˜Dy š ’ñ™ ŸÙ‹[˜!‚š˜4G-žyòB´O’Óéã.¸ì½í0ÆbžŸ`ú’ÖPâuµz±j˜Ô’–@sÙ?Ns¢.ÙÀ”Yx³¼‡ã ‰gˆR>ô¨‹JˆQÛ;Ê×~¢;™øy0BP»Ï{WœZŠËàµKGÓ¼(È%ÐT†#SÖd…o&Kja_æÎAíb%\ªÍ:¼Ž¹Lm dÀ6mHöÃÆ`ƒÓv~M¨Ï+(˜üq"å’ Yø"hEgá©,hüé3â†ÇY¢ÎŒï¬J^KTu>‘HŒh ìÔä¾³$yJU™¹âŒ™;?Vþý Ÿ‚Ã'jc’£ÒpÖÈÜuI5jÉe!gÞgÝ(ËŠ|ȽUÒ“ÌéR'¾.e áI,“É .йÃþÍt ('…FŽ‘²XFùmÌQþŒ 9/L?"Õà°fÜ~Fã4†D7ÕÚX'*IÌ|A'ì“ì{Wœñý“ôÌ7dz§¯ è&àpXÒ½Q ñ' a=¨éïQ¤«àÉ•)2™w z|TˆÄEȱWq/èlßô)€=v# åÎŽ¼2Ã6uR_Sýuºà'A¿¯ó¾‹Ü•<àÝjÈ/Üa×›p¥§Ùïc­úˆã4 ÈÄg’ôšÿ²4Ç_R†k¿§‰åiÇúšMÛÁσS’}Þ\ÕÇË FWN>g—'Û¿Ú¾üçÓë ìh&;ôÿgé˜:ƒ¯žçêÖT¥eP¬…®=Ì£:¯ ºájw @]ñùûj?ÝöåWâzs9çáêÁ«yv, ˆÀžôña? éiØfOªxHJéXÅ_,ðèÄ1ƒëžÈ8±$‘J˜¼|p¼¯½)'ô|ÃJÃ}&:Oàö‹þ$xVƒÎ d©óîàò³ßudrò]'ƒ£æì»Ž‚Ü!¾ð»Ž³˜ÿ®sf‘Ï}â9/H´Ž ©PiM‘‚ËñæÿçÕ èk¡endstream endobj 158 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 8069 >> stream xœ­ytWöþcÍб¢µ(™!’ÐB„Ѓi¶éÍtcŒmY®’\dõþduÛ’»,¹ÉÛ€é@è5‰É’’MH…aÂö?ÃâPÁß´]ê0Ð?ôïíörL8ô> ÃD°ÿ"g g§ÎI››þ^ƼÌȬù¢bÉ–ì­‹sâ¢r·EÇÇl_’°cYâò¤É+«RV¿9éÙ·&¿=eê;/šþÊèacÆòÆMxý‰Ci‚AÄ#‰%Ä‹ÄRb±Œx‰XN¼L¬ ^!V£‰UÄ«Äjb 1›XKÌ!Æ눹Ä8"–xOÌ#&‘ÄëÄ|b1‘XH¼I,"&‹‰·ˆ(b2M¼Mðˆ?"‚àƒ‰!ÄPbA‰Cô!ú)Äâ"•HØ+®[Bq;96±dˆiâ»1oP˜€zæ!?ß!”þàøj“$¼î6¬»ÁÝåÁ<.›ú@…Âî¡^p0ìÿÃNs;a¿×!…ÓÜ}zI? DE¼½$·óc¤`Ø­ý‘3\tˆ,ÔL]´]"i³Àl°æ”â¦Ñ …€¹`AÓúcË.äÞwÀeǵÀ»ÿ|÷Ì—·P_7", mN <öB:H‡É¥®Ÿ¦1Ð=pA+pŒ78Úòð*ôÜ ­eÑRA6Ôðae’ éz!Åb!““’iÝɘá¬ê­'%`0ôÝ#8ö÷õY›¹5¹@Â2¤çéfo1AEi9›Á6_æNu‘¶x(8nÆuìòáÓ?´ ˆ¹: 5éØ} ]B]¡ !ðù»Áç~mþ#Ü|OB€ýΞ‚/•ìvt€½N §¡Hož9äáÊ=¦xR5<…¢g“RTB Ô$NVŽ-à0;€ *Ià2Õ^b¯s:MÀN_ä\W¤‡£/,ž Þ¦ð'Ô@cR³Ç6°ö7©jº K®…žå™QTØö ã*º;Edj:.§àRl”e¤-Ê8¹º% Fáãñ&ú Þ_ ÞpÀÁsþ>•ÀçyE$øsý7_Ô9 \f¸ö/,\J¡7I³xý6… 7)À¢‚Mפç eF|±û¨c)èL6Bà°{p?´©ëÝÏVÝo³¼AîEaéùË($U I6aò@Ïq$¢‚Ö}E¶€vC… XlN”ÒË3pì+å›—¨³Ù PïA#§¹Ê\EÃþœÓàh_Õg[e¥üœT(Â4¢wôPOÈÃK= úOÊÑ8ro’*9͆ig0y§òX-Àd¥M¤T«ÎÃg—U’W­§ê+Êý»â½ KV­Z©dL¿°Lc®À0pOì+ÿ8vx#@æƒ\S. Ö¦X÷3Ðx›l»BÈœ ÒŸ»Z¹1ZƒƒÍÔ|XÈi®,ÀÁöáçŒmÛÚâ¬ÑŽÕÿ Ö´–Pzƒó%U’ð¦C0Ç—y(‚{ÎÅì±]¿M#ÌÈç'‚d€+8ð-@¯RÑ+RWÌXsün>mt™\8j½Và7H³Îb°™¨N)(m-¶PfŽÔfTiÊ´åÆr@}öÉÞ¯.Æ_PÆD•àÅÝ÷Á¥’½‡.§MR™ÕE…Vg¡Í„™þ óÝàTç)3pØ&Žä¹åVüq{ŽÄ’=”Û©Õ™´CŸùGè =¦( _b(8ù^hðËó%?öÝ•þVG¡£ÐRlžÈ‡£ŠÂR2)ŲÁýìï$zEÆí|ZŒ ÈYñSÞ^.ô<Âm žÅч$†ýJ¾Ãî…Ö?‰ÛcÆ ¦% ÛÎ{¸ jÁø†ËJ?è8|Ìs“'Ü~xÖ¿tÑVõÔwÓ3н¹´´Òè3ø¨ßŒ™X€½.Áø«¡ìÑ”­5úXæq 4f f˜ø4}*Ù3lúFMM҆̽kÝ0nË^n‚?ðñª·¿#Ä^Ð{á±îQlýéGûžBÂ9äEp&Þ1z›Œ¬;°'pÃIÛH§¡P•cY‘GËóräÙ`P_Ô´ËoòW³ŽiªpTZ+œ'ý'öÙ/PN¶~а÷Ç:rÍyûÊáè3ÄR‡xçÖwb®ï÷Ñ/?~¶¾ó&&Ú?øª1ΟÕöRŸ\:rí»+Ó^.¥-RCö—Ef—‹)¤ÃèPK©25­Å”«Wnݽ¾~> FŠDÜ‘G>3UºJm•î¤ìd¾oŽMjÉRjæš9“_~õ$%´Ée*4¹(Y¨³©•Fµ†Fi¤¦@ã,)ªs;i»ËQh-|¬üøû“tüü¨;ï÷¤£¹Ñ€Óq›9æC-׎”¦[Šätµ¥¸ TQõ¢ÒLZÏÉÊe.?›y óüÙûLPNFÿqª°M07ÿFÍ•{¡'º¦ò²‘7HëQ˵@ssË)Ë~€Í}mHdýN\œ6A†[±ºàÀ@$g[¼u7kuêËlm´Ÿ³œ24ï$ZæZÙ™@v÷Là© †e’îHtl¬ÿ¯‘Èâ¤dXÛ˜û$¨ÚUç+w庥Ey¾$_²7É®rʰ¿Î‘è¥k¬ðyÎ,wž/¿*£%cgzKÂ>î".`¥ð£ ^OÑþ]G÷gõÖBYâV䧬OI1)éÂô” *˜ùÄçbÀDô Oº=M³…ìðë·2{‘ˆ¾ž…SaØÝa„T‚*PIÁÛ䕞v¨{Oëæ2è+òåáÃç,=~IB+ZMm ‚_ã}˜\XÀíjùÕÓö`¿ë5Iw›hú]†ÈÄ Ì´¶3]Ä“­q×[X¥²wU“ÕÀgòÈŠåÖl{ÞiôâQôÊ 4ê zƒo“Û´Üblv[±ÓË¿_…QWà¢Ò=•»n²éH ù Œ‘4©õj£F–È—Æço“ÆOF|Ùy‚41¯UÖžß¶F¬ë ßh5Ù€²¶š ¾Gˆ†Îzá_&ëqìîH¿7\¿õ+ãÝØõå7ç 6ÐHE&¤“hé¿2â_ÌII³´0PL‚VcSfszÓfWXVŧ-;¶Ñ?,Ñqâ(Šûm÷ ¾w¨îIÎÊÙœU‘ç€UX-=ƒ–žEËlù– Üj 8åK£ÕyŽ=Çc,.‹³À…¥©-³(ËžµÑ{³Ñ®4¾EcÕ8X¿”‹Ïæ9£NÁ˜³0ªxwUÛU6¹Ûd 8$³lZ£Æ¨Ueðs—e/Ï^ƒ¢øªTeš:5¿YÙ¦h‰ƒý·Ã[aC‘†• 'A†T™ –Ü\ÊêyØ+Š2bѧÌÖç'ŽM£L’%©q“3ëŠôň€wùÒ=ŠÝÒÝ&öˆ¬øˆ5="¶I›pH (Â’áÀÍ9×#¸?ÔÁ©ÿbt£Þ`ˆÔ¿5=>OcÈÅ(Zt8÷KÈQ3‰à$1\ù(Ü û‹¼_°/Øc= þÂJ³ ( 1+6oÖë5:lÆ ¤Îa°”Ôì¬(¦ý»J‚ƒ`—âƒuŠ{/^$IxErÃSÌÀíúŸn¿ÿ¯·÷$W\á…Éþ=_@ù¡p0¼Í3qÀ=ëç¯Ô7ì¬êÍ IV™f0ëPéÙ’ôôJIMmEyóÈ@ zg ZŠ^CÏ×£¸>ógȽÎ}P¿¥Ë s3êË+$/û ç;bFƒ£ér¾õCÄ›iß|¢§A!(2>Ñ@¼óQ ¦²9÷C?ïšÂKBq¸ƒ8÷uª†ãÕ>ÜysVÍY>{Ë´uãv 0ð•R!ª§ 85æ²*PO•³âÁ G\|è®ôTx*¾†|¾³Èa똜 ¢ #À°Än¨§~Í@×@øžC¢}Ðß!:Œ[%Œ†_ðŒäìô¹3ÁJAÚ_ùyñ_õ ä\‚};ãOÌÚËÈ —ÌŽÅý™¶3»>rwòcß5|æ‰5gw`d¯áqïYMVëpõð‰-Ö›Õ†#mÈ*—µg~ Þ£&Ï\ûΜéû?W`á æ¹ÈK;O\ü ~F1 ôfЃ¥7mŒz½¨@zU¾kuÓ¢zÍûO· wxƒ£jÂ÷Ü[ôÜö&Ê`/x•gæ€I¦ÑËßKMJÌÚAœ3«Žªõ{ü¹Õ©Yâ¼L£"g\\†³n p|F·£y§-œ*¤¹Ué†Ô´!ˆø[û~ïŸl?]B› ——@êç ^{P#Õí’õÖÅ6¦ÄYf-ÔÃB4bùæg±Uz÷Q÷ ŒÎæaÉ2¨ŒJa ¶®*@s[k$uÉ4÷ŠÁ€eêìýo`ßÅoö»3ö‰h†¸«WÏ#•UÜzYÁ+бT"“—nŠ5⥷imžÚ6¯›öív¨}²Ó«ñ*)¢¬”ÄšìÚ’R›ÛÅÄÇÿÁ†ze«õ(^ȪfYôû•ÚZ—m/ë.5ÙÙX ‹;ÿQj,0àJI¸Ö+‚ý¿`_"¸÷Ë‚Y<€e(´œñŸèè°Z1Pl_ÔX Òô„l9— b1EÒ`Àµy+›"¯ '_“/ïæ€ÿåö{ÿz{ñU‹ƒ§$!]#¡E}Êœs×f­­ÍBQoñµ™w ¶:N§Ýb§áÈópäeüzÈû  ”€’Ñmë¼hÄ94ê*~ÕZÔv5 48E*·ÞnÀþüçØŸcƆÑoê u…úÁ=_7 lñßòØ“ýþ4›ã«]*^¾.G"—£hàZ4 wZp­„/£¾6ƒ]gïþòÄZ”V¥p3/ÂÉðm_pJ\ÁAv{!;Üâ¶ÚuV->P“Ñdúϵ¤˜WrN‡žÅëèFf3yun‘ü4¨‘]é €&%¡E¨?ê¯ÑÈ”X6él:;mæTVÃp~NìÏâìú_‚ƒpc°i _FÓ?-[ö;:¸ýRèÃßúön–È䤦[°» '‘u^ÝJ¥I ” R>•6¬PKͰîd‚$‰^“‡!Þà3{ ½Þ#§O‚FPVgQ颜´ÌЬÚêªRc'¯Ì ,™ùzòì´Rl,êi õ ¹¸ŠÍôÿTAwþµ‚z £O‡A#o ¬8ý¤IC—7z‹‚z/ù+tÛî1ñè?«®ª§êŽýZuø¢ê.¾×, oÿ :n³3HE×xZ™«G 0Œs¢s³ãOdwÁÅÎÚ+–Á ðµr¢¯PÜ}í‰+}k†r;uzvöx ÕÊÀE$qe°´´Y÷T5y›ZªÛqéãD/½Â¬'AšYR(ô\.¢Q/4Ä W×ÒO´NC× ›´B¿~=p8hk¯¢WÛâµÛrsÍ€›ßdÝC®)Pq;Øïkn.ƒC‘Ÿ›­VЛ„+ÕOçæO‚ÇC?„›¾ ½ ð|GZ\Ô×{&½;>jƲ̲ùÑ‹–.P©ôZ £äøôëàvö¼Á¶?$Ž#4á lñæxpå"¿®¶¶¶Þÿáů¯JÁ°×>Ea¯=<£0yOCuUC­¤F Ó™€Ž~ÚìpIîv0tòðû3~Šàî†!ÁN^óã%Çuº6fíbñ”ù&K»Ä²1Ç™5“`ÍTŠÙ÷Úƒšqs)iZ”:qXæ×°ƒ+ «ýºìêT+£åÄå¤ FÀ°5ŸCâÑ'¼?íÚ¥ ÷šËüeÈ玎þÊ–1ɾìÚÚêʆ€¨RÀ¥"'<1xoBRä ﮡî­ß¯¢íØÏþúwÝ™Š‘Ô÷¯$8ëþËu—‡ý^@›«–É«úôòìš·úðªÊ­‰)²ÜtZoÐiÙ™N~‰Â.*Ê´gš)g ê¿ b`SÏ   ¤°‚I|Hro}uùä­ºjµÂO‹5yr r sʵÔS7Ó=ÂcãH¸}Í:ñ¿ý~0 ¿ æÿUp³d!ôæ40»«x©«s–F¯ÎNXKKÛ¢Ëv€7ê³EþˆÏCI?q¾<ú³Æz…ÈOgdå óíùE*ӰѬ¡ž¡û†Íè߇ þ/Ù€endstream endobj 159 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 8376 >> stream xœ­zxÕ¾ïÄ™AP4ã6è RDEŠ)RDŠô 4 ¤%¤g÷^³³×î½—$;$!4AÊ MŠì -RTŠÖëà#÷kÚëå 'VLª|£jrõ›5Sj§ò§ „Å¢3Ä+gJÞ›µjöê9kÖÎ[W8¿ôíõe/xeä¨~£ÇŒ7hü3ž}nÉàç—:lùð^|Iaý°ÙØh¬?6€ÍÅbó°§±Bl6{{{{{[€-Ä&b‹°IØl1ö6[‚MƆaobñ)Ø ØTlö6{ÍÀ^Áfb³0ö8–‡åc½±l¬V€=‰Ñ‰1Xw¬/ö Ö‹õÄÂÆcc½°G°×±G±\ŒÂÖaÓQD0Û›5ááÍ~.»¡ÛØnm9Cr.áKñ òu²¥»¦û?œòॢžO<Ôû¡àÃÝÞÕ«ß#Ø#U>üèáÜ‘¹—©"êãǾçU>>öñmy3ò¶å›{ç÷^ÞgRŸco|þÄô'®=©¦óèåôf c`¾ï;»ï_žšØ¯?e¿KýŸê¯èßÑÿÛo ˆ ,¨{:ëéæAýç=ÿŒ=œùnî,À1©ôSÂ\jë—<Кµ€äË”"‘OÙÄ\Ç©J‡Óä,hðù£ µ5*÷ñuZÐÓÿÈ/ãýu@gÖÞ|¹RÄP•"Ÿ¢¦¶:fGÁu¼Éç‹Fe>¾­Ð1õ}´.Âÿ.Ÿÿ­àþ·ê݆Kï9È2|-Ð õU«Ù!¥ì°Uì:±^T/&aÍûÎm€¹9¼Íý€›sgÓ)˜JÍOåzá°É]p~WuŽIóx^"¦ VÑ/ãb™J(iІOìcS pj‡P¡‚êGá !W"&÷Š˜ðUüó=g.ð¿·Œf¥KJ&­èb :Y"艇~!ºª?-þ ÛmÉbQÉZúîVÒ)3 [Žéä} çÿÀÎÏQà|µB" ¨Ð-p¼Ùë‹&ù6)#ÃeÀ¨s/?»ú³÷Îp8ì‹ý[8;ßê²zý€Œãqo œ %ƒqÊ®×›õ"©JÀPqa@¥ýødvÀx8 Ç7¢{3”=&óŠh*®×›ôÏá2~]My¬.Âñ(/TÇVÅVÇV+ó-FK¨#ë‰zAgÔ±YlY~Æ(S \ã•B\™0¹l/w8LŽ‚hÈC(ýü{†‚,Jå~Ý%]‹QÌý:ÝÁ»%/#]ȧjd  ß6˜›½Mœ'ÁÙyg&yI*ýaÇ›.öùáå#Ci–óUrI&È?Ý’ó òˆˆ˜"Z’úu‡¸yé²>`æ;Åó $ûÜ΃Eð!‚B‘®š²V°n½)•€u€¼½)C ~šÊ:r6veCszí¡šÔô%Մͺú4ìH{xÎý ~#½DÌñ û Ù|VÌ6“ØÈó^þóg“ÞpÑâµw¿D×á¯9–œÑ^ºóu*íJemïÊNKÂ[Ûº4º*œ¬ËŽl?À>y™ëIþýÓ°[Bé­Yå(«10ªÂyÅ…€ÔáìCÎÅpøŽ¼q ‚Ä©ƒ3f9iÛz¿>ÈV[$ÂÀg‰¸&$¨V”J w"ÎV¥à°<õ{¥Û>É£¾C•Þ›ç"Úf1=J´µÂ •Â×ûo5£J¿ø•^Œo*Ý&ÞHHüõ7HÜxâì#EEâ²u ´±3yº×¾>SŠ.ñ™}Àǯ ýAÿxßGWw¿0ÅêL†/þÜË]0Œ a÷åL!T"±–ÏP"‘_§©ÝNÂ8§D^t«8¼ Ž…} 5¾ÅŽ`ØÕ¸@¦ ý¨n¨Ý×Q)¤å_0·ƒ8`øJ–a»©˜‹Ã¹N“0wûØ€žx9ÝëC[RHˆä*¡Ô+2pžôz£Q¥OÀ¦à­2§P(ÓVÐb‚ú~Óºåñ%lçû±²Y—ÙlØëÃÝ [¶0læÊÀ†ÊàʩϮœìxk¦“žCLœ2sÖ¸§/«ï;0Üž‚ËR¹×»àãŸììZ‚v±ÿzæÜ%_ªA-ª†”èÜûö9 Ò4±¸" x'y‰H¨|µb‘¡Bo6=‹B>Ì#€Þ¤:²,¢DÂŽ ô5 fnA‹È!‹õe:ÇzšÍƒËpj?4ÎÁˆhƒ××D_$uáRúÖ#xµ\ÃÏtÔ}»½úÛ”ÔÛ©Ü6X8mÕ «áMÞ¢Ií¯¢Ù‡p‘L#øÕ(ôÎ?³©8õ^­R)–ødq†j²;Ìö¸ý02… Z£öf†2GT¾jš% µ>¦©¦€©èý‚D,œì˜\5unÉ’¢{;€%Ü‚Ç_º`¯<êÇ_2ÑZKÔ¢h‰ý ”³±x#GJ¯€™K`þ?FºÚ|; Ÿ/AOP_DêdNiõ#b']ûwœúB¯Cð‰xIÈP?òCÚú.hÌ‚oÂîð¹™¹gS0’Ê£Âiçm­Ø­FýqõFëÏ0 ¦™ gq´‚Ýç\m7p›=  |¨s®$©ö*§IÚ^Ðb‹F™‹DLåG•¨Qèu2ç*@ŽfsøÏ±¯À‹@_ÆH¼5 Ž`eX"©õI%–”Õ‰ÅÌË\ %ù>E´Ñ‹8é»°_LÁÝ©¬­]°álvº×<=!tÉ’á¨=IÃÉ~"î÷EÄN!Ãfáz G,LÖ*åb±Wgöá†yUC&èH_ ŸûåóØ×b±–` 8>xÓ9Ƕ>XEàc"ðy&>µªŽ.m\_H#Îö…Ág ΰ¯ÃZƃïÛc7þ޽§R°—0 >ß_@øû|zo8^£TŠ„!Hcý¸sâ‘âÏyþòž+ŒhÛÄ|¥²–ÖK‹øk …›öÐPG‘„µu.Ÿa'üo‘:D"©®üþÖÛÁ1*¦k]p-*¥×2¥TNT#âb(â[$:v:]p®á” #XAN°ìŒÉ<|ºÑÌZVPŽÿ¤å-x ¡'CmŽÊýµèbTWúÔ)›QYé ø2’;;ô&趈] ‹Z8ÉãÈk¢º» ´hA5Ê · €Ü à|NÇpˆÂI˜Ý×Ó8­'@¹™.o^q@³컼›’$%"z¥¿@;r'ÐþDÌBxOèƒ%ôx\¯¯{ æ[ŒS»ÇÎ+›³ú={І DÜ)§G"ŽÐð‘ŠÜkδ<•…(eÂLÙ¢©™[ªg`'žðÂ¥¯apZsð&?Ô¤†íDúF.û”wn¤»gTÐÁ4ÁícÏæÔã,Ïæ´â¨˜b o53§â:. µ2® š(Ý„€YnUEÞÎoÝ<ªõUW•§¶<ÂfÐå¶ølÞ?oý©ý'«Ç² †Ý¢â1™åä`¦×áÕ •ð>üËì)ëÚŽµÜYa/oe'ä{g› ÷‚=Àîm‡ù¶-d“f,MÎô¹J¢úFÐ@Ês¨NÈ··87X[È º ‰ 5Øc8*\¤ˆUqæ(¾=B†!Ø[~Hÿå|°Ô­ÕV*ŠÅêå àü£xÜ—¡">·14ŸÔÄ™{ès ~r,÷P£¬‹à¸t^ij füèLíX†íÉN)gúÍÊór7lc,f‹Å H n™ß°A½´²ÑŒ0V–»%‰h‘е›‘1p:¾›˜zÖA®ÁߥŸZž44EcVDtVÎd_à½BP»§¿®\T<#zðÈß"ÛôF{»uã]Y•áwüޏ}½“w öú+Û+Gš ‚ ˆt5| U…/Ú,´‰8m¯gt¸Ô9unA2_4 ’j¿:¨ô’fÂëqܾ ›:>‹Ò;!º‰Ûš£j_5!ŽŒPGÆ™>qÐøŸr‚xÂë q›¸…4W9¨‘Æ!=ŒJH[P#S ªÔªqÇ´.<ÜB¯âãWó]ª°!)¹±X£äW*øâÚ|ÆX§d)Η«Õ1Cˆù•ºN$tcaO¦žäÞÚ{m Ï¥ žÊºÎ ®ì Ç»‰Ò>Öäö7ÒNâuÔLb“Ä& ‡ár£J d¤È¯ŒÒéÙŸþ¯Ôĺ ŽˆeÚt)!PˤH_¡noDú*sútÿNgèÒòN †H4ÓÒ“qF.•zdw ’¦Òí·[øÔ2µ]cS·iÛöjó”|›Ú%Z Ô*Œ*ñ"ј7€ÕiáÔ, ×”ËkùKv”ìúy;ìq)Io†Ø¶8ÂŽ=l÷ÖÜ£‰F­m ¡]ÂôC ÁÎZ%¦5Ñmø3ì‡r|<±„Ì-`úrWê3WÊ3WÔ¿“7§øÏ!1þê`4‘,o”&b_ÒN6Ê6gÔ›Õ“ÓÕ«E`Ùï2Û>yætòdmuZÝÀEFän1­ÆÀ Ð+¤%+eÈN¼øæ…«_ÿôûx¼¾þn`ÌiigV×aØx$»+“B¼®9&t€ ä~ËÙ°HTáç#†ºÀœ®µ¯õ¯õ•ô¿~;òŽS˜ïä;JÛA;plt&œ±ü¦sççl{À4ߪÍÿï\Ç8™ðù#•¿–™ƒ—Y½t™¸0ŸÿfíÁ£Ú¨6©ÉzܘTmÐ6ɈHˆçKwÉ,倜ƒ×"Öû ‡Ó ¿K4=|lVŠkñ(ïà#G¾÷ÑÝ)®³P­m9‘âÀ²/¥M«¢+-ëõÒ¶›ua |@ƒGØÛ¼™”T9ß«l ÿŒG#®D\æ2‹Ò<¦T#¢Í˜ß©¸X‚t¥OgØwÙyÀŽT½üìØ¥Ë´ßoì(r¾K.$€Ê¬JrÒì©o[véŒî¿ØùoCÁá<ªý›“ëo+†öÌ\ã[¼Áç‹d*µG)÷/hXYÔû–ø€%w²„¯Ò-ÛlµÆ"LÚÝBpD‚µ–‚SáLÜ–í9Ðr«×ûŒþ:_1$Ñ×rH–|•¯Ød؈Œæ|nEf S!êlÜ/ àÇ •ÊJ?q6Rp>îÇã{뇲#%Û™5¼{Å4§ÿ l£!ìl߆Áž€ôà‡,Å7íq¡S€;Åe&‘DM JWÉWƒ1`æ!ÁeÒ|Œ=±³ó 8vε½ùoføØ ˜Dò¡âf6o¬fŠ]ÉŽ­+KA9‰s,³Ã ’cÏOòO(ƒ­›Úwì°~>#a6ö™ök;´åSÂ¥®PŠ6øô­yˆ¸ÞÜE€Ý`·}—µÙ¶1’hhÞnÙH?Þ¶ƒdM[¹u˜K²=0Œ¬^Ã_»Ä¸ ýµÐ"¿¦ÛjÙR·•¼o>s‘Èy íò-¤K_Åï ¶j !?¢‹0ÿ`S#qnvÅýP%¿«~öâ1¯?Søjµ:nf5 ¦`>õû#ÉZ›”a=ŒïÛÛ×i”Ú%jƒ€L†âM§Ø+ÞxyåË¿w׌4fHÄØ•}¿QÓA…3•\Ë”À°/þ›çôð7p}ÂÅgœ$kä¨JÈiÌßY#aOâ#É"ðXRºl©°RU *îÒ5+:'>t ¾{Ì!Ìm9*äåÖò¨¨àéÁ<^›XáZÈQ#g<_á, Ö0–:»Ál M¨D¥€ʽ"Iý Z),Y°°OØgÙwŽØ.zw¼c‹íCÒEÀGÙüØzn0×™ fRƒdW2î±x¬¦I‘T·Ô£ÂºzùÄwI]“²©·íÀÜ[«Mä—ÅADýÖi'¶­ˆ¬[ý®T(¤YÃ-5XM`%mÙãõš€‡Þ§À·ç뤞kŠkÊT%Š5ukÁj°Ú±6Xå]5¶‘èl{!么;;ÒV¼Ãøþ*ÇBRK,X¾äÚˆ/±¾·M¿ÿ÷zÈÏ}Ãïo§ÁÕ¯ÿÿFƒpîÿIÜÝÃB|Ÿ3Åœ‹™Ú5Îb_BÙ{¿—áP™Ò×2Bɉ`¹Î’0å°ä[|~{j"‚’Ìsû[Çû{Ž&%±Xb(£Mòúj$©½µÆIæ ¢~guëú $µg_bã1ë^ÒI€ ó>ž/u¯%¨í†ãΫùÕ Ìl –ps8sŸ*ã“-:‹hÉ:!FÖhªMÕàþþW~Æ…¹‰ò+Ôqâ?Å>B -.’»e\/ÍèàL/eæ¿# rwb»ˆfŸÅ%‚ºJ~PÛˆ”$4ð*뤵€Oò#-m‰Æ$M}Ÿo(£©_ˆà ~Gn´ÿÜq2ú öØÂ;°ö°ê#@þøå§?Ÿ[rzR3½À òø‰-‡ï_óV˜vV«¶rC6dÔa_¤{ꀰZS%4ÒÔgŠVGç }nÚ išw¤†Ù&٥߮i04ÖÅU[DM«ÀJrò[+fNÚú×Vd^Kë…bšíKð=r$“1ë½Ü¦8 qi² æq_(­\}Á¼[ò9™(‹¼ª$g!p „2õ59«¼Ù8u¹¢ó ¼Gêãeôj¼hEÒj¶ˆíÊWKÔPMêˆÒ¨1F·¥x° þœÃþLÜ›’µ¥àˆTÖ—]°åìø/œËjvq>3µmdLA…WŠo^©Ô–3l!¶ó748Âþ ÝÚ¸Í÷> ¯ì:ùÅWLXµ2ÐRÍì:Îã ‚÷xÜÀO6‰b5UBQÙØmñ¿ÁNÞn:@ücÔ·l·âáêßgv[;áèÎÜg']‚ ŸpÈøü†çüåSØvCRf{\£ÓSÙ M4Æ¢-g'µÍb_é˾Âay›Øypꟾ„äo£~`ÉyKE«ÞE`èb)ÄtŸžÛvŠöá]ºŽ7ÁTrâÜ)ã'ùHE‡ ਷›w²â¤¦B(%ã 8‡CAœå±¼ql1`g*Â"É#ÜD!fF 0N†KÂÜ`MDሠp$ áõ]¨Ã¢?’öpj+ߪ*¨•kjÂçô}”ÏÞ;´%—¦rwuvÁ8ú–Gý¾ÿÌ›Q=a5xžDöŽœüwÚÿh…Y]ÅáÚ;§4“Ô÷Ç¢'vœí®?}l¨TãÃØnóL;ºìŸ¡þþ&;Šç&>½Øqæä…÷Æ;i 1aÌ’i“§oÿTŽB€ÛQHN]l?|ìDÉl­#¦Ž]W8oJû1ímÁ_ðO( ¼ÏÇýeÂÉŸ?pm¢kð§›ðõbY½@Ù¬·.É·¬°¬°­°TëWod‹y{„qÔ—¶Ã–C¶ÃfààÏI㢰ÕÑôÇ37à#I‰d¥µ(Ÿ:a-¶[‹Í5†ûן³²¶Ḛ̂HøÜY7OPˆÊ%•{  6^œtÕJzLò Ãg³=ûªP8„Eö Ûá&YT‹„•ã.UŸ„c¾‚à@Ø{5œÁNb±A#Øîý. …¤vâGÁŽÈþm¤ç:÷ÆJ›5Vµ¦qò¤3ùÚÜãŸ1NÂÖuøÔeð Ø6'0Ï¢·èáή‚ôDa\ {eCÎ¥Z¾”k’•;éH°‚vrKUórš=Úí>º}£Ë‚´ Ýèix”g!‚N¿'ຼÿÊÞËû‚î¸ $È"(‘+Õ:%ÍÚÙa|y­œ¯è­Ð*5@ ¤>_›P4Èrˆ>Ì÷é|ê Q»†—ÌÍŒÞ7fï˜ýr—Â#sÞÙ8|—C£ç‘Ÿ]Þ ý<©Q£rRæ“"ÛwعWQ·ðDÈ ª s+7ôÛDÂÁÝdF5w±4 K +ƒ†ÿ7xý¡ :È]š‡.­ã.½ó¤ø%*¬wá°™yÔU¸'­áÙe³Þ^¯ÔI´@LJòÒ¤Ÿ„Oÿ ®‘V¶ºªb]IcÙ6š:ãH1ÛÈû£”~ãÕ2B-׎Y8zñ˜E—µHIý²pÐçuúè_OývâÆq¿Ëç!Rº®¾ÇŸ:Ùï¤Ò©ôÊ)QȤü¸6¨a®,º¼øò€֯êîdkãÕ"¹‚O« îifz0™¹Ü>àhÔQ7‹9¹ «¦·À]ÞÍþð%m:ÊPþ&¾CBS-™ñ,@±q=󯕄Uã”ûM~ÐŽÆ©µi‰9šª%ªð îäó‚|…O–ʆ2ø‰‹Mr%[ù.iÈ„Œ5¾‚K¼ÒhĈÐp$|ž‚Ù²úóADî›Iö8«B"±B.¾ûâ¼»†Ñß…OgÃÍ6ž¡Œ_Y%“¨KM  &™ÈŸ\ýtoÅÁ·ÍÌ*®3ÕíƉ;9¤¶ü×ÓË3§—ß|˜÷¯þìK„@ɽûY[0„Ðñ3/‘uŒG¬mÌÍ•„Ñ­ó+, ЛƒSþÌ»±@_Ž/ò)ãwÉiVf⪂YÐÄ“µr”m$Þ4ÜŒ'|¾H@ä^·„qêµÌдIoº‡ÑðÑ{ sÿ£o_=Kp3Ì5ê`z"ê±Q'Òɳ…/± ³óäå²2y™^¡’£´Küò0mÁfGÜÞóõ®owý­>þ1|ü8|Üá÷øQßSñ< ¥©ƒõõ¦ú;Î,sÇw΄Ã8Í!K¯æc­©Û|ΰ DÈ$(E¦\`¨‰%EËËf‚ä‚äÄÛ’6µ×´®¢©«* 6ªë~Ÿ2fíí‚ï£ÞµÞÌæ±¥…ìÀö"ÙÇ>fgÃçiû:áó|¸NaŸ jÌj AüœÇ^âpÆ{~בø†¶Æ-€´á¿*7±Á80QõÚª™ÂÒõ%+Ld=> ,‡ÝWêQ]ÕïÓµ7³Ñ (ï[¡!-äÝ=„¨Vª¸ÿáTѵÑÔÖ`Ð,€Ë¹lE£ro 34Ý€Ç5A¡V¢¡EkÊKV¨ktUv°ÎªÌw(üF? ø6{2ØÖpïAœïIü$;ýt'UãÇ÷ŸÜìÐñ#‡N€¯HøKœ~ê6«Íªˆð›cñÆ Ò <464…¼á¤³ç¯,þô3oLžË”V­¯,­ZTœ/“ 5 –¬HÔ‡hxU&ÒÀíD\©Iô÷d[Ú•ÊM?Úµ¢‹#±!éfž™ØÔ´Õñ ÿtºfÎÜ…Kj™5†)^PL ³È¯Iò}œ:sþÚêa“Æ/™´ô_ûz¦™C“8=à%üˆ¢Õ%ÊêšeMa ½«øùQð5€Øî8|{•~w-9>}I]ÝÛ¾ùÀG}®ê>‰%øCùªÖ¦X¤Ùmtëï¾O«N*OæR¯Áéé4o¥¡´ªºL¯Õj€Š¤TÒbYêµط݆ÜâÒˆ} kÚ h)èè:ÜÎP¯…ä¨ô(U9-ZYGÖá| Š=$ú ªÒ_Vð0ý`¶wBÏîö¿¾êeùendstream endobj 160 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 4280 >> stream xœW TSçº=!pÎq@-i¡¶‰³u¶­Ï¾:TE©#1L‚ÈL 2%„Ìù2‡IdF!2¨D‹¨8´bk«m­ÚÞÚÚ:µÕûì}¶þÁß»zÿ(·½÷¾ûÖzI`­$gåÿη÷·÷þ8”·Åáp†…¾öÚ¼¹s=oÆŽ|R:ì#¹0ÒÛþ2oZüÂÝѧÆPžÇäå©i+ÒWffI²£÷ĬË]Ÿ¿3!qWHèî䔳f¿6oþXŠš@m¤6Q“¨`j2BM¥B©ÍÔêm*œZAÍ¢"¨•ÔljµŠ ¤VSk¨ êjµZG­§6P|j5šò£xÔ‹œáÔR$ÅP6ŽGëõ_^g¸¯qk¸½¯øÌðÙG¯¦ï1 L»€í5ìÊðÌá÷Fl¹uäY_¡ï/£–Œêuo´qôO£ÿ:fæ˜Ì1÷_¨óÛò'çjÔoÜàPÊèBs]î()§û(_ŒT.&9ÄXa2š&QIcYSéþ²¦GÉa±–@2ÐuàœPÆÎ£¯\3hMc^›¢yZ¶ -]–t 4{Õ¥Ùleöæ(ÌãIëñ¤ÍxRQº1o§V¢“€X$EÛøˆE‡‹ûŒúÍ+ý:©Ä=Üé׃ޚúp*â (ÄñçÝîqoä‹kÞ•¦]Š_cx·Å\4ïb ZBC¹¡*دúoÝ=gZ»EˆKŸ}ˆ, tè;sÛÒß vDÀjX½†åÝ6 Žö¦Éó")M§û%'§ ù"ÍE•îþ2åÊìÈÀÌ8Y$lƒàšMGbú">Ûs.Á5}'Ž©~ÎÁùœXWDÿÒªUÀâQ¸šÿÇg;;:ÊÂ5p…ÛWš¤F)ìaSØ® MK¤Æî„8ˆ«”´e9ሶ›%ýŸ¹ž*r z»ŒR¿ h¼?ï²{ÕàFþBåÒü•sÖnÇ ¯­ >xçú"4" Q€^4ýë4›µ1%z‡LXLËÔZ™HÅäâ‘ÓVâa0^=u;ýŒú2|l—ZÏûî¿ýÈn/¬gΘ‹Ìš `Ké½Vk™ˆ×…äL©¾TžŸ’ • ‹Šô½^Z(*ÑX·tlª[ ,ï² ” 2°Ï¡Â›]h²Óíßé×1‡ eC¾þ¼_:’1ÖöϺOûk¨&E¨E¤uQ£a$9ƒ‚£©š„xî±è^U÷à >Ï)þõéƒñbô=ÃK®¯74ŒE«QÐ=d@°7Z„M"^•$Ë ;ý¯þäb÷ôsKs+¦}î¾(s¤1’ÝÄ˾½%&5,?ÈMs>ñ³-šùÓÌGþ¼›CÔ¼ü;5o’›­ ÔX€ÆÑw¬¤ªBSX¬Êƒ\6±)«]h£Û,uõÐÆžÚÚ.Þ•#T©åz9Ë»i@Þ˜£ñ5¸•Ìd«çÅ!¿ @ó]ÜîÁ%|rK÷Ƌ݌  Ö“ÌQxO³7Բȓu¡b=k›l£0 µ"_úS¸ G—×î´F[cXŠdÈ8Ç÷SêYŽ{ùB¸®K¨ðPÜ%^ #Ì_ªZ” 3GqUï﬑íÛ™–£cóè`ØP/ùR[a¬ÍVAË´Ê"µQ ZÑt´5hX^2›ŠKô¬….»Õn­Þ+°˜­V°FòIuA%¹¦­¸±Q»ìŸ[}uã©À}¢w+0c‚ ì‡×-G%kÊ„…Vm™ÐAóœûÌörÑmÌF XY^U©¶¤(7?Š„JÈ-•™¥Öl3©†çT© ª±äîzâ<Í8“\(Dê÷3âˆ]È÷¨?ï*zsp ÿÍXì;^˜Äð¾ú®¡_?‚ØëG>ú|ŸaT Åb:^^ÜLˆšÐd†×ë“Qóœî§›=ÉAÜçªÄ}¦I L-Ôèì9,.f Õ”R™~ ìsõ)8 ŸÔ5œ7. å}Ùt–ÄÜ*rÀã˜x¥¸Žiª×¥Šp*£Z¼!4ç uP u,:G®"çM8á9ï§Ÿy¿†£…ü-vÏå™Fk“y?°çO¤Lífˆø„¥bÞ<äý¥¨Œ>eh¯ê3j í…5IGuÀЖÒò #_¤¢³M»Lúze20ù^HktÝvëvÒÁëÁ˜Ñ-H¯NwjDvº­µ¾«FY“_*Bëq ³:lûZ!ú¾ÔzÑ!*7V@¹É#Á•ÿxââ4¸ƒùâ^† EÐ*«ÚªªÍtFumïÞaÑ8T f ¨•j­vöäçª vi¥º+F›]LªEaßßþõ=ä…ÇúĈQ®+’Ö‚Æ@Ttv•=§Is<®/¶Ok-¶ƒJÛZ*«ûÏ ›ËʾÖ…CÅL«¶D¥QÌuéÓã¢ÇH+åöçu5zúzš©‚Ú {Sz_uMê›fÒµ cõ¤•N]$ÈOÚ°NW “ÂÌš˜:{YÔ³¼ôŽŒšÔy©é[N'GÞï!öæ!ái4ì bûÑðªvUÕ5Oã‹™J8 7³:ä{’Ré©XºC‘],‘ç`jœöTÇytÓ3_þ]œ.äËEOe2¥ r`w]N»šµÑ÷79¿Ç/˜c6l,Ü! ‰Î„@®ÞÐÝ»íSéÇð|ÑÒþ±Ùî(‡¶Œè…PIKÁ˜§–gîˆÍØBÜÔWŠ˜o¯”ÿú?%„ÏÐdhÔ>zOÿf¨hêq÷_Ðî‘çýü’É‹ÕïîöÈn,”dªÝ›”•YP¹ë<ážò!žЇ½yÖ¼F¨5ÚjìûN"ZЇ¼ú—üïýEà¨.­±ÕŸÞ×øÆ5ÞýàWΤó@©TIAxîr<+ÏQåçkòY=-ëÉè• E~›ßfÄ+j¨+•޼gfA:eìtprÞ'ðáe>.ÚÔmqµ´´46wû=­”+äÅòmkAï„… Ô*•la¹¶Dè~‘®B„#ÚHMxRRrj”.Ø…t‹³±³©£ïbßGÇ/žº,°Ú¬ÒÈr¥M.üƒìN¤“z Be¸èá3¶;ž³½¾ž°Ç0ñ¶WWÃ~xÄ<ûÞ&Ÿ>±¯Ã% C|¦Ïæãb< .V"µ¶‰ÜOŸÑç<5óO0pÎòÉÉΆªG ô@Ïž¦$‹Ö¢1ªY\D j­:=&,-V@Ìûêõ¥Pf(õŒga 9€Þz¹¸h&Êä£ ô^›£âqØ#¼àÝàüÄ(Ñ–èŒÕ°†Å‘÷|4åÚ7×M °°¥Å6Y¶A’+¦Å„çD€¶­6Ó•Ý­ï{Àû«Ö;÷>w®]g ¡ÐTèbkÛs}B4šäôC>žöè6býyw‘f¹ø üä™g/@OíÂ#ˆyUi¨Ü÷RÅ×7ívƒÁ.,(,.„–w7¡9»­­¹á๖°Õ3²—¦ YÄ#3ØçiG¶£y÷®¶¡|§Uêwö1ZþØzß÷ +çÇ+¶I` ;ÍξͪF âã€Ú)éÈÊAn”C¢)½œPjª-%Q»¢¸T× Ú¯m4°•ôMDu"ï®gF“¨µâP‰N©W‚2 «¦ ®¡ª¦¾9«)ÝL‚`¤ÉSsµz­FCP8Ôf–‡*“bmñcNOصwWC¦È¬shˆ_5Vì‘jrµ2½ ageBK«Íw0Ǻª{…é“p×PÌj™%ãsƒ×̪ü\!<žðÌ1ËGß~¶wëšÐÂwWdd”Vç ª uºzöR<¡ òË'>B±÷ú¥ÇCÃý$6Ôÿ{zñ\øÿŽðë`i\özú³ÀCF‚í¢drÖà8©_/Z‚…höò„²^7—ÄÙêj5Äo¯‘_”»Ö»g`Òº‘žÏ»œ JOKx)¾5ñ˜ÐNwÚ›[ “íN툚$˙Ü wЕ;d3 ¡ß«ì®Žgö>ˆ‰Pçô)ÓXäB]¤Q+D8‘1ªÍZ›'5Cm•™D"+”(J´ý©dp.×öô·uUöA a‹¯cnãªJAš=ÕœQ‘X•vP˜¤ý¯¯´ üåÛ ÌŒª½À–Ðå6K™Å’M D.Ó %Z­V©†M¢²CkŽêØTâQ%î¨7<àÜ""ú%pó¥XA¤É|Òò¡³»ãðñ°§·ðt±{¥ Owß:O_‚«šÆYŽdónÓn’#¥ÏräsÛII&{¢ð¾—Ç×…‹ ˆ#iSÅÉ£ÈϱɔªL½I\ÙL6äš÷ìÇSÐ&Æ®±«mhò4ÛúÌ>.ü®˜iÑ:TEr¼ Oôqï`þ qrìÑ¡cþÛc5®ÀAfˆeq¬ú×­rÇó?¢ß,¯þßïm–Ÿ¢·h¨0TZÞ8÷í­ãe›…¸qˆ–o1ÿçW% 8õs[ÓŽo²‡Æ®ˆ“ld ´âêêÆ@°ìÄè"™<_›GÔÄ€¼þØD‰HÑž%Ü]Bñòòçý܆æñQ¦1GŒ®»¦#úkº;ˆ®TÙ …E´”9ò‚më«ç.X3?èu†H/(Ù^Ÿ¤E=úÔJâ¤gÑG«îqÊQ=ê¿Ç<ïc}š$å|‹&qÑT4™ïH`ÿý4<«Ï=(å BäÃýÞ}‡ ØIpÙNU°Oë±HìpáWÜŸ2`1ÚÀÆVhËò…*Z*E±fSÌRå*RH#îVº8gQÚˆø\²²ç··wÔôûù‡›g‰L;îy³“’VC ›í^D²Ònâƒj±!l'dé2 ‹øÖëôÉC½ÇNúâìÃó€¼X®a—ðȹØ7 3Ñí™7·uvf´$˜†Ê—qßî$:1-&ºËEH{Ñt÷u¨Km%Ž2[SE›ý\€ÆXãvVÉÀÆœÅk Õ;J!•ÙõåÂÃ4ï‡Z¦€Ìc/l dÅ‚í¡åMÉÂ.km;´³‡ÒÚâÄÉib< MM¹þãOÎÛ‡…%uÖh€ïÖž]Ö 3Z ,ïçk-Wú¿{ QxLûÜÅÓ¦ 5ÌΦ”îîææîά¦¤gE[ÿ㟌‹d׸¿[×ýGÿà\„ëĹâþ·‹Ýø+”) !›åÝOÚŸéì¬om=³¹5<:Z•/ÔèÔ³ҡ4gìM¶¤ÀtÀc³“ghe@¼E§ññ®iÞŸ~ÓúEc­FÝ Ì‘+òYuy$Á{¢‰»Âáܲ¥#‡QÔß Ã9àendstream endobj 161 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 3630 >> stream xœ]—ytS×Çeœ>Ý”„@|ÔÈCæ½fiKš¤Í:™dÒBh0a `bÀÆì¶ñ¾ÈÖ¾/OOzï'=éiµË’lÙÆØ±Á&$ÂfvN0!0LÚNÎL:§™ÓœgF9Ã\ét*ý¥£wλ÷w¿ßÏ÷{‹$÷Í’ÝÿNYŲçŸ{î¹Âùßvëó[ëÃ÷+}X|pÞ'ž+)|~ÔÖ¾¤³K©Þ®Ý±R§¯­«o|§¹¥õY‰dµdä§’w$’u’ ’Å’*Éo$ÏJ6Jª%K$e’·$Ë%/IVJÞ–¬’Ì‘<‚ß+‘J޽0«lÖGÅeÅÿ}_÷ª‰'‰+R½Ž¾½ÿÚ·Í~qöÕ†ôÏ™ûÐSmº]T7.™s{Ö 2‰-3óL¦hfóéb±O¼-³í²|~ú—Íë9ë9&4fŸ€sdׄRh²69š7çWÈi…¥ º9dNîú2yLTô\>ýûëžRñnpgGYËBå2Ê®°vBª~·mïÇc7Ž&HÏë?òJ´Ï¡c .ÒR¯X»Ö‹Eø)>Ú{¶ïdòli ëï‡~taËXEÅò¶ªrÎí¢ÿùîÞÚÅY—Äè¥bñ¿fVÉòo|2ÿ$äKÐë“/ý™Œâ£ÑoÅŸ(CŸm¾ñòÓ|©Ì]G×Ûê5‹jž~Ú€ÞÖ;DE¤Þ]¡ÀPâlöì¡ýéžÄ ž8Ú»ªÆÅ¹ÁMáQ ü\ⶪÅG†=š‡o-;øHɤøÙ !‹MžIœí>,÷¥ü=Y‰ ˆÓçég:œ*PPŒÔpÂ?Bò™À±Ðqÿ±RðzxàQÉHÄÎÛÉ’I†áÜó¿«',v—Éés8jˆèíçôj«‚QQyéw[­[„Ž‚R~„±ØWšQ%J¿ÀùçgÁ?ÎdgNôMó~^¸3Õ ƒ§µÎ&ƒTUuUlmB%“u–Àªù «ÍúBž uVôóA6‡ÒψÝ{Ý5J«´”#È»½‘_8Jïñ¯”—œ>ºÝ·´­‰TëZÙ6@ør~ID=³ËgõÌS2cÔ‚ é#†Ì®Þ܇+£Íë›[jIǾ–¡í°4OÙ·cM1MX¡—‹Ç}dt"~y/øÀÏùÜ‚S.8=DA¢2®˜µ°–î3ßËáÙébqÖY®?=ÐkìÖ6ê[ZsYqü“Ë#Ÿï¢„„¿zPPÊìë­Ilé)³ÂÿÁ÷ö†5„šT¬NJdŒZ’ƒ‰Üéò\Õk¿^ýB^.®¸?&/©-ßYÛg-Hpå“…wʇÅJM‘¸aæIÓfo£Ûwä_•;ÕN5«FŒtËàæé«Ü<’%yŸ7pçl8ÁéuB=Xò¿HɤRT@êIùz|=çŘœC²ÐGDa(~@‘€Ð>3Ms@S+‰àžÈžÐžÐˆÜà@½Ö ©ÑÙ¬p’-ùY‡Çf‚Rœ7 „Ùæ2Q.©×äwÎìÜ—ßÏé¹ÓÅ3ë°gÔl—” ÛƒæˆVP‚ TŒÊ©V¾R›ä—€6Œ]¾”=G3 dà]Íø&ÑÄ"¨yÆ\‰÷èð:£½\.!݃§÷J,Æfc³­rœz§A]&w*t¢wßþš âìð!qU¿8Ç—ñe ‹rôdÓ_™:[$J.‹ßœ’%¶¥;öÃEÈ|9äññ…^ÚÈÚì,iݪ} ݧBRÈiú”èÄôE<”²† J³Nã&UÃêÁíð8¼™ÀجÚf¬„*x;½ü¢"ìs!xŽdÆÑq1)ã¬.«ÛÖÿ±Ümf N ­7,&£Q®×wh:Õéö¤¼ã¡ñÐXüdâô¾’©l*çÁ´ØŸ]Õ‚AQtáä½ÿ1'K =IèC=¦¸Šlãt @[êÆävçÈèŽIÅ>¸G>Μñ|+ ‚kÕî#MêvÔVVj6îƲàTdª{*:›Ž~&„üD’®¨MEëu¾†¨ñŽå>ؘܹ½®­NG´«°å*ßê\É:±…Ørî`’DýdbjïG§íîioÔ¹tneÝh®¶T›Öéžy Œ`,Á¿VŠ(`uK§Åö‹Å¢i¦TÆ÷X«'E“sÌ^`‡Ã΂ƒlw·±í¬‰5z@Íw^€fÄJY£Ëè2-Ê•›«LU°•½»ð†8ïOââ¼ õ_¼²cgW[)>¿Pænp4ÙõËT‹Ê·[ìFÚh³ez‚ŠI½ãá±ÂÄå¡Ýñlf “'ýÉ~@ïuoÜIÍÑFwÍÃŒ¾UTÀsÉÑ|k¡Œq»ð¿ÈbÃdÓ¢óš@ií`Tù¿SÉ-ÕZ¦‚°ÞÅjˆš© Ò˜§øÜ$§’üñHbg­a&'YŸ/^º0_èeÂnóD¢„7J‰ófœ|œO ±Òhv”ï4JD¢Þ$å•‚àäžµPî^ À𢒴Çåò0óq°pn®0éßwHòÛ23ÿ‰Myk@¦ý‡êüÜŸŽËnûòý™LÜ×ñCÔšZZ˧ڦ¾¾zãÆ(L„÷^?”{ƒ˜!·DŒ »Jí$—æ,Uu[×;J«Íã{ÎõŸKŸ¢Âƒ±AF{Õ“‹^Ø`$97†± Ñ&˜qÄ26Ùwj Û×o4·™›m J¹²µ –¢¥û«/ŒŽÄ³}ä=Òž‹¤Å÷Ïæ|q†ÿ(ëhW´¶w,zãå%ë~ár: z£±ÞãWàCò]è«È˜CL˜À58x-}‡?N•‚“¤“°ºmv£º½©«¶AãîÍ€ŒÄˆEâœ/¯Šs}¡`›¬À³p 7Qrs‡ßþÛ<Q9l_c¬g5{Wçãݤâý°ÆšößAß÷Ꭰ1_f^‘ÉÁp º~Ew¬‡ê†ÖÖ5«ë^„W`õßòá.ŠÐÿcNEGm,ÿ,'u4.¡œ£Ä¿›ñø½ØÐ¥iæN' .²›£•µpZh‘ÝÇDÉ‘ÌqÊ-‡ÛÎ:jò/É5€Vÿ…DɵuW;fÁÐ®Æ jî9Iy0Bc½×&Åy×ø;øYÓLÝsmVlψ¯e9ÍÃ"qQdÆ)¹.~ShGšäç@þ1´pl8ëÊï&ÎO|!áy$Ða»Ýi¥]ä–ªµ5K•kN<>Ûã8੯ğ„Äû©’¯n®$K®»Î5?ÿD~¬äë+Éé?\Ÿ?Ñ×ÚòDþiné½U`E‹+23 fùŽÊô+˜Å›7¨;[Ôr]ÐåS ø`SBw zQÊØ­&Û9u'6ʺ‹ìæ"ÔMœÎ M&C{¾šAµ‡ Ä%,tEïÖªÇ;zwÂN¨Õ´©­ÝüSx½±÷Wÿ29Þ74DþVÌÊX³Ëâ67åK1„;ÚÍ6Cˆ%v˜MDö†÷P±“©3ï¿—ˆgâY@^b’í¯€æ{¢Â[z!zO=Mš4ÖýMq3žè2{Ó¯•,Ã: ¥&è »qQ¾NÆB6­ÒÖnWRººjÝFK“¾ PMºæ .#ŸÇÝiÀ¾» ˜n`ý#i¤cݹp.ÔGõJì9Nî†Q4©œ¨ ¯ŠM2¥[«ÁÀ×ÅŒ©þ¾L?Yr1eŠkÉ’›,^çü»^½ëÖóƒEâϦd^"»á†kV|ôñqqö´êhyŽ2 FÞä[‘’oŠÕ¥áòIÿõ³›7?Ý·æ5Ø9énå\.i¥n©‡Ø$‚|䀸J^©àô1æÖMj-©9¼" ›Ÿûx~n^ZÙ[yDAÅ w‚9£“ŸÐ+aúÅ« ^ܺ11ÖNjrôn\´²¡4d¹í¥qÞpvÖ¾!_'ÇÕÐ] ‘ßåKOGƒäßfÐ:Q/›´Ÿ6B9#«GVé–ìºW3ÿ>ÕMzîÊ8èäi×®¢IkáÍjÜe\).ÂR ÷ó¸øÁ©Ê\uÔÊ[x+!00}àèŸ?¬5WÐÞéRéð=Å-”ØÜÐxG_c^²6¿ ù 20 Ž~*ž”{|…RŒx)rzÐõt#k.[ƒL8™IÑӃ풲ZZëÒåýnBÎ1…¡"]·=>$ â‹Rd_ô`ôP÷ÁÒ9·%·Í¸IßZ§)úêd±8qk…¬Ü¹È‡×áà™0ÙM¤9½ÎÖÉh¨Wò¿3oP­‚êRÏöÁmLj÷ýé©è!-÷E…$D Ë Ð< Z€N—ÁV¯[VÈl‰eßKˆì£ÄÙ3 ¯€ã"X ‹û6wñó¡ï/‚ ñ[G°G¶­ä"*`y‹¢Ú™bq‡1&•a,õËÖJÎå¦ïôxW(äó ^2¶?úå¸ÇóœÅ=>ð=^S–¾×ã‘!f‹ùûûønÑÙ÷χ¿øJǃõÛ͵¶Tu~ýÝçJ=<&Àá·Ëï ô½/–Éý½|&˜ÊNûä2àæ?â6@;²Im˵«ÕoÛÚL­Ð‚o¦¾ÚáÖ 8—’§¼~Þ& 2¼CíQêhÒR£XU]p½ÙÃD¸(–>¤ü)¡§÷XïÑøñ@¿09t~Ûž5åoîÜÐU ¾'‹kŽýItÉì.¦‹3#‡Ï%Å"Ã)6L{Xý Ns(¤9ùÃâÈÂî—Hþ¥6µÊendstream endobj 162 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 8212 >> stream xœÅz tTUºnÅ]DPÊ‚ ÑsPœÁYP™dÔ‘LU©yž‡]ó<שJ%$„!LJDd°…€ â¬t·}ÛVŸÚ½‹{è÷Þ>•í×ï¾×w­»Ö¥H«ÎÉÞûÿ¿ÿû¿ï?UÂr§¤¤dè²9Ë–?0eÊö?·Hyá^YP‡—ÂáCü·Ü¹còß„nyüFûgÖÌÆÕ³ššŸm™-œ#z®u®X"Ý$Û¼@¾E±uѶªêš¥µË–ׯØÞðÈ£Ý>þ‰ ÓŸ|êλî^{ϽëïÛpÿä)ÊT?ÄáÜÎy3•3ž³˜³„3³”3‘³Œ3‰³œs'gç.ÎJÎ*ÎjÎ,΋œg8÷qÖpžå¬åÌæLæÌá<Ç™ËyžógçaÎ#œœG9 9‹8£9c8N)g§‚8·rHÅÊƹž33œsç)ÎÎÓœ‘œ97qÖqFqxœ œ›9ÏàÃs¸œ¾Éuªë®–®.ýyÈ‹C¾.ë³\ñq~è¾a/ûözÿðé7Ü{Ã[#¦øyäú‘—ntÞôèM=£¦ñæó®ÞüG¾h45ºkŒZ0Mà.w¥Æ¾U1£âÕ[Þ¾•"o#dª§ÎŽ{ì6â¶ÖÛ~¾ý‘Ûs·9~ÍxëøÏî˜}ǧÖLøj¢|õ¿®þ%gDñ»³o³=ÑW¸M: ýòîÚwÇð£'Ïð÷~ë E]ehð/‰B/‘ÆõYêÏ€'óùþŠ\4šNi£bŠwÐdr˜+,á!ÛA‚wØôƒåãönÛNG·#cÏÕCB ª¡Af­e†n`†­c†ÉÖIÖ*ÖZôP­„VhuÚ ¡2¨×ÚDKÚœ$–ñUÐÉMñÓŠ€”<Цòÿ†ºÃ{ʘ­Üèmeƒ@ïô• e¡œïô:½ÐkOi‚2H,&ht!!Qê[…´5I«™¾²e@ªÖÊdQ]ŽB3@:M%t1)µxz=¾žà1Aìã×ß¿ 7Ø‘ÑÔI­«”3V‘Yd•¯2µF.hÛ(ôÈ&‚Ù”:"§Öí¥Ýt x;}]°‹ðqío®Ý³®‚d›‰_Ã]8Ò甎âÑheáß#ÈýŠÔê̪Ôj—Åm†ÂƵ›L&«™™È4 Ìz³Z‰V Uê$¬5A}x•^ŽM:ÁƆN«B2ÒÐH´ümfy™H”ZÅ«”Ç44É£ý~§¯âß@>I§µáVJì~© T/))_’¿&°ymè#\\§ßïsû~B÷ ÙPg >à…x-HdâQ:ßêVS÷ž×lvš+d //MèS¤ÜÇܱ ÝQÙh$Mñ¼,6ðêElÜ „ZòùµœIúІ¾Q…Eç7^ÃûÍáx⪺¬´ªtREX“¡Pü9øÍ§ð'Ø·éø‚Á»|®ýì±OÇ^\úÆÝ$£V*I3T⪚߃$eh4àýø»Þš…Óg¾8“š‰ðw¡ eh$à]ÞwB9ÿéiëç¬oéCö•|}í8_Š>(,à3|Ífdn&>~/ºžŒÄü„®‡ˆO\zñf$ù³ŠošºxÜxºöƒ3<÷ýw”¼i<°.†V‡Z2Ì´ô¡É}èý¾’º ¥HU¸•ÝNtI}THN­J½D”6g0ºÚñãq7Úº«zâ0,GcÿŠÆ Þ7K.3œ5›ä-Û(ÔÊÜÃ7>8÷î»0ЛϼJy¹®œ/çκ£0áäŽzéw8·gÁ‹ص°Ôx[uï•¢ñnb¥^,IÓZЂQ zô›*TÎ RŒºø®4¥OûNè£ô8ÒŸÔe¨|£ÏƒsáULéc šÅõúZøOxÿBiaô«üZf[Ù @¢ÖIe1ö”ó@:O¦´a)µ ¸î¤;ñeÁ%púØê%rªÞÞZk!ëömM¯…s SÆÜÄŒ¹ÿÌýhȱW²Ý¨Ý¨’oÙj«×6¬[³y $fÔ¾sêOŸýðÃ[;/·A›ÃFý†Ýô¡}£x=è…Co2FNñšåMÉë)–Hah÷ÂN~Kàô;ýÐOЪ ¼Ñ¢©3“6‰El—L ô 1 4‡Á¦‡¢“U·“N¹ÉÈ{®ˆ' #厴"(‡-Ш²ÖÙv;f f8NæÆ2d6‰I ÅÅÛºÜ4í!ƒ'œ!w†ÊÓª „¼z+PÚõ*¨"ZSæ4ùÊ}Ëϰ”±ýï {ã0J´aÞ ™€ ss‘>-òÛƒ@¤.Ö¿2¢bëß‹ÃZsË«Œ'‰ŠNÚבRF0o{MF\›÷ßïo—ggxÇ®O>:óGH4¦Ut>CçI7÷èóþ–yóê7l¸¶TÇþ-A+¢¹Hµj.Y ¡'A[,’ÆŒ(¥V‚=¨® eC¥Ã¡e¬ñ½°£ÝCz»ü]î.Ì6iuX\c­‘ÌØþ‹áÿ#@´Âtûµ%Ír°š¡9h(º{Qß(tSÒœÃK¢I»ù»^†Ä¿¡¡~Ê2ÚUÝ»(°2PçTû–ànâ Tæß¹ó˜m£ÕaƒV’·Kï‘tæƒá6/8îê_8£ Ëe69Ô’6 t+ƒ ·Â¥p* 1‹H˜ë&¡)–×uÔ.óQ¬%æLЬ_³9sTKò¶·›œtmE=´‹m2ÍtÃ`ÕC=¡Hhã¹ ì^=Ї³-áóócx— 7÷ðe>EG.âÛí!i4ÒwÇ]ñò8ÈÆCY¶RL 0C“Ó„;«Z-ke¹dPÌ^ýð HPHÌBeT¦ŽÝãýóVk]cccKµf$kaŸåEªu €†–ûåäcE*6´þ}&%…aÅ]/<‹wÉ<¼¿ ½_¶äâ!:£ ©I £ÓTѪÒb q¼5cŽ“‡6Ë{8ùPü!ßÛ–×áI=•Þ{ðËÞ/\ $^?ô„ >ˆ%(Ö$‰pQi""’wÜÄfaÎY±Ÿ î&%) Åduó)ˆJJÑÍxCpœgG(¸ÛSÖtGʹ/IFw¤´½8XîT Þ5Êro}Ô”ƒ¯BߎO;>μã#OÐŽA"R0â ä/7£ ·’ÌÍX™ÄЍ†¦Žƒ‰Ì1xØtØr¸ÜÚæêÜ ·@c³h•²Z\¥¯v c‚Ó ÷ׯ3È´*¥$nHÿªJ>:]rKea?ëÊxrð|IŸYï´8-Ðõv½CG0#˜MLÅÌsë?>y8ÚvŒJ5ô:vãh`,…21CL妀کqi\X”fYQ:\àNyÓ0‰ÖÐÛÚ+=!±ü>ëS”[”QÓØß‘§ÐC̾~«g¥¨i{Í ¦-hZ;üúçùcaj¯Ÿ§g°Å;Ïlb[R?œÁª|Ļ̈~N*g9Iœ4¥(4Š¥,º]â‘S-@uº„*¯lSå 1S\!œÜH0 …wïîû¬ »@ 7&œPV;Ëê,gõ1›Ð˜2é…|E=ZžID2øR\2’WiÆÌVqÉL"qÒé/?B¯ÍcˆJÉ–~Å[.›K5hh•é´uÕ³C¢ÈE¶&yT“ÃX œþŠŸ@:ÄPÅåZfÞïC`@Ò±2Â\iÜdªœõFÖW¬øf¬‰nw>ë"ûEñÏ¢ÍÿJðHàïîÎ…1]Tí$îJ‰YLY¹J,zItž9ó«°ë{•òýk®è*Øl¬`½¼_("êÜ  (ÜðO'« Ȭª†#&#`©ì-…3´:(¦˜g‹^’0 R-#Åô?ªP?€€‡pUùjBµš½ÌOäâ/±ÀiŨµÚ•r¡^Ú²®qñB‡/è Ã0Á«ÌIÃòjÕvaewó_Ž£ë?>H¾‰nu£jÁh•*®Ë0íDa,耞¤;:…%° ÛÈI}ÊZsÕ&Éd"¾GÃÿ„†ý9OGa;‘VûÕ$óï ê-¦íÆu‡» K$¹#8廦ЖŸìGí¨sXW.°z­™y¤¡kkr,gn„L s½™I¸pVûs«2†œ5 Áô¾.G¿T°ry2…;nŽW\Â$Ã}XFmý’äÃÂz«ˆ"{Få—CbÈÌ¢ô04ßôävœ¢Ñ˜Wþä×ùËÞéÖ(å6x°t†v‡Ú‰Âï‚èÚE]û-֮řC6Â9¦3ª„O ¢NfÚæ ü·Ü# (1=EÀNèIyòÖ °¯Hº’D7 “þ6Üw0‰""¤Ø…à:‡~júUa™ØzÕG ½­h˜]/BìY[v+R¾LÛÖí5ÝrñúJ¾:ºÎ•¢‡Ðr>êþþ†ÔãÙyð“íaÆ2æzü*gʾ™†Jß}»ãÄ!Ê `€e¯=£ôÉa3´É5ª–ú-ŠÍxfÞÑßShÇi>ô»O]€Äïlgt` üR}}èi ²aT±JÿáÁ G«F#SÔI;…^Ùp,™Ö……Ôà5ÔÇz•$íËc+#¢˜ë7óA:õÒáØ!|_RÚ¶#™ë8öœ«å…ç›V4šV›ÈÒb“l;YÄ]@¬ÕÈåaMÞïûU‰0ò>4ów'O£u§½ÒQ…é§Æð¾C¥½üUÒ óáRÂÄ Ýø áß "{CˆK ‚¹!6“|XXNp ÐÇÓI4£œ 'ÛkêÂ2ýÛ/¾KÚRæåpÛ¼Ø/;¹žÐž ítK“š$ri:»[´¡¦J¯h¢¬v›Í ;Ž6dð¼_¹Gæ$tàžû¿Sæ•ú”ËêÂ$ j•YkRZåPe^YHI ·™!üṴ̀ú™k—vU‘ú€1cpÏÎÝ݉\¤Í™‡Ä‡àÈ·ö9ÔZÄðÍKÖ.™‰ÊÚ݇0ûN=u/w×l¡~3‚bÛÃ5‡ùß4dò`À»“4ºùZ‹1DTnb2‹Í-ª°úWzZ-AûY7 ýõÜ´yò‚ýÂÞþÿC4³Â7œø/‹@bPöâæ MëÚ€Œ8#ý'ôË46­]CYšÊx­6¹M"[™^ùÖ±W_­]êV‰ F!î3*}³¼^5¡xû{S/¿<æL9MÚÒcNÄoõå^ûðí±_Î>Å”Ì Æ—%tt%îeêøìÂo€£ðUSÇ Þ¥ƒz8oþ¦¥¥] •×dJ±dž—Ò¸K]B'ʆ¹HõJ.˜.˜ gpÛh5šØMîN_§·s?Rá‰éØO`ƒöýXÁhõ6%aáb‰‘ ñVHTŽ,|¡M*¶ WHKòyºÃMz¹¼síZHò.Ùì[Å€Õë+0Hxï ó;¥ˆ×Ã¥î¨ú– Tz qÏnycq–šÚÅð´ðŒþà¹óÏÂÓ°w»ïBÆmIYR»œylÛh4j@'U!•H×$3’ÕÝëâk!q7CÌa†L;¶þ uQö |„°smOÍ\þ $Ìlû à •—yµ°Eb%z«jË¥Q]²-Ò‘ñ]óù M^TääŘGX\,dçRiBŸ¥ÐBŽESf¿8Íú÷V(!xÇY=ÔéIç<¸޹B® 3Tîæ&t¸?_¡Yi“êf &;Ö7´m.|ƒ;åI¹RÿÅá¬Ö@±cØ!£õ ]\*I£ìf¹d±LdÔjûô›‹—™Ée"vp-Ñ–$…ní,ÝÜl«GCJjºM±æ—_öÚYÂñ°óOÏív·¥m™|¦-I ü^¯Ã~®Â03îØyªtI˜¥v;˜EÌ]ñ/¢_ƾ(~䊸Ù‡‹í´MPVð.›XeºÈ5jöªƒR#ÁÆèܙϡ©ø<–í–zóöfžÀ\mܫᬽóßoHšö$ü~ú‡ÎËÞ”;íN@§Óßåî$^™H,‰ýgZÉêåsÅyÛã”ÆV,‘²T'°6š,MÌSýBË“ëÖ‰š¶6c3·¨ñÍãTëÌx3îÌn´EàÛØëÙûÿÿ¿#¢ i`îè/(¿&a£Ð/€féNéŽ; >*l`$"/v«Hf*Pµ:!lš~£†Ÿ\^ÄÛ3…IüB¨$«€\nHã˜FcÅáVK±Ë"º,õ9« Ø18¦qýb#Nm@ÿ’±Ï‘ó4ôH¤½2•Ô&à +b&X…æ»°ü7óED›¥þhlURÚH+¥ÿ¿!ëÍy²4â ¼ØtÃN‚çí•]²±ºµ±‘ÔìkŒm‡5°IÕ,#ñ€vžAcƒ1ۿƇ¿«Z$ĬĬƒ1·?ê œLê[\TA‚ÙE Qc•61Óæ*sµ¹ ÷^…_ïˆwD³dW²'°oïY±bʃÓ'WÏÎì‹$‚0ƒË?ÑZ¥«¯½÷Ç- ‘à2ºõ“Uß2ölÖªªÈk;Úwɤ%—/ <6=óÐwüÝ—^úøû²¡6ŒÃ¼Ã§%\hÐi¡ÂÙJ³6²;ÞÙqfå®ÙÌ<ìR—1*)îgP—ÆfõnÞÕxHóüüÃû>ˆuøwºw1.üvÞ“¼„¬€k¤ë ägø|Óãsžx3ÖÆãïSN¯ËëôA/v}^ÿ‡_¾ö$úzW-)NìЖÞèK°#´™åª0`&2ÌPfqS|É#ÊŒƒpÝйË×¾½ˆøh.º …ca˜ÆfÞ–PùÙ˜¾‡iú^‚G{L&hªØd]T+J[ïx7ôä\m)CÿC‚^Áj,{å:þ*‹w¾µÒºÅ²ÙºÅa´³c>yP•';ÝîýžlìDädä¤+à 8˜cr²¤˜D3F¯¶x—à[6Z+-ñMìŒTT³7¹öys¡C¡—‚‡‚û±ÂÆ÷ùïë_;Ë>²CSúÐ4¼Ma 2cZf'¾^¬Ó¼TØÀL)›$:•J’Ô·Sû€n«z«~‹ÝŒéÖì”'´87::÷·òN+èa§+?ýGWfB{’Ÿcö)fZÜ1Õ õ4èESú­bºMâo¥ª€+âz">Ú—õÓî°U¼)lA¥&•ÄLêªÍ2³Ô"+·j-X' ÷?w=Ló»*â‚ZfhÙ`@ ³p(bhT)ºXx†_gmj€5D}»¨›ôƒno{»»'¹»%_O.aÞà×[a-~¿eé;=íížXKu7·×„x‘äJ’è&4/úú24w ëÊ<¾Ôf”” ‡Yv³ÿX¾i†À RÉ œ%”iÒ²Î@:”D#P þjÂÖˆE0Að§U ÉûÈnsØ+x™n'ž¾úaø<±.µôÌÙý?ž~Ezj‰V^ ðçë«Ão¬I,=ûfϧŽ(ÞX@æ˜R¾½Q·®Q…ÝöOø7ª¬ *ÀuuÓ§Ú!áa¿PeÃ¥a£˜•ß^¯o‰¬6ü‚¸^\6Í'°†ì¬ ÷qݻǺâ.'~aïäkQáK®=;ùLRÐᘮF¿ã'‰P"ˆ2èNA2Ô„Y"¡N(4j½IG.¨yvë³[žÝZ>c“Ö¤6Ù•å¸ÞZzÅyÅ'Ë?[ùɲ)¢B"‹'RŠ :DÍî}þÈs½Š°,¬Œ ÖÒ:vv{/&ÿJtSa2_i3j šÀxÎù¼X~’èßA&ÈÆu1…‹º*ø|Ðæ „Ì=ý×j¾+|¹¯1Øó3q]ü®þí± ³P_aR蔆{V–n_²}Y 4ÀVBS%Iˆ¸ÂÁï agÑз£þ˜»I&´Ampí.Á´Ó_Ÿv\ï׆4PhTJYÒ3PçÖŸ_}~}B—ÐǵK.\ÉàH6/-ø1‚jL‹VWWß{ï|f,dnÌÐ# ø~fÈ„#…ã‰Ç“j¿6H=ùVí×ð{ˆîÿ=ºúC[\ñ‡0N$4…Ͷ¨.”\I¡úuQM´à%Ôvƒj *j?žß3N‚Ìc÷02·NUéuf¨‚ê°:Á2bÆÃ± šôíßÐ4ˆf)® •­GÜ{ϼ¿ÞàÓVðÎñ:ª²þR{]å·$…É–¤. Ž¨„H¥2ik›)©£òª6E»+ÏC“¢E³]%é”F[|e<ñûBäÞLOjm«ÕW›kíì"L™Q}lŸ{_—‡ôîôt{w¶+òŠvEØÓÆÙ™L:“ùaJ%[X'ÝÜ‘lîŒ ÒáDæ|¥J«5™õdµ´J^#qïíõívÙç8DJRo³mk°’–íÖzËöäLÅл²i`’uPÂG%WÆ—aÓw…â8ؾŒ™Tv½ª^%Û vÜ`ëpâ`0ò0àìEàʳ#¢MäÂ:ðQ6œì“©Ä$d£¥`9È ‹Š éÐDäà«ú){â,‰°DR1c\题àÍ0œÆ 3û|k°Ì /Hp—_Üè…³|£Ãh5Z·(-Úfm‹N¬o4A¡ éH,è ‘ûSS=·ËãrC\¬²ÜvZ+ÈiÚ495>˜9ŒáYáIwœ†I˜Ðø5~QDP›ªMÔ¥Mn³Ç8h;ñº7á(·¡QÿjŸ))ìÃE+³éÅÕÌ}™ûð÷9· d ÒYƒ^¥CfCe*Ì%Â$Vá¶²–ýyøœ K¤`ÓBLAþÖh^~½†Õäß®”ò™Y²‡dî &`&"hVò+¤†h"ñõ64‰C~Ïøù&†XÁË«lI[º0>ãqg¼-e?Jãux+èHÛV½‹ÈÙÏ$à×ÅšÁeImT.1ÊT²aãÖšB¨ÕH)שŠêƒ=î=ñŽìµå±¹+)°t?å ŸQƒ“N8¹ÿÛwÐuŸAÄ#>_x‰L¾ûÅ{HÌ|Ì|ÍX<·géö )ƒ¤‹›è}·û–¹ïÖÏ`†1Óž]IÍ[7ݼ5z£Qµ˜)uýÚ`4àÎ{»?;‘UøåÛ-’;9X®WÆŸ)A_á^·H¬_®_*eF ts·¬b?p%Õ©”Ѝ†}°r~Þß˺ڼù,ºUFCÑ“3àÛ„“›ÒEZI-Øâžã…±ûÀaÏ£‰Ẇ1âgæ.W•TbliÉcöó‚ýŽ÷­p ›B6‰“Ø$ª¡Ve¤mÒ_½Žë îø£ Ï­½À>ñž†.ñöœ> ¿$.Ýwà鹓Ô3êIk? 6§U¹|&w‘ÐoÇÄ;> ¤ñqÙ=}Ê5J³Ò¤¦jž]¤}Ò,s´8`! ëräÀûñäé­ ¦>05þöFÊâ5 ßú`†ÈK­Õºº–;·þkÄE7þ]¬îìŠ 9‚V~zøPç5@‰endstream endobj 163 0 obj << /Filter /FlateDecode /Length 2990 >> stream xœYÏܶîyŽ=ôÒ  k\¯"ŠI¥q€êNÐØ‹^¼¬ÌhfU¤¤ñzôÞ?»ß{$%ÍX[§±#Qäããûñ½ïqZ'±X'ôßÿnëU²>¬~Z ]ûŸm½þúzõù+•®ó8ש^_ïWn…X‹TÅ6I×&ѱHóõu½zýis•¥Yœ$2ú÷æŸ×[ ç™2ëë—«ë§o¢¯¦ïõôøå=«8Ï5†“8·&³Qñáeõî&:¶‡cõîY˜!£~(ºáùö&ªOÏÅ|¼:l䥩êâyz³¹Ù°~c¡4äÿqÚöP½/ýr+œXÿQÈè}q<•Ókß’^¹ÊeÕåým¦&:j÷ûé¬Z.œµ?ÕuÑ=@e¯Ò篤žÙ4±Ñr´ÒÕÂ?>švñ#OUÈDô]ñ¡ªOu°‘`ÑòXݶµ»Éèe?Tu1Tm3ìûò~h›«WÅÝmao&s柪®z^Å^È"3¸ÊŽ?õ£ÄWåpêšÉlÛvç̉/&U]±«Êf#"ÚÛ~扡&ÿ\N^éfã7,fh³xÙ®ÂñÛÛ1BP¨X[%gÖ˃õRÄL’%Ø5Úw¥×õ®èŠºÄéúKƒGß8+–ý›'+)bi²õÕ8a‡ô3¦Ã½v±\v]ÛÍŽ9Ùò"ÿÞݸØrq;Œñ‡½Zܺ>m®Ò$Ïé4Wt¦$~q HRËVŠñ”<Ç{fHQLÈ1?Ø©V<™W#4SK*4¦Ê$È¥e‰I˜ä  56¾LË+¡§ xúô)ïBa+^¤ÔëêÐTûxŠgŠ!˜{i’É~o!ôÉd?ì›p6å¡w6íÉdV2ÑôövúDÆJ2ç³·ñÙ°˜^ÞNrŸL“}Š:Ô%t¨1ã¯o)R’ñ³¨8Ú®nk?d ÖlRGdÌûMj 'Ë{‡p ZEUdÊi ÏóÙJ£¢ÙM{µM9 Øn®(/´2*FP&© ù¼I-fÝ–ô½ó 33kØ`˜c¢®ÄÖ$JŽCPÄB‘®\B¿ò'Rb•N£Sq¤)gaˆ”Zذ‰äMú¢¾;–ÓǺ,šð&Ã%cÌûM–Áz4ÜUE³-cÖá›ëÕ+W!»Ç+j–¬áØg^QÓv±éêâ›¥ŠŠˆ¹þWù¸¸³ˆ 4¬c”^+eb•XW ¯o«ÞñX~˜Yh<ºâLÜ•5¼=thÁrÞtȉ†Â~Ì"TŠ$+Eô#rßó(¨¦Ú}AîÃîÁo§óh_(ÓV–Ö,•J•Å # Áê<‘²Ñ…<ºY_¸ ÙœÆ@M[”̉ÆžøŸIü$„å,µ"YôY×tàÜÙ¦;œê’͒牊ÆO||zDz#Þ8Œ…Ê€ù4̸ŠÃy©,Ìšìˆ=`;Ú P`w£ÄÚ%ÌtbH!‘™?Œº*£~qÁÈ(pëÒ%jª¨ÃXK1‡hm‡¶ê*hˆT޾m¼–Ò§ú¨rò-…a>¢áÞ™ÈØÈ "Ö>kÂw¬!@È9ŠÞAvâ ‚@«à“ßÒV*Ÿ<Ø73vtàsÇr#ÞD||$ºðëì|0mÒ°îw4WCý<ú3l¢ DÈè÷4*AA”\ØZèXÙ$"P Ï÷;ÙØ•Žû=#{8Tr¸Ã‘¯ü‹ @~Ô«†ˆ_Å# I­7'×KùrŸå6(Cë7Õˆ8 f  qfíÕ˜£ëYL¶C…œNÒ³A.`´Ì°ÔÇ}؃å?`ñ ÃÁ@æ±ëâÖ;æ,ûCVsúsýü%éÏÙïæœaR+¡?iRƒãÁ°?5[fÜ`œÞ¨pD{à$,ü'€F_5‡c9½{‰’*ôÔ|ÐB€ˆm†*¿«ÞW;.Œ$—Æ ü•s˜ÌEªÙÉYίNfÀ‚  › 2² À’Z1A˜3¡«~<6¡‰YW"´fK°j3="§æR’j*&•£Må¨ñf!ÃòXÊ,acÛÖwNU¢ 0Í&¼ =‘LE8 ”øÖ!6‘Ûa:0¢ðÁk­¦Ç¾ Ÿ­÷¦ËØéM¨ŒÏ“)jÍ\ Ì…2¡*ÛG,s|ØXI “1lHõå˜N:úúÅ‹á ¥£n½‹P÷"Gi<çséôºÜ޽à/ã3‹D ¢øù6§îùLË_Ïh¸þÀŒ3oƨç8l]2€¾ÜÇc«}Q÷­Ž%êýÿ—ùo¢‰[ÊÁ UC´ÊY2\ (ÖÀ|Œan^F¥Û¸ª­\Rº$äÍ’‰'¨hºý4¸ÅÆa˜ ™Âµ'ÚŽ£ ”Ía¸EüÑ·ûðI?Œšäs®þ#æDtçÕÀQ\øQ²f&r+Œ£üËL»“Øñ%€c‰0jÙ•u™BŸIÅh.]1 ß\Ò(›qìªþîèóŠéÎ"êLh¶†¥’p\8ö—- E>+9¦ÿ««¬ˆÌ¦]52ÒËÞ¶å~A0Ú;0íP$HìÇE¬#MfÎpA³û¦[’¨Ñ'«|N8}ÓÙŠëÀô#ø èVšÑCèê;J@¢YHÀ }s1ZD€ ’+•±±ÚÃÅ×e_í¸àåš› a´XcëEç  )ñ)瀽Ì`×—Ï U(Ðmç…Ê@?×ߊ—?õ>%2WʦE•áuÞ*f®fnc“ÍpÃ7V¹UÂ_7éüÌ@FÌڛ߸‹,›†ÎÖ&[8 G “ONˆjyÉç^M¥œîŽž¹‹z:âȳ$jÄè‰Ò2çw/éÎËeÿÜ@t ´â›kÿy´'¿çÑ}E÷ªîÂL~ÒN¨ƒz"×l'|Rfé4Y,¤±¡hÆ ¸`bº_DwÿYk%OLÇ6÷‡Õ)økDendstream endobj 164 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 176 >> stream xœcd`ab`ddä v ò5070q$º»äýÔeíæaîæa™ôÝXèà~þ= ÀhÈÀ ÄÀÄÈÈžüŸ±á2ß&K?†ž?ÙÊ¿OºËüéÇ[Ñtö½Ý;'ížÏñg*{wzAgIg^gnw^7Gú÷@öE}¬¯Ùöv°®g¯ì.ïªèæHH¸AþÇiöé­“êªkªšëå¢r›ƒº9øä¸˜§Ùóp20Àã8ýendstream endobj 165 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 142 >> stream xœcd`ab`ddä v ò5400q$º»øÿbíæaîæa™ô]Hèà~þ= ÀØÁÀPÂÀÄÈÈîôŸÑ×ï?ãç 7Ê~H–/(>ð½îG hXKdiVB~FM|w<‡ÊCƒï Ÿž=þ*'¼à­ýÛßÜrÂÚÚ»Ú¤ù丘§Ùóp20Á+®endstream endobj 166 0 obj << /Filter /FlateDecode /Length 205 >> stream xœ]A E÷œ‚¨µš˜ÙèÆ…Æ¨ thXH mÞ^¬ ð™?aþTÇóéìÝÌ«[Ígnï#Nã òç™T¼wfþ*:ÍKV/:<ßy2 -úª_XÝ•lèI–&3ö8m0j? ;k¡ïÿJmièìê4P¨;IZ(Ô¶IR* Ru—ä&]3Bl²yÛ!Ä6›ÛB´ÙÜîHrO“¬æ¡r¼5 7KŒègÚeÌÑœÇßšÂrO°“Žgendstream endobj 167 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1169 >> stream xœ=SkLSg>ÇS˧BQ²qÃsæs—0/cÓqFÔ#ÎU¹ˆŠÃ‰¬E Ø–rS ¥}Ë­Ü[ ¥´ ¡ö€QÐŒÍ".1ÌͱŒEwÑèöc!Küùöce?öçÍóë}nïKS’%MÓ(!))qצ‹øE  ,È—B(¡k”Äñ窹ð™•CÓK—GœÌ*Ì,Ìެs9Ê<Õ&Š¢BviuY¡áM¡Ò©½´‘®¦M ®§$”‹>¾$lI“ÄLJ¶ŠÕ²…ç0†¯ ¸cŒ^ø¿Äà-Ó¬Qo6ëLÅf è!L`4•‚Јt°sâv)Îz†#ÿeçµ <Žë <…iôsB€¬ãþ‰‘jŠA¥kƒ>g§Ùìäñ*=[g³X,M+´ÂoH»æ nÏ¡—IO6KådŽ- ’,3x4§J=!fGYJ^áe ë/ b¤@a~€eŒècXÅ]¨QQG×7Øws"Åw@~ú]§9Ô)D">$á¹¥6hjµB[ß÷dæ²ÐCwF[zø¢‚Ï!kK(ÎæÀš*(Mhv\7ê.îÉÍ>­JO™È¾¼æhãÜ™·µ äˆ¯q¸·½.s(3òª gOÊÒ9œmMƒ¼ÕãzVo·Mùú}P.è*A2ñW’!àÍÿÉÿ‡Yçñ{1Œ­w@ Ô¢n}·2µüØ9—]~T»£â䚪"eAµ©ÂPPœ è ù–ënÿŸÍðÍžZ+t É¯;B¢4ÿû⼘ù²ÙÈÚ ç +ò+õü©õç冈ô/ý÷•:Ï —GÂwîÛ eW£ih³÷B/TÍšÓÙgN¤M(æpŽœÅ+û9™xë’€å~O ob)vO1XUì4ÜkiÔ×€4yxè}’H^ «È2»Gzî[\SܤkØ­¨Qï¸Xiª¾dà’åñEñ€ò‡uÞ?ß$°Žïzz;ì>ß–~@‚_Ÿñy Þ\오8ñ»žz¬h±‡0]d+k6U—-:î‚gWkŸÂKÍÈžYÕOÁZŽc ŽÅ«¿Qåºyá²ÿÜG’ÆcI4y0$FÁá/2Ø‚b5”2ž€FûMhs´‚¡“¿âcsó@ èÌ6HΜ_Çuè¼Î7–Ôj ù$L™ªLOÏÝèíøÛ»ê5ͼíÎ^Ý::€i6WìÖR¼ZtŠ—‰“ÁüÆÇñ¸@ßxއŸ3â¨XÆâÝÑÂíëSIÔN.-VI¢`"1?$>žþíêü}î!ïÅïÀDæÉ ¶}Òóäòç.¿bЈãÄÁýEq™|ùQ6‰8·œËÚ8_WÚ_Þ WÁî§-ׂw¦ ò&áµcô-ŒLpkëw·´<ù@jÿjðÁ¢Ôi{/x«ZK,|¦4ÖA\ü±Ì¬DØŽHIÃËÚ½Ð1ÆÕYn;ÁŽZ*;ËŒÁ¯¼À}¤PVª©cëÿöÔ»ܼŒ[.Ñå….£¨bGendstream endobj 168 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1695 >> stream xœMU{PSw¾ñ&¹W… ¤w„n'÷uê«XÐí¸­eE¬Ôj© à”n×€Be ïWx„“„"i$HÈQ« Ûú˜Ù2K[ŸËŽŽÎlÛ­ŠN…=Iü±g:÷Ÿßó;çÜïœïû®ˆ¯ D"‘twÔÁÐ¥Óë@LÞdo¥|hð7¾Á„ÌûßòûfÍR”ù81íhR"EQ~™ÉÇSw„mظ9$t+MQÑT OER{©(ê JA­¤VQ>”?@ÉEµÔ¡%¦R¨ßD_­x“ö§?¡ÏÒÏÄûÄNñ3‰JrNºYêðèdÆé ±‹ºïcÏ}ڣ¾¶~øÿMDDü ÷b3®DßçOQ® Yäs.”¶Ì Ùãp`¦ãg.\´À8œËëJèJ€H†ã—§Ì;¢LVæ™$‡Ýø–Ý4–í X˜ÁÓ÷×ÊŸ`¸Ç‡›fÈ:$•ù¾Q«äåÿ^LaŽh`¯"•9k˜4vÁ˜Ð÷×]öù£›Ù«ó<¾ÏœdÌÅcqw€ÅÕ/ž"‡òMsDÌËŸ„A¢RÇšH;‡9Œkâ’kØ›7¶ ñݳ}×±dëh&_jX…/r€Û#q‹Z<G°œëºäèrŒ¶_4°n&KŸV—ipØXfº§26}SCqEY6*,0ìye3¡!ÚÛOZ_fÔ}¤/†|øÜi|™ñê.˜#\`0Yýטh}>¥2]F·¡ \0¦w,ÃÊ3U·B;Ø]}7~¸³>°IÓZ Z¨¬,ɬcS™Ã×F»0…áºýËëqPhÌu ¢5NL³a„=@Ø\åt¶s­Üƒb4s ¸ñó,°¿6“?$ñ¤2ŸÃ^©Ý¶¹¸'Â:Ù·×^>O^Ÿß„ ÊÎ#mi®2ÖTêµUzEʺP¨€x8Ö“;˜öLÀÐJGŽvâÁ«::º'Õ·1âvÿ¤òêZùÿ4˜áÜŸàYçCo»“ojéìö¬ÏͬS•dóUå¹Ç€%lõÐÙaÎÕY€ýyfæî`ñ`v'?pvÀü¥0K3˜ê4µ5(g‹ZËO7[;;Ê{“ÔJíÑDEb_¢)Ø-‘‘QÚ“ù|YIá Haå^ R[“ÝêEª8Æîž‹E®z1q¯¿tâÓnÅáîø²!ª ªú|7ô²¸ŽÌpoFN\¹048nâ¯I¢Þ‰û ~#/Ãp{Ec"¤§iÜãÝÇ-“ó»¦êÏøÅŽWÔì3\1:Á —ôƒ¿£¦Lâl¾€  ìkåÏ1Ö#ã\9ŽôôœœôtGŽËåp¸òŸ i2 lÿ®ê*ÐƒŽ­6ךOý0‹¬K+.¥03+«#sÀlƒAÑh8eljdeÞ/1h·Œˆ¾öÓÞÝ8˵[Àj-€R~ñ±´´Ôj ´óž_Èa®m9RÂ/þWZ²iãež@b²ývÈ*š»JãRÍ ŒEÄT 1„è‡þ­-ÂFLlc­I[ú!‘G+>%+Ê Û!ìñý;‘\'~÷5ÛPojü]i,j¡‰ƒ{ôEÉô{çÛ `µµµZè-…üÓ ßm@’ìü‚|@Ö€²ò—CÐÖ×64ÿçŸ(¿¦˜À-HÃ%ضáù¼`y$#´'‹–Ýö ;éÅ>iXÔj((U>ÒÇ”¾BŒÂ›´ ¬V°´)"çÙ½vÑð}l¬.or0[3›rëoß= "ëèUdMì€ðúÐÑçÞ»©¾SpÇ6þKïŒùü‹%ÇÉM. ¢…5×á'¸ÿ€é¦) ®¾}Ò }0]hÙÐ|vÂÇjö—¼u0íÈ’êÃt ʼEãEïkœŒ¹Š¨ýÛ@‚Ò­B©É.v±9®+U¨R¥ý¦G0"< _·D3ª;5È/•º‹óóÏÝ—çQùã²òåw¹…_1×§àYJCg‰ŒHv½½õÐe0uô·Œvv¥Té¡N§èüvjð*°?ž{ïÝñïÇFñ$–œÐh„äÉç=Œ´#$ÙÒš´jeEIuÕG OæÝ'(#Ø*êõ®¤=Rï~NkÑ5‚#êkkŠHìâOiê¤=KHúŒ†“‚Å]Ñ»—ågÈ=Ž%›Ûp“ç‹@ܺ¨1— õAiÑ%Hªßô= ?“óúá圠k(deŠUâíVŸ•õZH„(endstream endobj 169 0 obj << /Filter /FlateDecode /Length 271 >> stream xœ]‘;nÃ0 @wB70%»Ž\’%C‹¢íd™ :pùGÖViðÀå ¬G×>,aŸ¹ÏZ)¯º)Ý„,`Îô·Ì²yeó!¦Œåendstream endobj 170 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2371 >> stream xœ]V}puÎ’6lµå.ÚzÞ.ŠÜ0ž"w=P®£€ˆ´HJ?Ó†6mB›ô3ßÙäMÒÍwZ’&ÛÏ´éw­¥V´ V¨œ7x:HÇê‡s8Ì/õWåïcnücgvfwßßó<ïó>%‚ –¦íܹýëîÝ> ØþCü‚6…ç|4áî ´îAtÿò[–Dü}‰?úØšcùŠœ’™,G&‘åT($9ÒG¶$lˆ1IèG5KéAi!âÒE!:{Bü­(äW*:U4€gCà  žj¦ÌR¤¥òpjüÓ¢* (\¢oŠÒð ©TdæPþ¹N¢ß¹<:0i-ŒÚH]µW.²Rãïm³9tRì5çŸC9s~ŽˆÌ£ç…è+ô¾ØÑÑ:Xhƒp}™±ªädWÙÉEƒ#éM’Œ¢½Šªb&ÓS äªÝX\¡ñ€Íe·¹mtß™ö> [úµÒêmx%]³³(ç@•þv– CÙyÂU{¼¢¼$ûlÕØÌÀe‡ò ä]òö$·{´ÀhÍ&½™.^¹U^d^M´spÞ1p=ÎáFoŽr±§9 .y/cÕ±ÅM`'¬s×jj µZÊlÔIM*}¹^fÆÛ’MµG_Ùä~õØàx`ºï&}ò­F/„ÈS%ƒYOàÕÚ{ ~hòyÜ?´=²F¢¸æ@ÖXÁôíÛ_£ø.*ia zˆb‰]{F‚=×í$ë³¶XÁSOCS (²ÃÙÄU†¨R{ÀEOZ¼•ps­…Áq‹ɸ<Ö¢ Z¬ HÁˆª´ü{nha/‚–Æ,öir«K62)µE©gM.: ýö^胦÷^]Ö!Öª¦3l:Bà´²v/J޵'7ÀÌjmñF²³ÚnvƒÀÎɤX¯wË͘¬­ž rÄ{óè“yaLÈóÆYM¯…‘¨1ÜtÅáKq·šÃÐТ:bÒA-©6´tD¸¡ñìÖc’×UkŽS†JF#Ç+ÈWEJ5ï\ž=#Ú¼H«ž¬^·RLPÊà¸Ý=Íd«Ê§,/=‘xLþÖû#燂Tôb+Zfu’Iè]5· %ÆùYñ.¼,¾'¦âÏ:s9¥³¨- $y›ß±juS…W,2ŒÚ¬‡š”ÝcE§{ÛC*8ä›yÏq‹©Ž¡ª_S¦çy¢MmV–m¡“‚yáX_ˆø"†„ Ï#¥ØËºXðOǪÙÅwQSr½Ó j­V­e Mz:Æaë"ÕéЦ¨ÝZ¯w§ŸJBÝ83Œ6ß!ÐvNˆŽXÅ3ÃyÅUe²Py¯ÏßèöPv›ÕjÒjµÔm)ÚU\L«ÕÀ×'ù†²Þ럡„{UàqãŽíyO‘·•–Ê奥mòH¤­-B%Ålÿðfˆø ö°0¶cá˜ï{#XI¯Ö­ÖëCáï~Úi¬X~ç·;þÃ[XF¯s±gBªAߋٰgØÿ üÄâ_™Ž9¥ÖÛû‚vÕèöO ¡µQÙ)S.Ãð©¶.÷áÁ²1è‡ÖÖ“ÑÀ€ÿÃ_H¬J?¤Œéq¾Ó®~º ìÍž¡Ææ¶•?ÐñóË-uïjÈRç0š‹ñàº@fÉ{ÏEœ]Î.> ¦ñÞ0z–Cw¹&±qwÉò/…w—¼tW›_Û3½1£¬¦¼ˆÚ“»çIåË8õÇåÉkp x•í—Q$¹e×XÁ,̵þScïŒG/Á§pµ`¢°}ªwr®’xÞ(®7ªÍr~Ϋ,Öæ0{! nðIôÊÃ+ùiû¤2O•í8­oZ‹iKÙ„=ƒÐlíö ²Rk¶-C¾¹,//s[án _ΟºÂÛ’÷Ö%äàn\E©(R¦ú¥»xN³j}9G [Ÿ¸æ…ç‡Å¦:^m=©jÒ6w;Ú¢.Ê3`P¾^ü’ùª^=ÍSE :2}$w"Úì Qí£¿pµòUÅžÃ<:µ¿¿¹±~›Ûîçgü[L9ß´õ£­ãѶ‘€ÙÈ÷×H68=Q.Òî6u¾‘žUp„Úš!¯-l°{}gÙ€£Ãwú¾€B-oÕatwŠ@sg„(K£xQ1^£= Û d.‰çˆ×Ð d( 9Àfh¢K¯ÂGÐï9Ïy'H$ù ¯­”4¾):ùpäPQ^y6ÅZŸËÖèrPg>›âC‹œ•àe™xYÎ:]íÏâ(OêüÝ®®AÕ46ÿY>µ:OtŶp37¯·#ŸÎ#ý5a,Í‹5ÓÇ>ØoÀk5›6­_¯_ Rrç&ÑJ¤ýÍ¡U(uíwx9^*«sUv÷†»[û¥PC}zÅröò>,Î3ì¯ÜHc ¾!ÆKà¶§³­|ë=2y&: $"l8®*m>×þ{Á¢Ÿ¦ˆ¡iÔuIkæ¥ùS•"ü{,Äðý©ç_ù݇RÐ2´6ïHÇh\†È¸Úíû{ÿyzô/šøô¥k»ôPÕÉ~:/=³<xªþ€Ù(šåˆÑÔ7#ŒŒ1â¢Wc¯ÅýXõt ¿F¡§ÐRPøþ­8p)t}äJç™ÁNyƱc÷Ý~ùZ["VgW>—ŸV´5ÿÀQ ‹+#ߌ:¦:þÁùS·ð,G|ó’¶ OÞ›†itè¬ÝÎ/E—3Ôâry^Œl™…èo 77yNƒ‡´3n-c±è´ÔŽ× jù_†Ã5sØÆí,m³ƒ-úüsô8Úè2¦¯ß‚7(4ÔALHqàûÉ>Û¼o£ŠI”Ðy.<² kð øEœv0‹N¢î‹{>”˜ ü ‚éŸendstream endobj 171 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 186 >> stream xœcd`ab`ddä v ò5030q$º»ôþÔcíæaîæa™ôÝVèà~þ= ÀhÈÀ ÄÀÄÈÈžûŸqÁ¾ÿLIßú7••ýÔ-ú¾ô¡¸ð†ï¼?Þ‰&³èÞ;iÏŽ?Ù»ÓóºK:s:³»sº9„ ’Ÿ° oØÝÇú=˜M¸`oëföòî⮲nŽø´ ëågŸÕ2©¶²®º©F."Û¯% ›ƒOŽ‹yš='‰;=Áendstream endobj 172 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 3024 >> stream xœ•V tSU~¥$÷YûŒ  ï‰3*Kg\õ(`A¶Ö ¶”½´@¡I“®IÚ¦Išõ%7ÍÖ-)-$ÝÒ%]hk[ @("‚"Z¬0:ÅÑuDEoœ×9ÌMÃègΙ3モsrÞþåû¿ÿ¿_1yµyͦøØ§ccCæB.õïKJâÁ©‘pêd×ýÓ^F3gÍ8=“=1in^~|OÚÆÂôø½ ûög8˜µh A¼L$›‰W‰$"™H!V/‹‰mD±„XM,%Ö/k‰uÄz"˜FÌ „84ODd„lÒÂIÚÈÈÈ¿M6Lþ/™_Ôd$Ùµ(Ê;åè=î91Õ>õæ´˜;i÷ÓïLJxˆ°·ªeÁX4"ßY=†²Æb¨¾Þà*AæaÐâ7íd¸–cÙJSù™€ê»`ãÝæSùYÈ€8Ïv”AÁèÐ/ÏÕl}™æŠÁlVBËùaû‹aû ؾ/ ’l[ƒ°t·ålqï€ ð…Ì‚–/…ûYΈ¢ m[ðAD˧èÄÍHd np@=ïiÈ=DrsÐÌe E}†b`ÞmNHs 8‡–[*`<í¸ÒßÓÜØíî†ä·O=üª9aß.&;+½8®„¯œÖ\7{ Ûì!§ß‰¨ûñ—Ú'½µv4†êî~´¶²;~)<Òýº‡ø|*û*®¤%4PmQCR$uàzžW{¾ù„.-5¨ Š”ÖÕ7>ÒØ¿Ç»Sbò Mu[no5ñ¦—iýÁ…Ñg¦M<C}ñ—A»¤§¤’׿lA“0^ØÖŸT÷Jw¯Ž‘#ï»_»p2+ÎEë¬Û^UES·œ§sÎg ÜèÒjó †6ó•Ž’ÊB»Ò¦,+†dÜ|Ùáë%¸Ýþà;­6y4åõa^QÙ5 ÖéeÔ§{cûb{c+Â2ÖÊBÉ‹Á¤g ÊÂü”¬5k¡–8UÎC®šJØD6Êkós åùIÃÒþëï]òÓÍoÿ~à‡¡ïf×özO\‚$å j8å­âSÞG-™\¡V苘8îq]‘¾HW4[Û nÐ4,GñB¶ÜäÂq›w‚#aXÞ"œÄØ\<ïè(bÄmÑ7c¨+ÁÈàC¹NS å¤ôˆ¢Ýïiö¾÷¤'ÁN«ùÜ}ór÷q3n/DÔ;Wº®ø™2—³;¯ÀtUØd…j:w÷.i $ç§|}‹¡ºo´#>"ý=f¥w!òRÇÄþý‰iFvOC M4£ º'šÑnÜ; Ìx!X÷Š!•¦x^¶ñ~äSŠÐ%4»6•¿Ua­„Œ5huÊ+ååòÙcÜÚk\üUn-I)*‡¬ÎR^§û]´áýл¾Üënpx­ãƒB¨·j¡ŽÜwÐISƒj•µtn8Ê(Þøû[ù¨ múƒ"G·Óê‚N&X zŽŽêj ¬¤ÜJP5Fc‘&G¸Ž{z5·l=·ÜP¬-6Ë +Ž%¡9›Ñü[Ú(4¸õ•JøkæwÞD£‘èÃPéU §ÉœÈpi £k§w $¹ï1NÀÍønš><ìëëb6´/½b•e;ÎàиYàð÷ÇcG*}/„'òÓlF›Éj 91HY¾cËÊäóWÕ´¹ÆRc®Á9DÎmãO‡ØŠt×uÄPµ8 *‰wpl4×±B—¹ÌŒ÷‚¸ÍÆ]4%ÆàÂ-‡uØýŠëír+n=”ƒ¾”®W&£bnTؼ¯yó>’—º\*Ï\¿Ún ±/x\qöÓT-&_/©ùTí:L_·İŽ_ÆÉ GåáQµŠ2^˜™¥”ÖŒžòG )¨P€Føn§«ú¤r$£›ÉèÚZ‹yÆEqÄï¹û9þŸ¹(4ÿÚã£^Æj³Ú ,×»t V¤ÖÒ¹{¶ælƒÉ0ÅŸ3$ëeáimTž«|ã|KmEã0¼’*_´ª¡ºL q®°P˜@±hŠË…(,úPžïå™r7ø²Ì"ºä®æ¹+ò¯N€#iùö>½‹¦¸ŸƒË‡?½VQif+h¥NW‹Iª/ï°¼©¥¶¾a(Ù—¶dåÚtxcs©­hÍå±V¤j­–G·œÏ»Ž^þ †úMó vk·§ÁíäChyþÕÐâÆÛh7ûðoé'ùé¹m]ŒX«‡+Êì°RïdU­F?$o|>üEKika=ÃÚ è =ç½í´AoÒA-YTSR[çvפG²2Ò 4k6_1&¨uéí$õ½["-Í}fé–E¢jQ}.c39LX:XÔËJVmVCÜçQ4‰HÑÃꛥÌ6ç#õÇè1þ5ø‰¡ê%Ò`úv±T›Y’a:7À…MºËØõÄ ªÀ¹ºË×.¶%¯M”¼º>'§Ê[HaëÙFòß”*ž¬FQ6V C½¡©©íMXªŽãLôV=&ë±%6ð)%îÇPX³*C\úšuÂ>¬Y•&ì@*±u2( À6K[‰?ÿxrÍ6˜_”ä&ZÐ_…˜¿™Îl5¢Ð$¹W¦G`0¬%Û © ×xWKN Nèž³¢¸HrË:˜ Xÿæ£A–©0æ’Ù>i{G}s Mš ü"šêcY ;ÏmÁã¿Òì’ÐCõÿWÙ.ÃûÃÈBtþ Á0zü_Ÿ;´=æ”?C0a†@‚ ÿÿ¶/Y’ÌϰÝP¶æ l© ÉüYyñ˜NÚ+qõ‰0®:Pð/ÕÂ{A†ÎÉ£?G3%-1ÔÇèåC¸^¶qÛ6£É`€z|WZõN“ÖÂÆî꺦ÞÚSpˆ<¦º˜@‹Œ…PBŠšò1ZWj ÇYUA†údá–PÃèAùŸØzÃØ‡±¥§DV½05Š þ cêQendstream endobj 173 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 685 >> stream xœ5‘]HSaÇÏt;çR¶Ã0œ÷B¬›.&Þ˜¡£”hD]83I¤´C½X;ÛÙVn¦[~ìkN݇;zÎÚæÔEX0\: ̈uaƒ)ƒè¢‹®ÞS'¨™ô\üáçáÿƒŸ “a2™¬Dº¹YS£Ñì.‡à 8'Š XZ KåþŸuÊ7_È”a»#7²M¦Ç.b§°jLQxÇl@Fȸ¢¶?Eíÿ—ž\;+â›çß*Pk}¾œšG,ú¥Z$¢.¾‡–Jp‹ÅidÃýq@Å?H«58uÓä°[­á¾( B¾qO8|Æà`„äï„§Ë ïÑÕH\A¢hoIÄ>ñò\ð†NßÝÞNï5s¬¨Èy,J*+*D™ªBÚ¨@Š‹LÆ¢Ž€Tâ”àrz\jÆng•5 ®ZÀgàDë”1Y›<>W¼, %!À—ád:ü4ùiîËÃmï †!Y¸ülA°‡šÊºœn—º78îš™È` ìQ o!7Rêrʵ°ãTž1ÃY€ZøM»Z´Ù  ’4à Þ4Ÿˆ /¼ïötF:¦Ò:­½íúÙÙlök䉟NùRÞ$ÿKifÑãêÌ)·óèd«E:Qp“ÙŸ©~3FÂl0Y¦í1¿ßýà3>ÇÝ~HƸÀ;B`DW·ð•u[#¸BÀ&¯þu/IÝ †FCêõ¥Õì¼uÂÊÚ\=ÀÝ?bê‡$•1.ÅÁ{¦­ºH*ý<žÚLFÄÑWGhI‡3å&nàø!uªP'œ‡ƒäÚw{UGw×µ>À 2î[|z_q@[Z‚aB/endstream endobj 174 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 272 >> stream xœúþCMMI8‹øøøM‹ ‹ ’÷¿¼¹nOÃøˆù§ø§øÐÓ÷\÷8Žš•±Žš™Á‹Œ¢¬¬¼º·Î‹¯ v\TaûxZ~j‹…‹~Rºo¶í´÷ ˜•ƒŽ„‰„ˆs9ade‹{ƒ•¢¢“¡•¤š±·÷‹ÃÖW¯C:WZen„Â_«X‹g‹rt{ls\Y‹‰‚’‡“˜Œ¥’—¼Æµ‹¥‘ruy†xƒj‰ƒ|P‡}fû*‡|…r‹‡tžƒ˜š——’Ž‘“­  7Ÿ ùRnrendstream endobj 175 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 104 >> stream xœcd`ab`dddsö Ž´±Ä»»–~_ÊÚÍÃÜÍÃÒýFhŸànþ ÀĢY4tðý<÷½|'㓟ÒÌ?ý¿—‹Î^ؽhQiwµüŸ‹lÕ¥Ý%% »gËó10D6 Íendstream endobj 176 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 150 >> stream xœcd`ab`ddduö ²1$º»ÿÔeíæaîæa™ô]ZhŸànþ ÀhÈÀ ÄÀÄÈÈâÿ£ƒïÇòî5?V¯Ù>Ÿñ{ý-æïç~ Š.ëì)KJ+ÖéæÈb_Ö}°ûè2Ž?SÙÓ:êuä2²Ø¶ô=ìÞ„º·tìåQ^“Á®Ó1}ƒ<Ÿ‹ù|N— 2:endstream endobj 177 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1018 >> stream xœe’kLSwÀïí…öb°"xdÛ휋0²E&DdÓtqÉ.øŠ¸ ¯òE Ô™Ò¨ãrŠÆ"TšZ^¥„E “0`‚ƒa†WB6c’¹ˆì´þG2àëΧ“óáœß9¿CSn"Цiwyôé°­ÄÔ.‡+Ü<ðtÓ¿µxÏìÚÕãEm…Çá°ð#‘Á…P”/åGùSïP<µ›ò¦|¨=ÔŽÍN”u—Bºî¥‰(EÔÅÈ»³DêW·:9ËüŠÍJü…Æ— á<‹úéÎÇíö1h†®bSvŽ ²Øœš¼æf£Éú(¡?|HˆÉ U(DJ×—Ñ}öÿI<"¾9s)ÇwÉî<$Yó»5ÍÅ}0®>š™ïmù.¥7'ë NCBv’J‘qõ°[0µÎÁ¥*‰+Œ³Õù7WQeÐȃ8 u©·ÏÞô%5lšXAÒÝÛÅe†ŠñûåwÀ,f‰3ÎEç+‰/9ö= ¶â?AO5ß%<ÓõüÁÀö”V³¹îNüÌ â7ÛÙç€ vu”|±.ͨæùú†_«ãà–0(‰F1ú¬- 5ž4ÛÎk˦‚r–„­pW Ê&°³£OíS³¾8´ï’ º;7xù ß;Ú¨éûbü…_üôÀÑáÅéÁ_¦Úx)>”`ç õÐ`VV¶$Öª@•S™ë#’ÍU›ÁÜ ÙF X“ 9*3T˶n`q±ºÿÚ^0ÎjœâEÚ¹øÉÌÞè®`‰H£\ĄԚ¦dDCƸx8Õ¤^,†E˜†§ðÌ0X;7Vû# @º1ö~œN¡pŽk£ÔÁ_æ%nK…gCG÷¦Týƒ¸¼¸&A§äOF—^6Ub†q´°ÿê%é  à“SÅFîºm‡@ï’ºÒ>Ï}É’¨nÛâ†%\]_î G×±x•q–áW\š¸$¯(F[T|ó3(ØD¿Y¶YFÓÿ ‹;÷N“=Ä+,ôÀ¹·*ÌÖšã ÛY¾å·'u`_õG >‘‘*#7Éõ¢ë €Òß,Þþ“Idp¯%¯­ôÒkTþÃ`#þÎÍŽO¼ä)±‰!•à 2GYeÔ²­ªúL¥òÚåOÖNáN”½\~5{r–ˆêù73ð˜ & aÇE¤Õ]mn1mºT×f–ñ¶î‰J;°=£y¡ ñW2eéÉJá|IŽ À­RV( îALÊïp 3yzPÔ¨Îæendstream endobj 178 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 212 >> stream xœcd`ab`dddwö 641%º»*üôbíæaîæa™ô=Lè°à>þ] ÀäÁÀ Ä`ÉÀÌÈÈâÕò£ƒï§^÷‚ïÞ‡Íg\þãóÞŸ^¢Æl¿gþõb½Êvã{ë÷íl×'°>gûô}†èï¶3ß=[õ`ÒɶÞÚIE‹<9À¦üTœÏ8ó§óÖL¢ß[¿ßaÕfûð{æï°ï3Y•Ù¾Oþ}ç÷Â?L¬¯Ù¾ç|?ö½è÷1ÖÏl|r\,æóy8Ï9SCendstream endobj 179 0 obj << /Filter /FlateDecode /Length 183 >> stream xœ]O;à Û97 ¤¨bˆXÒ¥C«ªí<"†"dèíË'éÐÁHÆö{~d¼^®Î&LÑ«$l¬ÓV¿Ex‚Ù:D{¬­J;«¯Zd@d¼ÉðþÀÙ¦ñ»\€<{Êëm!å5¬A*ˆÒÍ€†®ƒ1ÓkÉìÎSv“È”Š ÃÍ9S–ÖT]hVXSy~Œ){J㣠V[ŒàR=«Ö.m­ƒßåÁ‡’Âè q^fendstream endobj 180 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1206 >> stream xœmS{LSw¾?ZÊU¡N]—k«(,fË"Yt"3{e‘˜‘¹ 3gK»–ÊD„RªZ(¯ööô¥ÀJ5Ç43q:cÆQ·2³u!j¢Éâ3Q3ã3#ž[Î5ÛEÙÄeÿïw¾œïœïœãÔc,ëÒw7®˜ õ Œ× ™[OdB¶ ²Õ!sx.ŽÎÁý³±ï9N˘Vx©xýæÏm]ñýGOÖm–šjK¥ÝTeµ>¶*ë–ÇÈd3~ºÕbÿ'9ÿ/ýöÒ“¸¾aÛ6£½j{¹ª¾¶Úèœ.ôŒŽÃ²Ón©1×WÕX«-OYöC{í4¾ýil¯å8N;wÞ󺼥›8–ý抷 9æe>&2?`AbaÖźY„õ°(7[q‹SsNî6—­b›™;CaÍËW•ª¾RÏRWJ>mÚ.Ø -Ò—¶äÊòŸžfèÿ–(ìÑk¥ œ AÝ©ìÿås*©P ¶©ý—¬»bÄ×ì·ZÀmÀø/øfãühTi!È÷¶·iãûMn}>嬧 z ¼!*Ç´¶·yì=À‡{&·=]¢åœ OË?*§”gÃrZ€k=ýëußÙ.¶yƒ¾°Ïpü£±5ÇèÕ}+¢Ëà(hͯ[n¡ÅŠ7}ØÚ "ˆ|[DìHþë×ßÇœ1,¬çµx]¾“F‰üoU˜/_Ñ5‚#1{w륱¬8$ °c—^›þKH/IšÛ sU*<Bç€ð·ðæ,M,8K6T‘‹É4à w*vøþ8ðqå|•á;¢º.™^”¾÷§;ùX4<)<Zai¦‚uƒÝ3Ó\‘.áÉ™ò®•QD½×Gó¨ €Ê)—v¯¦ÑJ™óU;È äQú ´tCøéMKÕ“µ/Õùû:À|™¦¡\ËüÔZGAÃF9F i‚¶ÓOíOÌòôÀ@\Ñ êÃ!œ‡÷°sq÷5="q¡ƒ 4zøéÝO)éåK"1œ¨¾·m¤B7£©i·Kù ø¦6ð(*Ÿ; xOÞuQ¾xTÄ»ºaPŸÔ$ }¼V?SíÜž=ƒãþìóÎJendstream endobj 181 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1037 >> stream xœ5“oLwÇï(”›#È.±¾¸ËAÍfjÜĘaÍXÈØš¨‚ˆ)”þ½þ¿Þswm¯ô åO-*…M@fÜ`Ã8Í\Ü^,.slÙ}³e{ñkw¼Xɲ'y’çÕ÷Éóý|ËÎÂpÏ­¬=ñVYéÖ¸ôiKº!òT—-ý³Rø¸`eûçùØVå^­îê¾XߎauX V5`ǰX-FdT°lì ^ŽßÎz5+¤úPõCŠÕ¤BL<µ7Ž£¬u4°®JQ’|^·v@ÉWH¥H))þ¶ö)ÊG$*B»(%¨ÄȦæä÷_L ÕôWôìƒÅ©y –çë.è‹/¿CwœxÿÜ 4érH¢ûI4ó1ž®™U¥ßD6’Ä~à Ù,ÃqÝê]…ºT£ìBѨÛA”‚b˜Òk(‘ó›zU2é\œÙÙAƒÏç–°…!(‹ÂˆŸúéxQ °× l›2Tôå@”« .4#ñ3 Ej„_©Òù¬ì5šópŽ-üÞ?"Pc¨ZœpCh7[ÔF;ôY%ˆÝ§ƒ—×L+;7gœ­nçqК0ØúaˆN]SÇ€ç¥(¡Ib®£µ'Ñ8žÚó‹ ÉhäÅ;ˆü€˜åÃ^aí7LŒ$#óË5rÛ±–ÓzÅÜmmƒèí6]14ZëÀGØÃäùx€Y]J1Œ‰5xMt…r×çæ<Àj™96%Ý ”mdˆi“¨2†£ï«Ð`ª˜ÜPË0:à}X=‹vû# @@{ݰwÙ{Ì^ªIÙŸsPmüÿ”ŸÔ•Ê-Îë5E{z¦qùÏ/Ñž@Ø .p}NªïlcÅ{@è`|H‚!)AkR˜8ÒÅÑáLRÔkÈ3§BNd"§à‘¸8úd¾‰ø¬yþí"å•¥ºlñàsôÒÓ?¢§ìôrœÝIÝ»Ïk¢†yÙ"ë¡…(=²k_EÅͿǓ¢LÀ ²Ü6Ÿ/cÌ)å¢Ïű‹ÝoPâ…pˆ’&¦Ãƒ³ ÍË@ B¤B;Qá ×Bç4Ý•´‰¯% ö~Ð5NÃñó¿o> stream xœcd`ab`ddä v 1400q$º»¨ÿdbíæaîæa™ô]Rèà~þ= À¨ÎÀÁÀÄÈÈîùŸ‰ç>˜üþ±ìû®rÆï¿~2‰Ftöû¶'´'µ%¶'u5u6t7rTM®^"·ª¯cõ”å˾óHLX8yqï|Ž>öEUóJäøä¸˜§Ùóp20C".ãendstream endobj 183 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 105 >> stream xœcd`ab`dddsö Ž4±Ä»».ù¾œµ›‡¹›‡¥û­Ð>ÁÝü;@€ˆ—1012²hýèàû%ð½lãw†ŸÌ?k¾—‰Î^ܽxIIw•üŸlÕÅÝÅE‹ºçÈó10U ·endstream endobj 184 0 obj << /Filter /FlateDecode /Length 2424 >> stream xœíY[oÜÆ.ú¸? @Ñ>ñC‡®—æÜg”¸( ¤q ×@}ð&(µKILv—2É•Týïýf†×%KNЧJËËœ3ç~¾3ü¥ R÷ßþ®w‹4ºX|\Pÿ4jÖ»èõéâå{."›XÅTtz¾4¢L$&e‘NUB™Nw‹$Ûoâ%ç·Šß 4±äÕñ.FEÒ°€aá¯îˆ¤&^©\¶“ò"žã.ÉŒL¢™¡<]92fõŠ|}ºød ±^ÃÂà~ƒ¸ÿfÁŒÖ‰2‘2š'”F»HtbTÿd»øîÞ옚½Í°L´c Ëp#\v6IR°”·ÁöÛ°b¢—I˜|¬Épeìƒ&›¦…7íîÔ±ªO‹O‰B)\m#•hnöÐ:ݼ8&¡ÆMá, ssa@²òdsƒebKM)kë„kjLDy"57Í<Áؽ¹01 êRšÞos¿†¬ž1 B9㔓l"²vƵ^¥ 272-œþóiq¬½|— -â© â…-åÿûÂv„³RîðÏD¥åɘÒH¥œ¡§±}òy‰–ØÑ2}'¼é2Ñ…Öÿ3ñÉpÀÄŸ„„Ú!;d±HC››d±1 5£à©0Ö}v•°œ„ÀÃ6†ŒÒä?NÕ¢Ž@üœZ‘p5ÖƒY›Hõùz€e"Àòa=žÚ¤ïT#=FMú‰ýK-J‘zthÉyëÄ{Ìr”EÊ‘,'4'ÇÒOñŽÞ:Ç\Í[¼cŽñ^3¼uÎ?bÃ0dSJüŒÍÜTAÖÙ¾½± t¯m*ȦÄ­›Ê뼤1¤{`dµ!7ýUé_“óÃ~í¦îº#æ$«[ø„7ž¶e¨Õo§Ï??¡d2é™cèw3{¯ÈWKw©ê¹¯œDMæüà—QCþí7ÁHТ[äK­›ÕÉîØ85;–îÚ3ú@¿‘Ûòº¸ØeÝn|†ûþ¼TSoóýEs¹"·PÆ18¢Z¾{ƒ¬Hý±jV„=¿*VqP;/®ÝÊâŸs`¤!»¬_ ;Z[v+‚|¾r)´’ã»Ã*þÁó±JöÒëÿ› I…‚Ï&l‡íÊë¼êî()Ï꼺ÎBlŒxt¤ÿ̧øLX8HޏxÝ©NÉW± r-'Š=.B„žqгgƒY_¿yóf¹.wWøl›LÚÉ ™óÕ£Bì3ãêéÁX„ ÚÚà7ײ?ì΂SBn•çí}ê¶ì50Úy—5Uq‹˜zѹùbÈ\$’©·ôÔ­S®E=P®'s¡1~#«l²&»*‹}Sá½"UyS¯â^,ã sGá¼]îsGñp"w"xѱÖÎu}›^£\ ŽpéÕåÔƒu^Tu3ÄǺÜvû“ާA•® ç´ë>çóÁ½7ÕÈ®ˆÎ¼:V†Ý£Ì’¾ìÃÕ™Žó÷®¦£BÒÕþpõÈ×¥É;ñïU6¦ä:v›¨$|(~ç ý´gOšÕ»²qÍÐ> ¤iÖ¸;Žöþ žº8æþšd¾}º5è¬CÓìØ¤ŒlÊ@¸/{n*ÔÓÀD Ãúµ מ’–¸dîØ†£óÀrl@)FÊ)6‡l;lwKØK ^²í!ïEe#:‰ÑÿÇç!4s)Ò•^w,¯¼1Väìи[éYOôkHÝÛm»ÞÛ”í¸¿ðœ„?é¿fIÜŸR(8ù°Š“x)¼Mùë¾nòlƒàfVú'w…Àüñû^ðöš‡7cÀ:u'u(œãõsÈAÃe\ß=ˆ\)P¶²í‡×”k37H9ŸhÚNÒÝñ$^½ü8&âÎEŽëS­ö¼‹ú:Ûâ¶EzÊ’›¢¹Üè㌚‰ ÎÛ&2¼qñ°t}Ú Ëñ—Ô£+už„(rkd—}gv²žú­0±"Fª¼>lýñœrÁ+IVõ/%~Wl³jxДÝ56 ÉéîR|ÛI2¢¿ð §”k•ÙYHóɈ¬•íÑa¯‰:þ5!t&pƒ ©âþò"æÙóR ^µb æåùfxQ„Þ´œÚLµGALí3ó¢Òä¬ýT¦À¤ ê â?ï¾QÝU±ÖÑ.¼ÃL`È»ü¦ßgW—uÿ5ÍÁúáôxé/½Úß|wò$¼¿›‡2»Ýe·o‹ŸVí\ÐÁ ; Â⨛¬j^­½‰™@`¯Ð^ÑCOñíás ` *øsysYn^}áà#Ø;’Õy—UÿÂí{dá8O˜SÓñ^Îüõ97÷Ò/˜©³Ïn‹]´á!˜'ÔC„íf°`ŽÚºóØ ï” ùÎ1*j·Ä›)mÉþÅÀªáºhòjèû¼9TûqëÞ„MÌÉÀ£>¬×y]×= –£®ÑuðkÔ“~òÈëQŸG1*F›TùÖ!Ÿ| mÊ-¤Ü¯c:†A[hÙ ;®!V¶N;²î[tšÎ å&ä#D¢Œð Ðìy•·º^eU†¸É«`#òuð@^ŸÄ¸)ÚƒÂÐ âJøC bûžoÿû¯&Rendstream endobj 185 0 obj << /Filter /FlateDecode /Length 1878 >> stream xœ­XKsãD¾ûW¸¸0‚HÌû‘"–bk— –Tq ´¶ì,)«GøõtÏh$Ùö!Òxfº¿¯¿îéɧ-ÍØ–âwü»«6t{Ü|Ú0?ºÿìªí›»ÍW„Ý2–9¥øöî° KØ–q™YÊ·†êŒq·½«6¿žÉ$eŒ+òmS'‚gTrÒ·Í)I…‘™³–4 …a鸶¤/aÚüÚ%¿Þ}õÖeNsí ÚLXn7¤Ê_nËß“ÏqŽ\Ì*“‚qpìnntÃãc’r›Q& iÚ¾KRI ¾’||¤–Ô 7™sÆ’¡ÂGJ¹%a!ŽrGŠçjxa¤9ŒÏV“8›SnFpaG àQw#\ƒ9Cª¦ëg‹Ë]žÊ]ÂñYpòÇ-Ùåõ<)zC%)"ïT{ÏV±§!H ) ýCÛ Ç‡äî·K:…É Ó)D‚nNe×ß“,Ëî“qÉ’]Ç3nT$·*ú‡&°‹ì3ðKC¤™&?5x)„Cþâó¢(ëCÓV9BºZ•¼R™åÑͲ/ÚÛ²ZñQ²Œ;¶ê"J%¢;w#á‰ã–eR«‘8iÆèæ/ˆŽ*ÈG# 8!GÀiÈ‘T€,13Ö9βW™#¨ 1=Ägá¡ä1Eó,’¼ÞûÉS¢ FHØ*oËfX¯N@¹#5}³:¦2p~â%}ÌÛT[´Ý艳ž¬€FŒùëÔ8ëÓÐÏH-Â1®Ôf6êN‹`ëɳ¡  ŽE½Ã=8÷ª_< ¡øÁ„Ó’`î`¶€‰·‰X#@ëHg°ºëq Òø-aå» 7Á°fzP»¾xD.½·–üœXŽãŒó6CWD3gnhp»xòz]3/‹h“¼z<…¤AÏeÿ€…Iø¨¾y÷î¾ÉPß¡LUåŸE{=jjÍR»™ã*’õM’*®|ôªùñëŸ! œ†aHkä{÷äÔOåïo®Æ)p>€:ÚþfwOªá†Åq'HWâZ'œ-Ç*¿á÷ÉÕZľLRm9B u}ó"úl1¥ýjòùÁ1Òq5ba¨µÙ‰¢U¢p¬¤5 ‹i-½¯Ë¾ÌO%‡¡ÞùfÁ`8ŸòÓP\Gâ4I™5³\-`º¿ÝïØæû²¨ûWûáb¡3M¥8;R 2 ³9Ð ¤ŽÇïêä¼âðfb¨ áRR}ˆ¦n- )~"…âÜqät®ev;.Š=ìêhÕ¾¦iÒÔ_‚ÁÁxy,Ò3‚(ÑŸÄçsdfT_0ŠIyh‹ñ¨9Û=–JäSs‡'a»Ì9¤vÁgÏ,ø5B ¼ÃYÆ%áË5H­¦ #.,[¬Nt_ÎÚAõP} ¨„Ï"<¢"_"{÷$Ù= Ú ÖCÑue>ű¾ž×ÂqÌ„`zÅ™lqµÇhòt_EŠs… 8›inÚù&*@ûZa„fj²æeð>ø8Ç »©¼PÊ)¯>îOFE)>JìØV¬øY—âš<Ê,,H™„¶TY)@MÞô*Vˆ©MuAyÕ ¨™èA]Ê»°ºLeŠÚqÁ-FÅçÀg Ç°ÌÏòt¤.cTl[¤Ý+UF?aGn%åsm¯¬2 =‹:µ™rz’‘T ·Vÿ—rƒJgq2¸›ÁyF'ƒœÿ«nøšn.*ë–‹sØë5…­X$HHfÚAÑ<”JÅ}»{˨ O~®’ÿ® ßhø\ÂYµµÔ \ž)”+ì"s€7Ri¨CL‰CŠÁG²¨œXÏ. ÿ…ˆ`'-%~#:®|L8EˆÊ„2ž AA8jM™ÿ¯‚ óVfVP(sAÓîæ]Ã+a‰Ø Æ"X¼ìŠb÷ÙÉÒ½ïSaÚØ-LÇRØ’ÏZšúY¯!Ãâ?pZì%¯gË!B„ªx:F†§-Þ®ð뙿(S¾Öñù¶Æ®t|ÝPUyûômëýД–Ÿ åÚ9:Ië‡ü¥¬†jî~ ™,N%ÜâiösøG¾nÄÚÛ˜ÃnTv8ÅSȵq¤¾šwà3ÂÅE#nö¡è‡¶žÙÞ5û 7"yÿOz ¹q®ÌÜK½ µÛæ˜F Í>¸ˆÖ…R²ò½‹_±¸<Žq:»jjYlmà: 1Òp)e ï¤ßÝm~„ï_Ó·Sendstream endobj 186 0 obj << /Filter /FlateDecode /Length 2792 >> stream xœµYÝoÜÆï³ÞûÔ>Òí9:†ûÅÝuë<ˆã®:j@r`úާ£}$e~XVŠþï™Ý%)™NÛ´µ‹äîÎÎ÷üfôa•&|•âOø½­NÒÕõɇN_Wá×¶Z_œ|óRf+—¸Ld«‹ý‰?ÁW\¨Ä¦beÒ,á­.ª“K–®7Zè$M%{óèÑ£ÓðÊ%KáãšÃ.SŒßÛF»Tâ,Ç]|z{3-Y\ÒôÆÞ$÷>óéåÍD÷tzäë×>ážá¬Î«¢ ·€\»&žr¬nâ>ž±f-,<Å>™L;V´Çü&žÍØmÙ¢üs©N2…^q±;aUþéyù~}ñà"itØuÚá jÉV›Ñ6;ð¡ÏÄéN‘ ‚/P²Þ(¥à¨c?ìýZŠ:Éû°ÑIvÕ¯7"ƒSÚ°¢îÎpMyMöã¡›¶„›,\—-Ëë° +ë}ÓVy_½HÍPóRƒmÛ´ñU± –PŸJ+Öuùu‘D…Ù‰¨yŒI¬ÅGï12pŒ Íþ’*«ògàB9‘Yv ä ú1x `Z(ðb£È6ûa¶P£û8-3°æ¶/òj Üú… œU‚_-˜’ÛDZã±hÈÓÏì¨í2ç y 7×xjLŠAïþhö6ïÊm~$?‡/©2,ÇGEâܶÞDM¤½<¸+ÕàÍPïÂ;óSõ(CEVröÖ“qÂd€&k(b$Ê2 )TqyFúpßñºÙø-Òq‘¡n6QRïš{[ƒŠœIÃg‡Þ‚Œ*ºžUŽ<§+úð=r¢,]vµ"·ödg¤•ðýÐcá#î·ØmÚâ˜÷Å.Ѐ”Vý!ìH…a»‘! Ó !߈Œò ] |v‘Œu=p· sÁ“)°¬#=?k¼v!\n7SE5x·-|D(‹®× —QôìÛ¦BÎ4…D_VEÐl*À%YM¶Àåió”é#Òƒîšxú©p—>L#Œ‰oìØ\ob¡”’Cq X!À<’ÂùÂ3†À0Á°P0S ¬t KšÁ¬ö9Ô ¼»)”:‰½w¿pfpš{•ÈÔ>SÔ8)'‘0™cT6ø8íè›øœ“4Ýìð8寂³Éÿ˜_2*ä–ò¹b¼ò÷m×{‡’)1a¢G¹/€öÙ¹éS–woÂÖf,Ïgq]0E>óUа5ª oÜwÈ»x$ÕD¼Þ P!ïÂ;ê±ÏÛ~Bè×:E…pè8`#A¥?IïÇÈsÄoB r³ §$!£]Q‘!ÑÅ b}›¯)B—KežZx¦NNÁ}QX°c•–”ôƒá.œœÀ"D#cb³¼TwD&2çFô j/ŽãwÿCûqqÅYðmç> X_®6„…€%Ÿ 1d gŽÌÝ 0Ñè-ü±tƒ||¸L,Û¸™0¸†ÁôõeÐù”%!VÅÂUXÛÇXó•A€S;pÎ'þÑ€M CKXIOƒs¾‚ìw‡þ\[Hþ*á\¥™'õ=Ñsê P„ˆIqHÅÙu›ïÊ¢€iñÐ%?{=i°„Ì.x±™4œºI"QJ(ë©[šE\Šÿ9þŽG²/Ô’SaÐûy­ )ÀwûÂO\‚Û㇠GE³\?L=o3ôþ ZKm‡fµ;–ÐTET…“‡@ g¿ƒÆÎ}RyLž Jke9Ь-üh’¦hMÛw‘ï9£’Ýä-tñ}Ñ.iÑ×""eÑ'h2—CÙzn”jÔ˜&Pг‘4%¤I=¸iKr.f\¡{EÖ8Íñœ>åÝû°KeqŽÛ túî5£¢êçþÄ•ù³È‰í€P}AÖ”Ûh”aúRdÅ¿ö$c”Ÿ‡•¢ŒçËëÒ£m‹ºÀA¦æ<¸„¯ö>} ŒçšLmüŒo>úÝæC†¶ÜðÌ̯ïà<еaÜÈ“õS Í<´]­ƒÔKò: ­Xük”\ó5×ãÊ>BŠt)e<}”Õò@ÇÎF+÷±ÛcÞù?Šÿ—•¦_ºPTÊýË.Úb>@6D<Á}dvvµÁ¶Ô‰«\áÂw'…ŸøÅDendstream endobj 187 0 obj << /Filter /FlateDecode /Length 2960 >> stream xœ­YÝܶ¿ç>öa (•zñS¤QH€IM|@ øú ïÒ·JW’#iïã¿ïÌ”´{rb7µN¢†ÃáÌo>÷×M‘óMÿãß]sUln¯~½â´º‰vÍæëë«/–vÃyî´›ëwWa ßp¡r[ˆMY˜œ ·¹n®Þ0™Ël˹Ðì:s2wV;懱n³"/”t…¶ì6ÛÊRççl×…ÂZU²==+'ŒeõXÃ7 Tx0k3ÉsØ\²Ó‚¨É¤È‹ÂHöHADã4óýýûú”[m¬ CbÛ\ÚÄüñêú‹7ì«¶:>f[ॹ2‚õ.Û ­sç »í«}íÛL”À½,Ù˜>)v‹Î•–y\4p Åö¾éÚ.o¢p@_ÀÕ…)ë«Ñ拾Ž"â.Î^ù]…ýæúê§« ×þ7 qv¡h)@éVmŒ-óRq´¹È®I\?•¡´¹)ù’ávðÇ÷Ã|ã±›ïQeÂÂC©Ø]&àšÊhÖÕû¨3¸t;éìÔø¾ÞUǤÁÞ÷ÝÛm°ƒt\TÆVp™[ã6Û;a"}3äÙV °9g_ŸÀ*ÒøÜvø¬]çxL/=îà 2¶«Ú´³®O Ýé¸O[BŠÄMVª;†[i˜?#O—|Œ‹ÐjFÝ.À,lqg0ã`0\“8ßfVâr‰B¢V&]×í0VíÎ?~ª «5À‰ŽpFw<Ö­¯úzÛ@Š>_R¢åå%UÁªý¾÷ÃàÈEŽÏp;¶¯Æ*²õ’þ¤cMøX ¾pLßK0Ù©Å ¬cžüÒ,P'¹È%¬hdÖT?ÖÿAì^€s›è&T0öÅÞ-<¹Þ{j‰þŠà„GÄ)!8J –ñ}¢‘ìÝ©%O|¶&çe®ŒòAÀÚ×/OÍ[Œ2O¥4<Ɖ@ü†m ²mp¤@àúôΆÓ.K8Ìb'Ü ”0¤ËeV! 4Eº“ÄÈCa§pF±.Ã'UJð8ŠEJ+öŸ-rÁ˨H#ƒ¨Ãˆ‘ ,ç 0ê!¼Mà!4a ïÞWÙ1œ;úŠÊ–/À5 ÓIå`§CËÅ1q‚ Ñ„âì9zcÝàÇ(ÕàWûx¼ ¹1ÞjÐÇX7“L† ZE.àH‘+j=¨÷·ˆôg$šÆÌ@wÚ#b·J >¨ hx"‡íÛS<™"}\ô€ZÐ+Gh€Pô¹G¢µì]ß5 wþ¿’èHÂ’ÁþãÉAjTÁ— ß°·‹Ir“˜Û%s# MxS`$Ÿ…@oM®»pê³+¥¢ Dh£wIŒ˜±æ f &p@3c­šHÁ 8  u›¸Y6ÔM}\î Kù°”XjÂåº4"Åá¿cȆj¦ì³ÏðYQøNâjUar&»ƒ¸\wÏâ×l¼ïâ^‹‚íý{Ÿ%LÃ[;&ÚV÷û´U²ùê+Yb!ÝŸ¥ûÛ6ñ?î“ëû–rüuý˜Åò|ʳ¨LLÕûÜo œ»…xX°ÏfúC}{ÀÐ’”µƒ•Œßûc¨Æà#»ÿò/ ǯÜáõü˜®@Æ%Û”P˾[ݰÈIQä|ÏfS>Èuå<®3~£Øç_|>³Ù&®|~†-µp¦¸°ÿ‰y¦pÿͺ0ÍtKJÊ7¬õ·¯^}óÕ$b¬úñÅ5𢘄"cNÑþ@úxò,%B§Ÿ$‚/Ì|>«V Âßùye85][»wó†_OUŸìíû¾‹Á‡»¯ÇìäX“ô.ŒåX?,ƒbƱ¯!úù5ƒ\MÕ?Þ°&Þ÷¢²€BOÙbêH¶+ÿº%´ö‘V|þÕCÝ$` ãùc}€ò€uûY=Ø—a¶ŒY·¾ô÷c×n®Þ†®M/Ï ‘r¨B¹DŠóëÑ÷ôiÖóÏ~<õíÒ÷ÁtÌ>_Xê´Û¡nƒYƒG¦ªl6ô]uøv~ëÈy‘‡Žu»ƒ&€ü4IÓ_LRgó*£ó²Œ0eÈ¥ÛÀyPçsÀY!~Ú88òÖ­¹]M…ЛÅŠfÄûüt—›BþÞéʪ‹ÓÅ§Ž¿LqCuÐtÌ¥áEÄ\Š¿˜Pï-¾ªËJA@ÕZr¥¦{òlÒ‡Àz–Fœ‚½ 6³˜ubÆ©ÚéG‚Ç@\”0ØÆl|:Æ_30œžg˜i¬C;!i…Úiž‹‡1ºæ”„¿ë¦ð¾¨çî0ˆùþYÓJüd³  ýÛ”æcQ†éS"kåJÎ׊&ú±E(ÜTû‰T(RlÌíŠôç¦èBïpß]uüjéæL.pW»Áá…J·åé˜Aã·å—nù[ MˆCðTq¾®)X¥>qT¶)µ¤*> stream xœXM“Û¸½Ï_ÈTÎa¡¬Å$H®Lªv«¼µ›rœÄ«Tž=p$Œ†k‘”IÊžI*ÿ=¯I)te+žƒI¢èׯú¸Š#¹ŠéÏÿ¿«oâÕáæãä¯+ÿß®^}·½ùý»4_™ÈäI¾Ú>Ü8 ¹’‰Štœ¬Š8dbVÛúæ½x’ëM–(#äúçíŸn¤ŒL¦ŠÕöÍÍöwHf‘TJ:1^KçkI½uŒ|’°lQ3[l.uØû»ó°Þ¤i•L –^R¼âÛ÷UÙøU‰Î~Z'öÉŒ°å±w¢qœB¯‚b*ªfw<ï«æàOÏæ§Ë"ŽŠ&¹·á”Œwص;z{®ïmw'`ŽÄWU¤‚£|'ê»õÝ:ä+¿ÎW>&ì hÉÓe´$™IÌ5"X#“£Æ C8-‹üßÀyÛ24Âöa*rD0õq.2Ú !£ƒujb%î×Èg,s|GL,]ÄI¶5íà¿#ü5vç#ÂÝUcˮ։Ïþ,•‰{†n¡ lfãå¡Ü[å PLråððWBÛý(ê(‘±Q« •ºüÀÑJe.ìÌåÑêXJ±w!R™刎¡dÓ×O0(ÜÓÎCëec#Êý/ç~˜ÞÛsçéÅW¤ÑÚd°¸íÂf q*ª¿¶YÂp?tå`Ïk ²Êæ(@X¯œhÂ9/"­éÑi¥‘BÐe’‰ï«'»÷pÊÄ À€›Áµ®¬í`»Þ¯‚@à-­ƒir-‚‰ç…DkU°IÕ\r<Ïíi¶ÇªN®]7¥¸„ÍÈÃÓ›êÃúëkÔÀ”Š=­"çÓ ‘ÓT“¢8ñ1½r%С1)o±,2Ê+,ÊR#“\6 @‚ñLííƒÖÌgÎÞ –æLr[4ÑgUŸŽ–îä5Ã̽Q} t—F a!¦c§‚8õÞd±³Ý@庎oF<ÿ§1i_COeŒÆOë,£€e¢<žÙ+•3íõ4wÝîÉM¶åÞ•1¹µ(×.ì§\èýS´/i]3J¶±]I=D9Ž¢je§—_'ÚΩPVçòXùÍÁœÏÞP˜Ýìƒ1`Î&è8³½åX™‹d.T˘;WÕ)2Ðû6âmèœ ¶¶ŸÇþÎ\кuꙄyJôÓÌ|Wy’JBÉ«Äüeçå‘HKó´.(Gq+É¿H.¬„u"ʼnTt¶Âk"ÚÆ:9~y:Êñmº& tšU<#ö꽞V.x¥¬œÃ›KEo©ÇeR2„v4Pñ òyïÆ}edˆ$M¥‡DÏè­ßߺý¥xyáò­c¶YH¾™Öÿ=»R˜øYÈêå×cÈy,¿ó¡ÍIŸÜ‚×ê󭜯cç¨Ë[y·~¹t«‰¹Nhìrmôö;÷â2±(~óÛÉFÈú£tèÞþ…¦5LGÍ>¥¢™œ ör 5]LQûV-¾^mÁ$\XêrŸyË_Üg“â²cŠüŠef™ ê²{æßK¾økÉø#Åfáǽ —Y`!.Ÿªú\‡jtÛcõØgí~BÄÕ%•(±Ÿ‡¶Ù¼+O=1Ÿ‹{qÜÿzÖò¸N&‡+p#/õK?ö¼³Ã¹k¦ZÞµ{—m¡_MVaxÙѯyŸìÔVC¥O¥ó ×¢±ÑÒý(¨ƘTÍéì}²“êÐae³[sC rG¸5L'Þ‘"$}â®"ü¦=lBPÛ½3^Ú1îwE6FSî1È*‚/²$6k"$'^»,ØþæN?Z]"*HL.ü4нv³]G#Mà§aÊEÈN+íî4•¿J‡„z7‹GeNCg‘2M ÿ¸‚g¸òÒý ‡+°LéWŠŒ¯-H²b‰®<­B7¢DÆëð›ý´CLÿÐã¥;âí·Ï Éùÿëèºÿåy¤)$)a"ÝÐ% ¢‚×Û›¿áï?èš]endstream endobj 189 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2162 >> stream xœVyp×_Y–Þš8à*˜cv)I§á(Í Ê@ MÀÆà0 `ƒ/ásm˲.ËÖ­}+É’lY–|ÈÇZ¶‘mlÀ®c“N8cHLSÒdÚt:Ó0PÒæÉ³ž¡+Ž´éôìììÌîÛ7ß÷û¾ï÷û=… ‚˜”]ɉ¿Zÿæ†È˨Ÿ=7»Gc…06Úµ,¦k!Â^^0ú ¹ï,+—É3+³²ó¤ù…–„íÃ^ÇR±4ìv{KÇVck°Ø.ì=l7–€%b{±8>°Bì¾  J•uUèŒÞ.‰¤â—Å:ñ¿ÀЇïÀe1¯<l|›naØðZ¹à»1tbLx&¼UBù@¨EwœäN©ÖJP(‰U€²R{/‰RÀ'Áǯû’öœ H‹­…„.²®S¥öS$Rxš>[ÚMõd¹³à~¸÷HU ýøùOwDZƊð¹ tuÝ"*œ$ábÕ¿ù)\ޝ˜âbÐRôÒE}÷Šå^#¸¥”@7í†nxÛó×Ïû|N¿ÃïÑ·Ý[%£€ ˜jNÈ9ZV˜[™7ÁŒý$nõB¯Õ‹Ï¥MÂ}DC¬-»)œ˜Ý"¡:Ao§9×@ë¡‘œc40¨Ç³Š,ù„œ 7‰S¤ët[23{—ÞqN"¦tõ$ ýŒ›W’ÊfäU(<¤ÉL6)¬•|øväwÔÕwh‘øüÜÚ³Ö“ïȳKñfq*ñðKÏá÷ í€ðÓ ›8{Ayâ“_v}{¾b$-H&÷pq•Ú¯ñZ01ÁNŒÞ,ZÅ'Zïbj]z 8¬N“N]®5E%žlˆï^'[y`$û¢š ÕôYBº¡êA©-7ƒ=iù  ¦n) «ÇÐ@\O›$·˜mÆÚzw ÞIÔºj]v7_(AaB$³µ,J”  ž“ìSrË~F¨¾âjh5Ôà›ûÿ8Ótÿqžÿ¤fÔP…gÔlÜ—¢¹1F n´œå–£DÀO“·"¼¦×)_øtžÅÍ<Ÿ¨A_uºŠVA5ɽ `.s¢³˜-®‚ðÊ™Æqfu<šç±j/wŸ%ãFÐÀÅV‹âf(?èkªÎ"¹=`[îºuT‘«]ETµÐ°çû ð½îxAào—P  úõõ9¤øÐšÐêÞUö›ºú™æ)O_ûTÏTË4n;ÔNM­ºkCpCÏF»Î¦i ›¡ÊÛß5ÃÞcgšÎ·tÛp–#)ÐAw¨` Tè”&eÑ&Ù['7×´;ôíÔí²;¥·-n³Öá`oëfš ¿e=åýУ©/°zhÀ­€®1Õ˜k¨ÍÅ›©ÍESòϨi]°rGàŽ¶ ŒlÏ8b†-_xá*Ê;€V-Š{ô z(ñ]¼ºñ©þ`-äòÛªÆ2Xës÷gÔƒWƒMጘ9Þ}|â.qÜßk;û§ñ;ŠtP`:–CÄ=ʱ^æGy?€ÝtPÝY|)%˜ ´YŠIk⻃—úTmc[@å—›M4m&P>‡I~àî㉻L¸Q|4£ÿƒÇ ÿ…ä3~ø%ϲð|VЩ¼4ÁfÚghÒ5(Ô’@q $t,Þar ‘6ê “43þ·û²wo€8…V²@g×9-u°n1<3}¥k„O¿ýdW~G~+ïÔ» P«Ôú*šÿy[ ”PÁ¨]Š:m‹ÖŸw!ï¼ô‚¹Vç‚.èt9Žž¡øáñsß‹ô`%|&—VÁÌ„ŒÒ£2V¬èªÆ›œºz^P¼¾:/ó´æQ{~Â#˜}é…HðÃÚzYs¶ž6@9gÐÈDš˜Sh)ˆˆD®¸ã™H¼e^Á-((1ÃbˆoW*A'サd¸ ö:Oy½4ô‘Â#‹^Ä [Ö«ÂßG° û?at`o¶6“—ÚwYp¨¨}ŒdÂøÓ:R[ÓŸå¢ÏqÑg9‘ïD,~Øû¸ùò8zãC´ò zÃÕ\×âha澎Ï*´fÕ¢ØRqA©cÀŸ¡“ ó\´ ºñ¡nû)¢•å–ˆ5VE—1÷!WþÂШ±‰xÞ6VÌ&˃7Pãï„h4’ ôôÙ$Í™¨ó‡;ÓábnÁfpÂåŸr"sy"8Â’ /ÖD"[Êdö9á‚ױïY‘û‡gŽa -¢³Ð…T0ÙóèÁµ¦}I§¹eÖŒ³¬å°üy`ˆ©ºeƒG¼™0 îÍÔ$ã´¸êVæ©­ü%éýªÔÈ…˜'ô¼ƒaÿmK‹Dendstream endobj 190 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1223 >> stream xœ5“[leÇg[˜ùÀ´ËÆ­à HÐ}£ð`0!x)´”B-”„Ö–ÒÒbi·vo½ì}fgæÌìÎì½»Ýíîön鶈v-"H‰&\DB¸ˆ!ø"/¾N›%ÁAñœœ‡/99çÿ}ÿß§ÁVafÕjÊßÞ¶uû³C¸–§–÷¬„’b(Yذ•Þ|éòÚ…±g7Z*ÚNt`ØN¬{ ÛU`{1B‚ØœÆ\´³è~ñÌŠÙ§š}k±5O5uXÔ´TkÖ(\Õ ¸Ô4Ú–t?¡lu‡hð¶E ›¡‚21#IJ ŒÈ#W¯ÞöG„J¸C·ÁÌ’S}¹:h€†CEű7áT9±íîüs§3äe%¢ãl^;k;^بgíœq˜ŽÔî¯äÅ›%çL£០Άr©»yE{ˆç¹áJèŽgCªÐ9ís¡†u1ì‹' ]Qkw¯ÅÐxÞ5‘?•›K’.×绾‚ÛpîQbAðûdD‹^+gègHkCkõA@m¶ÜäX`T¥¦Ýà¥ä_× , 1:îA³³“6Q…ÕO:³·£ßQfs¡wx‡Kâ‚ÔÒ&\û™Oâ¥õ "¾àè­ì­±ßŸè’íbi7GZêúk[›6}¸iŸyÏú÷p—C ýQ1D)ë–BÒ˜ &Ê¢ÙSB„ûAæ%@Ѱ?`DšòâíÐεªÇÐFyp/°ÀþëÈÆÕ‘å×Íis©ö‚rp©R·ËõùîFDËœ4.(›á™Ùú»]îÊZg9d­³·õ¶A jj½tóke]–‰™“ b¶ƒìõÄT²ál “ünèÜZúàp tÆ:[M>Pšu®·Wõg <0”I%Ó¤6wÆúHíŽã¹õÿ£²\c.UÆ~©¹ø²ö†R® è¾¥4@ Ò>4¹M=¯4dŽ,ÞW^ Ë´Àtñêúrò f$5˜‚i ‰8|jˆ{ßœU6<‚(„™Ëøl}ê»cãñ‘Ì—'S[ [Žn%C3Á\(wO¹®|‚¤!àgE¯ r^^å2Q‚Š‹ (€M‘b ÎB[KáÕ'gõ<Ã1À AOxZ<="“³Ê&_Ìcekžc›ŸÃ¿´ç|ñ’]ù[ÇãÞ«Ç&Â8ÐÒu˜žwλÁZгÞ«Žò"FâäAˆ†D22Ÿ¼wü ñ~V¦õ²Kp€LŒšfô¬‹u‚ q„=쎒">&ú³Rú¢Ò©OÞþù±úgbíÇ›lGÍÔá¡ÿºË8ÂñÄÔî Iœ3yåcýðï Ê Éø4jNä&•ýU¦}öö¾ãЊXâèdÇé¹?¯ÄI?!3ÓíTß}i¡³Ál M ÿ”¾_”2ÒdÑõƩڪêúºnr ¹º8òAÉ* û4\Sªendstream endobj 191 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1817 >> stream xœU{Tמe—™‹ÁGØÌ‚ÎÔ¶ÚÚ£M¢ô¤"5Z£ h *BAaQ^ËcØ]v~ÃÎò]ž2°E|¢Iªi5V‰I„´•6MN“ÚžÚ¤w¶—;{èiÿlçÎ?sæžûû}ß÷û¾«¡t”F£ JÞ–¹>"Âÿñ4¾Ï})¬…`]ã2æNÈŸŸ¼³øÊÊÿ,ÎË/<˜gHÈÚ™»aMÄzŠJ¤’©]T4C­¥¶QÔj#O±ÔBêIJO-Q+P UG)šÍßÒµaZ»î)]îË@{àC:Šþ9³ý±f[µè±æA1UÝ£Dô¦yÍ,Õ_ÂeJû Ë3kè¡G´8?øqú¬{/$aœþ’Ý&ØÃÉÒÀ Mà_SŸÍœFú™¦N·Ô>gÊúsGÓ¥dØ ÉB¬!5?'³ÔÏCÚ½š-Ð*´ µó%ÊÊ:“æo7µƒJ4kì`††êRyâe2KlIœWÊÌq¨ªÉsáñ2fÚpÀý¾¦úF± \ .@c¶V›¡ºË=íÏ™¬îì”W J8{µÍ"X¬ ¯§ó˜dg yt«¨/ï^ª¿‡W)sìOŽv%gbô¿þ=)¦¡B¨€ y9ev¦ëãÜ…"Ì¢Ì(­fS|Òñ©I÷áŒ~B&+p3O§¥Û,++=!ÞÇoM÷,ÕO~¥èؾ±‹ž‹€®]þéN~³ŠÄä‘å¼…i~iöØ;pnyO¾DZoNu¾–=~FNKçÐE{£-íð‘Ú ý­b+´r˜g UlƒVô`Û/Än2üÐè.ïëët÷ö—tp8ƒèÙ5Œ~2flŒaÏЕO~si¶k¯oÚ~¶ÇŸò£_×£Ñâ*ˆ­‡X¨°´¤0ß]ÖÓëé8u?ÒKn$æcUý%·ß9=%óõ R34!‰${½Ìæ:KIÊC2 Yø‰ÙûXuã¥Ù}ü¢°¢ì ”5˜ïS:îi/ú~ÄG˜‘!{f­`+?WÍĦÔTõ=,3ûö6ßæE弫¬©¬¡,ì:Yý6ùî5²ú •*%ÓÉ:•œ“ õJ­øÇJzè‰Ñ£í£m#¡ÎFgc}“8w-jÄj¨A†[NU•õàNùs8Gk W:™³C Cmm‚Ê£L60eu¦4’>7è Iº2fºPæ üE‘ü¶ÜÔ~+X|–nqI-v~Ià AÏN¬ÿÃ!¾×Ò_ÛÈIw/v(:ë%Ëê²UÙŽVÖrùûSìdw f¼n¿ ¿@¢›>ÿpö“¾oÇp‹ø2(S¯/ªWõß[Ÿ+™ôûï±oK6—“o’oIGä9¬#?Ã98³xÞîwáKDãÉ+ª ­6ÁNræ‚ÙNð‚uOÐmÕ…í§†š‡Ã?…÷Æ7JnÞñ@Ø,K"_­¬«pTáa ^mÆO8Ü‚ÇáV§#€ÿÈïÅpn4i0uni½~ݺï€}?7Ìd³çqEFœ+ÒÆIuc,35úðá/O$&r¤ŠÉ2ÖåreóÿÇxlbÀ+xË ÇSOP›ˆË,Mð£ÐE¾Ýâ /`Pƒõ[훾Íl))ì¡¥7êïÊÞá±ëÒe@—hO·ã0?w†IÏ´fWe­ærø¯rm8$ã•nU\$w¹F8/}îZ»76e×g9³Q]Š TEµë®ÏÃR1ÝÂþWëõ'›‘UXÿMµkæ¡ú¿Q Ã僅çRÛ÷«¨_6”& ®Š—w@Äï+O…Ά(cNV TÊ'nkOá(w¬¡ÓóÛÕŽÚe¦J;ã€uå¿ø‹ü%“i¶I5ņèC…ÜV¢ÛB´1DWi µVÛká8XE+ØP¿Ìb›8ì¥Å¢È‹Åø‚Zck·Gw±¢ÔU—\”˜‘a·[UG"So“Nh‡¾ÑVwïÙ“¯Ã³¼»'·4??¯§d ãDcK 7ß´Éã{Ú#šBƧqóôRu"Ë}kY’T* |‘åƒd/ŽáÚhœÔUÍð©s½Ìˆhu|mvÿÌÒs«ýW‡š)pÞuÝpŽ».ö¾Öíí9/«&Ïð[Øb:º»ôPfîA@Vš·4á ÕŸ¡swW¹¡fŒ2«½¯xXÏÉ«S€>x.jeô /oå·n*.,.(.+> stream xœ=• TgÇ'2ÃJQ³°ØÎ¸j»VñQK·nm«åÕZµ(A„*Y^By‡WrÃ+ y”G $ð0"R[E,Ön=¶ËºíZmën±uÛîVYÚÏçwÒv;sΜó͹ç»÷ûÿ÷~"ÊÕ…‰Dîá!ÑOùûoq.V‰½o»æbðpÕ=êþ¥º.¿¶ôü2Êù°/edfçä*våÅË“Ž{jëÓµš ¥ÖPû¨p*‚ФPë©(*€ ¢‚©êêUÊ‹b©Ô !ESEÔ¼¨BôÐE&öç‹ç]=\óÜ·"ÉR‰šVÑŸ2«˜v÷WŠ2 ”çCñ‹þ”ÖŽÛìŽ8¥hô”T†Ev:c?´7ÞhláOŒõØ £ vIÞ'ÛÜ6ÉpÎî'QYŠ,¥æ ܳ÷ߪÖZ½2¡¦ ÿ` ßFö“ˆ EzM”@‰¶ÌÂ#R¤q 2åæùÐ%…¤Ž¥V¯qܾþÛõ‹»èÍÎ;B¥²nš½6`¬MãÉMš–¡Ú.a¯ãaÉ͉¯¿­5œ#-?þÆ6lj[¾%k2B § aØy ÒnD,÷Ȉóp¬h²{átÇwpù“(õfÇïJe‹VËéÛ€Tó…¯NôëL0Èü°öÃuëø¬ç‹±ûÂÕ¸éPSt_Djòì}¥x÷Òý`Ôô•2ìâ´¼g_„/,8—uL™¬I†lÅ[R4ásBÔ€Æ(D9N+ºÅ QyqGä)Š#¨ðøgTµÍÁ[DV”`32b48b¤Ä£dõ. ›á•þWfâ§RÞ-ž|=¯¢ÿLálòóÎÎî@!ÏRÒ%¦áœöÒÉñ¾¾á–!¸géwÔ)µJÈgrhˆQ‡¥'å¤''C$¶çZåÃ0QsRH.:í”ÆŠ>iV¯!|vÓMwï¢Ø›úÙ…?ý✠w‹à‚É×Jæëñ \•”¨J €açŽäY†{ÌoG™ï ­à4èN¨jÁfÑø{TGž#pÐkì Œ']ñfï, K‡2Ï”ŸæËOO-ð-tõìáÓQÝòæÌ†¬F™.°¦™ ï·ž¹4¤ç*@ÕÎé$­'xön“¦©Ñwž6Ô4V) œ+e{~}a}¡¶˜€ßåúqôÈÿK Zué8ìc^úCm·³9Í–õym³ *€)©®)æ‰' µšj¨f*ê+›[ÛÚtzNפolÒ9…²9]ñ°¦Ù1\éõÝbÒ8.óf?Âí÷—I_ÏU\Í~rƒôI ½.½Sn>|±üM`®]¹ÎÛ“h(ÖC#+ßy°|zŠC ®¡Ù7íd †Ó?±_mu¼ !åä^ü#õýô`T×)RE »¦ud™£çjÞ‚wᲩû’öÜ1%—äæÕYyÇ#„¡÷©Üd½ô@omOätÕž„×€IŒ‡ÛµÐÆã¬#œÅð³Ïì"\…ËÅ'óèò`¸Èð_vââX@»³¦ Tª3ϱÑ.êuì—ʦ…bÚ#Ú²N¯ŸX7µA_XW`‚~hèhê Ì­û÷'‹Ìr+ol6¶ hRU bÅ==ÝÖLczJJ‘2‹S«kÕjA¨ }e=Ã~_Öžš¬K^ùäÖ~I]q6¯%ÃR¨×ÔA= ¾aÔ·Ö·A+0w$3ßAÈÎÕùa»6u\+çßB"¢Ï._ÿ 36€SÑŠ"ƒ²å†®"îx—¦·¶Ï©ùSÇ…ö¼¿Fé5‰Û‰úýÞæfž½ò¡ùæÄ·¾ÿ!KFüŸ#âÄ )££ý¦[Î@*çÉýJܲÃâþèÙµ˜endstream endobj 193 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 391 >> stream xœO?Haý¾´²û’·œ£KCÑÐT“8ébÚ ¶!¡ƒd§gçŸ_ŸÞz¦)'uµE{[4´Ú4Fs|Ÿ]Ig<¼Çãý~<ŒìSc<»†××&’ƒqhôÁ²Óà´Ó®²•åáÒËÂÓâ$t$c‡ñØBÿÅc„ t’¸ˆ¦-‹ì(nÐ3^e%ר×è³€Ž©¥mŒ£wn3J#ÙV™ˆÀåry¡@Êšà¥Qsß´(å28¡™oÖ iµx±7㤢J p­zC#P+ÉÞ 17èzø‘ú©ß#+KY¹ µ¨MldÅbQxë;Í<à7Fm#͸»=ÐõÈxîg2'N÷ ëuÑ[þÂï_6¢U·‘$©T"1HÆ``XG^Ç¡þwPÇÃQßšðûé6wW¸’ \$ÄÕmÏYβ%‡T=W•n»®ñŠÜÑ´: ÿìzÔSЪ¢¶ÙÞ÷–GmC ˆ£)6³bA:y?oßÔsýaâ´Tendstream endobj 194 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 121 >> stream xœcd`ab`dddsö ¶±$º»:ÿtfíæaîæa™ôQh¿àþ ÀÂÀ`ÊÀÄÈÈbò£ƒïgf÷‚/n0~?óù‡á¢/Ù¦wOïšÞÍñ]åâ_Y×ï* ~ÿòÏ¿l|r\,æóy8 æ)endstream endobj 195 0 obj << /Filter /FlateDecode /Length 2612 >> stream xœ­YmÛ¸îg£ÿà¾(¡7kE|™^zíA_¦½ì °{@›öª±¬=IÎ&-úß;ÃQÚU.¹C ‘Drf8/Ï<¤\æ]æø7ü¿©ùr¿øqAÝ×eøoS/¿»\‹,§ŠìNÇM_5ÇkòÖöåõÊ­ÈV?\þuAif¤(–—/—gWäñjÍrc`)±IAhŒ"Óçuz|¿>û:¨ÏµSêôܾ޴M×ݶÍöšX°j0Eñ‘)T(Ðø›ÑN›Þº¹O^5ö”Ö¼u¹]G«ËÝ÷¥ÌÓ††k?c"gþ¥"®ÈÓdÖMþ)[›¶_—ªºúwuÜ;«aû<3\.׃ÛQÒã$é¿É’FOŒB]Ï¥^åÓBjR~xQ½»)qgpÒõeÛ?Û\“üþ^¯‚σøŽÞWïãž4õ‹Ã åä}y8Ù.å[‰°1-ÈÛªË4iv»±’(»;ÕuÙ~¼&õyXh b«½=öÍáµk*ƒuO^ñq„¸…êè•õÌŸ Õ³ƒnÂŒ{ÿ†A:ÕÑWš€í¡ºiV”4ÛädÛõU]b1 »ziïúæ¸~UÞÞtð9켘Ä s«Ün%¡ÉUo[7Ôì2Ñ®W¶?µÇäæM³õ1!üi²êEÙõãHÙÛô¶iN‡mŠTOJÍ]uܦ™e2ÊE7-*ß6>¸Ë£þfÈuj[ˆZ6çÕïšÓq aN³›]‚¥Û²-k Û&@ZÜ–ûíàÚ?‚Wªí0ÖwwU¿¹©ÐµŠ¨ªÁ }3*ÁQ½4í(ÛæíÉ{‹;lnû!:>8`ÓM³M>ïm}Û´e[0µ¨‚|Ì_4ûuL–fëƒBÖ&+ ¥LÙÇTS9Y.sľ]kC/<ˆ?yî“ÍvOW\e*ç&Àúa#NIºè·™—lÛ¶×QYàégÂëãùöÚצ÷P*o=U‘ꊞÿ&¯EÆEn×9¤´ Fãæ^–/W°¸þÅKÎ|fŠÉ8g&c® §¹0h2–½´®Ž$¤áãÎõç!AèîÕôEµ?V»,a 5ÄxÆyŠÙú(•$dQîÎ(1†“7a–æZz{“†4IŸ'o²Égš^Þ$¹Ò#œøËáP]|Õÿ}… „(Iš£õ/BdSä³öß ×t&qÁݼò°oÚª¿©Ã'ÍÈÞöA*¾uýi³b°ÒHNÞ™’”‡\xïÊê0B¸ø!DáãŠAªç¬ ï% ÔÛ>Z„“‚E~ÅÁ!t”åjZ7Æ€€‰™Ð{`ªu%ÁjxðU+sWuøŒ ŒtMÑ’Üù­ÐyV 3¸0HÙ@è¤ù* )‡šÚà›39möMÖÑ"Ú¡u†ø0ÊIsfy¦8ìèšàMN!÷hœ¯Góu¦%°Ž8ÿ·8½€ÄÓjF¸ÈÓ”rF=9›ˆÃØæZýqW„"-ÆÎ$(Z ÈgCñ…§Ðÿ\iÌGÈ ùuSºhÀ‚Q~ÄqH´Ú·v¡dh½³!AÒ0–åJè|7øF]B¹JÀ²ô²|*ƒc¤oKAÌ=íþªÐ0Ïç8d$ÎSæ½AðÚj3$1Š3è(J Ä6-|{Šš€ñ&Ü 3PýŒŽyÎ áq5Hó† µ„ÖË5@‘}¡h™Q̼õÐPqÛ$‰Ày½t£¼tÎ]Ë Eù ²‡d÷‚³\Uc¼D[8s+wÍáÐxƒ%LÁ㌠×&WÖ·Ûþ‹)è½Ì|ä€W¡:¸Ì]×?Øþ†CRRÕp öÞ&ˆÃ|½éî-$XáZôÖ¢HInýgÃ0¿!£ëÒ‡Tøúô¥I•A—Þ„ïÈ•åá㨑¾Ú¡àˆ}[n«è](Ž+Þ(ÜK/)ñMaÉýî¶žw—Œçf·fCäcHPP÷4BÞw<¬ @KQp‹ÂSî[æÛ‘R¤ï€*`úxå°«²›kV‹MâŠL¥ÛÔPrn“Ï/ßÃ2•/÷Ý7²¼[äË?-ç2j R˜-ë ã7|9,.>y4±"ÞÈL¢È›GáÖÀJ1¹ºÐdZüÚuG8*î'k9éw è¯^ªLsvº%¸„A¡ŠbòüÜ=C¥3}–@{3C fLäàX®ù'Mœ† ¤C2€äpäÙýÎYT€EÅ!¿úIšPd…ÐùÐøÙOoi‚L ćú`3fhÈ‘«Oš­/MvOi³¯xFL<££æËÝH 6vãdÚ,Ýéû1Å™^‚)”‘_r‰+”‘ qÆr‘) Y²\OÖ<Ü€¾·ªG—lSÏLêÝÀ]†K½kÂaÆ»„ÚF43 ÃHC?C=$õ;Þ$ÀõrÚtö¶ìoðG `ù€eõˆßÍ©wdÁ7å*³È™ï‹ž-8o+`×Ò÷>àïSÇŽ“¤»;þØ1YÝm\ÈÜɵtÇ/V Ì Í¡Ù™`ÛÏý5×:vºw ü4xcÚuCcE›a3­í°÷àé(±;5p©|Ïmâ4›˜tljÓNõ1L;Fmoã¼ê%0·ï(mt[2ŒW]ŠÄ:Ê/HÛŒ|˜\Üׂ§pÊÜIˆý“ÅϺîŸä…2Wr H– ‘»îAzÂq­ïÿo1cQendstream endobj 196 0 obj << /Filter /FlateDecode /Length 1697 >> stream xœíWmoÛ6þnìGè[è4ÒHНESlŠCV¬?ˆ D•[›m¥’Ü´ößwG‰–ì¹ïh±k€ZïwÏݽŠhÂ"Šýo¾žÐh1y5aþkÔÿäëè§Ùäûg©ŠlbWÑìfÒq°ˆq‘Ê#MU¸fëɉü›²„RÍÌÑCOðböË„±ÄJ¡£ÙÅdvzE~ÍÞ”ëízKPc­!ånU.«)#U>+âš¶\gmYm¼d}âîÚj?Ën— |îH&ë)Å_iÊ.Ïu†ç’¤þìLIÙºÚ5ƒ]* v=sí¶ÞjEòªp^á÷«šmž»¦)_»ž’Ir³ÝäÞÎžŠ‘×Ùjëƒc•Gö»²]–#%mµ›6¹ Î(²Z|M=ÇiæÓc‘¼¨q^UtF’ØŠDkAÓ]Ô ŒJ ¦’›Úõ>Ýfu¶v.äQm×ÜŸžLR–¤ZF±×'Y4+ Åàåe[$4W×U j¤ÆÒ1ÇH¸àMJ~«çäað•‘¶w,Þ×h;WììÅ@ á4ÖÝ£ÝÝщæÚÅ”ª¨E*6P=à.fjˆùééé.6Wü@¥‡*g Bî«@%>REúAø)¦vOG/̇U`íÁ•¡¦Ër±)o’¡²0…áBƒ%t¸–k`? œHºËW¶Gv2ØŽ)4¼]Gº‘ëdï3^®¹'Ã#2ï½ËìÏ€41‚4Ωwó¤šrÆr7¹‰ ’péðc²ZT5é:œ ˆâfÊ œrM^{JZHù6òa™ÖÙmY¬ÞN O¬P–úp|¶$ÛA¼t!l¹]EyUT²“HòUÕB+“[ /õvÇmÁ8)Á8¸O,ºäX`/Ôfš¦à˜&ÛŸ†8šª?KÉŠ" p Çb¼âÔ2N”9ž‚wFÇ4+mISf¼ÀJæ:Œ.›Azî¬N!Ó3ô³“¥HŒã‰î:¥w( ¤LE1§‰R’w8ñÊ3/ªcÑ6R ŠG™¨%¥‰bŠö9$\3Èòh6y | :e3 2ÑtÍŸ'\¨GÂP0ÊFë ×Z&`Rø²š\¾³·î[Þ÷V™¤(RYŒ{×[ãÐÎôïVCªªôH€ ¤;3&‘`´‹%Eb°‚*ÀoÙ‘Ï\Y Òzr¹/›jšFy ©Ø—à¶ ‹¼3Rc¹! ´ïäN±Ž H¶ä¼{ÔݼÏBÃÆ Â•XŸ p4…£ ³–¿+xcùRM‹÷xþ¡fèIJûË„( phö;4Ökd‚ñÝMxL õ}‡˜x É®¡þÖ·+·vò±T“¾4}×^ºÀ­ÈÆ-`¦êpQ€´ ˜ænz|•vJ[ðý{V2e¨b óÖÐvÄÝ3êƒ×œ¼tm†W†¨?Gà·“yî•ZßMc~š×UÓÜÖU1'Ïû1¤' Šÿ:ÖQ¼b75þ8€#Š÷؈Šà㤘!2î[  }]¾éÞ©€3RfÉKL;ÀEn}=‹ÍWÛÂ=¤'ν«ûËðÄ$«[g(ÚI'>LKEŸ½]p!Qû&d àlŸáˆèLùÀv™ÓëÞôýÛ]ðš{‹üPÇH¸ÔýT‡s+ «]³]µMŸ&0Ffµû´„X!°·‹ç˜š——ÎEJuVœãgÃðŽ8_zV ÞΆdkÚ¬nÏó9¡gð7ŸŽçpyÌ´f»^gõÛ9YŸ…¡ú|¹p˜âÏad²—qx+~PÑ_>ØöïÚ¶†A俲m ‘ü6ÛV¨’o¸m±OضÌgo[ÛöW^¼6åÿw°ØÁ¾Ââ¥ßÛ&…ñsǰB0!é:¦0ÊcgQáÚM‹ÏÆwÁ¼›L´ Ël³p=4LlŽ~q“~éxå{¶8h ‚Û¸ /³Çhÿ)±ú¼ñ`ÇÒÕ°jÅ–jœmžTíHX»ÌÚcÉP,(÷pæû· cI`íkº7l¤ÒùsÖ퇣"¯Æ&m³Á6ÌøEñ¾õ[i–ÕvU-šÀnxX¸ÁŒ‘…ÂX×.b&U€#Ü&Æ(\Dâ4ᪧ“¿(úÉ¢endstream endobj 197 0 obj << /Filter /FlateDecode /Length 3021 >> stream xœYmÛ6þ¾ŸÚ?P-ŠÐÛµ*¾‰dиÃh½·dÈˆÖæ®uµ­­$g»w¸ÿ~3CR”%’ýY gžyåð÷EYðE‰ñÿõþ¢\Ü_ü~Áéí"þ·Þ/þ|}ñõ ©®p•¨×wá ¾àB¶ SVnq½¿xÅúvwšö°\ÉŠαf|Ô¬%¯Xßîw>-U¬|W§EQ–’µ‡ÝÓÒŠÂ)¥Y±\iYÂ{Ã~h—ÂÎJÎéÉËüzT»+dâ`ņmÓG––þX®€‰æª¬Þ? ÛÖ¢ÃÈô¸÷]³®wQL«XÓ÷Gß/½þë‡7Z™ÅõO×—¯ØãÖ£ìÕ“¨µ°È­bA°Êpl­‘¨þŠ|Ý­ˆã®îÂë²tì߃4uišz ÔVÓ½å  p(%D°|Ú·bëúÁ_÷ @µdë “Qlëñ™ý׌œê!‹•Žä\w¾&ÉQmÔuÝâ×o–Zâ’Õ]S”2Ø[‚hÜ‘½%Ðr¶óQ'©9ëã{ÇO-2t~ïóZÐû«Ày bI2¯ôônà¥0xrU¿÷‡õÈ„ëã'%{Øx¿‰Üa·f¿÷T¤æEÝ_¬ÈΕ\\oÀ½Þ6è3½¸TìØ“AEUûÞ?Ôàʼn€2÷àCÑ¡€~®UMJ®‚ ‚=Ø}Wo–×ÿ>:! ð‰êC¢9ad‹Jii¶èGï`¤l zEüð<¢¤ÂtÛú—´#Õí@gپ퇤5„òÐÕÍý68—³lX“JÇE…ꮄ( ÃUÄcw¾k»¿ܼîÀJ*réÖõè²OqYŠ->£ÁGŽ»´~Œè5qtè¯f×¼0.¹¯ÿø©ùm*©‹Ê)ž ªw=íŒmØ$FAB~Öv`e’ÏY÷–ãwÜch 9hØ 20ÄÃ(³d·£iŸâK%b(;yŽÝÕë!üBú˜—h 2X»_YèáÓ©FÑ*€š2%‰† D@§j’Ò‡@y¾½(ŸhóÁèÁ1ekÇÚ]x–˜NûD*™r¤9ñµ5”‹±0ÝN#)ÒB€µwQ\(†}³oBÞŒ@9P‰Š`Ø)˜>­âê4 ïÚdÞRÈÊûb „ÊöHõ‰}!¡ Ày’ KyÊ-F¸uû¾ÓéS$©BX’¦uthx‰‰Àòõ¡ ¤Èºó«cïã§â´Ýì§z—>q1Å4¾ï»=OQ5ì祅Àá~$ä½ñ{@k ¤;eíRQŽÕŸ>¬5V“ÁålÒ¾¦²Cdr¦I¸ ®ŠyðvÄà)~¡{ìšèŠ6$°:òvâ¤õ¡¿¡œ>pdËd?éÞg¾$§`wÇÃ:vL¨5;,ž`‰+>=)ÖëœÜC)53+Õßz´Ú¤ 4%°ç1Û*1Ͷð(tæ;èäDùòû?á‹E¾Y…g´VRï†Ýú¡¾YF*ð­ÿÎéø`T:lúØ_$ŽnõƧ7œÁމ•eͰM¿PAL FƒÖ)õÑ6áï³I`Üê)¿^åÇ_òã——_FõÀQ)@±¤àg_dªGŸY>6»]bj´W€ÚM ›Àž\‹XØž…švb ]áR‹àÁ $°Ž¿‡ÅJ@a”çõiPßû ñ¢Õºkûþ¡k77̃IgBØ@àí’C;ÌjË! ˆÔʼSÛ¬ÌêêŽx|Å+ö|ÞRuç³m¡¡€äþŸ”¬ ©ß –Ú„í*á&Ùç1‡Ïƒï‡¼5ESŒîz9<Ÿ¸Zà—ÄËìî1 óæ\Ÿš’vwÊIÁ.'fý%šõl>úk| ü_ [ì·2Ä~>Ôö£æÔºÝ¤Lr•“D?ÔÝðíú†•Wðw³œz[>µM¶êû}Ý=ݰ=q‘ÔVùNC»û–ûבÇY3)€%·‰ãjæß25Šs‹D0c ¿¡÷99‚¢¡.@±ÉXø~höáèœþ»ÚÃêEý°í±>LÌ là =}EÚj&3ãYÛL¤bçÐFC‘N%qËObŠë%¶äcs6{¶Ç±„*SSZÌ™Ã}UT¥t©®_Å=yîCívØï‹³èûh$déòÙŸálTßFÖŽãŽ|¥Ó—4~­é³ÔÑ33íèKGu«Fþo5ôÄOÑüŠ &2€u³é³| md)ʲ¬ðçBä“)$'Æyݧè¶ÀEê0ÁQ éð¡T¿ñ„s ¨Xï™S@Ð+ÈI®é˜G<¬f÷Íä̆Î\ŒHtÐ"<:+¦3¯vˆâÂÙ Î}ƒ\æ„ÏgkPký¹1îk¬ZAEhÑst£äÇÙfs«A úú…žú¡ÆB&7¤*m7š¶¨Œ,õ8ž´$#áá`‚>œ6Å\xh…LìG_ªÐR¤Î&ǸcIããqÎG3]n&gkøB¹{èÒäW8[‡q,Ò&ÒÙ4Š £—¡¯Š8r!_%‚Š5“/ÉU Žc¨0B“–î&N£öèË0¨¢/©gçXAפ¡ºŒ*Äy÷DÝfCS-ü)ŽžDeŽžÂéZ_æóPi ™=ߨ‡ÈÝ‚Ýè~!ü¨qÄ·G@$š™ žøÙ:ø"|@ßà‰DYÙè‰T‡ÓãÌkãB•x[B°GþJÃãò8&-Ôûö] >Âf,õ,dB†1g,[”a´¡JIœë¼¥ÍÛ`nš^½¼s–ùNwNéRïH¿|g2ÖºÞíÒm„UiXc kŽé²‚zv(¾ž».H7^„ô]jœUçûŽf‹¡û}kr–03w>‘A2Þ=Ž£¹“éøI(ÒŽàP[¿{ÈÞxwÜ¥¥Xe«àaqJ{XœË`‡¡%Žª ©:ʼÁ`ãÑï)2·f†ÓÉpPh| Ë”Ró¼¥á¸S±aŠHW 8Þëb2×°sºp*IOǼŽ7Úx 3QRwôãa¼‰i» :Oü5Ý#@ôžÝ+,%6ï.§»[ º=Þ'g%ƒÓD‹—Ùâyžíó!ÕhªK}h1o¡ã ÊT§éˆ©ÙD›€<ÌÅÉŒpþ²|KF/xÚ_Pi™Í]A‡Ä…´“¦‰ÄDëß²(úñÂ4YÑËrÓÀHQKòvÔâÀâyû0© aήã²z+eì||) kB;Õw VäÒé*F—ñ*‘p *nÉN±C ?¦ã~¼N+Ñ'Ù¼åƒ,§é„îc©\!+8éISXm,Ù¥B3|}ñ/øû?b¥Nendstream endobj 198 0 obj << /Filter /FlateDecode /Length 4042 >> stream xœÍZIGv_>¶c|(ÈEɬTÆ’±h††1€,ÚÐÌxÈ|`²*»»¤ZZ™U\üëý½¹³›¤Æö˜5Ýðf{ÊÞˆã’8HgÄÛCfaÅö_/NM{¨wyHŠúþ¾‘uU‰wËUY”•Rj_Ÿ¶Ç̦”âx3°<Ý5y Fl†×»ãíj·ý‘ÑA4»-+)I‹~Z¬£“X°uâæ|XG±E&AÜ´Çý’M'rÓš”$þ¾íNñ‰6ؼ ¡Þß³5â-Ú´=!iGàP‰~ÎÚHeÍ&½ RŽížµMKày³íNíöõ9é5ͺ¯Ûö×´Ý7¼Ï¯Ÿ5¶[,U©¬ªZ®*EÔb?üüõŠ~°³x]Òy*/êwßo|IR„ŸäZt§º==]¿ûóS9~¿½]JðSÊ‹}ýT½\>YöÖRɼ…„¦½"ID·Ù<ýâ7ÿòÝ‹/^.{1vÙ÷ûº}ÅÒ8ÜÒŽç ­ªÌ{5ó÷䤟ä 3›ümýn»?ïóá¼€(¢ýÀ‘6ƒ´’ÖH!yót˜4jÝ£íѬ².ˆÃ“ƒ*‡ß[h‘™u=·çÍéܲ<,dÓ0(¿»óz /¾9ïÒL€ÐúxxÓ´·ÍaÝŒNò ¿‡säC7‘—XI@€õFÏÉD-W²¬JRÜMÛ¤] ÖÇ$âÛdÆ0Æ/¯´,´««žÑX™gäÝKñâ´)"·¦mm>‚§ÁÞÔ»s3Œü{û2ZI”ò©7Úd%«ÉÒU´ôþ Ÿ/C #³ÊRÉô*FT(•—tJã±1žž+GÅ„€ùY30÷}Í“™V¦<Ùš´˜ªËÌ—ÈJ§Üˆ¯4…„ˆ“4•øµjVÒ:þꫯù[Mò'ã…@/€÷Åöö°½)+%ëH0@ãå ¿W`úå ?¬[²ck„œLûr+‰hxz5 ‘°Ê*êìU1y-‡‡Wß/‡Ÿƒ¾·^Ææ üþÀ°J5bÍM'7išôÀN‘™±Ugd®Ó6ÝyÇYG !vr#¶ä‡¤nSYpˆdÛu½{’Yi´ÖÏ5ýîù°$¼•£|©œxÃÜl…ÿÝdzM™@"ð ?6fcô༌*´/©9oi[²dœRêhûoË@|˜ø7Þ€‰ßQl¿!OÕ¥§h Ð[R0õZ‰ï^‰P‰=¤ùž$¼í2ÇÂ¥dp‰ª`ÆS¾™Z}JÞ3yŒ.´'ùÜo{­E­Òk¨bWCêt6W²òa(‡L䢪ÙÎû¦Ý®‡‘){CQDS?ÎŽ"ã>ñ"­xzS%káa•ÆOö!Þ?®åÑèUà4ãuÌu‚ 1ÏHÊn G1')Pù§Žmž$-ovG*b^Ú‹#˜U”"ÁØh"EÕ†“´ÈDõÙesÆPˆO&Àl‘Q S;DE:ï !¥îî@ú$ÏF6|H%P;{Ÿr)ëŦ=ÞG!ÕEÑœyï1=‹éÕVÕ)X2˜Ò›‰ñl¢»iή÷'ŠÝˆmE4'x¡1ò"¨D¸ñ’¡›2†ÖIŠ©‘Õ’@î0vÜñoòyÌ4–æ}‡ûA‡ÇûsÙ ü)ªæéo¿O 9 ³NK°;={ö¬ˆo'YvdSQ†¹>w1”¯¦ÇÍᛃӈ”Ö2ŒÀ)û-vÍá–$ÁK08²ÅuÍ™|†Ž$„*ãJ P¸É>O üÓXUçmËuTâ2ZàØ/ü)%ឪ†…T¬!ò~P¨pH2Ž•˜Ÿk }o—Cá ¬åò€Q•cë1‰ãÇ’ý€~’“wÇ}ó–%QÌl ±¦hà¬à¡Š'¿YV¤ò$dCädJrÜ¿&ÈŒ Hÿ'}ô‚«¾HÎÊÏ[ l¼ Äà U«9ÌLfTEHÊ*`Ô>×;£!¼õýÒ#²TSráªâ}E(¯$ÃÝM½>Å'ùú”‡¢ÛVÑ×u—i|¬Y«ˆŸ¥J¦ñƒVbÒPùQÒ@RAʆ¢žíúÌA;V§Éã2[%C•'¿4;Óä g]x§½Î“ÿŠæjHÀÌs”ôs‘¾NOòœ ƽ ÝXÐÅVðÐRÁ 3€ ¶nìÚHs ïÕ…kü*Z«1ÙŽ¡+i!¥¡Y`‹˜Õèd‚¶&ä8“Èú2!sUy5€¯–D3>®*‘NÂÇrô@íâd°_H„&ƒ—¬”Æ‘ 1‘¦$š È,ýŒ<}!mÌbB3FÞwB•’ð¦OÌ4w¹oÉß6y”TÑÏ·wI>J%Jˆªôe=4å–,Ú'm¥X¤³ëë¬~m¢j¸àÇÍ øýù”ãežïâQaÎëQæû ‹ËM¬+¾½¾úÃU¹øîÁ®™”~®mÆè°Ð%¢ž™øvyýfڇɡ0Ö”v9¡TŠâùë¨u`Œšq5 Ø×bå DIþ™Ip6;k'¨º°P~¢P—f2YÄäE&4;¢1ðÔ`fÜZô\pÆ¥_Wšù„/™¹ñæ¼`å|ýÜ–‹ÛîŠýÅÛ+ Å¢¦‡è+¼‘‹ý•R;7ý›ÝÕ‹µYÍ*…­K (Ÿz —RŸœ¥>ˆãÃ3N•Z âø“Øbo\»ê8Y—@Z‹£û²Š×DaC†‰BOÙ—Ö@#ËIþ†<§I9µ/U²*ÃÎ6Ú‚‹´ÕŒIšÂjU&XO£cL¹ÚB²å•ðÖNš®8r:üÀ\¼‘3–倵Êi5õéåY½›|Fº~S¿øP0~êܰ•owà”Î[ø‚¸ªàÜ¥øB•´ç•¤9N÷&ƒZñÍ}ÄI)7…±ü9œTlQ™‘WjÉ ùÏ÷JE-˜ÞÿœW~à>H½?ÇB V ÿñeH€þ—…BTÎ9ÓÍéà‡oh:–›Ÿ~é4ºÐ’qVºÿ×¾8ñ,‹!‰ }ñ/.Ýë3‘xmb—Öý G DèÃ(){Ät…fž´3¾PÿlGЕ+¬rp”:$‹Osùp¦9±j©Š ùÀûVâÿï­ZQ0ú³[5J¥[µžäQÚ;  ¢‚Ä$³þ‡Çðé¬ÚßÇ!á›KO˜$õ& Iº„)W°:œ—ÛJ L-ëeŠÌÏR©L£·ã–`z‰ä™+ëÖt{Vz¨”@‰B"ó}ŸX™t uõ;îÕ·ÃŒc¹vŽ}ºgà$_Ñ 꾜äsµ“ü¸™XÂŨñ²j’äÙ©˜»úùýëQszt×{•a¶\Z§H±ªèÉòUO©r,¥;# #sºîat¦÷> —TüÅ!5Ëè¢)3ŽñùË×YYn¢gÊÉeÒáv× „µ$©RR½˜$euîzö˜±>ÉP4Ó]~§ï!Å]ݛڈrpŒ½ ÅA÷#$ ²Ý¾Ks­î¿ŠKŠ­do»Db(ërO·"ÐÚ 4qiú`lÃy6r, Ñ¿ºÁÛñÀ™¿-Rñ:€?¡ÊÙéøÖi;ÜKÇqÅJL1X³­»óþ=™¾/;æß£ž"‰ô¶¾‚Ž"º)è½}ä‘„— x<Œr ²éOo¶\`—Ù4{Àñ©åMs°“éFD»túáÕ‡/=ÍÞ˜£%{¼ßż®óínú:M§ ÿŒ‹K}ù—/ûðaõò&ÿcdJIòEhý:^=¢Ü£¯ §PEËnÁófßì—¹9<ì ÚLÛÂã¯Ò®½®_où.ˆ4hB D†¾;ƒÜ]qfQ 3 žŠ>&èSÂËŠR‡ùó3îeú©,r´ó…« z˜ü«GkodXÊ›øÛ~·D'­¥¿|ôˆ:ŒT“Œ eEf ϸèÁ©ª Ššê|ªf¨Æ‘TßÄ®’óà ©7zaÖ…K•ÑÓ¶^î'až™ÁþJËèûI¹EQW §•\`øÉºñÍ£¼[ÚS7,!+x¡bÕz!y¬¤’äÅߥvÒ!DBI[¡ïÚ¤½—œ ’ÍòÒ¥E¬?.¯ù¶C‰,œ˜¡XuÎFy=®vÒ0ŠhÓ#–å ¡K)外Gæîôž\ö…÷/RwÃõ·$ÓÖ®QJ¹ŒF+¤¨2,$Ýš––ä èéñ³•~Ôx#íCæjP^îQa¹Šó§ºìÄl³<êFOa†~ùð¡ËÎHnÕõÔ7'vÓîL¼¢¥«"òÓ¹ë¥$uo©»5’º5®€¼>Ið³ˆTÑ87üŒºi×§¬ {î"_…IX¬‰Wa¡’¹ùôxCƇB—}ãÿ¥°©!#­„x™BR_ˆ†}o–¸úoÁõ(endstream endobj 199 0 obj << /Filter /FlateDecode /Length 222 >> stream xœ33Õ30S0P0b3cSs…C.=C aŒä\®B3° Paĺ@@`bdbRâäÉ¥ïé«PRTšÊ¥TÏ¥ïTÌ¥ïà¬`È¥ï 4;–KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææµØÙqyº(h³?¹d þæÁEÞÉ/×ïÿûßÿÿÿ÷ÿÿþûŸ3?õãÿÿûÿ¯Xgÿÿç†ý‡ÿä~ÄÿÿÿëO6Pöëÿÿõ¯ÿÿú·žûVë…M<ì‚X¸\=¹€]:endstream endobj 200 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 210 >> stream xœÇ8ÿCMMIB7‹ƒøïùR‹ ‹ ’÷RÈÅÂtheta‡|øˆùƒÊ÷™Ê÷˜ÊÆ÷ ÷Â÷ øïøt÷Bû»;\û{û+G)hû'‹3û.ãGð¿ï ÷ åÒêµ÷)‹óü"žÐœÊ­Å¢±ºÀÀ‹­°r5U~W|K}S€_u5eNjU]ga‹[s¹Ì¾›Ñ—¼ yo =:O¾endstream endobj 201 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 296 >> stream xœâþCMR5‹uøíù.‹ ‹ ’÷¨Á¼¸02gØøˆùJûˆûc‚ЋЄmøe 7Ÿ vñ‡…endstream endobj 202 0 obj << /Filter /FlateDecode /Length 2388 >> stream xœíXQÛ6~÷SûŒÞÃÒ{±JR¤DMæÐÃöw‰ßâÑÚŒ­Æ’6’¼›½¢ÿýf†¤¨õ:)p8ܽ\¬Er83œùf8Ãsžˆ9ÇÿþwSÏø|7û84;÷?›zþ|5ûöUšÍ‹¤Èd6_½Ÿ¹b.t–ˆ<Ÿç~e1_Õ³7ìÇ~¨êr°‹¥–*) Á^Û„FÌv]Ûá§N¸HÙà?yÊnËÃÑÆ•¿wkö½ç`røÍµaëÅâíêo³e*’4×ó¥I¡U>_mAt}\,%/ `Á–þržù™Â08©à &à¯ň¤0Ö9* …̉=qÕb¾z1[]¾a}µ«KÚGŒDÂ¥YÀ_‘Á.1Š@ÜdBGÈ(U8Ö°&ÙwÒ.qƒ;vÆ.//£À,El¹\..fãÁœ ¯«]S½O‚Q Û´[Û?¥Í¸Î£)ßÓ‹hJËQY^dЉdÑÂh­8z—Ðn\;÷½KL‹8xù^ÄO1ª·<ó”Ê…9»H¸ §¦ÐyJ p¼I¤2Îï?5‹eZ &Û”=˜8Ki˜Åy4ƒ`w ™ƒáòq²($Û¶ž\Ñ´Ch¶/œÝÒžL‘p&ee³›lc»Ý=޳„§Š #wt àŠmmœö#7 ÜÊìGƒ§…ÛÁ)Ûuå¶²Í"°ž,–JM§|YÑJÈh¦M‰vÊ9ó`‡`Þid§i¢¸ݰƒÕå§Õ‡Åê×S/¤ Q. GŒÛú戟æ…?UN¨c¤1¹fÇÚvt"ZÉYÛØQ¡÷˜Ü~Åž_]]ù#ÉŽÒ ñ[ cþ4žöUF9"ÀÆQ´Œçž;çpúÔÃd¹Ì$*OO GŽÌÐì)ë77è¤(¹JýQ³œ@vhwKç?.aŽÀz( þ‚%¥ŒjïÐ6#øÃIͶž­Ðìz„ë(+cíuo»Û…´dˆr¨Ú-¢ YmåÌ@rfûÞƒâs¨Êèuš³Ú–ÍH+ÑH..è9ëlÝâÔ©y(ëºjv@ `A\¾ïÚGŠwö %P¸«v€ÚÏÞƒE$¸Í‚!üúÔ)p>6<ãSU%§™ Ó òû˜vÀ æyÌ•ß-Ý7ªx®QÓ¡„ûÄgJÃ~;—ûÿ¯¼^Ëld‰ßÄèx;šh²Ç_!?Þ&ßN¤g¤.á8kÖì†5“—7Õzuf˧^;qn=%!žèË5û/ŸÉZ}\/~‘ßÒö_ð²-`V0ù‹•ï?ÅýMÏ5$˜o;;µÍ£Ýå¡oã弜»‹if’”jŸ™.\Rz@Ê/„§xyéH0Dý¯ï]*‘)–§IøÜù«f[ÝVÛ#Š“¥}¬Sˆ÷Sã…=¿“ä×ñsŠ´z,Ÿ(¡¯C„< JƒÓ†²žmÖ€„g"Ìcº« ªH%l<“ëœӊÅk–™R˜ØaßnŸ}ƒIü_¯T3•-ew‚=éi­‰÷|>Êù÷ ‰ÿ\~ªêcQ †q ®™m´uå,¸a4¸»‚»kdTõHBf–YwÞ“ÈÁÕ{î»DM|zbÄWv8vM P¬ñ\åežNãk³ä^ÝÚˆ–ÕbÑõXöÙ)p+¸.'B:{n'õúÐ@Ëf–°‘î§¢Ä5nÊó~a0h»uÊ3¾J2£ÒÑ’2TÆnëÏzSv%`ÈvÎFcCÕîÅìAÝbêÐrÑÿá–£ø/·.|Ëñÿ>ãúŒç¶¯¶KJ Êší{ÿ †ê°ÂÃ\i2ŽU|jn¤dt*º´Þà·¤z£j èõ¹ÅMBMôÑÕpGH„\¨÷ïF‚ksÁ°ð7’ø¹\äô޽gŒõU™¡¤ÕLº2-(ÒC¼}©q(;¨ä†}r Ú‚W¡*8{ù*ñ“ ò7[e 5eW±öÅÌ…}ˆÛ#ʸ¾=öC‘±òæ¦k¡:ü4í‹(Ú·”c óÕÐanÀ²ËØnçÜA c¡Ѧ$ê¤X¹Ý“¶±C‘CŠÚX?*°‡£áuj¿|EŒ(Ïšü3­ D~WÎ*`ÊêðmQ…û\g©øÙ>Ê7ì7 ,¤QF.Üz=fÍZ‹ê©TI›ìP;è®ýï÷ÄÐm–Ýd§\ è뱦³.ä•VA ¤«P–Õ ¥#ð+@Ï0~FÀÝ®’ÞVéñBñŒ¾‡#èºOßV×U.q÷¶¹`V»]hѪ ‹&߈ê%¾h€aGS—MCI óíRìØÛÀ«¼ÈŽÞ5F9‡Ã¤A 9€Ên'ó T4Õ?ÁàÉÙ¢øLœ|ᵨynBSÉk œ€ÖÂT§ôžâÑ©šÍáHWŒè© ‚µ&Ž‘ÈÛ—½{¬B~àÆ)Ôñý!¬@&ì76m²0ž«îRë½[Ç(„4ë²5dïÄhyZ‰M‚YЂRY¼b”{ìJ—3iMôÛH©¼³”¦m?G¿ ä¤ÀÊS9\i" ÒS¢ãYœdÀ@EÏH•“p‚d°ïÚãn7"|X¾šÆþä¤@µý÷ÀM¶ívâ' † 9N'ÿ 4ÇÙ» <»Ìè½Å²›Þð´!}n\¸»ÆC ‡TöÕë!¼aéq€È‡Æ'âÀqy”òÂR1‚ÆÂüôôâðE’‰¢øÃ÷IWª{À=5ž¿h !3_ÂýhLN — Žœ~\Íþÿÿg5endstream endobj 203 0 obj << /Filter /FlateDecode /Length 3154 >> stream xœ½YK“ܶN®{Ì5>lé"Œ²ÃàM@åMUT±c§Ö•ÄÚ›ÖU¢f¸³´ÈáŠäH^ÿút7>ÆŒåÊ!Ú* 6Æ×O|¸ä™¸äøwÍ¿<\|¸4zvÍå«Û‹?¯ì¥Ï¼•öòöþ"Ì—BêÌqy™s› é/o› öU?TM1”ýËÍíÊf–+¹"óFç—·û‹7#Ífk€ƒ÷‚½ö½±²ëÚMÆ…bC|äŠ},êS9}ùWwÇþ98„~sãØÝfóÃí?.¶Ëµk7§ÍVrïÛr`¬aÒf+Lnè‚;ë=¼Â0°# >£ @á­&öÄÔªËÛ›‹ÛoX_š‚æyœ'2.ÅþÀŽ)WÀE£ÓÚäHl82C:.¥cÜë8ú¥,·Â¦½[öâÅ‹iUTãÍÛn·›ç´øëêp¬î³¤NÇvígàw>)ñ-pz>)@Ëö˜X=Ÿt Tbz{;}røÉ„ƒ{›-†Åôòvâû|z£xÛ•$T.ÜêG"ÀÙ€K=å헎äöТrO2|Ñõ%åàá@ÚÇ¡jW‰ÇÛ¹ÍÏÞ€öØUÇá¦üXÖ× á|¶ž•Y®½ ÄoØ,àá¹)Þodžy¥+×–Q*Ú¹¸NSütS½_YA™LX°¬¸ÂÐÆÁ(Û@3nK±ö4L;~,º¢)‡²ë“\N³CWì« ;°‚ÕEø”‡#NG¨½7ìãÆ@Îo؃v¬õd–÷iŸ>í3éCyd³û®mÖiòÌŒ¸ÿïx™ÊM‚ã¶jë²AÈ À9ì¹ÜãRž@ƒVÖT?ãòN²ªŸ‰RTjé¹Òl·Ù"ŽsÑŽN0“üh_"âb\³NtûìݸGx=€¥Àä}°î\æœ<ƒúðPe³]QÇ«rknI»ÕL¶cv#þáÀpæc± ǯ${?Ô¡ì¯BQ-ýi¶ ={˜@U¤Õ.¯¾ÙüýõÕÄB '—9K¨Óâãä}ùît8TÇÃg`®‚Ä€Áé¹HŠ}À=s¾CZvª†2~ì«?–t.8ºÍ¨›r¡§83ÀýÓ8ö"r {q¬, cúÜ'÷“žûr×¢.¿æ¿¥Q¦dº»©šk¹‚eÃ3'Ýè[û¡}ìi²ÖBp•9kÏpSÔ‡¶«†‡¨éL-+îÉJ9ö›6IÛ…M‚5ÄÏ蘎íWkA–ýíØI֕é;öiÀ°O°\xã Á`Z‚óÑ/‘ŸxÓ0«ÍC|…ÙåOósݕ径䋰â8gÛýgÀ¸â8Œ°DÇÞ‚ŸWÜжÀ•=…W®óxH‰Õ•ñÜ?9Dx½GLok ¸tðôÇ]9­3´5ì †He  Bdâ vF8„„ kÆÓìÊxžgôaƒ+"ƒÎBK,•¤ó™¤y1(4Ÿ'Èð( ei@ YÚô„Ë”Ö#ônÈ-jô\EêJz³±ƒ¢4hØkV¼ëÛúD†¨Vâ³êC.IFQ{€§×öÄœÛ}¢tè`[}˜9cXZM v:îBö`3c¥8‡JÄj  ÑӀ­ò¬Š„ú*È… ¬ ïÎÞ†ò!žÖ I"Qè¯QÝKmƒÉëdñ¨ï_Ú:D 鵈4w`5÷Å©¥Y$fs:&x °Uи5¤!jð*³ÂHöþ;„Š£2ȘûÙ›I ž-¸Cb™½p+y¬†ípÊ-eMeYl~+ȬÓˆ Ú®¬×õñ[{u†;:hͦg0ò¶)?QxTÒÐzp"uA>Žà†¹èÚYH&öëgÁÑý#±'ƒJ|7H?úOd¿:¸|EéÂfÂq¦t#¢Ò d,àæHéb.†?:.=ÔÆ3š¡¤Dç2-öº0ž­Â¦"`­ZógËBêÙiÃý‡n¸cÙwÅî¡:–oÞ<Û·§w55*´gåcÿì‡b åNÔâÎ WNž~™—Jh³ ¾MynG!’];—E.BM¡:q€¯¢Ür-ÕCÅìó³€¢ò°HñÊï˜ 9Hh÷eGDšVßµ $Ëe‡Þt-ro1Eãù›bѼîÊ4@ £à,…„¥í-xáƒÇ"O…iwì«Ó®®öeqÄÃô‚!130± bãfÉ@dCµ|,‡\ȱE¨"É“‹PCö Ô6äxD¨nÈ­Äe0‰!]z̨x“9¡—.òóô7ÇOíôoŸ¹±g??-º„íl?·Xj<ñû[ÜÍVb5í1ß$ýë\ã…1˱=QÐ8¤óÂS-œ ¥É™ iªÔp¼}$I™°Ìypóc­ð4·…Ç ‹Ò§8ÉÂqÏ’~*n±ÝaØ>­ ®èØžh–°ÇcF OCZÞS¹G«s”¼ °ŽP»+ú2ŠŠˆkå4‘Ì|!æJ…9+ð›ƒ3®Ì!Èað§ÚJûOý0½c‘3ú¢žB¶â=¿Þ8…0‰ºÀ 1_û³ZÌ!xhíÑ^"»yC¡í©…+6ËD ™ ¢™…vH©«tÖv™vŽ©ø2Š4jì[ÍDD¦Þgòœ‚òIsŸô^0ô˜èÍzÄŠ¶œÒú«T)…v’Lݖñ zªÝVr*{&#«D­'VˆÙ™·á=Z¤XLSÓ®v–¡Uå¼Èiþ_ABãÈçôÔ6Â÷œÞ§yÞŸ­ ÙžÉC´C>TóÆ\úš'gfrƒÓlÓR‹×ôAÎãS È[Éf19-QßcÇ#ä×k-h·`Ñý¡ÉÿW‡àKF®`‹  qf…-„8pæ‹6pÜÑÏåd2ÝF°6‹­ i9‹—ßS[V§öWº2»ŸÚ·h« %ô²ŸAOíÔËÅÞLÓÝЇ5Á0Á1žV,tpÃ2= ±ÿ"v’Ð6÷á5ˆ©/*c«f}—‘5mìæÍXö顤FOÍו§:ŒÄ:vÛVJh`—ðÜF†UŸÚ·è+ê/ ÀîÇN칯¢ÎíÒWé€wòUA ;öœÎÚ·¨Žü­Ð º=%´g†ù¶_¦£™u*åZ€ãµ®ò—éZ¦™¿Ü¦% ÃézZÃw¬nuõþÕUºæ±pE7\ïîXsºiÜ+0wjBÝ â4ŵ¼Û\­µ&!·Nb.¸ûëg¯¾ùæ›gWãùÎ(àІ®­¯ëª‡„6Ô»×ü* ïbÒFRpÛðñnÓÚ³÷§¦)º'{J{éùâV鿬:ÛîwÅOUsj¦K;PkYW-ñ~Ò|.K|+÷ލ¡éj®AžZUع´¹gÇ«‰™´ÓóÔ…<¿ZDÆßS rºÄ+ÅpÑ'_N<Æêx¼˜GÏt»‹7·ã-#FÏ4ÛšÕl‘YJ¨ŠÍKƒ}˜q‡4³s¼iÛ¤¸v$cPÖëÌ:­F2îU9÷Ø $²é†ŒèæW×ÏÓMÇÒ}þŸ.®Kûõ{kˆÁ<ŽxºoÅý¥‹kO$^..®áì׊:k©|ÞbìrÒvê—u{ñoøûF ¿”endstream endobj 204 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1135 >> stream xœ%“{LSg‡¿¶x·"s=4,êÎa1ñš8³èÔÌ!Ó¡ÃXŒÅQ¹ZäVR-ˆµú r¨Š‚g 8(f•M3wID“yÙLæ’é®fι½%Ÿ kç÷ßûÏ÷þò{ŸGA"”D¡PDj“¶ì[³zõêð°˜.øx6yD© *âôÒ‡úÞË×_út ?j,)ÓçäŠÙE´dÙB¶’$²ì$‘¡ÏO¬ä¡"QñPyDùTõ4âõ9EõF=§ÜtŸØ/c.(|ƒ.ŒQá¹`ºfÏñìZ}ñv}ÁfØ{;µrN@{§â[ ¸_ý×ár}ŸÅIl!ëÒ|ÃÃDÕ!_OÏ…ÖaA®ê)2ÀnȤyØ_ŸjÌ/3æZò r:ÊJcµÓè9ŽcÄéÇ6\fÕ2®Oø#I¬0#S4:7/\÷öÔ”Ø ^˜IÒa§ŸúÖ¢Ä=hÆeHÅêªf0Sa¦ ÿððpÿðg»û3Rvé¶[DÎcJû¼Ð†ÀRbÃ9ÙàG­Iýr:?.˜ŠnãÆÙEšõz¶ð5ÑÀ ßÝg-6|Ôm<Ÿ}ÍâzóêÔ£GtH:=—gKNM³ÆEô`ŒÄ\䇺Xá n ®Òô6y½@¯ŒñR)ÿ¬¨IÌÓ—r ƒ¾‹Ì3Ó·{¿p‹'-uU§-]†iÇ(ÐqNø¥½¥±[žÀĆ<ÛÅįsÛâìëò='¤‘F·|à¶vXÚ)î`‰š•ü{{³’³Òú?ü=pÃ%¶:Û µ!Ô°²j*0FÆ:“z$tàÆPF.ùâì»ï—³¨Çc?$±L~ÿ`v{:Pö ‹z›%°¸×âbI`²kl¦còþ8XÇ–™¥`I<3=wi.ówÏ>ÃÈñÑÊ¢óâ){£Ýi£ì(6°ÕÚÒŒé°ÊîXï†SE? 1‡;†p½ü?vÖßT¸ü’ëtî|’J¶ag²9['¥ëKÞ‡÷áƒsÚKY}·+oÁM¸×7òUS‹«Z­ÕMÇ ê+jÌÅY©i@3 Ã]r©B®Ÿ€‹t(âF×ã§?{W½#¾@éd\þû-ËdøúsTa"ª~ŒþD‚éš cµò¡ íÀ@%uðÙµ™yð!e‘¸»æê¯¸± çOOêúÄÔóÛ è2®èdq?øh­§ZÏȦOlc@¡b•ò‘¡R¯änv7{œõ'ê­p‚–v›{{ÜÞᢾ‚¢*K©h¯³Ûlêàì`?U{’ ؕۤ_r”{³.a?ă¡;m¨’¶°M?9Ú1)þÃMÁCG³–ÖòkØJ‡)eÅÙ™ñ25>~ªùÚ÷×½ùAaE¹xÄ|ØZ©`ô٧úmÎ é6»Ä¤öãÖ<ð‡!ð„ëóÔJϯðƒjÒì&qÑâ|Õ™ÍQ‘„üZ†§endstream endobj 205 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 598 >> stream xœcd`ab`dddsöõõ4±$»'ü¸ýS›µ›‡¹›‡eÒÛBÇ÷óï`æŠÊL†H†(/°N†mŒ…L ?:ø~J7.ßzú»÷ó™Ëw¿ùþê5ó÷Þ¯¢™Y¡ÝݹÝe3·Ìè[ß=‘caÕ¬’ü¼â´ÈÃ%{vnY±u‰Üâ°C•›»9¾³Ÿø.¸|F]wGmW[}»|™›xp7GrÙ²K?[þY~þKÖt÷v¯ê^P›ÝTŸß]ÉQ:§fÑ¢5ó¶öž“™œ•Z*W¹%v%PÛoïßü¹u3»ûfôôϘ ¿äæ©m{º9Ö,«Œ.¯lÊ”çûqýwÂò5Ï·,ÿ!¿œññ›•—™øÁ+Ú?hÃDŽùÕÓ«*Ú*ä:Z›³ÛÊË,$Z‹s~ u4tuÇ›Øvs¸wŸ™{pÑ©•7䧯ž0½{Çî¤ ¡jq¿eª@–Îì™0­Onɽm›€>›3¹¡¸¤©´­N>ú7_cZw|wUw̦ìU…[Û–uoî^?kÍʺ†ÄÄÈ‚œä¬°î–î˜î²5'vïîîáX7±±(«<6bwÚ¥ßùo~\%Ç÷C£äêï¢/¿³\Zu™ùûŸ¬¢³ëæäæUÍ([¶bÙòer¿þLm¯k«ï®âˆÙœzèýöïr³ ÜÚÐ.WbŸ”ÒÍQÞ6cá¢Ió¦,”ŸºlÚ²iK§,^ÿ¬zßÔ¾éÝS9v%o шEñÔÒ‡Û×oèæ˜=¥¹ ¤µ¦ÈWžOŽ‹Å|>'¸Aendstream endobj 206 0 obj << /Filter /FlateDecode /Length 2957 >> stream xœíY[oÜÆ.Ð7¡ÿ A±@d6ö2œ ‡3A \´…k´ŽŠ° ”Ú¥$Æ»¤BríU‹ö·÷;sáE¢í&y*PëÁÜá̹Ÿïœ9ü~•&|•Ò_ø{8KW7gߟq·º ÿm«ß\œ}ùRª•M¬zuq}æOð*1©Xå©N¸°«‹ÃÙkv[ÝÜîï×¥l’j¶möûª.‹6¬¤†½«úÛõß.þ²Ù”¬•\‚òÅîŒÖßaCnW:±¹4´A'™Öà·á‰²Ê Úøšñõ&M²4ÕÜx¢3YMb•°ùjr„õÎSŸ± Â­ýÁüÅù«DiËÕjv$Yor+` É~_ÃpÃúÛª£_Ù(Vžˆpšq¥+wû2šPcg6ZÍîÚæj_âg#Ëš«µÈñ„Co==i¹Ð¬jާg­aÅšƒ®Ê%ëœg6\ÉDȪòÄf*÷r{¥ !2æŸsÇæ¶ñl Å»¸ƒã‘mnXI‹$‘dÛ¶,úr·†ÌøG\ Œò.È$÷rɹ O±uväiH°ªϹemïä&°»5¸¥\[ËîöÕ¶è«¦Žª[Áš:*gsÖ\÷e=¾«Ërל®-<×ú…”+DbA¹2º¥#£rˆ÷‡Z*8! ’ÿvm$å8»¤òqTÕ]_ÔÛz!àÀ<ƈp¡5‰ZìP¬…&vV¥bWë—Ü2w˜;Uu|fо¼iZXaOkÒÂÛu–ÁÚ\²b,;OŽôío‹>²T€‚z söÅ@Ïf¬oÀ’ŒÁšÉuùÎéïÔÖruñüìâ‹×å®l'¼‚„"‰¥³†ÎÁŠòåD  söéijeDŸßj™Ÿ”Û~ “™Ý9`Ulëð ,›c|Žàa}n6¿šQÜ «í5¸«ÝË,g‡µÓÚ÷}5 d2*NIçÿ£)¾»i¼T,¶?H©qÓ–]S@³C”ư]¹2öA^Žl|†âyZ§‰•\ðág¹D&·B AÐ[!wȘ„Þ~cDoÇѸ„Þ^I°èÑIC¹ˆ’éá3Cü9#Œ®ùœàLOàLš$G)ñ ùší—ìÌDæbñßá˜pâô¬»Ø“ɲ¸\¯—Je–£e$LUr#„ðQU’¼‚ò]Á½ÕÖ…o*rvÖ¹â@0U$€måþ.îT>y›™¥î(–J× æ) ™~X]iP6ç<_PY'ÚØTÏ«sÌ[h:ä- ×j­"0 cƒ^aŽÌß6‡^ó¨]&F´ ÜweWÝ8ìÓÀß¾­NôŒèQ2Ôlí2íÓz8¤ÙÕ±»¸ž’›Õ}Ï Vï"s²òÕD‘mqìÜÙÌÕ¹]ѱÒ#ºªØ‰ó•‹×1ËÁÂ¥¹Ê3F»&îAR6}üÁI¹íзÈ“g®oqÝå Å€/. - ‹Ͻ3¬ˆiW©B¬Ý‡ÊÝR‡æ“½M;PAT_7-d©Þz°UvÜk] úgÈ‚tÀujWyEÃàèÖC#s< ÎõÛqosŸ9ûfá)×h nG³›ö¨l—Å&²ÒWÉ çbz LYìéŸ[`Oíu^ĘT÷MV7JU êy\wµÈmäö]Ѻ– ­ë=»²?û¤aÞ[ƒÃkDt#„ua‰i}•ð˜ŽÄ“”(þ¡}sSáìX¶+)Î|‹Õ£dÐí*tR¸Ò@¥ -M[^ã ÒÓøJù4’Rº4·Í¾zãÜ*áÊ}uÑû ÈJéÌáÁAÒ­§FvžUIÇNSnD3ìAJdÂC€‰È(Ÿw'ÍÐij:ÙLÏ:YžÈ"B_2g_ /d]Üú GèoÈâÞ¥S«²ë`n@Ñ9ËáZ£ýA#§W&žp@‡Å'ÒŸ~åÑi7A餖Ò¨ÍÁm€N ¸}¡ëñ§fÐ.ÃéüŠ6KàšUK,D"²Ìè¸ûþÑn®¥°ô6…QèFA¡¨MtDå &Œâ I8MÇj~æüÑUtffl®ÌŠþC§ª÷h_Ö [á.7rös ~Å!Ù‚—g·Ö,‘âa]DT fë©Y帣§ñúsáã,™%âO-ž7¸‘áŽð'Í$Q+8 ˆ#.ˆi¹rhµ8Ÿ…õè"ž|8äRº¨ü?äbÈ¥?=䌻ÝRÈ9¡q«{s&s£ó~öÐa³°ÈI#ÿô&Î 2o#9DÕqttÉxŠýP÷|ªãð4*A&sÇ9ÜŽüjÊÒôÐØ?ö:N©ž“ù‡¾ýô0fL2HªøL/‰ð€‡ë%HQk× ò3·B-Ï4 ŸÂ…óú䤦)ÔQ~ ©AŠS76¨èÄ6¸ÁHw/DP£OE=þp(*œ7¹}(š÷…â0T#ÐØì'¬ôÖq¦íHÑßÔ Q¤-™ù°F‡!T‹ÓóêÍepÇ„q×m¾¥(>O'ë'q>LÛ§F8Éót&ÙDØòP´÷—ì0N³ôünb¹‰VÙ,üs,sT»¥—nÂyÿXœªÃñe4 šú+#gÍn=\~ æ¢ð/Êw}So^w·A·wh>³[u¨:wê©>²ª/Ûpá^³—¥ŸUÇØß6»Òeü«‘ÆM[쪲îG Ùî›®LJ4‰›ÿQ®‡ûy;Y¿tdúf¿ 8Ïq¡ŽVivž9ÃuFJªlå&ãƒI›<ÍÜl·ô /%ø¡„²^Oö,ξZNý¿åúA]{6̱£Vßö4S!jeÛÒ—A¿4¾ùS{éã˧Y”Û,rœ¤¶Òå“Ê(4ŸìEñ)¯î<þ±àºiÕ¡¦Òã©û.Èd¢”(ŸˆŒ&ê9³ôèhò%Lë‘ItÎx?-aÔþy¾ 1¡°©›žwÇö®­¨­ÖLkú0'¬ñÓ$7²w›)žÃ¼ Ë_n«ÒÍä 7aòCÝç7ŠZ¡àD7ò_ÝÈ9ЪêOk´6®×Ê5!±{“Ù0ÀrÛè»×5:õz[*4˜ìüóä»+RrKŸd? ,8$|9•~€î‡¾É’ÓiÔ8#ަ80”hžS%ÜÌ•>ÜÙ”0&1~þGZ]øk3é>ÇJ ÅÖ~€êöäôM¨;RJy—ÍÚ«ØT=êÜdôÅñpU"W^-EàZ»ÁÓF¡ƒN݇cÆ55qÏ.ÎþŒ¿ÿ¡µendstream endobj 207 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 235 >> stream xœàÿCMMI5‹€øOù/‹ ‹ ‘÷l¿¼¹iJŸøˆø©€¬ø¬÷ò÷AÝ¢Þø ù£yžqojpjo¡| ¬¨©©ºüt™z‹‡zЇx…zT^RY‹t„›¡ –“ž“Ÿ“Ÿ™”²è™¯“Ÿ‘˜‹œ»]³L"Sûp}›‹œŒš¡Ò»·¶‹ž–€p‡‹~…x„y^ }i„z‹‰|i†}…}‹zW¼gÇôÃ÷¤ O ]ø]ƒendstream endobj 208 0 obj << /Filter /FlateDecode /Length 2953 >> stream xœYKoÜÈÞ\uL€\²‡rØžDdØOvo¢V°Á&H ¬WA/@ÍP㙡Lrl)Aþ{ªª»ùåGìƒÈéîªêz|õà»U–òU†ÿÃßíá,[½9{wÆé×Uø³=¬.¯Î~÷Jª•Kfuu{æOð*µ™Xå™I¹p««ÃÙ5»º+׉9kÊö´ïðÙ¤Y–³»¢]¿¾ú+ÓvDÌØ4Ï-’¼ÚÁñ_­“,•Î)%ýæ)gX‹;ËÜši®Œ`ŶÛ?ß43Š•ïFk§b+:uN³®ŽB˜Ý\§ZkçI3¾¾úל³JYÏü(*XµœUÝ7màÌYÛÇ]ÑìèÚ¬lšºYâçDšsМç—}?`°¤G௕qñ@‡ N¨=æ©U6Óqóûµí.Y±?•ÞdÎåìtÜ• 1KŠ ò$œ§N«ÜüúXîÒub„ o{é$ÈiØ×cû”;\ K±m}¸_'ÈÂêœÕÇò¸Ž/]Î;ËŠ&s ä7ǺñD4ûpGIäN]u|88ö¦)vRÍá-SSªGOä•ìû²õ×£Ki¾ºúÛÙÕo®Y[À@eMZ…GgA>rnüÈÖ÷]u¨þ]6h¿9V¶m`l-ëªbO^ n›±;mIP•Yï‘^侩oöå!®ZvÛÔñ –E²«åî‘xyUɵQ=›®bd¼ OFVðèXŠ¥@¸ áæ¤`Ç-j\ bN¢I)Atp[6eX÷¹<{ì†<ÏRËmô¬_"yºv ^èR)äà…Ufâ¨Úï3²qÓ”Û.õ¾ÈN¹Ëg¾ørdAäùà=!· µ­àUlnn8øÝ¡>¶]StqL3‡ªëý Mª@N­@0:>âC]T›çœ”ôϵU ÀL{Î’¢¤+Þ)ÍÅägò%`?PéE„¯ÉHj«!Vƒ%ƒNÀóAô teÔÉíé¸í`hRy/šèB*ôpÇN-…–Ê= ãŠf?–þ<òøîêì‡3üÍf Ü•±+£L*µÄLÁd*÷Õ/%hTjŒ¼±M’’í╜› ‘|½[LFeºäPÊ%óGƒ[×»úoqsqoÍR\ ¨~ó#¥¹Œ+±H®—™¸÷î‘ÉÔB^ZJ‰:͵ˆ{1¬°â*€q°ãÌO5󸎞ÊåÌo´ŠŸZÈ$’£Ö»ØÆ4‡©-þª!’ÚmSáž‘¹{nȫəh#g‡¢kª‡°¦4BÈ!\ €Ñ•À[¬QñN/H± kJ­&Ê5ºD~Ž›-ˆ!—L–ƒ dz&›Â<ð~óå¼2™PõY›¹‘ÍD• M¶h5›‚7wÀ„ÉŽŠ€‰ PðFñìÝfhšc'`Ê5¡‡rŽ–³ì¾hŠCٕͰþž0ÁhH_[Ê.\´A>ÁD£rÉšà+N–뙯ø¨£D¡zGä\°®æi>в®–vñRðÄûêpÂk$¶‡ò\bªè†Ä4)¨\*r#žµæÔ<"URô2N=\šSž´|È“p…çÒdZJDÁ`ŠìÐÝ ù¤.ÚrxöøŒ{iõ8$æMy*(VŽ„NòTQ>MÀ®Ò¨`Ÿ¯>5*ÕÆ@!š &þ_'zÜ|‰‡G¡W“3?›±±ù¸È‡H½­‹…W£#ãð›0Ább~™ pœ¼rdó”Î6½Í ųT`X‹™Ïy"‹†ì•n„‹Ó_<eRáC5nÉcñŸÎ„Ktö‰’ææ›è•Ìgg÷ýê ªÍ p(ýc«óDñØz|Ô¼3šAïÉ0pšA«Cúüý\êYãX”‡ÄÌ6ŒóÍEO$u—j•`'¤¥õ*-Óp1>uÛLKþ,òL|fS˜„-¶»¸C]a0Rt@x‰âï 7¿}‡‰8¶÷X®òç!j* Ôã„3ó¬|št>Àègxˆ•SùXsŠ ÔÔÿ@ÑA@樞ö•Ô…ac‰åE* çÛr_Y€·˜‡ãíéþ~_ù®Ï—“übz±øÒ÷b¡P/q3ÏTÍ›ÓaÜÆÌúny_‘è š”ª» GœŠ=r¨Õ| ·6r쩼]ºàÈjèe^,ˆ5ˆëÃapÉ)èÑ ¤ëé\>GGEÁ¾ðièAö‚´oó™E>•üö‰€“˜Á˜îõ3Ò:ײ™b }århÒ­À¶9'#J?˜4o2Cœb=0SÔKë.¾p¨FM$daê;B’Ï45µÁÄø@Ïð„·Ô˜(¨±Ë}uWû:ÀŠÕ¡è`»HGö“/é°/÷û^@ ëý!Q¥ª oço|¬c­’Çžº»v(`º~ƒV6ß—­ŸŠøšÄ Å<¾+Ñwï8øØÃÆJGŽ‹6Ãî| 6gãy‚™ÎÂ#Ç:)Ôâh€†j#f8'Z˜áTÇ~hhkhëå f3º@uëŸt ùÇR²>á¯(b@åŽ,ém B¨ï8* *÷¶#Œ¢S¡ãñÈ®@X‹Á®dšìjˆò.¹)|ÿÂX; [ÎýØ ¥ê¢(Ü·ð€uóv 'tf…`ÞêxñQ‡¿ßÀA‰iÀJÈlAQýïX·Ãã|Vdš[dcsmY'lÐZ] ö€ ÿg°dx $#7Wû®…p‚„7úæ ™Ï‡eر¨s9Þ‡ñÔâ¡k~þzÚ÷vVYÿzJDÊò%s\‹/;Ž×Ì\—ŠÎŒ˜í­á8Öq.…h1UY@xÂ3ÇÁ?þãïWKŽÿYöžÝì¾<ûîqÌOY>Yƒþ3sCH€÷U¤ê¢WF‚üwS4Måwy>ïýw£xÈ¥ZG+J Úóøÿãq^Åaœ›þÒ~Îi9Áaÿ ÅweÜ—%´ÈÚzïGFJ:3¶Ãé·ÿx„' ·ÓÉ?UÞô)gà!1v‰Å#TT‡bü¢ÜÀŸƒö¥Ü"±»cõn\Á ˜ ¹Æfúñ¯sá¦Ð¸T»²å`(¼²ÁÀXT¢û8ì.âoPW ú¬^ïG]zÎ:V'aΩžïtQ‚…záýørU½'-`1ƒCpØ„Y¨2/l÷õ:NØ>à‡3©}Î…Z®)ý„LóQµH/òã×@ Œ̸?A"]•©3º†¯ÿˆ9Ö]uSuU˜:B­ÑK¨òéÇè 8 ~m >g n§é<qìEÎfþ#àBÚ™~ßE> ñ{Ü®Ú"°žÇZÎ èz ¾G¿ÈI}>ýRÖ”Ü){Ðð¼ÔrK€<–¾)ô#Ì=„†ÿ\ÇI-b¸p©µ¹óSÛûùáì#Jª¹endstream endobj 209 0 obj << /Filter /FlateDecode /Length 2898 >> stream xœ­YKoäÆv®:åqõanÛ“hè~±NÖÀ®a Y Èaåw†Zј!e’ã]å×§ªº›/Q’mØ X3Ãêêêêz|õñ§ ÏÄ†ã¿øwºà›÷?]úuÿìO›×WŸ½Qzã3o¤Ù\Ý\„b#”Ϭ6ËM&¤ß\.Þ²«Ûr»ÓBeœKvîŠ÷ôUÂWÚ›ðÙ»œUuùÓvÇ3ž+/¤açâXõ[é2.´g÷QGîÙ¾©»¾-ªšriYßŧB³ª‹êEÎnŠª=¦•V°®:UǢͶ;ãDæ½gÿÝ:ØÝ ÁÈ*øÑ9v[lAéÏð?8!l˜yÖ7é(9˜±Ý¡„皆Õ9ëá¼?\ýûb'tæµ›>ȵÝ\Àã1¥qV…cV%X­ò+Vt´þ³7NL|lè¡?“šW¨Ãxo” ÂùôB\¦¸„+ŠÂFaǹ2 ›™°´ÂÙ$ü7¶àgV4 ˆž‹$ü…•‡sª(ì¦Â2“Ê6ñ@³™kYÆ·W?.£Ìe¹0\&mn˶Œ^’Ü>|9}[íËUG:“åRÌi9w&ž@-kMÜ“õ!Ø5w‰ÏrÇý£.™+”™Ñ.Éã ,ѧuyÀïš© ˜Páó;6LÖ„”ðÔ@„™œ•Yˆ8™“ÃcÄÁ-Ñ&ß”=(’þb¼³æ®‡dø_~½Á us®÷}ÕÔÓ†öñÖOS¢…ÇŽå츲-ß㺵@ð ÃÑEòOØ•@°™ÖŽçÇãT3ø²bˆÇ{´DgÜóL´A4ɸ+цw ¹JŠ¡fhe)?ÿU§³«h£«´a7M{JŽCÏTärë,ûPñž˜ºÃ=¶xë‰ÄŠWMM´Â*›)HXV}Bá•o-µu–L™^hKÄv¾§¸«ÁGðÍlÍÛ@½˜Ô¦Ì:+v™‹%Ó ˜m‚þ…¤ÛÀmqí&uJp®íZ5c+ÎbäÛZ(ñLÊŒY¤ÀýÒú©%y¦õvCÇ6Ñø¿<0ÅÌ£ŽBt7µþA Îv¡OBlf.Z^ÞÌ«tynqwŸ<Õ²lHÖÜŽ¡÷ä宺}fø³¥Jõ¼”Ït¢ õàó¥¶E †ü:Ã5òz‹:w êÜÐf'e¦ŒŒñýùîîx?m±Uý²Ð‚F¯bµÂ/n% æ³$(¡'¤ ÂšöCÕ•ô¶t Ià"´Ÿ&m!¦[8–º½ÐF&LQÃ}Ô§õÓä ¤»„ÇŒc?ž»ž2uˆêo.®þú6ì$­¤ö¸‘÷΀}£:‹Gp nì\`,;V 0¬ôè†Ó]è/¸sS—S3PL“§¡õœÃjüÙĺų•éWÁöÅñÝ,Þç4:$‡.åSx zµRa+ñ¶ì¼jQÄ­b¢éõš&£ZûI%çìU·fÔ#tÒz*>~ûæ1ûFÔthRƒŽ¨¢8_T¢ºécGžuªq™²¬iûÔXô:L 8ÏC›Ã‡f5„1râEÏ>„h³ŽÅVUÿÜ•«w:sƒËá௿þç÷+G”O•€'DÛõeq ‰ö¹ùÓ!÷MÛ–Ý]ln¹‚ø:`F†NˆNòná¤%´†Dªªt_ZΣÀ F‹9¥ :;uêWãÇìð3Ôo ŽÑ 6wŒº÷5ÛCQ¹Œ²06ˆëíe”†´ª÷Íñ%–œ!ÿÊ?Øëõú^»a/1*ÀŽÿ@ÁéYcé>®ÙÍ`œb]_´ýK²Ÿ¬^©Ж¬ÒXÆXé»—X®Cö½|5âHFYôòõõ6žxaew>ŠöþšâóÉ©Éùv+ÿm A=Y{H+§ PŒÇ›ˆ^ À©ä œÕƒ½ßžOØ™ü Y„UR{È”²E u÷ùèP-×®éMÙŸÛzT¸o%-RÔSøZltç=L ÝÍù˜"Ëâü\âù$kß—õ¾¬þzÞÁVÁ~.ŽçagL|ÜhÅ-­a_u€á‹¾û_\(¨pYmÊ(±Ý‰Ü¢­ì}[ª²îcš.Jê[qùÃèjhå:žÔ)DÛ‘¹âfÍWoå¯[ŽgãPâò/SŒâ(üíiZ¡°ñF³xñ?½+ºAZ`¯;„üwwýuÕi-¾Ã\æs‚'\nÕ§0I%ú뻢m« ¥©äÑU‹°rƒµ€Sà ÿölX6̲Ü'ã¿mR3‡âÞÛ»¶ê Ä r ïÆ°Kl3š(Œ2˜Øºó‘Ö*ò\Õ¥ÏÐ/>N€K±ïSá:nç:ºâT¦U‚†Ö¤zR”‚.Pt$…4Ц„$)þ@")­H+ᇛ*-È€8iA©L g<ñ$˜‡i·…«°ì|JO–XîÎ5ÎçZRP}³Smz:Èá (—ñ™ò¼êÛ³Ö$:[<™ DÉh¼‡áñvÜNbWwqH\V(àfÊ}õ) áŽDƤÍCôPž‚Oû€QÈ%‹¨ášGî† 0ï>JY¹JÈFbN¥ªôL;G׿/jü‚þ"éà€N¤ßäc¸˜²:êBÑž|›4‡0 jèb»d-Üs‘Føõ“E„ ¾'„†;Ÿìã¯xÝ}Õ… r! ‹aÍ|†ˆáx˜`ªS `+w¶Ø×˜ãXa?Ž2ˆÉ h.q†Àð?–ý‹.IÀ^‡Ã¸AQ7´!ÁC¨mf渆åïrØÁ{ÀæÌ¦X— 5 ƒq~Q‘n>8 7‚jŒ1¨ÐðÂÀù(…‰=÷ϰ9Bæ“ ׆Ê×U¨& ×î¶9Ñ1Æ’7g,ÝÓŸÒƒÀØáJpwpiU£ÿC>“bŒÔj'“FþbjIÞJ¬'vŒ{SB>9à%JÊg¹œq´r…î„ ÑÊý2ºÓgB(9_¦:#CVzdа˜@•‰ •,3¯F+)MC‘V¡ÔM˜y¥}X#· ü…7žjÑ´G˜'³Î<ÍX4¡°PÉíáÏ‹eôS™PvýO²7^ÊgØ"ÍC·ÎTÍ ˜3UÆÿjj.-ùÜœ_’U+äœVþfrî±?àæŒs‹?OÎa,<}â™c×Oü[蹩Ö]™»è÷`ýo{Ú‹ËJ HcáÅ´ßœ7´ß3a³L,‰líĉ0„ÿ¿xŒ»|òóò!縘Dõ€AÌ3+µœ½YÒvlýqJœ}ñ'h9¬2ù²Ûkpæ¼g-*ëCÙv}ìV"P“9;ÄÅ€7°…О³òXžÊHá˜Ý 2H"f§0Ÿ@Ss&ßùkÍhAqìú^p†9y‰”$é5gYÊæ †{(ÈÎR­­j@Å1ý A¾»Ò`A‡Âï6A.ý2Óc× ;Oè®!ÁÀdÁ9r–V"Ë®Àjv;pÍÀnÍú–´(fxS߉ ¥"j±~›[èlTv¼€YêŽÈ´†ã˜gp+Áìð7ÄØlÉËЄØzÍ`Áý&×ÀLuÒ HéïÁ@eÝÚK2iHœ*pè¤|%À€<çn Ï)Þ®ÒÛj% ŒäK.à1&ŽÞeÅoð­Ò ¶RΙé}ÓÂl:NŸÿ>´^12; ^/p;Ãgž~ÞM ?Áêý¨gIý„ÁóÔì>*Ú‰ ¥ˆ®‘kQ€“ƒ-9@/FPN8LžØÀß|œ³\cgX°¯C‚Iú z† Êcíýêêâ?ðïÿ<¥óªendstream endobj 210 0 obj << /Filter /FlateDecode /Length 875 >> stream xœUÉŽÜ6½ërÐÍT`1ÜE&7ž‘ Žnc4jv’–4Ö2qòõ©"µÍ O–B“µ¼zõªúKÊ(O¾Ë·n–^’/ §éò©Ûô]™üðQšÔQg„IËs=xÊ…¢–‰´`†ráÒ²MîI~ãÉ8e¬àöæe0ø\þšpNVEZ~HÊïïÉ»»_þÌr 9œå¤­¾6mó_55}ÆàD˜Â‘.ø¡ñosûà4×Êþ¼¸:Cš =œrR?`„nüq,‰6{v#×ìý4ݰîO>8I% »…xœëÚãy¾.~¼¿îÙcýÜ8G†‹ïj¿¡¾›»á¬X9y®®ó–Ǩ4”ªƒy?NM[Mð¿I°® OóCó´<ÿ~1Ér® K.Cuj|7…ù+/½îùÛÏ;ÙØ.& Oç$g´Zkk7ð÷âèÂÐHË”…£í$R…õpÐÊBÕÏЃi¨šÎŸVŽ韦&HÅE–f¸y¨ÆÍšK²_aw0ÜïOÓ¦´¦Ý;„ÔÄ´ái@ÆI?OQ0±¡Í´Jãí ÈBÆah¢æ±±=»SŽ5r«W-ß®˜2u˜2й]‘—W* Ðûë¹Á“\Bèã KUÁq\C“?‘ [°7ÀÄboö–Zh±YíBóÂYkÍàŠ*a¹XÙ§ ÍðÁoTÃ…^§c5õµAµK1¶ OY. (K€$š.–¢I´ S¿ºš=Œ7釿Òtë%'ÿ<úáæáuz<¤_¥˜Áh8«!ш·"`©†8®¹ƒAìå´‘$3~çO4+ÿJ8hD)°ˆZ_&«|l0„õ_‘ ¦aü©Ú§+‚Ó˜S ˆú:Ÿü¸¹PÛBä‹å R,„LâZüÐüÙ_ñ-ŒÜ»3ÕeMç ²°ÊAÒÓÐ/Ä0ENsØG$ÎM`ç.³Ø‹ôîþm?lÑD;÷C[Eç¼PÔ0ùj-aX˜,)e^$}¾bG¥ {2v2Üä\5Ãõßå·Ò/™›|76ÏBÖX 1È «@8¸«ç Ä¸ñ[PPµÁãª;­YÍ7 H½{ޤãþP.Ÿ` Ó¸bŒ¡¤KǨ–:ôE0ìÉû2ùÞÿ—jÉËendstream endobj 211 0 obj << /Type /XRef /Length 236 /Filter /FlateDecode /DecodeParms << /Columns 5 /Predictor 12 >> /W [ 1 3 1 ] /Info 3 0 R /Root 2 0 R /Size 212 /ID [<0b776378ebc86d85077c234b7c5e6972><76b3e80242a126c66657f1584c39c621>] >> stream xœcb&F~0ù‰ $À8JIò?ƒÀüm@6Û>Pl¾ú0›C™üÏ ØŠMÞÍ xä? "¹çƒÉE RáˆT‘‚`’¿,ž"y~€HF.0ùLŠHÖ7 ’ýX$DrͳE€$#6ˆÍÌ"™²ÀéçXœ–XCÁl=0É‘,`°ÉŒ‡Áf‚u±/»Äìæ[`ñé ’ó,X¯XM X|ØÆ‡`.ƒEêÀ²¯Á&ˆƒH°¬:X¥˜Ý„p?ϰ™§Àîß¹Vã fƒÍä«aÙÂO*% endstream endobj startxref 125584 %%EOF maxLik/inst/doc/using-maxlik.R0000644000175100001440000002261414600010432015765 0ustar hornikusers### R code from vignette source 'using-maxlik.Rnw' ################################################### ### code chunk number 1: using-maxlik.Rnw:46-48 ################################################### library(maxLik) set.seed(6) ################################################### ### code chunk number 2: using-maxlik.Rnw:98-107 ################################################### x <- rnorm(100) # data. true mu = 0, sigma = 1 loglik <- function(theta) { mu <- theta[1] sigma <- theta[2] sum(dnorm(x, mean=mu, sd=sigma, log=TRUE)) } m <- maxLik(loglik, start=c(mu=1, sigma=2)) # give start value somewhat off summary(m) ################################################### ### code chunk number 3: using-maxlik.Rnw:147-148 ################################################### coef(m) ################################################### ### code chunk number 4: using-maxlik.Rnw:151-152 ################################################### stdEr(m) ################################################### ### code chunk number 5: using-maxlik.Rnw:208-212 ################################################### ## create 3 variables with very different scale X <- cbind(rnorm(100), rnorm(100, sd=1e3), rnorm(100, sd=1e7)) ## note: correct coefficients are 1, 1, 1 y <- X %*% c(1,1,1) + rnorm(100) ################################################### ### code chunk number 6: using-maxlik.Rnw:224-232 ################################################### negSSE <- function(beta) { e <- y - X %*% beta -crossprod(e) # note '-': we are maximizing } m <- maxLik(negSSE, start=c(0,0,0)) # give start values a bit off summary(m, eigentol=1e-15) ################################################### ### code chunk number 7: using-maxlik.Rnw:256-259 ################################################### grad <- function(beta) { 2*t(y - X %*% beta) %*% X } ################################################### ### code chunk number 8: using-maxlik.Rnw:263-265 ################################################### m <- maxLik(negSSE, grad=grad, start=c(0,0,0)) summary(m, eigentol=1e-15) ################################################### ### code chunk number 9: using-maxlik.Rnw:278-281 ################################################### hess <- function(beta) { -2*crossprod(X) } ################################################### ### code chunk number 10: hessianExample ################################################### m <- maxLik(negSSE, grad=grad, hess=hess, start=c(0,0,0)) summary(m, eigentol=1e-15) ################################################### ### code chunk number 11: SSEA ################################################### negSSEA <- function(beta) { ## negative SSE with attributes e <- y - X %*% beta # we will re-use 'e' sse <- -crossprod(e) # note '-': we are maximizing attr(sse, "gradient") <- 2*t(e) %*% X attr(sse, "Hessian") <- -2*crossprod(X) sse } m <- maxLik(negSSEA, start=c(0,0,0)) summary(m, eigentol=1e-15) ################################################### ### code chunk number 12: using-maxlik.Rnw:338-340 ################################################### compareDerivatives(negSSE, grad, t0=c(0,0,0)) # 't0' is the parameter value ################################################### ### code chunk number 13: BFGS ################################################### m <- maxLik(loglik, start=c(mu=1, sigma=2), method="BFGS") summary(m) ################################################### ### code chunk number 14: using-maxlik.Rnw:473-493 ################################################### loglik <- function(theta) { mu <- theta[1] sigma <- theta[2] N <- length(x) -N*log(sqrt(2*pi)) - N*log(sigma) - sum(0.5*(x - mu)^2/sigma^2) # sum over observations } gradlikB <- function(theta) { ## BHHH-compatible gradient mu <- theta[1] sigma <- theta[2] N <- length(x) # number of observations gradient <- matrix(0, N, 2) # gradient is matrix: # N datapoints (rows), 2 components gradient[, 1] <- (x - mu)/sigma^2 # first column: derivative wrt mu gradient[, 2] <- -1/sigma + (x - mu)^2/sigma^3 # second column: derivative wrt sigma gradient } ################################################### ### code chunk number 15: using-maxlik.Rnw:503-506 ################################################### m <- maxLik(loglik, gradlikB, start=c(mu=1, sigma=2), method="BHHH") summary(m) ################################################### ### code chunk number 16: using-maxlik.Rnw:514-525 ################################################### loglikB <- function(theta) { mu <- theta[1] sigma <- theta[2] -log(sqrt(2*pi)) - log(sigma) - 0.5*(x - mu)^2/sigma^2 # no summing here # also no 'N*' terms as we work by # individual observations } m <- maxLik(loglikB, start=c(mu=1, sigma=2), method="BHHH") summary(m) ################################################### ### code chunk number 17: using-maxlik.Rnw:557-561 ################################################### m <- maxLik(loglikB, start=c(mu=1, sigma=2), method="BHHH", control=list(printLevel=3, iterlim=2)) summary(m) ################################################### ### code chunk number 18: using-maxlik.Rnw:601-605 ################################################### m <- maxLik(loglikB, start=c(mu=1, sigma=2), method="BHHH", control=list(reltol=0, gradtol=0)) summary(m) ################################################### ### code chunk number 19: using-maxlik.Rnw:639-648 ################################################### loglik <- function(theta, x) { mu <- theta[1] sigma <- theta[2] sum(dnorm(x, mean=mu, sd=sigma, log=TRUE)) } m <- maxLik(loglik, start=c(mu=1, sigma=2), x=x) # named argument 'x' will be passed # to loglik summary(m) ################################################### ### code chunk number 20: using-maxlik.Rnw:680-689 ################################################### f <- function(theta) { x <- theta[1] y <- theta[2] exp(-x^2 - y^2) # optimum at (0, 0) } m <- maxBFGS(f, start=c(1,1)) # give start value a bit off summary(m) ################################################### ### code chunk number 21: using-maxlik.Rnw:710-720 ################################################### ## create 3 variables, two independent, third collinear x1 <- rnorm(100) x2 <- rnorm(100) x3 <- x1 + x2 + rnorm(100, sd=1e-6) # highly correlated w/x1, x2 X <- cbind(x1, x2, x3) y <- X %*% c(1, 1, 1) + rnorm(100) m <- maxLik(negSSEA, start=c(x1=0, x2=0, x3=0)) # negSSEA: negative sum of squared errors # with gradient, hessian attribute summary(m) ################################################### ### code chunk number 22: using-maxlik.Rnw:733-734 ################################################### condiNumber(X) ################################################### ### code chunk number 23: using-maxlik.Rnw:767-780 ################################################### x1 <- rnorm(100) x2 <- rnorm(100) x3 <- rnorm(100) X <- cbind(x1, x2, x3) y <- X %*% c(1, 1, 1) > 0 # y values 1/0 linearly separated loglik <- function(beta) { link <- X %*% beta sum(ifelse(y > 0, plogis(link, log=TRUE), plogis(-link, log=TRUE))) } m <- maxLik(loglik, start=c(x1=0, x2=0, x3=0)) summary(m) ################################################### ### code chunk number 24: using-maxlik.Rnw:784-785 ################################################### condiNumber(X) ################################################### ### code chunk number 25: using-maxlik.Rnw:789-790 ################################################### condiNumber(hessian(m)) ################################################### ### code chunk number 26: using-maxlik.Rnw:815-825 ################################################### x <- rnorm(100) loglik <- function(theta) { mu <- theta[1] sigma <- theta[2] sum(dnorm(x, mean=mu, sd=sigma, log=TRUE)) } m <- maxLik(loglik, start=c(mu=1, sigma=1), fixed="sigma") # fix the component named 'sigma' summary(m) ################################################### ### code chunk number 27: using-maxlik.Rnw:863-874 ################################################### f <- function(theta) { x <- theta[1] y <- theta[2] exp(-x^2 - y^2) # optimum at (0, 0) } A <- matrix(c(1, 1), ncol=2) B <- -1 m <- maxNR(f, start=c(1,1), constraints=list(eqA=A, eqB=B)) summary(m) ################################################### ### code chunk number 28: using-maxlik.Rnw:908-913 ################################################### A <- matrix(c(1, 1), ncol=2) B <- -1 m <- maxBFGS(f, start=c(1,1), constraints=list(ineqA=A, ineqB=B)) summary(m) ################################################### ### code chunk number 29: using-maxlik.Rnw:947-952 ################################################### A <- matrix(c(1, 1, 1, -1), ncol=2) B <- c(-1, -1) m <- maxBFGS(f, start=c(2, 0), constraints=list(ineqA=A, ineqB=B)) summary(m) maxLik/inst/doc/stochastic-gradient-maxLik.pdf0000644000175100001440000040272114600010432021110 0ustar hornikusers%PDF-1.5 %¿÷¢þ 1 0 obj << /Type /ObjStm /Length 3269 /Filter /FlateDecode /N 55 /First 441 >> stream xœÍZ[sÛ¶~?¿om§sŠ;@žédÆ÷8‰Yv§<Èmó”–‰Jþúî¤D”L§~èÐ2X‹o» ˆ$šEx "!mˆJSb‰M-Ig:!)á2:Œp£%áœÆ L!™B"´†JŠ›B9 ê"-ƒ¼%J@#žeRh—Í ?Áˆ– Þœh•… :Eb’‘¤D(b4Tš D„!&5 :!V¨Ÿk õ tÆ`Щ"’“D@?RD[K¤$‰…FR‘$•ð]“T2N¤!©N ’¤è@Qšj` L…ñDf ¦£8&Œ_`ú†asf¬ 8O–ÀT”†DŠEÀÎmJ”…„Òð%Á„UÀYHÈB/P ç Úc;¢RÜÁ„ë¬)݆T´Ä[!%Ì R°1> )CêÝΧ³×gÐßîWª7¤Ò¨ο[iØF›¿õ#™PÈVœ2JÌÆ5ÁÐ0œ¶ññ=!b°ž^K°$ð+æ}Ï:ñcH]®VU í` €Ø×ý`ío"Ä›U×S^ÃJ}gÅlê”ØGÞm¥ÍŠJŸÍ¦}¨´Zy7Ï2‡Èe¨án< ¥hƒ Á|r#iÑ´Ác+ÍŒ`ª=F°G#0î}8{}ðú»¸x­‰Á(¿Œ,é­ÂâºþKów«6L nk˜ QÒ€É;‡ßÓ‚u~b#‹“YG¹µÎ¶½Îß·­3­Ö9ÿ”Îañ2¿î O÷}w¬÷6&ãm¬VŸe}—Y45 æü—:õ½¿šZHw3íuýîº,¨Öîj¹y\Ï+iÒŽÀš{¨/Ði»tôÚ!h¶×ôÀ{ »êÀé¸ô |M¯ç£ñYYd7ež#­• ôÛ/*B×;,G*Åük¶ÖŒwßî²iCANsе–|@sÞuáR¾ƒ‡lžÏ&ô¡X.è—å¬Ì&×…Ó§‹ì+ZätQŒw-ýºœN²ùb<›gô+}¤EF€@ó¯Ò¹¡$‚ºR þ­I# i c$[…y_[O+Ý.£òüÍÑÛ÷»Þâ¥Q×ïJy‡ª]¾2(a›À_­%‰Ž‚Öî—Tu„m*TÌIؽeeó¹<ÔÄ7ÒêûkRUκµš9óm †}&6Ñ®L‚ͪÁ°ÐÒo¸6˜Oü›¹‘; ÚS¿5©ˆ·÷_Y9[¿Ñ訿»‰aÚcÙáXS•ãw‰ñŒ™3êoعvÀKÍÈ4Ñ<0M\¶%Æû A~Cß‚0ŸTâ|â|áú#ýä„z£ìN'(PÙã¸Ý£ ã_NÝJsÑ!Ðÿ¾HyÎY ¶«Yg|e—óɧ¥þ+ý„ý[—¸; ؉{KÚó¥ K©ãiKÞÓ¶¼Gò·ÕÈ’k'Ró òÛUg—;?ïœó@Àk÷c-à›lä, ÞSÀ•R-¬V»šovöú=ÂZ÷³ðk*«c»+1.ä”0¹ª××i]¹•Ñ|¢ši‡ ÈkÊÙ®“ªSØ+¹ÉŠrR’Ó"[,èý²Æ÷ünVô[€Dͺ‘È|Y’¤®Ë†‚µaØÂÈv =méG  Þƒ†!k¯cí\²ˆ˜h;—©ê»Ç$‰û1“@å²zÏY§šiáê7[}ïƒôžŠq>/ïoŠì1´VÖ׊¨;5"Z7‹ì>÷ ¹+hрѺfy lï€N#þé¡®l_ä`¯röϧ‡ûš»!vj¯õ—ˆ±û‚}õ— 4„6Û ÿ®GoÐTÎU¸Â…çqŽºKkm \\g ¤n} âÓh‡z‰‰Íz Ê šGQ Bˆ6¸Ú‹ß^iotí] ŽvN½¶oôKÆ k{¢¦/Æ’¦Z2éê·þÂyæêG™QCf‡¬©AœÊpÚLžÎ`&OzÁ$Q,Êf\­¥“í¥ 8ÛW-` ¦ßÂNNüù§P+Ô jµ`Jäµð®eöa :t’áyiȵÏP–H,sÏÙBœøOãöÔ—|D0ïáÿçš:£ù|ö§ß£®Gs·ÍÙdVÒû|ºDc§(ó‡âŽ®‹Qeø álž4šäãQÑD+#oR2X–‚¨vì`QÔ½¥¾XU½-ðÁÙÁáq¥ÅšjF×ún½ƒ%1X# <黉8Ô¸]±;mÞdq²‘Áàì²®8²ˆâÈ­Ù÷Uá½5Á難˳  pjq7¶dÛ¶Lúr·»H­û½¬Ô=ïáLëö§.·_"ª ]Y“»ùmàÄÜb Þ zד|ñPŒ¾­?”ÙcI¿Â?pôq!‹,ØPÐÍÚ!WÈebq-EQêÖ*÷D‘èog^¼ã~¥ûZ±°Ê¶¹©z kÇñ‘1a¨ÕÇ•qrëÞ Å†qG¤Åë(°âÅåuïêêÓÞ!†8Ÿq â࣌úžóÈ-‡ÍÍǺ+-oTòeÝE™øœ &ézõí7Ñj>šs˜ s¿:½ÎÕ#úÄû@ ¿kðˆ·'X 8ƒ¯ÒºVhŒ)Óáã6Põ.Ûˆða|ïÈ…èO\xþªŠãaìΟ<Ö玫(„;z¬Bc¡½¯6À™/„•æn-ìE±[bÚ>íQn€Üìï pó?ç}±˜t~Û¤ì½xlŸ±„&}˜ôW γm2Æ p­C®»sô€ë-.ô•ùM·â=z÷üøí…³úúY¶ƒÉßs%eOﺵjÇeYÉø‚‰I“\—]-Ü)ÈÔ=-ƒ rµ€n€k´#ÔZÃ(ò¸·«ž^Ïò|‡ÜŒŠEV7Yß‹«* ¡®ò調àÑ oCŽ"_§5©ïT A/Ô÷†<%õ±ØPà%Õ:-I‚ _»dCáî”Vé”Ô»ÙP¢.­ÓïBTi*ªJ[¼?Z¥ñ0©J[RMIÒœÍúBaMï_(lX:h-ü“ …./ö?ýÖu˜§j=»¶…e¼¡ªhC•}å«+ʉ·dšÆ¦ Ì—ëeQdåU…$™ÓÞH¢%QÜ!bBϳé:C‘|yxyéüŦ2ã¼GèA·U˜éËá$Ývó¥kž:±ºáùwÉû¿L–AÀT]Ä@™æhqQ·ìFûùÍMRŒbû»—Ûõ}ãUåï¢&;SOïœï" ÀsAÒ £U”Åõ½ Á ãÒˆÏàµx‚AYµŠ½ø0™‹Î¼Ôü_xÚ8ØÀuwš~- [¼ˆú²Îpk»»/5<Lótš„ÇÓxÐU—cˆ’ÞÜÀ/‡_éÍŸÆ öK –Ô:¢D:Pñ´‘è¤ñ‡“.ªíÎ _¨k´j×g]ÝDÿG(Œendstream endobj 57 0 obj << /Subtype /XML /Type /Metadata /Length 1168 >> stream 2024-03-24T12:40:10+01:00 2024-03-24T12:40:10+01:00 TeX Untitled endstream endobj 58 0 obj << /Type /ObjStm /Length 1792 /Filter /FlateDecode /N 54 /First 439 >> stream xœ½YmoÛ6þ¾_Á†âÄ7‘†IoÝ–&³Û4Û°ŠÃÄZ9•ä,í¯ßCÉrdËvœØ ™'‘:÷ÜOÚ±ˆÅ gR£ÌJÎbɸ4hãFYk&"ÜÄ1Üa˜aB†·,Ê;&b«™3+Ñr&œ• ]2Š83’I®Ñ*&…E«™TR03KËŒaÒF3–I‡ùŒC‹ÉlÄçh9SB¡ ¯)ÈÈ”ÒhS|0µŠ1ØÆL-™5LY…{‹V[fSNÆ ¢ë|gšG–9Á´Ð¸—h!œSLK¼ä4Ó:ŒÑbg˜Ž±^g™6X´sh1‡ÌÚjÊymDÐ&$”êBô&D 4kC“U—êl °æÌxä@`%œC‚ƒ.#´}IóÃŒŠ¡ÏJ ÕŒŽ’»Ÿ|z3jnGI>ð%û–Éý-ÆÑmšM‹ï½ñõ{¯ xê“›‚)“¬<<œ<°?a¡Ë@¯×_u_/û` ÝýúÑ»äÖƒÝéyïüüû£“Áï†ÑÛ2§Ãƒìfì1NÒ¢H³›éU9‚ÖñdPúÛs¬cß¹ó5§ RžÞ•“œ½~]­íO!du=㉿J“FÀ`«ÐÔñÎ’<¬g&Yß“i>ô |÷`¹U×Y>­ü òMø‡ ^¿nd9Kn|#ÁaRøêmúýÞÅÏ¿}?è Þó°?tœ 'WX£ivéãƒ^šeÐ>l»³6«’ã×d6† ìÕ`zYV³x[-?W@`XhuE³ÿhþä%W´ñ.ZI?=û¦§ë8=_Ú]¯¿š žÁ'¾[ð‰áYZð9€Ž©G?Ò[ú•NèÒõi@ïéÓ%„ÝôyZ|¢KºL†ŸŠqRŒ@åt™'C ïº¬©÷m̬óuÛî¡Û“^t[//Ig^h·[®Sï)ÁuíØèö÷‡I½{2 óÿƒã_}Tî.HìaA{Œd]÷”u…/¦>oì›ÎG|8«k(ÛWáWâ——ÅcçÛ–á%wÕÙ~Õ­x²ÏŸÖ8ïËÕõ¹ö/|ëÔÓôb=­ºŸ]Bý¬®5W…³ªx\UËêZYA…¿÷Y»<¯šuj½j^ëå’‡Ï^K…‹0 _ùôrÙLw>-u¶|cÙ ÙÝì „üdÕLoò^í’°ÕG»®hÃ}[_¶{ËÉž ý-–Ñ‚Ül½I¯¯=„ RñëïŠ8‚²æKcXG-Âü­—°FÂ?ã½’ß¿ËSä;endstream endobj 113 0 obj << /Filter /FlateDecode /Length 3959 >> stream xœÍZKo$Éq¾:H>0Ð7eÛÃrå;ÓÂV°±’¡§—;>Ô°‹díôƒê*.wôëõEdf=º›äÈÃì®ÊGDä_DöŸWu%W5ýåÿ·»«zuõç+ÉOWùßínõË›«ý/¿’¾RÒšÕÍÝUš!ñ¨®´‹+'m¥£_Ý쮾߇õµrU­ƒ¸]+[ÅÅC³¾®«Ú(kŒýЭñM+'½Å k-uU×V|CŽNyq\LÙÌg´û5mP;)†29ˆ¯ûÛüBÖzþb>uOUC;Þ,(é•XìõãoÒ SkëÅÇõßü',WRVÑZŨMå¢[]«P…àãêfÕ?Ю¬²7ëPó2‡‡PR‰Ã®x¹ëPyo1]WÚë¦ÿ¶9Þ’ü1B臼’‹B™wô…sBÕÊd‰$NÀTÚ8éZjUY¥V×úÕVÒ¢B®o¾§¡z>»:çp„4b×@ßyØbEªhLLã¾Íž¤=HŠ DrPˈoa¬èL¬£ £×¤µS8V-Éü’T¡yÖcªhpøtâÎñ!¤¯ƒ¡çÏF§E³™OêÚõôe¿¦-|íùŒi˜Ïž7tF Å@v!šrlëIë£Ë*È(ϵ÷³áZW>ØQù®Ç)°5nòGœÆcƒ xª(ÖÀ`2ˆæ¾Å‰)‹ÕÆ»]sì¶Ÿò4øE·çY21´ûM»¡W@Wðâîpœ–ÿmó#›ÁJ‰èvi–xÚ•!Rô„µh·ÝCF[m5Ç—å#dßoŠ"QÛm3`sF$NÛëZ®®ÌeÒ»Åqíš¡;ìûj}í,  ËmqºÝþvû´iûü€ïÛX$ Úc³¥7–´‡G¬Öý¥=öåY–nÇ 7}Ÿ¢G êX<£bx%Û²΃M†/t0ôoX³¿Y)>4m”Y&ˆ´0„"¥YUƒÀõ›«›þîsKÍ×@iÇ÷˜ž ƒµ"‹Ž“Øäñ°Ï3Ž>ˆÃñãlù:$äx'ž«$ ÁÇœžÀ¯¼@€ÙŸ“bà‡&XX3ž$õ°>Ûš–îÚMw;ti¨[²OÄK)vEì 6ÐbŸ^Exv>@n,n»Çmûc^Ð}ñíãûu^Jž.Õ—= }¸EÚÞÙ8moÄ}Óí ðNÔαô1- \5O[8Ð ‰ÙŸ(ˆ“!-yRúL!ÿ¡å/À5¢Á&¿ì6ím³K^ˆ Ò G}).¢© òÇ ·=GºÈ.;ymÞ¬¸kŸË¨s}èM`D5ÛûÔ{ØõÙ ÞWÖØ$”sN1È ÙèÑ9‘B¦rt5!yûý±Ùt”Óñ é \ƒRjnN›x Y82°)‘É×vÝñ˜ö¦©~ø–E¨²\Š—ÍójÒîpl‹,Z;|öyÏV |CKüZ’›i,¢ ôMŽ®°‘ØÎ7¤ñˆÔ€Cb Ù—†ŠpIÑW‹› ôi tg"v÷ûvÚ²­÷Ù³4…¹qVd¤œ >»öŽßˆ¤ ôféL4vfÒÇå¶Œ!ÖˆC^ fîÛ²`׳IÅ~%\*+6ý»’ “‡óÄ_¬Õ§ðöÔóéâ+ùÖ%©2£yÓc$˜Í£ªKô„ÅTþ=8o&œ«5p_“ã‚Y0@”s6ŠP–° ëB+Ò[‚ÄšðY'nG^ð?¢´‹C–Èô‚½8c `f#Ñð‹’ãÙŒg|'~MJ¥”°#Ö@ 2Z< ÒÃùoÛ6Ç=GãôDl»)tx:¶…aÝßb ¯tvÙßÒDO‘{w7 ‰›)Ãè?v24 £0-–Ý—åDÝ\_ ÑY%bp™xÀãñðaÛîúòD§dDŸÜ]·G>½&‚æ‘ɰôlvá%FZÖé¡Ýß¶ü•¥NÔfû1Cœh>Œdài˜æÎC务ì1w{ÅNïÅ_*.á¼@ûçr‹aN Sªs¦ÇÞe¢cŽ`åö©oÙñŒ‡½.Ð^ æÑý%@æ[ÛÌ9T|s¼›Öc„h ›²÷®Ít‡=ôyU”é´9 Ì$Èaç4ž\gµ—Ø™´²"S?ïALúÙ›¼ès\lí8|åPE<ºèARõd†¢i͹€>ù8傼ðyÆ£HÖ,~zø^|ûÍ×ï×—¸—ÓI½Ng1™ëCÓsndb{&uzà ²çI¢gëçðÇ2½,ÛöýLÁ®ÙrV¥A€Ã÷OýPdtLˆ£âd|ÛÛ»§í%&LÚÞn3å%}à]:²{1ÅŠžËµtnüÅÙúç}™ƒ(Ó„2ÈÏtzöM¡¢ÄœÇECNG‘«qÀÆ–Â’ù÷íH_µ‘¢lÅÝÓž/~gî©jjg‹ÞŽ- ¢c¬äl0êŠqä{Áé°“y¤ž{}(9—Áÿ@c=¤îò²Ò”‰•×'+/ã V… ./9šV¡PJvO^ˆì eNÜÁ•€€¹µá~ËcslÐöX¹9í¸ÀÙ.èˆä š:@Oû<Ø®àvܯH:ZL‡ƒ|Ò¤95››Z3ႪĢÁÌV‹)¤²ÒSþ1µe:?Ò⢸a·ÝN¨6yÊ ©—ÓÏÁ%C¬”’Eã{Ö™½¾ ‘3>/öe´œZ’ÐrÁ’&z)ýYØ’º˜B8cÄ€#|•OûP¦Ï‚©£Ô'0:Òò0Ú<'ÎÄ x…7ILâv3Õ0ÇÙ Îh± ¢Ýj1%»d§¼á’ÙÍ}–‰CMm¶ÏuÈÙºZž¬k”Z‘3ø˜ƒãO–¶Á‚ÞAÐÜ9øÉ«–C@R²†ÓºÊxëà –[€Ù…E¡Ù_%½XÕURºZ-16[Në33]–S5œ»suœƒÌÁ]âEoÕÁåU@«GoÕœ]TŽPTÞ!ˆ?q¦–Ž‚Onx‚Fl®˜¨:éeЩ=1…(~¯Î"TžÇ]K¾ëbQ>?Z‘±–>&O£Õ4ÈZÆ;·ô±¯Î\y!ªåÿ™^ðûe¢$éƒ\Êô/§2-|PÖ• >Ç8ñIzé¥VNÝ·£`¨¿TÖüqÐ×ZžÇÁ×óíL&%÷‰~ÕÛK”ÜÒ«–\¬IĹäïh3d8iã° ðt½¨©]hD ¤Ñí%ÎXÊA]sUw\[ò` ïÚKÕ§5ÓRïr› Ìœ+•Zs­@= b`qý®¡¤Z¾ÎûTýÈK•óL¿jà „ÛþšýH‡´2½JW‰ñ·ûþ‰KÒ:ÕGS+´6ÜʺZìúPœÒ1Až†c_ŠŸHîaÚl¤H^V6¹ú<·qE[¨êÓ®*eªÿÞfƒƒ`û Û[qwÛp‘¦¸9鿚þ#}£b”izzáòMAš=Œ šWÝmbí¼2Î’J#^ »Ž›vdgs¨+Ðh]:*ua\øÔ©G`ÿÛ«UUÞª7ÞÍWs•3JÆÙjÒùÊÃzüˆ­Ã{€Èª Â—Ù‰Üã‚#re£ý̹Sc r¦Ø8÷F.*„Êceû9ïX‘S÷LQxI0`4©\áÃöc¹‚ˆf5c\©ÀtüµzE*D5šàî$#Áre‘ˆNÙÑŒI¼>A;˜?äÁöž|‘ïé³Ö¹Á‘ìÄD á;±Ôÿi¾œ8ûŸe£èÅ1¦š¯lò§Ìm@G.Høökº¦Ü”m¥øéttxnS7!:œ5 ‘ÞµØÍî…ÚŸt=N¬ E‘àƒ?‰-ŸNÙ߉x^…8FäŽqr׫|F<ßlÆpkc‚O¾„¹;w— &¤UÿÐ9¥Õ¯gF«qê¾ú¤øƒùÔËgz}dxqá…À´°›´Ë§!Í¥BÀUÊÎq®|˜Ê¥…è‹@æ‘߃Zy° ¥rEð‡së99é²Ò'à.p—|ô4CFê¸\PÙä’‚ÒYpþïõLÏL?ž©ø1S›e•bÝHêÆðuK ^’èS~1% Ó^lˆ¢TQ½µ¡’omøVÔ&²æÏDÏóó–)²v‰Ë‚?ø K’åIò1²‚µ}J<¨¦Ìfâð¡o?¬­M÷ìéŠ~¾Ä»œßóì²J¯ïŒ™pš‰ Œ€â'‚~NWkÇfÏýkŸÈ µ÷µ×SNL_¢8ÆVësŸÆÓ•3÷é3âro¹ºiûî~?½Ü5ñ›õÃ/Ä¥"¢ªþ¼ü°Œ%Ä÷ùÇ'Rüþõ—E±£#¾ÍvœdiŽEPI ma Úq—q™ˆw oíü~í0µå?L•q›ôûÍH?-ý²i“›õtÅ‘ÕóÆùüʰá†l;ï‡ç)0ðqÖÙÖ§)‹;ÛÚÈDbNï&}2ÊìF‚o!y¸šß¼\¾ÔäÊ'0³/û¹Ü}A¤,þ,FŸ™Qþö¶»û”Ç#Râ9?ù—F<ÏO}À´oé3h¾,œ÷kI7?—z àÂÉßCù.–ZÄ3ɹX¦ÏùgGô“Ò4oPÖPSÙ)5U‰ñ¤ŽH¿Ÿapê\ï‚ —›=5¿Šw#/À(œYXaÛJÅ ˜N]̸ÀRB鵪 ›‹§ü.OñÛ¤¾²Ö·ZLù_1‹—û; t¿ØïzÝ/7ÜP#ÆUÞÔJOÕíÜ\ý‹¹ºï¯(O­ž¯êÕ7ÈÐ.öWÒÔ Zrµ»RÁSãf|²½úöÅŸÅ.AœK¢Õ´$НóÏbw é%]´ØI€DTÌ…ûÕ‚“^ó8)X,ãŸ^Ý¡¨éGjüqÂ9;šŸ›B•1;ä¯Î»¦ËÒ žŒ…á~y³ @Êú§ p§\|þÅÂ8åÿ«v¶y›.ûÒ~‘.Ÿg€Ïg¯/g€³+RñüŠc<$ºáà˃٠ÇK'¸¼àøÜë±ñó¥¯7B‘!_o¨`ä ÑýE¹Ò„ºÜ‚ZÖò„ÕÒz/$¬L¹S: ÿ…þ(ØUíÔIØùãÕ_ÍÍ'endstream endobj 114 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2221 >> stream xœVyp×^YXoM $('0».”¦ 鄦m€’HÀ ÆÆ`›Ã ›øÀø”lI–¬ëÖþÖ:-Ù–m,À‹ °9Ìal\h15„»!M:=ÒIhHyò,ºjÒN2Ó?²ófgö½ÝùÞ÷íïû~ODLH D"QRNZvæ/æ¿´ þð,èÆÇ7$B²’'øf&›Š‰§®Lz’ˆ_S—VU+j߬+¬Ïx·¨xkYNy%AÌ"²ˆÕD‘Kü”XK¼Nä?'–ˉ4b‘NüŠÈ VRŠ@D·h¢H+ú8A%ž..™2ávâk‰$³$ÉC”‰þE6'½øX´ð)bòã„á‚åp9ËP‹zöÈäx!‡ª]º ±­ÞOKÇéÎÛ]@ŽHŽÂ1ö(„¡ ÂLX³ËÔ¹!%X¬ V¸ÌžF0‘5EŒ’’ãRΈÞCÀp¨êºâFÍÍxJ!ž²O¶¶99 hÁ©°êóyYJ?'‡Ÿó?GW¤)J§a« OÂ_àÉü‰“c;X.6O-z8Œß‰-‘ÉC(ºÃ´…æ{Q™Ñ’+`eqT«pí£qú}ä«{CYk(ކʪ•”)¾Þ ‘+\ûi¬CÐËUôÈ÷ù‹` ¬ÚdÈaþ‘2ù±èÚY¢M[§E/â=б<–%ã“uoþRÉY—ù$<?q'ℇ¯ãd~ÅÏàA~Æ~ø(ø×?yÛÝ!¸'û—°ZVȵg”ä×V–Ö—À"(¸i#­Ðêl%¼Ê âb†Ä½ßgµÕh³ÊçªP¥ÂÝGãT£îçÛÛv6‡<ãw,ÛÍ‚ŠÚ–†N²»5´£·¤½ OCn§×fÒÕ-TÕîš`1é¿VÎ]w¢ø”ŽŽ6pDM‡·÷•5v´rmyÆ‚ŠË—´”3ØÖifìVš_ˆìMVOÀx)Ïãsùî Ÿm tÝXÇÅžçDgnÄ–Šc—®È|õ\^'ðzh¼WÐÖGFwºŽSÏÊ£Ó=ÎÍt #k#9AÑâç^:ÿ§MTå9Ó%¸÷#ÿüxôØÁ³áßžWyb'?´6Yš}n—ŸÂäfïþÖV‚TC´Óþ­Ãú„Àˆá2;kcí@ªôZµªC×ÕÕê¾þÊÀ[üÔ7øI©|ÒYøÉÑóƒ:é&ë7éBn;ë0€Îä ”ë7å€TMKzŸæ¸LÞâðÓ8áô`U~'%a›j<;Ž…ÛΈñPœR;Ú6Ó o“»;žá§¼Ê#^œzOÄIƒ#‘Í yåOäô¨Tì¥Ç Ä>be!ôÉ.ü,N~ÿ½ì FFðÅÏGë—åf/ÛtùR#åAÈ"¿Ë1:Š çÄwñvŽJšÝM»ë¿äù‰K„›hÖ!!“­´_2—Nt]a]¬Kàçq¸ì{ÑJ) òËò  ʃʮìÛM#ÙvYÓ­Ã_ü®AÏkÞ¬&#ch2’ÿ üñxàáb!ðã4›Q´Ûñ6ýè *V;6þ À×Hê@Ùdï&±Ý‘_|.3wË Å`OÆ ×âµ1QVO}84]:ÖÏß6´¿ÓTHó‡þ›¿i‚fuuB׈MB›p•Li7Öƒ–¬oWîîîè SÒÞΆ]µ”tÌá`œ3„}ë8»j›d$†K…û—‡„¬†Üø!š(.NN"ˆTÑ¢Þendstream endobj 115 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1817 >> stream xœU{Tמe—™‹ÁGØÌ‚ÎÔ¶ÚÚ£M¢ô¤"5Z£ h *BAaQ^ËcØ]v~ÃÎò]ž2°E|¢Iªi5V‰I„´•6MN“ÚžÚ¤w¶—;{èiÿlçÎ?sæžûû}ß÷û¾«¡t”F£ JÞ–¹>"Âÿñ4¾Ï})¬…`]ã2æNÈŸŸ¼³øÊÊÿ,ÎË/<˜gHÈÚ™»aMÄzŠJ¤’©]T4C­¥¶QÔj#O±ÔBêIJO-Q+P UG)šÍßÒµaZ»î)]îË@{àC:Šþ9³ý±f[µè±æA1UÝ£Dô¦yÍ,Õ_ÂeJû Ë3kè¡G´8?øqú¬{/$aœþ’Ý&ØÃÉÒÀ Mà_SŸÍœFú™¦N·Ô>gÊúsGÓ¥dØ ÉB¬!5?'³ÔÏCÚ½š-Ð*´ µó%ÊÊ:“æo7µƒJ4kì`††êRyâe2KlIœWÊÌq¨ªÉsáñ2fÚpÀý¾¦úF± \ .@c¶V›¡ºË=íÏ™¬îì”W J8{µÍ"X¬ ¯§ó˜dg yt«¨/ï^ª¿‡W)sìOŽv%gbô¿þ=)¦¡B¨€ y9ev¦ëãÜ…"Ì¢Ì(­fS|Òñ©I÷áŒ~B&+p3O§¥Û,++=!ÞÇoM÷,ÕO~¥èؾ±‹ž‹€®]þéN~³ŠÄä‘å¼…i~iöØ;pnyO¾DZoNu¾–=~FNKçÐE{£-íð‘Ú ý­b+´r˜g UlƒVô`Û/Än2üÐè.ïëët÷ö—tp8ƒèÙ5Œ~2flŒaÏЕO~si¶k¯oÚ~¶ÇŸò£_×£Ñâ*ˆ­‡X¨°´¤0ß]ÖÓëé8u?ÒKn$æcUý%·ß9=%óõ R34!‰${½Ìæ:KIÊC2 Yø‰ÙûXuã¥Ù}ü¢°¢ì ”5˜ïS:îi/ú~ÄG˜‘!{f­`+?WÍĦÔTõ=,3ûö6ßæE弫¬©¬¡,ì:Yý6ùî5²ú •*%ÓÉ:•œ“ õJ­øÇJzè‰Ñ£í£m#¡ÎFgc}“8w-jÄj¨A†[NU•õàNùs8Gk W:™³C Cmm‚Ê£L60eu¦4’>7è Iº2fºPæ üE‘ü¶ÜÔ~+X|–nqI-v~Ià AÏN¬ÿÃ!¾×Ò_ÛÈIw/v(:ë%Ëê²UÙŽVÖrùûSìdw f¼n¿ ¿@¢›>ÿpö“¾oÇp‹ø2(S¯/ªWõß[Ÿ+™ôûï±oK6—“o’oIGä9¬#?Ã98³xÞîwáKDãÉ+ª ­6ÁNræ‚ÙNð‚uOÐmÕ…í§†š‡Ã?…÷Æ7JnÞñ@Ø,K"_­¬«pTáa ^mÆO8Ü‚ÇáV§#€ÿÈïÅpn4i0uni½~ݺï€}?7Ìd³çqEFœ+ÒÆIuc,35úðá/O$&r¤ŠÉ2ÖåreóÿÇxlbÀ+xË ÇSOP›ˆË,Mð£ÐE¾Ýâ /`Pƒõ[훾Íl))ì¡¥7êïÊÞá±ëÒe@—hO·ã0?w†IÏ´fWe­ærø¯rm8$ã•nU\$w¹F8/}îZ»76e×g9³Q]Š TEµë®ÏÃR1ÝÂþWëõ'›‘UXÿMµkæ¡ú¿Q Ã僅çRÛ÷«¨_6”& ®Š—w@Äï+O…Ά(cNV TÊ'nkOá(w¬¡ÓóÛÕŽÚe¦J;ã€uå¿ø‹ü%“i¶I5ņèC…ÜV¢ÛB´1DWi µVÛká8XE+ØP¿Ìb›8ì¥Å¢È‹Åø‚Zck·Gw±¢ÔU—\”˜‘a·[UG"So“Nh‡¾ÑVwïÙ“¯Ã³¼»'·4??¯§d ãDcK 7ß´Éã{Ú#šBƧqóôRu"Ë}kY’T* |‘åƒd/ŽáÚhœÔUÍð©s½Ìˆhu|mvÿÌÒs«ýW‡š)pÞuÝpŽ».ö¾Öíí9/«&Ïð[Øb:º»ôPfîA@Vš·4á ÕŸ¡swW¹¡fŒ2«½¯xXÏÉ«S€>x.jeô /oå·n*.,.(.+> stream xœ}V TSwº¿1pï¥(b j{¯ƒÖú*ZméòZ«VµJ]DYÂ&²oa‡²þCÈÆªÈCؽ âŠv´ÚZ«<Çj[ÛZëi{fÔ¡óÅù{NßZç½3s&ÉÉ9¹Iîÿû¾ßòý„Ë4B ¸…¯Ù±Üß™óÃ\„£þáùp«+š.DÓ]L/ÎÜí/{~3óÔó„óÁ|ž‘”³67/¶`£$>!1)yëžÐ½©iþï.ý ‚ð%6›‰-ÄB"”ØF,"ˆíÄ"‚XBAD0±–XG¬'Þ >$ü‰Dñ!&æ^„ˆ˜E°|=E”·±‚Ÿ¦EMæ¹Ìu)vùѵô$É#Ôê,͸ù¸?çý\–ûB÷Cî?M/˜~e3#vÆ ô› ÝBxü&\éOè8x‡sì’ †Å(á¨ô-¨Éh9`¨c[9Ë Íägø×¥˜àüHywIw¹-6®‚ü»¢^m–¢ ¤*,ˆÀ¡ïà ¼­2/M•ŽÊP™N†hÈ„1P04sõømZð‡:fÚ½†à½Wyu ¢¦¼E·‡›Ä’Jtµ«CÊâ›”èv4)ºÑäÍ‘Ÿ~9«ÿ0”Áu/A…ú4}Ý™£ÛÌQ(í’Ó¢ÛZ \±äÏyùkBÙç`»v ¡h!X‘b<½Ìw=¯¡uëÎÄŽ%Rz–¯qx\ÿ3EgGØÈ?®n @4ž‰›Åã:©;wh¨½½·®]EÇvšWUKuRT@çP(R³5-!'-±4% ø¦\{V/Q¢Ÿ4‰Ã8XdwÌíóêß)¨Ê[4Õã쳓ýÒÖ®Ia5S¢©§ Eýéœô8šD_vŽ}jn8NÐà$ö ,ØÃŒcWÊá‚ubE@¶ï|b:³©ŒˆÒ § =W†N úï-xÖ:ªÒ*X¾+uNˆrÐÊ `x û®K¦ýÅWâø5 -® dEHÕÚ¨¨ˆÈ´ò}φ£gÉtLÙa”¢|”O5äAN-É•îW'!z ´‚ùºT5t ©&Î ¡‡ÈL(ãñœÜá<Ñ>©v¾ó·—Þ]zï½E=O!þôÄ|ëu<ÄVX@ÞÖÃBpgÊÊäe¨M$uåw÷¶uÙN„[£C·nªd´à† ¥óŒ¡ ľ|GÀA¯Á‹P8”pÑ[t÷A¯¸'ãˆì0¢ï|5ü€­£”g£‡·dÕfÔd$¦€Z4NŸþ¬þȹñÜ@3S‰äMŒ‰¬7YÑ=£Öh˜s›²¨ •…%yHÆ”!iS¾H_¤+BôšW 0õ2L/øŸ2ö°ü\1ÚLðßê8fumj_æ7êZ9ªDt™RUÊb ©µJ¤¤+õUµõ &3c2š FÏ aL8QÁA4çðæça¶c9ÆÃç>ëÈ–ìÓ)͈6ëL&R¯qøŽ^ò£P®6¿¸ =y·,aWþu2¼Ê‡UGÐaôYÍ„íÜè÷ù Á 4¹Ì:¯ºDS|€¿ Ù¨7Ö± £,j£¬´ ³´”©à²òÇ»‚vGØ#q墨Ü÷Ñ x (Î}×pv€áGÛÓç”Ít{*¡R¯¿N% ÁóƒÞ¢Ixïáóâ÷%Øc“J‰¾¼ÛI”V¶?Ëý±ì(¢¯^¼Îr *Õ•¢Z"[!c æS¢£ž¡Ôe(íŽ÷¥ œÒ=ÄÔ¡©Î£±‚â/Ó¶cBu}‚Î[[ÎéÞôUcYdn~µuÌÀ4µYî*i£ºÚÔé,΢ã>ZƒèøXt­I·5°p–ÿÍS °C|Ç(øñdìÿ5\Àêã!oÑ ðs,ÛLV£ ѧdz|Ù=vÇ[³ð,ä]Ù(¢o=à~=Tb˲³µu]:U•FŽätÞþÒÖÖ}û[ìiÉÉ%ÒLF£Qk4<•æ*=-úµ¢)%Ñ”8÷¿^ßî—м«/Õá^1Òk«‘<`=h®×7 zDß%Ïü¯ö-غ~龫2ö8`quÊrþúû£Ö0rj{IX`v–¥¹„)nÖ¶©Ûéÿ“Mx~ññdÕÂ{Ç“©!'ÅðK»«%²>ÿçÒþwÉÄB¡Í Ôž9Æ'“ hetQˆø`W^6Âåë‰ {Ãvà8/~%Ï€!˜í-*ù§òàΆA@}~yÏ›l %:Ô±ž¶^11ªVm)Ij]Ž‚™·–¨»TÇ G#m%–"K‘¾ÁÐPÝ`ø¬ýâqtM†Žo´®·T"z9¾!î>uýIÝÕ’Y€ö¢hyLl¦$'R³9¹¼¼˜oÿá|©×(¼‡}Àgá=oÑ­Q§AS&dÖ™-:ßÖªÊ`ñ7Á(å6:–b!%º5±èrJUVÖž9ÉÖ”~³öšººPÝŸÙË<l÷pÆ àü-˜øVsNŠOí¾^ô9Ÿ½è¿MûUĵ5ýlZãCŠyc£OXݺ.tþ󧃟ƒàÚZ,lfª+Ôeüz3‘µ=ï±ʬ1WfånF¥Œ–”ë+ê䯨ƒ‘u;½OÛ‚_|k†Ž×Œ5Ñâ—$OÏuü‰B5:~ËÒJsI4W–Ï„eoRlFO-T®Ä ΀'l!PŽSbë¡cí|VºubÍJ¶œR,Yý~Ȇm[·„îØ$—k”¨‚Îw,ã·n¢sëÆé¶Ç£uÊá·Ù r|lü虑‰3?|‚¦hðÁ³>žÿ¦ÂæÅvçôut÷et$>-¾bÐ;÷ôyϘ KÀcÓb†áŽ?‹m¶±FÞO¦nbå É]Xš£Š° lZAUWÔ!žSOÄÞBBý²¶½|oK­ŽNœó‘üµ—Ããë­‘ŒŽê«éàŽzò»“ ´œŒËJOÄ.0/íK~?¼p^º÷Æ…×jYÑÅ˶›#¿Ìùvï÷ ã'w¥ tZûûrºRæ9aݪénñ¿îÝV9endstream endobj 117 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1037 >> stream xœ­R[hUžmvÏL%ô²Ã’„-s^E¼¤)^ª¡µ¥¨h*4 DAk±I“ÝÙÍÎîdvg³s&›ììÎ^23{É6›öA´˜J-vÛ˜€o%•ŠöA¤­ÎÊõl¤Pß=çpàÀÿ}çÿ¿ïsQî”ËåÚùÖáþþ§z{Ÿl?zÒšmýåA¨Ó­ïs_òÞØ»¾ûË=T{wùãCÃ#õ2u’z‚:F§^£hÂBÑÔ²kcÇKCîÁû.G¡vmßJs ‰o7½×71¿ÙÅ®á§[{|µL}¦†˜+[c}pŠ–”é©TJCÓÜcÎÁaÇóüÍ_])®^‚,o_TVUæ°¬Ìâ¼TàáG œ©Aü:–Ô¥øÙÓß¼rîUÄŒƒw)GCV¤Z7íZFAˆßpöûÐìÚ‘¾È‰÷™×¾þ±ú¹Á­ÎÏœGÌ¿ýi̓­Î¦ò²5Âã>•cRDŠGƒc¡ÑàhwBNM‰ˆI‚$’51aA™€ì PŒW9¶¦ëšîÿØå\¥Íñ0îâžßÏ$àEIà˲ ïvP×UÝ¿/™ aV€lMN¨I„PxU*—‚‹ÁÅxY2Å"£Ñ¥‚ae»Q!Ûntçóš^BLdQNÍ!Ʋg³¥Âi !¢>ÀÎ%e-áç'åaçKS® žsܽØí)ƒšQ°*Ñœo&HáÄ”·R6)Îå´¬? lT:Sˆn¼ÔmˆÆd1þ°>W›^LmbeÛ@ªuÕ÷wz¤X„81buŽ]Ëf ¾¬™¬‰æQVÕQ–ù–¶ã%žE^Ñ”âÞt”Vz¶KyÛ :ûA›%šmøà;¼ÕÄGCµÇÈwwp¬Õés¶†Ä¥°¨‹å4Ä_€J¡h’ðQüXÏLrÎ> Ògø’Ô !ÞÃq_p2 ¬`c¡j/@öV=\çØ;éi5íÿýØÛô.á®Ë]ìgص=àÛ$7B\Âiâg€mMS*ðÄOàö÷x·s0ˆ¨'‹óD‡™0Û:èD‡›€åõ1¼Z6*][àg'¹ˆ Ù– ï­Ÿ\ÿàúÅÆÆÝ£SI2ˆ©•l½.è!YVQ:{·…‰q ®ççYO‹¢«Óó#Ü(°¯<ìþ®éÕþ¸Œ½íÓÅþúg úÔ¼‡D-Lr†’\Q™æÅy²?¬8[$ÌIÒ<ÃG%â áúTH„+QƒO$ âÃ4ZÑ–åâJýÂÄdÀ§³ýCБè‡$ÝÛH£`þ/È~Yš…,f3|ëÐðéH À)ÉT"™”>9UF#èTDcvqt^ìÜIQÿlè.žendstream endobj 118 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 6890 >> stream xœ­y tSÕúï)…}‚¢=D ÕsPœ•Id¢ H± SK)M›yN“4ÍNÒLÍ_ª¾ 1=öÜI ¿FŽY1¶|ÜÊñâ •«&I^”ËLY¨|kÚ¢—O_²tæ²ÂÒW–¿ZöÌà!C‡Ý?üÙ‘<:÷ñ'æõrþ€ƒžzš¢î§^¦úQÓ©¨ÔCT!õ05‹z„z…z”z•zŒšM¥^£ÆQý©¨¹Ôxj5HM¤Q“¨©§©ÉÔ3Ôj5•JM£DÔÝT/*ŸêMåR}¨Š£ºR·Q#¨îÔíÔ(êªõ½ßí3½O¨ ·`qÁ{î»GsϾ{ûÞ;ï^xï»Ü=\˜Ïåõ}ü¯NÝ¿¤îÈ~·.–¢gÓ™ûdyìú¯‹L°Ú^ ‰Z'—tMüEÀ®t{lž‚†@0γë㚀ÄTmƒf®ñ·.èÐØÏMvì-Ñèä<»RÐ6pìzÇî.¸šx\T“&¾6fŽ×Ä$?äK¾—~'ùÞ°Írî-7S–B“Ì\±÷/Åáþ5 ³¼VÁ 4\ôšÑ€òº8@Î{ÏèrmÓi”NÏJçùÑ€ñhVG/ö$z6#ùé„1\Á=j½L1’ }§gv³L«UJƆ†ˆ7•ÐøåülôøtûñÏvßšÏaÕ\ZªW«ªb¦ON– ×'£Ú ŒRüwžûº¼d)wc Ò4*Jç}Ó”¯“-üþMf‡èЦŒ–*M•ò€¾‘Gz° ®²·ø7½s~OÌ<>Îϰ™÷Þ_{¶Ï¿žÙÿ$‡%@¢×(³ïùÓI‘ˆŽÁ˜-VͰ¿oV´Ì›ßN}µx¦…Á÷¡M"T„n§ÙÌŽtÅÄ¥ÒeËe|™¼.ƒÌÕMYÒèL:gÿqÔØ‘‹ì™)"ÜM?®/ìËè:œsþ!Ô2€ºÕŸüþÁøé”;ø|dp>Vˆ`Íë˜Sïöå';ƽàåŒôóo<þ4WžwÏ=^}îÚ›Òo:gSGnf@æcÑÒÕóâ¯CFðã†xÄ÷C|ïgxzÜÌxÁ~„:§tþÊEî²J ¯/œY\À·{^GàÌŸ‡ÐÈ>¶gÊ4W·xïàùmƒ&Z`ÍrcHѦ4šŸÎ»ØîþxKÇ\2».fç¡„–¨ŒRžÕÊ"º$ǾGá)Èp æðÆ`hAsŽNéU ¹¥Ül·@ 7 Ç‘õ¢¡ÙV MLYÌ‹EÝ«¸ 4tÛ…­r·R¡0—™XÍî…æv²NeQK¼ÁhâÎÒ©šh)wåN Ö%Ù»e·çÿ˜˜~%׆ Ç“­ú]­£› Á ßäj£T44ò¬çKœ Ø·ªt:…2 Nòl“Ëmw ×ÈÃ[¤`uÜÕ³ö˜> æ0hðõNÔ ÝÁ±M![ÑÆ‚T"Ú¼cfxѤ%s‹nì•_vYÞ/¨©W/öÒ/Ùj-¥«HµAmœG#@£@:¿”ŸŽJPøO«Q@ž¶_-E*Hq?Òì±µGUÀ^"Üe*À¿ö ³Én. ¬%ãÙK’HuwCÓÐÔ=6õpÞ‰4Š¥{±QÄ·‹Ö—o3q9ÿçêŸQ/<N óåžâ\ ·ô¶9|Ðg¯‡mð}“g!öWxlªö‚Öºxœ?K'ôA¹FoÔY¸e¡2Ï"È Ç]$á!èìiØ—·Ò/=P#!(› ç&¥{vy³†Ë Êj þaÃ2’€6ÞèNÄ<Üu¢§Òh[:g}j8‘›éñŽÈL˼êæhÜÕÌ¡ñA: Äs€š G3U:Bá×%ù÷€efEÿÑ&ƒ×Ñc¿|šøæà^>•h ·Â#ð žéuËõq‚Egœ`ñ‘,«ô•RWÚ¸4ù&d¬÷‚ã¸à8ƒ¬æëÁv¸)±fÍM*:–F=d9è‰4ˆÐÑ™q¢ R§“Ë"Ÿßâ ðŒÝ_ü)dN}¶ýs>@·(ꮊ3ÑóŠ$K ek·sH‹†Ó±”³%® Hx<ú Uå–ËU¦·Bo³@Äd˜.t ¥d”¶\ÈŽÒ Z¬×*xV* é‰$mñx‰$]¬4+g©° g[êz ·‚°îR,]þãM+H2áÙ·ãš`y˜Ì•¹€ åm2V¦‰ZKÄp a¢׊‹ðRTÔ*JBX J„¦ë ªÉ1錰 D\/à,AåFnÛÅ áZ®°K¢+Zì6n‡›áVÿÚf†•ˈÚp_ùRdr~:Ræp 7 (%µå ¿6ÅïÆÅ€Ý6bfÙôÅo¹Òj “–Ø n(¡L£„heì83št’‘–ɲuÄ]h±A«Tû4‘Z©úP4¦ Tò¸sFƒº€¦ú`4l ©<> $RÐ5^{±˜4ÓUè »'C û§ð‰.µSèD—Õ€ sCBëó6iªP¥иG5ƹ&‚vS{%¿ex˰ÕÏy+ê«VCÆ b0j†½>G Î¿æçõ?µÿ䬷‡Biñ¨PT2¡žìÉbýa Öêe·ðø1ôñ¡¼½HA +G#3ÝD1gÂAæýàñª<îŽ'®À·?ùÝÂS;Þõ5làv‡Ã pÁ:hYeX[!ÓXŽñNÚÕø”¸¹ÌwÙë`&Óð‡±éGÝÌðê0ó¤)eCS<Ñè$ ëäÑTƒ1í —œÃ¥´f¥$\ÝHÜ ²ˆVÖ¨ª „‘ÄÊ[ÛRÍûcJ±ªŒc· ,¸É<‡m²¼]ÇÐæ{±Ÿ nëD»—îÓ„Ì¥¯Îü|rîGãšøÉ x$„2GŽ®Ûwd×’—¢œg¥µb½p•@òêK¼VÊ’‰2+Ç~²ªhq|VÁ“½øð‹ïÎÜ_ÉoPn5o26Xk’úuò¦Ep!3þ¥S'?¹úŸ«I&)­•)8Ü—–ÔkˆiN8¹¿x4Ô]$z°ÈFÔ)ÛØBšÝ,Ô9k…IûC‘섞gO£îx€ùê­™T%8Þ*I̘àØÍY¡9Ø*׿-hH^ho–Ö)8 Cu›6R²uÉÖ’mV§ÅEdÎNCïwŸÇÂ.—«Ž8º6$#š’ûä&³àñý@ª6JT~MœßHX{¼ "‘Ùc÷ÎmÖ’¼În̦—Z£UÉBºë™T°Ø©¤ïÈ=%hõ*Êmr(‡¾‡{ Q5ãŸÂ÷¯:|Û¹®‡q[ Æo§S±ß$²cˆIH»øv|À*Xe‘è^-ž9N‡Åûu{,)ØtúoVý]ái¹N«D« ,§7CL”dlÒ¥ŒdÁˆ‡•ĺ’8ƒëg I3ïÎF‘ÓäeܯÇ_ ¾Ö†ooÅw­Å·;e~uÜʬ&šSs7{šÜÍî¦5¨ç:$ZD®¨;æˆ^ƒf2RŸŠëHj!ªž¼ªÑJƒTH-}Òã&0æú]a($9g9zxºà†n²®w2â|nRY/'Ñ$ë^úgÏ*’¤ñþ×odчû …¡· .…ûPžðÕ‹ý€˜Ð~¢U2—Ìh$¸ât@¡0U©ëcµáôõÏ~ S%Y;ÿ/$‘0¥ðÉ®NDÃÞs‡#.‡Ûî‚Ì&X¸œÇ25-@@ßÀ’!âÿiñmköþ1lá|q™‚c#k”âÔ¢‚X¢ª’ÜoШtæ^Â$'÷ ûEÒá$Z¸gÊڹ݀•·¯±­)h-MÎU<»È¦”{QÇH sÛܤDŸcú „‚þ±Úd·”Àj¹JLwG¾Ai0B1c¢KãÖ×–¡ ôsü3}ã¥-§s¾ê@µd¸¡‹ÐLTF»¡WÈG©xÝÞÖúU„5ׂ•ºê.Dÿ6ì{ܹxQ¶øæuÎúÃhøá¼Ý'ÆC  ìz'úNäùå êŽ:;´©Fc4UC=¿²A•jLÄ[OŒk›†‡ôÅCp,Z‹g¢Iþôbþö/ÌÌœ'_ô!T/f‰Zž9¹á¦à$f쌉£F?¨ç¢4t׺lîk]ñK3ÒÒ’‘„Ü#@`‚‹°h$.†x £§Šˆ&&$ᄸÈ$¡){ƒ3GƒO£þˆF´ßö*ˆƒ$œìzI]¤¢ Jc¬$)AÈqáæîÆ¡i4/·µ£°%É·^ì¯è%ô¥hŠxôbøƒbÆÿÊùÀ%'Ê逤^Ø2±…a<?ºùDxñ¡COÖ10wžùÀ‹æ“ðì¯ð0‘>svÇñO¿5ÊÃéÑÏÎ}qüäMg4¤$!´‰”äØÙö}‡Ž–¼ìåLô¤Ë gNl?T}m[è)z—”AôéÈŒþðç3£/Œ&Òsýt¹“HZ«P×JÉPA’íìfçÜ|ÇÇ‚º±yñ&È´Ú7Åx/Í~U·Ï±·nŸÝ žöÐÖ¤<*%s4ùîì Hˆ-%ÖÔY”Ïu;ŠÅöJË­ëOÖíuì«Û›½Þtótmýõ>!—tÞîÔxvÜ 2+™P³È2ðeܽ¯ž”CVä ûÜ^XÏ7WF¤b¹låÈsâѳ_£ÑèAÔ{1š‚ÇaêáÁ¸ëý§ŸDŒ…ó€pslׯ€ŠH®5 ›±cëøq ¦@æùG>á=t]ǾcŸÁá†é¡™³Ã -×v•’fÆÊrÐ<Ô#y‰ù.­–Ha ³¤yån 1½°YWÑò&‡tþ»ÿºVþ7vx‚dÔ7£ He5j¡†QT$Š%Ý.¢è HEêa}Héà¯ä’—IjfÐãÕVƒð°*¤N‘' £ÿ üÁHØíE­½úNS¥—ãdËcIò¾ÿòd‘¶V¥ÕWãÛžz@ÜQÒn|ÿiüºsŒÏâ³ÔC& …£J®ž¿ïä ”QOˆDIË=åw¼0ÌDµ…µÚ¬Ü_Þ¢L'òšZ£j¡SPëÐÂÞøYÀ³÷¯ ©YLŽ/è’×ÇpZöúMrM¤±Vk –!v.Å¡·AŠdèPuX¸òŒöùì­A‚Íl»t× 0 ¼¿ÃÕ§ûw䜋VƒŠ´¿*ªoâÐ9Ð%¢ú¨œ¼Ç"í&xãŧI/GÎîÉŒ%3¥°šä&õã¸ði<çq‚îvëƒdbÙdDRKR[k«½éºËrvv dn$ïãU…x"Ä=Üóü2z‚óÔ7t†¨Dw¢‰ø¾°Ñn€FÂr½ð9Qˆ†Çý§¶îO®jk\™:ð»n-~Ž„cõÏ/š*+]^²ÀÆÔ‚aðMÔUûy-šÚð-îàr.iª…4u=²dd¢+ÃûÓb^ø€Y3µqìúpØ.@o ­ˆÇ5þJþÉLHCÒJK•ÒÈÉ—¬(Y`¨4U¸à2§.ß­ Zƒñ€ ®æp[Ã7lnæÁs3a8²ëÃ]‡öÙ¿÷(üšAwbú£ûáœBœS“´4&’aDUnhŠø£ÍžÈœúüÍ=òÂø|iÅò•¥¯ç«52#¬bÊSµ]$cGœD;4ÇÊåJs9w3Ù¤ó2wu, §<úgZDvzmÓz÷;y÷£Êé3æÌ›SÍ/±LôÃbÆJÛåAc 2{üÔ…ÅÆš;nÞ«öå|-É6ôÔ×C?ã ›åqq‰N\9¿©<ªä¶¬9¿ˆÚ–D· Ÿ•‘ßsL& ñüÎö·wìsñáÇaZò¤$T±º)kñY}fww[®t÷®õßì_ù=endstream endobj 119 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 8789 >> stream xœ­y tSÕöþ-¥¹—I°1¯4QD”¡2ˆ È B)ó(3¥”¶i:¦éfžOæ©éœ4é”´ ”ydDEEÁçìOúNÿïýÎm«Ï7,}o­?·+]4¹7gïóíïûö>aDï^DXXXŸ•óWľÍüçÙ8dú«ºCú‡ƒþ½íϾb‹„ÍOèÇ̿ų³S×ÏI››>/c~悬·… ³‰¶Åäl_œ›·cIüÒË–ïJ\™´*y5MÊÚ‰“ž~}òóoL™:rÐË3F=;ú¹1œ±ã¢_?a( †K‰ˆeÄTâEb91‚XA¼D¬$F«ˆ—‰ÕÄ(b ñ ±–x•XGÌ&Fë‰9Äâb.1–Ø@Ì#Æó‰hbññ61žXH,"&1Ä$b1ñ:KL&–oâO„ˆˆ"¸D/b01„JPD"чFô%Rˆ„€xŠH%ƒˆ§‰H‚M<Ö7¬‹SCDmسa7zÅôú9\Ñ»oïÆˆI—X¯±‘Bj¥ïóTmŸ[}çö­í§ï?¦ÿßœyjáSÁëÞ¤ôèéô§ÿ¹9ò[ö2ö½g¾çœøÓä?Ù¢æEæãž¬ XY Ó$-”jKÕÅëà¨uð•5pTî±Ì“’ãZÚVD@›­­DÓcÑ›+дì¥\u®:·  +s—:Å&˜Ã½á‡0}øj2^`ˆë‹„½.Ä\…Û¯F±Õ‡æpøÅdCn#jÉí©†-<üýÙÁtûvj¦¥™†1äõæ‡ß]°ÍßÊCJ2Q ãór™Od°ÒÒ-4L%Aƒ¡1¿.kÿºÂM` X¼M´”b?2üÈ|çéQ„±Nž ¿õÂ=A£(ÒŸÂw¿™ýC»mwÇLŸô±P»k5qtgŒOR'J¤F ãñáe’-ôV¼C†Ü#pØ×(âÚTÚD²›n9¾<oˆTBq{ŸHdÈúksši? _'Í`vPî)r–œüìÔƒã_4i+×HQ"Ÿ¬ *iX)UJ3⸂‚ ‚©›¹…J¡•S–Ö¥v¨)G¸[¯m¼w]kW9€“2“ÖŠF£P¶ /õZ?";Ø1&vò§ðÐý‚#uɯ+Õã‹YGmÖgƒ°ƒýÙð@xCÇôÍVÍo³ºAîƒîˆ –8Z:…¥òUÉÌsè–Hhª£aÍC² ´êÊù…ÙÆ4Aɰ,ǾZºu™2GŸr5êY^£—û³Î€ uM]œum`¥B!f¬0­½›%Ã_êÑ¿³£&È’‚ƒPÉiṼÉ{ó­Å ž«•ùxﲊó+µTmyY`O¼/aÙš5«å´ág†å&ðPìŽ}õÇoÉgÈÔúËAêï’`¯¾\P$4¦‚ô_ƒ]+ß¼D™‹ƒÍÔÛÐÅj¬0á`û°Žóú–-q–%öµÿÖ°žûBo‹¼¢È†Ã0ןy8Š}ÎÅD·S»C%ÈÈÌ.HÉWpð€^¡–¬J]5c݉û<½ÓàÄ PjÕ*'³Îj L¬PÒ\h¦Œ,¨ÎðªJÕeú2@}úÑþ‡7œXXJÇ–ŽàÅ>ðÞ¥âý‡/§MR•n—Åá²03ð~”iÓ9”ùò ¶¥ù©Ü–+2ç eßVk ê¡Oý=|ÓC/1 šü <ôåŽ'£9ÞƒÊlsÐð-†íÀN5U™öó‚h7“àc  Õë6Óé$b¶—R¯Oß1mÜÄ“w¶ò’Î)qá€o+~ºs¹m÷éÊSö·¢«Q˜M¤NÀÔç¶Øÿ…}ò=’â|ÏÖà;Ek0×¢QhZJ‹I;Z _AoÀ5d—½íQQ]`D…ãa¬(ò/W3p¨?Š} Ž uræ ÐÓ#xB’ýÑ}äf$SR‰Àמ·PŸ”<+â™pèX¢Bï¥Ö³ÝaÅ¬›ÖŽ“0070¿j¾~Ýd®Ef.(bJØŠ.yÊŽ—¯8n-²™‹p9› lւکܲµëÊÖZdiðÒk…»Oà ÜÊóEw>`r0Û CM9¤æ%+Òó·Šñ¥Ì– 5Bœ_R'd½ŸyAxQg×õäÁט< 5ü2²8ÅžD“ʪJƒB#×)W  \už&O•/­RÖÊ«Åmùmâ¶Ü£\½MËTwU³Ñ×`—ió ›a’·Nú"÷~ˆáw#ÅN…½COsÁýEÍ€ºÙðö\\üˆDÓP­$o}#: Ž‚÷=Gq¤¶­Õ;1ÁîëêFÆ:2M³Ÿ¬i­æÁ7É®BòPßDcñxþ›<ö~7§ª¦Ôç¯Í*MãÁD4Œó æoXµHKiY·5¢­¤ýÑtߌ9 ¼›Ai¯.âÿoª£TÌ 4I`k¥™—ºJŠKJJŠ ÝEn—/¹8£,³$³-æÀâ} ír§Ô(¡ dVª*‡'ãCW%™@äÊuJʤ%ÛÎs—}¾ü³%ŸÌ:Œ!ÊHÇ‘ý~ï•‹Ü£‡¸(Síâ³Êª•é¹¹ù-“i´ZF;8zBô¤q)x<Ðd<ËstÕ;®¬—½q@+atx)­ ­¢ìJÁWh ×¢u({¤Tê´Kço‰~P|¸ HæÈËŠ*Š‹ ‹éÂâÂO±ÃåtÚÜ4o²OPžÁµhì* ¢ò…Šœ†mÁ\2äÅŽ\§´\Zœ´×þ¤ýŠB®Þ¤g*Áf·™-Án™¯Äï­Ö´–ìcð4ŸOVhr¬Å‚äô¼,•Bœ­(¨T¸…5»vƒRPìsxŒÝˆy Káh´‰°ôò»áÕÌî”’A†p:¿#ý&O©_„‰åßp&ó¶fƒ¾†ìÉ °zfí¦Œ»hx[ÇNÀÑnÐlKÙ™‘Ÿ°{ d1îÑ Š©.u¹Ç³7ž‚DŠœÖåÍû˜vû7 öGØ•‘5]nH9U‚(D JÀÝã,–È$¶‚j*´‡Ü³ÛÚàv€“WûË^¡­¾ÐG=¤V‚Ù§+?ˆzíGáí¨—Yi—0ôÀ Ê–‹"Ñ;‚±@ D6ia¹¹Â j(à— M??7c};ÿmd]-7gê®s›îïÆ—ÿ4·´½ªùt%VVægHÔ”,HŸŸ² ‹Ý”èUøÒßç_ÌÄd€k™!›¯ôbØáÕX/a“ˆl¸ àZ,%…¢8éúì|J¥•çTוøjx6R~ãuÿr,ÀO½: BŸ#ä\|÷ÕjÚd³:1KØ5V•X/Qñ2wlÏÜl’~Ö|D’ìàãrØörQV3h•Õf0uêLg:±^x/†Õ„|Ÿ„7ÿûv˜ÉEKÕ[1<%Aró2Û§»pÚrZ³]"‡hðU{-¾Žb,2«°0uj²TZ ¯Ã¥·àòkp™½ÔQj-3vÞäÆ%«“ $ÝÊ´'HþŽòÎ&stò|”Òy Bgå%9æˆîL!¶/ì8ÞWš`™šL{}5þúvóŒÕpÖ4à5ôÌ84P£Vcn¥äv‹²JáR "ÕÍ”WåYz!ÈÔDÖïo~ó;_mÛ!PJ9•f%ï_*w¥—Ãái&+%dSµv9m@;3÷¬ðnÂÂÀQÏ£Ã>A}!÷X{`O½ˆ„/cAÏ#ù)æv:ÔA¢{FN1 n:o]9XQXi¯Ôá«q‹%˜ë$4šJ nGåé;¶ 6â.yÓ%Ù}(Öý£KföæÙšÐ”šžR)êövuÕ:1ÝYEÎ[®Ùܽ7[—Ø.1{ã C ²$×#ôˆà@´öG ™ßv¹=›—Ùî¤Cï‘—ÎZÛpž%|²í¬f!Ý9‹D Uåš"~dŠÎò…ÕÜ ‡½¡˜÷²ÜV»ûÉ¢‡¨78…¡~ãŽNù<Ž®”W«€2³nƒ mÕ·fÜøš)»ãP$Só2¶l¬;A²7­:î î}ð.eôrnïýúž•õ­Âð‚ki`dWu¼QeEbŸ»í'ì BdÇÎxÉLÁ²yKæ&ã(4G² î‚ëà³p\Ì $bÐP¸mÂþH£1h†¢ÄΧ8¥$€¤FAò"ž]\tÖ½®/m}³z•c>X—Ûö±ë ´b}@#À|8J `_ª/c<ìkùÝtm¾0~)†cÄMçˆî²ºf4¤&cÅÉ2JÝJ'ð€B Þ‚¬ ê£È“-—N¸Šôj/G#Ë9TzEž¿ª¼Âwh}`{ô¢¹¯ðzZÃ:ØZ/Ô1£çÀC8êoþ°™þ‡•UÃÅäŸí°ß»8ZðdøÕ—\ûŽQ\`eÓ5*‡¾âÀ ªKÍå&êëx_ߺÑ/0Ç ‹¦$n]®X÷Ë,m«„+Î|ê‡:¿[Ys\øœýAÃñ(ö·2د’c 7*¶l©1ðÅäÛw!¯î§÷7XZÊKpï4Æ*š•lΨõ”•4zìU.àÑÉŠ5eê ]9¶÷¿w¯±`Oš6’ÕUe»ãíÌ…Z­*ßSPRZXTR-ô¥îJ,¦ót:­VkÀ ªJ‡ÆL±ÿ"+JOq¤ öúªè$OJE:mÑÚ5_j^+©2°àm¯Sì'²øayü`ðïCÖù¯oÍÆ]8®î²œÆ:;9ò¤çæÍså1Û•S§§gúòxâ ½_çï$ZýÓU8]è Õ"O}‡Y9”£æNs|¨¤¾¯}|‹vÜÄSä:ž8.!{+XgžÊoOïûŽKÁYh\’Ñ:4Å E(ê2zr—óó›e-zª‚Õê- .ªü0GÒ¾óø¥d­MÞ¶-ÏšïÓhX{ŒäìÓàè– Sýu×gÖ¿é_f_D¤"2z…f•pl˜çjjŽW¯ÙfÅ=zÞ™$)«²AÃûÍ`”!6ØëŒ¿^Ï€­˜l®Òn ;M̨M…93>M›ÊËìþÃÑq]æþõžM¸¾íÈYi€?p1¬8û˜o}>ó˜i¿?øñíKQìÍÝÍFm•vêÈ]¹ê¥ÙÉA™ži®§CýÈPÄaßÎЉ„iCÌšê*_°6ßÊc?Òé º¡Ýñd;¢kÂN^€W.„Cê0çü;‡³ocèwëç?ÝxûÍzI`†~M}\ « ì§>ºtôÚwW¦,á™Åº4ܰ»N' SH»Þ®ËR%JžÓ±V¾}ïÆÚ·5jÄÄ~áƒßfÓ^M…Ú«9%9UàŸc›ó˜š¹nÎ䑯‡¤ˆgp\'e']«R®Wªx(T™TŽbwÇÁ³9í.‹«‡Wkò·žtüåIW:ÞíNGc½§ã. r¹ —Z©·@œnvKy•æB/ðRµÂ’Lž–••#Ì\y.³ýö…sè”\òÇ©Â=‘±.ôÿ°”\y~²c*' ±xZŽ™¯›N›*Àª®‰L§N`™–ã940¸€µ#Þ²—ékK­-¼ë 8­kÜL4ϵ0C–œ®!˯–Šº†Jݶ²¾ö?B+-˜ÅJɰ´ÐHàÝSã/sæyÄî|’?Ù—dS8$@J労bŒŠuAƃ|G–'ß_àÍhÊØÞ”p”‹Æ ,~´½ÎWä>¸çØ Œ[Ä'‹=²‚”)iB:%]ž’A…2{0QÝÓ¨Ž`· 6‘mívº³‰xÐÓp*Œ¸ÿ㌠à¼K^é–J9ŸÜF3—FÉ‘«Ð3hØœå'.‰x²fC h¡àWx'6w{š~tc¿ãUQ—„4ün­eâZdZZé¢g© »ãuì`™»*ÉJà7I ¥–[þôâ1ôòI4â,ϵJ­jÜ«ÍZèðq¯ÁÅWaìS²¯bχL:ød][A­' J­R¯’$rÅñ;Äñ“QW²Kš NÌo–´´¬‡Që`Ô;«·¬ÀÊ Â«ÚAm·I Ÿõü?ªÄ1?X­~ï`åÎ/ÜqcÏ—__°/ÜÄC 2!EŸÄÿ3·üç÷³Y)iæ&f“ YßÙ˜Þ°Õ5ñiËs®mÌ1`I\v,Åþ¦ë¦w¸¦'geLμäy`¸ãÏ£ågÑòsh…µÀœeÈÄ*3›ë-Ž#pÌ!8ö(mvš&'¶­ÖLw–-ëâíGôAÄs¦qÍ*‹Ê¡ÇÞ¦ ˜ýÖ¢ó0ö4\zÆîõ¶\e’»“O6Ãó Ö«ôjE7oEÎÊœKQ,W‘*OS¦4Ê[dMq°ÿN8`;ì¯s««Pw Ô`H•ò«ÉÀ)¯œoRYå@Aé±!”çh ’Æ Æ¤Œ–'I’‰Xõ…·¶ð>W¼O¶W¼×Àl‘o‘½êÐ/[ĸ1‡CBl'Ú?œs=ŠýC œÊåѬí|ýZ^‚,I·ëNN³µÐ_~|9´Š£µë´Â!ÍÓ«d*Þ4| za,.Í•Šqc©6ªšª rØ .DFt’=_(ª=ëƒQŸ6;ò݆ Ìy€íÂ'°?ǪgNg¨Z¯·¶&«"=-+'ùÅO¦þüù'8àÇùDýiö×ÀæÜ]I\KúÕ~uÀ@²®‚‹uí'-6› 74&Ò`ÕZ4@ ² r5_Ë›Aœ{kö“Ƭ1Rz–`§ ¡ÐMRaV¹ Ý>«•WÓÐV¾Ÿ1¦Ÿé=¨7˜h_+>_™«ËÃ(Š9’wž!䨙DhR6\ý$Òû }_0/Xé‡~æ¹Q亥«¶nÕjUܨëH]g.®Ú]^È ì)9=²÷Þ±SìñBQß' –Ù‹ i¸óOÿÓíþùöîäfׄ†û`r lßPúE8 ïr ,ðÀòã…+µu»½m 4H*ÒtF-Ð*=G”ž^!ªª./k¼± ¸½9-G¯¢çjQ\ Ÿú²`ïÇs`Ôoù þ¢\Úˆúr\äe?d}ÃŒhð^.ù¶õCÄÄ´¯?Òò€ ¸ ®o²C÷n5a*›ó(üóŽ)œ$‡ıO¼ PU,?¨4ù±ò.f­™³rö¶iïŒÝ…"ÀóTJ¹°–gbUK½ –*cŒ¹¿øØSQT^Tþärn»·_…äd«–e6]-ÕÍž¾ìŽ- ²¾ø>Š}Ful夈SÒÅf±±€¶¿èyÁþ¢‰oN1ór½Øc ¬,IWft•BÚ‡y mt»âæ`¦WÀc_éÒÃΟ{3b Ҩߪ%~ 0§l݉ïˆÜwXxÚ„G°BÃ%ð Žžœ>w&˜BÉHÛËYüg@} Y—`ßÛñ'gí§¥™SbÃýÆÙ–³{>rò{cÆ6óäºs»pA­ã°X ËpõÈÉ“M“ÕbÅ ®Ë*“´f~¿Ì£&Ï\ÿ朷~.Ãm/4˜ã$/ÝÞ}òâ{ñ3 y@kÔ-X¾yËVN¯Õj€¤{ œkbjUïR¿,îò…FTEî{óîøós¨¼Ê1²À$è•óR“³¶€DçȪ¡ªEu¼ÊÔ¬ìüL­ g\ã_†³>„›`4|Jw¢ù¦-šŠ“öX‘®KM‚ˆ ÷§ZÏó ÍI µsù¯NÔ JȽvÉrçb ]ì(µ”ê± _Iÿ²…¡YÌÞÒµ…¡Ùœü,AeT‚Õ5Þ Ý\%ªIfvG‡wÝîý/`ÞÅouï~"S¯ÇðာJæ™1¿_«Íåž¿µ´«Ø$ç6àº÷oÅÆ°ý®Eª}BØÿ æ%Šý¨4”ÅØØ—ùlàd[›Å‚¡jg”QeÖ‰Ór¤¼Œ¸ü `&¤%‡Uxï[| A¡Ÿ[ *v±Àÿrûƒ¾½û,ådÿ5ŸÉà÷g˜h¯v(8š\‘TŠ¢ëÑ[Mhá´ŽD}­:›ÆÖu2dq§yeúE80¾àkNi€ á 8Èfs1C(v³McQã´ô6‰a·‡2›å… …¾È“}O¾¹Ånû2ÔÉihßï=vƒƒŠ²‡Ø˜kÌ£¤$ئÈJÚ±aeÚlÍlj= ´5îÅ&¥‹©D«ÉŒU…ºHÚ¯7Ÿ;Ñ^^â+,©(õ9k@5õutëóóÆlžÈc$t§ëË*ªk„%i£(²õSh¿Ë seã8hužÉÀ(0ÖÂÎϪ?™yÜOoW_1n€¯äµä Å>К¸Ú¿n(û¶FË ´":Gs˜Æ8©C$&±vë!s‹eŸ·Á×ÐTÙŠ%·½ô2½‘iFH¡Ð3yˆ‡z¡!¸æ‚ºgIƺŽA¸hÒn…úžÃ'ÛÀ!k«—ê,'wÄ«wäåsñ!Ójåò·‹9-¼A:uvYA^ŽRÆÛ"X­üuPdü(t¼>ìÈc¸åËð¡ Ç´ùèu@}µoÒôq±3V,¤W¼½$fùB…B«Jб_ç0CüMÖõø!q,_`ˆ7ƃ+¹5ÕÕÕµ›¿º`8#^ýE¼:fö° Wò¾ºJo]µ¨Š¯Ñ€æWñá² ¬Ñ0|òðÍG3~Šbï…a¡ÛœÆöÅ'u¦zéúÅÙSÞÑYêevƒåÀ¨²L7(d†kìkßVC‹ICLê„I`x»Jp”™HYU_ÖäT¦Zh5+.7•?F¬ûO>‚ä£iׯ—Ðì÷oT]~ï³!ŸGóÖËÛF'ûsª«++ê‚ >3lYÝSZ!‰ù´«º¢ØwþûúÒü‡ñ"D}ÿL‚sžÏ®;‹˜užR"Ù¸J/Ë©ª+òUYS±=1E’—ÎÓê4jf8VP,³ Ý™¶L#%cFý7£A4lhãè@ä¶{‰Iö‡—OÝ©©TʼlU¾d‚\Wn™šúµõëš…2q$\‚1_1c‹¿þ~0 ÿDÿ¿ˆ’ÝÉP¥À—[GmÎr࣮Ω[¾dmNÂzž¸eIé.0 >Û¤/Q0ˆ¸”ôëË g>­¯• ¼Œ¬ñ84 Úendstream endobj 120 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1990 >> stream xœ}”ylçÆgY{ù fHCv¡QTB!i•–5@CqÂa„@À|àÛ»¶ß{x½žÝwvöš½ì½ÆÖ¾6©Nš†BHKQ) ½ IÐ7ËXUgqhTõøc¤ÑÌ÷½ÇïyÞWA¤M# Åôu›6e­Xžz]÷`VÒœ™JÈLóü‰áis?›}a1M¡PeäªÞ_YTAÄ쵯n¬Ý\øZñêV½8O=Ÿ ž"–K‰ÝÄ2âWÄsÄ+ĉYÄlbT´*bŽœŒH#N(Ʀe+3”ãi9éÒo¨ªJU6Õ{ÓõÓï¢B‘Q'íЃ/ x¸G!~û•ÿä÷¤)ßÖ¼P ŽyˆÐ8©Â+ñ <ã¯mýíb?ýMôÛëð't=ë’”II_¨j¦FQ°…鈷C´Úƀ’ƒ¼€Y¾ßÁ-&U·âÙûžûéIMKÛ¤[d#Ø …5± ^àÀáŠ\Á½¼UõçèšÜE+K3huòГTÈå¹ÅE¤kMd#!¿¯Ã 4w® ;»9/ëc!‚œŒ§™: •L„|î œÍ|Êb€£ã±Ó‚·B#Ô–U·X'çKãš |pø>í1b|³£…®€uL”Ã/¹ò‡—› Æ ÿ FìöÝns3`œjMš?Ù§yDÊ(Ÿ —¸ÆA‚Žƒ`—lq@ž Äüf¨)¬€ˆÇ-pmtè\pÀ6ñ ýH\ý‘âßI~€óßÔí…hÀVº~Δ@¬åʵÿßÅù·i-æ©:wø3|HãôƒØU³Ùn­·PÅËöI*i  ¥ªÿT©Å&i¿pêÖ)A\*(0qÉ^)Ö‰sIgHŽãA‘F¾ÁTßÒ`¦lÖæC­µ½Eעˑ6hZr_Îô†qtðLøBß-ºý-9w •îZR(-4›|àð±ŽvuâÎHw oJ+MzK ÷Dík°­¼XöÁp_8‘ švvç½®/.(ß+«ÃÕ ·CBï Bõ蜦ê’úÝ»F /|ýõmœž ÔÉÑ) IF¼AúF"=rØ( ¾&h‘ ´Џ’ЖPxé÷íþ#p[ƒ‘Ò&·j$½mŽØÙjÐJóUGÍSà]eåR¬Myu¥«m‹Ñ^cqµzé^èçNB 0'©ì3³Fz«£Y€xXçÇñ˜ÆÙ6— ;&oj/ZÉ€Ûã?ò›y#cK5ùŽ2Z›­`ЂÁkõ[Eùƒ&hqȃŒü<ï÷[\7=)`6]»¥qüÒ}ΔxK^®Î/9ZY¡‹éO‚NÞGq–e±¬½qMÑ–’ZÞd6`ls—âSœAÉQà¾âæ}%Þ>NvUu–—WU•—wVuuuvvQj‘‘¸øƒm1ÅoÄÇ•â«É=¤< Nyõ¤j¶X˜†’îþc“UìZ#oö9OØ-_ü›t(Ž7 Ⲙ×ãoHWÜ7.6øê˜ {‘™’žžü„1È娴 ~C8ˆpÊÉÏ ág{uc­1¸ Ãc >g°bú¡££½7<üè!d{k#CÕ½R›}Ž9o{ûé&¸6ß³Mëêºî6«Þ^ÜLí‘¶v÷3&­ÝúæòU€vU|·Ë“ð$hµ˜m’+z§.Ü=q÷ЇÅ,Rš[¶XšÒ,ôãKëîàŒÏñ LÝÎ;[¹8ˆ³ñ‚Vè;Xòv×~¤<)­!§Ð ïѸø^<ÿ&by½º·á Lâ'ð3÷³Þ_»øÉIê2Ï‘ È—ë'x§+Æei¾aäôÇg…@ƒ½åë·—KiºÝtÉÆ7K ©©iÏÇ23âŸvntƒendstream endobj 121 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1372 >> stream xœMTiPSW~!$y*‚¾" ó2Ûm¡€2Š–ÊÒ©V°(K­bP, Ê"JÂ";Ž [A A0 Ä¢TŠ´Ö¥ZÅV‹ƒK‹´Rà<¼üèÇ™ÞóçÞ93ß|ßùÎý”±%Äž›|foÖ@4Ó{¦ÓE`"ã"QƒÅˆù³ïQ³gáJçÕ.kƒ\m—}èàèDQ õ.eEYS6ÔŠ¥æQó)Êœ² ¤”)LSA3A¹‘½‘Ú¨Õh\è-<)7Ž4>'²ãT¦œ ôh­ç‚µìº+Ä.taVJBsSÝÙÃâvMtðuÚUÝ&Kô‡%î¹¥­²Ç/ôK¹@‰ ÓU’Á’™}¢ êô Q‰QÅÍñȇÐèz×¢å°E÷ó@=*þ²”Nq(gpË BîJ eq«D›ÕœÙ4šýúäX¡ª 3/TÙ²øôíñàí¨ÉÐäB.Ði‘(#$JÈ(/Rk óÙÒã†ÞûÐ:y±òø^ul£¥¯! |bƒcCöÆÈÁ|/&ôkò4y¥@7Wêêêtû“Ã2åÎ7—£±L:…ôøJeoÿr +uÝqXß×m)ýWqrF~*ç4TÒ—¯uܼºÕÓ7$Ð'Œ­Mbn.ôÀuzÔé’ÃÒ5îöJuPǶ4ÅpP—@K_m‰rö³µ~o|ÊžOµ¦žÛÓÁ*jK¼Úè¥Á š¹6(º"áK+w·­.Ξ?÷5]}ØÅÎ1i}p‚{Ÿ§2²qCFf'Ä[L¸„Y"ß’ >Ív7Vêc+%F¦‡lèÝý4E —I_c-‘Üpòß® ÚÅîŠ 7š˜ÿ¹ YéÔehï8ÑG“EŸ2‰ ‡ˆ+JtÃè…®ÃÉî3ÇZà<4ï« * Ï÷9½zßò¬)ž"5è6‰&-M*j-¥/ÑŸ3ec뢢bc£¢êbëêYéߊ!ÀÕË=3ƒwMEgä”ÞBº1÷N@˜2:&¦2ºµ@ G²EGKÕÅE4¯™3ÔÜï Z!j¦72ÄšØT)ywPòAU•Ètº ­ÚоMðÓ´pÚ‡˜ŠjÐj,›'+ >¾*dÜSòSþ¦“$›ùGœô¦SÎ;¼˜hj^ûiÏû„ø€d2 uB%1G‹pÜhèq=Ð Í•4tQŽ&+Íq=‘nf¿&F)D«Àµ”,ü‘ˆˆÙ£%@ækŠþ‰Õ+é#ßÈ  ç‚†3è;ù Eßásfú¦Ôqì&¯tŸ&ýÐSOÏTHBU)Žlx„¸EóÚøz -sé.qT•f?*Üʼn‰—z‹î Üùä ÎRÊ¡ô.3ù è…V(v"¦Däþ±“_7h*[ÊÚë•õa¹§bO\ë5ôýäì—µÛ>ñß$#þdj*oA¬•t‚“ˆÐCtPœ™¹3-)3ã 8Äógç¯ÒšÌ£¨ÿMwÆØendstream endobj 122 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1298 >> stream xœm“[LSwÀϱeþE(Ó¨ ;'óÁEÝ–-îftN1b”Kh)¥µ-¥èE(´ðQ.…ri)m¡”K¡§(x :Ùqf™×)‹K6t˜íÁ,¼ø?æ$Ë [ö´—/ßÓwùý¾$øk’$Ñ””äý»w­äo'z•ø*- bx÷'DåÅ/½þ0îöb IFEŸ),Ë/“DAH¥.¯Ð‰câ "È ²ˆSD6q˜´Vb]¤0Á'\är`ˆ'à…øþ Ö*`ýµ^6‰!ÙXÀcSÙ·„¦ºl8‡4½ê±ñ‰¡¯¯ˆ'SÒs%¥”úJZŠ@Q®« ô' éÐÑÙ­­”Ͷ6ßcß@³ýœRg5™réúʪd³ÊRaÕëê”F˜Q¹«lÔêšì¤ššï`S[‹lÝÎþáðð5ðC§©ÙŠìP-Ó£ñÆ>†œÅ±X´Àc÷°”Pj¨)=Rz«}aÏôLfh·<½A’G‰Š«Žƒ J{>ݦ×zÇ0R?o²À.nGv‘Ã¥¡ÆÞaAŒÜ¡-.Tœ:r¯xWþ¬i¼2Pæ¡dB»¤-ÃQ`‡0²Á#Ì÷0 Ú%`o×2ìf†Äq/ñGxÀ Ÿ†Æ¯ÄùÅ ¯±£žšRµë@‹4Ç9·î̻熟Pížæp¡¹ãÁŒ­§¸í °.;t·PALÌt»ÙP^f”[ké<U‹ m]T<Åûâð"%x•ôOç ,ÀV ±Û…âsºbP­ …‡¯FK+úRg TSé}i€¸øC\œô¿Vôðó#“€&ܺ’ }F˜.æÞ¬>&.-†-õPZ'ãpƒù*¤’"yvæŒäÖlø¢»›òçߨ˜„ãïัžj¨1šÁ`¡å»”žT¨s½Ý3aÚ>ØÿG«Ë9 A+ôƒ§:¢ð)'bðžÕñïãXû2ý‘¶ºÁÍÈWå“esÏš)e¢1§âSÓ™-õ™ÚÚ`2«+¥€R¯õßýièíl¶Cïÿ!üoΚ”uUtARyœDÜkVÝô· †)·ïÈ`…MÛìv °ê¿HRrúäŒøg¼o^ÀF#’'WæÝ˰ò*Žâ±–¶¸  ZPPÙU®ÕÕT(½S:˜A|0‘ÛÃmâ¢-^¿àétÓuª:•Ye–›K%Š|‰΂t löÚÆ"VØJ yÉÏ,÷—0åÅ1#Ô!¼_hуÅhÊÌÉ…@rßÌôŽq†éÐâlÏ ï|Ùæh°šèÈ)p™^ü>ƒ˜«"/;€×ò<Ü‡ÂÆ«WŸÑ6oÕìšÇæ&ÛÔÁù“ˆ½<ÌÇ;ñ¦{² ©ŸfF&¿‡»è×”é\"÷6Çã¶‹)üH¨®Tå4´»®B·» Ì}ôxH(mW@ ’½p"B½—¡ï2Ý^ݬ…J+¹XY–,;[zÐ;ŸÜXò´zmÚy3ˆ7u] bÇ.ãõ€Â>]L½MS@ عZOOãi†¼ò_xÉc/±!þ<‘9öqR—°:¹SÆ%À^Ämœ¼ôóóËw©_p\¿ ·Ì­öÌ >¹Þ?993 hÊ}:õ¨æ=S>m̦pÞÎJ"k”·èG8M0ëû½ó"PÑ|"fAü øS Sendstream endobj 123 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 803 >> stream xœ-‘kLi†¿éàt$µ"8q1:/dMDÂ.f/©ÑDÁˆÆkÐ]E[.«i› ^¨§j¬+Ú˜J *ÅhÖÐ@*¨­ŠD««Hb¢1,Kv¬äÌì'‰Åx~79yòä= ‰Ñ†a&²7fŒ/‰@cÕ€º`èXÐÅ8Ô@|ß”®Émqd|´?/Îü1uQ!ÓH"‰ŽL!ñ$ðQ‰!ç™éL.ãÓ$h~Ó‹ˆc›ÛèåGæS¨f‘aAný>W¥èªpœ m2%o†ÙÛ Í€ñ5õ§;tsüÚ$pÞ”ÆaïqdtÈÏ<ÅêV9ƒk…}\MyÕkUõ‰e`‰ªgqŸ‡Z¼á@$Ôû†yœ4+B§Ò¸Œô…Ûþ8yIö]󻎷l›_<¯ÿo0ó—ôìÕÅ…=AU”$*©œ^ŒÉpë&ò@Ù’endstream endobj 124 0 obj << /Filter /FlateDecode /Length 216 >> stream xœ]An! E÷œ‚ ¸£ ‘"6é&‹VUÛ 0ÆD, 2Yôöµ¡©ª.Òƒoa{:ŸÏ%ïzzk~ЮS.±Ñm»7$½Ò%eAÇŒûõ¯¡ªéôêçW%ÍJÃ_Õ¦w{xêWváéVR åBêhŒ?¦ä•øïikú“,xVëfu¢à&vEßXVàà`‘Ú™ƒsÏ¢‡à;Æ8duü‰Q Æõ>IË2ücV÷Ö¨ì}C}2x.ô»ÄºU©ÒŒú]m endstream endobj 125 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 942 >> stream xœ%‘mL[UÇ聾]«hÖŒšq/d𠯇-¸ÌD¶ (ÑÁ؈‘[ºÆK×-m—®e¡¥·ôå>ÜÛö¶´¼´kœ…Ì(–`ÔÄM YLLæô‹ÑÉ?5“åéíâ­æääüÏy’ßÿ<ÏŸ¦´%MÓ{ZÏvõ?V”ÏÃnw¡Uñ–B¥*µr¡ï9džýã™­*JKÓ{«Ô­Ökëð•!»ÅxÉl´/›ŒfÓ°Õd¸|ÍNQTùk*u¤Îz½’¢Q9êe¥úé¤C´@U¨EJKmÒmô( ôZ‰¡äbÉ—šæ|P§¼pã~~÷>_ýEƒw•WôbD9$y=WoM8Ø~ûÀMp2“2„“ïÍÆo³îzÙï<1HNßì<ßà÷BÆq~=ýþ<;³°úx™w·VñÀ£6¾Y_~ÌŸ½ÝÔ8zhˆsÚl`Uq‚^C–ýû§s¤ªÎtìôàúì8ˆ"ÌwÌÎàÇo!…uhú O<ézøâmîǰü;øùª÷Þ«Ãd¿—4}¬NIdzù³çš¼Wô¤{ÝÉ 2LLx=>1”ðpØGú‰º=žP|Ï´w:&ŠÉ$‹½ê2“(Èþ(’±xB„p0 "iÂã=Ÿc;¶WG¢s3‘蔃Ì$ø¸›<ž¢;ºÖèŸó¨Q£KŸJC&ã·½Zær‚ц§ÃeìyJo=Õ`7JúœmÑb±Ù,–E[.·¸˜cÕ:‘²….µ‡½klR.èÓv8Àédw_Úãg&é4«+Ü*š=(Th”T³nãõKüø…6¾CÀ„XjJL‡Ù…?¿~‚¥ɰ$‚ ò¤šº˜"û>Àæ`R\Àðnp‡âëor™«¹¡{£ÌÎX™óÿߦ9òýHVÑ>¢•¬R¯%Iž‘…);»ÓVf_@ò‰AÝ9)K“)0¤@ŠÊ3 YRJõù2rgû“R•²Ûý_O•¬ËÎïzòzÞà›÷C øÁÃ7¶VO¨× ã—&åhj6–`£‘¹D"†=ÛoTËcˆÃ\>›?_h©–g! "3ÍO»yŸŒ/Nÿå%ä‘E~‰~PT5ªÒ(ƒê”±ƒ4`=i'ä9JÎl õj–xâ–l‘M=i!5Èá)lÁZ<ˆÍêYC8rJ}¯%I3÷-nêWÍ+ƒ&ËÈ•óGk¹»²:¶B{2SYNQÿ›Ùºendstream endobj 126 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 210 >> stream xœÇ8ÿCMMIB7‹ƒøïùR‹ ‹ ’÷RÈÅÂtheta‡|øˆùƒÊ÷™Ê÷˜ÊÆ÷ ÷Â÷ øïøt÷Bû»;\û{û+G)hû'‹3û.ãGð¿ï ÷ åÒêµ÷)‹óü"žÐœÊ­Å¢±ºÀÀ‹­°r5U~W|K}S€_u5eNjU]ga‹[s¹Ì¾›Ñ—¼ yo =:O¾endstream endobj 127 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 660 >> stream xœU_HSqÅï»×[Ìù›\7¥DTP*ÓbI,ЗHÛœ£9ÍÍ¥ÎÓévï×»¥Û(3q‚õ HÑÀ‚ž4z‚‚(*ЇÈ¤‚¾wþ®Ñµ èí8|Î94¥ÕP4Mg×5Õ·T?EÀgJxæjš]è´³™º<š¦\,È£šÖ–Užñ;ú}Ýëò8ÝŽž¶^‡Çíèðv9ÿè^—³óÀxûººÚ|®nOÿ3v—·ÇÝ6@Q£ËËon¡è0¡Z¤bÕ9”–*§Vh -hr刷”¯)ùé"¥kYXª¼7ÀŸZ‚Å;fùEö<¤ü}p}Ь—wÔá)žý¨&­o²ä›|¦Ü ‰‰à4pKl4>ˆ ’µ8ï_ÜhB ¡Ðv0r3àÖa}4 Q¸dFG˜7—×Kq^&F©R $¸FRXA†îÙ´ƒ˜ ÄCÜíŸÕöÊý]`ÚŠÏH+ö Ïw<ô¦B3Œ‡`8–Ëjçºí9Ñ Eli@B 4Y VÒ(B"\0É[Äæ/~¢å:aÑVVqú½ô¯¡½¢4-×(+‚JãDP lKÀ‚9³Én¡Äô²½'­çª=©/)N9Áâ®|j6!E!f‚˜8=™ oå F¹˜Ep0´IÎsËlŽ0û›l(º-zžYæ÷"Û¼öÛš×~Wµsðµ ·)9K²»üSÇ®›Jßeåyg6®Òo˜@‚h(©tdòòc áÓpBXŸØ|׺xyiµVí!9¸Êð¤õ(F&ÅôØ|w¿Ó¨ÜV~Ga Ä¿‡ôæÃÚnÝ!Šú ßE›endstream endobj 128 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 176 >> stream xœcd`ab`ddduö 21$ºK¼ý©ÇÚÍÃÜÍÃ2é»±Ð>ÁÝü;@€Ñ€A‰‘‘%ýGßO›Ò5?™Ö0ÞzÿýÚ{æo¿_½Üý}Ùgvÿ^æìÔý{á÷™ßgv_xE(xR4­Û|Fчڃ]—ºïv_í¾0ûÈ’û7æl2¤ÎwÑmÑÐíÞmUã_¨e]“ÜÍÁ'ÇÅb>Ÿ‡“—°Iendstream endobj 129 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 5338 >> stream xœXytužï­ü…ž^;âV)ÞŽ:*££2rá„„ÜI§;éûª¾ê[]]U}étçNsäâ’Cnä £èÈ*£Ž;ã›™]ç[Áâ­ûkÐÙy»ïmêå¼ä¥¿õý}Î_âæ›·.Ÿ»bþÓO=õTþ‡i oüÖ|µü˜T“nïQÿxªôÈ”+wºS‘ÿ¢^m,múeóœVͼ6í|]{yǦEoTVU×,Û²¼¾áI…bºb‰âEE‰âÅRŃŠåŠŠG+«)V+J³k¿T<¡˜£xRñšb®âuÅ|Å ÅųŠ7‹w(îÅ#)Š.ÈÞ^hºùž[î½å<±Ž8_tin}áÖ‹?j¹íõI·MúõíîÉ¿˜à™ WN%-–>ÎÊß‚_ó•žx<[0±þT¡Ô#}§²Ù,‡WÀðœeãñyÀœ‚;4l•î‡wÉz¿9‹ ÖVë¬[//TÓ-ÖZÐ KÈ’z²yTjé¼xêw—Ùâ±#¸¹yný̶ù”£ÅÖ Í¨lGãØûßI’lÀÏüE"pêÝ[ŒÒZݲl o<áB¤¸h×™ž“©3Åb7ß ½è܆á+4®i&ÿvDW©ÜTefb¶tVÕ?«oæÐl¿“w°NĦÌgr»¼^'ÐÈ÷?¼ƒƒaR¹q†ò»KÊ ÃqÀM‹ˆbŒbÂNÖ È’?¡pígM4_jüÀÕ©öq V ‰cÓÈ‚àœ¬t^ Qøá‹°9]Ö¶ýIØL¶±Å¨ñ µÙh0Ùô­§5ïêÎøwDè=Æ9ž ˆ ¢ ›wšŒ>0‘³ˆZ¨õײ9Ý&凙  0±xïÖç:×v®I¯M¯VûÝ'¸·Èë´9Ü´ü°ü²zÃêõ+çØ-¾VÚ€æÜA&6Ä¢!‹úˆ­€/ˆ˜ DR¯£¬†(¤Ó±ÄîêÝv½½w?šü]Á^ûÒM¤è…Bé/‹Uò?›Y‰^Þùì_É!ÝýFz$úxý§’ÊÅ*o]m¯nŸUñ“ŸÑíGR‘"ÿ8(&ÏtŸ9¸'ÓÙŸÄGºWx z Ÿè»å ]îê¹é±Ï ¯V\-Pµ˜Û_ÁÃËæÎ}öÙÅò OAòïËÓ¥ŸKj©ðÏ:@F·±¼¿_1#º8´uNÃæÇ}L¾Ðô…¿ûFzè=i‰¤þ‚ï;˜9蛑Ç_2‚Ág¤·ÆK´}AR B~6ì‘êÔ\4óGWð‰NCeIK ycòŠ!»NZ˜_ÊÔ‰ÅçîRî•ÖîW±D¸f´m éáËRÙŸÎÕ}6£º¦]ÓB9œ´ÝA»Ç««àUÐ?è¨d¼˜SÌ)O0ͦcO]Ô)ê ¦MŽ*êiù[¯Ékp™ŠiƒÞg`“0øh¸8—À ‘…¬? }Ð}¾<бì\W1׃žòÐÑô‹9iŠ:äS\I©SåÝâÜâ¨5—è—–¯7ê5-€ÖkOç(6ûÃÃÒýêàöpwn4W§’½©^@»ck7Ó@3tþŒþr³îjA®àê¼O %ëÕ™*L0ü[d¼2Kdz£Óã`\”<íÚ¨½¢*¡ØIXéëPæ¡,}BHoF¥ç%H௫¤É·¥LœL€ä÷ˆ¼ú4±N®UÙägæÉAy“Öè32FÀ‹ÿ¨” Y'‹ÿUBì Ä%儨v»s»}IŒÀvÏ힆®Rÿê<„ûxED71+Ü’‰GUZ·©´È1f‡ºúûÞ^­[UÛ²¡’tîª,‡ÙÐþ¨£Ëž;/{¢Oèb‰O\»! ^Á¥Æ„·tnüÌ•Õ>ü¾àSÔž`†€ïöŒêäÙ·><DA¢²ž¸-?Kìôtzâx¡tÓ9U_o¦¿ËëØb¨oøåÅ–c—.nûdˆ’|'t¢`‘{—f{ErCç\œãì=Û`»1T«õé ІLQkj Ùßwjißš—~±äY--¼÷’³_«\ºyM|— c¶ð–zÌ)É”›xè­&>;­âµÝUq?Á#;ñy‡¶·ó\FL;3l ðÔ1>¦Áp±¡Ü» ۮˣ›¶be SÛˆ!_‡6xŒ”£ÒUÛPW½yu{)>ÂÂù_HÜßGõHÿt󔸔gÞA@{òçÌ·}©ý©}|"’8Âeƒn÷µ˜]dµ\8o¦¬ôá°³‘¨˜ôG)iÊ„‹Kp)!^íÞÎõÚ~]^p©Ç/v,õ.ƒÀð#e†õxX÷´¼Ðü½ÔÌnÏæÂ‰y·«šÛÚ›Úã–ôP¶ëñ•C«äûä›åòŸ9:󟼿ûíqŠçÅö ‘O¤El`j¶Ù6nZÞ°°â¬͇q‰Ìø¡ô¥þÎïI…»Ä.,“ƒæh#þÌB[«‚´ë²7šP‰ôõÕÛq åVWò«òƒQùÁ¤ü kö¶e ÁN1*}:±_IÇÒá.ÄæE†7Œ‹~zífµ’¯²»Ì%Ó4ísÓhÊkÞž•<±ñiR1¡|JÀµ‡Ð ¡,á±N …øxÿó °¯ˆÃƒñ]x‡^µ°-#bÓè!D?üäõÉÍ@k,íòÑk ¦mN«ÛêÆɈÞ!µIzÎ(ýL/=ïíWÇ耔%ìv¯ÉÜ ]T€Èd#å-òµÓ:w»|˵5jk¹©r‰Y «Ãm¡yp>õǦÅsæU;Ë 8ž; 7-æý¯4Áqlì\ŠÇDL¬Wsq>áÿ}×¹N¬Y/N¨TnÜ=‚¾·%Ö« ¬¦¡¡dIÕ x–ü£æÜ7ô?ôMtœ•qù~X@êi\y°uõQÒÝ7úŠPÌiÎérùÀC6`Â5ø¬L ÈpGÉ8‘ê»þÊàô:|Î ùYµ[‡EE‡ŒKþ[ÝîS;+­:MÖ5£±I‡u­N³í$ÅbU wýf§4å7ÜuI+©£¾Çg·Ô”•^êf°ßç%÷È]ÊËÒ×ù^wù‘|¶ºÍ~Dºéƒ/ÆÏŽ“Ç€C¸ :.í!7¬YVñ ¥í' Ÿé  pÔï¥CÒ­”òGÖæJIåe›ñL“ï—KTÊ?~:þååiã= õ÷Ë?aæ}?…¼1›oQ÷å«%ö‡/¨ ݳׯֵÖë¶ä+46³"-ÄÒÐ…Ò¦˜Žlbt­˜|+Ïû}a&a@1â´p:·ýHf»¸34úû ¤ö¹„˜¤U4ƒ¬o‡n¤¹k3l†ÊöFݬeë‚§Ñ«c¯üËΑžÁAò=©[å³x¬^K­\Œ…­e˦&‹]ï4ò›Ì‡Ç#cáQ*~2}zïîd"›èä'vúzW@î)¸«ü#z&;U(0÷¹´æÓG¤µ?ÌÇ „Dÿ¿è«_ó«h­£Õ¥½ïÚÏÕöJ{U¾(‚¼È"šºB=}†<ýþkóYLyEZI1ßQû SéPŒ#'˜óJ÷Ãe2²w´Ù›m”~­¾L¿ÖZk¨…T‘©8JŠÄ9aÛ'‰ƒ×o¸7n¸èëÀÏHõ…ûB=TçÁô΃‘\j+lG;ÛÆWIµª6oG;Îú¸)ÝÛ“í%•çÓæD©¼âÃP›vãÆN7tõééáý8#v¯þÔ€eGºçkiºtÛqí‘¥}”E0qæÀ´z]¼*'p üìã+W>ÜUò’Œ“ô607ÜboK X“A.²OZŒqz=où‹WÀmiX§ë Û-L®Ç­îÎéòrQiWéá*áLz“îÓzõ C® W'_|dÆ›k“ÃMd{½·ÔîPº‘öÓ8†0Ÿcµ\¥Æ½cá´H1ÞßYp=¿º²½à÷' ¥ñ« UK]³ÐŒœ¸b’1"=ÀôöVw;õ‚ü…eµv1”³å‰½|ftTȨQ!‘|AiކŽëÉ^­Ÿ ’ÅïÞÚÙEI·M´ø\å‚Å ¸ÄçÍóéРIéCø—¯ä!VÀ‚ú–2WÚ‡#Ÿ)ÕÖÂk {ÎVÊx¼ôõËO(à?ßýü-ŒyŽ ø—ZüÛå@û\9÷ýå2Æí‰A¾·GÄ4níùõ¡ßþŠG‚ÕÍå–Jû&ªL^uãïŠYcÌ‘ †xÿ Ø³W𫿻¸l0Ý}ü襋ùb¾Í¬&d/²/èX¢{ÃÞhn€zä, TæÆá,Œ_H½ãçø5QÐÍ9ul›GþŠ–ÅeyA³°îŬLBg×Ñ®#‰cb¯Ð}èìÆÑ’¥s6¯Ö7ØÕýõ:K¿øFUçimÄ!P“5f¶ç†¶‘|‘2ÓíÕ'´Ó”‡½×±Iþ¨02sÒ­ Å:z˜endstream endobj 130 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 137 >> stream xœcd`ab`dddwö 641%º»*üôbíæaîæa™ôGè€à^þ] ÀÁÀ`ÉÀÄÈÈb÷£ƒï§^÷‚ŸŠógþbþÁúƒIô{ë÷;¬Úl¿~Ïüö}&«2Û÷É¿ïü^ø‡‰õ5Û÷œïǾý>Æú™OŽ‹Å|>'†}-tendstream endobj 131 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 751 >> stream xœ}‘[HSÇÏisœÂì‚vNôdhD…š¥…â-5uÎMeºãnîÌóírÜvæ™Çé¦9Å Ó´¼äR#zˆP’¢ê%Ê—è!ΙLJfÑSÐ÷ô=|ßÇïÿûPD~AQT‘•“s#ã KÓÞýØ•H”A¢Ü›:ùòÄÚ±ÅãÈAɵ¹5õrIGn"¹HB|‘#4]=ôZ´'‰Y¦QñhTÈD¿íÈZ$”?„$è‰óŠi!ÍÁ8p«‚†@«¦CßdÅ­îY‰”‰S´‘ 3ôBØUäIÆ.¹HUÞJõ† {%œá8ìt·Þ‚7fæÖbࢬ;äd‰¤½TˆŠBíˆ[Jv†ŸüàĘ>G¨Çæ5µPEÕ@3Üv7ÃJâY[èHŽöKthÀBÛìF Ý¿ž"yÄ~Kw|T%þ‹ …i*DH§ö'Ì•úúËv•Õ@·½”‡˜„i÷ Ã&5|p˜e>Ðé0ÙN¸qóB²èKöw½ínšàb‚X’˜WEŒ ʯ¨ ßß– ïb J¾3ܨnhjÐs-‘±Èh—J÷%EÚ:AÍV>ÿ>/à}& t—‘µ—JÊÖjãÂCž_˜`#þˆÄ7ýâîu±®^`±¥Š™‚´b)UOÀp0~>òy>: ﳨµ]šœ¸Àîß8h¬vÛùV&^û¨´µškÀ†é‚&>Ès>g|Þ &Ä ø{õ„{ÂÌÿ)8Ç'–W6Þ¶î*n¾U*ÉÚËc#eŽóÞ›¯]ý‡·´¼"þ9*b¸àÑ;>÷Ö‡'Ucz®!P  ¯®Ìòé*_!¿°¾Âú&/\¥ }Hj1]•áNëOWă÷½X~ ؈G§n3WYÕ„Um*·éê¤äŠìÒ€ýÿæœÞ±¹ÑÙ¥µÀ6…m;iÈ'’ð#òŒÁÄÃò À©Àendstream endobj 132 0 obj << /Filter /FlateDecode /Length 3827 >> stream xœÝZKãÆ¾ >$¾Ú t xhö»;ÞÄq6/Àö àÉ#qF\K☤v¼þùÙ©G7Îzì%ÁvHvUW×ó«j}¿.r±.ð_ü{\ëûÕ÷+Ao×ñ¿íqýâzõé×­C¬´ëë»SˆµP*wÖ¯­q¹Tf}}\}›½;I_Øìvs•ĪÚqus—6Y¹»âcª ¤ýçõŸV°q0F¬¯ÿ²ºþõ·Ùë1¨V…°Y_ÞW]Râi E•?ºì¡lûz{>”-èL ÛH’\zKª@µÐb`´«úª=Ö§ºšñõMv_¿&Så³ê”ˆ ìË Šùé×jjp©tn¥£_ïÀÄÿÀC¹¢ðVñâ™w„ÜÀÙ /&_¿‚5RM=Ô\X•¾A† L%øÙ\š´ðf“Ž¬Ç¢Kð®ãù¯O÷$ÿ•´!—Þ¬¯…#9ÚF´“G«˜­;o®Ð%8È1½¶àW§D {Ë ”.Û¡°!dÍYHr•áådiMÌÐ 5Ú}ö€fV¹fœr"r:{d×w`§×ô§öð'_šd„s´Ub,³²ìX:> ÕLÞ§õ.; <ïÚ¤0Ó^[•]sêHÙèÈ{Œ°£WÁ0ÃŒÎ_HeÝ„BŠc¥Ãr ¦ŽcÉ+sUyádvjúø ì…A”’D¸«ºº-oUä<8|W +lö¢éûæœüÜLýÜØÜùälîeØ^%XjÁ7¥Ì…Ö!Q|’6Ñ™,„¿Ùü&é)8'Èå8'¼çÆ8ùGÉE$[¸ÿ£, (]>ÂŽaˆÆÂïÙ®þü"f\PK¿€û4·]ÕÆÌ#À}–ŒŸ gbbÀä=凸ç±aïÂ…*kÚ‘ç¡êˆLƒgìΧ]Lg<²>ŽÞù’\HSø>¢ÇTñYdç®ÚŒ2¤ YR"÷œ•bÞr å=%¾IKCL‘–RlbT€·ŸFw‡ X%XŒðôÌe‹‰“È:$¦l©t—¸ªqûî|Ûõ¨‘èý}]6 Õ ú¨iÿ†JrJ;Ôê˜ý¢˜K –RB¾èuÉ›þC¯ûÃÆƒ$À刎¸G5°aîÛrWWS%éÄÇâ«ÂBqâלÔCA•Ô¿E!sˆ1Õñ×)·S“–Ù¬CÓ“\ô2æœr²“G’º«ò!ƒý}_cÎÎpݱkaÒuÁ¥¹9㾎³/åtúÛÇŠâ49˜¢§p$~ „ªˆŽÓåRúŽüÐ×ÇúG²–7o¨Þ ì7 I*æð¥ÀG\šÎ¹$q C(*D€[bF€ì“Ò†Ä^ïâbæÐŒÑN5Rã’FàäØÀ³L̵5‰ æªÄÕf¿(û‘ ÄꑳÓ&˜iGÈð†j½Î^UÛ¾f‘ò_ÊwçÓ•8¦úªl©(i®ÀQÑZ©”@šœrÙ{ !†ÁARÖÄrç³}빂ݫ.~†rܤlrÆà¢’Ÿ0Õ1øx$hȽz‰u\üž#kË2%>A†…à¢Tƒ/~ÇŠ:š¾jï9Æ’x˜*KÊ6ÌÓ³÷Ǥ´ø@ {!ÍáöDþªß7œ-QÚ¢ Cß@š‡oç{Z-èˆ' !LU¹">†xßu‰…¿Ä(†–‹·ePA…«ê±`á ê¯ÁpûøÄJ•Ùmu ò!áú›M¾ùÕûò ß5u'jÒbhŠí÷ÆÏ*IrÉ^Vc\ù4S_š!é=vi»ì±îy0óºòø@ Kœ†ü“x™ìöÜ/Ek¿/‡b§øL*Æ@͵NCÜŸê¡Ì€„7.Èaã]\ÃJ©˜?'Àqv¸÷é/q¯É“¨A…ãWLJº­±E}C/òÂÚ컉Ë`ñJáòxJ ’~’t|÷ÕSCÒR9+!‰àR$ÌÃù½&ótû²}XŠã!ᆴ FMòÏU÷݈¾Ú%< §‚#ε³oÓÐ8ÏÀ´aô`ÚÞlÒÖ&©†¾’ÉùOÍl)2[]û".¡–:0 ËH×Ox@ÝÅhÈ|@»c•RO)Š[ëcO þBbbÏŒWkêÅ¿92bU/ORáÛ›žCUîØiY¢XªÊ±»™ö< 0R“3AƒØC72A¸U{×´Ç’>\Õήneôd¤¶“ì¬tô-À¨OÈŽT¼¹¶áBìpQxë¸Îƒ@JY:2ñ†.€1Q¡Ï‘?¼5KñÉyÇ@¶(—è#è(ëséУÊhR´´c‚ÒéaÒR¦N#¹EÒ­¢²VvÑ™çp ½ä•ÎÂ3ã{ŒzÁD ³-:å‘Âä.X¹VÚE÷HbB iÄdkhäzFr“QuÏ ‚©Ü;-eвI$ÈÀÊ-Ê„ö˜s¨µÎ0MñN2ÍH0z¥Ã©OÈ>£ñÒ'5̆‹.f5µ¸VB•¤ é|® %ä…tÆé”°&&™0aor¡¼Ì¥»C Å<,œt0Ο~RµaŸWí[aä°ø·O”¢æ:•ÎÅÅÙ\ˆÔT67Ö—º¨‘«˜­t¡r%¼™‘€ ÂÇyÿd,7Û0±â§6œ7´þ©gÌTªÄ‚·zt*¡™äƒ™S€"*U­Þæ1 €,ÜúÊBlçŸq˜YèÜMRýgq˜9W½¨úâvJ­±Ò¢ˆ#;¯Æ&^‹…Ê( nëˆMá-Ir“IPH‰[S¥SżʀejsrgÇ’LöÒðŠ[ØÜ@ ÖÓâ'9¥Ó-÷‘:”¦Ã) N«i2½as¬ã!y*)3(ŽN!LáI61(¨&°G|í(«ÒøT;ÅBT¯ZªvP€4aÏ"Þ<öÌZ‰ç†CšT§¤‰èÜœÍ@l 5_<®}¶Ý/ÂH•C•N„4|ä{”/" ò< G M9F%" £%>™Ið80Þ*Ñ{á ãmÖÕhuÁCsȲi~É%ÁFRˆ ƒZŒˆ„òç"ºÚ8Õ5“Ѹ˜Š3œèÍD¬¡²€oŽ5ô#À™‚ÍPå =†aw„™,ºÜZÎ.5Ò{FšË`ëóŽ'w8ñ$0‰×T„ºÈ—èÒ yn·ÜŒ ¢ëª.ÞýÐL‹9@ð%è–ž—¡ß„QΉ+!ÆêcE—K.Þ§E†çª6Þ©AšÌîZ ÔAFIŽ—P³®®Mºtnš’OËž#ªà9~ÆkÎîÌ·ÂQG·†¯Œæ·ÖFÐ[¥xE-‘4wéÚ©þ‘âÒHUüœzØ•غ‡Œ¼óápžê’ôn»¥$•&º ñÜÛÇyAwWeœV(´ArSO†«_ÏT¸;Ó¤Ey¾š„¿,’ÉkÛ7m¿À åpÉü&rvâÉU‘%ëÕ§ê—[>皸é Lñ-KIx»4Ñ8–=4úV'…™–2cá(jy¼ÌnÚ‡âK¾n¼/)ÒŠ¤ôºÁª=vü‰Ò×]\V,ÎBè‹á~ˆíì |Íûà^hv…QíHz™ºe¾ì(X ‡¦Kg€Ð¸W~o»ànϧS4·"¯Ʈ䪓YµŠCÅ&=HÎt±y®e¼…âa‘Í«›‡ap;/&‹øWbÀaŽ«o¹ÄXH Ë•Eûœ o,- ]­6¬ÝpÒІNPÒ—ì¶e}Á> 5pé‡kø#Cëälz"Ç {xà; ®«±£Ãºª5Z…~BÂkLÖáÝ SS]¦?‹åæ¾?ópª÷nmÜ•¹°åŸßà…Õ)í7ðòš_ç]A§J£¤«† )< ‚¸Ã2Dø65|d…J?ÁQÊ~ì¬ãSÄúš'MiB1üüY8×> stream xœcd`ab`ddä v ò5400q$º»øÿbíæaîæa™ô]Hèà~þ= ÀØÁÀPÂÀÄÈÈîôŸÑ×ï?ãç 7Ê~H–/(>ð½îG hXKdiVB~FM|w<‡ÊCƒï Ÿž=þ*'¼à­ýÛßÜrÂÚÚ»Ú¤ù丘§Ùóp20Á+®endstream endobj 134 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 437 >> stream xœcd`ab`dddsö Ž4±$ºí.ùÊÚÍÃÜÍÃÒý#Jè¼à þà 9ŽÔœÔÜÔ¼f'#e†eŒí`#X^1 0–ýèàûÙZ~âÇûŒ?¾¿`þ~ì§hwoïÔMÝíuu­•r¹i•ÝåÍSºûgLŸ8w½\Ùo§¬ßjM‰•v•–‘õ¥ÝÝ 龩k&¯\!×Û7{ÑòÓ‹LÛ>yåÖïÆ¿÷}·éæ8´?78:¯<­B>¾Øª ·1«¡©£²®¤²»©»“£µ¿cR_Ow¿\O÷â Kº9>½ WÍnô Ì‘O)óiŒëN陳¹qJWOK7GaXfEÓšâUµò;*6t/èæøîô=ñów£÷fLgÊ_^ó]üL÷kŽC1», ~KÿДãû%ð½lãw†ŸÌ?k¾—‰Î^ܽxIIw•üŸlÕÅÝÅE‹ºçÈóýœj¿çûD*ÝËü“Ee2Û¬ïªßy¿3|7ZiÏ—ùíÌöÛï·Îoµß¿}¾ëýVþî#ÿÝIÞží·A÷o Îšïª| 4.Î1endstream endobj 135 0 obj << /Filter /FlateDecode /Length 3715 >> stream xœ­ZK“ÛÆ®ÊqÿB|Øœ|×½[Ýýü‰LÆÞÏã~§lUÑlVº„ÝŒïVþášÇvu½±½õ…¯T… Â) ììn×JNºO÷¯³Ñ¤ YÇí»ÃißÚ~¥(BY1«µÒ0Þ1­T 2ÔN<á¯RÖVñ³Ã·bÛýºpj£„á4³”•8ž¦îÐý»ƯW "Kë êHºúñÍëçd-“ªŽì`JÚa$É£0Fà Ap/Þ‚µ6ûóvM›ÃUhåoAS…·V†£÷«µ)MQ–FŽXLÂïZ:ѧƒOçÃÛÕ+ºõ¾M¿]:¿*³ó¼Þ6‡…ì•Öêâ@¦Ô$ó´kñÁ‚ü. °m@•ïéQ{‘†8ñ×#™ ‡üh6Z d<´ÓÍ“ù€ÞU ’±mã)ÞÐôýô#jKêºp$¬­JYÛýþHÛ9£ÁX :W,cËt¸ÜAƒ5û"j,W…Rà³:ÙöšD ÌKàJ¥§bµ¶°´wVèR¾]ÅgðÀ;ÔÏ“â<²M­E³Â_ TðH#ŒÐâø€¿)ÀÄ=u§¼8N;^“”‡óÁÇÇ0Å¡ŒÓþcªÁ|I%ÖŠ§lä´k¦0, Û’b-|,mtCSóÉÉîÚ`Üqˆ[¿[Y‹ê²ˆ_ŽqÿB,â'ŽLò”ãðްÄJ@±;cûj1øtUhWÍÎúý ®ª|Q–óïÑ^N‹?µ}á3¶Q°F<Ô¤š»•Óè¥*¹vzÅ‹ ½ÀÎ’bK[M+ÜŸ§àU…v¼ŠWPTñ¢ÐM^ÿý[|0¤·]3†/ #Å2Œ5” Ÿ‰P>oÕAê*…(¬=À++ÉZr™ Á¼y€ ßæ=FÀ3´qh±Í+ÔÀFŸ¢œ ó39ÄäÇ0ºr—êoÐÛÆ$Aàg8¢zÛ𦡙X£ëàE¹ä?žÏ° ÛH´Fb‘ 1X ^ð\­Üg«ST)|ûyáÓÐHlÚȤ­»eѨ¢\;S8’äs_âºXá‚çÞí°€4Ê9S“BkÓRT“Öž\‹†Øahªä‹eÑü›òμìRÊNQ©ÐÕA‹ÿì÷P—’u+Š)S!—÷xÞ%g³…uŸs6ÛI•j ò/^V”®fh÷`äô5+S‘‡”мX -•ÛT¡ûÐ4Ò§´Æ¶@{ˆ¢´‹}Ûrܬ½„ó×8ÄÕùn¢À-rªtC£ê”ç—Ó>ú œŠk@JŽˆTïs`ﶤòº µ9Û'€1-‚âÚaלbª¦”½Ê¡OACÖìzþù„³ ߌíHµ…-¹fÂÚ‚Dǃ{’XÓ±Âùa8÷q eèKr•ðÓF¥"¯Ë”¦›PµµCÄ·q²yV+œë“w|ws÷ÛèXI“Û¤b¦Íò†¦Ô•(5‘W¡Ã^Ÿ¨>–oXa\kGZŠ7q7¤be"hšêPøÕìÏÙûfŠ¿ÁW±nEpÔRìâ:€Á§ë. W¸²6q$.oá(Šè - \dl§\(¤v¨,1ž»©¹ß/P×ʠ󮟾kß·K2‡Z#‚a(»™*êÃq#ëØ“+)‹$'¤/þ®COŠDÈñt"™•æn´ŽçÇÝR·DÖÈøäÜ´´1e`+K] ¬8°UÃ\¥cJIûÂA™W™— 'ÜvxìžxnÒ}û°„'UY/zNL¡¼¼¤™52eW³Ã†¨%Ÿ_kOŸ[a&Á@˜5*õ±M«Yαa`³ÝÎÁä=›!‘A*U¸ÿDQÔ7Ô Y†lÆy2ne®ó¨3톒'“Ÿêi@ø},i€o6퉫¤FØ”úâY.ŽÆzá{HQCË5Žâ†Ù쯡…û5(]û™¶°â‹aŒ±‹ãǬxXÅRòL%ævéSÕ®˜DÓ[;›áiîsƒ$5›ˆd…pì0’qpq^Í¥úš»MO>Œ/̓l›ÅP\,+”«ŠÚƶd×oÁUž‰¢™$Ç…Á·ºq5ÖFTåøòÚ_¸3]”›i†lÛe@Ÿ±pÙiÛœnýŮߡë»ûfâ<ˆ·{©}MýÜrn$hÕoæ‚ô9Œ.6ê“ä#€¸!hŒ×J´D²hŽÄîvVðÓK+ó}LÎgââÝ4¶ûêÐr¦ë&šÌºçSÜ¥µ§Š,(‡°BÑœEÒB•Ú‚Gàݶ SƒoÁJ3R±i¦ðL–³rlÔ8Ç×}Z;Þ§¢ð2ñž :rE›°®ão<oÈíŠó”d‹e}ÕÏö ‰§)—yÞû¹¿O¼Ja²‚‡òðï­ña¤,¦ß}êoó7ÄuüFb2H_€Æ2_¡}¾ºYê2†ÕøðM`†=K|³Š>ÏÈ:Å}“lr3’Öxîf?¢ßHÏmB‚SYÚ’tZ: blãO;¢Sô ÓýHX¢Øzi8õ·¡„o€7‘,ªäľ‘£Ò²r6%¿ˆ tÉuÂ5Ùï) ñwL”<667÷ݶ¹0.<6ˆ¿–üdãxPU jo›mü¦c=¤°TpFtý/ÕGÁÑøcõ­Z¤˜@ü]ê> © µNJl†Zô–ëCÅ ¨)!DÉM"ÍÃ(Hê—i‡Þ¢6ã!Ü%8<¬dî?û0 oMNI¡kéÐ ×7gÝC¸ éÛˆàyŽ-J°Ï4F¸÷·9íá„wáúæc€úZÍPO5m`äév±]'ß¿ŸkªùÎqœo’™Épg.˜ÛÓ:Ðh×,÷uR7‡ëB(ˆC?çMÖÎÁVðü„ ¥GY•r²z8“Æ-À¡ü¿tqÞD°@ÕJ}ýpϤðÄA‹Šq(ûª>9Þå~¼¦KKœb(ÿPfVúr¾ÔRlíOnkÑw±A 2½ÞcyžŠ¯K²œ][»ôÇW-9›µä¨ôFÂÂ=ˆ+œ¿¾™1F•D,ˆÞhi=~EžÇûœ™a ÷‹¾K˃R9¾JŠ ·ÛyÙ·°Ùˆž«X70¶Åº»1QzÈOçéxÝO™›ó1/p–Å$݇5ˆž=Ì"\ååË6šîtN‹‚JÓ¼|®¿Âô Jæ  V«)‚¿’ôÛ‚ù¬¥n쿜ø¶š²—Z7$V`xFT-”mÍö}V÷t#60¨䜔4޽„U*ÕLõLE—qò!<TC°xšKD¾ðDvÝãn½í A­Í>ŒâÚ¤;ŒÅRàÄkƒÏÎ3× ý¨!Ÿ¥6í-3Û‹i&Jíð œrŸÕ†Mj}LG?žñ2ÇH_tE‹ŒP«¬A@[Ø¥PCIä\äyþÓš+]ãtÚO_ý äŽ@ò,cÑ"Y*×D]TòC„_áYjØÞUA»þ²Q«çÛØ¿àX9k—u!çe!ü†îC8P-Ãyè¤ÚÂ}»6š`Ÿ$Õ(éînþÿþù„|Ìendstream endobj 136 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 9031 >> stream xœÅzxTÕºöĘ5DP†‘ ½±P,*EBïH(i¤N2½÷™5½÷’LB(¡ ‘¢ÂÄFÄ‚ çÛUÏYÃÝœ{ÿµ'ôž{ïÿçùŸç2™„<Ù{¯µ¾õ½ï÷¾ßš<Ö­·°òòò,µtÙ„ñãÇ3¿ŒÐâì¿]WåÃA·ºG>rßPÔq'6äè,æßœiµ«¦×Õ7ÌlœÅ©©yŽ@øŠhÃ<ñÆù’²›n^T^±¤ré²êå[VÔL|ò©gî™tï³÷Oyîù|¨äá5¬}ô±õãÆK'È—?ÁbÝÃZȚĺ—µˆµ˜µ„5†µ”5–µŒõk9kë!ÖJÖ*ÖtÖˬ¬GY«Y/²c•°f²Æ±f±Æ³^bM`ÍfÍa=Á*fMd=ÉšÇzŠ5Ÿõ4k‹Ëº‹5œUÈÊg`ÝÊ*bÖ(É¢XXY·±¦°±žcÝÎzž5˜5„5•uëNÖÖPÖZ‡µŽ5ŒUŒ#Âb³2y‚[d·\Ë_•ÿë­Ê‚g@ûö¢zgÀ¦¿Œß6{Ð3ƒ.Ü>ûö\9dÒ×器sèÖ¡=È™0lÚ°_¸ïªÎžàñ 'êFŒ*Y´kä´‘?Ž‚$›ì Žx÷ »…wÿéž÷ì¿÷ž{½oý}Ÿßÿâý†û3~ÌÚ1Ö1_Ž-{ùõì{ðù?|Hüï· ú‚58÷ÝšÙ @Ïf²w ‡¢ßN•œÎ9ˆžëåîúÎå Ú ÐýÀ}oA#HÔaX¢þ 8"—Ûâ.j ã1e°™âìÓé,ú"Ã>¸ß´àÔýdøIû“¹Ë´ÍÒeI˜[ª!Ñ Ê¡F¤á—ÐÖÑ×ÐEk%’ƒÊ¥ÐV$Ô@ÕJ“„hˆë£dÿ0®¢d4¤8“<Œ&qÿŽºü; è2vðî‚ë @dò4[ȵ:­Nè4Ç^$ÔZµHÕMIc”ÚVÑ™‚¥@(WŠDAU …¦‚x0‹¨BBª8º=Ý®nï^èâ›ç.CÂ:Š*¡Q`RÍt‘‘¯ç›ù…+H®‹ÊV = Ro*&ˆ©5À–t&íÉÈsnuuÂNÂÅ6¿[²s\ ׉6Ô7Ã=”± ‡r’hEö×!öˆÝ’تÄÊØ*›Á®‡ÂÄ6ët:£žC×ñôj½\‰& ”ª)c„úpJ.›x„‰M2.ó‰H-@Cв÷éer *E§TR$INÒí¶ºŠþÒ@<®ô7Q|`ö˜ðK¶'{Uº_úªø žÉiò@ac[Ýn—Ýõ zŒIù¶Æ áNˆÇ‚D"L¦›ìrêaÀqêõV}‘H¢àá…uŒtƒGéûV¢û B  Ä)Ž“É ú(;Ks÷Óƒ!=Œ˜xôtˆøÝ—¸üòOôòz%W7iÑè ñBåG½:ýã÷” ¼«Ý».‚F‹ûw˜nÈ qt.“—]s6ɲ£¸ÐnµA;UÉI IªðãúÎÇ'®µÿ×ù¸•m/ß)9 ш¿¡áˆóíâ+4kõ+â†Mj¢æjŸýЃ8Ñë{_§œl[‹«Åž²aÄh9râÕ· qzç¼Å õ§vîl~ö®×¹•ô¦‚…@ W E!füb„£1¥_H­¶ˆ=j|‘µñ¬.WD‹À!«67UȪÝeñHÐ#éúNzøc½¡[¼–êÚKí@¥\C™©¼¹²fÍê ‹!1µòƒþô§ŸÞÛ¶h™ š,&êw¼³7ƒÖg†rºÑÂþí_D …˜âÔ‹ŠV’ÓKÞìhÐæ„[Iÿ{<«Ûê†n")óŠk Š*=išÍ‚ŽnÔ̤€EcRC Ñ„i¤ËšŒÙÉÀ‡¶€#…–¸Ä+† P+3V™µf3æzóúd&®6çnë´'“Ò{Ìê³û¡¯0.ó Èk£€Ô¬–AÑÓÇÉßd–õ2`Þ…þÁµúa$Z1¢Iúv ¬™cŠK9æyðå9dJ2™NÖ"´Ã9±Dж&]í1i3ªS§Å¨™ì®g‡³Ó±Íß±ý“ ½‚Dm\–L'’iÒÎ><ÇÝP\\½nÝÙ *æ+-ïæ TÊ%Lq =ZC8æ*!µìDUh*?a ï‚ímÒÙéî´wbˆËýÍÆ*>Iè»þ7JJÜ8@÷ÜPTŸ ¯ãlš… ‡d†¢;3HÑ;œEcwpwÔÔ€Ä_Ѐ½¿¤4 eŒ*ïYàYá©rñÊ]K=pñ6*poÛvÄ´Þh1A#ÉÙ®v¶¦½þV'é9jë8¡ô‹E&1T’& µK½»Ä&±J 1æ è[Æ¢ñ†7UÔvýa¬$fݯX»zCâ°’äliÓY“•EÕÐÜl)¦ð,£ª IDnñ$c¾þÙ«{Ñ„ :Èõgg†s®d‡usE.I{KÀµÃA&Ñ[ض… à ö¥˜EÑy@uV®yr¹¨‰Aùn ™¹jâTH<]XQþ!4ò—TÌŸt'a&¹J#ê-z¨ÏÕ¾Öö¤L!^_5+ä\ˆJý²fÙ©†ä\é¬Ù)-¢gŽ¡Uôƒtþëô(4š:`ßÛÞFÜŒù ¨4ƒ†àS*³€«˜¡š®œaVš”%¡bO;¾ùÌ'ß¿qç).qJázÙ$n$8Ý5âJIEQMµ¿;âŒÙÂTàÃЇ¾szÄRŽö¸Â/ èg3eoq´X=vô­8" Z)ßD*§›´³>šqž‹CÊÔ º]–A™þ¢7OH9G=[5ÛØ¨«‡ Ĥó²c‡v†»IqD#9‹r¸8Q\[¸¶–ôs<Ïæµû ˆËBŒ =S]æ‰@ß( ÊãÔ! Z¬]¬^¬/3VÕÖÖ6”+6ABR»Ý oP=¨½?¨I±[L>hŽŠ¯#(+Çð9Ûš|…J(÷È£f I  „Ô/Ðj-PG=>ÍÊ ÐЊ+kH’Ø(ú$âê…!½ÐEÙ¹u;ˆ×M?IŸ[ŠÎì-a_2¡ð5Rc.’Z«®¨I¦ÄåôhSB& M ›&41úDø ×jÓÆ7áq<ߵÏ÷^öDxN7tø á.ˆå®ÏN (|’sˆ®h,àËÔÍ‚¨öúúb‚ì¼¾a' ÊËGÃð„àhÇh8š°·ÄŒñö˜uw” vÄ÷¶ðì+´Já:çjOi¡³:¨k¯C×ÞöKíÓ;.8¼ƒ›§…p² IÃ*EÓ, *’ÔQ0†>ê[m[ËàF¨­ç¯”–7oV—[ÐÞIÇs+CŠ DJ™TÖÄoVè 'óÎãò,Íä¦l G Ü_U'ÖZ V4@µYmQô`z}]4íôÚ‹Ç[P±šË ¬Ì|‰&$³S5@nUØ6,ÐRŒ@ijǜqƒûùû*’›ÚJë!±ìQãó”Ÿ'!±-Ü‘¦Ðôx®ºÌ±‚_·¥b¡n#$ê–†¾ùYúˆŸÚåÞíè†×]ï+LèKîy½X¡>EîcB†š£º…†2$‘l8ÄT@ÕVUD––¶ÊÒš.¬ VvÀë øü;vd>m…ÄvÅAÃ¥o(££´Ì†Þ‡¥ZÐÌl¨Œ»ð'WN›&"¾4)ÁBSªÇ\Rt7‰tüæ¨&áöX¡‹r/tšš €mˆàW¸‰g39°lš&‘JYU>óÉfHT1ßT'*Zp.y¬rW8« =«¼+=«Ü›xv‘³±¦`(†ñÜÁÛsqÿ…—œ~·ß†1¦\küoˆwÏ=˜ “˜kbJ¬®V (34­­.æñ×4­m^£¨—5hêÌn+¾N§=¦9ª9¦>Á3ºj!1ˆ¤9}|³J “x=sðF#«EªÅÒÂûŸºgÒýOÉU­QHÈØ6Gç5Ù :¢ö¨ïÑ6 W¢Eè’Vê7¿b"é@ÄhПÑÀ¿ÆÃñ l#âr·œ¤ÿ4AµA·E»†g1`ga 0ä£^Ï × ]µìx ‡žÆÊä`–Q|õô“5eÑu°¾Òyômzz¡aÃém/ߜдSðÜ›ÜÝiéF6G$±‡õá¢Ë¸ÖzZp%Q@Ÿ¨ù8»–gˡœ¹Å˜ "}cNK:è$W÷ÜœrwA¢¸úÌñoÎÿöînaY²kX|C³Å ÍÄ?áq^?«qaÊ•ÉV¼[œÒ\?!óáœM&d>Éga+=y'ý,þ*t4z¤˜n`tÄé³kxØ™DmQ¢ $£îV\G10‰\† ±Á¼ÝN30õÈizšÐ@>ºS¦T–býžKÙÚwí HŒ<‰8™¼¯Ï ÎÓùè ´Œ‹º»¯Àv;¶íûdËôšG߆_…tÁ·“Qþ©÷Ûí§Ü^vX8›R—ÖC“X!k¨Þ(Ù‰Ň¿¤PÇI.ÉSçOœ…Ä[{ËŠµLéý#«3YO&ï‹sè½sùèã«ù\…Yz”XA“Bš­˜*™_ ´lXo­ˆ7uV1aV= NÃ{.l?ðeà¼ÿƒàðt¤£ã5ënHAÜaI "R[=AFx›nl"Öoh¡0™pÚ3ffâõöJ“B!ê—H¯”?«üÔà ”aìX4éJc·Æ§èÛ€³¦½ÉØ«Cûñ}QakG´¥ýÈK¶†…sê–׊&ßÐ`ðL3֑ă Y©À V¤Ý.¦†Ý˜Ê¼ 2áú#ì¯?7cNy¡Ñ Ó5;Ÿªh^º`’÷4ðhÃÑ—Û©Êx¹u36U€¯Rˆ…!uŠ:I›¸{‘©àsðÿÂÒu×½8ƒ¦½uü$ZsÒ)šrb8ç{”ßÃ])\7.!tlßCˆ[sþ"²Ç‡Ø"èÛCÓÈg€a+¡u8u=!Ê ZD»tØ}÷ù÷QSL¡,v“Ú±pøvz“V»0ªˆA¢%žLíÙ¬©Ø¬–ÔQF³Éd„„_éÓ8ÎoØ!²*ððcÏ< r ÝÊf´árµr™^©“ÅP EN‘OJ ÷é[¹3éÕÓJ–z¶o&Õm†àÎm;º"-VkƒCß™gQ%ˆæê—,ž ‰ÒÊûqåu8|âHèªØHý®ñÆ›ð¿ÔZs`*°G“hØ 1¡ ÈìÄ8 nÖ7Èüò›Ä½J€ö0y(úÛéYh>ýÜYóÙáœ=hæˆIQ2gÜ9ð{ ‘Šú“X^ û¤?ãˆ÷‚ X˜Ž©—*LJ³‚2ÔpšLb“@8¢4¾â½#¯¿ùF›Ð.kÖh±¢©ë¥àô¨ŒáÅÙÓ;p`lѵ(âzŸW ü§LË¿?â‹™'è<’žš1²DU²£vÑU\fà·Áaøº®}¹CmSA5,žûÊ…Ô,…Rø¬Î&±¹ŒŽõã• „j© #5‚‘z$p‘Ä¡I«cV4 Ø·º¶:·îA2,†p¡rXªJHú1¬U•j“”0°±˜lñxñTHTˆ ÜF“°ÙÜH˜ØIAº=l·“N6çt› ÙHr.›ÌSÑïÉ q>@úò§›ûZÕaù , Y(ÿ2b¿³ñíE)jR'ÍQŸpö{OŸÙ÷< {¶¸f"vCÌÛnMcKœDCûÝ[Tæ“ñUu"-YÞµ&\‰‡hb}ëä#k?PçE?à“„™mz~Ú²˜7­õ#Í =TZä”T‘”ÜoQ•PY( ª¢­ö„ëF%K¡q rÕjN L`L^Ìgº¯Bašâ¡`¬¿‘’³€w1½‘&( 8Gå»Õoq`Ýå9bóÙ¼V_¡Qa%vm,¨…z©I¨šÉ³èÌØ!ôßÐæ‰´Úð ö˜#f‹ýa1ª…Ž ç\Akû“tQ®a' 2“™Z¢9˜ˆ°® ]úöüz\Ÿi×7ó“†(…îmlììT“CA *ºt¡úµ{Ì á8˜®¯Ãe·Û[ã¼ÖD:ÑODyn§ÓÓ~'F¡?‰% ¶hØÕËTAD›¢vXèôƒáσ_„>/ ^°ìL{ÍÁæ\ˆšdi犎ñ óX!—ˆCÊøÍ2gbôÖ,§Ñ$¼ÃCµ~K ]ÌÓ—k7Ár8}×Üs5Q}Ä…¿ÂK_m½âŒÙãöØ^¤á9¶º;í[‰ E)Nw\Ê8£Ó¹^Sý¥Ú&,†SÔV`¬Õ×jëèçyêù†çÖ¬áוÕo¢öÝ£”—mM8öÄ´‘çÚéÙåØõâÞ¸¯PnEÄD¡ß@’¡;5¦;zD¿†ºÝÐÏHDºÙ.#éI@Öd©‘ø°=î{dH=žÛág¿^ßËÄäYüpN&JO ÐS#ô4›È.؉$8ÝoF÷EÜãhØ1Äõ·ÞHA°.öÙD›Ø)&œî\c^(V Åa,Ô8— ;úék#«ž(ø’]‘% Ò7‹cÿ ØJÈBŠsšéü¾³9èø²fdÇr;¡”Ü Äb@ÆüÊu4ršKP¥¨Ï!ÇœJ$ÃÁ8&üÀdΉöÅ"ô/p&| ‰¸S$šD˜úùôýÆF}ƒ¹±ðwM3I‹ø?ƒ$vËx–M”üxBÊÙâH%‡çìpuÀ­ÇÙ#8¼x}ySm-©Ø]Ú+`¬^Ô>Ë;ˆ•ÉŽÂrç_Ðó\1Í*˜ÊØ>q}«1½o¿ ‚?fÆPÌŽ.÷vgáqØ=ä3±;ñ¦ÊHÓfUuå#?oüÝxWШOV~GܸA)ÛLÞ˜Ñî“H$Ì»r¥±+Fßsw\~õâW»S¾Vw+ ôť$,l¨Q)¡ÄÚ”dš+]á­í½+¶Ï¤‹éÁôRúq)eµòá’Ðôž Ûk÷+^…_Á¯ÞÞýQ¨Ý½Í¾±áwÅu °®®¯&›æruÏÌzöqÌî랣¬N›Óê‚N ~»?þâ!‘éY¹8×9îGšªÙO¢µ™¡gÏjO#õÙ͸îÿ†4è îÔÚ)eб„Š}Ï‹¿FõºýXÙ¡ÕIRãÐØõ—3‰O:â»G_’T‡Œô—àÝpiϦ·…X€¡uôÝ\Ã3—> -˜çX²ž#.þðÖÙ·Ï–Ï"·£V®vÎó‹qéÿKÉŒŽ“§.8÷Á®#Gȯ¾Ú…†@t;ükÕ¯ô`æ¬Î`°Šèa41š>þ씟NìKl?FEÑÓ\“Ô&5HE³§•ÍIJ•{N}ùÒ×ov”®õQ6µÑ4&Æ{ôC1ÅœN£ñ4H‘]Ìšq-fŽPœØ8© XG/˜*™LU·Q»ªL^¦ÞhÖã«·Š#Jœ‰«›¤'ínõ¤=[y6¯ƒižþò_]™ðíŒ~†Å÷%\^1˜åõèAãû:AñV»‰Ú lgÐp%])wÒîw10& È…:™@OªÊõ"½Ð *4* X4ûÿízè..B̨ˆ *é×’ŽCBCóÑùì n•±®VÕmü.Ò ºœmmö.ÂÉîjHW“‹é·¹ÕÆÚZX‰ÿÞ°tm޶6Ç6, »êÛªûS`àj”Q‹èNT|s)šÍdíj1WhÒ 5RšE/½›^†,{e*O#“‰ ˜E¤qÒRVOÜEƒQ~×a¦¨ó„‚!8㲈ˆä\0›,æ"Î>ºËÊ-V—O„sˆ5±%½ïìùùäk H´âš‡;W]þ4þÃêÈ’wÞíþùÄ!ÉÛóÈ:Ÿk®U­©•™-L;?QflP¶­+y¢ Vàw7Êú`D¯Èº¸æju Ÿo4á“A6“Ãäâ}f¦ËæbÛwø÷w†mVü‚DÀÕ Ë%Y??dU8¦«Ð[ܨ'â‹xQ=À‹úÚ¼0EDä‰B®Ö©Èy/–½¸ñŲ©¯(urYZhdÆžæ´ä“eŸ®ød©OP! …#1‰Wî£föÌ9ôRÄ/òKCýùŒÖ0ŸàÂZŠîÌŽãJMZ”8Ÿ[\Nì9Hô¯ ÷¤Â*æDáàõA“…h¤î»VAHðµX.âË]Eˆɨ7V…ÿpõï—•Ž2\‰N¢’j^Î[²eñ–¥UM£6Ò,J:@Àæ÷úœˆø | x?è¹mQô¥Wé-ÙΛ|lÊ›“ªÝJŸ…L*ŠjBêôÚ3«Î¬¨"ê°²Èy‚« ɺ3ùY7Π Ý‚Uåå<2—é‘pˆ?Nóép¤pœápTîVz©çÞ«üþÑc_¢ÐЯZü€ÛïÁõ2¢HLfh1õ§ê|ÁÕX.U¿ÉIÈ<„ܬQB”5~íŹÝãáXH?ý0ý8=j’L­ÒC”ûå aQö‡¼hìwG“!šIÄØ:T°±y‡àt»Õ—²ˆs:—¯ý[Uеè·!Úmˆª<ò€ÜJX€P(6µê¢**-k•´)±ÝhÐÔI[d<‘JªÅ±ÅW†·ËGîJtÇv&M•êr}¥™9rÅ”T‡vÛww:Hç6G—s[›$-i“øµ!eÈ‚3;‘ˆ'Zøn‰Ÿj ó£ Lc©ÍÛm n óâþˆ¶øJ™R©Ó«Éráfq…À¾Ã·ËµÃæeF‰˜Â'ßdÚTc$ [ŒÕ†-ý›3 §ÞÕWúÕû\”wõÞìÔÃ6#N8δÀ)e:Æ9<æz§™c þ1gÖY´Ø·ð[ÍaMºÞ»‹¦Üi,÷°ïbßÝ7Ö/´"ƒ–ãðíCßpéñ@Ôh¬—ûäaì>Ÿf©If’ÊŸæYÔ8*BìWÄÚmñC·0~Â(Äæ&ÜjoOóÝ|¥Ò•Ô½ÀvDrJÐæ³0¬ãÊ ¤AßÜh"Eô-f¥YiQþ‘Ó8GÑ œ$R“£ J½"§,CÏ:LŸ¤g…^ –†JíÒ€<Š“1'”)CœÒ´iÛµm/£ «ÐøÕh‚¶]ƒ_'™Ô™vÖqŽšÍ72„ @Q¼ÄÍèž|´ÝÆUUm¨¨TË #@Y@6g¿ýó—»ù=k)Ø´¥¦¬6Y¿Ëqî þ“-ùöê`.÷{ è©@fVK¡Œà”baÎ,< ÚÇ\yzÜž]\}±¿MK´òmØb<Ålsœ(è™=‘{°?¹Î= r©ÐdáÊúˆGŒÅ2‰°Ñ b!mXj£èàLÕi¬Ú"=s,m¹YˆïÄKmECÿ%åÑ3yç¹b^ƒ”hŠªÒ$ºÚ¡DTá!¾dŽÉágçv+/»ï”ȤnÖÈ C?Š¿Ïº‡'ªÖˆjÔ2‰J0OJc)oKÄO¢»ÐJ\pJ˜ŸOó¼¡H F1a„$äïûW>Do`Áü÷«ù\zºh"-ƒô}ĸ½ôÄ!}M~ä!¾Ù„ÆÒÃÉi7WGËé ÷mÔ˜4LrR#ºõctç 4q¢”|ÞFßZlÀ“7ôïá3½WïÅÆðUô6÷dÒwÌ÷vÝÁ œúÌq”9"C±Ü'j4`&|LY>_!05ùMôHžrÎ ÊUÐ ßR³îXû»|*jH¨pî Ábh¤ÇðÌr&0b,­?˜Lº¶¦ñ.ÀFë Ü Œ½lEcyö=Ätò„I~òw}÷«ù¹¼ú(ÛÄuí©‚_®ÂƬ´!nèÄ9[ÃEh óy2§ÅY” „± f<Ÿ|œùø~Ï®¾~æUÅ­H¦!kÖ—U,×JlMl«,¨Ž0ft§}g¸=EüGfoÉI Ä$¦óÿñϬ02UÌȶŠÂò8$ e÷Äì ”uÏæ·3õÚÁÆó0ËBo7ÙÊ4ò²LußË¥åàøÞc{ïùît˧qˆÏæ_¦yãzù‘­m=6m©d›W‡…+icGzNuÁöàTõTz ]4ùÅTñš¹kŠW«µZTbbV%Hô3h…A=íì¼þÙ§”Ä-Þb4˜É븽zooú—ÖÍêeê%BzO5ûÃJ棌B•L* *˜cÚ3ðkÿžL(eku¦Sh/Ž ç¦Â÷ +;¦ 4‘J°Ñ>Ë ÷a׆÷2Æðl!{†ˆ_ém›…mCC“­챜3ÂL^0™1–É 9¦´Í a«¸¡åm½X` ÍÎ?]r–ùÄÊdt™{¸ûäAøqùѽ/Ì+ŸZMû8·>.kI'âi ÝfÌ °ýSO/—ù/Ñ‘®–ê¥:9Uñâåsz‘¥Ák‘_ÕBöÎÏÇO–Í›4¡øÙÍ«Ýmµ”Á©ñ@·-tÁ‘FšÊUU ÷!võ7ˆîøºíHÕ;Ëä`r`¾ÿ…AX¬ÿ=Hõ‡endstream endobj 137 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 4398 >> stream xœX X”å¾ÿÆïû\3¦9 Õ7šZjfÓ;æn* à(²²Ã ÌÂlÌüg_`Ø7Y„as q)-1M­Ì´SGË¥NNcõ¾ÜçÜwÔ:÷¹Ï½÷¹<Ïóñ¾þÿßö‡GŒ¡x<ÞØ¨Ð•1\¸`ÿ›'·àøû³F"a&ØŸXƒÐ+ßyìädÊÿ13keöªœÜ¼ü°‚BÉŽI{w%oLIMÛ•½yÏ–ÌE‹çÿqáKµ‘šAm¢fR‘Ô[TMͦ6S[¨­ÔJjµšÚF­¡B©Tµ– §Þ¤QÔbêej=õ µR £‚(õ5‹TH1TOÄÛ7&vÌ ~ÿl@[`l`?=®dV2ï²KÙƒc#Ǿ?N<îÜøËþ4¡jbæÄï'-žT?éÒc«ûëä°É£?ÿxîãß5þ‹'ù–šô¯19×(£×7Ît-}îÇç%"^°àöaßF¡¸‘\ik©ÈáÏÁíP1/-¸ŠÞ ¡ÊPnöóS·îž1Elá°ëÁ»¡ÈÂ@¯¾¯¸+çíHG„Áò…kYÁmââzÒ¿ø";¹÷ oš…Cï£àè©`ÁÏFV Å¿ŒþmºØ÷*ó= ¡ëš`­1×kYÄN??‡;×ðQUçVàsÔ™ëë§ÂåØw6ìÛÚ´Ù ,~í?‚…è8ÚÄ´B«¡EÁ ~>™Û¼1z*Ä%$dg¥RÉS¯ ¿Q ZÊ´Á>C«œœu¸°1>a*ÄÆ‹óÒ$I,éËÂxJÛç›êáu¡‰Èã£_œp¹jua|hÞ.YÇŒ§ûz[Zz+{à3ðÆÚW›¤F)±™ $TDg§d%—¥À.ØUSЕïCºRÞzJá ð¥AçÐô`Áeßš‘ÂŪe%«ã^ŒHÀ< ¯E‹ÞóÚ«h|:¢=hîN4Ÿµ1N½CÆ•Ó2N&R3ÅxœÕx,̇Ùo缫¹ ïÃ9Û¥Î3G¿úû¿ €Û‹›¦™‹CÌ ³Ö ¬‹®¶Z+E‚~$g\z—¼$3U*å ½A¯¯€):P8µÖ-½›š"€\Vƒ Ôö!¢ðf/šåñ÷õ¢PÌ# ²¡‰d½~P53‚¿ík®ÈV1‚ŸÁ&šîÍ<º÷°(Mø ÍGã_ÿωÞZœ.`ðSš@ßÓX+Ô®+ O+Q•TìvDzž!’1ÖîŽûKžª!EhD¤ŠÈšßªøC?¯ŸÌІx|ß‹'„8áᕾ˜dýÖ×wmõ¬ƒ)¡°ªpÛÖ”ÅoA‹·žE³O÷4õ㰠ͺ™k­äþÛýÙIÍœCæ(1•²xy©ù%…%ÙÊX¹?©>% à?¢T/zuÞwóî nö>bÓåßÙt“Tá&l^„¦Ñw¬h&Ϙ²rõ^(fÓÚò»9Ýeij†.öäÖŽøXqF¢„Ó(4r=ÁìM ÀJÓ+“øVì' é¿„Êìº,èB1­ËÔ¯fÁ<ÀÓÑ®º÷RdµEÑ1Å;+ؽt$lh.¸®s%À*i™N¥Ð5 Íe@gЀ–ìrS¹SÏZh'Ø­vk}uˆÅlµÚ€5’ŸÔ—ÖgºÊ[[uûžüò§ND_Ýx2´Vô–3&8Ç~pÍÒ7|¤`m%WfÕUrZà©5Û«D·0-`eu.SQ\"§‚b—Ì,µšI5ZcP?IP0žmóú‚¼<ÂßBÂQ¢áu/þ§M›KC±¡XY’´E¹VÃM[Gœ-» 7ÙvÆtÁùÑw†.ßêþÐ8ønA-oT›T=[OW:L5"‚l·ÖZž#§§Õ&]k‰é{«ñMÀ|Àã÷,}eCxöBx ï_xvÝõ×и 4ÎÁùªÁCf³Õn1>hÅÙ˜V“ÓFÇ;¼Ë¯Œ'Ý‹¢¤A?!žØ‹& \E¯L¾ž„'NçÒÁçÆ ôË£{íÐùOj µPÉÅt²:<:¶üÔQµ¡YŒ`Ћg¡(æ!­´{‚‡øEšÿ@¢[˜Fh¨°KX\Î@–)³&gÌ'š“ð\lj9k\‚V ÒùæN‘o<žÆ$«ÅML[sE–g1ꈑ+ ’A{ÆÐÐÄ¢3䩇ª“øæzy­¾H¡ø‘©=H'åÝ»‡*Ñ$~¯ßÂ'8ŒN`[µ™¢Ñ_˜Ãơӧ’: .Â$Dì_гèéwñÑñE "4øHÞFŠ»²Óó³’KS€Ý¾¼wÈPkÏ•~"oˆ®œ¶\”Ë@9¨ *¿ÎÜ»éZðyã£û¤E2™JÈh’tkXݳ¯Íó5~ܼsÃÆ²”8QÔŽÜP…Èú ‡w nûHú!| Ÿvth¶;ªÀÉV²s*Z ƽyÞö¤Ü-ľ&JsãJÕ/ÿt’·B›¡UûèjcŸo¼‡÷‡/ôÒ¦‹·£££ý yدi•\)/—o‹‰ {36<&4D£V+AÉ–Uéœœï ºÅŠi]¼66=}OVbÅ`ÓžÖ¾¶Þ¡ Cç]8y9Äj³:HeU*›œûwÃ=¨Bú@Ò+ïñÑ:îxØñæfÒq¼“IÞŸPKªÂãßÀóðÄ/§£Yï¯íõŠb²zË-Z»D¾Ñ#À’Q³ð8g,OôµÔu8:à0.jK·è,Z£†Å _Ðè49;c²ã`ì|Oó¡Þ•—¼É8PÔ~´ôAhà£y(OˆÎÑÕ6‡ûט{xÑ[‘%i‰¢-;rÃ`-‹g €—гŸý¥÷Ú~ÎäD ë*·É År.{g¬$ŽDŒmyÞÂý xÙýŸwÞùæOÄ:;g,ƒ2S™?!¬;H)F&÷u|Æަó}3IBX©+Ý(~a­ //ûúw\-únÁ÷­Ï]¹Ôûü%iífþÍ-Ãn`þÀtPƒß?Y;:Qh°ƒìpÓŽ?þð@ßÉ¿¦¼#=°ó\¸s>,† 2+"Cš¢L,‚ÕH B³Yò6ƒÝ‘­]þœwß‹hôLº'þ0çÞmÄ î¢@šâOñý¸ÝG´'føy¡¦vê)÷7ívƒÁΕ–•—„ÜMm/ìêjoé9Õö|á²lN™O¼,÷QRÃñÝhá7W»P‰Ç* :ý+Zñ«õË`Áhl•0Y¹­¶°3ÐüÂï¿G/Ô# ñ”Ægss ËÉAn”Cš)§<à25º¬Np—»*ZÔût­¶†¾‰¨>Ð_êÉmuº8+Tz¨¦ä7”6µÔ54·ç·å˜IÈJ…lyV±N¯ÓjI•™ šô$[ò“‹gˆŸÙ]½»%Od®ph‰¯PIµÅ:™^eR“Ú‘Ïêæ ÌÑþúAîGúÜ58#YóÆôâȵ/Ô|¢äŽ£ûBsÔrþÆÇÕ[×F—½µ*7×U_•Öš*šÙÿä 9H–_1ãJòkçχýÙG2WKÑüÑ ÿÎ\ÿï¿–í*\o@?„øiBfûêr×È4iÐ zsh&ã9ƒ~?"TtDW‡›µÄc>#'ʽë}Ïã@z^(¸œªÎÉNšÜ™v”³Ó}ööèc²zqœD^æ ïÜtåIÝÎÑš-¥II»ÓŠc!œ{ãNÞ€âf@ù¾üK)Ìf_ K~óyЃ˜®ÂX©µÈ9%­Ðj”"œÆ5fÍŸaÚ¡ñT™øµœJ§îTÖ9Ù0\€Ë‡Ouõ× Á ±K®a~ëššl{–9×V—Ý£?H’ôW:†ÿq#³ÕœIaTW뤫l–JJ")Û)—iËË˹‚\N§ÒÀMhäЙ{7¹¢àð6O:znD! Ú‚Æ ¡™3HË]÷·¬ioÕe¨ „}¢Q†I4¼°\Vf6+¸Ú*gqdAQOnkzznÞî°?KO]ýæÈM'g"sƒ*ÖW„§3gISý-…Töì)Ò+~hÜòòÐu’Ÿ†G–¥XI$Û|Âòg ÷à»&â/ã·ð\±oµÏõÝ:K_‚«ÚÖ{̦ ÖKK‘’ ž/ÞN¦ãó‘“f¢ß´AþÀÃm9S‰_C/¯GSˆQ… î ¯#‰¦N„¾bšúÌžj·\œW‰™j¨5ÖëéÐID£³Í­sðB`§­<‰f‹| ~ñ2¿L$ :âG2ÁÖ‘G(¾ü;ŠýZë aÆ¿VFFSnÉÈ4/¯Åÿäu¦ j‹ª*7ÄQ½§:ã~ñ"^@¾Væ[s;€uÐ`m±7ümümº6T¶›j<–fs34û3‹\Ì´ÃI°Éý™¥\%Ó•Gà9¡xöz<gø!ßøÓ ÿšÿ¾«:Û”éì6æuÉŸfnÝÜ~$—{¯f š)åÝ@3ùè94ëÿäÏÃúF¤q`ð艟žþñ, 1,šˆÇ^Âà‰‰˜ÙÑ×s°½«¯/·#Õô¨|ù!ßí>¢ÖÓÑâ~|ô šë»FBµËætTÚÚÜ]öýd±iM2&°*6J–¬-MÓlwA6+³ë«¸ƒ´àÛa–Zž™?~°¡«%DWµíáú­ÝÐÍÈîÚ%Þ“-ÆcÑs™×þúçöAÎÙdmø*âôò™¹ÌRfd?}ÖqåÔWS…'w/X2'uŽ‚Ó2)m™íí}ùmé¤hn¿rÙ„±õŸnHY!endstream endobj 138 0 obj << /Filter /FlateDecode /Length 3731 >> stream xœ­ZK“ÛÆÎyOIªâC*ÁX„1ï—}pR‰¬”ÊI¬ÍÉJ¥ »„EJ–A~vú1ƒZKU)Dóèîéþúëž}³*r±*ð_ü{¼)V÷7on½]Åÿ¶ÇÕŸno¾ø^¸Uȃ•vu{wÃ3ÄJ(•;ëWÖ¸\*³º=Þüm›ÃåxêÖ-m^/Ú¶êÎëtyÖfÍi‡_MÖ7ô¼Êú}Å/·ÍÇú¼(Œ€±Õi o\Öw<¾2kîâ…çžË¶Û¬G6¯ºª}»6°–*›Ó­\„´ gW±‘Dй0áÊHDzoëŸÐ¨ ªvÙ;0DÅÁ‹¬mØxÎgïº8 ö™;žQÉñDt<1u<vÚÕo§RÕ»KyˆËvÐBçAƒ[“´[&ÊJ^\FŸ‚Ä㎨ߠÕó›Û?þÀ{+…nã¦Î‹¯À“ó:>°q—‚$>ô]Î[¡œZ\Yò–v *kÙwÀæ:{ƒ¾c$Z÷R·Õ‘¿H🸶@-º8ÜýŽä |¬Ÿ.{ß–»g9R¢Ç/ædw—Ó­–1YÙÞ_Žqh(tÜ =Ê6­9[ßg]‰ÒeÃW™•ïÓî† ŸùûæÊüþî´àó¢È5|.ÿåzc8Eá£ΑÊh;ÔÌ!ÌÜõˆÎBÏ…ŠŠ¡7ïŒÏNƒ‡“Tv {áµ9ϫ豀´„MÐisŒÇ0óç®Aî ¼õŽà‡¼’gYŠ^ÞD<ÜÛpÔbPs$²æî³/ùTÅÌ7qz L*Oñ7èÁÙ.‹—¹“&¢D`õÓ” mE:R¾ ƒ !:ÒFà&ƒ]Ûz¿ Úh C©,`øº[}˜dWãé¢} Øi"ãO LÓn¹=\â®à°ë.YÕçÞ]Ge}J0FLÀ ;Ö§úUÙoÙˆZdûWÞ«”j^<ýf)ÕèÜ=ÄÝ¥«ºxx8m5ØÅfèr®O÷ã€m[C8Ôå—Q=]zÃk£$ðü ùï‚ ôK žöÝåÈþnÌ,*ÑkŒçÜv—~ƒDLD†–å"ö\Èö] Éâ% ø²Û¡Ã„!¯7ÈÙ"÷Á§h}õqÉ’6·…,ùr ¦cÎDI7%>F7àU7~*‰we_ò'â]tu U¦ÑÕá<"ƒ¨Ú²¯vÑá)w´Íå~?f½K7ž,ì$IÚY@˜¤÷U—/9þ,‚þ¨#ÇqÑXOSòBe8{IÑ`²`<ð=- ê·Ä:€yëŒZ1,j˜Y!ËÈÝ0Â¥Öì%°¸ª'#ãoüÒ!°$›xNÙõh<’ËùÜ6åv@Öý(#Pq¹my:5}ܼ¡o¤7‘¡oCÖé‰Usz"ø&Y‹£<&ðõû4L2+M©\,~`È@@¾þ** BTé­Î¶‡¦ösq/úsÕ6ˆúfS㤎·¯NÛ*ÊÎ1‘W.²?ô«AOôHÖ3b2Ýr|jN‘Ä'€»U.Æ'¬‡‰Ÿ¸8Ku7‚¼ÕU}zÐl:dKæHS,X39ßûøÒd»ê®¼zôV/‰<»5¨'ŒˆtÇ4Å`¬vObôÂXù€>’{%z,¹2“´1(cùšäQš‰A b¢8D&¿C°i:È#1ÒºŒù0ÿ× þè‹9Ýlb-³‡ïˆ´Þ¯ÁFÁ€õŸ aGÿ†àø¢ðƬ <ÈNÕ;|dSÆ2ò]pâß#ÅÁ¸þÔÏû¾)u›&(ð´}}å :AZdÂ;—*¾#RÍ‹k{öu´úoä`ó!–£I•5hR©<¹Vbßax‚Á(<‚`ë""-¡Zµ}9¼…à/‰#IÅܾß×ôäÉQpœtè)4Ç"%&{h)o%–vŠàVÂ×d=pÒ"R£A@Ñ|RT…ÍÏP.£Hèî2Éé5Ïíâc©µ4d“òpßìüIØ.es(yÃc+OCB’ÖwY}‚°ãßX9PÀª¢ ¦UÝîåšC¯ag‰_eÏ= |aÑ[hU(„›)ßÅ}±Gw×Wƒ‰Ü¡œ8U„ƒà ½9RA xF;+qnéy=6@v¨ÖL²”¤öÜ¥UŒ˜V1‚)$<6†„ ‹å#gš¶ÊZí\ž¦ë1µ(L-Ô™Ñ,AÆ£¬ËÔ V0ò*¡òº*»Œi¸«î.‡U +Ýú´m+*[8çÙĬTÐaqŽ)ƒ«9Éz¼«ÆuxåI»c\k¹ÉuL ·Ú Ýô>•ëØëøû´¥Á½ñö“úh+ĸ¡'°½@]n™á0Ñp<Çó¡:ÆË lX$&ä Æöôð«ILÆ ü¶ûr1³Š1@±yBUœÐV.ärY䮓^YÚfžäPi’,c2=Ò³i—ÛwÄåÊn‹@•QÄð% y©ÿ2¶Á8Gè±9¦†rÖ_Ž/×O¸D¤@WY2€¤îMRé¢6²ì®<.± •‹arE‰‹|ý[º6P¢ Ú1q|IÍëDž…͆±&ëšc•”РW¤|Ñ$ÐLân±l-Æ{©ôp¤p~°Š›TfÁdqAÁ0XŠP¹7Ü,¨¡nCúO7Š´J7„ß mP´¿SÇÙGú†`ºãåÓT•½*;ì0hb8öA ÓœÐÙiGFW»ñ %:p9Ôň”P;ê7£¿f—í~ Ô¿'ôpC“‚†ŸPfp³ˆùÚØ)õÙ‹j‘‹rñæ#°M‘šjå ºKµ.ÐP1¬9”¦ÆQÁÏÊäKÍy^çT`Q'ã94ô{®ä£Ý°›;.OLs‘Â\O’U¥;@ZÀ\‡^?Úxð©í¶xï3ÂUs.‹-¸@°¼|EèŠÜšÔ¦x¤o+råÌ´9¯Xçþà•Ði¯0ÝËäÖ ÷ZÐ"ÕZˆïû)ïkeX&)¦2åÞ©"‘å"J=Û0÷J…ábó+´½Íü3üér vùêú*x¾ ²2gbÁ4šÊ:;kôPNˆÙ<ÇJ6í¤× RÆê©6ɪnèú‚ºJ?Vô,5ï”â²2Ó²z; #rá¦Ü‰\ƒDa'á'÷åœJ¹Þa9Žhz_ȧ¬ê(ÎêÃj·1“9t.³}.h4dáŽA¨\éV³ ¾~prjÖ¨Ë͸þ/+``ö/)0ÉäNW}þ¨DøKÉÁéÚ?jA$¤æaÓù¥&ð$ëäT¦xÎÑ3F™ä„ùTûØ\b<~`³hØ5:Ì„§–‚SŸ`ÉÂþ’ð:|Ø;EÞiLÈWM¥qƒ)÷d ˆ˜ô¸ßÌ 3»°Ê~¿p˜È£.IpÅUKˆfp£bÀr€VLzkÅ‚¡ c½úø(ú˜ƒ¸)¼œ[!t&ÒÌW"}ùè_ò@ÞÔÀw†4¢amjj(b‚s{A·š»4OS¦ö~ÚÛÝUÔ#p‘Ý,PYKTq ¦U¬î©N:ä ³„Åx$|ïI¼ >}Fzë4åYé=×ÖNÑ ×Öš{ž“Æ&½B~{õ’ uJ4Ïë§óêSÝ×ô§ š Ú¯§—Ho‘ãU‡d…l‹ÈDUç8æ7K©d@1ø~•µb¸úÅhZšâÑ r¹ Ö/¥_"­Õs´±Î]‘w…ï^¨i…á$‘ºg}r“t—Y-ÑLz2*^æpIÜ ž…·<û²_¢G¢‘Ô‡pª0ÐF5!_s·Ôí-–L›pz`^3¡g̽æ¿à2äK‰KÄHÏu:5›uúË—ã„8sŸÿTmúvúF—äžBP—ž<]içFBüVß1ÕG,xÝP )X3'ö—Û›¿ÿÆq¸Ìendstream endobj 139 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 183 >> stream xœ¬SÿCMBX10‹€ø¥ù#‹ ‹ ’÷7À½º0iøˆøÓ€¯øæ¯¸÷÷x÷ø¥÷ÓìŠ÷ƒû…û…Šû‚)(Œû{÷…÷„÷zïû†ûºg‹S¡~Ô‚¿‹ó‹Â‹Ó‹Ì“¿—äÑ•£‹°‹´xž_œf‹!‹9‹S‹0„W}.L}m‹ 7Ÿ ØIHendstream endobj 140 0 obj << /Filter /FlateDecode /Length 4585 >> stream xœÝ;ÉŽ$Çu:7 X‚Ê'G‰S©Ø< ›¤aÙÙ>‰¶S•Ýd-ÍÌ,‡_ï÷^DäVYÝ=Ô@¡]Yù"âí[¼úqÅ ±âø—þo7|uóã oWéßö°úüöæßHµ E°Ò®nïnâ ±JÎú•5®Ê¬n7f÷ë /çÆ›ÿ½ý\*FKMá‚ç–ßîø;†Ð>eðøUx§¼ÊÀÿH°œ !wÂrÙ>í,ÜØZsÙï\·ë"‚×l{:¶]y\K_p®ë^­P3ª0<ø¼ÁOx˜…åBE`V¶€=Û‚ Ííj# ´ÐqM‡kLðV‹tÀC[Xo‚^–°Yß~”„±,T{'²ÙGbŠj! w=ª÷sŽ?+žÀ…WÄ£¥œ‰”Â]öz*žÑ΢pç„û,‘4ÞLƒ¤¸· h2±^`¦ ŸýÙ¿Ah Ó{»p¶‹®Wß‘dQˆÁòì%Qî:»ŠõÆ„öí)ªh ëÖ &ðÉhV%­ ŽNQ!¥]“ð5U‡êHÞT'eDXÖ>®7-‚gUµ#åöìü˜!4«ykÍÊácSÝ×§#qp#¬*€Ø ð.#"ÒokÄO:Žg2°“7{@RZ 2°û¦ÜÕ#Îc¨¥‚Ã^·iY°x ~;f»SÄŸ[ööØÖ»êb®àÇên€«i9òųrßžò™À£²­«&¿Õ,òI8=æSÓ>à$Ò(vê2 aŒË¡üÅÇ BZVh}àš‰’ ýü܃z¾üçÍíïÁšȉh^ƒ½¡Ó8îS=”k ¾À+Ý7B[ÉêSƒðœ°>”?Ði°žUý>(v1Rĺóa3Z_ý8Æö\?>& áj[¨@šóí—¯ã9!H¶¯Ú¼»ì±9« iØé.#äØ}Õuõñ>­i´Ýy»Îü!íáDÔ¤tTIŒAnìO2Ûr ŽTóôØEÆ’†DÆ&Íÿã)©3\"µy•-èOoÒÖ2(ÏÚªK°_ÓΰwéKÀ²{¨âÒ ¾7¦®9íóOØ%ýã5#ã•Ö‚5$<ý I‘Œ.ylè@!dCQ 4ȸ(“Svf]»ê®<ï‰IÚùÓÚ€«Ó tþL¨h½múÌ=ãEÔF„Ó½¹†¸ák “íJ *ƒ"–É`iiÏpS‡&4qèPud0‰I;$K çö\î÷ïÖ\¡Ï¸«š5ŽVƒ[èNÃç²MÜTn WØ!ü¾^P2×ÃzÁuJSHÉݘ£„Ž×ÿeFÔF~ɱlwWí÷§¨i ±o—а¢PVôhI‰®¬Ü‹xˆ&áh€ì£h3¥e45¢ t=‚ž[­NqBù€Üe%ʧÍÏ6©*< yûªlŽÑñ5x¿¦ìª ¢²ƒéyRvüÒ*Ôˆ¶@+›ºcËÛ\¤l1°H¤G–žubÙÃÉß±·U“bD‰*›j ø¯>c²*gLBr" I’àcÖ§É·°¶>Ô{J¯Á_p?¶h 1ê§bœÍ›\ÊS&!ü$„WôÉñ0in`J“Ï+óŠýóyÛËnÂ3í2ψ!ŸìAHò2ñ@F†ŒÔ 4kªfmÚhºkrVI)æyt…|³@ÕC}—æ"ŸdÉc´õýqxsz5CF^ZgFž$OB¼Î¤ ”=ô¦ÔÀèªæ»5ILÏÿË'ãÀáMœ~Ôk5ɶþxKé Öò^JÖtÎå¬åþþÔ@ásÈY—šd`e›7÷ìî”’*ÉÞ¶ŸF!ÊB8 E÷$MÌ"¨púúXwu¹¯ɇöi•e7m7¼"¦fäÚ ÒÙÝ`Ñ“ŠÀ¦†<ÕÖD~·K IŽ õõR½Ôsm-}þÙ¼°¶zZX›>ƒæ y3X†î›Dåe38¨¬í› R°j=eÔß}Êy÷kÐ3…“>ˆQPò'ƒÄÕT²rì`w箫žŠõšÄ!@y¸׺7“>SîÞld¡6®ô™¦- éÌj²àBŒS„F|zA7ÉÙ¥6ͯè&Í(ݤØQ ò%”bÇÎËÕdÅó›¾ÿ˜$ž¥°*Û²Mû¨Aäÿ“s0B€ÍnÞ`@¢V2ðTætŸ.*å…0îš ÏX J\d¥ræ+Íh ºž‘Ý"|“ð Œ ì02¾ßÿBÇæ=¸‘Ž]´àÌ´·Ê•3ô/R“ö¡¶e¦=Ë$áŸåÑ´GÉãjzÈ'ë ä2±ç{–›V/kZzÀodi„cbÎ1¡§Ä\ÏSÍû—;.íÜþÎŒ“Ìy´"ZèŒ3pˆÀ¤sÊpKzýktpB¸<`õ¥œ)Á²çDŒjðÕ¶ìóƒyá ˜¾‘³^ÂcÙ”‡ª«LN\ÚPY,sÙ¾lî1áTVSÜå7pˆðÊbÜE§cZd(ƒ9T‡Só.m)áîÔW/m†RÓ-úÛåÃUÌŽÇ {Ü*^«|=êP7Ojj4κyRt¹ûþÜÆ’ŽàLê<+jÂæŠMÚb¡Ÿ'uÏ5ÊS¡°ÐØÁ!ô%ÿzWúÖžXHœ*f(iG0 }#/ ÕÆÎ{}©øfÔÛCʦ½½P¤f¼ÄäCÌ¢Ž~*ê(¡GÅ3>¸'ÃŽ÷>¡†ZF“„r9Ú8]X='›™º¡{­÷ 7Ü—m/ 7îooäóñfî=? ›¦é–²¡^DámáŸ8ÂßÀ„§ãMþ¨ þ¯*ç^õC3 76ðp%Þ Æ.Ä b¨uÜw'K~;/)&!— H}Pœf±ÇB*; ‚± +§1,Ô*`R%?¤§ —êbvq*Ì`y»êxêâýTlzUûáÒ§ŽU|‹µ)^ô0ðƒõã¾ÞR –Tâ߯¦› nÀ‚ ×±¾íƒ_öŠìüÜì¾tAU!1‚ê[¾\U%Õsã›ú Uðˆœ«RxP–ÓÝ úñ=ÌÔÏôió4ÖÈźÓ"réÒhÔÖg‘%äØ ¶>ä´†5Ch¡«[o‡¸+=õÇ}éÝ¡¶]ÙPCÉÇ®Tº/î‹ocx¿ÖŸ]ìHˆ)Ààl.:æZ5Ó—yüÉ€Ã+ Ûieø>EðeÂÌ\9ç‡@I:_8` _º‚€ JªF ƒ7}h1£žyBÈ÷èIr[0£Ô1ÓN±¦©¶Ñ°‚¦ ×_aJE9É,­iª žn¬PÁBßÔeÛç “ÖråZp v`ÿ·ÐôÙ`5 ©Òj3ý+{SOÈs¾ïÄŸd û Ó)+ˆF^0í wÖç*ó¹# ¼ª°Ô-yAªK<¶*S¿ùUa ð㿤gƒW‚üê¼Ç7Ià nZï^¤ ¥`Ô\1Þ¿-øk-}¦1iûûT Ô‡ËÝÒ´þ×9ÓáØœSߨm3·•ž.C®\¯OöÖ‰IfÜW,Éœ˜4},µÐÅŠe_Um[Ó,‹M¯žŽ…Ó0Þ¦£p{á(°ÙQŸ‰áazjLiÓCÇGâ <êîÐ3KâF_©÷i¶jr¼rÓQãv yxO= ž.,¿¢ûƒaâ ãÔCŠ'‘z´)P¢íýo›¼¾‡ïŽ8nD ŒcGšœŠï~e€æå Ý®¥˜CGôâ)¦ì«+“[+82õo<åÈ~Ö&™Ç{Àj°‰'UCakŸt iÔû) š¸ˆÊGMU-Ũ^5éGñGZJò‡²&ӳńl÷gšîLÀÔd;YƒÈжëÙø.Á‚„šªlóŒ#2Pâ ÇÔ•EÏgb¦”ä‹O6‡RÇ#ˆ¦#ãä ê¥Ï7˜& úã89kÈοWnD2ª„åt/Gc̸E@4§œUºb¤×r6LMÈùñ±8ü^5¨Ñ<Îb“V›8èŽ/_pŽÇçÁ_ÒpÓÊq³n|ØàMëm¤«óQqš&ñBë`;¬wS""©ÇôP›4Ô'»ë±‘ýì¦ dŠ_UiäDZXÔ:‰çßÊŽ”õÒI–¬3ªø“š7˜b½KNN.CûÑ`äíïOëžØÔIÆgÈg,#e q ù”>ÊÇ¡væû(ðpŠcMÕ›c†_$)¾r`]Sÿ—rˆI¤¢ˆØCECó´epÓãOé,$ýÜÆËel˜Vþ¹E:c`j.çÏ×L{“¡¦ÖÓ•–ÂA½˜ÆÀ{L¼ ¤î"Ý?6 ³¸ «"æ 8múÅCµíôCºVÑö7Âé9æE£ # ‹/ùBŒ˜}â{‡ ›ìŒ.I¶¦ðCw?€eAÇ€ú6d¨ýU8ø¼®P¦Ðx?‚GÜ—*à?Ýü?~n†‚endstream endobj 141 0 obj << /Filter /FlateDecode /Length 3132 >> stream xœ•Y[ã¶îó ÿ }0¶¥‹±*ÞÉE·À¤H»]´3A줅ÆÖØêʲ#É{ɯï9‡¤.Ž$;+‰äáá¹|ç;ô÷«<ã«ÿâÿÛãM¾Úß|Ãéë*þ·=®¾x¸ùó¿¸]ùÌaVÏ7a_qå2ËÅÊh› ©WÇ›wì®Yo”T¬:ž×a3ï;µë¸ÒŠõE³†Ïy.ëqª€ÅÛtãŠr[ý~‹£2óÞ³í 9\dYßžê8â;ûêÔtáCΫºõwG•õDe‘›Ì䍸Ãî6ûïSÑo÷Õåúá×ç3"³Ê‹0ùËÖ«è!ÙÃzÃa<Ç¡ê¢öž³]Ù—íf½É³\KÏ…A6©LxµÚpžy­yw¬š–J)Y(édX†…CjÎaB Þ⣂Ïí¸p6ŽgÓ.žíß¼~½p&¡ÐE>éDÑι˜jaØóš£™Á9—pVæ¯ë }VV²§ñs1ÌEÍmRº8ŸÛS_@b–ÊHk°‚3\Y㫪)êúóÚ!unØ-†[°KSWï×ÂÀ€„ˆ€““HazHéÛbWa 5~DÝ$EÅl×v$ÏõºþâË[Ç‚©¹õŠ®¯¶imZоôNƒ,Bƒ¬)Ë]œ–kFÂH!ÎÞO<ÏšÓàÅñàp¥øÕɳƒäèègØéŸ1´Û}‘Þ{dE»¿Ë&XWxÈ¡¥à.S>z›5oŸº¥å¹ÂüqÜW5I-LÜ]ÙÆøƒWEÛy!òŒ ‚oy¢(à¥Ê•Ö ´–ÎSÚài$¥Âþð¹ƒ*OIè,@5@cP6ç`›]Yƒ­ ÇóÏÃ9ìºrrdžŽL­rKVùâ@B’{²88¬«š=~pT]ñÈXe¼&çäD.‚{:еQ Ü•ý(%¹Ž–ÊèºÜÑˤ>‘ÿh ìÔ÷åñܲBzŸ’ï=[¹«¶}ð6ê¥ a°hÒ )† zíÜVÛ!rÀYÛ‘² óV¢ŠÝXàº4[0€Ø´‚zWAt!Óëþ`ö€žÂƒX@‰ðˆ¶ë­’I«ô,0?¨ìÇ jF éS¶ƒ1°*"=|ª†q¿L´XAuÛ¶:÷'bJ{²QwÙõó0N.ºø v,‹@d „“©>«DËPF€f%šB:ˆ1uìÓ4 ×ú¡2bHH cÄ(Òùÿv(ÚÓ[8ä.–µÕbBÊZ°S†KBÚã,àkÅ|Z´Uñ4HÀ‰X÷‚´X¨Ã‹£9H3´Ã¨g‘hcÖ¡…|Ê›ZxÐ ^¡Èq™™Ê F4¨q¬:ŠŒtÒ¨2x­¨/¨/«YwÅF¦df|H\"¯¸dë3[ï³…µm šœ•!(w2ש¼¼™®¿ /è »¿_/`P$Wf Öçb;t*ï×Z©ÁI$X› 0 •ŸX0`ámbR(”(Üj<ðxÛ–#ÝâWt ½Ú7#m<}[}µçžQÍ¡ò š‹“mž;#ŽIOœ§É·£"ådÄ;D®dò™’1Âx„ª¸™ŸQ ‘kÒfTE„wÞ.(¦3´1pˆ—=h3™°‘¹D~&‡B™]o44v5>þeƒÏ!ç?.•—P ·‡GÖDz{doîîï_¾ •¬e¯^ë^>Scäb^À”ë“=¿]ÞhØ3 .œoøîvS}÷«DnŸ&ÇhvìÅYà‹Wü6N‚¬üÂsMt࣠b· “ ,­+š~ióÏË›¿¹7Ÿ¢ún)•È?Ø„J>,¡íX…&—ÈBˆd¿O8NBZÐz—P ‡°ìw¡þñÃßIƒˆ+Aô- Ī&q$8„WÔŽß޼.¼ÙÐj§%#!Ó22åÙûqñùBêïû%’StÛrDæž°RÏq2Ö1_L-æ´ËÛU¿ðŽ7,PJû4 ô…6 y•ikúaÄ·XnnÇÁ~ª VÓnì#ѱW2×þ×錓èÚžê7(á‘u¡'‘x»#ýj#ÀN©‰¤xËX¡;+0…¶–øäXÚ¹ÇxÁœ¸t±0‡Fëª@‡àlä_0™A‘ÕBjƒi£°ð3X$Mø ñ —ÆZg m a°¯(_Ù¨æÃ2Æ£äæôiÔ³=ÒÅ;vf¤å\JÒ2×x¼•1£–y¦5”&‡oš™L8èa)'A,gÐ5…¼gÆe°ÊC ø +Y”_Õ©]Õ%ƒ@ /ð ´ä æL}VÓ½ °Þ¨ò\XTDÐ ¨·Uö™Vx4çÑû\3¤ÌBZ®×dY²6Zk)MN›,;ï©.¶ïÉÙ´¨ë§:]ÏBåQ ¬“½ i™)Ôn¥  qû¶â®hRØkÖ•Cñ³E¿ÄF,ð$› mŽ…«a‡†˜(Q‡¢Iõiwºä M²ÑÐ$·Ôã§Ìœä0ð¯ñ;ÅÓU=Œâ ÜØULnGÜ®æLËRƒφQóã£q !·RÕp4—!2)á ¾…¼ràÝË ¡Ãê²ØÑ[xÂ^¯¨ÿºâ,å±ÄîŒÖ)hEêS³²µ‹ øüút¡;AEŽ1ì m!X}êU<{¾4[lñ.Šª® ‘³C”ÐÄ> stream xœcd`ab`dddsö ¶±$º»:ÿtfíæaîæa™ôQh¿àþ ÀÂÀ`ÊÀÄÈÈbò£ƒïgf÷‚/n0~?óù‡á¢/Ù¦wOïšÞÍñ]åâ_Y×ï* ~ÿòÏ¿l|r\,æóy8 æ)endstream endobj 143 0 obj << /Filter /FlateDecode /Length 3345 >> stream xœ¥ZKãÆN®:%9ç 0Ò²GÜ~?ŒØ€ Ø‚… {È–‰£¡-‰c’ÚÙqÿžªên‰Ôp¼» ö°"»««º_=8¿Îy!æÿ¥ÿ×ûŸog¿Î½§ÿÖûù—׳?;E°Òίog‘BÌ…R…³~n+¤2óëýìGöùbi¤)8Wì¦êË×éQ(ö%þÖðÛ²®Ù½©VlÝ6]wß6›{½Z¬qCðž}ôñGçÚ¶HKû¯Òzðì(ºþçLˆ"#æ×/g׿¯(›¶¹_Å (€à†\²¿‰÷eßÖoñY8–õMfmÙ›jÝ7-qŸd‰ /~f >- ¯”œ/%Ü´¶­­›C×Ó©„‚ ×ûÅÒÊàQ”ß‹¥vĜՇͱ£S—Ê–k5_ž®'©Âjt¨>á" #ÙXù“¹ºZâ:Þ–i ‘\[x%ñ•öp5&A8ã­¢·Èð$÷ˆßú®ì€s ‰Í‚Ãÿ:(ÉÞ¦€Ôíž¶Hü]n«(ÿôy²°Þ:¥A~>’ß¹“üÖZïGò«Âs°‹‰$Y~[)%ÝJGù]Á­‰Ÿv‘ߦˆß–›ôFèK¸²qå¾o˾n¢äF2ˆ ÁAD팱n,V &êR`¤¨ïèIŠ-ÃYu…‘,N4OUoUäx³+׿kh¶ëú²Ÿò‹|ÏP(!¬Gsª^M!Q­ØQh¯ófcé †¸gŸ‘``=Ÿ¹ ]S¸Bç3ážlr0hN[8*E&×?Ͼºž}›aiÛÍkç¿™†@†9„™/¼ŸïgRY_˜Ó‹ÝìÕ³ys,gÊ›pb¡ñD« fÌ›?Ÿ¥f_‚ÅáÁk1|Ì8º „/ Ô\X¤“¯‘D‡„›°;HYP¨NÈ•\~¸LÀ`DòîÒŒìY3L¤¹‘F1£ I°ã±vàr3Ž—Ó´ºeÀ|9¢y=]bè5êA…]âÄ™œÉÀu  `¡"jŽ®©•'àgwU[E`y™„à6\xÁ<ãf'¼×BdÕp=m&d…çÍV6Q”‘ò$ öïí]n2!ʳj#Q\˜H6Õ¡é±ðXºT E%lµ«ö±BåÜÁZ—–„fÍm¢ñfLçºÙŸN”PqS1j Î¤~5‘)R’ é ëvõ:=Bm l¨öX0ÈËJ˜!¡€›tõ \î¨`Í­3>s ­ó]Ù§Uh×M î}*‚b JgQ‹­¸%3¥|}SöëE®™ïñ+¥-@ðlÂ//ƒQŒƒ0Kž ›;C’ÿkáQuBPeN¢@ñ¾€ÃÁBÀ¤ßܲ¦;iÀ%É=6õÓN‡Ö„¤[‘V¡„ ¿Pê›…1(¤aåîˆTš® Cn;ñ¥ÇVŒE K#@'ñ½ð¬««¦4ä-øç9ÞÞ7™ŒýØ€æÌIËõ!Ëêh¡áÂGK¤´tWÆf”6ðȼî':¾|—¤pTTHw^Àˆ¿ k›ãön÷Ï]½¯we{æ¹Jm‡&^_N°YLþèµb<¢j-5‡ØÅ6G®ÔÄù䟩½{b‹D€œÑ»´¢h{uw‚Õûûë–&‘«s÷(¡ÿû4t< Ùy˜˜{¡Bw8ª~ü‘ÎøéÌyyëu\¼Zv…ó·Ï¾þâ嫯~Šó‘Ñè;×2Ïí4Ï~ŪóQŒOÊ<¯64GÒF³çK‡1ÞÏ>Þ¾ØU‡m·:ie°9ßè?S3“]Ø5xÉß/G˜n‚N‘x6VL‘Ó ÅJ,‡[6FkT.Má7)n2J<œ~5i/yÙnûáÐHq\¢bŸNM,…$$NbF“<•Ò¸€Dy‚„$'·ì¾lË}Õ>¤µ‹ÔN¨°‘ŽrÓ„4K)q‚æG¡m3!À™µòv}µÛa51ý=ÜÑÕÉêõIYwyDúMWµ€>8‚ÀÀ!àP(à ή9ló ÁœJ‰¹ †­ôThØ|Çi ²à…ç1¯Ï¤À|ÝË]šò¥{ñë‰i1‰£Õ{¨w;|2tñ(7Ç´Tå· qšJ GÎÂRF«# „ºj[µùÈ'UÙ”%±SY‡ŒwÕ!Vfà®4Ëg»jÊèÒJè¸RÕÌ.ò©Ù,„Ð"»l“ªR#srœÔþ•ŠéÏ¥—’ìF 4>aš¿¥ßÃ-=HòÀÎfôÆïÙ×õ¡ÜAVòXP =¬‡åÒhHJ"xœYöÇöpf1âw¨¶à‚Qñ ²!Uƒ©P‰•x¢ ç¹áH§ j@¥Rñ¥ÚÛWß|1¡ÊeÞ7vµûç··M»ïr&“xV,|¤õ*†£À¹ÊYS0¨xSv ¤ÅÓž"&›É©ë×uÛÑÙ!çpáNøíÜmSíñkJ[RISxOõZ®<ò[‘ÇÍ> ѤÄïá  ?Ñö—Áx¶ËÁ–º¿£1o¦Ü@´ &ˆöŸ!T’ý”5g¹5úò÷fÎiâí9.Ö/<bi>VX8ÂÍÑéÄp}KÝñþ«%z¶!Ô¦Zjbønô)ñ  Пé‹TÝ×å.S!žÞp*Þ2|Æâ-.(pÓÂê\_àçŠX_ ,5evÖž4{|Äa¿çi÷%™ˆ’»º€á³©W‹«hTH%ÈeXIíºf2Õ9èÌxÆÃw7SÙÒvö4p&ŽÔ;ø,a?WíOø9³ÍÒÇ6ßä¹|“–É~©æè 5\§>"@Œ ?Õ›i¨!#0!6xLK$ÆmÛìñ3ŠŽ‰ù?dó]ÙG;¦â¶Ît¿UµÁOñ™>M$ºV´Ýã}±ω´u¢ßÆs1z6ƒfªœC¡Ó·’gz‡“çàl,zN¹^WXò"RúEQi¬Ê¾¤vCáŠ[P•}ÌŽD‘ª©ü0$çîëXyiª¼4•çq9Pª<óC¸T<¨ÚZ>}N ä@TÎúñDPÕ>}KŠÒè³ß^DËøËÁSl7©…w9¡}jëæˆP-4µúë&58(xÛìòŠ<rG5Yê b©èÀ;Žë“_ß%FñUb:І}„%ù$"‹ÙUDªûªŽOœcôv}s_c…Eâ§´æ°ô×¹*ßÔ™Tc!ÉÓCC0û¤C 1©Aƒ’Šz¯qƒ†¤ÐÃõ`ýü¤óãÅíO\œŒC ¤ÅïšNÁ†u}ûˆM…²‚¬¸DŸ{·'1ד¤æ¬†¼ìØB©7;MðΉ;Æ©UCUQ$)TÕ&ù-m¥ŒrgnAƒV`ðwØyîê›¶lWX ¼¬yç_htU_t€)+¦ÖpCÔþä_“Tý·àªÝе˜Vì°nvô'%±¥eÝæ3è´ÒcÄØqˆ4ñ/O!zÀÓRn6ç>’¨ÎrÜâ4-¯ÝT0ó_Š´Õ-h«ß©îІBY;_‚ËùôÝ–¹Ó·„ïgÿ 5Qendstream endobj 144 0 obj << /Filter /FlateDecode /Length 1819 >> stream xœ…WmoÛF þOÆö¡§ÕRïý%htClÖ­5°q1¨Ê9ÑfK©$/-Ð?ò¤“dÇ] ±ïHÞsäCù~I3¶¤ø;ü/ö º¼]¼_°°ºþûå÷ëų×J/]æ4×ËõvÑk°%"3Ú.µ2j¹Þ/®ÉwIª¸Ê(¤ñ-~‘™³–¶-imµ’*Ëål£¦‰Ìà Ð"a|R’HE­5QPãXÆ?¹‚p•¾ê³±™†-ÓÑ[7À‡ëU¸†1Á]×cäW|¾¼oƒCÒ#l0ÂV£/IyÆŒ–Šû§"¸ÈÆ•ÁR—%8E‰qÝê^“ aq}æÅpögŽ^ÉóøÕ~}¿4ŸÁ¯åVãW3ü,“ÔN1Ã~Vºüò³ø™y›¬ÿ>¦ÅY`@[hCó*ãܺӛ5>/îüM„nÉ­ï^Ý#Ù7däÏ×âYQïÚ¯!]¢Y’Î*B½/»nnÆDÂJHØÝa_µ½QÄ ½lšº,3AÊj²ŒÕP§%¹zñC½¿?t~C¶AF‘Ë©^mU1KSÇȆtwA%¾ËW“¯¶Õ«¦¼]Í.©0_‚pÝù¶Ïö•)sÑšIÈ”ãÛüúâÙOÕvÊÈxÊt8.V3«:i´Ê¬­ïJ(Ãóvs¨†/·„ü`I>Š(’GK¶ãåórwHRäÔ03‘Ï÷Ëás–¤VbFHòGb9ú¡@´ç«¢áT* ;Œy¿+æÌ4rV©9΄[ðƒ‘ä# › ¼ >©{QðÕ¬ßÔÛøYA G£' c᥹#¾È-* <ì-„˜0rã·ùa× »~›Èw ±Íƒ{,‡2Kªi¹¬nQ^x |  ›?¬ŠfàGx\1u¿Â¼}ö𳙄ƒ$¼¸FîJ*à0zÖ^³(~‘aku/|dšÃ[®ãÙ¬?ûˆ^.ã .­Vî ÒÕø"¢/!•£“yWÞbvÆÕöP$ÑÇw½°E¥sMÂH]Ýî>ZZ“âÐü;FXª³.DÇéSC •FSŒüí!£{=¡U "à”1×±:[òýÃI9F~PDLdŒÖ¨ƒ2x?Sȃ!¼VdM“ÄÀPŤæÄ7Eø$y(wÃ1<$Ã`¼Ýç»oâž®åM…lЬEBaÝ,@Üùî FljP3JȺ¦Çކ´üë·©=Jè4;¼ï˜ÃÅ®¼¿‡sÀI޳PÒ®¢0¤!5º—!Û¢t‘y$:¯Þ€÷!Ýe-Ü÷LóDÞ\ý…¶ ¥8a d“ÒEB'×ãà†`K¦1”Ì:¼@ú˜Ð³"•Eí~ÊMt—Â×#ì\.Ç ï‰gÿ‚5¼nH%µþcò‚¬ÎŒÏ.ñwpÝ^…£Š‚›3{¦xKhË“Ë#•´ŸõÈ0ÍB= ŸÍÀ+…ù§æ!„¨˜ܲäᮿ#>ÃånT±äŸVbRøû¾2áý©–øÉðØ2-3fÕÉ“S6>æŽ þ=©ö¸‘>ðͲ@³8lÉÚ÷}"Ǹ&‡<¼A’‘þÎQs©7È£+hÓ±u<Ôñ2ó„žJ|Ô{\âÁ> Þš…%¯ªº›Úq=öíGÙZøQ × ½Xr<9ˆð4°|iÂìüâø3;Œ5xóÇÐãI)ŠþÏ<E>;M¯<=R€÷‡<½d^b_Ç(<_¿o¦Kƒ™²:9àï§O·Ÿ>Å6M‘ç—S›†‡A6Éf¾lû}Ž£#8õÿ0Ý‘žûÛÓ³»°Ưoºº¸ËÛ®,â5ÌP˯  VÝt«m{5Ôþõ°盩±«·“(x}¬Ký´Ø^L(ާ£™×¾;4Õd¦¨oüÅäeyŽ;gfГàøHñ©Çîw ÂÑ<úâÇGíò¿ùîàû¼ /ÁI{xgZ •Ég§]»D ­`àÌœ=înÓc­X~€¬-À†1%é8‘ùŒƒÒfÍD1¨}^3¦|:Œ1ˆ¼hÊ}á%*qc”Þ™’éQiíF¥“Z /F&4ôÜep\˜t‰Å–éåzñ;üþÈ_%Ãendstream endobj 145 0 obj << /Filter /FlateDecode /Length 2585 >> stream xœXkÛÆúqÿBûA@„JV ç=St $€c MÒÖVÛ^£ %zÅD"e’ÊÆ.úß{î ‡-&²"gæ¾æÜ{Ïå»U–²UFÿú¿»ÓM¶z¸ywÃüÛUÿgwZ}µ½ùâS+—:Íõjûö&œ`+&Dj´]ieR.Ôj{ºy•|¨Ö¡L²”sžYnÙz£¸J3¦’ K’F»5K³Ì0››L®_oÿ|ÃXê”b«í77ÛÏ^%eµ¿´ë ÏœMƒ°LK¥¥0aSýæ˜ï~q¡RË4w™šÚ W¥6O¢¥EŒÖ±íònŠ-ΙљËfØ\ïó;“&ÊØ,ýG¾0©äò*ÖI’ÉL’‰C.³2ÊÝè*…±ÞŒ®<4Œ!%Ý¡€Ñ¸º²¨ÖOÖ&]<#€…}^€å*îÇ›C⢡* Õ âì]Ç:ýEÎüäwjå’â;)oaY‘> Z“_Â3µºf+>Î_·–"EÜïßPªÃdKÂë÷xò¿ÅToó¾?! ó[Üd/Þè©ø ðÔ²ð{W7MÑž†ÈçºÚ—Õèk9~~ÕG@!lš`s¼ŒŽ Jå<„¿ço ÏØ©ŸúÜÐħò?xôA*Òãñw1 ú˜pM‡ü|‚DHŠ*Øì±±jË Ú#½Ï8ZtI}F¤ËEã͓޼­-E†ᮓ]^E3÷öÇþÁ¬›±õ‘ãÜè{[½Jz $:çM~*:‚/7Ì{6•}ŠTÌÛ):©¡Kqï?»® àŸ>«ýœ{©vÑá&U’Úž w4 ¯£l×»‘Qü£F'“¶«›b–ÞñáH‘ïBÙ‚¨Ã¢¿Ïêþ'WÉ.ä Öa—Ìù°S…Øp ‚4‰dEd†¢Tw¡PeÌøÛñ/™ ·Ã•ñ;¼¡½(·ìÚ~]Cô¶÷•¡¬‚4ªa¯×á<Ý|[D:9yÜiMÒ¾›‚õ‚*DyÎÑpCÜG1ÉÙø€y‹urŸ|»ÞÄÖòòÙýúv©«ÍKu¨@{5jŽaÓu_¥¹E>Ÿ)›Ì$ÀxýËÈ<Ôë9A¬Äž@ॲ̈äåóÑ‹/Ó^9D¨aÃ8ÊËé|颗|ûòY¿ˆ+ ªÂéX&¯Q›ûÎ)„—v*«òMÞíP@~ ÉÙ·d¥§ü?¹Š’þ)‰HŽuÛÒ“ô•ä›ð›®(†àžìéòÛÈ$,ÙâçûõÈkþ³ÔÛ>Çm³,£(.<Ê¢xÂÕûW^Ìëø$o´êû°x‹núz|ûÉgŸDSm0jHµ¨lãh”Mv <;7õþ>)î×_‹ê¡;ܶ/pÖÏGMÿ]¢5ó~W0|D ª#rŽX)˜/V>=ýƒÒ3p}_™W¦v"²¤Z*µ 3ìO’ =448Ž…¦>F•Üv4ØèÆtÔáz¸Á¸³Ýßsþkr»Þþpí6l„aý~*ÉaÏT¦‡®Örµ0eÿ3¸óT.*Šâ¬—û*¡R˜… ¶õ•žS©YSF÷fCSöP„ª!ä—Ó:²¿im¨š'u}¡ô¿ÕlOÿԪ蚲5AЀ³šPrÃM,EȰBN#ºÿÅB¯I…Róp-‡²9³3Ù ©F­eÎÅBÿ¡ï;„}K1Ö§Ï×kKu„ Ò,ù¤1Ö·ƒ&R4Çòt÷bA©Ä½h>Üã-Q}%öTƒú‰6v¢¦ï™ô¥©ˆÅ0HeoD„[i£ðûÄS'œg½Ín²Y¤Èü¸õíähÎfIlª”ÉDÜ‹ÌÇT–Zp@Fum¦‚ÏF›,•Bñxð7´×f˜Ì‚=ŽR"Óqó_®,šCB™*afÀæ€ãtÆñáå~8©+ /ZSÓ³t­© ŸE™áA‡Ù"äÆaÜ30”~bätg¡Pë­;Œ §*¨ b¹¤¸³AJ £òç³ÐGò é}IÃCw»øia$…j$…Ô¢y7ðJZ$ˆýÙ“gx|ÕFFhix‹tqZIІ¨},§CÆ.HÔ¨& ¤H‚4#ŬßFZå’ÐuÖ Ø@·J¥µ¿ ­6Õ©:A«s©qR'l±OaàêûãÚµ3ý6e.ãÓ?˜¥bb«g‡=uŸÄßQüÆ" ¨Ä‹Žt_R€H ž%%÷âÿ?iöeŒûï¡SØPn~×´D¡mÝŸ0}«G¦ëOè§K¿‡8oÛo#¾Ó±D[‚ì²+óc\½ždˆ_£e·õx|Æ‚v`´™žm5Ž¡iº_‰'•`Ór`ÀÅ?†ë†;¾Éü…Q¥†_]TˆàWwù‘®Ç ˜tÃx+z+6+¤¾g³¶o^‚z: úÛן~Óù迉Pxæ·Øk§™c>ÉBÓ¾Ø5…Ÿg‚¤™n‹lÍ›~x&ÑÖh)®¹-¥ý§×ÁFIf6ö…$[H8b­™šÁBçÌùÂÝraˆŠ9Œ] }}”íîÒö†Ëa|¸êèR¤ƒZ/óåóGw_“ ¼‘C…¸æšg@ý]í§!}âuá;…Pá Úäòpè×3ÿ©-ŒZBú*4PM¦Hÿ="ài˜ÌÔÞªâ!÷S›¡ô–QŒ†jÂ_Wã#½Äˆ±Œ¼ŠëÉç·2*LO“‚ô£ó•æ VS´ãÐ2¯à÷Ëç_ÞG£±ß Ëóhy˜7ÝÿÿítŠëÕ_ß´wUS?Þ'ßÇÑúj ®“nñîX¶ÝýÀï0B]2›ûÀUÿ~tì±<ÇÉñT¶oŠCþS_‰~pÁsó@ ΋Õåô†˜ññ@åîXžïX!{ÿtã¾wÀOÆn—¦æáÈÕ¤s·}ñg N†¿e¹VºTh½BEåDžRF9Ê¡gÛ›¿ãßÿDPVendstream endobj 146 0 obj << /Filter /FlateDecode /Length 13818 >> stream xœ­}]%GrÝ{?Éïzhо-sZùù˜´Àbm²µâXzàFsØäôzfz8=\ŠþõΈsòv_öÍÊk±Xpî¹§óFeÕ‰ŠˆŒÊúéÒ]ûK§ÿã_¿»p—?^ütá ½ä^¿»üÝË‹¿ý§”/ÛuË!_¾üáá/}Œ×%×ËœÊuˆéò廋oÿùê…—ÜòáÕÕÕ¿¾üû ï¯[Jþòå×/ÿƾ.µ„ëÖAÑÿzõ"…tí\<|¸ù¨äºÕzø//øï>ÞÕëXIõðéþãí÷ÿxóñæÝí§Û¯oÎöç›·»ûç›·?ßn Ô­zux÷ÃÇû_¾zýêà¿ WþÚùàô(N´}úÇoï?½Ò!¾ýÒÿë—0Âù$ ¤5øôë‡Û¯¾øî‹ÕNzýæ«/®;r~2£—vø··7ß}õ¾OG?„‡O7?½ºú–¿Ô-ðéðk'¨Å®e9ü–ŽÌnë»›»÷_}ñ8¹vœMäðÅù‰ùÿñqRo¾ÿþq¶gøþÝí#|ó±ÏáÃøûܧÿÉI¹}BüåÍÝë7ú1öïâá—›_¿ûôæ ñã­Çã}wÿç+¸=gðÝïðéÑO«ZܤÅp÷åã¼ïÛé{uõ·Sõ;?/wwþgÆÏ;Ÿ/éÞ“…Kçîï¾ôÇ‹îñšÉãËðô|ö»/ý)öx|öíÉ•÷ööýŸÞ|ÕÝÁÓË9Ç3—s?åG‚”éõþpûÓ+{´û+|~¥ÂÔ™{á^tìø)R o¿èçñËãÜœ\ð_Ü~¸ý樕~‘üjð?|ó{€ýÊ©Wô×÷_<èíý_}ñ븶ÿòâÝÙ‰¿üñA]auåZÒet­ÿ·»DW¯C¹ô¡ÿ\wˆo/ÿåòýEºn1wMþÒýbŸ•Ë?uGú‡‹Ÿ.Un)zÙ>ñ¥äáj}Íí:–Ëœ\×tùî"äX¯S½”Ãu —o/¾¹ü£¹d_Å]—z}gTYú´û»ºº?ô?®á:ë§pNÞµ'œnÁ’S…œ:%Å5ãÚÑœ˜7H>Ÿú!ž!$qrìñ:†%…ƒ$òK'ŒzB97H£´)¥ø5¥’ËÆÔÔºƒÔH}ø©»9!›d¹ö4»Æ‘úÅ¿&EÚÔfÓ(zšV”D{ZSÚ’’Ë’RÌÜ~½æ)×û&¥5P¼L(Ý©•%ÅÓ–0×gê‘Ö9óóÔ)mÍ‘LÎlþÒuŽK \fÓ—¨ˆMJ¥)i>}M”|í(yvååk¿dš2Wf¾Ž²æ)e*Ì|N8ç²ûF'Õ¹È×9ï šÝfŽ4ëÍiEif9JQ-=¥<÷ÇE…ÊÌ“ö¬Ã/)qÍ µ~>ŬI™æ„ù¨áÈ9wÒ‹žm#ŹƋžÈ5©ñøg’¨zVŒFÆLâUfE‰´$Í4^¯Å¯)´%ÏÍMå„òüҪיæ–ùÔÕëw*홇BµçÍ+N»viÍñ4¨Î&¹AÊócïZÜÒt”˜—è¡ßÕf^ ]ç5£‚âg~¢1bݤ `í”6UT»ná„tf‚›#LÞ£Ú#éÌouR Aqê:)†¤= MšÅ¾’ò’’ùS“3Þ%;¥åÅ3\Mz¿š´g¸º Ñà"[œ²ƒiu Ó³î±IçGB̺ eÚ4¹euFI+bÖ4|;¥ù5ÅÌÍêÎSÃÚM "Ö|íãäÒé  ?¡œ%Ò–à§S×À²ƒ”ÒR¦Ñaî0“½©Ò¦X¦‡ßÒ åùáGF®YïŒâýšRAI³yŽŒn7)nó4Fî”´fÔ%%Ó”<ŸÞÈõH:'ÎÈ 5o„ÑÔöphuû aäº šÔÂäøå:®õ„òüÚæp³ K4[Úü>›Eo}3 ÂÕM Ò·¢Ÿ¡ê%1V-z‡Mlb¸º ù²ƒ„¨¶ŒûÜ¥•´–0\I´)νžë›¤ÀümEâÙœ&Jòu)P¥“%6¥Ä¸¤H[R§±wMJÉé„rn [³Sÿ<£Xغ 4PüÌï„­[”ˆ°u›hK8uMOOADàúH:wž"×NŠsç¸>’Îÿ\Š;FÊ4|’d(¥”%ÅÂÖN™,×)¥Åe5„@ ’f.I¶>RÎøCyæ“äz£.)‰¦ÌŠÊɲæXØš­ãcv®åºžpÎTפt=NC{¥„°uE"§ÍÎDBغM‰yI³ØÏÒ¥XàºM±•¥Ì.ò„Àu›ReI±ÀµS¦©Š‘Ú’”º®HžFOW •ýmŠs®H)í YøÚI2»Ód„¯ –Ù É_·(áë6ÅÓ–t>·7J;¡œ%pú&‹™J‰iI‘¸¤$Ú2Íh”dëŠ4TQæw¾‚Àµ“æWj¹n;(éd½³¸Š°u›Â’ l³{QEØúHy~¾+âÖÔ¥ÎF±Àu›b‘ë6¥€ágÞ­"jݦ4YP"Ö6›>¿xZò´U)!,)Œi3ªqê‚Ö)Ñæy¾èÑä½äÔ¤J“¦ëéJjrB:w±Ù{{$´{çY÷«êŠeÅZ2iUJZ3ê åùÕÅïRI9žÎœ¢N*~‰M›¡•TËRKK’gäºÑ ­$ïOH禀]Ü«‘bÚAÚ4‰½û¼·mÅÈ´w–j6poSš_SÌ”iwv làÞ¦ hݤ ‡›6p+eÍ@4ºII²¤dþм•£“Ê çܵ®.H•6ÏÛ=›·W$¿‡C“&âJ ù„òÜ9±{{¡Å“^r¥¤%#ç%¥È’Riʤ!])í„qî[] " X§ éJB˜U:%´å(‘¶LÛÚ•$i)Ťì÷hö¼@„áè‚Ôâ’ÄFî¼Ñ!o¤¶ƒäËRH;H‘†OÚí•"mIIeIÁÊÂL{ìáÞø¾.¾nÛß#^vë—ÀÎímJX3`Çèç?ç‡3#ÕgMÿ§$Dª R ;HˆB7Úþ•TòR•¤F›æe D.OtcÖÉç¤8 šÅ&hâ^0ê’‚2êô1¥dYR´nRj]Rm™<©P»··)Þ¯)¼à'3(eœî JLKJòk m™>¡¤\vJÚAªq©ÑìéS%°C{Eòi)ЦÉÃJ‰þ„òü~ÎîíQ$/)C³úJ§”5£-)5/)Ãñ9ŽgÇÃÕé£JñKâÐM âÐÙã ʰb¤%¡’1m-ˆlÚÎO”(©ÈRÛáIÓÇNJdGöŠäe)ø¤ÎôÑåH>!›Jvg¯FÊ~©€3yÌÅkJMKJ‹ ³s<ü® _ž2ÎÒŠãŠ!œ·YSYdÏö6%§%¥Ä%¥Ò–Éc;FiKJ+'”çS™˜mŒ2z¶7ÙQRh;H1ï IÚAJô]Ó‡”4„P§Å %Õ#UÙAjæIè6<òü{£›Ÿ—”ÀšrÎy]¶Q/ÆiaÅ)K žÛ¿4¦0òܿİ:ðÂÀr{œ”Öœ<ì™ß¸Ø#½$µ¤Z–¤ÊsAòk›Ø-]¶¶|Jì—^Ó’ì1<­ç‰]Ó+R¡MóöŠÄ®é²ñúK%5¿c¤V—¤ÆxsA a)îáì1Iòr£ÒÅHeÇ@eI5ï 5š4{9³‰z›â—Œ—”xjʳû\fõö(iͨKJ^[[צԶ¤´º8fÏRèÆ(žaé&%¬N‘g̹IÚ2Û™Mw‰ŒKJökJ[RFXºAi+[Â1æÜ¢¬laÏô6%¬¦Ž]ÓÛ9µåùõÂ}¬·G1祬m©kÆŠ1çeÄœ”Á˜TÚ”Q—”–¦IÕ/Çc̹1J^3Ö¦”õ(U–”¶²–=ÐÛ¿²…=ÐÛ”¸¶%¶%EÖæŽXsƒ2"Í-ÊÚ–Z—‹mB³=J:†¡¿²%£Ë J\Û"k[’_t:†ž£Œ˜r¾fNǘr“4bÊmR[’ò1÷Ú$ùSÃÏgºÁŽbÛ1Ј)7G1å&)ï±iÏÔ=&µµIåUnÌ@¹^Ÿ]6B¯Hamw9F—›¤õ¥[Žæ&)çPöLåúò.Ç@sƒT¡æ&ɯMªÇps›´6¼CÎMÒoDpn.ë1ìÜ)ﱩ¬¥R5Ñ R;†ŸÛ¤µMí‚nLA;¡›#ŵ³hÇúè&)­ç‰ÛS¯HeMÕºg2ÛÒ]w̺6IK—RÜhÿè“d©MmÜé«©Ô†·=#Õ=&µõ4-¯·â¡ê&)¬ òÇpu“´g YúÝâË›¤]3°ç×êR[ª²„cò¶Iòk»Ã1€Ý$Å=6ÉZ•áÆn“l Ç@vƒROƒêgs Ç vc”¶²%ØéÅcøº1J\Ù—yZ‰ÇÈuƒ’Ö¶¬R¹›Ê;躶e•§9†«”ÕÌÉ1TÝ „•µr SÏSþxñÓ…úÐ]½ ÉÛc¯Qúçx¸±ÉÇÛ˹|Ñ£˜»~¹ð—ßÿÿ§ wù‡‹Ÿ.ýµs)„K§ÿëWž”îèõÃëw¾ê˪ÒeôÞïß]à¿zDÞ^|sùÇÏåˆ8]“+»F N`lOmÈçŒb­Àþé(ùœQR·?ÊÓQò9£üf.Ÿ '£¸Ëõ,Û—üÏëw—¿{yñ·ÿÔ“/mÇëNþåú†‡ÔíÒk·Gï¡ZŒ÷òÝÅ·‡®G—9¸«Ñ«â—®þõåß_üþåÅò\–f‰C b™="jÒØf×qf±­CòY£H°çažŒBä³FIÍvB2 ‘Ï¥`£'£ù¬QšØ{DŸŒBäsF¯/T'£ ä³Fáy}2Êé™Þº2“t¥ë¥iã×~¥åË^ÉZ8hê´ý^/ÏÐÂՋ+j3@÷ƒ&?ûj}TXuöìÝ£ÿˆD<&òöñÈÈ;Òs¾ÖÛžÍé·ÎvS²éR_³zˆÿ[Í5E‹ÉBI›”¼Ò\–ÃÍÇ›w·Ÿn?^é–ý®–ÃÍÃo€vJ÷D³Ï™>¬R._~qx}ÿþáÓÕË?­Ï‹X•8êrJŸG³àõÇ~¤O­—Ãݻǹ·ùÐ3%zí=ÚÞ9[üö!ØÿŽ{OŸÐÄÖ†¦œ!Ø÷¾XOï.›…[Òê®çÆYw‹Ö;uÍ+ïsÜž»4«ïR6+Äï³­ðYŽd1%d®ˆDgOóî³NZl{»4Krì<Æ8j„ýN}n`/YPãtÿ³ èUS°§jþòWELú–NZ³ß4ÄÞh£î8¨VtÄöwèHw2¬¶f€¹¿ŽX…ÈDNSÛ ‘hˆvR“ {°!Þ±…¼Ž$+ ±å'C FÖ&@r2GN×€T¶K±!1)øèHÐàOÁ•Ñ‘ª«Ò†¶¶  Öé{4ÉX—mgC¬ËÖ?kˆ‡uúÚ›¾ˆ[qGD‹ †Tüº®1x ¿®{g ü){ ‚“ží™C<Kë]ˆ i6}A%¦H±×[RpXHk r,;3$’£—¯æôX:ÅãòíH?*ì+¶ ‰!ö«’`_©ºtnHÄwW(ÕnÕ8 \m˳ŽX›€!¶ÒlH‰iHÂAÕh©"‚ƒR—NNÀQõ[q%Çqdks‹Ñ[Oˆ!€«: lº”oHÄ‘·þ£ŽªYÿ¼!Ã4Ý»®´Q “†˜×DÝ—!”b*C(³f¯<1$ÔÔÄóÇ 4®oŽÀAu/dW—  AãÞöèìHv÷…2ËÎCãÞ6@5$@ãúæÄÚŽd½ì Ah¯H)@4î3•Öo ¸|¦Ò2^·i‡A,¢€çÛØNèøûD•eï qŸ¨²ì=4®®@€Ä½-ú!qŸ1vD q/tRÙþÜ€BJ†Â½ÐGe5ÐXöæÄ ‰4¯AáÞÖÁ{ÁGS@ÿ)± õ‰å®P“·”X‘§ßÞ3mˆù8Cæ[½+‡# ö™ŽJ,ëf­2)òî¦× ðP9:¨Ûz¨=¼ôPY÷ÄSÀS_9Z­Å˜âÖ·Ó¥˜¸õÅx°Nwjâ03Ä­Ñ!Ç)<ýŽ ËÑÖ, )üñ¦—»!t· R"ÏÓï࠲؎|ÀAe±†ˆ¨aFÅq÷û¬9x¼-Ò7Qb[.•Åvý5*K…º]Ógâ¨C_úWRðãúh€ ‹û·"8(<ÒaH ÇžA0Ä‘#zIu¤ŒùÓFî*§ qãu³†Øƒ¤†ÀCåT!n¼ûÖ‘+¢­s6;™*g{ã¢!uz(¼gÑz(m©@(2íO Ç‘“àáõÌ00ÛÆX†ÐCÙÚ¥tPX\3„J×u Ⱥ8Q€ ÈZ@· ”á£J€‹w2|T‰pñN†Ò[‚_ê·Þ&¨³’ q­ÈP¸‹ÃEK¨ ¡ê·ÞL}T¿õfr褪½}ÄÎ_õ¹‹Œr ˆâé·YS¸ ÃIõÛl@Õﲦp†ªÙ"8†Èjwï]TGLáÎ3ŒÊý¾[ JNƒÂ;B'ÕîìQBC<ÞÎ^ ¸óÃKµ‰;?¼T¿óšÆnª%jÜÑMµL‰;†¹JÜ 7Õo³¸³§wŸ= ÀG•þqŠÔ8FŽ•±:b[š’<í)33XôD“ˆIÜB}bÕGMAà¦ìEÝHá_Y'»!‰Û†­†Û6µ3ÄÃ>o¯Ç1Ä£¯95NQË (Qu„d‰–)¤‘‚8Нà3~Šo”3~Šï7ëó{WPøÛÕ®HâÀúÒ`pß·ïÁ}ß^ —º½ñÄæ&1¸¶7o œ¿`¯Õ3„ól÷FCd­D¬Ä8)ÛäÜ8#a±ý¶Há7“¸"œ?ìilnýÜu×èÊ6‹­@pï·­Mmþ"ïý¶g‚„϶†$‡¨;¨ûì% G®»ÃàO7”-›=äG¤ HNt‡¨Z€àæo[‘UÙÖ;äàæoÛÅÜümk›@?&{o‚›?7Œ0„€ío`€ÀÀ~·¤ º¶ÇÀÉ›·'œmà‘žØS¹H!'Pä#=±'É¡¬R¤ÈGzbO‹p8AäµÔGnàæo™ÁÝßqˆ@p÷·|r8h)7„ªÒ¸#=±¾\BUY3©¸÷[“d"7Yü¢ç/'h¼Žì¤à½ÙIÁ&ï†ð*$^Gvbͤ(öN,8{ºX €³Wìyبµ*Üùmù 5¥«Jîüu4C„ãÚ†&†pÛ`ÃOcìû‘šô–š(B=•}×4ôTÎ~G(¨j›|‚¸©T[…5qSéw_sòuä&¥ÿ ç$'EG œ¼jMu†G.<ÿ#;)Õ“ ¡Oê׆·é‹CRýÂô%Õ<$^㘿f­å†pþš5;‚Щ¨ç!‡šR/gœÀ»iö C*GÖ‡Ö Èüñ/ßN¡ÞÅÐ%éý²±Aª³·¶uÀSQZÐ6ëôW ï"§Úo¶®Áê’œ#'ú4rpï¯Î¶ÜéÈHHª³mb ÁjA¸C ÂËWGŸT•\ ¦*^«n4Uñòïh…ZŒã¼|iœ¿ª "OÕÛKZ AðTõÅ´) /#©¾@áe$$Š´„¨5r2íkPxI ¶Õ¾!&x(¼Tªª†/_ …UµZæÀ'U­Õe pJ5$xù2’Š7ÐaÕP rU2 "/™ÂªËÊàÇ£Ã'ˆªF‘—‘TÝe4UustR8{ýÞk/#©Q ñ2’‘4^F6Rc†ÆËÈFª®å À‘+4^Ò˜>ÝÏÓ8#©âÈ•‘ŽTl›hH"'@ãXL7$"à <Óxú¥*—‘TIÐx IÕ:39”•îå“€PVZh@UIƒÆµ‰jY@¯T“‡ÆK¢Ò2sB Bã% Qi•™N ž 6N©â±ßh€—˜ÆËHIª>R™pS…Ʊã‹! ×üöd‘k_cë-C4ŽÍÓ ‰Ô¸ªÊB»¡*-4àüåL;FJU ÍÈm8%­3' Unиm)LÀ$žÛÐÓ ¡SÒ6¬„š*Ïu8%[FRÈho!0$Aãyäµdh<×á–TÛäPXêFŒS†°JƒÆsÂRwYpYi¶w ÁB­4“Â@Lçy$ ••f{ÎóH@jMÐy &µfè<“Z tžÇ‚I­:ÏcÁ¤Öç±`RQi¶×n¾æ!ó<2ŠJ³½AŸQh¶wň<¤²Ðl¯æ¸éZ ˆ"&ò’V2>’¦Ñ÷åcïY*.#×hšd@®ÑªƒÀe,~4Í¥@N€Àe$MSF]}U pÉF« —‘l´Šv EpWWÄ.L6Z-¸ ÇP+.cõ£ÕËH6Zs¸Œd£5ËH6š²ÈÁ]½µ7/#ÙhZmV Ô®!2)Ù®»“âZÀµˆ Bß’yWo­AßÂtCœsз0Ý0Äô-L7:â¡o­—‘ olqkH„¾uQËè;ó’ oÝÐ@†¼±W°!œ0Ûmu1…c‹cCŽÍ“ñ Ƕ̆xS8¶{6 °A2â¶Þ‘ˆvO×P¸îV @ p‰˜½Ž°ÐL;|†¼…ë)·p¡£#ú.tt¤Aßà»Å}KS<25 ¸§w„…f-}â˜C„¾…+a¡Y—'$d'Â…CLÞÂ…ŽŽ°Ð,\èèH¾… ©Ð·`¡£¬3‹ƒÿ§ufR"ŽAëÌ<¬‰úŽ\çèËÌ‘ëè;r£#,3Ç6&eæÈuÑ®e“wdZÑ”™#³ ,;Ñ÷n`™9Ö1{£Ì¬o y£Ìí 4$ 9‰\æèH„ºcòeæX†| C2ì3… °OËÌG©×ü3§>Ð÷sqÉ¡úóÏ(2G¦a‘9æ!½¥°nÔ˜#3ŠŽÄÓ˜¾QdŽlÁë§@9¬2ÇDýhF õ3ŠÌ‘9…¸QdŽ2¦OãÚ„Ó7ªÌ‘9EG"<|dVGˆ(CB9!7‰2$4ÊÌúú3©IŒc5¬@è}F™92©èHƒ‡L*ćDŒÃû°ÎÃð>ZU BïÃ:s ÃÿÂ#ÓŠŽ$ "ÓŠŽd(<†1(OuĤ¥°„>¨TH<ú!¡QkŽ~håFC@©~̪ªqá¤kET}e'9‰wÃi©™ú -5“C¤¥æ„6\Pm¨@„F¤…f|¦„F¯s%Ò8 ]P Ðx¨Ãµ‡:\Ph<Ôá‚ZB"0«èH†ÆCó§…fr胰8Ú‘2T„•YC츽sã×0:â¡òP8Þ¨<:!ï"T˜UtD òÀU CÌÏ.ct$AæËÉפ`=z8 á("\ÅèHƒÈ³ ñZh@ "ï=T¸aMò¦òè…´YÜT¸ÑÊ2:’ òÀ…ŒŽd¨\_A @ähƒ%ÒH¡5a\z!ïD¸Œ!=ƒá2FGSD9@ä>#ëH„ÈýH$|FSgð#‘ð¬4û‘Gè3*jˆ•fÏU‹T$(>¡ŽÑ‘û‘FøQjöL#<8S€>¨xhÜ4ÂJ³—¡¡¡q/ÃA0çGድu?Ò? Í~¤¾X[§TPA[§"4†ef? ¯efPðÑóìDÂãjY„f?²¯ft>£ÀìGáGÙ$³÷C<£ÀìGákEŽæ™DøŠžNp÷Í!;ñ#‰ð =Á$·€ìÄ$Âk‰9¡vF‰Ù,·ïG¡ˆ•üH#ü(18:³i„o§ßµ1ƒ­AÝ®¡Œ!%fÇÕ Ñg…)¸…–˜ÝH#Â(1»Ê N°Žä*ÅF‰Ùqq¢#ù‰ãâDG ÊŽ‹bÿ2ÎÈ#ìWBênä6»¼OefÇÅ ÑÓ_ÈqäDÈ[;+aá(3;®Nˆ)’¸säÀý¨“!ý¨‡³•$Çþ(Qgj³“PÆõì¦oÇÅ ÑÛŠ#÷pE9˜ÒQdv#“°ûrâ8°@ßNPG$,s‚:ªXìCêCYÂquB4€3;\¼™„ŲÆáÓbas’q1`%Éáé x;µÐQ0wé"‹–% œ=MÀi„æh&rm¤$¥@äŽOnˆe´4dÉ49ƉC±jîo7’+N4 VA"9b8çQE­ô˜Äµ’#gH\ûažHܹ!!¼dÅø -¹AânHH%î˜tYÉ’P’¹°¨Jo0P+³( d>Ú Hë˨-/ v¬Æ€8B²º]T/Cý$ë™6„úIV 4„úÉÖn'0[ød]P¶xC9VoŽæãȱÎC¨ ìÉf”-ô6„¨uæ„>(ÛC†8r¬G+š‡%G·x5G^¬Í H«ÌPäãm†P?ÅE2„¨ØsPQ;õSlMÑÌŸ²Rƒ!Hº´E¢óнèÇj¨˜6„ÂÃŽQo60°ÚJ¸ôØÕ–á r¬ Ù«½,Ïj¨Ú†Šà£õxG½ÍQC5ãÁØ62ë2K@îXƒJ¨ÚÎG† 8°>>›š0$ij"œ>­1“C÷Ól'KC„œh"·;39¶i !µÛÔžÂo~hHOc‚ÊvÙú „>¨ÙNφDrPfV*ÒvgG¶õQÛQ8&]‘efEl5B´÷»C Rä\È*³"%Qä|C´Ñ_Ú˜séC&òÊG1$²È¬ˆ-‡Úó¡H(²È¬žˆ"³Ž”c¥Àˆ…Ÿ,I³ ¶i‘Ù‰ÔÂeC8w¬3k°†ˆ'")0¤’ƒ:³tü-Ô™€ì±·²gî`î‚]pî‚5tjäë‚àìב,Ø#•ˆÔhZ¢²­ˆÂ„!ȶ"‹ÌŠpîXd¶°•­õýD™~"JZ†à—Xdö•=N±Ê]Ô%‹È"3žçb…!ðÖ1ZÏ·!BªÌР܉±ÂÇWö8ÒlvØãÔ‘†Ý1*{œ$¢¬n¼uÏk€ CÄòÊÌŠP>X ‰–À@±Y1„òA™YN Ø™7áNDY@Š%Ć Ú‰XÕ‹š¥P?ÉCÞÕý¤_ÙãdHm@îD,ÑBý°Ð¬"‘˜||iCLú®Ž WÄŠ»!‰VøøÊ§,:b­† mˆZiÖ#-#mÐGòuIŠý† ê‰Zi€¼+fÁþe¬>ÄÌü>ÁÅ—‘3D­2 x"Ú É4®Báe¬=Äl †PCx«!Ô^Ž5mäøø2r†ˆ69CòDô肘'[²3„Ãdˆ¼ŒÕ‡Øÿe"/cõ!¢ãÒ„<힆PD¥Aäe¤ QÏbBé5!c¬"/ihHËÌ )‘—‘2D´Hƒk†ÆËHb-ÐxI̹b­Ðx‹±6h¼ŒÅ‡ˆF{Cñ(b/#eˆz·ô@("½3“ƒ'¶.>D ?*Ô,bKÐx‹ϦB áÁC<Ç©¦ñ2’†¨Uf›¿‘5ˆ–™@A¢ñy‰ ÐxIƒ¸—‘4ˆh'A?šÀËHÄaßE qØ7@Ìž8l Hä°Ø8@O6°²ŽÀcãE !Ñ"39Ðø@»k‘ú+â…ú+âmß«(‘‚})¤|„|ÄcßE„Æaߟǃxì ¼ì å-¤ °o€"…T˜ÁÌlà3Ÿè¶ Pƒèþä@?°m€–ÖÇÁ¾ŠðÜì Â Ø7@ñ1ç‘1HľŠ@A±o€m> #ö P –˜}fóRG°q€"ˆy„%f+ÂB–˜‚t.“¸zXØ8@ÂRµŒAËN²  º9=úy A‰Yx ìàóHD°o€Ï#e)ÈNô&Bû°q€Ï#kÁÆŠ j!,1+B±Ä¬\$ëçT€b‰Y+·pØÂ³Ï#k„†NE5Hʼ 5¤f|¦„X`V„Ò³l`ê@ã%0RÉéI)ƒdô$û¡"–˜±Ëì Uij¬óHNHOòH$£ŸS^>”A²=ÏlUij"œ?ìbµXN¤¾'AÐ#,2+B[Ä1„*b‘YSÑlߣ¿ÜscG—Ç=š­Ø¿ÇÜóQŽÈgìÈv|þðq”|Î(£Çõq”|Æ(Ç¥ÔÇyÈçŒ2Röã >gŒßœ'È_`Ÿ:³swWO÷©sW/ô‰Œ‚ë‚–ór=dýàµO1¼ëvîÖsưW«F…};¢G±0ÛF–õˆ|Ö(º'„ø§£ù¬Q´E<—§£ùœQÆ,<Žò›yùÿÚãMÓK[Ðk¤àÌ&=ƒÚnÞ³eœÂv¹ _ý;Nh¿ÉØžGŸAàq·ãÁžÙÖÍ.ä~õnë&¡mÝ,*×=ÒÛº¾¾xx²Ûãæmܳíë‹Ãí‡û×o®þÓzšuS3ië–6ü?|ó{ýq›¶³&÷PQoÓX[cWO¯¥€ÄMèþåJóöæýáöê…&rΧÃë›÷ú¡§Ò®ní5ÍÞÜ_iIõõð )^ŸÞŒ?îüc7»þY;¼zdôã;üõLJOöépóþûGød”‡Û×÷øRG‡×W/ô¥ç`‡û+å„Pï€J‹áð¡{­ ÷ îþýíû+-õÔTŸ¾ìÃtÛÿêJŸ‚s5Øhþ ;çýÀ%}"ëê5xèIc?M/ÿæ[Ú1+®^åðúãÝ»þÇÉ»t¸ÓùŠ®ÂÝÿÀÉá¯üùãí««1B<ÜþÙf¯_‡û·øw¿ÕÛÌkH[CàãýÏ?¾cTNŠý}>ÜõY½ùtwes"ý˜úïÚW}’0Šë§ò—7wooöÉõðV¯ÏãWf®ØíðñæÃÝ÷o=;#~ÌÈ7oßÞ½ÿñºz…Éÿ󽎮½µ>ðÊѦÞ>8®í±­rÀº½@?Ž÷wŸînÞòÏúÙþÓÏï>Ú¼^Yã ÞÜ~<Žžy ö!ޱ!=ÄFËÃFÒLuNípûñWòJ§=|ÒKCÚá‡û·oye§Ô¿_Z·ß›ËÒcþîç~¹Zbâû4ÿüÝÃíO˜¤k‰‡ŸõbÓÍ%j·P‰úö»txÐ:â~Ô…òÔ¬w:FQ¿ØOWŸÜbg2þû“õíßíñbù`Ó`¢Ér¸ûNO¼Ø‘`ººÝó?Oœo£µrøÎk­_²·<Ð>=oïÞõëíûÇßüN§å·—‡ÎÏo¾¿Ã´~i«¶µµ±_ž¯ßÞ}ø`— ö³ì^×SPÇd¥Wý'.­~[ê¢ÓõòJ·I¬I¯É.-­Ÿ‡Z¥N>è ÖŠI?ÒàÒú9|O\Ò៯t+ Ô›·wß?áÜ`Êz´szr=A<¼Ûß<¡ß~;ržzVeŠíÈy­ñ鎜ßþÛSig©¤§Ò¿ýدºžTnô„jí¶+À˜ýdT;ÚÄÛÝ÷w:ýÚhÛñ‰Ôà§1BW›^z½uîíë»~Å8ýy!D»FßÝ|zK0uþäïïþïí—ã(Ó“£ÔeúÜsg޾»ù·oþðw¸ÃL†¶äÆ@ûöðËÝÛ·<n~þtÿ®{®×]™¿Úo¼ÀsxÒçn8ý«wjÛáÿô¿ÔǸ…š—‚Kð‡ŸmÐRÍÍ=;ý“î&^†@}Ïæ?ßýùJ>êm¿ †Ð8yÖ¤Úå~üˆè–ªG‰~úxÿöñ›ûýbyvŽ´#.–qðßüá«qo¾észõ"õKú+ý^Ôùð?þ××_Ÿ»š¬^ýãÕÕõã/sYÓ…’~NÚ'zI»{?¹’np—}ßïKæû‡=ÔÁÀôi4þ¦;Ã>÷Çû­ÝÑlÀÐo'7ŸÆ¹œ^© ®Ôqï¾ùŽWâáþ8þŸí~ÜÓäÃm?,ÝôR¯¹¯o?=þÌÏ#`è7•ÇëÀ¾ÍY;ˆïnô2sØMKkÝ=¨|¡]͵Ù<õ ôIäôÿz˜K=endstream endobj 147 0 obj << /Filter /FlateDecode /Length 2646 >> stream xœ•Y[oÛÈ~÷{ßöA@`”J\gÈáu‹,½A/‰ ˆ-ÑJTH*Ž[ô¿÷\fÈ‘–Þì€͹žûwΚőœÅøãþ®÷Wñl{õéJÒìÌýYïgß­®¾}#ÍÌF6K²ÙêþŠOÈ™T*2Y>ËR%*­öWïEWý§üC1_ê4b™Ãø°­Kë(NDsוíç9 ¬†Õ¢¯šƒ[”0âOksÑWû2š/ó8‡•DüØÌÙ\Iñ€_±4©(?Ó¤ÎsQ¶ 8›ãÙT»2úû¢®Ë–wE¿ž'pcœJ±sL&ÄsçYNDu =¹h›ùiØX‹Íi]ÎoW»’2²i*g«×W«çïžiA@•!q)MÕ C#ú¿|+Ñïh©ˆm[lªòÀR!`_+š„³ •ß2Õ]ãoÍžøH›”–¼ dgê²h |w(W¢-úaYŠñ܇[µ±š¤¶b‡ÀoÑt,>¸C¸ªàí?{zoˆJš°ù¯ñîϵå2õçÏÜIÂVNµÚ\‰h¾úpµ”qÅÖÌ–ƒª7à[ßÀAx„µô̺"8kѪN¸%ODùe¾„{R©3°j׳6è¼uÓu82¤ÐûÓ÷Z›è\Š5º%ZD&0¥Åº¨×§ÛxJF|8uý8*—ŽQm/4÷9\ΟéÈí0„Œ?AóñŒæídêEÿȇKW»²-‹ûžªDÀÏ Úr“X~¸pF­î9Ë*+“l"r-:¸üM«òØúx#0&zâ‡úG âDõUŠÀìQ‘ö%õ¥#á4€ç¡¾ Ò]¢}ÀuÈŸŒÞ’@ŠV‘ÜSôo„‡Šðb×8$œ¡Eì„Ùt®ôøáX”pŠ‹AW $AÈoX¦N!+î°™3+”Mâd‘Ô©‡Õ¼ãv’\EÚX;¹ýì Æ‚Ñû+JîöÒ‹±ˆ$žÜXñß©xø8dl1³ŠrÜû÷tÏ­›‚bl ®bÀä)€yùe±Ø´Íñúû—¯ß¾ºYyöü™?Ÿ3Ÿ–,l§YX&ÏûQ¢$e“è ­0™æ·®ò°.=ÍíA¼ŒoYÍ.Ÿ³TšsÏíƒAĦØJ->uYl:¿-w/‘ ®~tÓYRî»Ózî1/ Wœ¾„¢TuU´þí*û5¢áL^¨!Þþð3‚Íî- ˵œÞþïáÿÏ0½m]WGXÖ«Xu”ÿ,Úb½wÛ]¯ÞüûÕb²CȲ(7P#'6ÊsC%¤˳W««ÁÏÿ=q»ßendstream endobj 148 0 obj << /Filter /FlateDecode /Length 3949 >> stream xœµZkoãÖm¿úô3á/¥Z‹½ïGQH€E€"i³Y·)…ÖVvÈ–WÒf³ýõ=g.)R6™XmŠÖâðpîÜyÝ™!ßUªÑ•â¿öïõÝ™ªÞœ½;ÓB­Ú?×wÕ§—gøÊ‡*79˜P]~wVžÐ•¶¶‰!UÁÇÆX_]Þ}Sÿ~6×.äPïö›íêËõûÕnqùÕß_̾½üË™ÖMö^W—ŸŸ]þn¾šÉí–S4MÎCêŸgso|£”­–[^¸&§TÿiÞþæŠ3Zô©æÒ7_.·Ë»Õ~µÝ]ÕÛÕnœÙËõ³˜• •­än+Ç^Õwßm7×Wµ¾03Ý(m7tô°{x½Ù_‘Å7úÛ‹"Ò¶PLGÉY×û«Åùë󎔺~»8o@(Ój—ë×Ë׋{¨[Øí—ÛýÕì›–=–Õ¾þÅT9¸ú1Òðny{¿8ï•+›ËÎÕçã¾ý´WêPÁP Uœ]¶¦vê¢7Ã=4'*¸šýÁ”•‡´‰e>_¦[^éPÏ{¸ã±Üb•]Ñþí'ú`·^í¡»i†ÚÚ§ú˜ÖoOîo½º³»@ø ="ØIØ­Þ]µOÄZ”ë+z1õ2ׇõë9h‡+Û:Ëú|¦ë‹~=‘Ø;ÊùêasýöàXÙŠ{,οxõ¢-ì”[Oø|³ÛxÜzófqþ±ó‰—g/‘Fœ®Þì˜d’Šó•5:@ d•+m°žÕvU}]ÝŸù&Û€(ù€”‰«ï‘£>;{WÑO½1mƒŽc ]Ó)ê&ºÊZHi*r&ŸÊ:$•«õÙ«ê¥$;œjb‚>56T¢Deñqξ;3ÊæF<œmã' .4 zeš`Ž ëµ ½ãÉQ>A7–£š$«#R“ ¹IÂÄÐBl‚bƹ$K9­w©Q¢dsÁz$v­§v”S ú&0ZAõÀDߘ<º’Ö¶±0O®±ãÂÀÕÅJ&pˆÔh ,à' Ö7v пŸÅY1uÀzÁOíÈ«Æ (7qÅÖ6Hâ/¶Ô qà®n¼„È($©ÆÀN!Œ;b¡ ¼ýk7%-Â6À:O€ 4ë‚ Ì”nàÜŒÛ4*vÕØÌàì8) 3¸qÕk-‹©Y L”>,Vpì8m'K M„@ÿãþâ“f”9 훩SÕ#j#AáIé3åÀú aõ¤øéAAYV,NÃn<z.!y²þ :ÑUœQ“õO@è&x ª¶&LpAÇo’Y’MŒà ™'åÏ”&Iòq4!xitÄßT ¼™CMh'*1:Ø5zü ^ÝÄ'5Ð’`HB’$õ aZÝä'PŠJ‰Õ­zR AQ¬nõdµ€äÇ}ÇbDÇó5Œk'–^ÂYû¤:@p‹V·0CŠds‡¦áq4yÃBԡ—šÎ¡(›ª"¢8SèñÔÄ" ‡˜Ã‘ø¸j!/Ù†rÓЋ ¥JD$^¡T‹4ãÿÒ…f8‹Ô- ‚;Šä™;JiCOår h”Š8ôžÃ5·–Þ§—¥£œÂ…Õ Î¾—Žr ÏTw¤—Žr —GºPޏüÔD„ŠÕáˆãD%΃v¬ V–ÚQ,Û±æH°³¹ìjSGJ¡ŸpüŒ9c–cÇâ`®úK8©b|=Ë#³pºŒ'ðßIÏ/Ë–r—„¿zȤNáƒÖ±°í™t”“¸´:p9ÖêOyw uÜ@ø§ðøœCnÍD“éU¨³p$<ùݫقüá;’õ'{BïÀ Þ¦Ò =tç,…rØìòV67–Êበð£\ö“á+t! Í“`Õ€R±r5H7éÿrf±o\ÝÍ‚gšËë(âq¡§Âž ÚÄÖ+V—7gõõæ~·Ÿ]~ÿó¶€SP?È9Õ—Hp½åûÎS]}{×+ÿåÿwĈ¾ØË.y”fVR!Ú`N Ê‘ð¼ä.NÚäè]£\ JDVvhŒå{f¢Î’ ³“vƒ”$s<ômPÞs™¤ÒnçÈâb„ Õò¤GO)…éó7Ê4s™Í¦.‰.…® ”Ìjú™\<”†ÏŽqAu¤Ø” ÈÌt}ˆëM×/ï– ªÙN R¼“²Q£iÀß5(Œ!ëѰ{"…“>fBÜ1A(Ir1Z qR²f‹€Ü(ý(ed`ó€ËúBÉR k9®!…rÃê_(ѹCý™>G pCŠêâTLÚ:ésHaŸÉnbµ‹³½'&v"޵ˆ È(²‘õ‰9C'u¤df™’ LÙBÔ2*AŠ¿Ûˆ>TšsìD®‘tXg²[—C”L?”_‹,Ñe. “UøúÄH•‚’]FæÅ\¦JvÑhbJqJJ’þ.ïé]¤pÐ"±X5ƒ‚t%š­´¤ %bØÿçd°q†Û¦B±2³EQ¤ Â%¼Ø  Z^+!hØ“Ÿ—±”k)Ø{,Ó,WVGô[†`Åž ­¨o'gÅž êd˸M”š›]™Ð #4œ+S=%–Âׇ–õH°Ž:E±) ÎO¦lõ ÁËèJ34)X&ÎX† ¤À÷9éaÁîP)ΔQª+”,J’ ¬l ¦–9Œ nMK‘Y„Ì{u¡ÀçùZ† Ž2B1e|u.ǧ8ž&›ˆ…Ã’€M„B𥰠¥·&%xZ¡,áéoŒñc™šÈä=g¡pJË8_  ç§¿…Η¦šÑ)1 …ï>ˆ/‰W€RN†¶‹B±e°Ì)€-4מFDŠâož¡…h{É4¹P9óÍ Qô¥Ñòr8éCk'ï ˆñ­mœi1Ϙ‘ 1Ï×5VÒ)èB³¼¶’^Ÿð‰b¡ jsò-Sq¤øöµR­š ܪ³‰©¨Yfê 0]ÊÎ Ž­àÊ»¾TDZU°r)ø>Î!µzÙ&§Ü¬¨¼’!AËüÝ`( ý³gÚ°X°Ý…û389•vœ>b”¤RPQs6.Z,'kSUø ㈃àb CÞ‰…OA[>íŠ<…£…’Ëâ¸*βL’mQ2Ö®”´x;´#︛âLÜ!g¾,p JH„( RxÖb£Ô[Ñ(«O¾»2q Ãø4H=b©©¢ô—믻“¶/ {)žß_?år œÐvGÒ€KG9…K—s{.å.‡¤Ò륣œÂ¥ šžIK8…Ç#{ (¿@NLj—£™Ö(¼« ~óDÍèÓü†:Ôað;©ç¶kÈAQ2_Ùª' ¢$Èžçl™¸6ÃÂI n—ûøfS€>Ü·Ñlo:ƒ¸2—„˜²•£Ýj~väL»[Ý"†›EÕœ]6ÝfMåáÔBY2¢<æ8•BÇN~8ÄáHèc‹íf=ŠâÞá ®¿®ðÓW?x„ßÿEÔç­`œŽA§ÖØñHxºù`˜\9úæ{.¹/Wsºµî$|¥º]íž~HÍœr·üñÕgŸ\IÞm?楩ËåÈGßòÑñBþ½ÿ·×»EùøŸû«Ù(ñŽ€]/Ö·»ýU}‹3c}{·`QÀÓвõÑså#ôWŸýëõrýöÕí¿W }1ö•÷Û¹ÚWp°…^ÍÃÅlDÃ|‡À fÎ܉Ü\lm'êqàüâendstream endobj 149 0 obj << /Filter /FlateDecode /Length 3826 >> stream xœµZmoÇþÎ_AèK­xÙ÷ ,àA€"AãXm DA@Ë´Å€’r’þú>Ïìy¤îl±M,Àä çfgç}f÷籪õXñ¯ù¼[ÔøÝèç‘è¸ù¸[?¿}ö­ã\ç`Âøæí¨¼¡ÇÚÚ:†4>ÖÆúñÍzô}õ—ÉT»CõêËïVË÷3½pדnþ>ÒºÎÞëñÍW£›?Ÿ ¾øq½Y/öëÉÔ_Íä£VÊVªÎ¹¼~òÎn¿Ù.¾™oçëÅ~±ÝÍn¾ýçChÿš¯å)Æí¤Ã[îðS4XûáÀüߎ¾ŸoùàêœRõ×ió‹OÀ|Š>UäâÍ‘ÛÛj»Ø5tψ}˜¯žE¬ìé#„ÀÕmµ~»Ýü2»»­ôµ™èZi£¸¡7V›ý-ßûþZÿp]VVÚˆi!9ëjÿÛûÅìêõU J@º»Ÿ]ÕW'*°Úåê×Õüõì³»ý|»¿|ßDzÚW¿¼©\uŽi˜`p=_>Ì®Žb”e窫®Ž‚íÑÑòó£$»R…h(×ì²5•S×GÙ?@r"ÛÉg¦0Ñ…uWt±oÅý+¶œ(ªé]÷id¾Å‚»¢“å‹k}PáQ¡ýÑte*°Ï¯õ)ì¸SùõD¥«Åûýý ÑàcƱ[ü|Û x™•ç[š.å2Õ‡E«)`‡'ÛØÍêj¢«C¹Z¼ßÜÝ +[1ÙÕׯ¾(@ å䯾Úìv=·Ú¼›]ýÖÚÄ7£—ˆ_NßíÝ’Šµóc“lªmD˜S©6ø4XAn»7~ù:Ûoÿ±Zÿ„àøåèç1íÔÓDNH3ÆÐ†O²©U›¬LÝœ° KH¯F¯Æ/%ÆêäT˜b®cGØPTŸ)j`n£·#£\*ŒfY3„äsmH‚cuÁñ-F5âšÉ:Ôî„Ê#B¨&’í…’®5¸É6÷Ià6âw¯j;H${î×ä ë{éhekMf|m?ŠÆ(®‰Kië@]`I?@Çø±U*4DÄä5 i؈î'bsíIÇdî¿Åa‰h=é¡¥¼«µ’7µîד†ÔœJ°µ¤R2¢;WæN 4S«’|ö¢$[[r“ã°6uVu?èàý n(jezQ`°`X­®MX ªª=‘œ©ÃëDf¼åн(°oMf‚Ò¦±®&HJíÅpšÞhutÈu˵"œé4½t|à~- ¾vý.e g°‹­ÕÉ­…ÀŽA%¦ÈD/˜1{¤“|íÈŽ‡‡ö›1âCMŒkÕïPp&±a®h‡| –I﵈kuÿBP3íÉ’Ü™*;d„-ìª`îH÷†`h£}ÑÚÀ€o-t>¤H문®… ›~o²^Ó~-J`ßïÖK Çz‰&:°RÁ[› Ã:QtlmÖô†^¼M¿uÌ@Ò…áÒk¤¬û½Àf'^ë¶`˜Kpã ÆØOÇ©ÌØk2™êw‡¬” ‡KwpµDfSÝC9„jMvúûí2‘#¥¤(z8€— Î‹ãB‘Z›€ û½×›P[ðàŪߌ=ž3IÕPa¾%3~°ÚðN» µj(¥z/n`C|Roèñ7x¸§Ú{Q`¼ô^ôœçÇ%ŠG5XnxÔÏP† 2¸‰V ©‰‰ÎÝ`µAzĉswC‰9hK³´1 Vé ÍÆø¤ÚèÐ1ðà 6¹~Ç Ö‹ïÆ©8d°5Ù£›~gˆJÓ÷mVOêãR4<ØMÖO*ŽÄkÈÖfäUÝoÅ?¡f´Ù>©7(0L$Kä™Cµq³¢Ð…r̈×Yd$Ö]F”Ӵ⇪ˆÌÉ œF ŬˆX­ÇN©¡z#"6ÀrºÜ¶ÞxBå%ÛOkK_ÿª™¯ðhù™DÿŸæ3ƒ:ÁwEZscô©PºÏ i´€˜¥X} Ãê¡´ÃH ¹„ B?SV‡J ¹„ŠgÎ]*-ä*§‚<Nh|lvŠHæÐ¡äì²@”j¨ðéˆ'–úÄe€:e¢:M¦è­Z€9Î3>¡GIRͬ¤ÍøALsô‡gYC4?* —P‘6ÑðH¥…\D…õTî)€‹h42è9•ÊÇ´ˆ‚Ajú)#Kާ‡k„ðœiðk¢´šDÛä¡Idn! Dû‹Uy´¾„HÎ)ÓÁ±[ˆSe ²:¼u„ÜËÖz"Ž:±¢8 A5g?F‚PðÈ'ölÈ v¨fо™ Ü+\ÕNn'šCÅ«ÈáÜCÐ.aK+¸OôŠ7£ênó°ÛOn~ú´"Ðærº¶D¡`î¶œösÎéªåú(û—ì@¬• ÿ(cBX ±ŸôÔÏóB!äá¥aN4Ö"2`' Ìø¼P60HÃïv/D9fdÓCÏómÃNT³{ƒÚ›û¨H ÍúÏ¡šrÏ‹<°&Š32¤ÐrÊJù÷<*œ—¡dÌè c襂zƲÄ ûÏÕÁM,{•ÿ³@3çh-„x'ƒFÖ“"6tsVº:¡¶@PNF†¯Ò ‚Î-EBQ¦}X¢À¤3eF¬ô¡Š’Qœ¢Y©‚^‚MPLRébd˜‹š]ºOB4X„²RÂN€áÐϘ c´f¥cP-d~Nr¤Í(«ÇR8GxD*”¢à¬¡ À„¤ñ@¨•LžXy†²¶#6gdãáØ[iŠˆ„œØ!H@–A@X -µaÏéIZg×ÉQN¡Â˜Èž mb.dbé’ÙvÙu„#YâXé2 AÌ-Ck¡ŠS HÚ5òLå´Ñn;¡lölÒs(¶)ªçlħ’â`†Å0,!sGZ[iÉ™u Dõ¨Ë4  „,Í G%lËÚQº˜¡Ì‘ Aha3íY²29²°<¹¯EãÀØz-J&€ Ž£’ØX(2Û‡äc À6ƒ¤Ô2œaúœÀ€…¢~TþÝd¶#KgzœaÑ}eß< ÐTdO\ÚI‡Ãh 3¶(ź´–Ó#SYF®œ|‰/8ÎõijNI‡O"Ž ü Ã\ °|öV0 Äq¸4ZMeÀ© BJÉ+SAq§ÊðA»r³×´Vâ;!œ°î—¸O§aù47Ë™‰ÐÑH½tM‹Íˆ:gëìŒMÎ¥ˆ$‹¹ÉˆUÖâ)*†r/”Á‡'Í£¼^in¬ THõo üYÑq.Î&Ò8U¢€ÓÉË8ÜpIلξTw`9Óºœá܈8J:-BuÙÿq>d†¾"cõ\ìÍ!ËIÞÐÅZ qåüƒG…erÆÞMûÔÒ)Ì[nÏ”µ°AË󅨲S9¶€ª°lÄÁ,ŒTAÉÍI %’9ËiÏC|³M¬)=XrÚrò Ž-3”> !p¹@Ön¢Ox˜”ŠG²89t²’¶‰â VUÂ㜗§8ê( f/ÁäÈA b!&ù Ä1€ÊÙZl!š*䜦\âxƒ ÄŠLæ¬C¨;؉eÎG„AP<ü3â–„`Ë(ueœMH´Rv&D‡Ô)hKÜæÙcí|dâùMñS*ÈMd›:TZÈ%Tš˜Û¡ÒB. ÒF•Ž\ZÈ%TŠ×tˆ4€Khœé£ùšk¤3ôúú´¹Vè4ÌÔ»Êà;SjΩrò5‰Uè|O깚äAF 3)äM§ž±qmˆÀE4ˆ6:DÈET<¾B—J¹ˆ ç†ñ„J¹ˆJ Rv¨4K¨´ú8R9ÓÐÿÔÿ3‹'ŽFx䕊­!=)¶þ™ meåIó€ÚWŽZVÇK¼ædÿÆÀ±ß?nöéÙGŽWN&îwšHBéL*ÞÓé´îÇ>¿iï¿Urígò§O‹™‡nr˜Êw³ÿúÕ¤~ìè{yFy<|Ñ $DWÔöÝ$1(h]-&Sc`ÀTó»‰IÕýrñabX÷™P-ÞðgåjÞbêjµ!æ/Ãj"új±mДÅoDó’­^?î›×rè¾p¤5ß.tSíöËÕª<ñÂÝÛùöðÓÛíf}¤´¿o_B»Ûl·‹;YÇÉ5°Ýfõ¸_nêrí˜ã¬¥½ÞøxA&yuã@ f­T¨¿N8ÂòÚS‘*MÂÜâýõdêd°“ËfrŽI6#”ªG¥™#Âw /˜oæëBâÞÈ@A¾—·tî~¹^þg±­'ÓoËÃoßÏw kš\¶8Goë˽S(Œ·ÕäúiÙª©Þϧe«H±&PVÓ3aå"¬ÃmÄ):64^iD)‰¢ÁX-æNéù|î"ìï7»æ‘{x|«KŠ·?ï„_(¡º$’ŠÕ|ß¾ß(­/–û%¯•Êχ‰g ”K¤u3„CIxôŽ”PÅÁK8};¹¡+ž|âN<¾‚‚ä¥8û”eôvfZ›ýÑ8w‹7×iÒˆ6­§Ä3±5[¹Á±Bß×›"Ï„ÙxÑþ~~X”—*ß=®Ëëröá°Ò¾•Äéeg|Ï Ïíb×Uw}¸ª;ÿõ óVü¾¹Cún;Sû¯D·×ŽåìLþ?¹âØþþð×»Y¹úïýíäú·˜ï6ûíf5[-wûÛj ƒ]-×3,tãuk'‘2ð¸Z¤ô PѰ¶€û__µðendstream endobj 150 0 obj << /Filter /FlateDecode /Length 3865 >> stream xœµZ[o×~çoè¡—,[isî *`A‹ÂAc[m¬  iZbJ‘6I%q~}¿oÎ.¹w1H¡qggçÌ™ùÎÜv?U­ÇŠÍÿÙÝHoFŸGZ¨ãæßìnüòjôõƹÎÁ„ñÕÇQyBµµu i|¬õ㫻ѻêO“ íBÕÛ¿þçýt7»}»øe~©Ï'ß_ý}¤u½×ã«W£«?>ä]Χ›Õbuófºûü"”'³Í–‹O¸ízînwëÍü»éfz7ßÍ7ÛË«7ÿüfˆí_Óåý¼°tËGŠ]OôŽ)š:ç–Ô¿L.¼ñµR¶ú4ÝðÂÕ9¥êÏÍo.>Q EŸ*jñá íuµ™oû…ý8]>KXÙÓ‚ Õuu÷q³þérv]és3ѵÒFqO,×»k>÷î\^VVÚŠi)9ëj÷åÓüòìýYKJ`šÝ^žÕgÏÛ± Õ.W?/§ï/W°ôÞÝõä]³4оúª©rpÕcN³ç„®wÓÅêòì`QÙ\v®:ë:ÑÅV…Î6/FíV¢‰³ËÖTNܰ‚Å0ד¯MQ¢Kë·æâEÿ2íòJ‡êâÀ®ûdL7Xe[|²xq®÷.<8#´7M×B{y®ÒÛ“»\ºœ¯nv·—ˆOc;ÿ|ݰîu¹,×ׄ.q¡÷‹V í¯lƒ›åÙDWÎêgóOëÙíXÙ &.Ͼ}ûM!Zx$7îµÞn»ˆ{p¤Eær}syö¥ÅÄ7W£× zIÅÚù±‰6ÕÑ!ú©T›8ÖK"ömæãW!urªŽ ¬ –ñãˆU¢²ø“ÆÑG²À¦°Dý€E«ÜaÒÏáiÖŠù &æ_g²®0¥ð“/<Ù ÕÇ;‹"Fv8´ùœ tïg1µÉ…źAeL&—äØZ5,Ñʱuð…)‡]¹ÚŠ¡W”ãkã Sˆú¢, qPN¬½/Lqx±\+ÑHð×»˜‡—d1_;Û¿/o}Bí퀔Ð,DêK®84×~ÀçÁÖŽR24 %¤Úï™®Ÿ%â-œcÿv€Ë€ûIáÿÀvRªñXºi<~ÁWlr–øÂ4»Ç˜I“ ÝcÆœŒ©Ã‘HÈ3*uÂ^K±l]‘É–‡]î)·²«×==F’éÐÃýäócÍá— G‡ÌP•èÆN{¤¦æ˜}7±Ø´ ®jGÓÍjŠÕV ñøØ¢@Àž`S¨Ÿ€ø«£j¶^mw“«~Ý h‡¥é ܺ(0ÛðmGº®ZÜlÂàó·¤,¥{wÏ®[倂¬£ó3Ó ÚàìÊé¢3{F—9‘y^B3تBIŠX$j¤,øL!2Cÿ-UF£Psi­µ~^"@Ùˆ_Äå ºEt—h=m†—üó’½aeR)T¿”dZ:‹Ì1W+—¸°’ÑêïŽ ëQ¸©Uƒï؇ ÅðÀ¢ÿ°ÒÏ"™Ïú(ÃËYŽBáÆr¡ˆÛ-«xÛð34ž2ŠË…’t…b‚PJ[%e„Â"=’jY*p S¨rIqe¸QÌfQ9ÀÞÖŠ•Cðâ ¬•‡b©ÇIPEœq‘ËÁ¯³åÀ SÀ^‚…²HDgÏpÑ9Ñ5¢Qå†ã"^#Úáðª(ͦÀ)Êv"Šáþ´ôÁ¤ eGÌ¡f±\d@¤u‘âÈV<ÊsNJ 2ïIy¯M–ç-燚]CahùŸ&ròÀI4ä(BIïcrbÊ#€ YœóQö)üŸËC˰ÄG³)u—W)ÒƒèP(YÚº„Ó‹´‚„šŒ¡ËS)qfmù~ÀÈÖSŽ2®ˆ!5Ɉ’l’Ê$éÈqì¬ø²CF†;È ²ƒ\¦E𘯋ï2ß2°9”ÓMrgaØ"= qF ˆrÙêPZWU¤ðuY@#ÎY Ì@äø”S‘§õ/(¹´Ûôf4Ÿ…Á8h±öBèe6³hÊCˆn$ðå„B‰íÖ3š&¡/so$%JÝf=–Že%@‡Òñ¸ háÜË¡²’ê‰5‡}K u8”–ÊÅ‚,§±[EgMqœã<”Xs:Á Ж,W¶ ]’Ö@hÅø(Pƒ§Ú¥}NÏü^èå8ââK4Ù¸FeÉ·'±¹òy2é›%³tk²¤RØ39ÇT’38“<›J©â O>yè_‘l°*±fô"§ p¬¶Ê&L(CAÒ'@ŸCT¾­*ê`Ñ@–ÐÄ0Çq£Lk%>eúaùa‡”·ÎrÊÏ,Ê‘wKÊÈ97¹ÖÑhŠ-½ªdS°“œLB sÎòyˆœ"U+“€²å9ËvܖѺ«Ó!ŽDæç%BáN68ıP²’4Ń£ËSPL^>à´Iv2-äø)-È>‰ª¹ÌiHø ßžð,‰>®Ì> ¿ópb.Žó’¼…aÌ&èÇn ©ˆA³òn)6@q¨MXo²&º“aÿ³‚6ÁªæƒÏKÙSNhjÛtÔ‘ÒRN‘Ò„ÛŽ”–r‚”6¨tìÒRN‘RNMGHC8EÆ#t(¿C«h ë‡Í>ûzRÁ»Ê෤ќ*'¿-pªÐùÔs{4ÄõX"BɱJVú™P;áš§ÚÄ}‚ÆË»RÊIRøn`ïHi('Iáx»¶•ÒPN’™TèÒPN’’¥ Ø‹èxç7µûH¡œ¤–O¨ÈeHL‘áû"€ËÊ•æ+?@ÊñêDPuˆG^íF°†phòû> stream xœ­XmÛ¸þ¾¿¡ ÷Cév­ˆI‘@] ‚ëéÍúÚç¢ÐÚZ[½8’¼É^ÑÿÞ™!)ÑŽ’^‹f¬$g†Ï<óÂý°ˆ#¾ˆñÇýÞ×wñâx÷áŽÓ×…ûµ¯o¶w¯Þóla"£µØ>ÝÙ|ÁÓ4Ê”^(™EI*Ûúî–WǶ+‡S½Z§©‰â8eCëžyƪ"_%|æŠ=ã“QÒ°td4«@¿šX°}^MëüÓjG±äB%¬¬óhµ†'ÔÄ^ƒ˜€5nX9‹~(´“õC—ÅñÅ銕½w,3&ce³ïм/&‹Ã)xẏý*ѰMrvZý}û‡;Î##%_lßÝmýëËŸP>ƒcÀ9Zæ™ÀSªÈˆ,cEç×Êš¤Gð™³ͰSYXtRÀÉ “²£…'æqÂðm$’¼â”!L窅ó·Ý‹S/2vîÚ³…Xkðh(‹ÞÛ†÷¼«¼,„¥lF·,öTA*z¯ –,o„ 2äì F $Û† ÐiâCŸqpáX4{ã„\ëhÛ±¾W8{¨ñhÆ$Bs#K¯Þón*àø¹=‹¶S„˜‘ÛpEfpΨ8ñî9­Xˆà«2{jÉ«”ÎY·=` u>”m³['3 EÌÛž€ihoÍuéL.Ö#aÐP~1ØÇr-ÃÜQ i|Fn·Ä™4e)‡x€<{±qO O5ÀcY—UŽÔK…c|JÁ~(kËè$cDýà× £š¦È«²9Z̸ ~s„ßBœ\íQ2ÍÜÇ8&ö¡ h{¸P´cMµ¡¿8ƒØÏxäu¨)R@bŠøû8Ú|q{»ôà¶wKß&î¸Óµ÷„0!!¤‰¸ÑžoVa€™NxH7 ¶ÌFá êO" ásdã*ÊÒ˜[qàÚöÇ[ëxÆ„óÿÆúœñxÎú:¥D2>Œ†¼À”ýÜn¢LòägúÁ#¡I8ÂSpdÖ“Ä€›bôÜÖNõ %Ò ’IB6#þºÒ –nk!J HèžÊfìê÷Ó‚‚ávbnž!]mÑ!]@†¡=Ÿ‰6i–PE†bu(‡Ð ɾ}² ­PË£Ë[!µMÛö·aÙãìÇb?”®š+ɼ ótiöhÃÉ .JL5ÈμºŒú2[t$YÛQ¯"\°Wå^ 8¸ËÕjH0hŒÓ–/™"PÁÔÕ òËÖ>÷lKŸÕbíΔa¬ÿç•Dð!×,Ü+‰¸Q g(!ã‘CØ{,¾±!NEãÞ¸;¾à9pàXá#ÈqæF¿ˆí±*+I‘w% õ$7 »ûÒ{Àb"ŠUˆ IpbgAóIoÐÉJ|ñG»iD_ÁI/øIŽÑ›ë¶ŵ€‘;,¼ÝX§–­O][»Ý+»{ä‚}I?/†n¿-†V,¡T¦‰1´“¦Ü»„ų9VÅ´Lr{8‰oȈDµò¥ïF;[t®Ê£Œ”Ö©ç`ª2¬âSê¥`G ŸzPA‚Ô‹Î:¹@cIåƒXà$pDf£ß Z•­2þe 7R)œRSú¦ÛضãÆ'oQ…æ¹äÁïПÇ̫ʻbRQOäãÒ” hÀ?YU‚âºcóÀš(UÂûÝë9\¡vK=óõÕ¤°[Ý{l¡*'É MO®P¦¶d]åLš&9æÌŒgÐHe¢}È›eJä Ç ÑêW@P©Â b‹“¦»¾þ–DR—@BË RÿÛµ}Æ ûîûwï‚«¯™ÙûËé±jñ¦ {YûŒXœšÐɉAJNƒøÍ…:Ð Ýá ê÷`Æz§ö;Æïy ÿãÝj·"!öÏ1ö¿¬bC÷Öþö\ˆUz}ÈëµÚ{ÿnÛ]~¨h¸Ð=íïCµ˜xɵÍÄ(¸]mðuø\ªùÓc?Jmš®ý¸c|å“þÝÕ&A‡qS×V›ªì‡\|‹®*ë ¤êýl°« NõðÍ?êxïœ*H h6Ç÷pýÛð‚æ(aà‚¾VóöUyA1¿êÓf#¯×…‚õ€íôêÃùl‡)ÿŠ%î#6>b튾çôz”›g9:Eíø/Tì7Û÷ß¿ý*bÀžÛÈ]òLÚçˆå›È’ˆ¼¼Ÿœ{s?1lyoWk¾…øí‹>üN·à¨;aËâÜîO ¹»&Œ4l›I/!·e5R™N;Zp° ¤ “šívÍrþ\³™v É`-8œëæ;7¹Ž}â`±væ)!çÃãMRÆL±¿2ÚONÑÂæùô¯¹.}SàÞ|^v&Nq|L©OÝOj©z8n¢ƒÛ›å)¿åñZfi$WsÞÝxªoÿGLÓ\*1’ÿäÏXâÉŸÀµlzüŸƒFéÌ…ñgö©sÕ"‹P¸‹æ8œ°Zr ÛØw"-rpͽ«œ­"ƒíáå\l–ÕrÅYPNñf1²,å°OUþ¸±¹¹ ZÄ }þãÃ[û)d Ëf³|Ídù¥ O:«ö¸Y¾,çé´¿ÔuÞ½„¹0Çõxtz=÷oågªÙUXŸqâa€óæýPî=bûºbYŒå¨¦Œ}Ýï‹fx…ÍtþÏ_*ÒŒ¹xÓЙýû—8=¿ÝÞý~þ ¿ñìjendstream endobj 152 0 obj << /Filter /FlateDecode /Length 633 >> stream xœuTMoÔ0½çWø†ŠñøcÆæˆTP…DÉ­E(ͦËBw·ÝdQůgœl’ ´É!‘í7ïÍ›? ­@èôž¾õ6Ób=fЯŠÓ§ÞŠ÷eöö ¼ˆ*¢AQÞeX«ƒ@OÊX/Êmv-?··Í!/¼ñJk”û»ôïTŒ(7]“¯ä¡ê6û]ûnÜIù·òS ¢÷ Êˬ|}-¯šîxØÍáêýªé1–1V‚îAéäå¾íNÁÈßìêfXÑòF~ýø}\¾É'܇ã®NRf!¿«ûãDPŽ“ƒ@yÑv›mÕ5¬ýU†F‘Å :ŠrÅ4§ya°'—ëCµbÞ®P,00`jö‚僧¤A:×üuÑ©´¼6p²¼eÁã›Bû)“ú°Ù2§Ža‘ dµ¦(òÞ¹è'n‘œäã‘‚6.ÐhwH‹ý“ƒlÞèÙìÍnul_’‹h¢¨g¹FÙè,3»Yîª,J4ž,:Œzæþ/ÇÞ0´ckìöO,gÛ õ#ºs„¨—ÎŽ€sGc„Ãv퉄èÎùÁó¢K¹Ÿë®ÖÍ9/çebÔhΑ:ê‘av‚­6íÜ©8『së‹c”çÅá¶YPqùtpdg*Ë")R\(쪧%D²â©O­µÑNò¦îlyèúá"ô!<"@?½¬ü8k¥ó ' ÿÌðí}Uÿz©Y4+…87‹SÈÅð´pï¾íªnnîd—ZkwæERVgÏ=)pÞ=¿Ëû Í·ßzˆ*ŠÂšd ¥¹•€yù3»(³/üþøG3¼endstream endobj 153 0 obj << /Filter /FlateDecode /Length 5077 >> stream xœ¥ZMs$Çq½ã¹¡X4ëûÃ7R–e2HËZ"Bá|³Àˆf93àŠúõ~ïeõÌìzMrÃÁ`,úuUVV~¼Ìªž.Ýì/ÿÿÞ>]|ö:ùËûýž&7Çp™\‹sK—¡…6G| —»õåŸ/Ÿ/òJ ùòÝ…¿ü ÿÿíÂ]þáâì•Ã(ÔÏ.´Ø–|ë o/sïy.ñHwyÎÅ.ø0ûÄlH›ë@BðnA¼èçÖ qÕ6§F$Í= Ix7Ú…d?—[+7®!$%!%Í­LNõsçn³jãªBŠ­ÞÿlL÷³—†an&§×¹ €à\š£†x…ˆ‡9…8SH3‘Öçæ…„4{Êim.†DŒRÍ<@ê…ÀÜQH‚òB¢>¸ìæì‰`M[=×™wgCJœ¹©šæÜTÄ MPfjW2Fò3GKÀV‡dØ5RæB$µ9ÓæÁ;XM¼jvD˜Õ†øB½sØ£€gGm}§ß…tˆ†ñ±Ð ¹CþX)š17ÆŸ˜Žg˜ÎËàžáÙ`‚fïK˜¸9ÙûÒg4¼p2›¯y®P­e¬"#øæÈ1Œ@ÓÎê’ †™6dŽ…ggO;òÍdµEXh´c^ææ<ŠHðÔ4W†Y1¤q‰\’¶xˆPƒ5 iz®¥Ì~ Ñž+CÀÓ_DR³ ¡ ˆÄ>â#¼#Ë7Y' T@@’ÒQáÛx€©+nׯ Õú¹pcªåÂh†Tº0,`‹G< ‚„Í ¬ÈE‰,H> QÚÅÉ ¹À UKG_‚K(ŒR!•~Ímiøµqe6Án$yÎ dC6"­ÐaD*4'‚©¶'ä™#‚±6 ƒ \(ŸÙçTF´ÅÞ©iΈ›(Á ZD"àÄ®1 J–Í˹„ÊDÀ¶ÁÆ`dÙDvƒH6!Jb5¤‹d47ã$® ˜§R´uÖ¿tqlbD™à"-r)YL¤ı)8{l"Ø„·J`)RwD¹p²UB$`i¢n á 62Ù$V›#rôFŒ!2Òİ‘Ä"óe°'6B=ÛwF)!ÃFŒµ ²¢nÆœ r!‰aƒ2"(%dXÔ»¹›d¤6`»¶‹\Ä›9 ^,¡‘ân¦Û‚TR,"hèÐÓÙJ P(¸¹`@%Å¢ž R+¨# O“*|A†õÌÆnHÃ’Î,¿ ø“Thc¢8.“5ë@ª8Ö‡…J Ê9ÖCPEH±þñÁ"Šuðªù· ~Õ›ï¶vuxÌmdOAŽÀmŽyjïaTˆƒgºÉdõ@wÊJ©9[¯Z„t‚Á©›7*¢+óö5âK¡†©Cój ÄœèL;!i–:ÂÌTñW'ni6 %$!ØÒ˜§†¨keÅIjX]F¨0| ‚»y6"¤^[±ˆ€¦¢IF!qD°ñdûbÕ'‚’f„PÙa|㵫C#‚HlidØDz79 ìÙ‰ 3äë†B‚pB²–‘ʲñj$3ÎAf˜v>Êi@‚~ •ÄY:Âg‰L›ÐùX×=\í¨¬š¤j’¬{‰å$pudj´1°I#⛕% ² ´ ŒlôÆtQMèУj•f®ëÒÐ?¨ûLlOÅ\ khbRE´˜bÛ3›õIÕ"¶%¢óO¤]ɶDÌý(ób[œ§¬ŒôWH2ÉìFâL22§ ©vN‰ (²-®6Ûú>) ]l«FÜÖÂ;'d1"]l‹Ó匰Ûzžâ4 žÛÒ²RÖàQ%©ç·!A3Å»e…)îYí¥NDY!Ûúæ­åÒĶžç1,¢¬D!i‘&íDhSe…lë˨•‘-“’—1X£ Í4ÆÚ ÄMÆØu^K>wc[´Ê^lë¡…SBYqBÆÉ}–NÖ‰]…J7¶åE·>µA9‰'êœFwSÔéÈ8OG’ª2Ú4 •GÁäÑœY ‚åÙ–ÉVvcBº“n=¨Ù‚…Itë£!Æö–tëÃQ0T’é!UtË3¦ÙèÖ€ óPEõlµ¢^5‘#,ÐI‰m‰DƒéNHDs(¶%bTŠÖTl˯z ]tKÄèB!yY. ÝzÖõbHWI%¢]ñàÄeq4µ2GY‰R0,‹ƒJû@,VpÛ’™r׉ˆ³Z’bMˆpÁ|Ò-ö*O@t;¤Y_ <b‘QÀ¢ÌlW­½€¤ PÆ6‹E‘£•’UØŒfˆÈ#‰àM?ä‚H°1UwC‰wVyØÓ!¾'‚lmBü Â‚²’¼!fÁ"c1:¤LÅh˜qØéc< óªšfï…,1Q=–xObõ¢FIȳ2€4ôª¨'^H¶­hË«V±ƒZd秾¢ƒ‹4bµ[Ä£ìZu¢@šw««¿ *¨*K;ÈP¶óJH€™€­*‰Ö±å‘\Þg¸˜­ƒ]Èâ×†Ü 1znA—BB,—u›"$Nh`7t¾ùµ¬ÞPÈP°¨TëöÓ»íOˆy­Dû@¼m%KÁ¥Ð·¦«!!ÀeU€Ewºbw‹~!XNXÚ…Ž‚Bš%b¥¡ƒ¼Ê@œvÅ iÖ±/´1<óÄJL7 Nl—ºIκ"Stð@ˆŽ'@ªÅoÛ²Iê$Y"ÞÖ†c»2¬ÎëÔ<í!9¤Œˆö¤Š¾]ͶTÝ ‰6&èfHˆ³1AzIV<’C9ñA%‡2B–%¢b¤ŠeÊA±1`Ð6hcŠH°« ºRlLÕå`cà“ Ä[4)`Û@tÑ£DM±M€H¼`•kÄgy šC’ö6Ä«èC«ná…òTDßD^(|ºlLÔå6våQMü@lW=qˆíŠmi–Y«h)¦lbCªú[eÙUÓís–©1&šÊlþ4fšÐzê‚Hˆ9‹ ­ˆ9K=0Óº¤±­²ˆ€îäЀ{m‰ ‰hmÓÍ®¼¥|ÈÞhH45r3šâl‰¢O @ ·QQb±˜8Áoz€yD´H¶jŠðcÁ@t™ ¤ÓÚQHtɘ–MŽô‰üZ0lo†ô¬F&E~+çé°™xí%žå1ÖRgé`[*žÍÍNç8ˆ:ãÙܬÝRgùýÄÖ†QD´Ùx"ÅêŒgó8YÑÍ‹ÅØt²R†Ó"KM2¤ØR]@ˆ>á4gUë/Ų¼t±vw+Ä\‡`0–%áCºÑl眔¢]1×aUQvšÞn4 ²0×%Hl1×%»ùâm­bD<ï6[ ôU’l­Œg[«5#Úì‡÷¿Z DÇ‘”]1ïeÔmV‰÷Â~ “ƒ7žÍ “ä`÷C.-L’£ÝÑÇtÛÞxH´¥R3ž=!fL ͤ”‹]qŒ³ÕK5žbæÉ`åô>‚Šâê{³š]!Ý.ˆŽÈ·—ºø¿f2¤A2ꉡ âYw€:½#îþÿ4#? "ÞŽvZÓâ…œ7û…,·Í'!'äW Yò'!'ä× Ñ™#ò«…|hÆsä\ˆ»¼§ƒÉpcúå7Ÿ½ÆŠ¨…÷7o.°q¡‘—ü"‡ü »ôÌ7O™ÜÕ5š~Ðô„vûÌ;ø)Œ^FOñü ”«ÿ¾ùêâ÷7¿äãÚ½¥FS¯~B2wØ~] |Dû˜pD>EHá÷¼s|‚ˆB8 ÇO™>v~&á}[üœ_}Cñ_)>7T£kþß3‚ÎØ, É›é4݇—Bßò)ë JçÒ¡º®öø©=‹P~qpõ,õ¤°)Ô j™uB~~¯ù’z¢J}$†Õ Œ€µ@]ž{¾Þî÷W7û_áÏûÓÈ@ÿúbZ¿ÝÞ>\ýó/šb ?º9þ €Â¿ùö÷”-ãü|î¡{ä%v\¿äï¯ÀçQ×§Ý|ss…’ïpBšÞ]¡qï½¶i{uÍFÀù0ýf·?ð‰ wŸ¾[n¯PšÊÛô°àaÚoþ±ÞÇ–§ÝËó"a:<ì¶/÷§Õããñ…ÒZ» “\]S®çÚ¼ÙïqÂJü£öéaÿ Cù¥´çé»—E¡Ö }½©ÓãÊt¥ø÷•ضo¹÷çÒ´¾S]ój½ Ì“AFwss‹¬W»ÇŸ0•ßÒÓ´zsXïÆ“Ÿ*ÿByó餲ÿ‡Òc– Óö©2º“i¾ºÎ*Çiº‘úìàûô›û—Ýé “=7–{ØÊ1ˆ»éÝ™ÌÃÃê0†ÃŸsŒó5Ow«§eP=÷éîû«kÞ¹áp¦E2PC o-ßhõ8½ÙîN«·owC‡œ§¿›‹C™®eH™Ù„à¾ùí_¦ÍÓê°¦ “~Ž'_=0V~Ùnpvæ…N¯ôïn=\ ˆ.ù\¢!aX¯î´›Ž2½]ÝßNß —‡>­o·O Ѥ=åéåyÍ}à]j~úQ»+ãžáž†> Ó¿<œÆ?­÷Ó²PêGÙ ';_Ýýx•Ykû´z–]/Óau¿Þ¾Ðä1*tÛåï6í·Ê(2\!Ç÷éîÌéŒcžûïÓËôd3qÞ>ßÀÓúùè«ÃIà›—9›ÃÞ |œ;øŸÓ>2<òïgÑòöqµyFÒŒ·aZ}7õ¶GÏ)&Þ&6ìþa#¹.GtVûõa0ž½tòöóö0Ö@nÀ€ãÜÿ4¦”{î¿·w|R¨ÚÀ>=­ ª6Ý7SGªØ(¿[,ý+ì·¼üF€à½ß­î6‹Mák3Œ Hâ~}ÇÍæ p\=ßi&¤ð_‹øS24Í7ÓÝfŒ´Mã©uzج͎‘³j‡NSwëýËãaÈoÇí)Šªt¬|û¸ÝeTÅ ‰Š¤cØ>¯¸ã£¿›[ØŸná1Øãå°Ù2/pžÐ_‚}^yÙ-çáÍ,(kšž@ñÔ‹ãÈÍTdÁïÖOÛçýa΂úÈq¦—=è´ÈöÍÙ‚g+¼5 ~•éXäÖêþÊqƒa~zub+’½±•ì¯ßˆ ˜¥˜þ¦ ÍèU8?T+v«1¶yDZ¬v§é»õ=œ³‡µ–1åýLZïn7û5MÉOÒpßUº?®@±ç¼õøA<,cˆ"ï`ý錓¹ÅÏ^ãðxjøµE¶ˆðéµõ'ïµ¼1ò@œåÀõ~e¤”˜Õg|ÿÓP 6xe½ì¦¾]iËj%@ƒ«·˱ÀoS-|cGcÀs–l‰xЛ#GÖÛì– ez^¯ïöFdØûœhÑ%b¤Ix~ñíëõ/¶qp/yzsþ°ãß)FÔ­Éð\cMÓ³v;Ýž¿Ù/ žÛ?öóÝ/ë}±=¶/lVxÁ†2þõ||ˆÓï@Á›ýÈÓ¿!"mГ1‡=øé?{Ô%îV¯¬3Ê¿:›ôWtQ¾ýõŠoÍ7ýñíaó´ùÇê 4ôCZ44"?D=®v÷k+çÚ^ëòâíêq=*Xô‰ÉF}ó¼¼Á®‘Ï›çûWW E~Íi@F }ûåççáõ õáÇÕŒ(%¥Z¤oÖï>f|]™…%¬_°ílo²K cHq }þ2§¸hôjÙ":Ôÿ)âõ¨×ÿ¬ü’šmôG5uÍK!¿{ƒnj»”Œwlhø›@¨/™ûü.ê÷W³^D úbý|¿Ù€yð_Ç‘#8ìÁO¿åþxÆ)›Çǵæ%Íûülžâ£ >>F ¼Å eÙ÷¿®¯ø“Oƒ£CKÍÂâk¡N šI¦è±Ì½ó?_·ÔÎl©}#ö¿ùòÆÌùË ¹>6pÌ’5g:çú|gfþ÷õ3—ܯŸåk,¸QÞ,‘!,{¢õj:ÒÀ¦éÜ%hÿËä>ýñl®Œä•D±¨ª<­Î9ûqóýyŒþ‹U{i`òP¢¬ôX/v^Ö¶ ýbÙâ> stream xœM”{PSgÆOÎù¤®Hâ@ݶұ¶U±®T­Õ*jkGŠ®µ¤ŠÈM•I”K IÈ{  ÈÍb‚@!\¤b@¹´”ÑZ­—±ì”m­k§vuª;¥ó…ýœqS»³ç9—?Î;Ïû|ÏûQþ³(‘H4;aKÌ+###g>1ûMk`ŽÌñ·.B‹Åƒ¯]šGÍ\ss$ÿ5ê5k—¯ˆ\ùú*ŠÚEÅP±K…P¡Tµ€ ¢æQÁ”˜’Pó© ¡=ÅP£¢ƒ¢'³âfùü4þ»è€×lt-§§˜ÓÏDê·¨¹ÏDcÅ”Þã[ØÎ+ÅÝ7±úfˆdË|²Iú$}ÆÑ켂 È4]Mi*®Íƒ´ý-mÚÎÝî›rNïäë€4ôɲbµ”Ìa „/®*Cåt34¶ÖB%T–V[Oö:Ý}è™úÇöÁ˜:iB ñ7ÁeôåOÐìÊß]Õê”.@tƒÙ^-ý™©6Ø‹T…' ˆ+|GIúËU ³b¡dBB™ÐÜg³–ߟ‘â·ãÙ8ӄƲÉã[Á6Wºøf@cCÇ–Hs˜5°¬dSÚ¼ôHDKñ¼“_Üioä,…Æ"ka}úˆ©P-yàtT4H%O ÿÍ´Òn„å ~!¼o—Mo ×GeœÎê—vW4º µµ…N„ß%›ØåLÜž¤w’öº‡¾ÿµõº«æk Ú<#°h€*íòÍ÷`£Rü¦…i\ç‡H¦º¦cYcoôq£>KúôßÌþÒhÇþ+ªaà ±ÿXŠç¯xL^þ ¡àPŠ_ RÆþÔÊSÊRŽgæMËO$y”´¡ã¢ŸdÌ5MõµW}{U; L;Âc¤r´ 1igÄl˜¤x/y}{•b| nÑ‚[íx%‹Ïñ—á{ÞW°è‘÷_4í48”œšÎR]@¾yº4T¯ÓëAƒ†l¬ä|9€\f~o[Ò‡õ àø”ñ^„wâàp¼(D2‰wà‡¬‰†¯ø;mŸ¹½Ã­£à·¶éD¦!72釛³º=îæ¾{<1Q«3¶íâ¶œ\ «acÅð–óïßÈýZ˜ð_8Ó·ñ‹Ò:¦ì¬¾EíJ»³¶çMØ{NdÇ#žD±ÌõÓœ¬Š^'‡l“œn™y'²Ò{¬AåR´™» Ï}p(|-‚Á8Ä%x± ¡ÿez-›A¬^º¢Ëòy JÚmä Vn¢³’S3²’c—þÌ"FGɃWk'×Ç€¼¹øÖùxðFMéºÚ:á˜ÃBÕöJh«É •ˆ¦%ý2>Ñ,³( “7œy®¤äSßdØ{o÷ÜýCˆ`ì&ükbŠ j­Z·'ëà^ØŠˆ}„éë7j/qõ—`&ß»ëBff´Á;ãèñk^Bs’‰Å/½Of¿çÙ6.—J ql£mÚ,æ K9ØàTq•®¥ÀßRàQ\9{QÔZEÜæh×Ojî´OÌJ&L0[Ü|RÑ26®Š=Åñz˜©¤¼´”cÆ2ƒÑBYŒfEu¨Ü™S#w /Ùµ‡N:þ˜ÇzðTïLÂq°! |axŒåÃ:DŽ…KLÅy…]g)-×YZªšêàä‘»T:²jòðõ2®Š¾ ·Ï }uõÌ/ðOx¨ÅoßJî?• ÄbŠÌ%qd©´© óžÄ`è….Gko¥Íj·8 ¿Æîeô;Ž®ÛhsÎÈ7ÒI®XoÝ­DÕô·ÑQR?¢x)šÄ‘~x)Žd“ÇS ¥ŸMð¶wŸó=—h0€ÉÈý>Q)þ“¯lRŠ%þ‚i «)3ê Ú¢¬P"&#„%Ãd>1htEPŒ4•Ú®®ÜÖf­Ã³pŶb W^ÁKB-ÖroC’&‡Æ®á$æ2“iásû<Ó3ýû±«0;CãÓÓlb©¬$5sý»j$lÇ*ž^‹>ŸxUõ% ÁhÕùŽï¯Úpü 8¬G‘·{^ZT*‹Ràei©I¿ðÕ§/³Bm`…qó8?n,ëû¤±îŒ½0fhYÃË!ähûMûõI†}Ê ka'ì÷–^+í2w»þGßoJVãüîúî „Ï,ýuè©“He¾½$Ü÷w¦ÖX“›¯)ÑsÛS6kcáq°Oé}Ž#ðÌùáß ¶å㮚.@ß]ŒÛ±fýÖ­R™lŸL&S©BKJ :(D¹¾h¦ Ëd´>Õ” rc6È‘ôPïà§Ã=·†ŽÁÂ/‘ÅÞ¿ÐZ§')@(”Þ”:ÔÛÖÞëÉsgظÿ߸¼ŒüIàëŸ1'<—ÍlÞjß{öLOu°ó.]½Ò™oÎåHË@¼bý;êLí‡NYƬ®29uÓ’û—¿È'!ñÆåKÕ4í“òLWES't¢t÷Á}GŽì'KÓï ‡áÅדFv´p ‡ÜžkF’‰[go\üa‘ÐÖ•ëˆ_rDRû±îs-Ons†›ËúUmœ3›¢þ G\â> stream xœµTKÓ@ ¾÷Î=7´™Ï{¸ñÒ²<–F 8 mhM ii÷×ã™$mVZ¸¡êñ|¶¿±?çWÆf<þÆÿU³àÙfñkÉ›«&{Z.ÎߣÍ<óF˜¬ü¶"0C%™•˜m™:+›Å'ØîóB8ƹs0š(4¬Éô’yòV‡¾nB_ïÛÑç5ÔÉV¦¡;Ë¿”T”RžŠÐ:”T¸\S™gûæçuŸ²„]^H!¨Ž†etQþÕaÌq—87L+7䀳¼üÂÍ šY«ífÄÜÉ‚Lié'&gTSun@)ù@i7ó õ—s{~à/ò‚3N±(L¤W´LkŸ”ÓkCFŽ•À 5?#Ko+#ƒÉzˆ}U~äZ1¯ÐAÈ‘XábO é õHÁF¶ÕÔw„%K„÷ðúš†¼QPoª®šîœ…çP§Ã›iÆÖÀªZ‡ÝñNÀ›Jq˦ÚÝäÂÒã Bh‰ÛéõMî0†“PàõŒ\h×Ã!v²Ì$·äÞëixýÞS±c$G›#€8ôíÔ¶yÏ?ƒàh>çy¡¦‡¼mG›˜ìB·©Š¯¡_åIÐÊÃvº5Ðw¡nëv=qì¾í»ñ@š\WÕÏYª*tü8/¬Š./«¶ê®¾—bÈâ`¦8ښ،HÿÈúrQ>ú‡mè%%uÒ)hˆHî] C­‘§z’‹èP ºó¡ü¾oq„aÒyü×âÐÀ±b„„¯‡s4Ü3®œ¼o‰¬ažOhÒDeõìžË¦î·qÞÒ§¦,ãh¥M»LZSD-¼ªÛuÕ5$²#Ú·_\#å(­tÐp™„.,\Q>Ìì$‘ñ;õ|ß>ì'My’ÒÖp3¢4B¿­NI¦áÿCˆ]è:"Ñ©ÛUW…CÊ¡¦dñIŽrŒe¶É‡aƒ--}[Ý«$’¨ýÿÔöj®‹‘“rþo:xGÖ3#¤ËHûôùô>]¡‹w/ÊÅýþ&7ˆ­endstream endobj 156 0 obj << /Type /XRef /Length 195 /Filter /FlateDecode /DecodeParms << /Columns 5 /Predictor 12 >> /W [ 1 3 1 ] /Info 3 0 R /Root 2 0 R /Size 157 /ID [<6ea21f412e2893c19df4493da166a308><1f8a7ac1ac0687e3a006513941078fd6>] >> stream xœcb&F~0ù‰ $À8JRDþgàµ:d³>…ê;ÙÑP¥4<%½OÙA!ÉÉ"ÙK@$ßuÉš"¥]A¤Ò°E°øvÉ– "™kA$#Xœl“˜|&¹@¤¨)XÍc°zOÉo yVÃ9 $UØ‚`‘»`5‚ RÈDò¶E.ƒÙÑ`צ‚Hîdiv'÷°^° lÀl°,gØöC RDdÇ?°HÓ¢< endstream endobj startxref 132091 %%EOF maxLik/inst/doc/using-maxlik.Rnw0000644000175100001440000010626014077525067016361 0ustar hornikusers\documentclass[a4paper]{article} \usepackage{amsmath} \usepackage{bbm} \usepackage[inline]{enumitem} \usepackage[T1]{fontenc} \usepackage[bookmarks=TRUE, colorlinks, pdfpagemode=none, pdfstartview=FitH, citecolor=black, filecolor=black, linkcolor=blue, urlcolor=black, ]{hyperref} \usepackage{graphicx} \usepackage{icomma} \usepackage[utf8]{inputenc} \usepackage{mathtools} % for extended pderiv arguments \usepackage{natbib} \usepackage{xargs} % for extended pderiv arguments \usepackage{xspace} % \SweaveUTF8 \newcommand{\COii}{\ensuremath{\mathit{CO}_{2}}\xspace} \DeclareMathOperator*{\E}{\mathbbm{E}}% expectation \newcommand*{\mat}[1]{\mathsf{#1}} \newcommand{\likelihood}{\mathcal{L}}% likelihood \newcommand{\loglik}{\ell}% log likelihood \newcommand{\maxlik}{\texttt{maxLik}\xspace} \newcommand{\me}{\mathrm{e}} % Konstant e=2,71828 \newcommandx{\pderiv}[3][1={}, 2={}]{\frac{\partial^{#2}{#1}}{\mathmbox{\partial{#3}}^{#2}}} % #1: function to differentiate (optional, empty = write after the formula) % #2: the order of differentiation (optional, empty=1) % #3: the variable to differentiate wrt (mandatory) \newcommand{\R}{\texttt{R}\xspace} \newcommand*{\transpose}{^{\mkern-1.5mu\mathsf{T}}} \renewcommand*{\vec}[1]{\boldsymbol{#1}} % \VignetteIndexEntry{Maximum likelihood estimation with maxLik} \title{Maximum Likelihood Estimation with \emph{maxLik}} \author{Ott Toomet} \begin{document} \maketitle <>= library(maxLik) set.seed(6) @ \section{Introduction} \label{sec:introduction} This vignette is intended for users who are familiar with concepts of likelihood and with the related methods, such as information equality and BHHH approximation, and with \R language. The vignette focuses on \maxlik usage and does not explain the underlying mathematical concepts. Potential target group includes researchers, graduate students, and industry practitioners who want to apply their own custom maximum likelihood estimators. If you need a refresher, consult the accompanied vignette ``Getting started with maximum likelihood and \maxlik''. The next section introduces the basic usage, including the \maxlik function, the main entry point for the package; gradients; different optimizers; and how to control the optimization behavior. These are topics that are hard to avoid when working with applied ML estimation. Section~\ref{sec:advanced-usage} contains a selection of more niche topics, including arguments to the log-likelihood function, other types of optimization, testing condition numbers, and constrained optimization. \section{Basic usage} \label{sec:basic-usage} \subsection{The maxLik function} \label{sec:maxlik-function} The main entry point to \maxlik functionality is the function of the same name, \verb|maxLik|. It is a wrapper around the underlying optimization algorithms that ensures that the returned object is of the right class so one can use the convenience methods, such as \verb|summary| or \verb|logLik|. It is important to keep in mind that \maxlik \emph{maximizes}, not minimizes functions. The basic usage of the function is very simple: just pass the log-likelihood function (argument \verb|logLik|) and the start value (argument \verb|start|). Let us demonstrate the basic usage by estimating the normal distribution parameters. We create 100 standard normals, and estimate the best fit mean and standard deviation. Instead of explicitly coding the formula for log-likelihood, we rely on the \R function \verb|dnorm| instead (see Section~\ref{sec:different-optimizers} for a version that does not use \verb|dnorm|): <<>>= x <- rnorm(100) # data. true mu = 0, sigma = 1 loglik <- function(theta) { mu <- theta[1] sigma <- theta[2] sum(dnorm(x, mean=mu, sd=sigma, log=TRUE)) } m <- maxLik(loglik, start=c(mu=1, sigma=2)) # give start value somewhat off summary(m) @ The algorithm converged in 7 iterations and one can check that the results are equal to the sample mean and variance.\footnote{Note that \R function \texttt{var} returns the unbiased estimator by using denominator $n-1$, the ML estimator is biased with denominator $n$. } This example demonstrates a number of key features of \verb|maxLik|: \begin{itemize} \item The first argument of the likelihood must be the parameter vector. In this example we define it as $\vec{\theta} = (\mu, \sigma)$, and the first lines of \verb|loglik| are used to extract these values from the vector. \item The \verb|loglik| function returns a single number, sum of individual log-likelihood contributions of individual $x$ components. (It may also return the components individually, see BHHH method in Section~\ref{sec:different-optimizers} below.) \item Vector of start values must be of correct length. If its components are named, those names are also displayed in \verb|summary| (and for \verb|coef| and \verb|stdEr|, see below). \item \verb|summary| method displays a handy summary of the results, including the convergence message, the estimated values, and statistical significance. \item \verb|maxLik| (and other auxiliary optimizers in the package) is a \emph{maximizer}, not minimizer. \end{itemize} As we did not specify the optimizer, \verb|maxLik| picked Newton-Raphson by default, and computed the necessary gradient and Hessian matrix numerically. \bigskip Besides summary, \verb|maxLik| also contains a number of utility functions to simplify handling of estimated models: \begin{itemize} \item \verb|coef| extracts the model coefficients: <<>>= coef(m) @ \item \verb|stdEr| returns the standard errors (by inverting Hessian): <<>>= stdEr(m) @ \item Other functions include \verb|logLik| to return the log-likelihood value, \verb|returnCode| and \verb|returnMessage| to return the convergence code and message respectively, and \verb|AIC| to return Akaike's information criterion. See the respective documentation for more information. \item One can also query the number of observations with \verb|nObs|, but this requires likelihood values to be supplied by observation (see the BHHH method in Section~\ref{sec:different-optimizers} below). \end{itemize} \subsection{Supplying analytic gradient} \label{sec:supplying-gradients} The simple example above worked fast and well. In particular, the numeric gradient \verb|maxLik| computed internally did not pose any problems. But users are strongly advised to supply analytic gradient, or even better, both the gradient and the Hessian matrix. More complex problems may be intractably slow, converge to a sub-optimal solution, or not converge at all if numeric gradients are noisy. Needless to say, unreliable Hessian also leads to unreliable inference. Here we show how to supply gradient to the \verb|maxLik| function. We demonstrate this with a linear regression example. Non-linear optimizers perform best in regions where level sets (contours) are roughly circular. In the following example we use data in a very different scale and create the log-likelihood function with extremely elongated elliptical contours. Now Newton-Raphson algorithm fails to converge when relying on numeric derivatives, but works well with analytic gradient. % using matrix notation We combine three vectors, $\vec{x}_{1}$, $\vec{x}_{2}$ and $\vec{x}_{3}$, created at a very different scale, into the design matrix $\mat{X} = \begin{pmatrix} \vec{x}_{1} & \vec{x}_{2} & \vec{x}_{3} \end{pmatrix}$ and compute $\vec{y}$ as \begin{equation} \label{eq:linear-regression-matrix} \vec{y} = \mat{X} \begin{pmatrix} 1 \\ 1 \\ 1 \end{pmatrix} + \vec{\epsilon}. \end{equation} We create $\vec{x}_{1}$, $\vec{x}_{2}$ and $\vec{x}_{3}$ as random normals with standard deviation of 1, 1000 and $10^{7}$ respectively, and let $\vec{\epsilon}$ be standard normal disturbance term: <<>>= ## create 3 variables with very different scale X <- cbind(rnorm(100), rnorm(100, sd=1e3), rnorm(100, sd=1e7)) ## note: correct coefficients are 1, 1, 1 y <- X %*% c(1,1,1) + rnorm(100) @ Next, we maximize negative of sum of squared errors \emph{SSE} (remember, \verb|maxLik| is a maximizer not minimizer) \begin{equation} \label{eq:ols-sse-matrix} \mathit{SSE}(\vec{\beta}) = (\vec{y} - \mat{X} \cdot \vec{\beta})^{\transpose} (\vec{y} - \mat{X} \cdot \vec{\beta}) \end{equation} as this is equivalent to likelihood maximization: <<>>= negSSE <- function(beta) { e <- y - X %*% beta -crossprod(e) # note '-': we are maximizing } m <- maxLik(negSSE, start=c(0,0,0)) # give start values a bit off summary(m, eigentol=1e-15) @ As one can see, the algorithm gets stuck and fails to converge, the last parameter value is also way off from the correct value $(1, 1, 1)$. We have amended summary with an extra argument, \verb|eigentol=1e-15|. Otherwise \maxlik refuses to compute standard errors for near-singular Hessian, see the documentation of \verb|summary.maxLik|. It makes no difference right here but we want to keep it consistent with the two following examples. Now let's improve the model performance with analytic gradient. The gradient of \emph{SSE} can be written as \begin{equation} \label{eq:ols-sse-gradient-matrix} \pderiv{\vec{\beta}}\mathit{SSE}(\vec{\beta}) = -2(\vec{y} - \mat{X}\vec{\beta})^{\transpose} \mat{X}. \end{equation} \maxlik uses numerator layout, i.e. the derivative of the scalar log-likelihood with respect to the column vector of parameters is a row vector. We can code the negative of it as <<>>= grad <- function(beta) { 2*t(y - X %*% beta) %*% X } @ We can add gradient to \verb|maxLik| as an additional argument \verb|grad|: <<>>= m <- maxLik(negSSE, grad=grad, start=c(0,0,0)) summary(m, eigentol=1e-15) @ Now the algorithm converges rapidly, and the estimate is close to the true value. Let us also add analytic Hessian, in this case it is \begin{equation} \label{eq:ols-sse-hessian-matrix} \frac{\partial^{2}}{\partial\vec{\beta}\,\partial\vec{\beta}^{\transpose}} \mathit{SSE}(\vec{\beta}) = 2\mat{X}^{\transpose}\mat{X} \end{equation} and we implement the negative of it as <<>>= hess <- function(beta) { -2*crossprod(X) } @ Analytic Hessian matrix can be included with the argument \verb|hess|, and now the results are <>= m <- maxLik(negSSE, grad=grad, hess=hess, start=c(0,0,0)) summary(m, eigentol=1e-15) @ Analytic Hessian did not change the convergence behavior here. Note that as the loss function is quadratic, Newton-Raphson should provide the correct solution in a single iteration only. However, this example has numerical issues when inverting near-singular Hessian. One can easily check that when creating covariates in a less extreme scale, then the convergence is indeed immediate. While using separate arguments \texttt{grad} and \texttt{hess} is perhaps the most straightforward way to supply gradients, \maxlik also supports gradient and Hessian supplied as log-likelihood attributes. This is motivated by the fact that computing gradient often involves a number of similar computations as computing log-likelihood, and one may want to re-use some of the results. We demonstrate this on the same example, by writing a version of log-likelihood function that also computes the gradient and Hessian: <>= negSSEA <- function(beta) { ## negative SSE with attributes e <- y - X %*% beta # we will re-use 'e' sse <- -crossprod(e) # note '-': we are maximizing attr(sse, "gradient") <- 2*t(e) %*% X attr(sse, "Hessian") <- -2*crossprod(X) sse } m <- maxLik(negSSEA, start=c(0,0,0)) summary(m, eigentol=1e-15) @ The log-likelihood with ``gradient'' and ``Hessian'' attributes, \verb|negSSEA|, computes log-likelihood as above, but also computes its gradient, and adds it as attribute ``gradient'' to the log-likelihood. This gives a potential efficiency gain as the residuals $\vec{e}$ are re-used. \maxlik checks the presence of the attribute, and if it is there, it uses the provided gradient. In real applications the efficiency gain will depend on the amount of computations re-used, and the number of likelihood calls versus gradient calls. While analytic gradients are always helpful and often necessary, they may be hard to derive and code. In order to help to derive and debug the analytic gradient, another provided function, \verb|compareDerivatives|, takes the log-likelihood function, analytic gradent, and compares the numeric and analytic gradient. As an example, we compare the log-likelihood and gradient functions we just coded: <<>>= compareDerivatives(negSSE, grad, t0=c(0,0,0)) # 't0' is the parameter value @ The function prints the analytic gradient, numeric gradient, their relative difference, and the largest relative difference value (in absolute value). The latter is handy in case of large gradient vectors where it may be hard to spot a lonely component that is off. In case of reasonably smooth functions, expect the relative difference to be smaller than $10^{-7}$. But in this example the numerical gradients are clearly problematic. \verb|compareDerivatives| supports vector functions, so one can test analytic Hessian in the same way by calling \verb|compareDerivatives| with \verb|gradlik| as the first argument and the analytic hessian as the second argument. \subsection{Different optimizers} \label{sec:different-optimizers} By default, \maxlik uses Newton-Raphson optimizer but one can easily swap the optimizer by \verb|method| argument. The supported optimizers include ``NR'' for the default Newton-Raphson, ``BFGS'' for gradient-only Broyden-Fletcher-Goldfarb-Shannon, ``BHHH'' for the information-equality based Berndt-Hall-Hall-Hausman, and ``NM'' for gradient-less Nelder-Mead. Different optimizers may be based on a very different approach, and certain concepts, such as \emph{iteration}, may mean quite different things. For instance, although Newton-Raphson is a simple, fast and intuitive method that approximates the function with a parabola, it needs to know the Hessian matrix (the second derivatives). This is usually even harder to program than gradient, and even slower and more error-prone when computed numerically. Let us replace NR with gradient-only BFGS method. It is a quasi-Newton method that computes its own internal approximation of the Hessian while relying only on gradients. We re-use the data and log-likelihood function from the first example where we estimated normal distribution parameters: <>= m <- maxLik(loglik, start=c(mu=1, sigma=2), method="BFGS") summary(m) @ One can see that the results were identical, but while NR converged in 7 iterations, it took 20 iterations for BFGS. In this example the BFGS approximation errors were larger than numeric errors when computing Hessian, but this may not be true for more complex objective functions. In a similar fashion, one can simply drop in most other provided optimizers. One method that is very popular for ML estimation is BHHH. We discuss it here at length because that method requires both log-likelihood and gradient function to return a somewhat different value. The essence of BHHH is information equality, the fact that in case of log-likelihood function $\loglik(\theta)$, the expected value of Hessian at the true parameter value $\vec{\theta}_{0}$ can be expressed through the expected value of the outer product of the gradient: \begin{equation} \label{eq:information-equality} \E \left[ \frac{\partial^2 l(\vec{\theta})} {\partial\vec{\theta}\, \partial\vec{\theta}^{\transpose}} \right]_{\vec{\theta} = \vec{\theta}_0} = - \E \left[ \left. \frac{\partial l(\vec{\theta})} {\partial\vec{\theta}^{\transpose}} \right|_{\vec{\theta} = \vec{\theta}_0} \cdot \left. \frac{\partial l(\vec{\theta})} {\partial\vec{\theta}} \right|_{\vec{\theta} = \vec{\theta}_0} \right]. \end{equation} Hence we can approximate Hessian by the average outer product of the gradient. Obviously, this is only an approximation, and it is less correct when we are far from the true value $\vec{\theta}_{0}$. Note also that when approximating expected value with average we rely on the assumption that the observations are independent. This may not be true for certain type of data, such as time series. However, in order to compute the average outer product, we need to compute gradient \emph{by observation}. Hence it is not enough to just return a single gradient vector, we have to compute a matrix where rows correspond to individual data points and columns to the gradient components. We demonstrate BHHH method by replicating the normal distribution example from above. Remember, the normal probability density is \begin{equation} \label{eq:normal-pdf} f(x; \mu, \sigma) = \frac{1}{\sqrt{2\pi}} \frac{1}{\sigma} \, \me^{ -\displaystyle\frac{1}{2} \frac{(x - \mu)^{2}}{\sigma^{2}} }. \end{equation} and hence the log-likelihood contribution of $x$ is \begin{equation} \label{eq:normal-loglik} \loglik(\mu, \sigma; x) = - \log{\sqrt{2\pi}} - \log \sigma - \frac{1}{2} \frac{(x - \mu)^{2}}{\sigma^{2}} \end{equation} and its gradient \begin{equation} \label{eq:normal-loglik-gradient} \begin{split} \pderiv{\mu} \loglik(\mu, \sigma; x) &= \frac{1}{\sigma^{2}}(x - \mu) \\ \pderiv{\sigma} \loglik(\mu, \sigma; x) &= -\frac{1}{\sigma} + \frac{1}{\sigma^{2}}(x - \mu)^{2}. \end{split} \end{equation} We can code these two functions as <<>>= loglik <- function(theta) { mu <- theta[1] sigma <- theta[2] N <- length(x) -N*log(sqrt(2*pi)) - N*log(sigma) - sum(0.5*(x - mu)^2/sigma^2) # sum over observations } gradlikB <- function(theta) { ## BHHH-compatible gradient mu <- theta[1] sigma <- theta[2] N <- length(x) # number of observations gradient <- matrix(0, N, 2) # gradient is matrix: # N datapoints (rows), 2 components gradient[, 1] <- (x - mu)/sigma^2 # first column: derivative wrt mu gradient[, 2] <- -1/sigma + (x - mu)^2/sigma^3 # second column: derivative wrt sigma gradient } @ Note that in this case we do not sum over the individual values in the gradient function (but we still do in log-likelihood). Instead, we fill the rows of the $N\times2$ gradient matrix with the values observation-wise. The results are similar to what we got above and the convergence speed is in-between that of Newton-Raphson and BFGS: \label{code:bhhh-example} <<>>= m <- maxLik(loglik, gradlikB, start=c(mu=1, sigma=2), method="BHHH") summary(m) @ In case we do not have time and energy to code the analytic gradient, we can let \maxlik compute the numeric one for BHHH too. In this case we have to supply the log-likelihood by observation. This essentially means we remove summing from the original likelihood function: <<>>= loglikB <- function(theta) { mu <- theta[1] sigma <- theta[2] -log(sqrt(2*pi)) - log(sigma) - 0.5*(x - mu)^2/sigma^2 # no summing here # also no 'N*' terms as we work by # individual observations } m <- maxLik(loglikB, start=c(mu=1, sigma=2), method="BHHH") summary(m) @ Besides of relying on information equality, BHHH is essentially the same algorithm as NR. As the Hessian is just approximated, its is converging at a slower pace than NR with analytic Hessian. But when relying on numeric derivatives only, BHHH may be more reliable. For convenience, the other methods also support observation-wise gradients and log-likelihood values, those numbers are just summed internally. So one can just code the problem in an BHHH-compatible manner and use it for all supported optimizers. \maxlik package also includes stochastic gradient ascent optimizer. As that method is rarely used for ML estimation, it cannot be supplied through the ``method'' argument. Consult the separate vignette ``Stochastic gradient ascent in \maxlik''. \subsection{Control options} \label{sec:control-options} \maxlik supports a number of control options, most of which can be supplied through \verb|control=list(...)| method. Some of the most important options include \verb|printLevel| to control debugging information, \verb|iterLim| to control the maximum number of iterations, and various \verb|tol|-parameters to control the convergence tolerances. For instance, we can limit the iterations to two, while also printing out the parameter estimates at each step. We use the previous example with BHHH optimizer: <<>>= m <- maxLik(loglikB, start=c(mu=1, sigma=2), method="BHHH", control=list(printLevel=3, iterlim=2)) summary(m) @ The first option, \verb|printLevel=3|, make \verb|maxLik| to print out parameters, gradient a few other bits of information at every step. Larger levels output more information, printlevel 1 only prints the first and last parameter values. The output from \maxlik-implemented optimizers is fairly consistent, but methods that call optimizers in other packages, such as BFGS, may output debugging information in a quite different way. The second option, \verb|iterLim=2| stops the algorithm after two iterations. It returns with code 4: iteration limit exceeded. Other sets of handy options are the convergence tolerances. There are three convergence tolerances: \begin{description} \item[tol] This measures the absolute convergence tolerance. Stop if successive function evaluations differ by less than \emph{tol} (default $10^{-8}$). \item[reltol] This is somewhat similar to \emph{tol}, but relative to the function value. Stop if successive function evaluations differ by less than $\mathit{reltol}\cdot (\loglik(\vec{\theta}) + \mathit{reltol})$ (default \verb|sqrt(.Machine[["double.eps"]])|, may be approximately \Sexpr{formatC(sqrt(.Machine[["double.eps"]]), digits=1)} on a modern computer). \item[gradtol] stop if the (Euclidean) norm of the gradient is smaller than this value (default $10^{-6}$). \end{description} Default tolerance values are typically good enough, but in certain cases one may want to adjust these. For instance, in case of function values are very large, one may rely only on tolerance, and ignore relative tolerance and gradient tolerance criteria. A simple way to achieve this is to set both \emph{reltol} and \emph{gradtol} to zero. In that case these two conditions are never satisfied and the algorithm stops only when the absolute convergence criterion is fulfilled. For instance, in the previous case we get: <<>>= m <- maxLik(loglikB, start=c(mu=1, sigma=2), method="BHHH", control=list(reltol=0, gradtol=0)) summary(m) @ When comparing the result with that on Page~\pageref{code:bhhh-example} we can see that the optimizer now needs more iterations and it stops with a return code that is related to tolerance, not relative tolerance. Note that BFGS and other optimizers that are based on the \verb|stats::optim| does not report the convergence results in a similar way as BHHH and NR, the algorithms provided by the \maxlik package. Instead of tolerance limits or gradient close to zero message, we hear about ``successful convergence''. Stochastic gradient ascent relies on completely different convergence criteria. See the dedicated vignette ``Stochastic Gradient Ascent in \maxlik''. \section{Advanced usage} \label{sec:advanced-usage} This section describes more advanced and less frequently used aspects of \maxlik. \subsection{Additional arguments to the log-likelihood function} \label{sec:additional-arguments-loglik} \maxlik expects the first argument of log-likelihood function to be the parameter vector. But the function may have more arguments. Those can be passed as additional named arguments to \verb|maxLik| function. For instance, let's change the log-likelihood function in a way that it expects data $\vec{x}$ to be passed as an argument \verb|x|. Now we have to call \maxlik with an additional argument \verb|x=...|: <<>>= loglik <- function(theta, x) { mu <- theta[1] sigma <- theta[2] sum(dnorm(x, mean=mu, sd=sigma, log=TRUE)) } m <- maxLik(loglik, start=c(mu=1, sigma=2), x=x) # named argument 'x' will be passed # to loglik summary(m) @ This approach only works if the argument names do not overlap with \verb|maxLik|'s arguments' names. If that happens, it prints an informative error message. \subsection{Maximizing other functions} \label{sec:maximizing-other-functions} \verb|maxLik| function is basically a wrapper around a number of maximization algorithms, and a set of likelihood-related methods, such as standard errors. However, from time-to-time we need to optimize other functions where inverting the Hessian to compute standard errors is not applicable. In such cases one can call the included optimizers directly, using the form \verb|maxXXX| where \verb|XXX| stands for the name of the method, e.g. \verb|maxNR| for Newton-Rapshon (\verb|method="NR"|) and \verb|maxBFGS| for BFGS. There is also \verb|maxBHHH| although the information equality--based BHHH is not correct if we do not work with log-likelihood functions. The arguments for \verb|maxXXX|-functions are largely similar to those for \maxlik, the first argument is the function, and one also has to supply start values. Let us demonstrate this functionality by optimizing 2-dimensional bell curve, \begin{equation} \label{eq:2d-bell-curve} f(x, y) = \me^{-x^{2} - y^{2}}. \end{equation} We code this function and just call \verb|maxBFGS| on it: <<>>= f <- function(theta) { x <- theta[1] y <- theta[2] exp(-x^2 - y^2) # optimum at (0, 0) } m <- maxBFGS(f, start=c(1,1)) # give start value a bit off summary(m) @ Note that the summary output is slightly different: it reports the parameter and gradient value, appropriate for a task that is not likelihood optimization. Behind the scenes, this is because the \verb|maxXXX|-functions return an object of \emph{maxim}-class, not \emph{maxLik}-class. \subsection{Testing condition numbers} \label{sec:testing-condition-numbers} Analytic gradient we demonstrated in Section~\ref{sec:supplying-gradients} helps to avoid numerical problems. But not all problems can or should be solved by analytic gradients. For instance, multicollinearity should be addressed on data or model level. \maxlik provides a helper function, \verb|condiNumbers|, to detect such problems. We demonstrate this by creating a highly multicollinear dataset and estimating a linear regression model. We re-use the regression code from Section~\ref{sec:supplying-gradients} but this time we create multicollinear data in similar scale. <<>>= ## create 3 variables, two independent, third collinear x1 <- rnorm(100) x2 <- rnorm(100) x3 <- x1 + x2 + rnorm(100, sd=1e-6) # highly correlated w/x1, x2 X <- cbind(x1, x2, x3) y <- X %*% c(1, 1, 1) + rnorm(100) m <- maxLik(negSSEA, start=c(x1=0, x2=0, x3=0)) # negSSEA: negative sum of squared errors # with gradient, hessian attribute summary(m) @ As one can see, the model converges but the standard errors are missing (because Hessian is not negative definite). In such case we may learn more about the problem by testing the condition numbers $\kappa$ of either the design matrix $\mat{X}$ or of the Hessian matrix. It is instructive to test not just the whole matrix, but to do it column-by-column, and see where the number suddenly jumps. This hints which variable does not play nicely with the rest of data. \verb|condiNumber| provides such functionality. First, we test the condition number of the design matrix: <<>>= condiNumber(X) @ We can see that when only including $\vec{x}_{1}$ and $\vec{x}_{2}$ into the design, the condition number is 1.35, far from any singularity-related problems. However, adding $\vec{x}_{3}$ to the matrix causes $\kappa$ to jump to over 5 millions. This suggests that $\vec{x}_{3}$ is highly collinear with $\vec{x}_{1}$ and $\vec{x}_{2}$. In this example the problem is obvious as this is how we created $\vec{x}_{3}$, in real applications one often needs further analysis. For instance, the problem may be in categorical values that contain too few observations or complex fixed effects that turn out to be perfectly multicollinear. A good suggestion is to estimate a linear regression model where one explains the offending variable using all the previous variables. In this example we might estimate \verb|lm(x3 ~ x1 + x2)| and see which variables help to explain $\vec{x}_{3}$ perfectly. Sometimes the design matrix is fine but the problem arises because data and model do not match. In that case it may be more informative to test condition number of Hessian matrix instead. The example below creates a linearly separated set of observations and estimates this with logistic regression. As a refresher, the log-likelihood of logistic regression is \begin{equation} \label{eq:logistic-loglik} \loglik(\beta) = \sum_{i: y_{i} = 1} \log\Lambda(\vec{x}_{i}^{\transpose} \vec{\beta}) + \sum_{i: y_{i} = 0} \log\Lambda(-\vec{x}_{i}^{\transpose} \vec{\beta}) \end{equation} where $\Lambda(x) = 1/(1 + \exp(-x))$ is the logistic cumulative distribution function. We implement it using \R function \verb|plogis| <<>>= x1 <- rnorm(100) x2 <- rnorm(100) x3 <- rnorm(100) X <- cbind(x1, x2, x3) y <- X %*% c(1, 1, 1) > 0 # y values 1/0 linearly separated loglik <- function(beta) { link <- X %*% beta sum(ifelse(y > 0, plogis(link, log=TRUE), plogis(-link, log=TRUE))) } m <- maxLik(loglik, start=c(x1=0, x2=0, x3=0)) summary(m) @ Not surprisingly, all coefficients tend to infinity and inference is problematic. In this case the design matrix does not show any issues: <<>>= condiNumber(X) @ But the Hessian reveals that including $\vec{x}_{3}$ in the model is still problematic: <<>>= condiNumber(hessian(m)) @ Now the problem is not multicollinearity but the fact that $\vec{x}_{3}$ makes the data linearly separable. In such cases we may want to adjust our model or estimation strategy. \subsection{Fixed parameters and constrained optimization} \label{sec:fixed-parameters} \maxlik supports three types of constrains. The simplest case just keeps certain parameters' values fixed. The other two, general linear equality and inequality constraints are somewhat more complex. Occasionally we want to treat one of the model parameters as constant. This can be achieved in a very simple manner, just through the argument \verb|fixed|. It must be an index vector, either numeric, such as \verb|c(2,4)|, logical as \verb|c(FALSE, TRUE, FALSE, TRUE)|, or character as \verb|c("beta2", "beta4")| given \verb|start| is a named vector. We revisit the first example of this vignette and estimate the normal distribution parameters again. However, this time we fix $\sigma = 1$: <<>>= x <- rnorm(100) loglik <- function(theta) { mu <- theta[1] sigma <- theta[2] sum(dnorm(x, mean=mu, sd=sigma, log=TRUE)) } m <- maxLik(loglik, start=c(mu=1, sigma=1), fixed="sigma") # fix the component named 'sigma' summary(m) @ The result has $\sigma$ exactly equal to $1$, it's standard error $0$, and $t$ value undefined. The fixed components are ignored when computing gradients and Hessian in the optimizer, essentially reducing the problem from 2-dimensional to 1-dimensional. Hence the inference for $\mu$ is still correct. Next, we demonstrate equality constraints. We take the two-dimensional function we used in Section~\ref{sec:maximizing-other-functions} and add constraints $x + y = 1$. The constraint must be described in matrix form $\mat{A}\,\vec{\theta} + \vec{B} = 0$ where $\vec{\theta}$ is the parameter vector and matrix $\mat{A}$ and vector $\vec{B}$ describe the constraints. In this case we can write \begin{equation} \label{eq:equality-constraints} \begin{pmatrix} 1 & 1 \end{pmatrix} \cdot \begin{pmatrix} x \\ y \end{pmatrix} + \begin{pmatrix} -1 \end{pmatrix} = 0, \end{equation} i.e. $\mat{A} = (1 \; 1)$ and $\vec{B} = -1$. These values must be supplied to the optimizer argument \verb|constraints|. This is a list with components names \verb|eqA| and \verb|eqB| for $\mat{A}$ and $\vec{B}$ accordingly. We do not demonstrate this with a likelihood example as no corrections to the Hessian matrix is done and hence the standard errors are incorrect. But if you are not interested in likelihood-based inference, it works well: <<>>= f <- function(theta) { x <- theta[1] y <- theta[2] exp(-x^2 - y^2) # optimum at (0, 0) } A <- matrix(c(1, 1), ncol=2) B <- -1 m <- maxNR(f, start=c(1,1), constraints=list(eqA=A, eqB=B)) summary(m) @ The problem is solved using sequential unconstrained maximization technique (SUMT). The idea is to add a small penalty for the constraint violation, and to slowly increase the penalty until violations are prohibitively expensive. As the example indicates, the solution is extremely close to the constraint line. The usage of inequality constraints is fairly similar. We have to code the inequalities as $\mat{A}\,\vec{\theta} + \vec{B} > 0$ where the matrices $\mat{A}$ and $\vec{B}$ are defined as above. Let us optimize the function over the region $x + y > 1$. In matrix form this will be \begin{equation} \label{eq:inequality-constraints-1} \begin{pmatrix} 1 & 1 \end{pmatrix} \cdot \begin{pmatrix} x \\ y \end{pmatrix} + \begin{pmatrix} -1 \end{pmatrix} > 0. \end{equation} Supplying the constraints is otherwise similar to the equality constraints, just the constraints-list components must be called \verb|ineqA| and \verb|ineqB|. As \verb|maxNR| does not support inequality constraints, we use \verb|maxBFGS| instead. The corresponding code is <<>>= A <- matrix(c(1, 1), ncol=2) B <- -1 m <- maxBFGS(f, start=c(1,1), constraints=list(ineqA=A, ineqB=B)) summary(m) @ Not surprisingly, the result is exactly the same as in case of equality constraints, in this case the optimum is found at the boundary line, the same line what we specified when demonstrating the equality constraints. One can supply more than one set of constraints, in that case these all must be satisfied at the same time. For instance, let's add another condition, $x - y > 1$. This should be coded as another line of $\mat{A}$ and another component of $\vec{B}$, in matrix form the constraint is now \begin{equation} \label{eq:inequality-constraints-2} \begin{pmatrix} 1 & 1\\ 1 & -1 \end{pmatrix} \cdot \begin{pmatrix} x \\ y \end{pmatrix} + \begin{pmatrix} -1 \\ -1 \end{pmatrix} > \begin{pmatrix} 0 \\ 0 \end{pmatrix} \end{equation} where ``>'' must be understood as element-wise operation. We also have to ensure the initial value satisfies the constraint, so we choose $\vec{\theta}_{0} = (2, 0)$. The code will be accordingly: <<>>= A <- matrix(c(1, 1, 1, -1), ncol=2) B <- c(-1, -1) m <- maxBFGS(f, start=c(2, 0), constraints=list(ineqA=A, ineqB=B)) summary(m) @ The solution is $(1, 0)$ the closest point to the origin where both constraints are satisfied. \bigskip This example concludes the \maxlik usage introduction. For more information, consult the fairly extensive documentation, and the other vignettes. % \bibliographystyle{apecon} % \bibliography{maxlik} \end{document} maxLik/inst/doc/intro-to-maximum-likelihood.R0000644000175100001440000001224614600010407020726 0ustar hornikusers### R code from vignette source 'intro-to-maximum-likelihood.Rnw' ################################################### ### code chunk number 1: foo ################################################### options(keep.source = TRUE, width = 60, try.outFile=stdout() # make try to produce error messages ) set.seed(34) ################################################### ### code chunk number 2: intro-to-maximum-likelihood.Rnw:237-239 ################################################### NH <- 3 NT <- 7 ################################################### ### code chunk number 3: intro-to-maximum-likelihood.Rnw:245-248 ################################################### loglik <- function(p) { NH*log(p) + NT*log(1-p) } ################################################### ### code chunk number 4: intro-to-maximum-likelihood.Rnw:260-263 ################################################### library(maxLik) m <- maxLik(loglik, start=0.5) summary(m) ################################################### ### code chunk number 5: intro-to-maximum-likelihood.Rnw:501-505 ################################################### x1 <- rnorm(1) # centered around 0 x2 <- rnorm(1) x1 x2 ################################################### ### code chunk number 6: intro-to-maximum-likelihood.Rnw:509-512 ################################################### loglik <- function(mu) { -2*log(sqrt(2*pi)) - 0.5*((x1 - mu)^2 + (x2 - mu)^2) } ################################################### ### code chunk number 7: intro-to-maximum-likelihood.Rnw:516-518 ################################################### m <- maxLik(loglik, start=0) summary(m) ################################################### ### code chunk number 8: intro-to-maximum-likelihood.Rnw:521-522 ################################################### (x1 + x2)/2 ################################################### ### code chunk number 9: intro-to-maximum-likelihood.Rnw:612-614 ################################################### data(CO2) hist(CO2$uptake) ################################################### ### code chunk number 10: intro-to-maximum-likelihood.Rnw:621-628 ################################################### loglik <- function(theta) { mu <- theta[1] sigma <- theta[2] N <- nrow(CO2) -N*log(sqrt(2*pi)) - N*log(sigma) - 0.5*sum((CO2$uptake - mu)^2/sigma^2) } ################################################### ### code chunk number 11: intro-to-maximum-likelihood.Rnw:647-649 ################################################### m <- maxLik(loglik, start=c(mu=30, sigma=10)) summary(m) ################################################### ### code chunk number 12: intro-to-maximum-likelihood.Rnw:769-782 ################################################### loglik <- function(theta) { beta0 <- theta[1] beta1 <- theta[2] sigma <- theta[3] N <- nrow(CO2) ## compute new mu based on beta1, beta2 mu <- beta0 + beta1*CO2$conc ## use this mu in a similar fashion as previously -N*log(sqrt(2*pi)) - N*log(sigma) - 0.5*sum((CO2$uptake - mu)^2/sigma^2) } m <- maxLik(loglik, start=c(beta0=30, beta1=0, sigma=10)) summary(m) ################################################### ### code chunk number 13: intro-to-maximum-likelihood.Rnw:792-793 ################################################### summary(lm(uptake ~ conc, data=CO2)) ################################################### ### code chunk number 14: plotSurface ################################################### loglik <- function(theta) { mu <- theta[1] sigma <- theta[2] N <- nrow(CO2) -N*log(sqrt(2*pi)) - N*log(sigma) - 0.5*sum((CO2$uptake - mu)^2/sigma^2) } m <- maxLik(loglik, start=c(mu=30, sigma=10)) params <- coef(m) np <- 33 # number of points mu <- seq(6, 36, length.out=np) sigma <- seq(5, 50, length.out=np) X <- as.matrix(expand.grid(mu=mu, sigma=sigma)) ll <- matrix(apply(X, 1, loglik), nrow=np) levels <- quantile(ll, c(0.05, 0.4, 0.6, 0.8, 0.9, 0.97)) # where to draw the contours colors <- colorRampPalette(c("Blue", "White"))(30) par(mar=c(0,0,0,0), mgp=2:0) ## Perspective plot if(require(plot3D)) { persp3D(mu, sigma, ll, xlab=expression(mu), ylab=expression(sigma), zlab=expression(log-likelihood), theta=40, phi=30, colkey=FALSE, col=colors, alpha=0.5, facets=TRUE, shade=1, lighting="ambient", lphi=60, ltheta=0, image=TRUE, bty="b2", contour=list(col="gray", side=c("z"), levels=levels) ) ## add the dot for maximum scatter3D(rep(coef(m)[1], 2), rep(coef(m)[2], 2), c(maxValue(m), min(ll)), col="red", pch=16, facets=FALSE, bty="n", add=TRUE) ## line from max on persp to max at bottom surface segments3D(coef(m)[1], coef(m)[2], maxValue(m), coef(m)[1], coef(m)[2], min(ll), col="red", lty=2, bty="n", add=TRUE) ## contours for the bottom image contour3D(mu, sigma, z=min(ll) + 0.1, colvar=ll, col="black", levels=levels, add=TRUE) } else { plot(1:2, type="n") text(1.5, 1.5, "This figure requires 'plot3D' package", cex=1.5) } maxLik/inst/doc/intro-to-maximum-likelihood.Rnw0000644000175100001440000010672614077525067021327 0ustar hornikusers\documentclass[a4paper]{article} \usepackage{graphics} \usepackage{amsmath} \usepackage{amssymb} \usepackage[font={small,sl}]{caption} \usepackage[inline]{enumitem} \usepackage{indentfirst} \usepackage[utf8]{inputenc} \usepackage{natbib} \usepackage{siunitx} \usepackage{xspace} % \SweaveUTF8 \newcommand{\COii}{\ensuremath{\mathit{CO}_{2}}\xspace} \newcommand*{\mat}[1]{\mathsf{#1}} \newcommand{\likelihood}{\mathcal{L}}% likelihood \newcommand{\loglik}{\ell}% log likelihood \newcommand{\maxlik}{\texttt{maxLik}\xspace} \newcommand{\me}{\mathrm{e}} % Konstant e=2,71828 \newcommand{\R}{\texttt{R}\xspace} \newcommand*{\transpose}{^{\mkern-1.5mu\mathsf{T}}} \renewcommand*{\vec}[1]{\boldsymbol{#1}} % \VignetteIndexEntry{Introduction: what is maximum likelihood} \begin{document} <>= options(keep.source = TRUE, width = 60, try.outFile=stdout() # make try to produce error messages ) set.seed(34) @ \title{Getting started with maximum likelihood and \texttt{maxLik}} \author{Ott Toomet} \maketitle \section{Introduction} This vignette is intended for readers who are unfamiliar with the concept of likelihood, and for those who want a quick intuitive brush-up. The potential target group includes advanced undergraduate students in technical fields, such as statistics or economics, graduate students in social sciences and engineering who are devising their own estimators, and researchers and practitioners who have little previous experience with ML. However, one should have basic knowledge of \R language. If you are familiar enough with the concept of likelihood and maximum likelihood, consult instead the other vignette ``Maximum Likelihood Estimation with \maxlik''. Maximum Likelihood (ML) in its core is maximizing the \emph{likelihood} over the parameters of interest. We start with an example of a random experiment that produces discrete values to explain what is likelihood and how it is related to probability. The following sections cover continuous values, multiple parameters in vector form, and we conclude with a linear regression example. The final section discusses the basics of non-linear optimization. The examples are supplemented with very simple code and assume little background besides basic statistics and basic \R knowledge. \section{Discrete Random Values} \label{sec:discrete-random-variables} We start with a discrete case. ``Discrete'' refers to random experiments or phenomena with only limited number of possible outcomes, and hence we can compute and tabulate every single outcome separately. Imagine you are flipping a fair coin. What are the possible outcomes and what are the related probabilities? Obviously, in case of a coin there are only two outcomes, heads $H$ and tails $T$. If the coin is fair, both of these will have probability of exactly 0.5. Such random experiment is called \emph{Bernoulli process}. More specifically, this is \emph{Bernoulli(0.5)} process as for the fair coin the probability of ``success'' is 0.5 (below we consider success to be heads, but you can choose tails as well). If the coin is not fair, we denote the corresponding process Bernoulli($p$), where $p$ is the probability of heads. Now let us toss the coin two times. What is the probability that we end up with one heads and one tails? As the coin flips are independent,\footnote{Events are independent when outcome of one event does not carry information about the outcome of the other event. Here the result of the second toss is not related to the outcome of the first toss.} we can just multiply the probabilities: $0.5$ for a single heads and $0.5$ for a single tails equals $0.25$ when multiplied. However, this is not the whole story--there are two ways to get one heads and one tails, either $H$ first and $T$ thereafter or $T$ first and $H$ thereafter. Both of these events are equally likely, so the final answer will be 0.5. But now imagine we do not know if the coin is fair. Maybe we are not tossing a coin but an object of a complex shape. We can still label one side as ``heads'' and the other as ``tails''. But how can we tell what is the probability of heads? Let's start by denoting this probability with $p$. Hence the probability of tails will be $1-p$, and the probability to receive one heads, one tails when we toss the object two times will be $2 p (1-p)$: $p$ for one heads, $1-p$ for one tails, and ``2'' takes into account the fact that we can get this outcome in two different orders. This probability is essentially likelihood. We denote likelihood with $\likelihood(p)$, stressing that it depends on the unknown probability $p$. So in this example we have \begin{equation} \label{eq:2-coin-likelihood} \likelihood(p) = 2 \, p \, (1-p). \end{equation} $p$ is the \emph{model parameter}, the unknown number we want to compute with the help of likelihood. Let's repeat here what did we do above: \begin{enumerate} \item We observe data. In this example data contains the counts: one heads, one tails. \item We model the coin toss experiment, the data generating process, as Bernoulli($p$) random variable. $p$, the probability of heads, is the model parameter we want to calculate. Bernoulli process has only a single parameter, but more complex processes may contain many more. \item Thereafter we compute the probability to observe the data based on the model. Here it is equation~\eqref{eq:2-coin-likelihood}. This is why we need a probability model. As the model contains unknown parameters, the probability will also contain parameters. \item And finally we just call this probability \emph{likelihood} $\likelihood(p)$. We write it as a function of the parameter to stress that the parameter is what we are interested in. Likelihood also depends on data (the probability will look different for e.g. two heads instead of a head and a tail) but we typically do not reflect this in notation. \end{enumerate} The next task is to use this likelihood function to \emph{estimate} the parameter, to use data to find the best possible parameter value. \emph{Maximum likelihood} (ML) method finds such parameter value that maximizes the likelihood function. It can be shown that such parameter value has a number of desirable properties, in particular it will become increasingly similar to the ``true value'' on an increasingly large dataset (given that our probability model is correct).\footnote{This property is formally referred to as \emph{consistency}. ML is a consistent estimator.} These desirable properties, and relative simplicity of the method, have made ML one of the most widely used statistical estimators. Let us generalize the example we did above for an arbitrary number of coin flips. Assume the coin is of unknown ``fairness'' where we just denote the probability to receive heads with $p$. Further, assume that out of $N$ trials, $N_{H}$ trials were heads and $N_{T}$ trials were tails. The probability of this occuring is \begin{equation} \label{eq:general-cointoss-probability} \binom{N}{N_{H}} \, p^{N_{H}} \, (1 - p)^{N_{T}} \end{equation} $p^{N_{H}}$ is the probability to get $N_{H}$ heads, $(1 - p)^{N_{T}}$ is the probability to get $N_{T}$ tails, and the binomial coefficient $\displaystyle\binom{N}{N_{H}} = \displaystyle\frac{N!}{N_{H}! (N - N_{H})!}$ takes into account that there are many ways how heads and tail can turn up while still resulting $N_{H}$ heads and $N_{T}$ tails. In the previous example $N=2$, $N_{H} = 1$ and there were just two possible combinations as $\displaystyle\binom{2}{1} = 2$. The probability depends on both the parameter $p$ and data--the corresponding counts $N_{H}$ and $N_{T}$. Equation~\eqref{eq:general-cointoss-probability} is essentially likelihood--probability to observe data. We are interested how does it depend on $p$ and stress this by writing $p$ in the first position followed by semicolon and data as we care less about the dependency on data: \begin{equation} \label{eq:general-cointoss-likelihood} \likelihood(p; N_{H}, N_{T}) = \binom{N}{N_{H}} \, p^{N_{H}} \, (1 - p)^{N_{T}} \end{equation} Technically, it is easier to work with log-likelihood instead of likelihood (as log is monotonic function, maximum of likelihood and maximum of log-likelihood occur at the same parameter value). We denote log-likelihood by $\loglik$ and write \begin{equation} \label{eq:general-cointoss-loglik} \loglik(p; N_{H}, N_{T}) = \log\likelihood(p; N_{H}, N_{T}) = \log \binom{N}{N_{H}} + N_{H} \log p + N_{T} \log (1 - p). \end{equation} ML estimator of $p$ is the value that maximizes this expression. Fortunately, in this case the binomial coefficient $\displaystyle\binom{N}{N_{H}}$ depends only on data but not on the $p$. Intuitively, $p$ determines the probability of various combinations of heads and tails, but \emph{what kind of combinations are possible} does not depend on $p$. Hence we can ignore the first term on the right hand side of~\eqref{eq:general-cointoss-loglik} when maximizing the log-likelihood. Such approach is very common in practice, many terms that are invariant with respect to parameters are often ignored. Hence, with we can re-define the log-likelihood as \begin{equation} \label{eq:general-cointoss-partial-loglik} \loglik(p; N_{H}, N_{T}) = N_{H} \log p + N_{T} \log (1 - p). \end{equation} It is easy to check that the solution, the value of $p$ that maximizes log-likelihood~\eqref{eq:general-cointoss-partial-loglik} is\footnote{Just differentiate $\loglik(p)$ with respect to $p$, set the result to zero, and isolate $p$.} \begin{equation} \label{eq:general-cointoss-solution} p^{*} = \frac{N_{H}}{N_{H} + N_{T}} = \frac{N_{H}}{N}. \end{equation} This should be surprise to no-one: the intuitive ``fairness'' of the coin is just the average percentage of heads we get. Now it is time to try this out on computer with \texttt{maxLik}. Let's assume we toss a coin and receive $H_{H} = 3$ heads and $H_{T} = 7$ tails: <<>>= NH <- 3 NT <- 7 @ Next, we have to define the log-likelihood function. It has to be a function of the parameter, and the parameter must be its first argument. We can access data in different ways, for instance through the \R workspace environment. So we can write the log-likelihood as <<>>= loglik <- function(p) { NH*log(p) + NT*log(1-p) } @ And finally, we can use \texttt{maxLik} function to compute the likelihood. In its simplest form, \texttt{maxLik} requires two arguments: the log-likelihood function, and the start value for the iterative algorithm (see Section~\ref{sec:non-linear-optimization}, and the documentation and vignette \textsl{Maximum Likelihood Estimation with \maxlik} for more detailed explanations). The start value must be a valid parameter value (the loglik function must not give errors when called with the start value). We can choose $p_{0} = 0.5$ as the initial value, and let the algorithm find the best possible $p$ from there: <<>>= library(maxLik) m <- maxLik(loglik, start=0.5) summary(m) @ As expected, the best bet for $p$ is 0.3. Our intuitive approach--the percentage of heads in the experiment--turns also out to be the ML estimate. Next, we look at an example with continuous outcomes. \section{Continuous case: probability density and likelihood} \label{sec:continuous-outcomes} In the example above we looked at a discrete random process, a case where there were only a small number of distinct possibilities (heads and tails). Discrete cases are easy to understand because we can actually compute the respective probabilities, such as the probability to receive one heads and one tails in our experiment. Now we consider continuous random variables where the outcome can be any number in a certain interval. Unfortunately, in continuous case we cannot compute probability of any particular outcome. Or more precisely--we can do it, but the answer is always 0. This may sound a little counter-intuitive but perhaps the following example helps. If you ask the computer to generate a single random number between 0 and 1, you may receive \Sexpr{x <- runif(1); x}. What is the probability to get the same number again? You can try, you will get close but you won't get exactly the same number.\footnote{As computers operate with finite precision, the actual chances to repeat any particular random number are positive, although small. The exact answer depends on the numeric precision and the quality of random number generator. } But despite the probability to receive this number is zero, we somehow still produced it in the first place. Clearly, zero probability does not mean the number was impossible. However, if we want to receive a negative number from the same random number generator, it will be impossible (because we chose a generator that only produces numbers between 0 and 1). So probability 0-events may be possible and they may also be impossible. And to make matter worse, they may also be more likely and less likely. For instance, in case of standard normal random numbers (these numbers are distributed according to ``bell curve'') the values near $0$ are much more likely than values around $-2$, despite of the probability to receive any particular number still being 0 (see Figure~\ref{fig:standard-normal-intervals}). The solution is to look not at the individual numbers but narrow interval near these numbers. Consider the number of interest $x_{1}$, and compute the probability that the random outcome $X$ falls into the narrow interval of width $\delta$, $[x_{1} - \delta/2,\, x_{1} + \delta/2]$, around this number (Figure~\ref{fig:standard-normal-intervals}). Obviously, the smaller the width $\delta$, the less likely it is that $X$ falls into this narrow interval. But it turns out that when we divide the probability by the width, we get a stable value at the limit which we denote by $f(x_{1})$: \begin{equation} \label{eq:probability-density} f(x_{1}) = \lim_{\delta\to0} \frac{\Pr(X \in [x_{1} - \delta/2,\, x_{1} + \delta/2])}{\delta}. \end{equation} In the example on the Figure the values around $x_{1}$ are less likely than around $x_{2}$ and hence $f(x_{1}) < f(x_{2})$. The result, $f(x)$, is called \emph{probability density function}, often abbreviated as \emph{pdf}. In case of continuous random variables, we have to work with pdf-s instead of probabilities. \begin{figure}[ht] \centering \includegraphics{probability-density.pdf} \caption{Standard normal probability density (thick black curve). While $\Pr(X = x_{1}) = 0$, i.e. the probability to receive a random number exactly equal to $x_{1}$ is 0, the probability to receive a random number in the narrow interval of width $\delta$ around $x_{1}$ is positive. In this example, the probability to get a random number in the interval around $x_{2}$ is four times larger than for the interval around $x_{1}$. } \label{fig:standard-normal-intervals} \end{figure} Consider the following somewhat trivial example: we have sampled two independent datapoints $x_{1}$ and $x_{2}$ from normal distribution with variance 1 and mean (expected value) equal to $\mu$. Say, $x_{1} = \Sexpr{x1 <- rnorm(1); round(x1, 3)}$ and $x_{2} = \Sexpr{x1 <- rnorm(1); round(x1, 3)}$. Assume we do not know $\mu$ and use ML to estimate it. We can proceed in a similar steps as what we did for the discrete case: \begin{enumerate*}[label=\roman*)] \item observe data, in this case $x_{1}$ and $x_{2}$; \item set up the probability model; \item use the model to compute probability to observe the data; \item write the probability as $\loglik(\mu)$, log-likelihood function of the parameter $\mu$; \item and finally, find $\mu^{*}$, the $\mu$ value that maximizes the corresponding log-likelihood. \end{enumerate*} This will be our best estimate for the true mean. As we already have our data points $x_{1}$ and $x_{2}$, our next step is the probability model. The probability density function (pdf) for normal distribution with mean $\mu$ and variance 1 is \begin{equation} \label{eq:standard-normal-pdf} f(x; \mu) = \frac{1}{\sqrt{2\pi}} \, \me^{ \displaystyle -\frac{1}{2} (x - \mu)^{2} } \end{equation} (This is the thick curve in Figure~\ref{fig:standard-normal-intervals}). We write it as $f(x; \mu)$ as pdf is usually written as a function of data. But as our primary interest is $\mu$, we also add this as an argument. Now we use this pdf and~\eqref{eq:probability-density} to find the probability that we observe a datapoint in the narrow interval around $x$. Here it is just $f(x; \mu)\cdot \delta$. As $x_{1}$ and $x_{2}$ are independent, we can simply multiply the corresponding probabilities to find the combined probability that both random numbers are near their corresponding values: \begin{multline} \label{eq:two-normal-probability-likelihood} \Pr{\Big(X_{1} \in [x_{1} - \delta/2, x_{1} + \delta/2] \quad\text{and}\quad X_{2} \in [x_{2} - \delta/2, x_{2} + \delta/2]\Big)} =\\[2ex]= \underbrace{ \frac{1}{\sqrt{2\pi}} \, \me^{ \displaystyle -\frac{1}{2} (x_{1} - \mu)^{2} } \cdot\delta\ }_{ \text{First random value near $x_{1}$} } \times \underbrace{ \frac{1}{\sqrt{2\pi}} \, \me^{ \displaystyle -\frac{1}{2} (x_{2} - \mu)^{2} } \cdot\delta }_{ \text{Second random value near $x_{2}$} } \equiv\\[2ex]\equiv \tilde\likelihood(\mu; x_{1}, x_{2}). \end{multline} The interval width $\delta$ must be small for the equation to hold precisely. We denote this probability with $\tilde\likelihood$ to stress that it is essentially the likelihood, just not written in the way it is usually done. As in the coin-toss example above, we write it as a function of the parameter $\mu$, and put data $x_{1}$ and $x_{2}$ after semicolon. Now we can estimate $\mu$ by finding such a value $\mu^{*}$ that maximizes the expression~\eqref{eq:two-normal-probability-likelihood}. But note that $\delta$ plays no role in maximizing the likelihood. It is just a multiplicative factor, and it cannot be negative because it is a width. So for our maximization problem we can just ignore it. This is what is normally done when working with continuous random variables. Hence we write the likelihood as \begin{equation} \label{eq:two-normal-likelihood} \likelihood(\mu; x_{1}, x_{2}) = \frac{1}{\sqrt{2\pi}} \, \me^{ \displaystyle -\frac{1}{2} (x_{1} - \mu)^{2} } \times \frac{1}{\sqrt{2\pi}} \, \me^{ \displaystyle -\frac{1}{2} (x_{2} - \mu)^{2} }. \end{equation} We denote this by $\likelihood$ instead of $\tilde\likelihood$ to stress that this is how likelihood function for continuous random variables is usually written. Exactly as in the discrete case, it is better to use log-likelihood instead of likelihood to actually compute the maximum. From~\eqref{eq:two-normal-likelihood} we get log-likelihood as \begin{multline} \label{eq:two-standard-normal-loglik} \loglik(\mu; x_{1}, x_{2}) = -\log{\sqrt{2\pi}} -\frac{1}{2} (x_{1} - \mu)^{2} + (- \log{\sqrt{2\pi}}) -\frac{1}{2} (x_{2} - \mu)^{2} =\\[2ex]= - 2\log{\sqrt{2\pi}} - \frac{1}{2} \sum_{i=1}^{2} (x_{i} - \mu)^{2}. \end{multline} The first term, $- 2\log{\sqrt{2\pi}}$, is just an additive constant and plays no role in the actual maximization but it is typically still included when defining the likelihood function.\footnote{Additive or multiplicative constants do not play any role for optimization, but they are important when comparing different log-likelihood values. This is often needed for likelihood-based statistical tests. } One can easily check by differentiating the log-likelihood function that the maximum is achieved at $\mu^{*} = \frac{1}{2}(x_{1} + x_{2})$. It is not surprising, our intuitive understanding of mean value carries immediately over to the normal distribution context. Now it is time to demonstrate these results with \texttt{maxLik} package. First, create our ``data'', just two normally distributed random numbers: <<>>= x1 <- rnorm(1) # centered around 0 x2 <- rnorm(1) x1 x2 @ and define the log-likelihood function. We include all the terms as in the final version of~\eqref{eq:two-standard-normal-loglik}: <<>>= loglik <- function(mu) { -2*log(sqrt(2*pi)) - 0.5*((x1 - mu)^2 + (x2 - mu)^2) } @ We also need the parameter start value--we can pick $0$. And we use \texttt{maxLik} to find the best $\mu$: <<>>= m <- maxLik(loglik, start=0) summary(m) @ The answer is the same as sample mean: <<>>= (x1 + x2)/2 @ \section{Vector arguments} \label{sec:vector-arguments} The previous example is instructive but it does have very few practical applications. The problem is that we wrote the probability model as normal density with unknown mean $\mu$ but standard deviation $\sigma$ equal to one. However, in practice we hardly ever know that we are dealing with unit standard deviation. More likely both mean and standard deviation are unknown. So we have to incorporate the unknown $\sigma$ into the model. The more general normal pdf with standard deviation $\sigma$ is \begin{equation} \label{eq:normal-pdf} f(x; \mu, \sigma) = \frac{1}{\sqrt{2\pi}} \frac{1}{\sigma} \, \me^{ -\displaystyle\frac{1}{2} \frac{(x - \mu)^{2}}{\sigma^{2}} }. \end{equation} Similar reasoning as what we did above will give the log-likelihood \begin{equation} \label{eq:two-normal-loglik} \loglik(\mu, \sigma; x_{1}, x_{2}) = - 2\log{\sqrt{2\pi}} - 2\log \sigma - \frac{1}{2} \sum_{i=1}^{2} \frac{(x_{i} - \mu)^{2}}{\sigma^{2}}. \end{equation} We write the log-likelihood as function of both parameters, $\mu$ and $\sigma$; the semicolon that separates data $x_{1}$ and $x_{2}$ shows that though the log-likelihood depends on data too, we are not much interested in that dependency for now. This formula immediately extends to the case of $N$ datapoints as \begin{equation} \label{eq:normal-loglik} \loglik(\mu, \sigma) = - N\log{\sqrt{2\pi}} - N\log \sigma - \frac{1}{2} \sum_{i=1}^{N} \frac{(x_{i} - \mu)^{2}}{\sigma^{2}} \end{equation} where we have dropped the dependency on data in the notation. In this case we can actually do the optimization analytically, and derive the well-known intuitive results: the best estimator for mean $\mu$ is the sample average, and the best estimator for $\sigma^{2}$ is the sample variance. However, in general the expression cannot be solved analytically. We have to use numeric optimization to search for the best $\mu$ and $\sigma$ combination. The common multi-dimensional optimizers rely on linear algebra and expect all the parameters submitted as a single vector. So we can write the log-likelihood as \begin{equation} \label{eq:normal-loglik-vector} \loglik(\vec{\theta}) \quad\text{where}\quad \vec{\theta} = (\mu, \sigma). \end{equation} Here we denote both parameters $\mu$ and $\sigma$ as components of a single parameter vector $\vec{\theta}$. (Traditionally vectors are denoted by bold symbols.) We have also dropped dependency on data in notation, but remember that in practical applications log-likelihood always depends on data. This notation can be converted to computer code almost verbatim, just remember to extract the parameters $\mu$ and $\sigma$ from $\vec{\theta}$ in the log-likelihood function. Let us illustrate this using the \emph{CO2} dataset (in package \emph{datasets}). It describes \COii uptake (\si{\micro\mol\per\meter\squared\sec}, variable \emph{uptake}) by different grasses in various conditions. Let us start by plotting the histogram of uptake: <>= data(CO2) hist(CO2$uptake) @ Let us model the uptake as a normal random variable with expected value $\mu$ and standard deviation $\sigma$. We code~\eqref{eq:normal-loglik} while keeping both parameters in a single vector as in~\eqref{eq:normal-loglik-vector}: <<>>= loglik <- function(theta) { mu <- theta[1] sigma <- theta[2] N <- nrow(CO2) -N*log(sqrt(2*pi)) - N*log(sigma) - 0.5*sum((CO2$uptake - mu)^2/sigma^2) } @ The function is similar to the function \texttt{loglik} we used in Section~\ref{sec:continuous-outcomes}. There are just two main differences: \begin{itemize} \item both arguments, $\mu$ and $\sigma$ are passed as components of $\vec{\theta}$, and hence the function starts by unpacking the values. \item instead of using variables \texttt{x1} and \texttt{x2}, we now extract data directly from the data frame. \end{itemize} Besides these two differences, the formula now also includes $\sigma$ and sums over all observations, not just over two observations. As our parameter vector now contains two components, the start vector must also be of length two. Based on the figure we guess that a good starting value might be $\mu=30$ and $\sigma=10$: <<>>= m <- maxLik(loglik, start=c(mu=30, sigma=10)) summary(m) @ Indeed, our guess was close. \section{Final Example: Linear Regression} \label{sec:linear-regression} Now we have the main tools in place to extend the example above to a real statistical model. Let us build the previous example into linear regression. We describe \COii uptake (variable \emph{uptake}) by \COii concentration in air (variable \emph{conc}). We can write the corresponding regression model as \begin{equation} \label{eq:co2-regression} \mathit{uptake}_{i} = \beta_{0} + \beta_{1} \cdot \mathit{conc}_{i} + \epsilon_{i}. \end{equation} In order to turn this regression model into a ML problem, we need a probability model. Assume that the disturbance term $\epsilon$ is normally distributed with mean 0 and (unknown) variance $\sigma^{2}$ (this is a standard assumption in linear regression). Now we can follow~\eqref{eq:two-normal-loglik} and write log of pdf for a single observation as \begin{equation} \label{eq:co2-epsilon-loglik} \loglik(\sigma; \epsilon_{i}) = - \log{\sqrt{2\pi}} - \log \sigma - \frac{1}{2} \frac{\epsilon_{i}^{2}}{\sigma^{2}}. \end{equation} Here we have replaced $x_{i}$ by the random outcome $\epsilon_{i}$. As the expected value $\mu=0$ by assumption, we do not include $\mu$ in~\eqref{eq:co2-epsilon-loglik} and hence we drop it also from the argument list of $\loglik$. We do not know $\epsilon_{i}$ but we can express it using linear regression model~\eqref{eq:co2-regression}: \begin{equation} \label{eq:co2-epsilon} \epsilon_{i} = \mathit{uptake}_{i} - \beta_{0} - \beta_{1} \cdot \mathit{conc}_{i}. \end{equation} This expression depends on two additional unknown parameters, $\beta_{0}$ and $\beta_{1}$. These are the linear regression coefficients we want to find. Now we plug this into~\eqref{eq:co2-epsilon-loglik}: \begin{multline} \label{eq:co2-single-loglik} \loglik(\beta_{0}, \beta_{1}, \sigma; \mathit{uptake}_{i}, \mathit{conc}_{i}) =\\= - \log{\sqrt{2\pi}} - \log \sigma - \frac{1}{2} \frac{( \mathit{uptake}_{i} - \beta_{0} - \beta_{1} \cdot \mathit{conc}_{i} )^{2}}{\sigma^{2}}. \end{multline} We have designed log-likelihood formula for a single linear regression observation. It depends on three parameters, $\beta_{0}$, $\beta_{1}$ and $\sigma$. For $N$ observations we have \begin{multline} \label{eq:co2-loglik} \loglik(\beta_{0}, \beta_{1}, \sigma; \vec{\mathit{uptake}}, \vec{\mathit{conc}}) =\\= - N\log{\sqrt{2\pi}} - N\log \sigma - \frac{1}{2} \sum_{i=1}^{N} \frac{( \mathit{uptake}_{i} - \beta_{0} - \beta_{1} \cdot \mathit{conc}_{i})^{2}}{\sigma^{2}} \end{multline} where vectors $\vec{\mathit{uptake}}$ and $\vec{\mathit{conc}}$ contain the data values for all the observations. This is a fully specified log-likelihood function that we can use for optimization. Let us repeat what we have done: \begin{itemize} \item We wrote log-likelihood as a function of parameters $\beta_{0}$, $\beta_{1}$ and $\sigma$. Note that in case of linear regression we typically do not call $\sigma$ a parameter. But it is still a parameter, although one we usually do not care much about (sometimes called ``nuisance parameter''). \item The likelihood function also depends on data, here the vectors $\vec{\mathit{uptake}}$ and $\vec{\mathit{conc}}$. \item The function definition itself is just sum of log-likelihood contributions of individual normal disturbance terms, but as we do not observe the disturbance terms, we express those through the regression equation in~\eqref{eq:co2-single-loglik}. \end{itemize} Finally, we combine the three parameters into a single vector $\vec{\theta}$, suppress dependency on data in the notation, and write \begin{equation} \label{eq:co2-loglik-simplified} \loglik(\vec{\theta}) = - N\log{\sqrt{2\pi}} - N\log \sigma - \frac{1}{2} \sum_{i=1}^{N} \frac{( \mathit{uptake}_{i} - \beta_{0} - \beta_{1} \cdot \mathit{conc}_{i})^{2}}{\sigma^{2}}. \end{equation} This is the definition we can easily code and estimate. We guess start values $\beta_{0} = 30$ (close to the mean), $\beta_{1} = 0$ (uptake does not depend on concentration) and $\sigma=10$ (close to sample standard deviation). We can convert~\eqref{eq:co2-loglik-simplified} into code almost verbatim, below we choose to compute the expected uptake $\mu$ as an auxiliary variable: <<>>= loglik <- function(theta) { beta0 <- theta[1] beta1 <- theta[2] sigma <- theta[3] N <- nrow(CO2) ## compute new mu based on beta1, beta2 mu <- beta0 + beta1*CO2$conc ## use this mu in a similar fashion as previously -N*log(sqrt(2*pi)) - N*log(sigma) - 0.5*sum((CO2$uptake - mu)^2/sigma^2) } m <- maxLik(loglik, start=c(beta0=30, beta1=0, sigma=10)) summary(m) @ These are the linear regression estimates: $\beta_{0} = \Sexpr{round(coef(m)["beta0"], 3)}$ and $\beta_{1} = \Sexpr{round(coef(m)["beta1"], 3)}$. Note that \maxlik output also provides standard errors, $z$-values and $p$-values, hence we see that the results are highly statistically significant. One can check that a linear regression model will give similar results: <<>>= summary(lm(uptake ~ conc, data=CO2)) @ Indeed, the results are close although not identical. \section{Non-linear optimization} \label{sec:non-linear-optimization} Finally, we discuss the magic inside \texttt{maxLik} that finds the optimal parameter values. Although not necessary in everyday work, this knowledge helps to understand the issues and potential solutions when doing non-linear optimization. So how does the optimization work? Consider the example in Section~\ref{sec:vector-arguments} where we computed the normal distribution parameters for \COii intake. There are two parameters, $\mu$ and $\sigma$, and \maxlik returns the combination that gives the largest possible log-likelihood value. We can visualize the task by plotting the log-likelihood value for different combinations of $\mu$, $\sigma$ (Figure~\ref{fig:mu-sigma-plot}). \begin{figure}[ht] \centering <>= loglik <- function(theta) { mu <- theta[1] sigma <- theta[2] N <- nrow(CO2) -N*log(sqrt(2*pi)) - N*log(sigma) - 0.5*sum((CO2$uptake - mu)^2/sigma^2) } m <- maxLik(loglik, start=c(mu=30, sigma=10)) params <- coef(m) np <- 33 # number of points mu <- seq(6, 36, length.out=np) sigma <- seq(5, 50, length.out=np) X <- as.matrix(expand.grid(mu=mu, sigma=sigma)) ll <- matrix(apply(X, 1, loglik), nrow=np) levels <- quantile(ll, c(0.05, 0.4, 0.6, 0.8, 0.9, 0.97)) # where to draw the contours colors <- colorRampPalette(c("Blue", "White"))(30) par(mar=c(0,0,0,0), mgp=2:0) ## Perspective plot if(require(plot3D)) { persp3D(mu, sigma, ll, xlab=expression(mu), ylab=expression(sigma), zlab=expression(log-likelihood), theta=40, phi=30, colkey=FALSE, col=colors, alpha=0.5, facets=TRUE, shade=1, lighting="ambient", lphi=60, ltheta=0, image=TRUE, bty="b2", contour=list(col="gray", side=c("z"), levels=levels) ) ## add the dot for maximum scatter3D(rep(coef(m)[1], 2), rep(coef(m)[2], 2), c(maxValue(m), min(ll)), col="red", pch=16, facets=FALSE, bty="n", add=TRUE) ## line from max on persp to max at bottom surface segments3D(coef(m)[1], coef(m)[2], maxValue(m), coef(m)[1], coef(m)[2], min(ll), col="red", lty=2, bty="n", add=TRUE) ## contours for the bottom image contour3D(mu, sigma, z=min(ll) + 0.1, colvar=ll, col="black", levels=levels, add=TRUE) } else { plot(1:2, type="n") text(1.5, 1.5, "This figure requires 'plot3D' package", cex=1.5) } @ \caption{Log-likelihood surface as a function of $\mu$ and $\sigma$. The optimum, denoted as the red dot, is at $\mu=\Sexpr{round(coef(m)[1], 3)}$ and $\sigma=\Sexpr{round(coef(m)[2], 3)}$. The corresponding countour plot is shown at the bottom of the figure box. } \label{fig:mu-sigma-plot} \end{figure} So how does the algorithm find the optimal parameter value $\vec{\theta}^*$, the red dot on the figure? All the common methods are iterative, i.e. they start with a given start value (that's why we need the start value), and repeatedly find a new and better parameter that gives a larger log-likelihood value. While humans can look at the figure and immediately see where is its maximum, computers cannot perceive the image in this way. And more importantly--even humans cannot visualize the function in more than three dimensions. This visualization is so helpful for us because we can intuitively understand the 3-dimensional structure of the surface. It is 3-D because we have two parameters, $\mu$ and $\sigma$, and a single log-likelihood value. Add one more parameter as we did in Section~\ref{sec:linear-regression}, and visualization options are very limited. In case of 5 parameters, it is essentially impossible to solve the problem by just visualizations. Non-linear optimization is like climbing uphill in whiteout conditions where you cannot distinguish any details around you--sky is just a white fog and the ground is covered with similar white snow. But you can still feel which way the ground goes up and so you can still go uphill. This is what the popular algorithms do. They rely on the slope of the function, the gradient, and follow the direction suggested by gradient. Most optimizers included in the \texttt{maxLik} package need gradients, including the default Newton-Raphson method. But how do we know the gradient if the log-likelihood function only returns a single value? There are two ways: \begin{enumerate*}[label=\roman*)] \item provide a separate function that computes gradient; \item compute the log-likelihood value in multiple points nearby and deduce the gradient from that information. \end{enumerate*} The first option is superior, in high dimensions it is much faster and much less error prone. But computing and coding gradient can easily be days of work. The second approach, numeric gradient, forces the computer to do more work and hence it is slower. Unfortunately importantly, it may also unreliable for more complex cases. In practice you may notice how the algorithm refuses to converge for thousands of iterations. But numeric gradient works very well in simple cases we demonstrated here. This also hints why it is useful to choose good start values. The closer we start to our final destination, the less work the computer has to do. And while we may not care too much about a few seconds of computer's work, we also help the algorithm to find the correct maximum. The less the algorithm has to work, the less likely it is that it gets stuck in a wrong place or just keeps wandering around in a clueless manner. If this is the case, you may see how the algorithm gets slow, does not converge (returns the ``maximum number of iterations exceeded'' message), how the results look weird, or standard errors are extremely large. % \bibliographystyle{apecon} % \bibliography{maxlik} \end{document} maxLik/inst/doc/stochastic-gradient-maxLik.R0000644000175100001440000002063714600010430020540 0ustar hornikusers### R code from vignette source 'stochastic-gradient-maxLik.Rnw' ################################################### ### code chunk number 1: foo ################################################### options(keep.source = TRUE, width = 60, try.outFile=stdout() # make try to produce error messages ) foo <- packageDescription("maxLik") ################################################### ### code chunk number 2: stochastic-gradient-maxLik.Rnw:163-164 (eval = FALSE) ################################################### ## maxSGA(fn, grad, start, nObs, control) ################################################### ### code chunk number 3: stochastic-gradient-maxLik.Rnw:375-379 ################################################### i <- which(names(MASS::Boston) == "medv") X <- as.matrix(MASS::Boston[,-i]) X <- cbind("const"=1, X) # add constant y <- MASS::Boston[,i] ################################################### ### code chunk number 4: stochastic-gradient-maxLik.Rnw:384-385 ################################################### colMeans(X) ################################################### ### code chunk number 5: stochastic-gradient-maxLik.Rnw:392-393 ################################################### eigenvals <- eigen(crossprod(X))$values ################################################### ### code chunk number 6: stochastic-gradient-maxLik.Rnw:404-407 ################################################### betaX <- solve(crossprod(X)) %*% crossprod(X, y) betaX <- drop(betaX) # matrix to vector betaX ################################################### ### code chunk number 7: stochastic-gradient-maxLik.Rnw:431-436 ################################################### gradloss <- function(theta, index) { e <- y[index] - X[index,,drop=FALSE] %*% theta g <- t(e) %*% X[index,,drop=FALSE] 2*g/length(index) } ################################################### ### code chunk number 8: gradonly ################################################### library(maxLik) set.seed(3) start <- setNames(rnorm(ncol(X), sd=0.1), colnames(X)) # add names for better reference res <- try(maxSGA(grad=gradloss, start=start, nObs=nrow(X), control=list(iterlim=1000) ) ) ################################################### ### code chunk number 9: stochastic-gradient-maxLik.Rnw:476-483 ################################################### res <- maxSGA(grad=gradloss, start=start, nObs=nrow(X), control=list(iterlim=1000, SG_clip=1e4) # limit ||g|| <= 100 ) summary(res) ################################################### ### code chunk number 10: stochastic-gradient-maxLik.Rnw:495-499 ################################################### loss <- function(theta, index) { e <- y[index] - X[index,] %*% theta -crossprod(e)/length(index) } ################################################### ### code chunk number 11: stochastic-gradient-maxLik.Rnw:514-538 ################################################### res <- maxSGA(loss, gradloss, start=start, nObs=nrow(X), control=list(iterlim=1000, # will misbehave with larger numbers SG_clip=1e4, SG_learningRate=0.001, storeParameters=TRUE, storeValues=TRUE ) ) par <- storedParameters(res) val <- storedValues(res) par(mfrow=c(1,2)) plot(par[,1], par[,2], type="b", pch=".", xlab=names(start)[1], ylab=names(start)[2], main="Parameters") ## add some arrows to see which way the parameters move iB <- c(40, nrow(par)/2, nrow(par)) iA <- iB - 10 arrows(par[iA,1], par[iA,2], par[iB,1], par[iB,2], length=0.1) ## plot(seq(length=length(val))-1, -val, type="l", xlab="epoch", ylab="MSE", main="Loss", log="y") ################################################### ### code chunk number 12: stochastic-gradient-maxLik.Rnw:565-570 ################################################### i <- sample(nrow(X), 0.8*nrow(X)) # training indices, 80% of data Xt <- X[i,] # training data yt <- y[i] Xv <- X[-i,] # validation data yv <- y[-i] ################################################### ### code chunk number 13: stochastic-gradient-maxLik.Rnw:575-584 ################################################### gradloss <- function(theta, index) { e <- yt[index] - Xt[index,,drop=FALSE] %*% theta g <- -2*t(e) %*% Xt[index,,drop=FALSE] -g/length(index) } loss <- function(theta, index) { e <- yv - Xv %*% theta -crossprod(e)/length(yv) } ################################################### ### code chunk number 14: batch1 ################################################### res <- maxSGA(loss, gradloss, start=start, nObs=nrow(Xt), # note: only training data now control=list(iterlim=100, SG_batchSize=1, SG_learningRate=1e-5, SG_clip=1e4, storeParameters=TRUE, storeValues=TRUE ) ) par <- storedParameters(res) val <- storedValues(res) par(mfrow=c(1,2)) plot(par[,1], par[,2], type="b", pch=".", xlab=names(start)[1], ylab=names(start)[2], main="Parameters") iB <- c(40, nrow(par)/2, nrow(par)) iA <- iB - 1 arrows(par[iA,1], par[iA,2], par[iB,1], par[iB,2], length=0.1) plot(seq(length=length(val))-1, -val, type="l", xlab="epoch", ylab="MSE", main="Loss", log="y") ################################################### ### code chunk number 15: momentum ################################################### res <- maxSGA(loss, gradloss, start=start, nObs=nrow(Xt), control=list(iterlim=100, SG_batchSize=1, SG_learningRate=1e-6, SG_clip=1e4, SGA_momentum = 0.99, storeParameters=TRUE, storeValues=TRUE ) ) par <- storedParameters(res) val <- storedValues(res) par(mfrow=c(1,2)) plot(par[,1], par[,2], type="b", pch=".", xlab=names(start)[1], ylab=names(start)[2], main="Parameters") iB <- c(40, nrow(par)/2, nrow(par)) iA <- iB - 1 arrows(par[iA,1], par[iA,2], par[iB,1], par[iB,2], length=0.1) plot(seq(length=length(val))-1, -val, type="l", xlab="epoch", ylab="MSE", main="Loss", log="y") ################################################### ### code chunk number 16: Adam ################################################### res <- maxAdam(loss, gradloss, start=start, nObs=nrow(Xt), control=list(iterlim=100, SG_batchSize=1, SG_learningRate=1e-6, SG_clip=1e4, storeParameters=TRUE, storeValues=TRUE ) ) par <- storedParameters(res) val <- storedValues(res) par(mfrow=c(1,2)) plot(par[,1], par[,2], type="b", pch=".", xlab=names(start)[1], ylab=names(start)[2], main="Parameters") iB <- c(40, nrow(par)/2, nrow(par)) iA <- iB - 1 arrows(par[iA,1], par[iA,2], par[iB,1], par[iB,2], length=0.1) plot(seq(length=length(val))-1, -val, type="l", xlab="epoch", ylab="MSE", main="Loss", log="y") ################################################### ### code chunk number 17: SANN ################################################### val <- NULL # loop over batch sizes for(B in c(1,10,100)) { res <- maxAdam(loss, gradloss, start=start, nObs=nrow(Xt), control=list(iterlim=200, SG_batchSize=1, SG_learningRate=1e-6, SG_clip=1e4, SG_patience=5, # worse value allowed only 5 times storeValues=TRUE ) ) cat("Batch size", B, ",", nIter(res), "epochs, function value", maxValue(res), "\n") val <- c(val, na.omit(storedValues(res))) start <- coef(res) } plot(seq(length=length(val))-1, -val, type="l", xlab="epoch", ylab="MSE", main="Loss", log="y") summary(res) maxLik/inst/doc/intro-to-maximum-likelihood.pdf0000644000175100001440000124610214600010432021275 0ustar hornikusers%PDF-1.5 %¿÷¢þ 1 0 obj << /Type /ObjStm /Length 3905 /Filter /FlateDecode /N 66 /First 541 >> stream xœµ[ÛrÛ8}߯ÀÛÌÔÔÄ•äÖTª|‰í8qœØÎÅÙʃ"Ñ6wdI#ɉ3_¿ÝAEÑŽ·Š  út÷éÂIBQŒHÂ2(ÁÑD¦9IIªÉK¸$9a<ÕP&LáÃê)Ü$œ%p_.3¨$ Ïà‚AC"kMD í²”H.à½ š† –•äP9!JšFˆÊà9çD3xÈÑRÁ}It* qTª5ášè\ÀÇR¨Ÿ‘T¥)á0Ü ÆM¤´+Éx(8ÉXÆa0$SîK’åx_‘\À¸¡©\¥Iò4ƒkü\ü^‘cAr"aÐ S0%ðɉ€o‡›ðÉ©$¾+ÁÞ$LLTVPÐ08 S²DÁ×Â%0-Zæ¾CâTJ -s­Î>ã¼ÌDߨ e<’X€B™ ©`Úp²U e™Àð´,ŒJáüsœ:hYŠ в”У†–¥‚ÙÑвLá&ƒÉ>dÌT²‚éÙÂäkhYÁ ÿõ矄žëÑd´TÎ};º.VsqñcQºϧókòü¹yeoYŒÖå|¶?Zä×ýs˜ÐDp³LXò{Â~I’_~«êÍ—ä׋â\žÌ'ÛÞx»œOîÆ¼røö59¼™¯Ö«ñ²\¬AÏþŒýVa~7[#é«r²"ÿdã€x‚YÓ²7Óêd?0·W¹½bIjÏR{¶A¨Õ¹ºÏm½/nNì4Õ£™­‹Ùz…¢³wRLÊÑîüF† @Ÿ,3Éž}Á×—ð‚›æ³b5¿[Ž¡AlíÅýúð|S°7Ï }ľÐr>>/ÖÐ2}»ã)î×Ðäóçí¡¹‘íŽV…y›~z·»w|þûùÁÙ Ka,ôÅl<Ÿ”³kB?–³Ùªln”ËÕzïf´-´½ïV N;ôõ¨ª‚SEÏï¾®Mç8æFb{þXNÖ7(£T¤f6ö'S{V ɲê^qâ–¹6%´C¦NU_òŒÏʈQƒÕÃÚ_Üìì¬Æ(…4Iä‹£¢¼¾q—ði8Ë¿ÒC:¢ZÐkzCKúÒ[:£sº¤+º¦wô;½èâa[¶áç£ëZ'3»æa úŠ]|±Êiæ@7¢~3º-:ö´°ïÌ®§Ô¥'åjÒ2³ À „uqûÁ@¹5ÿ-ÉÑOÕJ0[@^]žì@ˆŽºÉ •ðÁ°ˆëÚ;íßî·Bñkœ»Füç¯ÿk?ŠýÖ³rBf‚±D†‚È%Ì´ˆ9 ÅM{Ÿ˜±ÑJÌ`Õ¶J™ÅR>Ý9Ü¿8µ¨âôAR–2ꆱPÌ@†‰]i¥ÛYü>ì/Ëq>Scì_šl¶1U?ÆFÛ_¤'²iéÖ8DÆªßØ^hß^è6`Nè)½ÐŒéx~{;Ëqƌǭ1kºþ>§ÿËyN,çý€Â ì,€TB*’q¯åຶàäc9N÷^žîB»Ÿ€Ž Æ”Š1%"ÓÁbJh'w¥ºÊ+$*ÂE /¶—"=Í-–dUOkƒ Ý`Äõ“‰ † ú’kp„g _­»¶•Ù‘ä€8S§z ýµ”@c%˜{ÇÖÆCî¯<÷Œ—¹¬±¸G÷é z@_‚{CÏèÀåWƒÌé|f¼ÚUù­(ú·›‹›bæ¹¹ù¬  ãìVå=¢÷fYÃwôžþ ÿøÎ/és~¨°ÂŒ1€p‹çT!Õ aÝ@"mB³£ýW{Ÿ¬Ê$žYÔ&à²ØåU¬ñQÀ…ãáü“%¤4&À‘Õuš?œV(De²Ì5†S†ëb[C¬mß0À7Æ9UhJ3£)Ä:ÃHBTODep5·6µ«R`28^ó¦Q;†‘ZR]øÎ81U!„©Ï¨î¾ù¼æv€8f:ªçx_€]¸{Ø5žñÀ6#û YÛ~›ËZgvèn­7GFsN@wNA{ÎÁ®¿§饧EÖÊ£.™æh1›ŒV7ôŠ^á¿’š¨dÓ=ûo­i³Í©ÛÃiqµ¶¥¥ixQ,Ëù„þMÿ¾+V€Aa¾.&_§¦¦»°•Í•-Ý-nK;ÜUñ zŽuùYÔçÈ7q ¬•Rûn陨§ ãKœF_­«0¬ÍiC5ëUkÑpZÅ6¨u¤ÉoÞ_~Ø;±|*Ðdj²ÈcMŽÃ›¡´FqåIÏÕ¶#|7ÙÐFód{ûòÕí y÷)Ž$ú™G¬4—¾b¶Ý™UÊ·ôQÌ­Æe¹.§“ŠýÕ_ ¤_GKúu9ÿU¬’Te«5øï»Ñ¸å¯1™Q,cÝ«ÕÔ³QÚ¶šö)g‡jbÀ`USûª©ìCìPç!e”,TÌHkz£”‹£ŒÛý-0«HK÷ÏÏ?^¾Æþ^ZÚK“X_ãh“ ÔW F †¢î+Cº”£^Œ‘Ðm5¡†$)‹é$² $0¡¹=„Á0]hR†U¹‰-á=Lf $ª¹ybG&1áß €n)\j0s,Ö¯ÐñAã-ýB·‡Á‹un†Zðóýà¶Y‹ÚÊ¡lv'Güƒ«ÚŸ°.ÂCØF0êõ'*müIò(ؾùáìòÝï{''Ð_Ûµ¸°¾!‰JV§D²MŒdrttüêòƒí!óC'GkI`ª0”D„ÁI ÅùVW”+pâÒœ‡¸®4wî%å¼uGýÐÔ>õKª7…æ!· wÆÕtwߎJÁTa)ú…wÝS¼/q”V2QßÃñlž§ñâ̶‘1—­è¸µc]ÔY ÍØD¹)³·h·–U'ü¤žìvn‰}–ƒýÄqŽV:"xõ“µ– Êú|RàÖ“º;¸!±8Ãý Ü•.Wå”0íÊ9a|Ï@'¹{>»wÁÒpåʘ‘ªÊ)q­€=n¢Y–UÛO³,ÜÎø—;}ä²ðá닽£àg¡U®‹&W"¢éqº~ø¯h"ËÌ‘žÙp?ÿèÎ_&Uki:lys™æÅ¼ïL†fÛ}Ù³ÍÉ:V,rfR‘Æ£‹?ølUg¢­Úoûò~¦¢¸OG·Ö];ŠÑÊFt†kÓ»ÕæÌ õd&™ÒµZµ‘î&Ù•ë »Q–ßßP®Ë7å[)þŽØm÷àìÕîkèìüÒÝ’êq–ADù}6Ôµ¥­ø©×Y Do/²eb}xøÂk÷êCÌ’}–(u½˜·P¡\~M‹Ù¸ ·å Ðy{7]—‹éÊMakŲ˜ÐåhRŽGÓ6 s½ø,@`Ï> •“| È#ƒ¹iÝ46·ï÷Î÷ߘ„E@±úhoÓ^ç©罌’µ¥¼‘¿†h[Éz-œ fMj+Æ;2¸Š¶3—µ|ÑT•†m ÁøáÓ Ñ·V(€榹@hQî2šÓþئ^TÈ„6¬c´¹ÄOð»2]9Å=ŒU9'Õ® ˆO¨ªþÓð %š)Å-‰?Ã'Ž>¼üôÆä/Ò6Ÿp¶¿IÅ[J\~ï1;‡ØSÙ°‡ü墈äIÛ÷ãÒ¡íȤ¿®2~öÉ8×eÓ[¥¿s‰ñ¦¡µÄ¶¥k!¤"󞜇J98ý¼{rp|í¿øä{k—î[ŽwiµÔP å©9p;q§ÿŸ?&åp<õ MùGˆ*!Ëx=A†™/“¶rÆØ&€d¢cƒd&z•#zÑ’DÍúÒ]‰ÙPod%,ý)j_ô¦ÕÈxòøäÕ»·†éµý”vé d˜çC3ŽY^­ÌdÃXL&DB)ß(ߌ–Ëùw«}nqTéÆmÏ9ˆÍÎÿ;fªbïå*ýÙ*=TáÒ;zóbï³AG{£²vi˜sìëßË5Ëpª"jÝdZl3ËJtì@ê]:pëO 1`CÎ8|ªxÒ± ¢í¡þä N:ظ}>:xÿî#õC÷w,ë« ÊÁÑ àT²Ž8´wm°+G²!ãÑÇÇ]qª+ë¡¢¬‡7A§_mYßÛžÕ”ÚññCâÇ#$AH; Cì2g‘ŽØˆ„Á‰¢£'üÎöî`âoƽHÕFåöÓ«)–K³1¶ÙšøDc ÍÝÍøžÁ@cÛD×Pô†?QoøW{*±!’ PèFµëÝIèAÑ1ÓEiÄfv$áZ]¥°Ä.þâr½Ý§´}ˆÿXv|Ëendstream endobj 68 0 obj << /Subtype /XML /Type /Metadata /Length 1168 >> stream 2024-03-24T12:40:10+01:00 2024-03-24T12:40:10+01:00 TeX Untitled endstream endobj 69 0 obj << /Type /ObjStm /Length 2526 /Filter /FlateDecode /N 65 /First 552 >> stream xœ½ZYoã¶~¿¿‚÷¢èp)Q@Q ë$3ãĵÓf¦ƒ>(Ž’ãØ©¥ÌrýýµX‹Åq/E”H“‡ßÙ&X ™¶’Št{L ÏcfRIÃäÖèö™4!Þ&}‰~Ëd`ð=d2†Y§‡§dÊŠYÅ”ñ|f=¦üP0«™ ž†yJÌúÌ3¾ÇlÀ¼@ài™ŠÙO/dø‰öŒ`!¨ ð»PJ£Yè1#|<53Rø $…ÎÐgFk¼xR¿eÆWx™ @ŒÄ&T ^H† `; Ò×RÐ~™ïÚ¸f¾ ©J)­H…=ŠÐ(l ¡bÚÄOJ‚ 4JIXrTèa©ÑИGT–ÀFi0´aÒÐ-%`Ð/±žµ@ œ »ÀJE] ¡})ÂÄ£†AƒØB»ÖŠøðN* |\€õ•ô€h@¼q¡¥½cŠ(=Ú¿ÔÒ„–òþõË/Œ¤“x–1ú5?ŠžÎâäþ¯X‡=D‹qœ±ó#~Æ?ð ~ɯxÄ£t’$“d1y~ÌÛY2½ÑÌâE’~á7üfMâi|—å­Íéš_â¬úŒvÞ1á“ùãcÄoùí|:<æñßÏÑ”ßñ»äkÌïùý"Ž09à?žâOø>åÓ8Mù#ŸñÙóãM¼H“ûŸóù,æOü)ZÄ3·–kå+=”ù-š>§üo¾à)O㯘.FéÏxö°ˆcž}›ógþ•ãßùþßx1ÿãÇqÔÏ `óÓitŸBâњϲÃÃùwö]2ïö!”è_y÷i2=R/hå(ÿt=ÆŒ_üyüÛ‡ŸÆ§ã+°F0~žEÓdr0»ŸÆËIš&³ûëä6{€:€%ã,~üƒ”ˆ_ýxŠó¹ˆ²Eò”ÍŒ,ø§µb¿þê|¥1 Cçðbô鈖û/w2›Ìo±ã×Éì`–&˧É"ÍH°‘Î2°'n'¢b I4?ßdŽ("MÖ)¤ù±…ù–lÓòòI¼¡¢×eDñ4[ÔU[A Ђ>PËBÔék9ZÀôhæA;é+´ÚFcÿ*!ªtÀ4tÀ6tà0à$¥1ä0@’½9¤(ƒ¼@ZêbëQH t‘,P]R„ëaiÍ–˜¨¶˜tø¶IL>òÛxšEGŸË±"–†ÅWpc…!éX{êCèfnY‘šæV¤Éø¾fÄÛbF–‚urýîz|MVÊïkÞ»!€õZfzGRº»k›Þ×½V<(Œw ïVlö¬›£…vÐF»FO°mo¬/Îþ~§ÙþX‹.Ö¦­ÌPÈ~`{aèî" Ò*ÇùKýî~ɿ҄«½pûò{ŽÃZA½µÊ hAt–tz…Â’¸ÕC5¯.,C Ò\À_ä”EÔr‡Yiriª$aQ&É÷FJð­9è*XäÑ€€²lÛDÛƨôÕz)wÊÎG—§ã÷Xkü©é[ ‡¶ÇÒ´¤±¯â“$µù¨‚†áÍ_+>>&³çt•Ê·ΰү[(‡m”›;ï 3â¿ O>]ôðéo/Þ‡¿»H^„ ŒRøôªT‡¢m Tï¨:ëܦÈïÒ={Ú+´ÒH]Ý}ݸ_¬ãO¿°9K—N£©-…Y•ù¹%©|e‚ê镤འ“PËbúZöÒw2 Z·­ò-jŠ»kNdÃÿ¿—bxÊÏ‘ûù¿FþwãêÓù¬ªZÄ®PÁïÛå‰<;Ü^ŽÈ+Ù¶ºƒ©Ä?­ºCÞ+%þÐVšJˆ¶tİ®.sm¦”@¬28ÛKÆ[Qz8½8/kv9ÂvÙ¡ÌMw7æhV½|ÿu12 𣅧îÓ@£o̱.—ï&c|X*àæmØk›;›UIںĬO†`\aàšd ”„Ì–ó#)±åœpضœ“”Ø/Û–JÅy;teâ•I]YÚSRWO…Ã"¦êúÄ_“ ¯å"9¿Ã•.šÞ>Ѥ*ûNò/Çsi9®Ž‡»lèP6<¦WÚµe"Üõ˜Rt\¦í]‡ê&)h&Š¢¯dqÕm¶]›Zø¡Àý¾e,ô»ÜX´èk/Tße|=x7a«óÀ‹ÂÁ ¤;Uaˆ}ÏÐP® '¿OmØHÒí‹êoÜoÆWnT>Ò(Ð*:Éê²Ø4Ylš'!—ˆ&ðù_œw¢Úo£îê5Ç"ï´tŠ$Ú‰iPÓ™œï-¶ô.'~úm€`4h ÐQR[Ï<ûÛ_i{Ǧb;‹w½¨äßf1(ÖXœ¿V,¾yžNãŒ?¶Øê­Õeê3°Ë4O‹«âNçžµüm%‡UHÐÑ_é„;ô«Þ|wÊ:òà|O3jØvwư/ aÿÝQ1Uu@P'?)f`äåÞ=­%6’þ?«¬endstream endobj 135 0 obj << /Filter /FlateDecode /Length 3665 >> stream xœZKãÆ¾Ïɾ;€Ž­Àðd³OA ¶ƒÝ¶ña7ŽÄ™¡M‰²Hîìæ×竪n’šÕ.‚9 ÝÕõøêIý¹É3½Éé/þßnòÍãÍŸ7šŸnâ¿ÝaóÍÝÍß~ñí3£ ·¹{¸‘z£­Íœw›²t™ zsw¸y£¾ßæYî¬)l©šqléÖêWN··V[ºWÃXooi¥)œ+Õylöñ¥VÏq“Á©ñ‰Ÿ«Ó­ŒöF]l}/«M©}U¦ÌòÂk5hŸÉBaT·Z±^ýÇÖY¥QÍÇKäø§~{K$­sŠ.=Î •JÌæá’™ã~ûŸ»BaáBa×^on΂®6w{(в.·…åúýêúÕG\Éó?–k9Nà]†Î»uYéÊ<àÀ*«*äÄŸÆl³È^Ým«œ/¢TZÕš‘ù¿­2ï l·™ÅÞýº>ïH»¶TO‘P”q_Ó t¤Ker㢴Ýh—YW KÚš¬0fsëtV”N Q½½Õ:ÏÉê?·‘íÆ³€È†‚µNÏCÅZg¹«ª,Ô´¾Ùm”…·ÞEŠM¦d#¸,8'F¨tˆ Ü=µÃ<báS(4xVíãðmÒ;­–u°Åq ÍæH>7ã*­öcG¦¨¬zèÏé¦R$Ômñ¼‘ |]ï›óÂÀ3Á-m¯ÏͲ}:>Ô‡¶këD2ÀMÈ7dÜd^ môÇ]sЦœå€D¹û2-×pæ§*aØ>á±G6]û$àÍB‰#„`Õž îxo}$W0–­Ï[Qr Žú¡‘[’†EãÁíó–!T×[ÕÆTê8?k–œ+øSŒcƒ6¥šÚÝ61öGdÀº »LíØ¾ãEYqrž†§Ûé”AaøPÐD"FDäzd\"L¨±­;Ö(ëÑùÍÝ«›»¿¾Qc}~lˆåܱ?=ÎûéDÏ /»nÚ7C\EzÛ¿Ûp ÞjXkÏ \Ó˜x<×û©&üÙÜb‡CÄâé}sùJÇH6G”„â0@ÁUíœGþ¬úªéöY0¼l˜v¢yÈþÄ’T5u!ž\í0¶;~V1ÙÒ9nP ðÖ𚨡……Ï'溆i/kFVàƒÈçuµÛ®eæù(Ùµ ´5°€LA5ÇÇöØ4ç™& "¸ KÂ.eƒçÀ½o.ü}h9?…2¢·iÏi-Ÿqåz>¦E^5PÊ™Öe+,ý™”A^Àyd un††C)4…zâÀi¹ôt®Ø(´-k`%ibŸjÔ'¸/J!¯©H“ªkDZã[¢¢AüRþ~ÒK§š÷«WâØ_„®UDkWÉ>r(’ Å,TF½~•¥§~ègs<Àþêâ€(E„¡Mµm,ŒOýÔíÓy¥(a½3¾B¿K9ä±”ó6aŽ.R°–4O vlŽýžÝíjÍbÌÑìéðˆ¿<¤´èW9 ”Ém@5… ¬~ÙÞýþ2kùÌ;o¼¬x£ºúø8Õ Å.]±Ä?>È)àJ}àM1¥ŸâÙ¿%"1G–‘¶ä~\5Ç~z|J<›d;¾ó’a„äœ`æ­ýC"Œj+æ Ì]É!{Êäiùb‹ã¢\)£nÚ¼È]‡:¢Ó”Ùí èL\ô•›;±a Î×Ù€÷q.óšõ©†©£P^R¨DÊ?cSïå¸f}ä8î|÷n—¹tàmF}ñº^»Sâ·°+~­zù…¼ŸQ[ kßQè©¥ê±V,Äöº‚2o3_QíÑQCÍj{¶ŠË¾ÌhÉmÈQÅVÕ |,±§£@Vs"ü?"Ä È‰oÞnEž9™1± ZN¼°„¡8Žó²Š 3z“£|9¼`¬ý/Ç“ è ð\L–l˨«°R‚A&)¼™ý­ýCX/™@®x‚è :œŠ­¸½ŸË‘u,K‚¸™ $ã Uñ -ŸêsŠ\b?¼«uªÛt˜+h ˆR5ƒ´ñÛ¶"¸æRõÐFIâç1Ý–Ñ·A‰3o}Œ×æ2òׇSivÓáõBöŒ„ÕúZâ`‹#)RÍRH‰Gçådˆz¼–ÎNçrìý$I¿"4@÷í°;7ìb•Ä8©¦J ¦î&Y*/Æ>m{Á[W3¾x|‡¸…Ð`›Îª$ŒPP­Â ÅHö%Š«u²¯¤lêçPø¼,iÇ™'9 É´éjé# ã:Çë•Rîë{ÄíQÌo=b>Qµ° PR0ÉcAërϵÌCßuÌsýÌnàò’}nh¸uâ*¸´/ð*ï4EHI…ȱ#A!—ë!W½4Õ@Fj™Ãì ±-Êùúç·slÄ;®é·®Ðëšf7rgE w:¨Ê¤¬Çõb¹j4šD‘¥àr\–-Þàb‘YËjIn·"­sóG8ä ©ò¢\¡Æ=yeÄoäMNÃJ×>¶IȯŽ\×–†™Žf –y „OÃÀH¦5ºLÙG³%îëAêñÒ°²k–7ýñ61/Ïວ‘¢!g pS€+izø'þ‡é„—³OS#,—ºðœß«‚ËìT:®)Ö¸ú9À°= X@çͲq—ü |ß$±D–TrÃ0ÒKD†¥Ê-ø¼ûz7#ö¢¨{Dw6B¸_k†–{µùéz|Ý Qæ © F5GÍä²üE&–Bn>Sí!  ó¶)}|² í¨¸Ì®Z‚ËhÇý,jÇ2æ³ Z¾¥à¹°4Ûyl¢ÆXàP¿Ôë‰J¾È ‡ü>€òïm`;òùõ¢5ááZ¶¼ÉĹØoÏ‚æÞÅå„Ä”¼äÎ&w¥»\Ü•/yä{SzHR„ËsÆÍ®ÈKGfV_|sÈ—:wçæ¡Y°¿êo8ÂI.‘£üœø„'D‚÷ŸÉvò‘ë3c™ÓŠpl¥ ë×Ç1Sû"6?݇øÎRr:´’5¼e¸/C”é0wW Ú&L¸”Á×zz`IwÏY?Òì§qž¸»g×L9Žß4°Üñ ‡r¹ã×Ï;ÀèJzÉÓ46©z-/}h¬ï§®^¿nÞ-ƒ)Š´2÷FQÛÎÜZ—8/ÁËÐPn›N’d‰H#^s]û?j db?sõS6Hŧ”}Ô_ÚÓ)¤@«çWµL*A_ß}†sÐo\oàœ…Xb|:îªQâ1É(‘×h“Ï +8l³"ê%×È¡l®UÂ+ýªâh›áïÈ¥4Ú?ÝÏqõ²ùA=Ô 1h¤Ñãr‹O1ì‹×‘X'¾«lõ[ÍBa%Ž^ñ¹n|œ' KI@Þ § R§L¨´h/¬“™zÀ¿Œ^Å/ØÂøj®ö  xõ×c”0¯•*%8ÎþcÝvW@;aò"¤MwtÐ᜽r‚§µU™lÆ¡ñŸ“ í¦;žnCÚYt³=Çܸ¼gª–ó¨‰.•\m×E ¢¶ðyêÞibJ|}jL¡8£_-qù-~9˜®õ‹z¾Þ]ZWj•g] ªJý:íæhHR8‘nŽáN>å\m^ª+½‹s2!a­9‰Ô²òµ–’¸ÆTÉ.ß4çc?¡öKdצPÖ‰ºJ3™;Ί, ½'8ÚÉ3š— W3+š\]š°Â‚#¿…Ò^Kïì8Ë©á{а»ö+’Îk©k÷ì¼,)lÌŠãA‰}EN­‹Ì”%«·dtøWFÍQš"í]z?”c;’!=ˆßÏ|øø½EI¡“Wù{|âŠ$R˜›nES/SðUüÙ×®ˆu¶tJ_ZrcKOctbôËØTù`„7¬1È-7@ÊÛ‹Z³»ì™tqÙ·0ÍŸu¨2=GnRã¡i‰4»|нÈú Že<óŠCÑi\È}˜‹s¤»TïRþŽI¶À=žb÷›Óps˜bƒYL¡l.¹ôë)o×½Ýr6”O¤®¦Àh¹x×®ˆûqy£–Ó2Ú¾'Çl¼Ga5Ωý£cÎhíR¾¥Öþ¸_D¸˜E$Ñ“#döœ|H”z+ÑeÉ™•pyÆ'$§ëÂʨ*®uK¡ËG•åSh¥¦Óg ±XÏ‹Þùc†õ†¡/…Æ\ÿÌU6½›2Ïäc\Œ–öó®°TsÒCK ¥yŠÕ!¡Ju© èËé¾Y70ÇýúÓç× yvƒøDCb•¢°Îml†–ßpºRújSkxü|»Zøæ¢M ²ÃŒ°fÔïÓ 3Áïîn~¦s‹ÍãpCõÁæù&ß|£of£MðRåáNf²ÊÍOº›_?ùkð…×ûòò×,EFljc3Mfq”¡Ÿk®É2M¿Œ@ÃJ®Ê²|÷ŽTÏ¡¯_ô+†Üéú„LÑuNÔµå/ eÔ5ß¡?Ó¦@>üº¹á³b*"™C\ôïé«÷Q³VÍÀ ÒÉC|Ôg<ä¸khìi#¢Kte4 è×gî¸h!åiâ–¾=0MUß3>´ŸV{Wcö‹j¸€qI›*šxÌàa‹ÿ|ó?0jÕQendstream endobj 136 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2259 >> stream xœV}PçßóäÞÕ’¤ñz‘ÄÌ®Igš¶ù¨ÍLªÖ!š41Q!   VŒ€'ò±ÀqÜwÜ÷ísßÇÇݲ˜A à!j¾4@±MÒ6Î$66¶ynfÒ½˜tšNÿÈÎÎÎì¾ûÌóþžç÷ü~¯ˆX¼ˆ‰DK 7äþrõ£kÒ/+€/Yh]ÈÏ€L1d.öß»tñ2,ºóÒ¯üH_ËjjëžiT(Ëš÷–Wî“W¨&ˆ<"Ÿ($ŠˆŸÛˆíÄ Ä“D1ñ4±‘x–ØDl&rˆ\â9B*ä"QM\­]]¤^ô–8{qÆâñ UÆß$e¨’KÉrnIõW¢µw·§ºœ\j•RôÅ~qJ<šÚ c"(ÙeÜCóÃH®7Q ÎãT¨¡Þ}ˆÆ…èÄçŸ]ˆäm¥x+’×:ª)cz]#aêÝ/ÑX‹`˜=V?À î ì…­ðÜ®–BöïY·%z÷ Ñєڮ%/àþ·Å˜IåÉøLí3÷ÁJòþY~ ^ð;œ}ñ$Îäï¢ø<È À —Bùýáˆ/ê‰À5˜XØàT;U ‚"[NEICues¬ƒÒyÓ éCØ&…|Õ9Ä-`7'ÅÃßEµOoI£*ájPu½g„Æ+L{®LŠvô´Å…|~6`o1L u»¦ËAö…#]ÃѪ¼ÛZi‹3„ õ–o:‚õGÄï—¹$ñÊãêQ g>ì¿9Þ4±-A òÒfýǤ=Ëœ®yÈ– ßéõSø.äqø¬Fm£ÞLÕ¬ •¹ù1ŃÛ'ÊOhédëa{ÒxÔ0"w•’6´e[UΚ³Õ”#äŠë€4±6 ͯE6—Å ă>Êë÷úÝû¢^ ´}XË¥~Ή^¹’zjZœº8'ó7sÅ@zÁç¥ñ>¡¶~2Ùã§8ÞÉE§»é:z§ôäê5{×?ðèëÜEU¿f¼àFâŸïO¿ví<5.|Ò:µ !K[׿êÞž¢ð^Éñ+q.nJ=rȧ\ö5‡—Kç¿añHÄP¬a5 ¥ùGT:_ì«åjÆ Gá,œí8ã|8 / dpZT¥ £¥ø+Äg2¤óLŽöÒüôDåc15þ^ ÕÒÅöA/)üöjÜäQ4õÓŽ!j VÄó²’$>ô»Õ¥í€¨³s6t¸wvp¶kŽtI„bÐÉFÌ1c»ª]¯‹×Æë’»³<Ö€,¬Åd¶[åeY¿Í/ß¼H?È!£Ûè³·AÛÝ0:w®BØ~ïþþªƒUÝL–Ïä7ƒZ´¦Vøù ΀Ԡrjýª6}—>ºïø¾qùq›×è?øü>gðhÖØ™—ß¼šîÁƒ ŠXý&h²œÒú§L4õ7%²¬>cP•p¤-ìL×<ÕÕÑ´P ¼;^ãɬQ47•Ó,oeÆwôÃÝüÙ<âÅ+ßã3ð’Ógí„Q «UªCÃôøé/²úC/¾g¾y®à=+ .ůFÏ?UTðÔ®Ù‹­”=G$-ˆ=¶ox·¼&¾Ž 2œ”´y\ÁëÏÊgðK7Ñýs‚gZè€d.NtÏ9ÝN7xH¯Ýmk±Õé-”¢´D^ 5PRtœ´Îà éŒÊ\W~ò¼ ûò\z¶Å¥'oq‹ßÔ„«ÇSYÊeܨõ]=xçë'Ž-—⛸HÆ¢¦f“jA–jHí0––ÀrþÑþ÷¯aé¡ëçw+ŒQÁ § y’âúÑx°#ÐI*ûõG€üàÂÌÕ¤þ(ÓK;Q¢»¿k¼àe}³Õl©”SqúBÐNö3íJ¹\×TOÙív› Ì Šê|Í¥G ¤ô“uÏ䬭ŒìN(h).çetîÔÐ9êcÉÔŸ´ÙßW»åáþËZúÉü/‡^í~ç¹Ø†ÂBų›ò§¦,Ô×Vº¶ÒI\.Xiº¯m(ÙgßA9„Ê•ößËJU’FP¸l}$6¡kÌ…r‹ölUQ,ÆiÏYü®Àý…¥Ê¸ v“Ë¥3ci¥ë@/uËhþȷζQ Ic£àÇ©ÛÐ.\#SØôÍ &›£Šƒ}±î8%îÔô6PÒ»u¬ø¯‘Â1¥è“â‘ÿ»õNƒê܇é›bíÞ`0Ú‰D;BÊHs¸¹w¯¼Gî3¶éëÐh,:!`5‡ŠA1°²êtÅɧí^“07¤A ÑÛ=qâ¼0ü/Ô4èå¹¥ûÐõ L™Ò¡ÿ ýº¢ÿ[ÎJµµXH‘Ë5¡…;I/d â;~Büç4³7}÷@3†ä5lùwºP„fo\?ËÏ£xªlp”~Ÿe5j„ÆozI6©PŒì —A> stream xœµSÛk#UžôrfZËV3ĦDf^]¨÷¢‚ȺEVVVaé²Ë>jÕJ[Ûº4·IÒ\:“I2g’ÉÌ$i’™Ée[ØvÛ]Å­¥%…ÍêJd}Pú⢮¨Ð9ÑtR]Ð?À9ÃÃá÷}¿ïû~džuu`6›­gôÔ¹sO=÷ôóíà ä[©Öoݰ¯öu)tݵßyèVÿ'bí¼á?353‹a#ØEì1ìUì ö:†[(ŽÕm»v”:•®ÄŸ¶_?ÆŽí|c¬¾ß³7›ˆi;h¨Õï¨)«é:$>¿=ÿ,ÁÍ.sÄc:^þzlÿÖâæMúß.ÞL}è*‚’‘®kì²—ö‚…÷ÄË4:‹Ã©ë³LoŸ­ž‡ÄÄñÄIšÇ3~-ªCÂÐJYS2FÍaÇ0Nî¼r2paòtùæ§wWwUjCÞÌlBâïÎÄÆŒ·Õß}v²†Žï9~ATwšTwxÙhYætú@ŽgeAqU‹jµÌh²Æ²BÜAZ•†ÐÎT&!A‰q˜ÍJé=ì”U)›‡Ä:¨çrz=(-ÒC€Ìòq1îòGbm‘3¨6{Ÿ@½Y( Y8hä—5šÌV C‘5޳xNYeqNä\¾0˸ Þº¯©ª(»d‡/³•çÚäú;k“éd& “D xžO&; [t÷PØšóÀìÆ=1–‰(‘bŠF×±œÓhÎËräèè\ ¥”9¤ۿÌÕhÔƒLÈði¾z­¢×hò›j°ê¡È{©¤rý'wähØ×}lw€ÜB¶#…¬abVwy«;ô8(ç e-–Ðç÷”¬€²°¾±R..ôš HI‰Ë$V¦ëkWß$ÜÀm‡ëgʬ޶H¶,ºH¿¬ZV×óËê:“ Q>à‡žÂÆ»[³Öâ^ËÖå5§ª_~á,cZŽ $t=[¯†O,&Àý ˆCVä  ò^¦°¤ÓÛÀ1_ìF?áPU¨U^›§^‹LÒ(,÷ÞCßîŽ5Ÿ]úyl‘í€Ü?lQ×ø’—z B¼/œ —šüìŠy`QÅÛTä¾/b½ˆ"«Ñß½,W+!5ÀÅ§Ñ 8¼&næ7sWë×Þ‡DlK£S´ÉãÿÔþ•q¨‰e¨äÆíÐÁKãó—¦(RÛŠÌèS®)8ô\"ŽQ½…}=öüˆ? endstream endobj 138 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1817 >> stream xœU{Tמe—™‹ÁGØÌ‚ÎÔ¶ÚÚ£M¢ô¤"5Z£ h *BAaQ^ËcØ]v~ÃÎò]ž2°E|¢Iªi5V‰I„´•6MN“ÚžÚ¤w¶—;{èiÿlçÎ?sæžûû}ß÷û¾«¡t”F£ JÞ–¹>"Âÿñ4¾Ï})¬…`]ã2æNÈŸŸ¼³øÊÊÿ,ÎË/<˜gHÈÚ™»aMÄzŠJ¤’©]T4C­¥¶QÔj#O±ÔBêIJO-Q+P UG)šÍßÒµaZ»î)]îË@{àC:Šþ9³ý±f[µè±æA1UÝ£Dô¦yÍ,Õ_ÂeJû Ë3kè¡G´8?øqú¬{/$aœþ’Ý&ØÃÉÒÀ Mà_SŸÍœFú™¦N·Ô>gÊúsGÓ¥dØ ÉB¬!5?'³ÔÏCÚ½š-Ð*´ µó%ÊÊ:“æo7µƒJ4kì`††êRyâe2KlIœWÊÌq¨ªÉsáñ2fÚpÀý¾¦úF± \ .@c¶V›¡ºË=íÏ™¬îì”W J8{µÍ"X¬ ¯§ó˜dg yt«¨/ï^ª¿‡W)sìOŽv%gbô¿þ=)¦¡B¨€ y9ev¦ëãÜ…"Ì¢Ì(­fS|Òñ©I÷áŒ~B&+p3O§¥Û,++=!ÞÇoM÷,ÕO~¥èؾ±‹ž‹€®]þéN~³ŠÄä‘å¼…i~iöØ;pnyO¾DZoNu¾–=~FNKçÐE{£-íð‘Ú ý­b+´r˜g UlƒVô`Û/Än2üÐè.ïëët÷ö—tp8ƒèÙ5Œ~2flŒaÏЕO~si¶k¯oÚ~¶ÇŸò£_×£Ñâ*ˆ­‡X¨°´¤0ß]ÖÓëé8u?ÒKn$æcUý%·ß9=%óõ R34!‰${½Ìæ:KIÊC2 Yø‰ÙûXuã¥Ù}ü¢°¢ì ”5˜ïS:îi/ú~ÄG˜‘!{f­`+?WÍĦÔTõ=,3ûö6ßæE弫¬©¬¡,ì:Yý6ùî5²ú •*%ÓÉ:•œ“ õJ­øÇJzè‰Ñ£í£m#¡ÎFgc}“8w-jÄj¨A†[NU•õàNùs8Gk W:™³C Cmm‚Ê£L60eu¦4’>7è Iº2fºPæ üE‘ü¶ÜÔ~+X|–nqI-v~Ià AÏN¬ÿÃ!¾×Ò_ÛÈIw/v(:ë%Ëê²UÙŽVÖrùûSìdw f¼n¿ ¿@¢›>ÿpö“¾oÇp‹ø2(S¯/ªWõß[Ÿ+™ôûï±oK6—“o’oIGä9¬#?Ã98³xÞîwáKDãÉ+ª ­6ÁNræ‚ÙNð‚uOÐmÕ…í§†š‡Ã?…÷Æ7JnÞñ@Ø,K"_­¬«pTáa ^mÆO8Ü‚ÇáV§#€ÿÈïÅpn4i0uni½~ݺï€}?7Ìd³çqEFœ+ÒÆIuc,35úðá/O$&r¤ŠÉ2ÖåreóÿÇxlbÀ+xË ÇSOP›ˆË,Mð£ÐE¾Ýâ /`Pƒõ[훾Íl))ì¡¥7êïÊÞá±ëÒe@—hO·ã0?w†IÏ´fWe­ærø¯rm8$ã•nU\$w¹F8/}îZ»76e×g9³Q]Š TEµë®ÏÃR1ÝÂþWëõ'›‘UXÿMµkæ¡ú¿Q Ã僅çRÛ÷«¨_6”& ®Š—w@Äï+O…Ά(cNV TÊ'nkOá(w¬¡ÓóÛÕŽÚe¦J;ã€uå¿ø‹ü%“i¶I5ņèC…ÜV¢ÛB´1DWi µVÛká8XE+ØP¿Ìb›8ì¥Å¢È‹Åø‚Zck·Gw±¢ÔU—\”˜‘a·[UG"So“Nh‡¾ÑVwïÙ“¯Ã³¼»'·4??¯§d ãDcK 7ß´Éã{Ú#šBƧqóôRu"Ë}kY’T* |‘åƒd/ŽáÚhœÔUÍð©s½Ìˆhu|mvÿÌÒs«ýW‡š)pÞuÝpŽ».ö¾Öíí9/«&Ïð[Øb:º»ôPfîA@Vš·4á ÕŸ¡swW¹¡fŒ2«½¯xXÏÉ«S€>x.jeô /oå·n*.,.(.+> stream xœ}Xy\S×¶>!äœCUTb JÎUkomÕÊà<£"P„ÈD¦2îˆ#s„„ˆ1 âˆZ‡¶Öªµ¶VÛz[k}­ï½Ôºé¯ï­½ïÝû{ÙÉ99¿³×^ë[ß÷­p?‚Ãᬉš3mÆŒ©¾/¡Çÿ:¼o æ¢Áþæ—‚ÎÁ;Ãzzá{ßšž¹-*'7oQbAÒÒí¢Âäå)â´Õ›·d¬Ëœ1ó·&M{}:A¬ Vc‰UÄ8b<±†x™ˆ&Öëˆ×ˆùÄ"œ˜DÄDIL!¢ˆ…Ä"b:±˜XJ,#fË ñ"L„DÁ'F/³q‘E<ä ¿~%~=Ühn»²ÿû¼©¼Þd9@½MÝ Ò‡">z!rÐÜA ƒç ¶ ;$~ȱÀ…õCßúë°Ãb‡í<üâV"ðw¿$ tïPGf¿öðµ^ˆï æßs{WDµÿFs£:CˆïPü{‘"ÐxHþåHH ïtþøð¼~ñW\Ž…\WAkö‘hK< G‘ïI£hþ=-P<Ì%Ù}Æ}M(]^a+Ç$TÍ«7V€—„-Bx ZØ´ðlbWÚÅâóˆ†!xfœ-<ŸÚ)Œ}^m8¢ñP¼WÐM¡Sº ‡Ü mÕNt³Ì­”ꤨ€Î¡P¬fufJNfjq*JAÉ»r’6Ô©:DþÎõ.QÚÑ÷‚‡s FrûFôù bGØ ÌE˜Þ2çÍ•K²¦£h¦}ÚÅÅŸ½tÚ6Š—`ÂxMh¤4V¹NŽhY^¡-Ê)Yt‰8M¼)ayÎrôšÚó鯕_±ñ\1vðü‰/î»î!@ßL®ÅDe‰¦h¢­¤Moª‚Œ²ªM²â‚ìâb¦Œ}ÉJé§5Àk=ðŠÃê rBxX/€ æ÷:}eh¢øë4éÂþ½¿÷Y¾7¶z¤'ÐMôeSׇ-¶“è$ ¼H ñÄ5±›71ݘGyý±N ß6% MMÛ©Lˆ]4È)£óšû$¢ŸÔâ ¨B«²yZ|‘ƒ4¿/Ô…!ÞQ æmï ˆzû‡‰àsŠ_P_¯­ý}¿çê…/>nû ýŒ`öT˜Šãó*óQ¢ùGñ¬ßF ¼a,õôp£sÜîØÊhCãàBü.–2쑯U³;Á1Ôy80†sôÍõmò0‘÷Wªjy)dÙ²ŠññbßÕ.f0Ž';ÑqåÎ &)ÊGù´ì)$ÊBE¹Ò-Éj1¢WAL$?AW*:#÷‰ IFí&³¡„ø;çTŒoG„d8ØÏšü`rOpƒù×ϰþás¬_g“\ÍbÝ>Æ’÷ô01%%ò´æ_7ç·¶Õ7·œ\oOX¶~õŠrF ˜P²{øy^ðíáò½No¸ÿå`𛃫›:‚Ž)wF »N!#'Å–¬`Ö ‚Èkè MǼ}b}¢1ùÏðÝ»ó½áûƒ^†íî”ËÁüÛά£²Ãˆ¾ÿUÇca5¥<Ÿpx}­¤*Ëm™Ã«P7}棚£ºs#,L9’ïbÌdѸSÈï1iMÆQ÷(«ÊX¾½(ɘ$ÝU /Ôê =ÿåLƒÁŸ–Ë/ì@+éwÿ¦NbæUe¸²¿QWÉQ9¢K”ªb!¤Z«DJº\_QUc³™-ŒÙd1šÌ,°9N—¯é;2<°FôsoІ æß„Ù}Ãïˆpàh&ƒây7(³2s¤%áœì¢o¼|KèI¡P±®Ñ"Ù¢µdÝ] ´ÂŠ̃ÇÀêiã(Þw¤ |ÄÅu?í—}¨QS™GcÅ>5cwvKÌuÕ t]²×^ÐÍ ¹]27¿Ò!ôÁ4µRÎÕSÍõê­B,¡K“–ÏGtr"ú|—n7² á<{{ëO>¢|ü ®­¾ž¿þÇØOÿíÁ~,Úý<Ô3¢s@rã˜È"íÀ/Qà3zϹƒù·a¢w² Ål7µ úL·$L¸™Âƒðj 18y—ÏÞ°_Ú+Ô‘ë;Òwvœf>HYMVlËÏSØw1L=ˆ¼‚G1ü–`NÙÌ4»´ÅÑÔàl,ÙU°SÑ8B0‘Z²!v Ãÿ)1¾åä#à×~nf»Ú/"Ý9ááÔzW DÇ(=2ꌨ Æ xÏ 1(­r¤@Šò •sñ‹!;¤bM&¢óE°ÊCfe&½å1´¤5–— ‚BO©FJ¶ê2¤2+Ìx4„‡°@²hÍÈd1 ï Ù³Ïlsèëôµ¨Ñ¼ZD9•U ¥lú˜—a8|^=Æj)çQXä:}i¥,¨JgEt}2CØÔAÝé î¤ãÛ.¢‘0 üoë@Î~eu\Az‚N 0]¿E Þ¨LÞº9G".£x$j’¸•fÄ®¾k»îã; ª±ß<¡„b,×Ê}ìk-~VØÏyÎ{‚²PbYéÜ ‰¢´„Òµˆck29›Qçð^ópêqë}Y=CíD©©ä æÂäILËÍ¥ì¥;$òy2W.U²R†dú2ýnÛn+²Ó޼:1“¡(ÎGzõ¹¬®ïºn_s0aÔ‡0ò„ÖØCª÷ëš]íÁ3Eä.´_k”Ñj •HÓËóWàY®,·,óÁrÎçÁy_¿…º8í@q{§ v”ÊŠYªÌªÝÚÆ˜È{[ì÷ð]ªPC®B+‹ßK]¿){Z@cæÑTxéÚÖ+Fo6U! m•WV0dª,ª(͋ۘ‡èWÞ»¼ÛUÛšTªáÓ=u.Ö@pÞgóP†çðܤΩ?Xk·:f8‚èoÉixØT<|*ª¬P”£rº´JUÅx“»!†M±:QµI"NOUÅ#zY×Öìhp~|ÿãûWîÍf+²Ò5rƒŒù?x9Ⱥk¾÷Õ¬‰j¬óQ·˜JqÆï‰eÅböŸ_Yo[ïÜ$ìX÷IÖÔº÷:H¯…ð.JŽdZ–Àòò,ü΢«û­‚SÔÍ]À…A‡Û·one *ƒR§ qåë •";)6+E¢Ä÷˯k«U[å3qÝÏI¡Ó+ïä>ƒÐ×Ôv‘f3“!£‡,A;´ÅˆNßj¨ê¼' r“ÂT1Òž4;ðyéLv¤8’Íå† ¢M¤Íd² ½?Suíú6¦Ýƒ"Ò†vêv"ºÍ¡Îö/ úIo¼¸#WçÓ†Þ¶ìc‡¹NN+›˜’û\ y¸DÚ æ Ö=Æ×F¥oF'fG¡(š%PÎëÀÜüÚqÇÁè •zd ­åƲ¥¤XÎH’bòâÐzÓ¸íx[{uÒvtÄxÜÞ^gwínc§aÂ<áS²Ãñ-0ë»[-PÚšÙtîÑñÈr+˜ÿS+ÈÝVšŽÒQÊîÌýYñÉ©(‘Ƽ]xû[˜X Ä“7â L4Û¥ÚRDoLk8"4P:›±ÚTí)tÉXÝ}ìùåPQ‹Ä!l¬j¬nÖ©*4r$§óö×ÕíÞSëÈjÌLK+’f3Z£aËUn©ÐÓü_Êv¥§šSC_}}ÝÄ”½ï¹ò„:Ü&@zm%Ò£ýûìû-5zªAôòìÏ(j^XÁêE“wß O8©ÓÖK·>Ù?Ÿ‘SëŠÖFl“X÷1;öjëÕ ô¿øfŒ¬už;¾6±Æ¹×íÀ>Ö±57¡TaÿÇ:¶ÿäš­j×”:²;ײ®y š“P¸L C0ífî´ED™£Àð°†l4ë‹Ý02˜_ô'QÁ7ž0èõñÕÍ3…ÿDdãÛqìŒýš™1RUjk‘¸nŠbÞ@˜¤nVß~$¶¥ÈZh-ÔÛŒ¶J›ñ£†Ë'Ð-tsM÷Rû"{xe¢§áÛð<¢Î ÏÔmñµÙ•)h JoJÌåÄj6"Ÿ²OÛÁ¿oŒ4èÌÆ!2¾'˜÷ˆO~)3²è,¬ ¼T_§Êâo¢DPìYꌹÿ®4þÕô ‰dó¨4{z'ëHÚÌÍÍÈEÈnKdþP«¾0)kÒæ<Õù,¥WŸ§ô.›>›¾ádåΓ‡ÍÅ5¥Ö’‘-"Gr‹¨Red͈º¼Ø&…$R¬Ë5nß‹§Xcª±Áðž&ÓI=󗉨»¦\¨¥²B¥Öà °ÂâÂÛKho"K ÏOÉÆÒsbéÐ'–”|úĿڰO¹U؈=¤ÜÕö´rsf5ù}cYyðÝÿeC:…Aû~ó 1–™Êwù‚=¬Vk`§÷Iˆ¥¡Mï@ô~Α-çP‘B^¤*â1ønaR~RqâH ‰Ó½Þ>–çZsþmd˜Úîÿ1µÝ|îdï?›Ú®ügü%Pÿ~­f`’ÛÞ"éZc‰C‹PTRÞ2ZKÊ¿~·vñóÁîþÿìXÏàñ&Iƒàà…±‘ô8àu8pÀh\õL€€Ÿ<¼+H›ÊTÄJJ’ç—ìxÆ~xäx<šÍ¾Š•…Ãÿ¨à&ß|f¤ÊÂç/OÒ ³0hQdCP0ÿ ü_]νm9ÍiéÙù‰¯þñ€¥Ð÷áuàÍþ‡ ùOâQ\±8“†éT³²IÕŒh3y[wÓ}ú"›v «*fµ¹B£FZ ³¡`}ÙZ”ŠRiU™Ö…ž]:ZM*Z­e%àSJf”W×Ö4Ûö0ö:—ÅUI[È‹……Ú¤Iˆs·ŠKÅh%ŠkÍ8Fÿ»—㸛]A]0bÁ æßÙð•@»Ý×÷Þ:=²i³Ê‰ZQky}~†&7eÐü‡õÛ8ëÝ_Ïk[øæ›i‹Ö3Kÿ†Þbi»Ç@µÎeø?º<Õ'N^Ô#,Œ^•¾¢ˆÑáquµþŸÿõPÿê«L.µ ìÉ¢¬}û¥L~›Î£r?ëÝú|ïJ)ç.„²BÁÊvº\’‹Ä´Ø¾e !-Í ¨nÏv&2øƒÿç×À`Áwœ¨L‡®ï¨?áíg]ùvàpÿîýžm™ãè„¡kÝ¿ÿEäîÁ¡ÞÏ(dб†‘Þ©´HseùÌÚm++ѳüé€çEÎYvŠŠ†@.PÞÓû¡ã ìxp÷äü9ÂRJ1iÞ;Ë–D¯^µ&f…\®Q¢2:ß;•un©>ç–¤[—ŒrÔ9(‡õo“Ý]ÝÇÎv^?ûýEÔKCqnÌL­ØšÓænlmsg5¦2Ï+qu  CaŽõñnüÕû… ¥¥k'+Jgf¬Ê)´,÷íˆâÕ+ÚF+¨Ê²jIJÃS¬%¡²ú-ìÐXŸQ™:j¹|ʸõÉ5öXFG¹ ,ë!g~«ØHËÉ$ÉÖTì£3¿dEóÅSð—žéL©ò/_m¹ÓùpÔ?ñ 3ÞÂÜä iÍ[ÛÛ›ì\9ÍéL ó·zîà‚ø?8pendstream endobj 140 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 7970 >> stream xœ­zXTWÚÿEdîµEÃd,¹×˜MqcKŒI4ÅQì-ؘÊÀôz¦7†>à ElØ¢b‰ÆkBªº1ÑlL];Ã÷;L6ÙÝgóíóü½<ø3÷žóžßû+ïEôïGDEE X6wiÒó“&Mbÿ1*™ÿGÓ­Šƒ£ÁàþŽQOß…5ÂG‡v#Ø?sg fe¯™3'÷Máܼüy¢ùbɦ‚Í S“ж$§-ÚºmûÒôeË3Wð³V½8åÑ—^~eê´WŸöìô±£Æ=>ž7aÒó/LIÄbñ$±˜˜Fü‘XB1™X@¼H$Sˆ…ÄKD‘L¼Bðˆ?"Žˆ'†#ˆ‘Ä(‚"Ò‰Ähb ‘E !Ä#D61”x”ˆ%¸ÄcQ£ ¸I4FŠºÖ/±ßOÑÊþû·ÆL‰¹Èyžsˆ‘ש·¨«Æ ° ÌÄôéàƒ ÉrGþ>T?,j˜èÑþn‹ÇÞãÖq{kç=Ãÿ‡š?tÅÇÇßÞ>bþˆ÷G&Žê7ªlÔW¯|D`Ö2ïŒ^3ºù‰¹O¬y"ó‰ª1Ç”ŽùÛ“? žZø÷¨¤Ä#ï÷Íe†k‘u’¨æfòÃd&Ø\ahn›Ëâò´¸[¼Í(+”pÊ€InUúÆ»s«Ó€˜Ò‘ʼ-F 4| 8ù Ï,+“—éª4«áØÕðO+áØÂ£yÇK;u^½H€N¬‘,C¯'¡W—¢×Ä‹â5…šÂ’’ü¼íšLüˆu°€ûÃa ú0/ð¹L¼ÀH¼?ö;—xn¾ǽÛ™ÍãW-Múµ j$7g7Ðøùâp.‡Û•gmg`"yµýηçìs7ÒHE¦ ô|º}…““kme`6 ZŒ­ÅMùûV—­É`á&É"Š{×øûÌ“c S“B ¿ñÁÝa“$2ŸÁwîÍú>ŽÛ±£{Oz×T¨ÚT¦'L¦ehÒKe& §ùð=’+òÕ}#‚ñ‡áè¯QÌ•iŒ™ä¶½ïüòìÍRIÄ;ô  ¸{%cÁÈ'ÐLàÜëœùÊ ‰ O›@1óG\d¯gà‰þÐL‚¦r›ßLA.ç°OZLq;…6±d„qòë‹^r 7ÉõÈߣþz“P#댒ØÐ ºÇÝe‘å<[:í €( ÅÜFýàp8øûo`,Í킃ž‡Ns÷ë´FÝH4yxûHn×HÁ˜O$LwÑfX ž–¸UR*ÒäƒY`õIù‡/(7x©Ÿ1ÔŽ‚7nE{ØùÉ NØÒ°!þ蔣/u¾ä”y¥ ˜B¯@mR%µy».æóáþ0Ÿ³>Ǽ/‘Àn´¨ñ–»*ÿùÄíÎ/ÚNuÔ¼c¢Â(OÖ‡•éŒ^ª’©dÂÔxÁZAŠ`möúx­R­Ô)(#GçÖ85®¬Ãñ¯¬½”zUçP;‹²¶ÚVSPö0/õÊ BîŽ:þctäV7Á“¹å^™{SëÊš€BËÑ h*JAËá84¾GÂþ?BÚ˘lÀ l”GïPضHt´øéç§¢(0ÌoYÛ¹ô|Ñmp¼ç¸~wÏÇ·N à0ð èE„E®)ôªÜlw3ÐA:Œ.¹tíkj=݇l´" Çù#cƒQ÷/Ãò›Ñ ,°kȦF=ÆU¹-W' óYØæq²ò¬;œY·ù„¤ ‡Ã¾}‡ÀÁî£ËSò6ocΓ° éxÚY[ÆLRRÎF°%·CåѸA9_#׈aKu¾wøÔ÷m(nŽhŒZvh7F{wtS|üVä±ï£[âß‘à 3'áÓ{`€“ÆÂ×P‚¿ØTŠq‹z(ž„TŽNGÑèÑŒ,¥ð5…“_h ;L`g" ¸Œn|@»*ì!§ÓìôÎepIz8ùØ‚²—Á+~… ¨*aC~Uª–°âJtdèž %ÅlVÒ½%"³sqçGN“bC©0'QxbU[2Žb'âE @ý¿@ýáCgƒ ª€ó<$ø¸ñë/BN³ËäçÁî%z‘‹®Ý"—ëeF9H4o¸"=«¯2à‹]Gc*Ë–§Ã°ƒ}ÔmøV0º¥ûõ®Vè×ÕŠ\#÷BOŒ#${EeóÕ™FÌsè1ŽDdnb`èÙvékøebSRŠ ¬⽯m\¬*0€@½ œVŸÉGÃÁœSàص²)Õ¶ÒžB9ÙP„+Jçècɨûû@ô¯ì¨ sd Ä(TfŽ 3äpòf-ä}cµ£•6’RªŸ]~EqŽj¬©îNóo[¼rå cü‰%ES † <†úö¾â÷÷¯…ÉPd,Ôš,ën­`¡FP.2eƒÜ_6»J±>YUˆ7[¨yÐÍi­5ãÍàg ;·ìLµ&;Výc³Æ5„™'ñIb[Þ†…¼·ã¸×àLt[u[Ôaž¸$dÜÁá{ý‰J^ž½|úêc·JhƒËèÂPé4j½@š´½ÍH™9• ²½ÌB™8NÐ ô©«4Õ†j@}öѾ;RŽÍ¯b’ªžàÅÝÿîÅŠ}o¿—3EiRyÜV§ÛfÄÌ@ÿˆ)Ó®wªŠB¼m#Gн2+~¹½Pb)ÉíÒhš‘xåês,Aóü¢0L’Äþõ²0Gâ¸ïñ‘Þ\zô)ZDr?º…<aΨøSíÔ§•wÎ2íBHM,nP¼±x©òÒ~à’{0ŒÆÀ$ò!7Á³aØÖÔ{FGoã3ún>N'7å˜÷2°EÕdjºnÁþ㥔ÅËv¾m “»ší­^¯xè0:Äo%÷661HŽB¹»ÕºƒnéåXÌkò@$n‡ g¿>ÅîêUìr2 ö,¬V §P 2LüjAÃÆ“²ƒ`?ØSlw¸nK™ir<|Ê–’Y–ý –±¿‘èYy ·ë`Ï'g¦M}e™ üV/xï>*=æg"u;ºñá¾ËMظ´…µ[™žV2-S“!•š€ ïûD˜,ÅýPŠ÷—ißÉDZÉöV[«·ÜÊè0ÙG:qdB8ª¦•«$<ý´.¾2­vFÔš«í7`j|ðŒ¿ùÀ25…OúƒEy¥šm)#˜“ý¦àM½R«4°ú¤®“×)ë¦Âõñz§Î œ”KSØT‹ßGö)SßÓªûÚ÷(0‹‚s‚sëçæ6½o•[JÊY¨úAùEoKugMgm§­Ü^n)ǰµ”ØKl%Óâ«WÕ®®^e•[eåÀª®”í8 'Ç×-ÿäv}S±ŒC%–l]”©Ì-Þ(Å—J¬iEx…Ú@i“"˜>ïœè‚Þ¡¸F `׈Vò«É]À%õ¦›Õ6%P•Z…^µMŽ×i‹ÔŲzU£¢AÚQÜ!í(<o°ëÀAÕ·›ü½åì5'~Q;Ìð5ÀÉ"ìž14®ã¸Ù°äQ^0¼¯¼P×[æÍarID¢×·¡8FE:߸'9 Ž€ó­Þ#x§ö [1RÀŽÛ~êšp5™£ÝÌÏÔîj á«d/ȽԽI¯,|ÿ*ÍÝ'ðÔ‡ªüÆüª¦£Ñ¼§I07eù¥ã¬ÝÔ~ˆ±‘ŽïaLÛ-ËCÁ4ÚÜ28)ºŠ=‰Z|åâ:ÁWhh¼UçT±ª©Réu‹æn˜ô$ ø0!L(ªËk+ÊË*˜²Š²Jo…ÓírÙ=Á_¦_P#Œ·jj ¦ŠEÊŒ»MáB²˜¤ÎB—¬FV‘±oû¾Œ}ʲxƒÙ`1Z€Ýa·XÃ;ã«ý•_m8´«r/[þ¹|²VëT`Šdæå«•R1VpPR§ôˆBÛw€*PáwzM}`Â-ˆrœÚ%X`õ趪È0Û;=ß’³·*°7ÆÌ ¤œÊ;Œ{Ø×€ƒ 9öC­Z'ܲ—±£è<]ŠvSÖVafš8`SÌgM… TP½ï5§¯8‰zûZ¯d³®"§ëWÍø{$©&C½"©šVŠ(DŠ*À¡b&Gb–Ú@ÙMîÞakñ¸ÀE7öÒ ë 6ú#=ìÏJL.~}UÚÔoŠ>ˆúYT9P£ÑŒj±B¢”HÞ$$)Øee5–ZQÀ/­™)~q¡pÍAþ~ÆÄ¹ v^žjºßvk¾'ã«Ö·Ÿ|ØÝuuÅÂRM©VÆrçf%ôv·²¯»}Jîyþ…<Ü;úlïØýàaG½½S?lã…ÁØ–®Â¬Q$Ž—kƒl*§¦ ¡©Ò¢í¤âÚK%Ø"<òÜh4 Å|Ž8wáüŽË ŒÙnsá¦rhmj©2­TMçmÙœ·Þ8dü¤ýˆ*#¹ûÁÇ5p0ì禜œv°KÞ(İŽvå²½>‹Ñ¡ˆÿÓèö= ¹`‘f#†gi˜\¿Ø~ÉeÂæŒ1E\6±[â” ¿Œ’®¢…WQ¢UnU܉fk­ì*\ô>\r.vT9«lÕ¦žëñ©™šÌ’Ò>’Ý&ÿƒˆÌ" ôŠb”Õs "§•–˜¾J™‚®?ªŸ«M‰ rÌmæ=þP ù e7Æj4g<òé^Äq€‡×w¿Rêñ#›~Ä5Bv¯ä½P:C°øÍä9™ÁD ÍÀ;Y ·ÃÕpL€ ÙœšˆFÂh–z­Ö¨‰Ò{áU‘’É ·«"v5¼ ®.ÚõjÃrç\° x>NsV—褆€žsáX)‚­]•¡šÍËÏ÷Ñ=´û£`ôÅh÷:ÿCtƒ“.Ðg±M8“ƒqd’yT.àe|rÂhŒ#ï¼xÌ]nÐ8é­¼P¹µEúšZÿ¡5ÁÍ“ÌùݧzhS\zê³Ô<8˜wŠ>€³>héŒã~#‡ƒêxFr­rÃz°–ÿ˜ÙuÒM?ž_·Q½Í³Õ”¨IœL‹°4S6ÒäuÔ»W_.¯ÐVkjõ5Ø~üîÍÖ’Ý9~ÆD6ÔÖWïö2*55(¥Š½%•Ueå• "ööôQ.­×ët:#f, P9µŠûWyyn–3käk/-Ÿ”áͪÍe¬:‡àK£5èJ%j!ÈüòÍMRŠû@ž6šç$;„ÑrÎ~­|cÖh~Òü‰Mï)|£c°‡ç%{¯_?\’¸Y5íõ\a™¿ˆ–Öúõ«iÛv°ßE˜v9º™|Ù^¯KazÌì|@;:-G—MçõÍtþ‹‰N‹´)oßï:|ú ¶,3ÂïãñSo|Kˆý  óÃÎÞ˜ Ûüý˜»ÿcì‚ò8æxƒz…Lh|Ž:¸7|ÍIÛH§Þ­,´¬Ó²âBYx ¨.¨wÉ>Œ—_Î?6®¥ÆQk­qžßo?O9Y¼¢QïŒw™ŠÎD£Ñg<ˆy£Þí š©kœOþ"F!õ“Of0tx{ÙZ= »Ï&~˜w1Ž{»½Ï‹6ÖëÖ1¨‰Ü^¨Y„—š–¹y–f&2ˆ\ %õÑÅ#W¾½ôÚ3•´EªÏÁÙÈcr¹˜E: •Tž]ª¢5˜âtŠÍ{Ö6ÎÔØ§÷ɾ3>m­Æ§=Qz¢$0Û&µ)5cõì—ŸùS'$%´Ñet]”ƒtkm*…A¥¦Q©6«ž×IÛ]·Õý°WY¹ÿÛÃrüõAo9Þé+Gk³—ã M… Z¦™˜ ͵xdt¥Ì|T£¨2Öqò DyËÎäì:wæ.‘‘É¿_*lËMM‘ÿ‡Qsévôñîi¼$‚d=j¹nmm;i9p0mt6_¤¦j¶•béSàNàlI³îa£Ec•m'ä'õ­ÛÃé–9V6ÏôæÙ_\'¬’ôæ÷>«ÖÜøo"'œÏÉZw2wIàÛ T»Š¼ROq #éϰ+¥@FJtRŒŠÕaÖh‚bg¾·8Pâ¶ wä¶m;YÛ¬¾µ£É_î9°ûèþs¬¿YÀ'+¼ò’¬µY9"&+W›%¤"ys%L\_ðï÷‰TÙÔmfzú‘ˆ¾‹…Ó`Ì­`„Ô¨¥à òRŸü(øä¾SÚ9 ºC>³#|ôì%Ç.Jhy»q'ØIÁ¯ð:Œ.l˜v·ýœ!û°ßýœ¤—–[þ#CäaäYw1Ý^jôÌ'~3/Ne¿â¸÷þÓÈø“Ÿ æÚî/¿>瘿ŽFJr[–!ƒ–þ–€þýïÅœ¬KÅ$h7´äµæ¶lt¥‚`eZÎ’‚+ëƒsA"HN'QÜ{½ãåþÑZˆ»_ÂQݘ< ¬OÚY´ä4Zr-µ•X„˜ÙÍœj‹¥Ùê< Ç‚ŽÀq—ÅivaçeËóäÛó÷#zb Ú•oQ[ÕN–çj` ØÊϤ“pјT¶Ç·ó2{´[ùdx»Ô²h jƒF)Œ/ZZ°¬`é"”¯ÌV䨲KZ;åm©pðV8d3¬÷¨Yµk:Bø«ø ä~àRÔÍÅÙO””{E®$c¢`|Ö8EFi†2kŠ¡LëÑ•!ÞŠ—î•ï‘î1ZÙ e!õ‡@ãC+Œ5ц#‘$üpöÕ8î÷!8k&q6ó «è> †9¥}Æ13§ó/¿ ?YN«ÉÖ;‡uÊŠ j¹šÆŒGON@cd…2)ÎF“h¨P˜Ç½ õ2¦‡|ø@ICd”Æ}fÉãð·)aXp+ð§p0Ïf`çÎT£Ï×ʯÍÍÉ/Èüã§Ó¾‡Cþò#òÃ\ÌÙƒî×)`}áö ®"š€&h¤Ê8—Á…¦ƒÇ­v»{r3i´é¬Z ù%…Z’¯ãƒõ Õ³±K¬Ö¬µhM”£X|µºN*-jw™Ço³Ñ¡–Žš}¬·ú³Á‹úƒé A÷ÒiŪB}FQâᢳ,ÿ%Í "SÄpŃX',òÁ~Ãâ~ä'P˜”@¡_$\¾q£N§Ö⬩'µ½¥¢~GMÜ]y»åï¾å ¸·ÓD’ ¾_®.w”—1pëþ«·ßýíÛûŠ+EÆøaf0jïPöE4oðŒpÛúùKM;| ´”ÖæèM: Tn$7·VRßPSÝz-!¼½:-AÏ¡ÇÑ6¸>ò1äÀþ÷gÃhÐ’¥ü…Œ ä¹É÷ó-Œ2¡áÉt!9Oƒ!âÅœ¯?ÒÑÀ —c‹ì ç¹È‹];Ž_x7mz t&=Ð%ë7lè :gá\_‰kUKb£ú_– ·û#OÕÇî½xnùe¤¼Ì3qÀãØeofg¤çoé Õ™¢‚åMÁ¢ºì|qqžžQ’Ó¯ð߃3?„ëà$øˆnEs'¿¶`š€æÞWæê³sF âœ\½sbש Ú¹¼m¤nÿ¹õ¤ Æ_¹hýäÂN¦ÂYe­Ô}7³ì¡éñ‹#3Ù.½õ Ž{ ÆEfñ°Bç!%¬„B¾0Ím¯—„2iî%½«4êêÿO/`‹ØYØ;¢éâî~}·Tøâ¸0¡†gÖ²T2—lH1à=¥³ilå ;ý^:°Ç{¤ö—žZ…Ÿ’%ÊÏJ¯/h¨¨´y]LJdâï,¨ï¡l·Å„CòëØ$þçNm¯ÁÝUÕÛj¥gR0,nþK«±À<€+$±¿þ‚ýǽ[Éç좀Ûr:x¼£ÃjÅ@u°}©-ziî¶-L-N)˜Ž’ßVcÀíô×¶„E~~a‰ºDÖËÿÍÛoÿöí}smT þŸb¶Æßbw{¹[É+ÑJd24 ]ƒÞèu€æŸB+à3h Mo×bʵ[ìVOŽOîeþ‡fÂW|À©-p>‡ÙínvŠÂm·k­\Z£ÁhdKÛ5’EˆÎùcßñ?X¼w#ŽÛñe¤‡×rpŸïØ(«·9¥¦BS%#Á&e~Æ–”e9³´³¨5$Ð58Ü(Í*·‘²qlf Öêé¸Ú~æØÁšJYem•ß Ôדv=ñæøõ/ÒÜDžœpsumCHT™CCªÇÁB@r¨_ÛFìû ÷°RLB…§¢ÏàRè =¦>Y]‘GöÖÌ〦d D4 V«KØÒhmZ;mâ”™k}ee0Ɔoöká"œ€Ÿ†Ã°ŠØ4Àˆ/ƒñqª˜ßûÙÜz1úþ¯3loFÊ çq²s-8#Ý€SÈ_»BaTƒ¿ø ÖDe ­;˜I¢çd1ˆ÷L~·ßäTó РŠº|*WT˜“W“ßPç« š;yivxñŒç3gm§b#ŽÉÔ/ýÖýb †ÿªÝnþ¶Ý~µK’üŸö¸'üüîPn”éä€ÒqT&¥Me.²™ MT1g,"W#’M(ЇÒ?æàfð¸vä?»)Ç|Z¿^*S(€Èl%n•Mo5˜ÔU&ŸŠò@o1¬9õÐl@—? †û‹":?ù3§õ¦n'Œ{ð¯ìáëcΟÙßBT×ï7Ibw}7ØQ¡¼{"­(Ò!9 &8QÔÙ™ÍiÇóƒ[àÂñpWÃ%ËàøJ9É—(îþ]é+«Gr»´:v\Ó3ŽÇZl࢑˜aÚYvZ÷úZü-mu»°p¢§ŸeÖ’ Ç$Yz¬Ѩá…+ÏiÎ1LMÝÃ0¢sÞþ"òŽÎàm—ê©!·¤i¶™;Þþ EÆb@¥ng?V¹FºôyIQJNo¬P­þù*˜>Št6G¾7|};掴¹ ¨¯öNy}bÒô¥ó™¥ó’—ÌW*uPJÉ00Cp6;"^g[ƒo’Êñ¶€4S¸t!>ÔÐÐм~á««FS0æ¹OQÌsãgº3÷6Õùš$õ|­Ö´ô/¦… ±jÃè—¿‡¯ÞþcwŒŠtñZ«8¨S ‹Ö,O'aò5‹ sµIí0:ö~PÆÎ ¸W¾©Ÿ0›‘’ÆÄìÉSÀr0¯^p„¿XÕ\ ‡ ê²­Œ†“Z˜ÍcV‰AòîkW^¨d¸ç¯Õ¿÷îŸG|>éèø7žÝ4.3PÐÐPWÛÕòÙe¤‡¸’˜ìz¡Çýäÿ~í¿^‘a4ð/$8ãýóUW9;¾×©Je@ŒÓInuA}S¹¿îðÊÚÍéY¥E¹´N¯Õ°£ ’ ¹]äɳç™(9g¼ c`KO¯r  °K¿Or?¹óÞ‰OBu*y«‹e º «5Ô/©¬wÒÆîcÛE˜øàÿç?ofÛo:ùÿ‹q{Xø ›˜°ÝUüÔåÙMK’Wl[CKw&Wm/4`“ìi †Q<eüÈùòܩϚå¢ -Ì/”ØK> stream xœ­ytW¶m AUll•{È®ÂÛ3¶I¶± ˜œlL6IB©¥Î9ªÕ·sÎAR IM‘Lla’ÈC°Á3<8û6¯˜÷Þ­&ÎúßkÞúÿѽ¨«êž{Î>ûì};ëØËÉÉé\8~ΜAäþó´‘g>º=µè– ºut=ýÜ¡13¾…ÿe×é«û.¦YÙB¨–˪¢ú8ƒv– ye@„®*ÃOIþÊv\ð¾¸h5}7c^Lç: ëÚs¡%3•ÇvUí z“ÂÎæ\v¤‡]½ç~¿’>¢æþ‘íH6Ÿ•ð€Ýìvòü'W?¿Ô:ö7­%Þþàå×èjümç‚Óº+äÝE4éŒ;³µ=73 s†·ºiaì}@ªqöeÍpv8`ûö™«ìHø²tãßýv vLª|•+œ%•FF]8{i! õ8û˜ë}8|Kþv¾‰“û§NwÑöµCMöh”"Ú°¯,–ïmŽ­HÃixòaŽígzPߢ÷义¡EBÇER]•(¤A9þûÞ; (Ç—'ÇKñ Å›%» ‰¿ý ‰ßFCœ}bÑ"IÉÚÙi<ýèù£‡r¢ˇü?ð3ÀgF‘Ç>ÝsäúÎAŒ Ú|?2Kz™0ӚλÚ#¨ì;¯fZyw„X¢0”XP&hj§Ë‰Ðûã”Ø‡U¶Ãá°¤fÀ)ì`†]‰ å‘( ®c¨7ï(xÅ—ÌkeŸï;p9˰ÕÌ¿äá\›Y”·õ4¬E+^Ítÿ„Çb…Z$ó)b œ„§|¾XLå2…™Cx“Ü%Éue´„ ¾Û°fIbAÛõ•>l6ç*› »²³vãF†M—9Ø ®¼tíDë”i.z&1f´é#溪ydÃpk.NçÝl‡8³½}ŠbïÍ쾋L+d(¥(¬BûÞƒºÎU¡ñ¨Õa€Ú¸È+DRí¯’ˆe‹éél `Ì: 'K¢†h4â\Gß €ÓÂÝÐ(vJ%C‰f{ÀÅ8µšfâ%c¬Ö篧/ÉêH1}ç œ¯Ð ² óH´×ž›Îk†…ãP¨ȇ·y‰zM ‚fÃÅr­PРԻ>gÓƒqêÃ*•J"õË UïpZð=ôËPØ.hŠ9ÊUûù4K@ÿr7ì§©ú yÑ–‚d<’jZ1qVÑ‚E"€EÜÛ"Êû±öBùêAÝú1›­ÕDÊ–$ D5Ž×qÔ¤ò ™™°àÿÓl «-wS‘ôû“ôwõY´Zî’P·/ê ØŸpê3ƒÞb(@Œ(b¨[‚°®öiL‡ãagøÒ´¶¼³iM÷ "iám*Û©Aýqý·¦`v˜bÊ\Kƒ  ì<çn¶z€ÇâÍà½k9IµT¸Ì²–‚F{,Æ\&âêB¢Ve¤×K\+9”í$x‰}^¾z3&bJßj¢•y`ABx€¤Ö¦T TRPR-‘0¯s@ìM üÊX3u=ä¶“iØ]”_i‡ƒ¿½’ˈWªTbQ5üWlw9´ô/€<u×5ÆO4HìJUE뉅‹« EvÑP ‡Ѥ­u†€aGýo”9Åb™¾ôÁ2s8çpÍQøÎ›œÇÖ Ô"ˆ”6,ۧݶ¾ )’‹üê:ú3<ö$ãr¯˜™¯ãIC¨ˆ‰K5eŸ2Éìc—âÔÎá³Kf®üБ¦a-‘0FKé7SihD@$£Hç@Ú˜( ¶Á×(¥r"\ÃÀ6<é F¢*%b‚ŒvÂë½HH”Y¶ hR‰_UwïaQa¦36j†àâÇØ³jpƒg;5á(¥µq¥Ï¼ˆS ½Î¢/¨’s˜Ø/Œhct=…M›ß0´aHÓ[î oU xD,ÛcõÛ}ëØô}Ë÷6¯%d=‹xP£$ârMíÏ"îEœ¯T‹éÂlL9'Q8¶RW™£´‰•ï›a.Ü v‡¯æÛÃö°%BZp°05Í¿È]3ÔVÒÞMpT¾£ÑµÎÖH†ðDÈ“LJÝ"†} GåEŠ@`ãóÙ} l C= _ÌËAõj]¹r©r©fÉ<¸/ÿ0žðg QÀ݈æ„@Ò&˜=pž9šw JPÕÅpD¦+/j‹[c€ ç@mQ9vÆÄ)#_9­ÿW£È¾>…{P-_g+^JðQîj-êxä”Z²Né¼Öï&å!SŠ£’æÕξ×óc–ø˜%·³„¿Ü#ß Êo²Å£LÆÓHpÔŒfTÓ§"Hnè ø*zl‹(¨IÒwªpƒß¨ö/…$z/dÑ—ùÊ ÆõÈ@Ìáî0 "F. Ý!äîxÐ O…T:'óôÙ\HÁ9<¸ODMŸÈmeV}<7>å´ÓsƒØFK8Ø®¿€ÝéÅX$6ìr£]€0™¸$%f±TC ‹W(V‚a`ÚáUÒr”;¾½í8¶Ï²ÿ“sô8L¡\v;—7\;Á¡b‡W/ Á"r,fZgD楆Ÿ7äŸQ÷Û6´lÛfû\"a.ö˜÷êZuû­"Åî"PŒ|áNbY®7w`'ØéØak°¯&k¶Z72€·€­ UÙ\j› f‘lWÌoòW V/0­@ÿ,´*nè7Y7Vo"qœ0Ɇ)(Ê)H½…߳ʕJ¥HÕG™ŸÙô›8熹_ª÷õÄn<î DâJ•NϹà!0 óñX MUÙe ûäA|Ïöø¶„^«rÒnEHd*œ¨ß?ÁQöÎëË_Ø]SÓД¥eS{î£@B³2x<’ErS§ÂÞø¯ÞS×ÀWàæ¨Ët‘¬‰#‘ ¬M2?±&4ÁnÄãñEà° xñBQ¹º”Ý€¬ø(sðÀQøÁQ§(¯ñ°ˆ“h›Žô ~VÃÏ2/óÌxUr™{- ‡¼9õ•2WI¨’±V;Œ#iFý .Pê*Hêê墢yó{={-þ¶µÕßAïL´n´Bº ø$›ïKOÇ–j‹ÑBj‘I%¼V¯ÍËÔ+SšÆ¬ëW›Ò׫j™« ™fàÙäŠÚìâ€<b °%I±yYtÍÊd"ÍïhxÀf¶yàpã.d—Þ‹§Á7F×hÒ@€UK+KÔEÊUÕ«ÁJ°Ò¹:Tá[35“ho»!DþvßöÖý´ o5mYáœOêˆyK¼K›ð¶7öÞOPáíY霃í°îLn¦ÀÁ;”ríuîq÷^†C†=Úskׄ–YV²/o›KæIK«LEÆ%æÅh’ 2zÞõÌ‹,l“}¤Ý6r3Žt Ò1aP79RàÛ5Û ÙcLM@Ôä Êu²¹úSž¾NŒÒb£b@Vá ™Iªqkì:&P¬ôñÉJ¼|*’•qãS£a@/®B d ‘µ„ó/ºÏáS€ ãÍ`ƒ¹^´­È8Üú¾e9ºi9)!ÀÄš1Ë×<Ä–h9rùî.=ÿò¿w¸gýß$Äýæ áÎÜåÝh‡ÛÇÁéìk(Ý7!VŽU]nn(ÝÈJ-s¡@ ™S ‹¾Áw¶–¡–_DPÒÙ®_µnÙu8%uJ$Rc mVÔ𑘤vW™¶§˜Ïˆšíü¦µëHjמäú£¶Ý¤‹f:.QìY ŠÍ Ä…œ' hj™[lQµDÁ>pQ•gÕ[u@GV`š€²J-ßÌò ¸vK”åeEÎ/PÏÙ‡4ûÔ¼Xá‘sÜq6«¤³Ü‘=A ‘‹’8Ä4û'\*¬.„tuH‹B#¯¼ZV¤ ZÖØœ¬KÑÔwIɺšúÅ„MÁC¦åŽ2öž„ÛNô .Á®yûVTä­/.þpnÁ©±õÌäZv¿‘ÇŽoI´‚¬Ýùž@~>)ñˆîn"Àa÷•¶°Ãê´8¹®eX‘œrɯ®EZ6ôÅÿ¿î@ÊoýAÍ_‡,_Ì/‘ÐTx½”Ÿ\QPŠdU‚Gì™Î<ƒ xîg@ÎÑÈÚO$¸£ª¬ ܇Sâ–õæõ)¼¡Þ¶Ž¡v¢Á+¤'Aì$²©NN]'Yu-`Þ€¿áÑšD ½/:±ŒÏ.bÛó5RðI=Q3Åéæ4VÀ:±?÷{6§áàtÎí°Õlü'Ά%H»»9ÿ˜ŒÙ×3æÒ'C<´/WéJ¶ž8ëj‘@ˆnªÛìßÈk»'Ž{õ­y£V,6ò£CÏ™$2¯×d½8^Y!—ô…ßÿìWØáìæ¡ƒÄÏC¾a;.]¦­¤D³© mËÛwvìX{†kÏ'à×<×a7Ø ª­Õ ­^ÔLy­,Y5žÛ<}£7ûÛåm`gÉ¿}ÿ$ò–œ½P¼âÔ€n–Bóöâ¹Í'i?Þ®o&’cfM9jÑé#j:BgÃì¼WŸ0s8F%Øá4Ĉagy,o»°SI5a•„Qî¤ nA:4A† kÒRkKÆàà °$ áó…Ü FÆ´d0.àÔ&=\QP¥ÐV"ŸÁ¹Œwø÷`ÓÖ4\˜ÎÛÑ^ØèGê'8~Λʵ¼B²8$ÇýD{ð[6˜ÓPn¼³}BI}w4v|ÛÙ^àæ GûÛI >€í8»ï¤Ã‹O ê§ñ잇¸x¹õô‰ ŽtÑZbÔ°“ÆMÞzQR„[QJN^n9xôxÑ 7­'&_S8{BËQ}?P„Ê‘ÎÛ‡ÄÇå±gQ-2}aŠg8ƒíÖ[–-r„GJ 'ÛçÛ>1Úcô½\¦ƒ¡ˆÔ¥ò2Ïž›ó’—wÉÜó>§ß BdDé—˜j€ÙDÿË-ˆâ: %5ZPqLÒü<âÛ°y€¥f±O²Ø(…V©2´7UxËÉS;>¢Û.7ß·ì=>Ãv¾¡ðICbTœšGrÞé..eŸæB¼Ã+‰­”ÄÐÞ½ @Š”b™4 ë™y²N–Òô¬!*4•²Je¹<_¦Wª­&Žý^”ɦXs¤)äf9’#E„Y‰U’BTÆê݉"ÀÆšM`c“¸YÚ$¾¾x Ž šv1å¡Ê@e¸ÂÛÓJ¤¼uáº@C(?ì ø@:&º êñZi‰l´¢ç!"¢KðÅ ¥€ÖÜj%Z ".‚»ŠÐ{{)'W`â§F¸CÈ»ý|@AÇ*P/pJiª1{„ˆ†¹PbZËüs9aÓºsô„CqjuVšDãÎz†jŒ)ýÂû¢¬³FPò>€/äÂì ´*AOvN Üé¹Dhà£Å~Uâ^ˆpzö”V s ™§0é¨"H %iøžôû£A]ˆ;¶àÔÛÙÃSDXfƒùgÁ'pÌû]κ{u¦ÓÝöÙ6 à&<³’Ž6¥?iö»"n%ÃÒ E¡‘/–H-)™¦’óRcŽoN­ÛÐRÙ´‚¦®«Æ¤©~xòqZ”³»nAè·ÝÎå±ÏË Ù €íN²O}Ê΀¯Ðnö¶ÁQöðñB8}6¤µh€Mýì^§}çwJ¬k®CæÑŽÿ¢ÚÀ>F€1ê·WL¯-Zf&kð!` 쬼VášÐ#*çv.ÚUe4fD¼;Cû|•šûŸÕ7ÓÔ¦²Šp —ËXLá«dúgjñ„6(¬4VIµ´xUiÑ2M¥¾ÂÖØTùNeÀ¤ ßìH…škï-4]x;*º«<=¨Å…&­²g'zòŸO@gÖ-YÕÑv$Cý~k˜¼=⮨u‘uʘ ÆÌ5\`Æ”ÎÉÚw¤×Í[Že AA°¢©>mð˜<†û_ßeÔ'T'ò¨·áäL†·ÜX\Á/1ètZ &)µ,Œ& õv#îÙjGp© YTƒ>ׯS6´¶la¨·Ã dJ] äï-¯&«q…$^}PQ()xœî’ëÕ­3†ý7B½•endstream endobj 142 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 5022 >> stream xœu˜yxSuºÇSŠÉGÈdLowÁ\GQÄ¢,´ ¥‚”¶´t_“¦Ù““åœ7ëÉž&iÓ6iºÑ–EÛ*›l2â ã2Êܹ÷™õ^}~íŸñþBufî<÷æü•çéÓóþÞßûý¼ßo²sç²²²æ½–WðÊÃK—.Í|ÉmäÕ̘®ƒ²á†¹Ü-?[½/^øÅMï.d>²Úu/Ö765·(Š[w*KÖ•–­ßU±»ªºfÙâ%.}D X/¸C°Ap§`£à5A`“`³`‹`… Pð¢`«`¥àAÁK‚<ÁRÁ*Á+‚Õ‚µ‚u‚|ÁÏó× n,ˆ·’’"ÁѬĜsF²Çç>?wüº áý¢lÑqäš÷¼?]_ò“ô ®%7vÍßrÓ­7_0´ðÁE«ÄsÄâ_ÿtáOÛ%ßg•æ?ç‰À˜¾?‘5½íd6îÆßK ýúÉ×àYh[¦ÝÌZ+XÉcñ ëðð>Ò¡A&Tê+MUÛø5RºAW MHëÓFû=Ý u7Ä.œ¼zÅžãywÕçU/o~EflÐ7B=*ªýxøóÃí”Ýåpƒ9Dí2)-»UVJWÞðêv@­¶p8àôWæ vœî>=Ãu¹{ Ý>\P°º¶°ž"µ¿{@`ï7Èñx4½húó«U_ß,ŸÂ3‡è’_ þŒ\"ñAØ×<º»«¤÷ Ç6@ü¡‰¥`D㥮nVe°èƒŒç6”ºŸƒrl»ÞdÒ郬W†;…âÖö(Íý5\N=90Ü3SèTÁGOP|ƒN‚× ßëÍ/”‰Ço}ô>>K£±ƒ–zTh09üÁ´§K6‰·:ýNŸÝŸãIHº>kÿ¢û3WÌîv"<_8tÞöÀÓë~ñl³LaQ°r@ó¿ÏúÛw?Ü žsÏgãÿšÎ—ð?WßÉß ¼ýbü±o¨€ßüßX‚~µí󻨋|ŽÄVF—ÊÏ—ÜwŸ ­S™’DŽ~®ëk?Ýuzê@g,ÕÞÈ)<Ü‘_bem`“‘f¾_,§gHgá{¿Êž)™É’4¿——ÚwÃ=¯æå=öX>ð ¿àcþvü –âì?b4Iìn‡Ü9,gvÒÐPejÛuï’{ù¹€n_sõ[|÷x=–~-KNuNúväþ§UÐÆ¨d¬…¡ÁŒ ^r ¡Ïa÷;¼‡q•Ôt…Aä¹ÎÔVº¡¡šm_¹í5™¦,šÎ?{³ø Þ:!± ý{›‡á{®à¢?œ­úÍ£åЦ™ÑDŒ´e¬¬¯ ^å]ÆRÖFÆÙJÆÙêÛã!'勞ãäm%êÆ2ÙÃü_mj[›YC·)™6™„†VƒÙiö°( L@‘€$¤ É v2.7ëÊõs\ ¬¥Œ¶Øp¯ƒKã…RW»;êlGØŠcÛnÓnc¥fƒrcñ6•²©µж–Si™Ýïò;üÃø©wÐß•ÞK£í=Ñ@ûC[wÑ@³4¹£¬¤[O¯ b]?½DÒbQ·B j ¨ý©ä;kƒU›+¶—R¦}Õ}ŰKŒÅDÁ–Œ‚9ÆÓÁF".*8¹0 . UÛ3ž¡S?ŽçDzñœ³’dOgªCjÝÝV]óâ…†£Ÿ^ø¬_æiwÇ †¼"˾¦Á’öí±<=œuOîßû. À ÊWÙÂ(Û ©ƒºho{*yrc²ðéçÖ?ÂKñšóp+µâ¥Ò» Ãûô™X{gæÒ4ޢȯOß)±ÔkéºüSR³Ü,gäÈ"ÚÞ»íØ¥·¾8ÔE9]î_XÙa†rÐñ·? ¨ÙË8‘=Nä;ƒÃR§¢!@ 3Mq pž`€viišZ¶VèÝØëÛëÚ9'êÐ{5»ÍU fªš¿‘1Ù ȱ€Ùn´F¨5X52«Èaò²\FÆs¤Ì}zèdöôü)I¨<Õ4 ïAçÉð[™ê²»ÁE¦}¶J" F«ÊX®\]¨ÅšŠì ¤½iÙ¼’ë î. ®§[Zhjߣ-*+x•¼]Xâ5¤aΦÎvöõSd<9ÖËpÆN©¦»Éß+aÇãúÍŒ…1°Ñ^+ÀösÑàHòøA@QF]¥®Ô×ÊZÖ×­†5è…ƒož™îîÍ€6ôræ +ŠExé)üàI"½é…‡%axÇ;òý€…0„¥=WÇ¢ïÁQ”4í­jnjib)h ë}Ú@«§‰¬ÞTG7ÈŸ­âoxˆ®Þä4Ã0Bølöz‡¦ðviDRÕÓòfšÒmU®¬_nY™cASeÞv zµuß¾ é =È8G#è(ŽJX½Uo3Tð·JmZFeÖÑm•N£VKÛÚêõ€Ê”&eŽ߈o8r¼ýä¾·¢ñ®xÒNÐ} +¿:C„³Ç˜®?$%žXºQLi¡jYe=4 7'•#o'ûG’TpçxÃ>ø}œ8åp;=à!GsÒr[…š¦”;K·ªRïIM8Ûe‰ÐDp"|,òÙ)r Û!j ZÉžWÕ×xóÖÖè®â²Ú2%¥JµŽåÞly¹q-c&ü0ÞØ¼Q&tSí£ž´'V·[iUÚT2ýVm‘®H³IyÿË •GçÍàäý¯f‚=DÚ¢c¸î\6ÖLçHœ1êq¬‘‚Ãnâ,“ÉÈ€‰ª³Õ2uŒ†QÛAîl<Ÿ‚*ĈµUmÕ<Ï–j 5…ð:ÊZþ9^øgü^x¶üË'vîjª­¥ðÃË%¶ S¥qwÛ+-Ïo,ÖմаXwlL9FüÙŽK}{"]‰Ôÿã«õ~GbúDÙ3)IëãEü‚{8œq¹„=‰DOÄQ:ea©¦ºfãDíÄï/}þù ,<ÂùG?ÁïH^‚Ê(ºÁØ"7E§t…eon6åiGö¾ßó~ç ™¿7Ü i4*/XQñÈëŸuš³x¶TÄC…Ç»OLjw«µµÚ*Cƒ¬ymM¬B«ˆtuSïï EÆMdO¯š¾QR߬¨S„µñþDjϱMý›ùÛø¹ü£üO9²ü?>ûxÿ;c2·›óÞ9D Gs4èA]¯×ïØùZÍz@´°€Ó‚ööºû㟦.;õwpÐ}š`-¹Ól}£ÀÙg'ä3²ô"ñü—™ɶvnönroŽðwù»Úù»ì[s'´ƒ7ÆñçÓÒ@<÷w »P³¶mjíCßÍ•ŠÝe³fCn“f,4/ñ]Æ5ˆÝöpÈÎÅ9BñRp@64ñiÜ„ã¹>Ÿ;œz¼e‘“æîÀ §mRÏ@'G€×-än/Çâ¢íˆ¿[Xt“VÁù¤´Þ¤#†ÀžålýR5^¦ÂO*ñã¶”4D»ô¿Dh0ØÔštÈ\ÂÎNV%³‰-·(øë¾+”êŠÕ¥ë­H'Ô-ZÚMs2±;t„rÏ:‰€‹Â¤N—‹uæzýÎHêÙ:8F–’3ê&No“:Ãîˆ#üÏFðš4©¦Ÿš–H,gõ({Bµ°Š*jj6¬/{ž€õÿJšY¨¡ÿE5Îì2•†ù;`5¥¤‰ô%=Iþ·éY3çɱ‹¼´Ód63`¥jˆÌjÛj‡VdtY‚TXM^;2˜lFÆTÂ?&µÈ JäHµþïL»Mj*ÕÉ›êÍTª:9¡YUÓÀq™°Ì7Üqy/¼ì¼² U²æ³ ×%ðÓ],Ù2ÂsØ2r³ø þKÆôÞ¢YÌÏþ6´|x1žóÉ×cgÆ(§Óî'òÐ~£Ñ¬§­ÔöÂWK^´QñÞä”ÿtÌåaÁ)û¾Ë‡çÉÄ¿?¼5½…_±ZXk.¿A"þý'Ñc¿½’;Ö]S}»*c‚ÿÖ&hIÍ<™Ì”°äêtño2‹nlf³„W4ñÏðàKàŽý<Â7WF­q[ ®Â×oŸ9ñ§ßþKÿœì$|ý|'ÿ%>h±°–\ü0ÏH4ü=ü÷6D bòš-r%4¢¶ ª;Õ™J•¥Šù9 ~ñÝ­k´™H¢ú—i¾—dÊ6ÂgÜwÇã©ÃïæqV÷ÿAqGÓ‡ÝP-ÆFsËmß=#5”Ê2®¬`CZNÝÑëëNºI¾¬‹zú‹O!Ç.õVÔ½\—ײVf¨ÑÔB%²‰Š‡ªÇ>ÝûÛca ìvGfe˜Üt+Û¬µRÚâ†ÕE€Ôt0œõùze‘}‘ñà~.åí…>ôÉéW_ÛY_VNÍvö•Û#þo#“øŠ±ò9õ–YE܆՛¶‘T|… û ­Í†:c³L¹UY¤Üª«l«„ TÒYr„â„g=ŸE¦®Å]×lÜ¥+8"¾')5%ýI_·,6ŸŒMÒÑ=0ˆÆ›Ç ¨K¸RÒlkU•« «ã=݉J|.®‰´Râ/†µåþëÚÜ„Û$ãÆ“jØ*‹šiCzÑö®Mï]JüçDˆ²ÏêÅKRšÒa$öQ_¢ZYDl™5ζ#¿zý=Î1êpbK²(¨wêœzà8ŸÛË{ûð7CüV¯±ÑÚ¢$)^Ì„ŽdßH}÷n^ð*¿¸êŠôx/âãOëšõ´>³Ã»¡œÞÍh3Q 1”K‹‚XEL+ÝjUò·|7&e‰^HW•!c¤ÏÓ›ðP}ÁÉàTh2gþ÷‚ïµ$ùÌlRdýîx6›Y#Ùh~ÞEê09-~*$Œ÷²mJC£E!{‚ÿZûzK>娋{wÄ º;'‚{=RWÐ…@¦,Ž&YµõšÕ6”+_!V[« wí¾Ø'Ã?™npxÈfö怇!ù(³Êöýø3I;þV ™CÅÛY…°ºº¡ÈgˆíRG›ý-ðÈ—é·°V}-wY}>—Ûã Â‚_½Er—“u1$wqÿÈ]Š<>ýCîBª°!ÒçîéæÈ7vôî—_BΈ·¼¾X[jØ)+â7Ïþ]Ž]EÚÄgô»}\÷Aœ'uw8Þx×±#Ÿ^’ÔlÞ ¨C‘auëzù:C­¦ª‘Iä*M׌Á;=áp»È1‘×â4ÉíÍJb»Kò‰>¡Ön °AbÎèÖë8Òq8r”ëñÔ‹ÎìØ»aãÊ]¯7ýà¡å}Ó¹ üó‹iEÖ·{ðø‡Ù˜Â $äœà”Jvõ'”åfs~õKo­ú5¾ÏÃK0õAÕW‹ßÜÞZ¿[6‰ » =Ö$ä|¿|g‚t‹,rä±8,&£™1S»4¥ÆR(†Yœ±ÛHÎ2£bèõ¼UjQèëÈZ¢f Ö S}Ý£1’è=ÂñÈ–2™VÕú*s­jmóºÍÅMÊ]-Ùe“Èf,ß*ÿ«êZ¬¹êfñ¹ivÆ(!á_¥5ð…üc¼€ß¼'oÿår—ÅC“Dçq¹ÝÁ–$‘UŸ2ž‡s¨K䏨~©ããýø©Ëx¾gy5QêSÙ8AÞee™ Ütñ¯zÏÿKdx–©–µ<¹“ø%þ>^ċԚŠ&Ð"‹Ëê¡ì£# â"ü(à!ÀZøc#ÎÊûÄ궸ÍÀ,‹fá•s \‡ðsßJª¬µÄ7%TƒéþÊ-wvÙ”‘–\ñ!Û(ÉÜdbFJVͼ÷ñû§³§˜yH¯iÈçëëùúBCqÓË»ÂY™Ÿø.ãEƒßÆŽI;ÏÅ.ÃGèbã¿ós¨ üÏ$ôƒu6-U¼ÐzÏú­ŠÖš¶ZØ•ië»($‚anˆ žl'Oüãè¯Þ9žèJ ÜW¿šdhÖ"û¡’ó…òK Hà±Ä"|•@öÛÅZ|ÿ'’‰á}SXp?ð³peçå»‚È äEð?·æ³ÂÒJ0S©º2ޝ™†Ôf«ÅLÙDv‹Óê ³n7ÙhKѲ­r&ÞþåWøi,8ÞÿúF~NÁã­¡ wmjÚ¾ý7J6¨V³66³zhŽ^w ŽP£0PÓ¯@âwTݽúÞܯaò¿c' -2ë5ºh“Åf²QÊM»ò_†µß·Ⱥfiͧ®Ï,¿až@ð?Û¦Óƒendstream endobj 143 0 obj << /Filter /FlateDecode /Length 282 >> stream xœ]‘±n„0 †wž"o€CéIÈËÝrC«ªí @pN Ç }ûÚNéÐá³ô~âú|½\ó¼›ú}[â'í&ÍyÚè±<·Hf¤Ûœ+Û˜iŽû¯i÷a­êóë°~}¯d¸Rñ·áNõ‡=9}dËP\&z¬C¤mÈ7ªzìSŠòôïÈžÊĘŽÖˆ76ÈJXpc+š°à’gµ*£ê pDGTX«PhH”OÖ(Ê߀»E'Tø”s÷í *\Y9‘À*¯ò-*^BznôÚ쥹ãŸk%FÇy;Í̵êŸA2ž :d6pÞ ™¹Êõ÷$7);9V`âsÛ(ïº8]ŒìcÎô·ÛuYeÊ0Õv”endstream endobj 144 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2710 >> stream xœ•VktåÞaÉ2áD»6«v†SmUT.Ç*rl´“  ›+!· Éæ¶÷Ë̼3³÷K’½M²› ÉRPrBÑ--EÛã¥ZηqRéÛsú×sΜï|ßû=ßû>Ïó¾˜lê†aÓrÖ¬Y½háäï};DþûŒqSÌ”ÃÌ©îûfüãN4o’Ïþô™Ã2¦Ïœ£š»­¸¾H]\Y_TS®)/ÝYT\£)¯¬®ZT©Ù^W^S/“Éîz­&WÛürɺåË–®¸{f–êÞÙ[e²%²Ùò²BÙÙó²'d¿Í’Í–Ý! bvŒÂhŒÁce?“@ɦbwbg§\–[§.›úm†S±V!(nL˘öô´/ñc™+3ÏO_0ŸñpšÊ’ãXK7¥(£BÊC;€U+Ùïð±>Bx@± ¶REPkø:8<ó~« >žtwyI4]ìKÅFáõ ›Z^£T:Æ Å0‰>ØÃ'a/ì£R“']ˆúŒ,MšØJâÐÙÑþɲ?ýòÑì0° Ð*0k›Õvcb ×ûÁAÄá"‡xꙌâ@$`3™ËÒ|ó°úó\´°þä…‹ÿB3úã‰î¡î“|õDp|:b'TP•PÅ|émô:h´8)7Cz™$ ÕÐfЙMxVÄ Iô¨~LÀÒOŽÉˆYJs9mÙ¸ÞZ³Óî!{!!ÙTÿd(g¢~#´m·7°-v÷ÁªxÙÛ€#ÍA¿F~±öÜÊ…¥ê Òxlk¬6ƒVmjj*×å…}ÀùXVp¡KÑC)ÀCíæâzÊ`o&Ï”îÞÞx¸c0™p‡î.Ëϯ§5“åÏV”¾ZwÕÅÇȬñ1H¢SI4ÄÆéo•Þç» øn„ÎY 9T5TÁ³|Õ$j³A*Ÿ"\覽 èÀÎД.O¤²ÅQÅ ¤÷¦xߨ~bŠÒ‹÷L dÕ´y9àM&iW¸ø%âd Fú@ c€{$"øM -©†°‹s².òêÍ@£Š"qiý£öVã-³ðÖŸ!+}Á ¯£¢ëAKÜ@çoÈÑßÐ;J×î®Á ÝÓUÛë@ƒ·øµ½BxøH~{yAÙ†z=Qwn½¯ ðû׊ʺɺxxÎË‘7Ïõ 4T6ç–ˆsÉ–5eE[À õÐìq 1ˆã½»<­;ëjwl>Ü8r.uÑÅ’”ú$àßGÊŸ (m·ÐdÅÜç5;W·ô.Á?".6œ÷( xÎcHuUyl4Ñ“J{êh*õ÷Ï…CàÀ¥ã´…¢M6bgaC‹4 ïh i»š£€¯Ú<¿ÁÆ[½^ÎéâÈÈÁQÖ1ˆXºÌí~Ø ¥[çh[-Î~>·l-XnÎÃq~Ñ5Ø×Û]à3õT…Â- À¿Ewõ:íN³‰¶Z(²þ…µÐM®wy°ÕÑ4´€‰Â³ÆG~´q*}Eé'?âqg€LЬ€2ªÊ¡Œ¯ø?«ðÇìŠne(qêDA¶X›Ž˜Ã [*ñE£éGB9Oƒ‰œäq{óŽ¥”Êj`´–Iåõà /éRÔžÿ)Ïgb dg nÖÉûQvº'ÛaÚiDÜĵlw3O{ÁÀ;Ã’¾ÛÄ"!òIº&‰~u=,`Go  7äiyúå5EÔw[ÉÍäSŠR8bí—\•7êˆCJd¤i‹ÝX­x}XÙ†nîÚVþRÓC; keÔˆwâ¿Sh%—ÐKo Ï)VMMóš¾ *»d›ÚðAÞ›‚¼«) ­­ÚUüƈæ÷ï Ÿ ý§»Ð,Ö-¡û’iq/–^™þNéŽ;\ÞË푪‰sÀ¾¢Õ®¶×’Œ–Ü·ò¯ŸótpD/ú-ë`}À«&±G`‹6O|6›¡mm@ãV§Ííc.âZ°;Œ|Ÿ"v³•Ò3Ôdª“¦Ê0T¥V ¾\½qzÉ8$ظäÐq¦w2ß è£ã€û&Eg†Ú:pµdoæ¡Xp::$Z„Õ±ô@»šFòñÅi›2àr;ÁûM^EƒEGL¼-¶lfèU ÷Øü¶´´´pÀî÷zý~‹Sï"'Äfd¡>q} ­º‰¡Õ‚ma•çêö©+ëªk¢µ{A‡×Gð˲€³,ÓöLY^Ei0H$¥p‰0NÿG¢LBŠ7±k7åhÝQeBÓ]U¥ÑTUuk‰îî‘•¦D>öý+QìÝôÏåéÇ7)%^I-ð6f‹…²R„øõkl’·£2xMþ ﹤ƒ_‰•1ô’^ÅP úNéŒù†À‰‡ô¾fªš)3âPz ­jõëC±@˜ç‡7xdÍï¯9`ÂEØw ;î}coõ BWWg(|¸IÉSFÆÞFÍ/4åo¼†ÚozÉ8’ñ¾!G‡ÊÙ%]èÂÃmÞV[-Sn&6‰yú†"ʨbl… —¾Q³çXÂwÇ%Ÿ9%nˆ¡'tKhSÀnM™}UvZ~kÊÓ·désÊ+ëN--¨n©-#Öm_7O»R|üß³³»ÓêHYæ/¢Dv$o¤ä2\†+ƒFì?„±’#¥=£{ŽŸ‚1\Ì—*u6­6hdŒNΗ¢ý½´áèT „çŠs^­¬ñ5r;ox…­ ™ê#|X:ؾÀP©³’ÝÌhVU«ÕësK×¾²xô’:œò r ׯÐãh&¨F+ó¤7åë…ñEýØþS_÷~ý¾…Ò«•âœóÄ»Aœ…?r&ç ”y-BÄgÛ— Jä_\ˆvöEum1"ªê:ïéèîZøRùª¿M28|EéÖ¼õ‰W’/“]ÊžÍ}ë!_],.›¿nÛþNïEùèÞ”D€ó†º5Š¡ëoÉQ8©DŠ ñ!ÓVÈ…V¨ñ”û¶ø­Røh,ugm'«Æà¬¤§£îcþ#8R(‚)èn-)~¢ØŰeS™ºv3ؤ¹Éðp‹xëÃQÉÚðãŠâ¬õ⬢…æV‰P\Ûiöyâ{DûAà‚‡ñÛý0Š Bñ3òt‡è¿ñ›HQ«åâqÆã'žû MG*4 ÍÁ¡ÊR¬P¾¾=5Öøóà rÿû'Û¥~÷ÏêÊMKÊ_#ÕùëkÕ ]ð°tÁŽ$º?‰½yEŽÞF ÊÎ0„Úõ’eŠO*ºÿúîèg€'¡NiQ'-–)Ä»Å{§\Y~óìÙa?ÏøM4 VYÙXÒ,M0÷2èšœ`Ò¿‘Šù„€}~UvË;¿RÒE·¹Ì.'ÏÇã„Çx<¾å‰g.Ã0 vÅ:Ú}oîÎS^Å0fñâK%­R £åÈŸ\ÜAÞIruqtf¦LöGúºendstream endobj 145 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2617 >> stream xœ…–ytSUÇ_òî) }„Ö*ïÍ( n‡ª€AÙ ŠT¡eJ‹R @š.Iiº¥¡I³6É YÛ´Ðt¥mÚt :Pv(0jAQª(uA”Að¦^Îq^=ž3çÌäý•ó–ßúý~®€A ‚‘‰ñ+–Žþ‹ŠN¡ÑB4z„ûчʢðÈqŸŒ=ü*üËäyñŠü‚Âué6J³s¦Mþ…)êMê-*‘šL%Q+©¿SÉÔ|j!µˆŠ§^§¦Q˨JLM ¢(†OMàcR€ÒQ¿ £"v c„–Âõ¢HQ5=ŽÎó€> ›F®yhÔüQC¿ ÊÎQc~‹(ôÌJ×âü‚]ßâ÷® qCh…˜ ¡g"ÂAp“X(ÚeHc-Cy73×ä>¨ÎZêà…‰¬h ¦RT å ÊæÖÚÆÆ¤7mXº<)IÍ2­8"å^Á¯S¶n¼;ˆ{‚Qý8õÙﱤ+š¹Ý?<[,U¨ÚV`wÀ$á˜ëF«Ñ{×6fš2Yæ¶Zm+{D‚‡‚ )­%&Ë{9¬ÿQ¯¹>»ºÐ–‹ò ¶ 7IµåYsÕ…EÙȩ̈`;ÝY·µ‰ÅÒçÐsÏ\ŸÄ¹Þ¹vÑ9¸„OKp¢˜ÒùC“wDíëÇæ.é»Ñ̵;]âîœ=ê}ž¿ÕŠEœ”â×ÈÞÓðäU½ïÍYäfMÀ°U·m›³²šenº¬.gì×Àk­,5èôF#k0Z,åf3z؈ .“=Ï›ãÌEp(Ig2 {¨!ࢥ…+f¦ûXÅ–WÚ«ŠTYµ:ŽLZ»®Ò×ÜUábïŒßè—ñ²¢(9$íÂuF3ŸâY¡»âÙ ý$+Ì…k¤‚FY[³|¹-ë©úPuÔ4´7vØw¢Ø#¨ÔÔz휄Ä-'ް¸ÇfÄáeྠ´m¡‡ö¸ø ãïËá³{r¨-=·Uƒø ’7g3¾ëh~ÏÏÚ¦ãg*EÁR“mßÇ1ûp©e"æ3 èíD)™^^ój\Æ;î#:ÖâCµÈù§ÂWERU…¡)AA ´@,©~Ôhömê})8m׌à+1îR§ªÕ#çvW5ãî˜æþ–žÁ¼ò©‘4Ô© ¶Jj.gIÖë²%&­±Ì\ft›+̞¾˜ì3òÓÙ§Í®r7ò@°×µÙjÃo? _¾¯oéÂOÈýQÇ¿æËäWRŽŸ±âÖÚ®Ô‡v6¦WØH‹‰$‰R½d0íÆ‰[N6q6Úµ¶YrÁc½=G¹SÒ°Ù”‘YÜÁâUÙøÅ†¿j_\Âå+,³7×Wð×Õû45ççÄOƒy‰«®Il?z?ÑùUxÜä,¥í =Ò!ØwUŠ M«´ejT„¾üV+ì®il½L¢Q:OFL!8 zG¡A4ô´Õíªà ®Ð;tÅ…JÇæ½“¢X…àãIßýüÕÎßòp^º - ¼?t^¬»‹ø€øÀy! ÏKêA`‡)‰#kÁÆžUu+äã)„!c1õ$wòpã®Ý\ÀSùá«AN–}?º î‚»fq5@ƒUC—w×yõ’¼¡¶jš#/¤1êÚœu)›SÐ<”Ô_:h®±n·ÔÀû…ë:ø‘àm‚]¼+NÀJ1>Kûœ®í˜Š¿L¢ø ˆž'É£8r*;xeÏçõœÍns ;´«ÇàÐóm*ÏP«dV¤"h¦ÓQZ£¢5½×p õC[‹Ø{¾óÒu^mjÖŽ¬Š5(=xÁʰ#þ à(êžL„X8‡÷Å›§ÂÛïàÐÝaM ûâW”ó(PäÛ\ˆ›Ì"æfÖˆ™k2sQnnlÎŽÜÎÎæÖ@»¢5“7«™½ßæâàðã‚O‡¨!~äØ§Ù®®ÕPô— ûü/Ï›»ðL1Þ?æ)%á…4¬0×ðÑ ]ŠTÖR—7¥2×NˆP ¨2W”(Êò•–íT2ñ)³¥0ƨ3Qì©3Wðö%ºK=°'e 4Æ™oEQïÿ”Ğ_ï` vÑþ¦Ú@[Aƒ|³¢8›Dü´à˜¾€Å•<¬°hÆm2že~Y’U›2!^ZŒÍ¦V ¬¡?Eƒ­ÇNº\Nª€[ÕerÃ"Qš•ÚbS–NZ.E«QªgM­i«ÑÎß²ÐTn²!ùhz¯·¢Êãb;{ÖFð'‰ˆ_lŠ_ÆåkÆ<ôZº;ï=ø i=Ãt‘»¿âˆÐ ò‡PŸû@=¼[ $×’o‘Yr A Ÿ`“]ô}È, %*²ò\»‘ï\hTÝjÕ–½†MÍ^®_~ÿö7¡ž àýÛXCˆ¡qûÉ#Á3^ˆ›4sÖ¢%ÜÊ䤕ÉÉÅÅ1z½ÉÄCËh3! ÅÑíx©HJ›rÊW—ðÇ•U‰ ”ΰf )‚“è3ÿüðÄGÇÎ97€¾ƒ˜%Ì©¿N!‚ÅD(m, ´76µuË}Ùìý$Š;†…mQÇpÄì[8õúœ_ø£žú\ܵópí1úÖ-^¸1~©Š“Þð |¨Þnõ²:|Ö©Bp;Í\¹²wî ó2澤ã´tZX·áìnltæ5dK”2oB1ißþŒcOáØ/ ÌðqÌggÛ>9ðCìu{§-"ãdeî(jmkjlä×Èìv”Ð;gôHŠú=3fÆendstream endobj 146 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 798 >> stream xœ-’{LSgÆ¿C9ç|é±bŒk£ûÃÄͤL˜3‘™9/xcâÀy[@»jiz /Ðs }¹ypØÌ •ºžÉµ&F'2$ŒÁ‚,1[Œ‰c¢²eá;øIX >ÿ½ÿ<Ï“ßû0(>1 “·-wùS³yþXNí÷™ÏXHÒAR¼2ÖßKL¹½Í‹ÍÈLÿdB´é‘€– .æ€xt†Éd.Æ}×?Ç›Pò\\á4ªë%©QÍæÒ“™gë§ S7Éùcg9.Y+Ä:8e,",ld§¹5l”? ¢_\h¯¿nú›$Di‚¶ÿÑ«ˆF‰+ƒ³e§+ì^–N3hÊZÊËRªñfƒð‚´“Y–Îò Á®në ÉÏU—~òUQ”ߤ oI‰7DBmêU÷eÛ÷eΔ%lö?dYú„¬ ø£©¾ W´3‘=|Xj—Ã>ÜÊ=‚?C£¿)1A ®çýŠÔä\˹kÝUÙzÖRcýß|¨Uª—$À>N˜ö‚$û½˜>àáL½|A \”å|WôNk?àÿÚV}¹Î¾Š ;¶u—šJ7ö:3kc°ÚŸ¤ Ýd‘öÚPÄÿ }Êí ~wއïPæ+öÙ °PRô”ºi`I'”ôÕÆà¹à¤ß øˆ¥©Ë¤ Ïc«ôœª¨¶ï^Àïò\S£Ì$Aä‡)Y¬u® FFO<ûf%eÌY_d›òöçæï+Ew5”ƒTçkÛ9•|ÅZ8ÉQ{ØS!Ë¿°•Ûâß [`|hb`r`¼ÿþ0¼ÂäCºbƯ¦‰»(o •GÔË!õZi›Ý¸ÐÀÙ£ÑNý(aIÕÔF¢‹Í‚|¬=4DzÇ·ßq|¾ãèælÑt°úëØë¼’âÃ÷9áÅ㡜5ÙÇÒÓwn Ü)4uœ»„þùdÈvÔã(Îé-n«4ö‡¡z”®ÀDxì<‚±oïæªå’ ¥ X˜Qÿê ºå/iÊ s]b§èDÈõ“ …¯¸¯:ŒÉÆD]˦¤„þ}iñendstream endobj 147 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 4551 >> stream xœ•X tSÕº>¥æìƒ"C¹- çˆW”«¢âŒ€"Ce*)-…¶I“iÒ¦m’fNvš¡M›¤cÒ)MšÒRj[°L2ŠhµÂÃ纂\EŸ¨xw|§ëùv’ª÷ªË·^ÎiW²Î>ÿþ‡ïÿþÿßqÄMˆ¸¸¸‰ë^\»jþóçG~Ì„\Ú?ôã6œ'ÝTu;ÿRzrÚçSM%"Ÿ{‰ÄyùK %ËŠ¤ËeÛ‹ÓW–d¬’ïÈܹ++{½@˜{ûÜyÎ$ˆ»ˆWˆÕÄb-1›XG¬'Rˆû‰ ÄFb‘J¼@l"óˆÍÄâAb ±”x‘x‰XF¼L,'+‰UD2‘KÜJL&¦ÄÝLÌÆJ€hŠ›W7aÞ„·â·ÅŸ¿I}Ó'¼RÞi&Ãà3J>±|â7'ß2ù–ÒI²I—oͺõòäÔ)ÙSã§N=?­rÚÅ„:~>Is·]ý).ý6bòOñ3[ K¥†Â©²¸žn~8lå}E¾mä…€(ÃÝã²»m.v÷ç6'¬©ƒÓ‘•tA‹Ê¦nINª–V˪¥•Z»j(ÑF³˜ÉA! ÀK™[áÖ7ë꣔çѺ%(EÛhh‘À"hèä˹§WrϬàž)Þ˜TørFiŠ™B™¨„¦  h w7ù§ Éw¶€RžïO@Ô{KGQîh"Ý¿7ü?§ tú [Y®¤ç›71´$Ðý'­¼$-9mäÑ¡ ­{X´Œ _¼v¬nÓ+ W ²òŒ"FFÆÖŸŽ­?‰×÷‡d@”gíaQ6€!swi°`p£ûU˜ ŸË)Zi¾–´Óшfu0|§?®ó3ôÆåxd ¯ås@9ë ÈÝEq3ÐÔÇ@šx%"þ¬\ÃÝËÙù°Úì„NxÈ~n ¯£­×Ý ©o»{½)9ó56/7£4.‚k©.˜<ÐmòP1Û¹µØx´ÒžL@FQàJ"=ܱ¾;;Ø1È›·0t¶f8f}YÄúaQ¡­‡µ g}™§¥ûqÐnE¼¯Ðm(þaDrüµ)²ôtö$@!NÇ7<¹ñ¯÷AjÓâá!=  Ëì‚nêèÈà[ß qài=Ô™õ Vi¾÷ßTÚ}?Æ…gŸä[¸å¼]EÆ”qUbŽ-;UE„Ö>6|ä™v<&8²1´NçfÝËMå¦Ý¸M:p¶m¨å‚èN~ €ï¶|¦§¹Öçð“ðÄêêdŠ›à+K¶î¬¨0U˜TÒ’/Ú_{K¯7á+â¬ó;"ø=BPº÷*Ê Æþø Æ16Äâ‚ÔîN=öV+ÈÈÑg+U¨brÂ×Á ró„¤jæåÌ­¯®Ö´ RÜd¾¢ª“EÞ¯Aî156I,B(¢4AÔ,Ô(2 ‹%²ÂLS¤îGz²Ûkñ1(‰ü^5u=ìαeÙ³¨ )B2 —¸Æþ à ï,I¤{Çã_ý½yØi½oYyˆ$é¼óØk! ‚J³R±ƒòip¾ï›¿3:TPâyK[SsÛÀvïε«7lT1t¯ùÆ&orøqµ?<»-a÷¤ 'Òÿø¢›ß%ê+€Ô…kè&¶ èOnHi\ÓÈݦƒ£ÔñܯŸ<»¤ŠÑXT·­¶–¡¯;ÌÇŒ+ Z_¥.Qbw™È2{yM‰­ÌZVY ©%÷Hg±Z`ÝÕRà—~¼=rͦ–®’®{~Ñs ÆXëðª2s…šå¦h0롞ª°VÔ:µ;ãp8ª{Õôˆ‹’"5)„VÉPܨ0ˆî$Ò_¡‡Âcü%ÙÜ-³1 o\æjI(¨4ˆ[Ó”îƒÔz/Ÿe{„–[Êa9µMµhuŠâøyÑý!î~´ ŒÓZz+„ºº¢°¹Šañ|®(,ú v cNgÑBµ3GŸ£PX`æ°ý! „å‘d‹{YäA#œ¤gv0âÈSRѧ{¯ÃRl¸ì Ù»].3¬aBÜþÈ.žÈ.ݺ –+çFP9èï¶õ1þKðŠÎðä=l7£¶Ñ(µ¹A šìâJ¬€*ŠÛ`®ET—çßü¶bîƒõ»«±#mµ–'“Ð5¼P1‰mƒ,=„8ÀÍSñèÑ蘶°Üsà©´gdmuÔ3¦Fˆ/ /; bé쒆笲Úë /æÓ‡sêÀ›Ðžxéõ¹{ç¾>×Qn/o„ Ðávxú® þ×Àµ–ƒm{Þ„í úp†‘·ˆ¤½©V~xÍÍ kePRš¯–J6IS‹6iK´%jùÎË;>Ûñ™±ÊP «);°6,M? YeäÝqǬ̈́Ì/FkÂÒˆB‡QZp9‘¡õ8sƒÞC;–`©EåÔŠ¢¹ Ò·6… ™`»¯‹¥…¢6Anl×ß¾HùôÊ¡+¦Ò ñE…SA¯ßÒÏ8HºïZåñŸæFmÅy±Ý9pZíËv?Ø3·çA›ÊVî1QVÒí>Gƒ÷H’ïhóQßQ\=wðeߢö—¼)I¹½Èñ2w%~RÛûmß7}×=}¾¾Ã qOç€vs{Y¥ÈsÕ…EëŠÖÊÖ5IM™I}«¢UÓRp_gLUúˆ[:öÀF&Vy#·ZyAè1Ôï²jm¨5JjiùŽ2|i‹ÕÅúb,Eç«ði¼’Ó’·óO«Œ)6àðq”©À†>HŽ—,¿xe´£9þ„ÁKH4ú~0‘V á;øÐUçwârôîP곬`J^’ÁM{üzÞ™£§Ú޶³rûîìþƒ¯ï9ÌœnùúB¡SÞÓ¸NXÜÐE}sϦÌ.}ªÈèjò¶7+› ì ÚÉÍåßèƒK7¤¼øÚ«ÁýÆ ŽêÌöOìT }QjœÅŸ=Š?/†m#l6×kÕn¹«ìôsIuÅ݈A˜[Z’º6mÕc7i˜-½ƒVÞ%’N{“%Ƒܦ­Åáö66º=î:þ«r:«5NMUEµËqhœœN ¹Za—€ëå5,á@T‚ C™E^]ìT4)ê3öeJ0Wš*¡•²XÝé÷Ô:90<Š··cy·yO´}=ƾ7Ô›ª1[ÀÜ"¹T£V–è í&ëšsIgyˆž†j·eü] ùyã €Ùšñ£*Yš0‚º/ÇwGèi¼:Œ}–Þ·ö¤ ŠOàú=‘×MœƒŽ¿n“tǽƒ ø˜‘oLÓ¦‰³DÙÛ¥iÚödß±ñ2 ÏñÑè¦ G-ÄgÖFê¸k;¦ÅðOQNŒúWBìDêdÈè³UÊXìÑ:©~Dq7w«8W+„BH=KJåöN6ÜööÚBÌÑ(¥E„mþð{¿¡”nب­ßÕ’š´w~ÿü½óÅI•F‹(#0ë Z£®,+I’šûâ2XË G}U] l§Úd ’‚™$å°xàÂàgüLÇ©ýßþ0üÝô†½Þ7ÎüÌ éFÞ ¿ÒP§G*+Vkåìî\+×ȧ«[•­ªÖ…hU’±ÚPã o4MbVys±þq£3q-B{+Œt7‰ô¹p|ø.¾L£*…2JÜ\Üå÷tx?XàI¶1J’ûˬÙÜ_¸)7f#ú½s=çüle•É…;qÆ[¥%J¦`ÛkâTHÝ“úõu–î½Ø…HDùûLe~…ø3ÝÑø‘íJ@t‡}’H GƒQkZº»ô;qÄ Ž+/¯Ñ¥1t1ÆíÐY+ïŸ$]éó†B൵Õï8-5ÐÉZ‡¬FV-›>Ê-û[už[FÑÅv…]Úhn„v¯Ãý>ZñQä^^íu·Ú½–±¡$¨µ¨qçž™­Ëaè!¥ÂR13¶ËîFvþÏ2·È¡J¯—«ò“^æžXÊ=¾œ[¨+U—JeC%û‹÷¥ ëÐ ü¿¢-IçÖÖ”A*æhK0Ì ÄhC#¾ø£)Jî)^´½]{ö³*_e ÄÔú ywó\nêºYŒ[щ¸íG±×æ\â.’Y¹&S>>·¡’óÑ)JÒ%¶~½&…¸)WÁÙ¦Ï>tÖ˜ŒN¦L£‘ÃRŠî/l’µw6´´oð¥?¸hÙ½L¬èpiôâÙÑR\²„Î…Ð+x\øÝêãoSoI‡[¨»ÐBÉùOм¶h7½é>f™QìaíÀâ²79+m°Fë0¶)z?¤.^=üΊ@I k´éìÐNyNx»Ö†¼®¼¡Ñín ‰›swe”1F“A¯‡¸J ºJk£èïÝ"qµ`æ“mœ+p Z X«ÁnÀm©@M©L_fTš”P3=ÅíJp7ŸþÁj®´ÎxóxË>f”üþ]Wû¥0c‹P¬Î)ßeÈ‚+àìvÍY,úâøµàXãÙO7,[-Z¿væÀ83¾˜ƒ¤§¢áûÕ™ùÜEðÛu‘ "=ÅÑŸVÒHÈó•´Ý-¾ƒ|i9;TÅŒÁ¨±·*ëv‰+ßžo¡”äÝ\ÂVn*‹ð 9 áNò wùÑ™j²ÍÔ¤kÕÊ+*XåNy½–šÌÜ_ûܤ‰ñ¿ Yendstream endobj 148 0 obj << /Filter /FlateDecode /Length 4413 >> stream xœ½ZKäÈqÖ¹OÒÁ'¯€º‰e¨)æ;sÃІWÆìAV>ÌúÀ®bOq§½EÖŽF¿^ñJ>ªY=½€%,Sl&####¾ø"2ZU¥ZUøŸü»9ÜU«w?Ý)úëJþÙVïîþð?Ê­R™¼ö«‡§;þB­”¶e¬ô*T¾T:­wŠÃZDzRÑ—}ß>↓ïMU••wE¿kä¡2ÅóùôX?¶û¶o›îÛõÿ=ü7LcfÓ¨P*eaª‡í]Q­~„ZMFØ2E]ñ¡øv}_•!Åý‚8]ï£Hs,m¶¬¿RžïCñt:gm}Q?»öøqߌϻ¦Þv“‘ÇíÒb’/}²éÿs1A¥¯¬&÷ËVc‹¾n÷°@RLEóªQ9“”†­áÝ‚6÷Úºþ_Ý+U&gë‹TÚÍ«J)}k‘)È"õÒ*•)M¬R–÷y×a-Ö€*tÅ ^Ø6Ûr}oƒA#ßà ü2ªøL¿RˆEóóZû2édŠæü{”âÐÁkÛNdVºÈ¿S ÅñÔçɬ8·<|Þöù±JEןÎ_ØÊz]ü >Ó{ së¢>Ë`P¤èY#gP·Xœ²TϺ‚5‡XŠÅ—éîðÖÜkU*S)Ù §Ø2=ÊÑ?ÿØ Ú»¸ºÓ±Éape­Ñ8äÊôª%QáÈ^‚6‹¡UšW$®1Ûpåm©CÈô*¬Á³o¦.²*ýæÜõ2Œ“¸šÉ7© :ð€òMJÖš¥ ªÒÂþæÁ´ õSßœó2‹Óâ"\(Üt ÖKöÖ$£F“U$Ø9…QLnªÐUœ-Þ²®WívoŒ-½–÷æzuàùÞÚáw§~Úà~>Ὸ}‡v¸»É’f ÇÁ×ú.ˆâ°ô0@y6 !~Gõ¾Ø·ŸÈ›58y/"XÁ¥<Ç*CSw'QC !”]ñͱÞg Ñ;ö~åTAûEßèâs»ßçbñÈ…Á@ÖU¿qìšôEœ‰= a%6ªâyßüU^yð¢]ýñÂGzJX³Ñ×Õ‚5C¾[Bm , °2£ö3.Mà/À6:û⥕!“~‡,fpõM“ÕRbSÔöTGi›ÆøŠYÓƒ ¨šºŽ^QoÈg˜±@Ì øWP’¨ ż̄û4Àvu^Û¯®yÞœ#€‘ü˜^ß`55$!Alp0y¦\l(öT· …C1„Ny¤)Îͦi&‡q`ˆ&ÛÄIÜ{$Jì‰43mR~G`“4™’’Z‘)Ý Y$`å}èw/@•Wa3°ÀTýàác¼â¢ €J{h: ¾$û,ß}mŸ©—•ñ™€Ï¿Ø:óŠÃÿP“ƒ‘øŒ³y䃿º®ˆfšÀ/ÀCývMŒâô‡õ É‚Ç™2"X‰¾]°Ô©1Œ>ùºG ¹i .ÌLv"-LŽâa ª{¢P¯†¢¬~»Õ¢~#`½AóIi€Ï•xû½ö@i“¾òðY2ÓÈ\¥Ðç@Î'B^$´C’™&‡þÆ-s .›Íé"¯0Åáp„H  LžêMŸ%a]WOžf‰ÎªDÅ1¥BR©lÊœ,ø ²Ô¥vÒdi µ!v¡žËJoÛŠ~¤eF‡•ߘÛQÖÓyÛœ»Û¬õAÔÀäpåè¥a∿1#6]‡Ób*}ËœBÊsövwbˆñ'JÖ®ÀrÚûŽ…8W9¶›"ROɵɊ…¯‰Äü ÖÞŠ‚@þ'ùuæÛ¦ò¥ñƒ»¾'ß\õKAî!nUµ7KõV9i–H€ºöx¨i¾VË`ÈV¯@h*Ü̼—‰åtý¹a–Í ±‹“(Ë´D³¹ë¶y潨‚‡"ªv|Ua4æOrEEߨâr\*C 'óŒá†Íxë5åÂüÛs÷ÄrHU½§<ø—Ó¨4U¤sš/¼4¤ü㸘NÞRØ`ôÌv¼Ü1i‚àÏ!\CЮæP³ræ÷Aùp–Ó ´½úþì…¯%Ó1ç ê pôïü3ÄèE– Ó¼m_ú`*÷‹2¶á͹ǛWrÏ/ ºÛf|ÑH½ê9éÒšÜcü¡P ùe‚ßD`Âÿ@¥ß”.#ï°CäÈ‘)¼ŒNÓM‰%°ãaôá´vèÞö P6[1É}^;tulˆégòVš~h¿Í»ÀȾ±å¤˜¦r%As¼ ',ŽC‚¼†îé”@žóPwU5âØ©þX‡º³Ï¦á!‘rMŸ/c]ˆ¹$¿¢Ô Š»Á˜÷b¥2בÝ쟙‰ V¹­€ø™3’ÁNÑrF2˜ã(!/¦Þ\s¢p´s3m@0lk‚³]3A§Ií˃\>S¦l·ùÁÏ{L<‘¢C>JB.dÂÍæ@‹oõðà£BÔ W'õõ ФWm’”ˆÁœ»æ<‘5¾ÙÖ}Éß2ßûºHŠÜ&’:R¾ÊhMm‰úÀÀLB, ÉßakGH,u{ìdàPÇ%¦RÇÃÞYßAd»àhf¦ ¢†´±£3Vš;ªÓ3Š#w¥: ¹k)5 G«yÍÃõ ³iÍõÕ!;RÒ·ô"gb­5­^ZzòD5 ž.û} É` zÁ-L´7™ÔíZ¾`äåf¶¿N²g¨#°ˆe5ÆÛÏkì•z`¢õ¹­÷M¹¤ `XòvQøZ?F: C?Öxw›eÓK/]uTàcìh. :W™™DñÚåíØ&kö¹‰¨_Ÿã ÒI _E î_ ÔKÀŪÑ-p¿‘»½Pèì7—}ÝSç”\9ŽG…+wiF]ÉYÔŽœÅ;†Ü#VôÆÑ±#Òñc~ˆ^™¼Qç˜%μVl÷avö/¸¶‰ƒ^ô‚ê¦ã—H-|\Vé@…Ÿù3BNN Æ3ù5xÌ Óƒ%O=ù+0§-pœç(»!ŽÙ-p%7OV¸iÈѰZäò*•!×SÑP<Ö]³Íï¤hÈ~!9u˜Ù«®N8<ÂÍwr¦ÉÌ«•ªù{¸>*êÛS¦ú` â^$ŽO¡fÔŸ~cøþy7t‰áeP×]j¤ ű¡õYf$5+sæ"&/ hiÙáþH'â쌰ø£^Â}2TÀ^»—À¸zkåχp ü¨…Òtf}c%ô\àóxºH ?þ ̰Çó6š–Ž÷ g9˜4š,:¿° ;úþTÇóa âqoÁ‘×΂€þ^ñã¥ëå“„H´Ïßë¡Íb¯blÉ_Õ¦3N­`¡Ö •>æzȬ•Aª—Éôv©šìƒù'5Þ^æ½±SÉ' tT0ç*lwp’sÛ–6ÿ®óa¤ñ¨OrÁéŸ.Ç„qt÷”1! ä-òm‰i£žQb‹NîH`û#¿Ó¹÷9 D;Ì‚$.®pl&Ô‘W24ÜIaGgœÙÓ§½DÀ®®'ÄÌÄÛc‰ívMâßK¹`ÁUÐ…&€KéãŒè#Ó¡ËIx«û„OŽÎ)é¼?äâü9d‘®‘A”æÇaæ­ Üüù$†Q8U§Å…2eȸB߀1.\Ê‚íò“;?ýtÙs¢ç§ÓAÅÒØp…6´R¢:qÆaF„þó þqÿ¢¦ ºˆÃ‚&Å:^mxÜgžT\”rh¥ÁÍ2ÓXv`7kïýe¨9æfÒè ¼?kYþµ=\°Š‰\øÎ3–Ýœ‘üx+hfÙ¤J?´s¾Ÿ‹&]•¾zÁÕš~'[ŽnB¨d)¾èá³ÍŽ—`Y—Í€‰»qøqñ0òÜüwD'ÁmåLO½¼=´kº<6×Uòá›Ý–•ý–pÚ‘À?õc‘À×üËmø+ßìëø@[âN݃qy t§èÐ"òí.Kœç Ç7–¤$ÅÛl ¹"âA„lŽåqÀÐWj4øè:»âS–‹§,]{®Ùu×[žGÀoÎx·ö÷Ó|'Õñº¾ÅšïŒã1yÏiÄJ[cª–œtQÁÌ ”:TÎ}áñtvZD+>‡;åß ³ä_+ëÏ—,°uî^t.È ý$‹à³ÅQj dvØû‰Jx5¬ ê|”ëeÈ„I:ºI7ÌÓG9ø‡r  3ûÄ·ÁÄ×ݧ Ý>c¾‘Šq¨×ó¾n³f+‰/8mNçs³é±ô¦hV xx…Ò:¿2÷ÑNÏá¯/ë:§èZÁƒŠ¥®®>¦dúà@ÈtÄÀ½T¾ªDá)rÙŽ¯ Ë÷$èUÄ­Þ·›¶|ú‹¼ Ãmž±4yS ‚ŠiËsÒ¸|:`2/qe¾C½•'ìÿ{êæakoá²S¹ÇÊ÷+ø†ëáÔå¶-Ý”Ø6û\ÿÃ/\/ãXð¶³=dÀ ]Ri’O¹Vúχ»?ㆺÕÇî¿[}¾«Vÿ…5Ú@¯”«`ÛV‡;íÁëaÓäû»¿Ü¼ˆ¯ã V*µt_òÎñEüáPÚô'±~ð“þ¾ˆã]3ê¥&ºþI7®èú§ôÖ¼=¬pD©ôQ–ŠSYHžºË¾a¸ OùÝdRºx@B.0±邲L)÷é³$äŒ^8ö<æéžÐ• ¼w3.1¯w"•ÖÛÊÏ\ÀîùÒ7Ž–\Öu|H€* QéW­8sÅeE3»3Ý [B”ÞÃÞªáÌHÚ8…Öodc¼×Ú“¹+` _hL1Œäf~뵎ë«sóÔzlex¸tÊêë\ÄAA™¦>‘2žÐmf“Ç‹à8tsÜ|É+ž-bÈûIai±†ŽÔñe ':¶ð&‹^ë„[Íwñ%örÌ”K|ç—+@°Rƒƒ¡)¶þ|÷w ½ÿendstream endobj 149 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2943 >> stream xœ­Vy\wŸHFDÆY­”1ùÑÌU÷²3šjÝA›×05——±Ô@—AŽ&ÕB¡Bf¸`ËkU½÷ÍFç¶{зòž 3„ãð[-ÅÝ8¦ùXu[öN'óï°j™¡¼~Oë9Ÿ/ß'cÉDÂ’hžyA*‘þèŠþ,üÇÌ~DÄ3´vlNð¤q$¹Â®‚ðsÙû’:á:TÐ×LOï•wÀê®bl†­à [’ƒÂ×xåÄY{½"^o¹pUtÊø°Ol‰² °{Jïèi’+!Ž ,ËÕÑ1’²ÝÎ(Ñ”ï9_VZ¸û” 0úKä)Q|ˆ+™Bxø‹€›wG)æŽIá¤ædQw~ÕÞ;í_ÓV­ÜÐ[d•ÎwVÔ[›Ø;ȶZ¶Ù5FUDGG%…p­Cžy²¼ÌR_ š‚<-ÝJf±u±Õ±±Õ±uuÕÕuÜ0ß;Z½®¸v¬iëraã\‹ëUŸ{´ôWÚ¾ÿá›MËÖx® æ 2öRËÑãÐC÷Í>=ëÍ–ÌLR{·mãJÒZbŒÉ4ó|]Äi¦üêÞv{o– lãõ)ÅŸšé7ýX½ 6±3>¿dñ¦ys–}Ý{ÆôÍíÎáJšûnUY¦Z‰\Ù‡÷¬ºã÷l¨”ìzÝk]òFõ(®½¨NÛ»/>%<#À½{ûmd…~2 CÑ@¤ßÎÞ°5ÉÛ—Ûîç‹iâôéhË1¿‡ÚªÎÐdÌB6¼ ì|R tÁQè†N}Ëþ®ƒeMÐ;µÞ¥¡ù«À‹~ç 7kS õ¸x#¨ .Ì3Ü`qü_ ™‰Cb"aÁ§K²2Ñ+謂܂’Kב®S^Þœ­j.PC^W˜W¢.*v‰ oÆ™fÑ©ÁwăËð:»O••‰Ê=’¤&BB‚öñ–‡äsvïð?ô³D6üf¯Uþ–K¼8÷¢0Wܶüup ›²ÏN¸Í'.f_q2UžT˜,Ì#‰ñ›=Êeãòv¶WeéZnJE–VØet†c§ÕŽ#ý JÑ“3b¼E²XЀ:YKœÐ9×¾¸ô .ÅÑèTf•³†.ÌÕd§»® ÌZn3±I#b¡¿,(!£N»sdô•Å@ïÎ×ò„Æ!vjX¸&ÇQÐn ŽžsA˜=²ss³ Ô%ñ¿L;MÜ€Y´ƒ|DÆç]i/±ÌÎÏÝ]|ï[dÎrÇЦÅpËê¢1¿xÛ,B{³‹ˆ†5Ïxñöc3™üO™TÀö}=1cG¥Èbg[ÞÁd릾÷ÀÄ„’½ KH€ÄTŽ4’Fiê+XQx’¤Bbe%èörÿ•h¤Èm0ƒ%“ýÿóíþ8Yb®apœAÔÚ‹EÂé‹?°p=çzðe¯GóÊý` ,Þ>3tyΘ‹ó]-:üÁ Váý]ßþÐt±àüH“ òkIäç ÎÂ7ÐSԭÑWö¡z’tÓŠ=`¬‚ŰBþ©ìíõáÞ/»°ï´4´ èF]cçàX¶ÔqÜêOÝ è0i¥êx =´O¤HsåB­ãÅOÂhi†Ÿþ=^„J]%-V%ÁUìïÖàÜÕ>÷‡g#æ*;ðg!w®žŽG‰ëuâHì–¼;Û£ 4Ú¦ÒC5I5Á™JP)¸ª Ý-g€¾øƒyó·|¸a5O6¹\ /v<Óo‘Jjq©]Œ$'<Ë']–•ù ÄwËÚï…ÁmjÚ?ûZ0>Ú¾÷+Îï[ôÜ…!Æ~öæþ3ß Ýt;õÖ‹Ö, 1$Ö5T꺶Œk8ÚSÖ ô¡“ñ®iÊuÑ>|¸çNEŒ*S«Ì‚LU– ÒifH./-×.¹Ù²b:™´<ÂÇw±öl0ß”Ó`€ƒtsTeDlhªÏ¬Ÿ ïßÿ•RÃÍU×^×ÓŽœ½íÜJ‡õ/$1cëendstream endobj 150 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 742 >> stream xœU‘]HSaÇÏëlžB,‹Å&q†W¤ø J¦&]hÁÒ™»t~,ÓmÎ=ÛÙÇãqÛÙ—›“f² QÈ›$é&ëÆ‹ºú nT ¢ yÏñ˜tÌ ã}_ž÷yþðû?Ïû""=@eTÖÕëŠ ®Øo·Ä[Ç S™é¼¸|úGöדïO „È39†6C»ÁøÀÐÕÓú°¹Í`Ôº›[ZõÍmAdÜiÅÙ‘O¤ˆ¢¹yR.éÄ**G-È6ÒªÒfw–XÕ³&|_CÂä7®ÙT­~޽}1©œ¹¶ †æ€\çªmf֬ր቙H|šŠ…°D®v,Õß/aÎ_ ®\n’jú*ÌÕL[ûM‡½ëžm ³{Ð ,éá\¼oÊ{LÅÂ÷(ùÜ;?ôÚ¼b[é_ðñÕܳÄL`FHÞ ^«‰¶[¨N‹Çé´°V'ãr2v/ôC#èÆ¯Ç;‚ :›wÀMf‰ñДP—@8OèU<«’šp£=êáÐ ÑΡµ¸Iº+ɇ¦=phèðP8ÈqÑ(…套ôœ—g ‰C|n¿ÖËI%¸H·‚kq­Úõ†9Ÿx2„ìŒËEÓ”ìŽ-‹è“€b¶¨bqH$Ì`Ñî-(-fèíCL›…Ÿ`Ýú²£À xD•2%F“ÉhLšR©d2%C ô‹2æ7iI!,ÿ*SFqÎØÆ¹@âBå?A*VJåÒ9é¬T*•b9âr-.>¢*¥\2¶í8çà•ž.₃^Šù ñªP¦ŠMþõØ:l6ZasO}èÞw l(­½Æ¶ðí#}mP|·ß0µ[Ÿ@oÅ)ù~n«¤k‚Æ1Á‚4^`f.VªåÔM²#N> F¨€< bÝ^•š·ú!ã0àÇ„;»j~ |À‘a&lg¬•¡²¨é—™Ç âú‡ endstream endobj 151 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1284 >> stream xœ5“kLSgÇO)¶/Šx!Uœrš·¯â¦n™N(*“NA‘Á€^hK¯§´}h{Úžz¡´Ü7Å › Û@Qˆ°9M6AÌ6M¶e™Éböé­9YÜé‡=ßÞ/ÏÿýÿŸÿO@¤¦ ­8¯$?'7''ùx¸ŠWi¯Þ^éBHOõnY±cýòºûk¦ÖÉA ²¦fueU A' ‰âQF|LäGˆ4~!& ö æR…;…áԌԯú—DÆë”ÓÅ„‰¥‰Ýìú„âáÆÌkxÿ+±Fla}°5&ë”Ã>PîЕ;Úí°"#c÷¶Ç"’,\‡nðªœdƒÊª²ªs½Yv³ÍfgkЂ1ð°žø4¾”]~ðì ›Úº£õZ ¤¦F}#ÈQ¦üäMÙK7–zÈ·“7ò›fÒ(2:ì&»™Rge^»Ø&+8³¹Õ ]‰ŒF¤ñYöG˜EËÅC…EkË/“¼‘m­¼‘ÄûJ/â%a"%Q á²µœˆÛÜôáD^M2"œÀo¼=®|Á­&Ÿs[%Ô2Np°¨Yõ¹¶PiÍ­yi§Øót§.Þ‡‡ºX@.ÑË`”ÚV”ñZðå}^Q†w⻿3³ç7fªpú’>W<(ª )kÔµõ{SÜ]þeüçAÒtG ·«'Jƒ•]G­¦o-žþzøŠ¾¡‹TQ´ m@cÃì|Aÿ§»vo¯ŽÕŽjÈ)ù‹|„2¿:´¿úxU¹ÿºŠw-¸hJº^3†OòÆË[%ͻչŠÜöVJmS#ƒ¸løÌÂâÜâ\é¢]^ð §Øoì07As«‰T\¸T| P»é¨ô;Ì8ýŽP6=Ñ@;h@¿§³ÓDëÌfX¤ù"ÿ¸oœ÷e¹§Õ2ºjªFN‘õÜJ»ÌØ´Odk‡ÁHé-n‹Ï.å”¶šàŽ(ð‰¡É ð{…‰u¬D›W·ï“ÊV}³¹šàr m Ž…aÅÚºäd-¥“ƒ N7L‘N^ ÏqÊ <Çe¹ƒt°#ˆÜâ ßÓzC£ÜJãœúÓ…°©¼mâêl|®gF Â(òˆ­“Ÿ±çáí4€Ãa216/I‹¢àêwGÂ7ûg&…i¾VW§¯—*ŠA!Ú3}öÑápœM¦ýw<™vòûâEa¢4‘!i²+[ ©ƒÚØH´u’>ñ÷ù±2n+·–ÛÆeçNí©ËO†ïÝ!iÚÏðyù F¥³XÈs§ój:WÞûç“{ø,Îì3^î–þ/ƒ/±8‡WZõ{o q%VKXÑKœãÁ«¾=sí0÷_ìÜ›ïÞÞñÏÓevvFêñ0I§ØÁèAQ§Ñ¯)n.”¯\˜eFéQ©•Dºûëï€Æ®*/æpéÔž¤dþ¢Sñj;_¢ <6‡LUû5%v«â‘7L¯} Ì#ßèDýþ,¿·ËòiuM&þtRU©ê”ªT[™Eé¬Z‡Qâ“7ênñ´=ôN,…î8Ý|KìÀ J°ÉÛ5mU Å€4T($eÄ®¸·Ç×Ó=Ù=™ì‰ŒÀ4]5vÖÖîù®—4Û hBʰ®‡ôˆâIÄzQ™A®ö¦§Ä lkíendstream endobj 152 0 obj << /Filter /FlateDecode /Length 4968 >> stream xœÕ\ÙãÈy·~Ê?e(O¦’mšuW­á‡pb¶ȃ7@4jN7=’Ø+R;ñþõùŽ*^"ÕRÏd`Z<ªXõ¿ï¨ùnUäbUà¿øw»¿+VOwßÝ º»Š¶ûÕ¿>Üýì÷¬B¬´«‡wÈ>úwþêæ:ʦùkø¬0‡Ï>=—Ç2N)ô„ÂÊg:5mZ˜ÊËCÝv õÃ…úìåX¿¿,÷N;6bõðîîáŸþì©vUKK+¬ÎˆÂða%³¶Ž¿Çr‹ÓÀœVXVÌ>…tÆ—<-å¹Ü<6éRfŸªö™¨ý³ßK1”Rd°FY%¢¿àÄØä¿<iŸ—¢{¹£ÉÇ¿­=þ€ްéã׸mØ©°Ù&1V‚Ò¼iÓ^@NÝ…E†Í-& 6}ô·¸BBnf…BæÊŠ_ÎÚcµÙ5_¯þ4Ö"]á'}-pÊãËÈ SxOxGÉc~…cl!…–s )r¯Œ\ †Äåàj`Çô мU<å@ºXè47±RI  ]|œ#“rû"¼aKÊó€c|Ãû™-…Ü  ‰{Š‹‹ ÊdÒxÍí¦Ú5Q^PX1i0*Æ@ò…$ùð´p2j±$jŸY¿‰xm™Ê¶ÛÓ±:<¥)š¸k?Ø(¢°!À®e®<¢-üÍTæÇÒWäÆ0N.W ߳ĽW¹TFX˜Xå†H|«T =*š­ÅÌ\nŒ•f%QÌm\Ìß^\¿Gz·ÐÊiËgj>Z©¹+ ¡ ;ØŒáQÜM/o±¹v%‚lF yüŒ2£•â ²*4äÛŒL¸E‘‰ÈCå†ü€/ £˜ÿEYïíÌæñ—prѺ©©u#•^þvÝ­d†F*÷ðKÝL#Òù!HçT¡¼sfDø5"ÐHÂâΙ\PÂù]mÅÕ̆‰UnX³ÁF`ëÚª«7™ ž|Îu€ §`eð™Ž^¤Ìhû‹@N O¼`Ȫè +µ³þ€–5æs ᙞÛvöÁ¶ÑÑÓŒ¤ X¢VT½*ßÈÂB\+ßÞIkÿåû\,n´—å;äÒK/®“‹EOñ£ÉÅeIHO+´µþ†¨äûi†ûè¿á‚/n½"€×÷Õ¡Þƒ?Å;èú€Ûˆþ‡mUÒp 8jÎà öì{ç®vpžý›óbÙÁá|ÑÁ]KAmÃjºÎ¿¿àßÔD¥7!ú·´å_\TÀû¾PëÚËùݨ± A'ùÇñü¿|¸û~Ĭžš;'«O(þûA+[pW®öðià,x½tgw÷‡Åpr̦N”9Â<Ð:'¿Òí9a<Û¸nÈ`×CC6CaÐ4ˆ –ÁèÔ¥+h¯wéN®ÖbÔÃ[wŽ!ÄhÈÀXNyæ±sirXð \É|$ho@ãË&j?„ȹ’Ch[';Qúv[Ÿë¨³¦ÖÕ@'´¯ ªRF%äpJj™¬%Ân¼D¼I…0Ù~Ã_R£Õ¤ÛÖ û†ã(ðìcå&M/²çº‹î?á]EV9Æ'üËö/ø§õ€9Ã<‚Ô‚.ÚÓñ^ÔÙé%M¨ è®ve¿©¦­v»4Ãßæ´kîÏ©6lA|¾ï_ŒëÀÆ[øÚx˜ÙŠÈ…D£i3 !p݈>Ø~KÔ=07̬MÚðÑ.öŽð_#Õ JZt?¸êàx×òû!ã«úÔÄWáéLâi!XWÆ/+þDW¼qÝË¿@_çsa¤\Ï©–©\ îçÂzxÁtáÿrPSo£¤Ów°l1»løê« Ê@_IndÔE™ nZN1E €3lAæo—5èóhL¼#¿D!CV7Mõž†ž3^Û:¦ë´ÂtÀï†U‡M[Õ‡†'Á¤Ýf6ž ,7 Jr½6, ‰uUdn¤>Àm`e:¿»:þtú-Ñ’Šþïh€@4!ƒ´<à–²¸„  [ÑãuÐ[ ùtÌYxV¢!E3m !Q$—Å< RÌÙ¬§ûš´’3£¶`ØäÅ»Î^6Ç;lËãŒü}Zër6Ï£+ÌH.• ´½ÇM»ù cS¼Øt[Áð&a2 6òÈ)²˜Äˆ!#ÏEéP0ñͬ0ž Ëç&ß–4K=²‚´»sr‰€‘ÜgÙ‹Ë!Í¥³Â È”ñŠZ¿ünhpO¤v‰æ"úÝeLjð^ÄÜ¡‰ˆ½lš2À;”G¢¯l¶«>ö9â]õ£ °%”DCÉ”&{üÉ(¾"và‘­atâØgÔï›ò8.à[ Û(5¸9kÈ÷ÿçÚ“ÛÃw’ðTz„Àæ5mù˜ÞŒ`q†r’>ü˜ÖŠj&{«¾×èËÀ„õä(Q´u4§õaN&-B ®Óœ›!ºÝ¤éQOšöÑÐ5¦+Y1^ÈŒnâ¾Aï“þ3Þj°ýÇj Ô0z1½iqXáµÅrÓÁd_›D/oÆ^¢b1LÃ>Ô»]~ 0ŸP4ÊÇþñû(+£Âƽ,@æ‹NJ£õmÊ}µ­w$䊹ÊvGqŒ”)ô:œ.ü´ò¢Kv fXÄŽˆN/€¤2I ×Õv˜užÚèò°MYçh¥i”§5}3—ªñý &/ÀgxµûX²óI8Ñgé/GQ) suzgýüb¥s-½oˆ¢–sdãjÄ Šê†Àš„uà{ý+_¤ü¼|-ù¢–,m7­'b³Pë,%0†2P½‹PæöÂÀÅÄI_Ðóõƒ·å$Ï2'¯_ΜœU0À½µ2 Äçg½_¯ EßP ÿÿo¥S§à[•NOJŠK÷J`a—m“LñЕiË-ZíçCµ%¤€ŽZI AÕ½1tÈ›Áa &dPÜ€°i*¬çã5i„FHƒäø1ˆ@Åçø’ÊvõÓ}HÂ%<’> N  Á&^£»Â¢ =ÏæÂ¬ÄÂdÙã\§A*»~KŽF[®¶Âòâ… :b|`³}}¨Û(–ƒg\#Ã$PòÔGO‡-ºO ¤†ŠŸûÍ0t®8äBÐÚ÷_ÂiË®)íH‚{¼H"‰3Áçf¿a»oàoäÂÄg#†º)‚w ¡´Á]¬Ââ*¿è°ã¥6k6ÔÇ÷Ñ ÝB_þý h'øñÝ©üv1Js¡&'„Ÿ]×N)ÅHÀÂò>º]ž0 c¦YºêÊ-ÿ=õôÓL½<†éÚ¡n€|³Y² }©Í¥B}$̪9æÆ}2…­%X5»°Qæ\Ñ7}®ð`¥’!;ÃÎÝP]Úá ¬Œ†Üˆ+^Í©-‹nH,ü0ÿ³[!=Äk ÏOs.J‰Üú≯+z=VÔòö#`ÅxÚeÜßÈÓ×¢ò3–Ø›gi³´¯yt<w• Oˆ57u3v¼²©ä Rÿ 9"õ/÷”LŠaJ8ÑÕÜâÒþù¼å”¼%5{Å>&‹’ÂNx:˼1'ÀÀÊpeˆE‰¾.oõ…÷»˜ë_btÒ€õ¥ ß î”z:KfÈËtö…rÞ½¾µH3+zÁÔ pöt¾dľ™.CŒ à´OÑ1lQ'äÛuÁ ôáÿS«LAn·lÚj¿i©¿UÎiÍv:}ÑMN²©†{J»4qrŸÒô%…àA(ö¸éïǶHÍ©¾)d¬~ ²¡ahÛàhz1.̼`ö à'Ö{‚¦™¹7S`Cì±=6m‰€_a5Ò!àW˜€˜õg •úGEú¤ô†ûí6 (0Û5>*"yDhúGÉá®eïºn‰<~¥¾ðÙQùcZƒò³>©¾!íy¦žÀ¬ü}ÀD/±B!}S@rˆ7 “j4"¿÷˜ã —pfFá“úØh»Ä”¼×¾¬úËíÂYÎÊ© Áb;RþטÎÚSÕ¦^fˆ’ņzœ£Àª A`g–eèÍkÕëAÙãc}u ýò†B_VXºXìEç–Ã6åQцš}äÒ)½$d_fSõ£/®Š8s¤V_zº:ò½ °j+&ÁD×YdÅtÈÚ¸ã0p þÐù‰-3¤¯+®ûpÊž–â4™­íÉ Ñ[½.勺#?޳û†â—5³ÂwµÆ9w2—²ó££´>Ù8ŒðI2é"œ×Óҳ͇°Sé³®ökÄ”«3EA“ÿªö†!M«MF'øügÈð ó?±Ð+cå¶Ó¢P£îÓ&MzæÒ÷9ËVhËCšRF9$#ûE”m2±àØɵ ábR½'mÌx÷Å·ŠoÇrÄóÇò«C™ª7aXyq‹ò1Ÿ d¸jDxþa¶¨ìe.Ð=㹄Å󚳌 `Óëãë2&Èû…£ë+*gÑuêä{c%æ ¥˜^_WŠc *Å|Q‚œŠ½Ž†\)úå ñ$8“rÐÙôZ¨ì ºð–bÜë¡¢ââŽ9T4úªXf¹áÆÕT›xâ×cÅAqô›‹]™ˆ8”ìBEs*’Õˆh!±”Ц GJ‚å¦A¤;6›Ól£bSoñ¨ÿÆûÇøB:ò†}Ïd<ÐÔ»S,H­úd9¿l&¹ð~Ü|À Qy>È^Â(£¶7ý"чΠütZ;HbÌ¡ƒÍT£d;ÕEús—vQ =ê@¢s«ŽȽÍ-…]ƒ ™škéA=¥ÐAÃ!ŒœT5Qÿ°`'SÀû—\|ƒ°y¾IXië!H¹l×лbëuꂟ׹MÍç¼\îÍJ"m°Ó\ P«îÎÍæ’N”F:'®í4¿µ¥2ÀäØŒ?òºÁ8Ø/Ÿ[ÃChd=¶7¦s¯x-‘; ø­Ü}µ;¸«¤Cg=ä.xå\…·sW)„ê"w1;‚öxÔË~ÙÐ ì7½¥µ3–Öö\àD¹—5Ïõi‡@ Ųk”Üd&6§ã˱jJG1UžJïëCù †:"t;ê5d¬é'×£#à*p8A1±`œÞÍO .¦v»óO„Ó×åQº£íñ w×jƒÑïqó4<ËFíkyD¨Žü2nxؾí¤ rj‡êŽ ŸYçó¸Oe›óºFñ×þ6¶{ Oýwž»“+ªèªÔ‹È¿±Ùê¹ta™ôRÖRô…ƒ­J9K¯Ǿ=ó[biÄh/'.{x×Å…Pz2eÁ]½'Dî`$Ø¡Œê6î±*ô}W¶?M›G»Áþ1j¶X4/ã Š.beÁÿ„³rtbjf¡Æ@,ÂâB'ô–ÃèäëHhlR)™êÑ⥕±‹Ç6~(õ×ýšYשª‚®¡Þ-ðÄ ~OVjÁq-¬´‹9—>í7ÍÉ-Î÷0­ÇÂX‘I¬w÷¿¡©ãcendstream endobj 153 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1069 >> stream xœ•’ëO[uÇÏYKùi°s‹MZ‡ç(K ߨÄ,K¦‹sŽË\CT6'ƒ ã&”¥ô =íyÎiKé¡W åÒ¬¥ÁÆ.¾IBffâæ3gb–L7—©/̯åô…eû öîyñ}>Ožï÷KòmI’Šýåå”lM0mVfŽçA äÞBùÜΟw\Û¾úì#Ù©úfíI‚ {*+•ñ QC¼N"Þ$"?‡"ä$M~¿Í&Û)ûN^–v(7÷@ Âñ™¹~¨ò-ðÃ?Šù!ævÆÖwh¥õðè¹n®“ï4h€®~?ŒscॣNÞ `a1|(™ÕÒÅ6ø’üðh"'£8ÁÎ$MVTÛ¶½€ôFÐY¼vßÌM7ÌИ‡;ÎN9Çy Y@ÛÇßKw¹€8r‡®ãßQ’ü)š'¥ ¹n)3»,âò·¸ô H^~€ïÿ%Ãü*KcSÕGà€Ð—® ¡˜>¤mkíl¨¹ª½rqifyŠš<¶Ú{Î_Ç;Ä€ý¬ÝÄꇫªÓŧ'ïŠXFo¬L%rGç ÚÆjjƒ^Ô1LL$Æ–¯–Fêjêšê»¨Þ¥ÚÙÜš$/•¶·ƒà pžúåÚù+€ñÞOºM5ÖFZ¹Y©4Î%ùSú†JX 'nñÈâ¢Cöa Ý L#tÂw'|U°Ûž À`}ô%6b€°±v‡Y"³Õ’7±Eœ9©FzAÑc|T4c™(-=Ÿ=k­×·ìuhúÙnó0㥰àNÂ$¬1“[`Að„ƒ&ÎL—ñ0 ApƒÇÆÏ¥}j¼’½?ÜçfЄ\žQ¤L[Ä4-bÕŸ$–ߘ»)ÙËzTŒÑn=úô\ýêß0zìë ™¡´{N|~ P·=›ðŽùb´‰Lû&SwÝ~—àòƒ€.Õ-V×J…ú-ƒœgÄEMÿ~!µ(ì³µk å´2óVÎÀΓi}ú_•w†wÅx7ã°ž{eʶÒÏ·Âièã@µÓ¬ÎuJñ¾0OÅñѼ  z©¬¤èÈÕx@W&½§fÆ vÄð–P€÷Œ Qkø„€_´¬˜åX+»UwZRg'¬ KhN[¡ËÁ›C⬠DZ„YN’ ²qvÖ4‚XÐÍ=Ý×C7ºœnðƒxw0geØ$fŠÉõî%pþ-¾œ~_%½Z_"© ½ôë‡ø™{¸¿ü ú›æ$Õ°¼ï6\DàÌRRì3Å(Ÿ=¥ šOùªÚÄ× gí;y¢âØÙŠùÃt¤]%Oýèí¥]%•U©ß®/âwð‹IJI=-//xŠ þ;…Qendstream endobj 154 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 965 >> stream xœU’_LSwÇ便\LeÀÒ¨ËåYL¶Ä%#Æš=,:XçÂݰµPº tí-¢PK¥Â½÷Ü(E,ÆQXÇÃ)ËL4,!Ñ=°e3Y4ˆ›îa„ýá\<5Ù-f ÞÎùýÎï|Îùþ¾,cÌaX–Í;r¬òDùëÙPðók÷øÜOp)Ì0ãOW‹±½^À÷ ™|–-,}ÍVUã ô:}ŽÓ M¢Çðžih·¤>»Iô:| -·{39ìyo”lK²eþ@s³Cô´¶¸<~ïǹ͞®Ö³-Û Ùƒg Ãäw‹ ‹^oG†*ðòa|špl WІ·bÙÂÂÌL,QˆqCeèìh™æÊ2u±A¦äQ¦ãtgTüÊ9íE! \2Cú¼Oøõ½)Þ´¨Cí¿´a~}¿%ª$Â*pc¦Ø šØÀꞪýîæƒ5§# Uc1&ñVêlže‡.ÈÐ}QØo+%k¹OÑn‘*€…¿¦–Sç„뺔¡P²c0Âm£?Öéo<[ÑW»iÇ9:‰àÕÆþTd@Îê¾áÞ¾Þ¨llš­¹G9º57 €"©"3]#;•eY‰ '`èJÂï khýÝ3X2†+¸­:kÕ‹ísžÚ- •”k¥Ç;gǦS¡a‚À…6©_ºçíóúútù>=€ŒhÌM+d£ÛoRÙÁƒ‡,ýÇNFadDÀeœû[«ÍÆð¹iþ©´ÄWo±¼ñO=¶àN¼Ÿë3¹^Þûå5·õ¼ú)Õ—Y1iÚ“ø`4ý{²ŸÊ4®íÖ¾1áKðk0!Ïv/x2ÝñCÝä!.m¢8™Ë“Ó$‚¢H— Ú¡KûâYÓîÌHæ¯pz@ÙÓ•€k‚îNú8…µhÞô÷¨mû(ðIÄ y>UÿLUãýÂîBá'¬ïã†!ž²nyúÜÙô–…x”)ðí>àÚ@ñê~¡')ÜUþè~TLíô»iW¬g®7®ªik°Ãx®ÕœÏ0ÿk"¤endstream endobj 155 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 470 >> stream xœ¥OOQÅß´e|hS© qJÌL¢+?[Y¸@£1nܸW´¶AbaÚ2óμ)íPHK%ÅŽÑvØ’b Ö.5Æ…&.eãΙþ1±?7¹7ws~÷œ+Hˆ‚ ÞM&禃Mú_z3cˆ†”ýß×Îâ§W?L B÷r›L“ðHE"B24åë±þ9ºÞq׫wo¼ÿ4ÜìŸOÚ.·¿â-8JV¹lí¡B9««Ù´ŽŒœFŠi3…Óè­HYÐü*Õ=8Õ#š ^ÁÐs«Ò0.žyKÿ‰ ׇMI[`ÚÐÔµÊæn³eáPqÐ2Œ&sÆ8ú!hùïëX1Ò઒âÌ„=òÀ­ê'¯&ùqq~`i †6ƒÄÅp4ÖûŒ®ÿãDøÙûö¿ù¿&íø1èыԞ'óXÉ?QØæØFY«ð×\v¼Y^ >’h¬A•ÿ>—Á eçó3Šë`´PÊ5öM«µ#ŸxWÞôn€zD´QCÕ …Kƒ©¡«=Ó7n"‘³`¬¸U,nå„ûm×B[î cvà∹A’6\½ Z ’¼„ªdFG—°¼­™»Ø/ÕhL¾¹'ä¹ÁÉendstream endobj 156 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 418 >> stream xœcd`ab`dddsö Ž4±$ºë~íü1µ›‡¹›‡¥û‡ŽÐ}Áü—˜yÅ‹KR‹2‹³sK2‹ŠòË‹2Ó3J˜˜–1¶3v€d`aÐb¸Àhñ£ƒï—À÷²=Œß~Z0ÿ¬ù^&:{q÷â%%ÝUò^°Uw-êž#Ï÷ãîÚ?¤æ3~Ÿy’ùûõï½¢w×o˜¹dú¼ÉSú»çqÌ©›UÙÒÙÝT/÷[Æ`ÖwÞ¹Kr»%ë+šK›ús{å{«&9÷–ü–~&Ñ8±£¯©›£²®¦ª|zÛ”vùïÚ>–éiµEõ’ÍMíÝU3jæNêíž2]î»Ì³êߦ¬¥óš§mZ8¥}e×T¹Î9-—;}ç±–XZTÕÍ1wƬ9óë'4õËóɰ]\ð]zÏw™ùŒ¿t€žù-¤_õ[¼»‹£fj÷̹}Ýs&ÈM\2ûôþCGOìµuÆÄÞþ‰Ýº§¶öÖõÿVÙñ±ìqûô–îÚnŽÚÆîšÎ©{Üäe.Ï_SÌñw;Rh00d¶Úendstream endobj 157 0 obj << /Filter /FlateDecode /Length 173 >> stream xœ]1à EwNÁ €TjU)Ê’.ZUm/@ÀD 1ˆ¡·/&I‡ßÂæëYô×Ë}æâ‘‚yAæÎ£M0‡%àŒ™j¸õ&o]­fÒ‘‰þ¦ãû¸µ¿ë ÄSe©5d‚…9jI㬕²kë ýûjÖÀà6ç±8IR‡Žµ§ò$IY*Åw#m"¦›%%À\Á+ñx„ßm1DJñ"özôV9endstream endobj 158 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 450 >> stream xœ·HþCMMI8sûVøœùT‹ ‹ ’øBÍÈÄlscriptp`Q‡½bøˆøªûV¬÷+§ø§øNÙ¿û ƒk‰ƒc‹}‹x‚”†•‹ŽÕ‹Ó‹ ˆ’‹½ #š‹ž™}‹[‹‘”’Ò©÷ ˜tªgÁ‹÷÷÷"÷%îKÌ;O[bmnvÒH‹‹g‹rt{lt^€X‹ˆ‚’‡“˜Œ¥’˜¾Ä´‹¤’ts‡s‰ƒÓ{œ‹š±¸¶¢¯‹½žZ^fu mPqU[_\‹G{Ù’–ŒŽøF§ù(§ëÕ÷h©÷8÷[•”••”•ÑѺˤ°½Ú§Ý‹Èºy¯]ûûûÓûP€‹‰Œ‚|}dh||zzŠŠ‹‡…’“Ž‹˜š½•O§3ß‹±‹±ž¦š–½°‹–‘†–†ˆˆ„ƒbf[e]‹UÑÊ’‹Ÿ“À•Ä­÷$«Ü—ª¸÷º‹£•xj‹8<û V:?@…… 7Ÿ ´ýÆÁendstream endobj 159 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 253 >> stream xœcd`ab`ddduö ²1$»÷}ÿú³‰µ›‡¹›‡eÒ÷¡C‚{ùw 0€“†&'3##KÄæ|? ÷-ø<ŸñÓæï÷‰NžÞ=½¿«§n†üoÙßýº¿ëwßòû»ô¾3gôôtOà˜Ð>©±:2¢©Yî·Ôo…üßÝ¿yº—¼üíñ]F›aæ÷ ¡'¿÷‰v¿ªþÎæû+ê¹ÁÊnŽÆŽ–¶öîÎéõòß~K®þíÝý[¯û÷æßÜ¿e"bë꺺ºÛ8ÚúZ¦ÎÞ»oÊd¹ïRß–÷èþÎÃÁ'ÇÅb>Ÿ‡“Æënðendstream endobj 160 0 obj << /Filter /FlateDecode /Length 2737 >> stream xœYK“ÛÆ¾óîStàMÃcž˜QÅ©rWE)YI$Vå u•°$v‰ˆ(ÔzãòOwÏ œ8‘"fzzúùu÷èÓ:Mø:Å¿áß}µJ׫O+N«ëðϾZÿa·úú­‘k—8#Ìzw¿ò'øš •ØT¬³Ô$\¸õ®Z½g¿ßlµÐIšJöæÏø[%Îö»­ÿrÃ俇Ý_Vœ'N«l½{½ÚÝÌÏí–Ïetîë·\O…ŸÂˆÈæMñãf›&©æÊÖ¿Øl¥Í€«`‘Ë̲3 ¿5;渚"÷Ï´o2>Ýï›ø›³Cñ¬¦- ëô§-;5ÛSù‘XHÇŠSy„“øeµføÓÉá<—ìþR£¤Î e9Û÷eS' k&`‰½êGÂcÞÅ3èÎßà„EV, à âW kîGÛkæUqŽô:çm^}Ñ‚í×$B^"šR«‘—,Ú—U`véú@ÄU4å°á¨ceßÅCš=kýÿ•·—ª¨É7|׃eŒâdêl,šˆólŸ×á´ÍX¾ß]GŠ¢v‡¼G›À)¸DB˽GËß-^αƱ>ñi´@„XXÊ{ò‘%*Òah9IV½oÚÈTÂùÕ “˼ÞaÓB<ÛæòpŒ dËÔÙ$¨—‰Ì$dÙî°bo7»^‡=¨-57žâýDܦý8I€îœ×Cä£I!Ò'z”mS“©QIåÈÔÚqòÛ»†„Û !•Úõvˆ›ùxƒT”eÞR]Û²§=‰ >†ŒÛkpÚ˜2)ˆF)ƒ M9#!»`©9aúëþÈ>|Ï$æÅ-;ßn"‰e?MrÃE–¿ARŠ2À³à:€²÷GÜòû|‹ y6¡ýù±lPæ[J:EV`Ïêütz¢Ð7|ãÍy7€E5¹AÙà:'!Œ§Ý™Vå?¾[}eàT«”‹Q6Ádj)´Žfû¦:_úb²Iþ¦]ðG@GáÄ<¢´ì±§,B€`¯Â-G)’Câ•ÕÖ‡%—.ÉÄUTžO"‰p†| ©Y½X²ˆ¥ %~…¤ˆ™øžµÅ§iò\ʶèâeàƒ+&ù8nOPÍ9Òî%è+ؽ­pã©&ÂeÄ;º#•”ìÚÀr™­•‰ÅZ¹j/êÔõyÛ£ œ`ùóFkTPøt)hÝœ'ø«ÜmÞ—¾pjC€ì‰ œ}h û.!:v˺"Rz¿+B,ùÉ %It¼b¸ëµÞû‹/œÊIÁ"vàØÇ!ó)B.…ŠYñ²|¨‹¾9b¦®×¸1EÞ³ïóicQV0Ù¥Š|5{àL€kþ3œ9òùw]_VyH(çŽG°Ù"ÎA_ ¤ü¯áj•‰lHX*LÄšUM[„«!^EŸ—§âÞ`lñ«TšµRçS^“¬ÝíÓTøßQÜ†Ú ©€ÞÏ8¶|CÑ’I†Á%¨f .€M>¸âɱgð”×=ƒ_ÅÞ&ü Qнɩ<„eðÁ¤ÖWš)i¼IoCÒѧ Ó¾yÚ.uª!j•wØ(9­@%«úðýÚ¦–8¯‡§lÛ¦í"g(ÉÐ Öaƒêé ½4b|ÐɧG¸*æ±ÊȤsµÉi™UT×g-”Iù²¼Øž†0`ÇIÒ5C!|ph3ŠÎÉÙ!r³5œÊ¤¥4B'rŒ-\Å•­Ïh@ ný9 ã,Ò´ÏŽ|ƒaPN/ˆ½* z ý—x…Ξ‹… D’A§ Ó ™dÎ\ØQNÝp(kË?``]öe~Š›×fG8澈y"*ÇNE>f ¡aœ§ß7PûaF<º£CÄäiº®¼;-úNÀL‘¥Cm n„­z°GlîÛ¦B‹m¥‰²f(`[¼ôý•­Zy׿íÓm„µ³&Ê-¬ÆŸ±½CKW,8™A~·!µ_D éSåÀå>mrEw©*/[ ý¢SO·ñàváÏ&BâÒ&,HÕ¦¬.U”Øbmñ%…³æ0ªZŒ%$Ž;oŠÇ¾©·oóó±C òj6³JY•]ÚД‰QáPÔçŽo‹þÒÖc+½oñeüå(ÊC›Ê¢îã Ì´' Œû^1ÿ«Ø ¼¬ß›¾9kãõ¯¡Šê7#ÛUk”\ªöêPªSLÖû¶²•¡»õXˆ èÇž¯ð à]×ÂH2j÷®Çv9˜OôùÙWœ¸ó·öÖÇ wPp»|Ý{þâPBC+™~Kdš¦ˆÈÈN0HVèÍãx"TÒ ‡Îp´—Váe’ÚæºƒtD#½ƒÖ§¼OÆC·‚왎}¸¹¹y>j·¤àÎ(4û„ìy =ŽT|üú0nYÜÒÞ"’Ù2?>Œ|Ÿ?ùRÞüÿ xwó¼þ64ùˆó®(´å0ïûâ@Ý·‡]ßЫ/pšºv˜ê¦ë}$×Ô¶-8ì¹ì5^e—ÏK¨‡N°ìâ­P=‰œäô\ó×K;Þ\ÒA)c[/ Í•~F˜ó¹mòý0¿õ^Á¸S´{êÌ¡|(âÝ.>@ÁìM‹ÖW£È±È]x? âJ ó‡ƒ_²[ÆÙ ‡¤þ+Ĭ.Ã~³küNíÍ¥[áM-]½©A&ö=u¹\iÅ^û§‰€ÂEâC;\uÑ “Ä_ ð2v££)›XA{ÐOTªÇß3îySp|“1¡gô”Ò< Lèè2X ¨.Í¥‹âh ˜ç‹.‰É!× —TøÒzî‹:¢¸J¯£Ë@@"îþ‘ÄQÚ)ë Ó§ ñ·±–¦¸f| 1Ö„/ÉŒ i© …¶´ÃZwþé5æ<=Ð" Ê€oïüN¦`HgùÝ”®<•= €Íï=ã@6Lïªg"ùƒ)‡öŠjh|WG²rzãœÐ©ð¨àk 6H˜JÂz3A!›©ŽÙÌñ§ÎE©ˆd!½·Ð níz HeyàüÊGį˜”Ë¡!¨* uü Û Ïœ~`QFO3àú±ï:@ñ§Â4+ÑUK·.>yŽ7þ=çx?“kÿŽÍþTv‹ƒk°º€vÁ|Ý’¦~>!+`ö¦àù¼{ _Š{€¤Å.õZ¨Þ‹@¹nfjïóK702WàiÔôb@Dîû ½múm#'‰i:޹Q€¶èÎ!h–ÝíÐ(OQà]<€8àQˆ¦»> stream xœÅy tTUºnȮà EAÅÀ9Ü« (A±AAd C#„Œ$¤ªRó<Ÿª]ó<שJ%a „A‘  AEiœ¯cߥÝý¼}{ïØë½]I@úÝw׺w­·Ö£ ÀbÎÞÿÿýß°SÂ6„SRR2|íâµëfVTTÿ2IÊ* ?ÞZQ G …£†ù'M9> Ç¢!÷žÃ)þxªe÷ ­B‘¸m‰D*{U¾}…bGMåÎUµuõ ëšv5?ùÔýÌ}ö¹z¸ê‘é[ÝöØŒ ÕÌÇ5Oh9œUœÕœ8k8/qÖrÖqÖsâ¼ÌÙÀÙÈYÀÙÄyó(g3g!ggg1§‚ó"g g)gçIÎ ÎJN%gGÀÆ)åLæŠ3œ3‚3’3—3Šsç9ÎhÎ<νœ1œ±œ-œqgg<çÎÓøl.çµ’±%íCžòÎÐÃ& Û[j3A/·‘?|Øðüˆñ#ÞùäȯFÁ{Jïé=óÞçïýyŒq쨱7Ç=Á{œ÷öø§ùK'L™' ‰/ ~[Æ-—ý|߬û²÷}Q¾©ÜZþ餅“>™¼iòפœ"©Úÿ5dÔ—œÑý_}èý¾¤*”ñ^§zí)mP‰J`†&§ R•¡MÄØ’Ô1°‘í+] d\Õç(4¤£ÑTB“QUÀÓèñõ{±ßº~nЕÑ6ÊlR›Œ’°å6±El—mrV¡ˆèÚ)ô$È&‚Ù”&¢ ¶ãeÜLx÷øö½„k·ê`%Ü·É··»µö¡ûJ¾½†º®E(¬à³|íoØÑOÌ:3$#ñ#?£‘ñ‰››þÌÞKþÌnà›g¯žò $æ5üáâ×Wþô#å®‡«¡Ía…¶ÁÿÛÐWô9e㾺:‘w¥à,\ã×v6g_‚ì<Èv³‘Mȹ,§—½=øÇŸÞùº“ô„t;]ÐM$ Q9´© RqÚ’Á½yâ—Îÿ¼7ݨæ@ÝAå X†îûw4ñ¾[óËÙüªB¸“Bmì#|ÓãK~7½õâ›”—ëÊùrî¬; ÞH®÷üëoCâÊÁƒ[ÿ?·výÚЄ7ù ìÎÒU@ªÑËä±âû—t$žLéÂ2jp%ÜIwâË‚KàôÏJä¤u“½­ÁJ6®IWA‚Ä–²cÙ‰]| ë}#»ÿ(ÕªùÖºNÒмeóö5˜ßðþù?~öç?¿·oõ:Òšº áíÒè[wqA‡Ðßùΰ7£D»Â¯$Ù{€\iö#îÓ~?ĸJ¯ZQ3$ñâ-•£Í€WO8å{_gJ‘P<¯Ùä°”Ïî._—·Ë»×³/Üuà“.~ ‰–´šÉg˜<éæž^ê.[Ö´my¢•h1Ž®ì‡Æö!íʼn¼$šÖÍïn>a<‰EÃþœ5ft)ªîdeàå@£OPç[€ÝÄïQ©ß¾^ú›ƒ†6’wÀà‘îÉÃí^2pÆr‡a¨,£ +ä´êH¨Üª Ò­t)JH,`RvÈ4Ta}KO°œVÃbño´[7oϜ֑¼]f'ÓPÞíZ®+pmh ” ]<`R¡»v?U÷¡{eãx­¨¡øÚô t/Øu´Î¡#ôÜçÏÕ^ýäÇßý€N§•^|&v*D¯§YÑ ¬/on ÷$¼)WœŠ|û t@ÏTÖÓ™Ö†¥û ðfÝ9OÎp`h—û”B“JL“º´Éa7²ß n"¦ËÞÕ^t¬m+'¯-*œâ?󋦴 ˆÕzÅk•'t¸=~¿ÓWþ%àµúýŽ@y6feÿ{Éä0—÷ i)ªµ¬ô¿ùàgMéþ~¦¢x{Òšˆ?a6c`°%x§z™$edü'ôQì¶R¶@Ûþ‹Ü.ùº>Ô×8ÍÄ×-5,Ñ/±‰Ì­PH̾¡>{ê`,s˜T$ô)’·º®—A&‰©S‹©³jŸø€WЂ!"­ŽÈ0°-Å—.J©E¤ŠjÒÔ) _cZcXc©±5¶´´ë´;!¡¬‚=~'þP'Qç 1 ¿‚|ªnúÙe`ŸIiaDÿ.Ïâ]²O²××¢ë¥A.b2ÚˆšxŒÙä4—·©uRŠw¦-c‰“‡´ÖeŒÍJ>·™Þñ<£çÓ‡Ž}yò‹£7 ×=!H„€ú~Hda†â1imDLòΘ‹]˜†{fH“¦Û»II ñn?QÉP4oNñLS%wWÊ–îL9'ÉhWúhûñÀ±2§ nónT—y›¢æ|úŽv~Úùqþã®ë"”ø ê#x*ð†·{PÈaLÕ8‰Ç€Jj‘P6®*¬Íè*{ñW•í{“òýWT¶_ÙNõ»Q5Èz›€b@½”M³Ÿ¼ ÷€/ÜãaÂï Š³ ýDVP4ÛÔÍ’–Z%v Áš@‘ÊÞÙX8Ãh‚Š]d:Rš0Þ¦ZV†é\¡iOà©òÕ‡õ‡Ø Oìá_Ó†Qk³«"ƒL¸¥eõJ‡/è c#Ä«ÎÉŠ:õ.QõþÖ£=ƒF~|Œ|¹€&\F£=!w ZV÷ެ̧¦¦ž×‚±U.Ñhñ‘i̘#;ûÛ+EêѪÒƒ<êMi£Eèôóè Åü·¡îv…ÿ~uha^a°q┢}¼si=ÿ¤«õ€¯g‡±²vè͹ˆsõêÞ ‡HoÀÄR”‘û•ͺr1)Qî6í†Ä‹«Nüoß÷S†±;~}ÓºswÛÄ…õ¸-­ì“Í{k’Û`;²%ìH {/aäÂ/Þ¨Ís¶,ì…G™Ã{ÍÐBظ<¹Ò·ÄËobä°Ê©íÀwÇ]ñ [®þÚ3j¿s€Tn)ÃÚ4åa¾ùÙ]¸> ±¬éê¹ooüõ§C=²š(å6z Ðí;´ÿ<+þA2û½Ð÷Øïø0Û–gS!\`&£II1ø´ ÞÃÎ9È>ƒ–yDæ†Ø=)OþÃÂöqIW’ؘ¤¿“>FÑßv}xÈ Ÿšû‹§ú¤æ”ñd!F#Åh„-Kgk ñÔ CÕµ¬½Ó¿I¯¯ä›«hï•¡è ´Žz€@ z<ûŽ}²ë'ö>VÀŽÄŸ2¶ô»9hèåKg_£üÁ@FמQù°Ò ­ZØ´C¹/,;ý…º.ðÙ8`.ß8 o­Yfr`þ¡îòü%_^Gï]Š>¼5”¯µk¡ÖÁNVhYRÆrµó•sá<ÂÄ…­ÎútÛÞÆ^SÀip~à9òÑK‘¯"7ÂïG߇—á Ûï–§ƒu°?±3øÖYê™òYÆãæÖæÖ¦*Ÿ~Ór×§oNùOQ±Ï‚hô©Þ®®7œ‡!]°ÛÁH*W+”âû£ï4[´JV‚h<ŒEû:ëv0kÓj嚀&i§Ð Ž%Óú°ˆzüõ•¢ ÉøòŒ:(¦Ø‘À›ƒù “zýDì5ü\RÖÞ•Ìuö¾è®Zº{}3©m£ÅV!-ÐF;¶`ÄC@¢Ã!-¬Íû}¿úVчžûÜ´å‚W6®0÷üDÞhèIþÙ¶åð%ÂÌ =ŒøÍ7àß "O†—@{Oìyòi`-2†“0¥!žNú£å9ù!ó^l‡¿ÿâÇ$²$(‡›öâhãäzBƒŒÓ-KjSÈ¥™ì‘ÑæúZƒr7e³Ó´ v\]Èè!xU¹“ЃG{úA¹WæWR.› S(4iÔYeS@”{å!.±Ãø‹ØMÏW­ ¨% SÆàÁ}Ýû¹H»3‰Á©ïí‹©*Äò-kªÖà WÝÐýfkßùÓçßÄñýõ;¨»’sQ<ú…£8^ÿŸ²±O¤;É ñwÈQ»‰@!±ÕaM†ºKKe &÷›èì žØI@fP©1’I×@&Î`¶m3™ÐLÍî=¾=Þ=G+‹ 4ë>ŽUaá×haåbe΂xœIT†¬|-“ØEÍ1Ò|gžét“^.ïJ‡”‘¼›´ÝA—ßÞOB3*ûj5.!m±Š+±ñÂ|’0d)´¤cÑ.ƒŒz¹_¾ðZjnƒR‚w¦(Í{<éœ C ×r¡277¡ÇRñË4Ð-*Z¦_$p˜íØÂ >ÐH´»ðî”'åJýÔ*ÊŠõNäý€¶¶tu¤•E‹›™rÉþžÈ© öéw7~`g”ŠTiˆk’Bc@G»77ÛæÑ’2 €ÚýæXëñ–㢓ö"º=˜¨œŸÛínO Ú3ùL{:“ø½^OqËÃLNæÃ‡ µ^*M˜²T·ƒ­dŠý2öEYô#W;†H™‡Ëû(I«ªrÞæ¢IZ ZǦôn4›×Â>0Ðf¿6AS诀)¢Ó€ÑÉÞ7¨<¶ˆÈKÜj’ ÔmŽfe;à»eÔ¹uý{¡0ß%‚*²(F©,ŽQëØÂ~AGôYêó¢Ê`_WÎÄ£iŒ*œª˜~O7ðÊØç‚ÈÕ þ$Ò^¹ZFËñ@ˆÙߨD¡]T6`<‰¢ñTFpü#`°ïLé"m” ü?ø²Þœ'Ë žÀ‹ÜCð¼'¥§×¼R×ÖÒBj·ÄvÁz¸[Ý*¿sA„ö]D³°[\‚½|KÃ߇- a¡ :˜HbnÔ8=x=t\TC‚=Ú Ik“ífç,µ–:K-¦J¥_“ïŒwF³äÞdOà $.\¿¾âñ¹3êeGA˜¡òòD[­¾©aú_vüA‚ÐäO6|ώر]§®Lëaiá÷}‰b$CÛ‹ìT¶œήÞÍVaŸUÆA¸@7tðuD›-A“ÑðX8†ivè„Ú_Üæxž¡ßä%xŒÇl†æòWm• â´5sÜ~èɹÚ«•¢gúPEšƒEI[Xß$x^‹—)8šB/Õ¶±¥‹T¯VK“†ê0Ð×hj ;ì<‡§"¡‹Ã<ĬÂòþö@>°WO1þüŸ­Ì„&?Çjð)ALOšˆ”šN¢Š;›n—úÛ¨ZàŠx£žˆñeýŒ;ì+ƒ¶É2³Zj!õu¹Ef•—ÙtV]K°ÜÿÞzØf>6;Å·".h`‡—¤Rz+…K!xiߊ ×ù5¬z»kgÞ|¼ Ƙ0Ì.‘'dEáª1…VÓ¯T}l¢UVTò>O¾æ‘]J¼îô9¿O~óü¼±îÂÌôA´SpÄÐMÇÖkM&Tâ´2w$ܳç»'æ{Iw²ÿìQ}Xë\ ÷,—i,´Ùiq<®®X…•'Ö ÑaGˆ&r¬’5Ÿ2¯‡UepÙ’•zB‡Îð·_ÎÂÓðÒõî³Q1û€`àXŸI z|¬èm~2%‚(ƒ$CA˜%š„R«1˜õäŠú…5 w,¬)›ÿªÎ¬1ÛUev“’¼ò“uŸ½üÉÚ9bˆB"‹'RÊ &D-:¹ôÔ‹'•ayX„ÚR¼â™Ži¥-Ìà«h“j ©œÏ‹ ‰þ'ȤÙ¸>¦tQ¿öGv"ö‘µZB‰×bVÇË}åˆÅî4˜‰ëãÿ°úîc >¾Ò¬Ô«Œ¬¼´kÍ®µJ£ÈÛUL$= â C^D¼F¼ƒ†_Šúc~ì{]\˜ÐuÁª‚9gç¾5çŒÁ¯ i!¡ÔªUò¤1f¤®l½ºñêÖ„>aˆë_¹Bz+ƒ+¹çÿ­eüzsåÆººéÓ—³÷Avd‡ŸbÁŸž™q¥p"ñxRãשgßkøƒ=özû—ö¸ â`œHh#JÚô ¬,âk:ú¶xq„ø»QµP5†M/ï©€Ó ûÔ#ìãìäÙjƒÞÕPÖ$ŠÄ„ñp,ˆ¦}ÿ74¢EDŠkF¥[wú;¯Ço0útå¼+vÚaÔlT*-,À‡9Ž~á “¢¤0©h"8î:€L&—µµ›“z*¯nWvè;WhÜ­jw©r½Ê„k‹WÆ#¿/DÊô¤2tƒ¡ÎÒ`7Òzh QCì°ûð^éÝçÙïÝסÌ+;”aSLsNɤ39±_¦DqqRXôüÁ®dGt_\'xÌðJµNg¶È:Y­¢^êîòu»‚Å‹S"¥ ivÒ;›m¤u—­Éºk°9³1ôn½:xIù¨äÖý¥Ø½Å]¡8.6Ï›—zUÅäY¼ f§ÞN¬b¨5ÚêYð÷»ÙaÂöBÜn“höíX•ÌúóXì°‹b/6𮟥èå>´—ïú–ÏV¹ÈÖª iâØx= ì*ZM«4O \=ýwªÓ•îò‘)4¤(ûÎHö ñvwg^ìët¨£îθ'ѯƒ®;‚CxZU -MÊÙ!v]çЕ øáR”Ä/¯EÿŒyÊÅ×7n¯o0h¬J”BuD·×¾ûãW‡Å'·R4ع«¹¦…i=äÁè¡þ/ÅúîÖh>[ò÷ûKÙù@m7¹‰WP¢x+(ÎáÔÛÅÈÀ?p[ ³-Ñ.va‡ñÛb9‹†2©YT¬–&€íÉmV¨ì‘ME¾z€°9Î’;¥H$3ÅU.ŠÞ|³Ñi*ÇŠöàÃ…UR,T÷÷oô/…wø8ôÙL¶JPתê%†3Ê ˆ‰Ä‚Þy$u,Õ“q»<.7ÄcáÁúí¶3:ANÛ®ÍiðÁ,a ÏrHºã L„֯õ‹#‚†TC¢1mv[<&ø«@ŽÅUnGãøM¶–Ø@4u>°ÏÓÑáÙ‡ÍûþÖŽ&òŽxà–ã¡•Ó‰Qý ûèTöQüuñ? äͲfy³A­T`•PET©l0—“hÚ€AUñ÷WÁX"“˜bJòîTûÃèwاü §Zv|«†ìÄŒ£ìTÄ#C-H~ƒ4M%¾Ý‰¦±É?±~¾™%Ö³3ØaÄAçÀÙ"4ìC4ö=©‹*¤&¹ÚH6¿RS¿ÞHˆtZEsê¨!‰08è>ïÌÞy}ƱH÷ù¬œ;zöè¹#ß¿†|ø|åMV0ãáMÓ›IÌ|FÌ|­Œ†éÈ2AsI7qòòþ^Hô]nšÏŽ`Ëç,|™Z¶eù–e› &“ê0Sê3$ú h‡Ñ€;ïÝ{û»jY¥_±Ë*ÚÉÛãzëþ‹%è¬u•Ã:ÃK2ö^~ÉÓÖ 0™^­RFµÅû׫ð›ð‘¾XÖÕîÍgÑdA GÏ·—pOé#m¤ìp/öÂcØ×â²çÑT+æŽÃñoìC®Z™Ô$æ1ûyÁÇuÜQla±‰ÓŠMÔ@ ¬ÍÈÚe¿ºh×E¬øã +¯T]ÃY«0ÝäŸî¹p~IÜ|ôè¼%Ó4ó›HÛ ¶¦Õ¹|&w‘ÐoÇÄ;? ¤ñq‹$zúT›U•YCÕ/¬Ô=k‘;„ØLÈÃúyðþrîBÍŠÙ3—=S»ÙßÑBY½Æô»¢QÌyY¢­Nß(|q›¾E\4æk4²·ñõ™ÁÒô—Îâ!Þ_(ð·Yçm‚„:¦LtæßôÃæàÜ¿þ-HœþüíýqUBÝ*ÚdÛNÙ€*âʰ8.ж`2 G Ï5œÃùß?((endstream endobj 162 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2682 >> stream xœ­VkpSe>¡ôô  hc!7Ç"xY¼¬¸®Î .E(ÈÍB‹-P^Ò$%÷¦Íí$çœï\r¿´I“´é-©ÜEDÀPèˆ "]XtÜÝ™uÜõ¤{:Ã~I`ÜëÌÎÎ&“ùñ}ï÷>Ïû>Ï#AÆC$É„•å+?1{öìÜŸ»í¯-£Å`b˜8ÞwÏă¥rçÙɇï@rŸReóü–mZ}­añ’Mu[¶646!ÈRdòò*R‰¬BªyH5òò82)G"‹ÅÈäD K!%È!‰Tr~œ§hBQb|Gñjt:š(ñb3±#L·»í½Ûï™øà É’‘I7Æ=Ò€°ƒ6]vNª4ûÊÇS¥Ã?d_*s5GѾAJé¢ Ú…¯Ó” X]v¹Õ €µ¢RU;­·â‚–-–{Š·¡-j¶ÛÃxÞ'<¹8öñ.y"˜ð§¶+®Ú´Õ¾™ØŠ7‰åÎ* r+¼Â Œm…´°îð³~Æ¿]X-ãRžÐ}¾¼{IÅÂõ•*vü±xÒ ÉW[:ûó”ää%aÿÅ"á£ì«eâ4“ˆŠÅ@¼{òý™ÂÝ‚B˜(” ?ûÃÊïÅ) Ÿ/sLoçˆ8À–­:xùJ¿°^xìÄáu/8€“và‹3$ÏÛ3’Ñg{Š„ûGeCèö!Res[i;þ‹± ³¦‰jòFÔBÚñìq4Ì^Åf´ PfÒVÿðæGÅ'­:€MGM6õÆÙ(>,¨Y?ŒùetÏQz±Ñm¤LxÝ/Ä‹5¨Kéj0´lSÖ’u{ ŒDN‡FüeÜŽÛ 0a:ú.øÈÑ»&¢æši0aiáQ4ðiñØ;¨"9`èjÄ–ºìZ}éµ£Âò£S¥¾ÝQ–ÚrÀþ8Îõ^á#|DÀaõîõ‰Ê^q\›ý æ-9})uèÈNÍ2Ÿ‚(6Òì˜Óëò&øsCßÃp€œœ/¡=nÖÌ MÓ0 u2„àô¡N °_=Ø =ù£õD¾ÓùV »£JTÔ•/\wøZ„Û¬”ÝA+´âTÚE9S.588·?Ú3*àÓ§rœ–¥´a‰¾TzFà³ceîKÄÒY€ÔÊ®¢¤šP¹Õq–Ì­!Ô@ƒÍ=ÒxâÊàïO\”‹0QLƒ:–™EdÀ ™6†ñÐéàHètèC¦Ã!ˆäÝ(œ¶L±x?:(,).l€-••íôêK…»F¦JÏÜÜ€š;«vÊFÛÄ¥2RçÖ6ç¬ñÔ±ã;u+ÔòŒ0#¯³ ÍMì õ1^üˆpN4ë3q¦U&=o‹¡½ýd3‘ß'8³õé-<äMû{<½|7¾[°å¥¼ÝL ƒ¯:{;ÒeÏH¾¾µ½ Eú6u‰h¿XQÖ Ì1¾€'°ëâ¾ ».:C1o cPï†@m`ƒ¿Æ¿Þ_ãm’±v3R`à\|Çð¹]g‡Ï%÷õ½}x22ñ—¨«1 "dÐ)Øy‚ÍÌ6³£uKyÝË[Ë G£QËuíuËuÊO€¤ÓÞ.–<Í`xÖÇ%eb%šoó]@«<*ÆÅ¸€ #Khaw;[ÖÉÔUÍk4U$An•$’d¢}Ä2Ò>B{)ðbC{AR¼¹Ý)ípöTé±KS¥*á7Ù;Ë2ƒû:öìXæµ×­”²â¤ÖÝÆ’Í@®¡5¤Æ½É.›§¸ÌÆæ~cxïýÓC‡{ =u‰û/¦¿8ãQhPb=ñâz€i=±.ošOàþ}Þ½¾}|Ò“I,PâølÞîù›ÿPݳ8QÂ뺬]ëïîH¶ÆU¸°\¼·Ì¶T›j1éðýªšÊiu›º¦Céhþöéß%/ð9Þ&÷!L&;>#¹^à­ =:͉úÏÄ;dœÛC®ekP›Œv«Õn³®­ªÞðp5Ê„(ìß䌆úұ΅ÁP8鈆CM醸2¬“ñ.Þ ¯0jì­ x»P›;c@«€%a2õ›LýM‡d”Ç郘2%žH¦7ûàƒ‡.çé^çÈg±¶hf3nÐôz½;è ÚOà1—‹¥ƒ*Æ©>‡ÝŒŽ”3F_„í„@„ yfЭ.(â³c¤«žÔÕr-µ hs}d½hˆ=5Ñ„ÚpRóJãŠÚÚu5+,›ƒ¶ê™.𠇕ÝÁE™h($†3\t‚N:š{ç¤EuÞ—FïÍ”J“Â#ùêÅ-¶“6¨×/Œm![‰°ÈÍ›k,oÌ…Jk ¦dŽ’„޲uÿnÔÓÅ÷bv3ÛÉÆøN9ÜŽÊøÊЪ!ñá7Åq&gÚ(‰ñhð¥¼Á/„G¯ 3¿f%†;“ð'ã}¼óõ¢ZI ÕúôXLfUCm˜ VÌÛ€°«P±´ÑmКùþ døµlÄ·oÍ@ÈP?`.Û”Q=ÙfOïÌ~茹[:”Ì>–¼zÉÈ¥¢ì3…ž;Ñþ>²§ÍniÖ‹“en­KGiáJê÷V&à@‹ q’x—xϽŸûþØ¡ÞáaܶX˜•%#ªRsÐLYþMö0gã|\.NÿRr ÚëÅU2GÕÜå‹VQ{òÌW{„ÂŒÝC†µ½8›z7œhÉ¡J(ÌBSR˜›bô¥'¯(’ß sž;¥íAq2§`îN”|ùüŸÀepæð›Ÿ0 óÂB­N…êµeW€• zØqë+`vÅ š`ûzðD‰ôÊ×/¿?G!ýÎå¢]ÓD\\]ÜÞÛ?Ô“y«7ÀÎGTá¶ ¥·nPŠ.°Bv9 ½”í-¼|pןõIè:å?N•n$·l'=@)¡Mü‡àÕX˜ñzXx,¬CuÛØT¾*~Tø¼à:r½ /S’-jЄiºÞÌ`ïv…t{¯>©VH÷P$MN»%U£è%Â}Ø"h_†º Ûsc&·ŠQn!ä&Ê LyRåÄF‡ª!XO'\«À{\š÷&¢òX¸#%Wïx=]Í;x;p`«E™—¨*xÊoÊ áö[âiá)ÅC©ºòy=ƒ)Ù;o¾³ûd¨›NÏN%ÕL+A=hâêsU#a{{Óšæf=^×\×ü†òr¶Eöˆ£‹ô9}˜ñßñ^Sà]sSò¼§< üâßfÏr1&§P|æÞ—ñÇõ’†×Šg½Õö2çšÓå iA5-l·/ÏœŸð§}#†ä1_^àƒ&dñv ÀFý#²ö {…µÂ¹^æÜÒF,ÊÃû¿K‹ê€šq'ÿe(/.KU(lèr×âíëPIÀ'+ºW³˜]Êëš–b…œ­¸­(ôë‰äo'áöwendstream endobj 163 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 456 >> stream xœ½BþCMR7‹wùºù,‹ ‹ ’øHǾ¸=012F±þjøˆú÷¼÷?¼Ñùtù”÷ä𢋤£s‹~ý*~s‹sr¢‹šù)ûp˜£‹£¤t‹|ý(|t‹rs£‹˜øÍw§ù§¿æ÷®æø˜÷Ó‹÷~Ú]Ñl¹M³;‹û|‹û¥CC‹ûŸ÷|÷|‹÷ŸÓû|ûË]‹N¦wÝ}Ƌ݋Ջԋך ÚË ´‹Á‹¿jQ›UŒC‹4‹A‹A~Lw0Guc‹øÍ‹¯ø¤¯·Ÿ÷’Ü÷ãù¦‰ŒoKL0Šb‹g£‹Í‹Â§ü’j‹~'egŒ÷ް‹ª‹÷ˆ¡Š½ #¯e'‹˜¬øÍ‹à÷ìõè¯Êõ÷ƒìø÷JiˆuP~ƒ…>‹}‹ûLôè®§ÇºÕÆÐÉ‹ê÷ !Õûû74/X¶†•£¨œ¯„®WªÒÏ¡º‹ï¿=:4MFkgû…û‚‚‹‰‹oø0 7Ÿ D/ÎÖendstream endobj 164 0 obj << /Filter /FlateDecode /Length 5699 >> stream xœ½\KäÈqà[û`öP>™-MQÌwæ®cµ°ì5dËÒ¶!3Ì®bO—§ªØK²¶5ûëL¾ŠÕS3»2æ0E2_ñÅ#ûÛU‘‹Uÿâÿ›ÃM±z{óí ·«øßæ°úÕÝÍ/~/Ì*äÁJ»º{¸áb%¤Î}!W®°¹auw¸yÕ§æv­ŒÍC°Yõ§Ûu‘Fh+³§ÛµtyQ8—UÍîPoéѨ¬Ëo×ÐBöï5¾^‰ì9 äà'¾ Îg¾„~Âf›úØî¶U?ŸÆ7·ÒÃ8ÒeÝîÈ#6;Õ§v¬)ÛúŸ½É¾»5ˆ*+›]y¿¯Ú4‡Îž«¦»Gz€æÁ©Ýúöwÿz#DŒv«»ßÜÜýì5¬â­¤Eê`Må1=¸ìžx‚ 5ÁÁ´‘@ÓûØVËìØÓ|:ô<ÐͰ®Ý1–•ø x d¶©š®ì?¥;f>ëª&Ò­\Vîa´T°•ýçñ¡nºÓ±ìªýû[¯ò EÈ^Á(¾À Fs1¿#«#—Ó’6e[w%“ý“ZÒ>gŽuÇÏÄ©úðtꨮDdOM}_Þïö»Ž—­ñ¿jŸÕø[ÐÆ—Ã^Z<•M·Ûœöe3L›†ûƒô C÷Ûôب›4?ˆÃSSmv-r¤X!mö×L‹7&«†Ý·ªß}Üo%YÔ¶5þF†øl׽‡ݟº¡KTlRÛ§šøV½kùwð°Áûç^ÈKfŒÓÙdmêé²)E†ûìîq×CÊ~”÷ñ­ÒY[ŸŽ[zDA¢Ez™Át{Z§ç½…VÜÛ”¤õxòÝèÓi×í¾#Š”ðk8-Ì ‹üQGDñ~,ŸÚô)1Ê ’ì‡z¿¯{ýñ¼;¾ ?U:å­@6oød%(PEDŒ¥çì±Úã<øà”W*#Uó¾~HS¢\!3´ÅsŸÞÂÑmßÅ™–‚HÒÜÄ7”G¾ªìmu¬8aý )#w ™µ@s›¹ßë+âþUzeEO^wýÙÉXuLㆬ¦,£ˆŠ(·ï©›59Y†àÔT¸ë0”¬±ã°E®µvÖ]+DyOÿKTV!=$ïÒ¢Ô‚=Þ®‘ÙÚhVš’¶í‚r°`F,óš~ `u?°ç-â‘}Ö–¬¨mÉœ¯@– ,P®Yß*Rýå[Ыÿˆ:³ ¾ÿz„OkâÄQóÓ‡¬k@—JÔŽt©c=åiìø¼Ûï¡´üĤ;nÓ1M‰Oò‰#9wi‰[ Ǥöø÷Ýp‚‰)©ëôÄlºýûøÍê ùŲu}âÝýÅï¥ZÁþÃáBô …ÍA[ªÜ íõên{“éÛ»ÿƒ Ÿ{ç…Z­G _g¿:hØVíÓ®«Ž‹õd£WQ¸ªµ”&7…_­I™Àð HA/Ç@‘${ü¹BšÔ¤µ¯nëX‘ã(ÀÀ﫦ƣåmz¿SýDÔñ¡zœ""uGB’ÆŠ#çAµoO›j¿Ûu<` ‰¾¨®øá³¦í†¥=íËM5ίöUÙìY€-h@àPõüž5§·¨yi¾ ¿p>ñ«dY!Ú’.€1 Lv¨èüÐS\,!À1WA#Ç„ ʮʹ; Jåiتºmw Ñ«ì_êYðɬb™ÐVÁD‘¨ñwðŽçïÃ'¸ÂC beW' Ý‚ì¥Qʈ«·e2¯ZŒ]§Ê|4¥ Ú^ƒ™²9êǸ¼d†xÇ“9 ›R8ž$𻨕XDRYHšõ™7Ã"º$©Žï§p™ßâÞE˜*öR ³ü(™¥· þhñ<ôXX=ÎG¾Ïæ‚¿ëy$ÜÌÏzXfŒa5x±-#´ð©·ÂC¹% ìp´‡>û5¹z@#Š9uˆöÌ ö¿+"Õz2OøU#;=»{±›!ß ~SmÙlc3Rñ͡ܧ• à–¿5×pn½ÐMÔKÛ÷zƒLoGî…‰çªPØ©*D9ŽF¦$Ž“=†“»c¯ÀƒG ÒØÐAÀþÝÈYƦ6»Êͦn¶ìŽx¶Ì$Ylâÿò¾7zl»{ §†•¸Y¨þêÍ-~ò\¥vð0ŠSìOUZ6ª°Îj©1†’Ax «‚PV±ˆ²œ•Bp‹×ý¸¬ë§Mÿó‘æ!M§¼HàIpw–XMÞ³;“9ø€ØvyŒNi0çT±·Š›A¾h¤ËP0¼ˆ‹þ n‡y»À—;í y x q¶B¥áP¼[¸`2I!еÀ¦Ž¡Œ± E¿Þ˜ì}ljØß£–." 8Ç¨ÂØ<1=f\ß8¨¡;ç¦Xø3—Pqx'Çø8nÅr‹àŒ AQì½Á€J¿vy*j“ýz÷öDâ‚@ ´/t¡p.g²qGìB â‡C·¼îíÓþ4R5Ý®F!SÌî ýFì]ó8¤G†¶~‡ïAÂŒg™&+ûßÑáÞˆ…·°ãÈÅöDª‰_¢Fz ¹í¶q†#=L„ÎŽeÀ@¢åà…ö< ‡¼Ã@Ðmb÷žÜ2Séà¯Á;¢Ë:0>Ú<ŠÔ¿6è«>˜ÊýUä•×}ÌáÖ‹¦Ñ~ŽËioH‡Né«Ú.y„b¬¦´Çßé’3ª}ÂqcëFî£ÉmPÎ# ’ûìc€£ÂsŸÙ ×6½štsndDzˆ"¥}’HˆŽ;Œ&äBš™Ã8OŠ!6IÕuñIˆ¨Íµ¢øEÕÑšd9&—$,¸Ì2$ýלAÓè¼DjûÆå~ߦY¦R§•ÙéÊ¢ "j)HZ±3ª<ó‘cÒÙql8Üxn (u·í—hY ´…°¾©$ÿ”h‚ ´Ë*|uVâ¯X‰OԼ͕é[¼Î^ãp̵KVÏúëå œ«(oB_·‰}²9`†`V“.?yqI¢ÈEazCüS4î¹ €ï~¹dÙCî¼urjÕ&âv£´Æ¿`Åî?@-ì‰óòƒÄšûó›Xtj.ÿ87øâÌàû±9W†£6PPþ‘sŒâ˜ëâ ØîÍ`õ ŸZÁ^UHÿö¾÷ƒ¦†¥>µ)|‡£_SJÓd¼¯Ê­ƒË=;'Ü>š› ðÀœÛ¬.ž³ºWë% [@ÌaAC½¦}“Ñ™„µ‹…AA;-?ë%®QÇ€u\M']Ð¥œ¬ir†pM*iÌìócÒ,sÌq¢FÑ?:OÌõ‘Á}”"ô¨oÒ9‚9˜Çñ—èó02àƒ ¦…Ý|râOÉC ú/.J۱ўçWk ‹PBŽ,¬ÕÄ. ¤†.31ø;š „2™Ë ÑÞíuqq5V¹ÔŠ{üG¿M  ð'x#)}iS@ã.*á©?.€Oª×Ø’˜~©U‹Ö\àtLÚØ˜Ÿ!5'ÂêÌ šõJN=ƒ³€ÂdIôˇO/‘Ú(þð)Hí2­æ´þüÏFë¨ÍUÐ?ÝÝüg3«·í ‡ÕóM±úçp²`†• à˜˜ÕáFy£r!Ò‹ýÍ7k”¦âk””¬ XÆÉ%ÌF5Jt4¸:š¼+8ã˜ë•‚•Ðâ?dÚKŸ0 œ$äÁÎÂÎ!oJ£Tô¿N@ɤ³R…•%pi øƒ}ÝNH,¡¾AqDÌÒL>žEÓ¨U˜EÓ¦g¬ÝWØOq‡®s¿A=*ðI—²éi•G2Wô9ŽäŠ(‡©˜é2EBWûC(’ÜljEÔ û  ñøA+[$šÐ»ÆÒÞ˜Û,zó(È…œà k³æ*# VB-ÕOWj‰M]øT_Z(-RÿM®óúeä ,Leÿ,ØáÂF¿LôNÛ"²Ýµ A÷'Î~Q«Â¥ÃB[™‚Qpvb€Áî nC”ˆ‹`»5úµ³"WV)Ë“¾Y*Óçúæ '·cíä4\CiêXÜ8΄}‹ñ&Sx)3ʦ)®iŒjâÌˤ8EÚ„¿™»)æFõ$äHWÅAØo†sÂAVåD¶hZ%À6ñ)ÒweôÅåNa\~Òã pœ<œC¹ÈC¼K«:ó<¦9ýQî" Î.$´…ÉÖÉ9¹(ýöÓr =Y/#'ä ç3NÌH›…F¨ýcÒúÅ¥ˆÕ®‚Kæüæ™Ä2X÷[£êœË_ȾlÛSÌÜqy—ºh«T0£©’«`RÂZsÙÁ»Ñi<ŽLÏ’ì8ÀŠJ_u~ÐUA—4ÕzPÒSsqýi(ÞqÙ¿ý†™ªW¸Xž¶ÛÊ.‘€õ?xsÇQͨÎþpKÔ D*®Nµ?“"ÕMUm‡±c%‹¹ ¨ÝvûXײF˜‡.ú¯  ÑÀ–m2Äxog0ËaV÷g¸fo»ë-'˜ûºìnütò¦©º*Y}GpŒL7ïÝŽ4aìZß·U33Öü­'%~ø^âC÷»~éý™9‚T¦þƒ³–ZX²›%ò.(*·vŽõ>Æ„¦%½lB'îWê‚2Ï™êó>^£j©¦nZ‰ìô4|ˆ…΀¹Píˆ_-^ê+·Õ>NEû•æâ²`.+µn<ö¬óhþzèØ×ÐG¯®ªUÇ„)̲Jx6%lŸËI%/ô H¿À'Ïå'c°ŠäiUdÏ ×z±ýŸcÃ:¦pþz—vñ˜ë>õvø°OkF­6œTÛ×o×}Qðx¿{¬°Ô´o#KÀ…œ¸¥k‰ÁSmg»Hîœáªtf¶ñäß<•My¨ºªYÔûðS öûc€ÓCáË$IMûOs»h,_5øìî;+éq$ðÕ©Ï–ão"þâÎL2!–œW¾bdÌXühÁ–¸¥ýѹñÞܘô-+•ìÌEæ`Ö‡l刀iPu`LLßÒV(ÿi’ó?ì¾§rFË·08=þ¦çGš¢h½b.›ºiª6yÇ êãv¨ÑÜ}D`ßæ\k8ÜTœ‘}ŠÅYÅv,ÿã+½ÑÓ7iSžk’{p²³lRñ³gqÑI>õÍ<9##?]¹™‘ÿãHÊ¥ØÄèZ…²´¢rßTåö}l@é’ÛÌÓCñhÄ4A˜§ïF¡•EÕ&À`ƒæüQëˆf×KÄ ¿.ÌGäÉΗr…%ž'Q_ÅŸÐSž'e7°[ÜÏBeG9 ÚsÝí­tŒŸãìÞ‰…¾à$ Ç^%/öÂÕ$ipÉ1¸8®Œ ~nÐæÜ0ì›^`ðÖÕba´ÆŠÓË è @ëÞÓ—’]†©§ãqAzúÔ( 7}1½1©pQ‘…\n1ÐÏçP§P‚Eè %Äÿ[ýBä°LÌsý¿–Gœª•—¸½Ê–^|2ZÕ Œ'Á;„Râárº`K”‘ïHùMé¸gp~+ƒ´®7XB»áÍKùÌ©oó™xÍÒ6Àr>óiRÀS{hh4¶ƒ†¶ŸZöo^œzéÏ=ÀCZ ŠPS*õÕ‡Ùß.kúÜcŒ.Ö5«iJvF}Ú<èQ¸B] ðdK îŒ …íŒäz­à€c¡&š%ˆ´ï_|4w`Ä\àˆvÄ› çÀ=Ÿd–P¢fÌ•ÄK“—Rù?-O¬IÊ< œà c" £’äü‡˜D÷œD§ XŽÁS®¿DùµZ½îß¼X `W £ÎMvH(““5Å€»oKFWˆä„€bËAà„0ˆ–"¦\ø^›nÐB+ä9З|«Ÿ[‹¨Ð¹¸=«‚lÿy 0]#‰î–ÈéÂê¦ã ’ÿÁæý ³õuZ—"xÊM,µ³/¹¾°ˆeîÜ_)®ìüG6†û$ìkš\‚]­˜ü]§’¡»t7¯4s{:Ш…aøˆŽL¡¨bÖPúÉsªß`2Á22«/ãe[þëž Þ+3(’éºÇúôö1Îo¨4ìy€!È–óBbèšîäWœà8ÿ- \ŽýrØ5çdVAa²£Ÿ\ š î³A°êŒ¹†!…CÕì6Ä%ä²ýß°èw2†à½ˆ–Öð=•>³„xõ[ØSÆØî=Åù9™e8=7ü}MÉ›Èk®N¦µhÑóZ¤êd¾ÓÒßTͳð€Eé¹Ç"i> stream xœÕ\[od¹qv’7=ñK€yè·9ÖÉá\clÀŽm,‚83€ Ìú¡Gê™éµ¤žíníì:—ßžï+’çÒ:Ý’f´‹Åˆ<¼«Š_U‘ÅþzѵjÑñ¿òïåÍÙ¿þgˆ‹·»³¯Ï”Kª fá•Omô ,þ ‹„êÎ¥ÅvµøÃâö¬kS×™¤oÏTt©Uèa¬jUZÜ 56¸V›Å5j¢i#*¢k•[¨ÔÅÖ²œP¶(ý뇸{ƒejÇeb…¶ vñáL-~‡ÿ¿:ëÿö׳wg/Î^-L×Zrý÷OåÕ™mC.-“ÆË©56™–«á0¹›Q t}¦s•j̯\ës¿ð¾U­·êÇŠ©uzܪÔäV T…ˆFaÒ¨M³¾MvܲvM±ÕA˜UÇêÚ+¦}Ƚ7Ï6Ò‹ ¿“ÔcêÎèVùéb“÷mŒ–ôýêL}MOÌA¯²Šg‹ŠÐ-Th5ª¨Ä¶p9Ö¶*œVŸƒF襌oýDéžé.A{¹Áœì£›¡¦×ö£V=%PÕ÷ºf‹Ô7­÷É {¦^ŒáÏt`£·£mÖ×$o[íÑÅ(°² ¬XüÂ(ݵ˜$9h”CѸ6±¨Û¨Fa—(N²‘Á(ˆ,°¿úh”cV¬d T'=JM϶CºˆîýõP]ÀSŒUÿ=»J̰œ)uóÊZg üêBÐÙ¯R9jÕ׌Zõ=a0;3i•kr+lðbÔªô«8iÕ‰^…ÐZ7iYû:˜’(ÜêGëZù7í•õþùÆo^£azP?U{MÉOV¬R ŒŒ[õýêL}MOÍA¯²ŽgkðT†ƒÛúø´B?ãC«'ÝF\3ØE x’T”¶¥8»¡É0¢‚ET¹Vd°F†â´}aÖ3ŒòâÌ·]Òðû`ß¼s­#+ñi§±Ñá*°Û×ÂÍáW±ƒ÷È>NÜØÐŽÎ·àP¤»ƒj-Í ö ŒŽn ‡Lš ç*à“¢Aƒô@& œm,Œ­‰ Ýiø,ƒ¸Èº`‰«"4ó)vÚ?Õ&”•ŠÜ€b!tPPÂ’‡ Ù"v(`|ÀžÖðÜ@°—<kŽB¹Öüô­êhZr +,{ceMAG¶Ô+J`R°»G8“ßÁ¤DdÕV{îD¢0\[è6´ÝÇÎsLmQÌöQ[~G§ [qœÂaEô]"ͼzñ8ÌÑïÔRåŒwX³·šîO‚ÛªX FŠÖȲ±› sé§%ÚcÉÀì¨GÖA‡)ˆ}WWGè9¢œr¤Q,)Q c–Ÿª “†ï° ä:†'RNBPŠ9pá¿àšàªô/ðf¨ýð@7±s˜?ÒʉµrT.Þ³nÅmJÀIZ?€ …DÙFC˜V8d°mDHô£tD 8t†#þ…CÔï·^‘¥ƒk@ƒ„AŠP!,É*Cé b6ÖæEDHƒ6™ wdˆ^zpÛ€¹ƒ*‡½šØáhPñ…O °vi«ñ:‰þ‚îÖ‚lâè  åg¨ç6„ Z £iÂ|l Ä0!¡ßo†®¶.¾vNE GspáX€!7ÚÒ&Qñ7½Þ&DøTû¢(TG°aèkqC;¶´ÖËMhƒlÛQîi@&Ûa]I\Ó@ű ÖŸÞŒÅ.…±Ê™ÖëüÐè&*ÆÝ •CT&Q#3Ò%¶„D“@/'vÁjHÑ ášƒÇ™ÔÄ4ŒZb÷ k”ìæ`'X xƒ—â èv“ra÷¨FBS”£¨ËØh('ÁäRfª¬µ@9–@Ð !*æð¹ƒ§ß8q!Q/¡µð Ç'TPÇPòø¨.I9–•'5-‹8G5·Äh„ŽÛo˜áw°™$’@z }!3¢_n¸²bY¡> ¸rY¸Z¸Ø·(\ÆŸ–ÓTZ<¯A’€+å"k¬ïòžôéÓW$ K3vVl‡PôÉøãV£c µžðÅJY,®&°yß—‰°°€ÐÛQ M:¥ æŽÊ╹F¬”p2gW标ɲq¹‡§QF xƒ[v€•:¡œ:AaiÙnq±t÷T'à¤lX?°'—¥‡¢3j¡¨ £ÄOæ#8Pƒì@¤—Ðz¼ _¸]× gFl¨ÅžOµ¢0ÝÓX4QSQÐ˂ό„‰5$Ó‹ûòžH8àBé0†œ¾¦c\,šÃ-ÓùQ£¡fht rc%쉩ñãFCMßH@ÔºQ£¡¦oôõ™’ÌEùçòfñË—<ÄÄúÚØ9ÌûËËMàåC‘iVÁÄp‹—7gÍ·ç/¿B  ‘<ÛCÓÀè°¸á6 ùË«³F•–f<4ý3¨Æ¤á祡7¤·¥`ü:iò£¹±`¨}duãé¦+¡V¤TGùlnİ.7yÕøsð 5±Iý_îüO/wv…C»ÌÿJÚ8‡Ÿ aš›õ9gƒOÜ\_ÐaNmöçØÈ‰µïd”C Å6ÚJáI!Œ_âº.`ö5¼.ùòfŽvl¦NÁ@æÎ_6ó,P€ÁXÚ<,>p>*>èƒóÚ-Æ-_5_žc•ôMt„0ñ'L—nºÙõ*:M=9‘HwT"‡ccã@¹ââþ¡Hêq+®z¨©°¯^$d·÷Ñ‹l ›PÁ”~‰õ!Ì+‚æû QRÁüDÁ€­­~PC¤7U°YvC‰à‰þ° fzµŠý_j^ÁxxAÆÑˆ„¸o禸Ðpö5Œá µÊæ©.(¸dXþ"A:ÛãZ…ZB+,ï"†~Zj Ö¯<º‘°_½<û=þì×2<ö:í(èÞÂ]#;' ºƒ[dœ û«æ×ë·wÛÕù…EHöªÏÎ/¬¯öïfå%‡™½¼~œõ8:fY•CmÄr»¹»½êMÛ6Zç»ô=êÀ#TW/¡Êè8Ò¢Äؼ½„Rvd5DÉ çy–¨›ß’í‰ ¨§¥;w"Tÿæýõ Šd;#ÜÌb‘ÆÇÔFú½!É4oWûJ“UaÌÖ«Š|jn+SUŠÅ¬*„…TT%AôfnëèjDÔ k<ì4h„eP r°ªý½àþyFnÚš‰ØNBªÕúPlú¤l]­â!¤æ­kH-¼©ŽÜ†Qo6w‚DZÐl¿¾Yírü¿^nß®ú¯`Ãò¶~3͛ͶŒ§ªÔx¨“ÂÉ=SšÖÌ´„%;óéJÝ%xZϰ‡§ƒ>îÔ´yƒ)· ®ëâ%Ýè(ÕÐGÓÔ¼,:¬E;†¿cÕ*[(ž±Òhº¢AVGDI Ä%2±hœ¬¾NV:Ó(q$<ï)1ðΣL­šÕ ¤-ê¼§µ¢t]²f½/£p³®÷ýdË]a¾V£Ç©+óßTÕ,Þ„3Çñ\º«,Ç;KÍŒjÚ8x³"P›@q˜=¼ÑÒøçâû€ôº7&ãÂÖ~ âNQëÉFÕ¯ŒîÅ„à‰Üy¿èCßx90ñŽê ü¹z3Èk¬w;˜ošsè ƒt´/á9ϘeÀ@&D%|Ú®÷û$/·›0KœŒÃ6Ȥ€õæîör¿Þ°!ЊVf<¾ºæj¹_Ò¿Q8š¿¼Û—vIõÒˆÊ^¯Þo×7Ëíwå«ím¢¯¶«Ý¾R":>§.Î"ˆòÇ Nˆ¯l@(®˜ `îªL–×»”šåÕUeCµ•ª¢Ä9˜éRemq:–ÂUÊÄoÞÞÝ€ÍUv{á–¦üûFˆàòö0Âê¬TÞíVeLl­J‹Z²b$ìiQŒÜ"¼½ªTl“ ~m)î7õo×üSngò‡w«¡ÕTVâßÓ‹Yîk[b€.ôšfóšÄž«æ!ëap³‘ª*øÅÙËŸ¾Ê¾•F] (²<;‹÷ËÞÌC‡¨&Ôˆ' µÅµr#kÀcª®UÌ^••Y¦š jkÍhÊë:š™ÚЉþ©ÈÃÑãТ¡eUCÐþf%0+S© …²¥Y´üê›a†4ÕCÜöŒpI“ÿhÀ­J3vpGÃÀŒÃ,ûUG«>1M˜46Ãqè«æoN’Aïº8ñ…-NvFl<5Îb›ø‹#&¬u.e³[𯱵Ê[áâà=ØÔ¬‰K —LëUö–ÕA?ÐO0̨ÇC¦Äˆ£çS*Î*£y"7鲤Fëè³É¿½ZhŠØ`+óÞëД(œ¼¸µS¼“Þ©¹ Ab›Ý®úwùcçbÃh«¹»Þ¯‡Z vIÛ\n¶°#@éöj}û¶Œ©ÆÇ2ëÕ®;ŸÙ¸Ì"y†¦t)ÁV°Û|¢ÔEorwÇÝ5s§*§…Kç¿g Ûù휜ˆ«oÿÇ“ŠÎA£LVôþèQ*ú_x)FlÒEö,•7q† ˜S¯2$åõj´Á‡ôØ0ròøøÖGžBOºüè$Mük„©€IË~ìÕÏçĞളʡž#(N„ÐG¶B1GÛèôztJë‡æÖ«™Å5îò/'ÝyùK©Z/”áO‡ƒO’Çîõ¨äZkÂÉQêi†å¿¸¯'uØ%;£Ãã½ø åß“u¸7}\À¬Lô Lynô™’Eß“«ôàzuØè'«pLµÜ9ž3ÓÒüÂ1Òþä™'ãÇ6(§ØüùÔ5C¨à[¡^X(Y3iU‘ ŽLŒL¢bž¹6ì\ôÔ×7ô÷ò“›„ÝÃÂ0í³ ò\@KzY­9uÝ?ѺþNˆ™=2Ò€»|'ô^î0@grý½ÙÁ24ÔÌ¡Í]jNÎífæÆô‡&$ÞVJ¦ÁƒÚÙücnq ’ß ,`Þåqp{•obÍl»êµ£K¾¾›Ýv³$¹Ô›—â+Í|ÃŒJeræ‡d´×š§3^•æÌ•Šq`oUà ´Anaÿ˜h>Ǧ.ü£p¬ïò${ð¨I‡žþ{Ó„þì1ïÓvþqvDEÝÑó 6¥QÈuâ¨l›?>T¸ Ð\0iN"ÓZsöÁ÷ꃽ&Oi ï5±Ë”Mð†;j±]½9ª=SW³j_1T2wƒhÏýeÐW뮫ôà:k×e’táºá÷'Àº\ׄôl°~ü¨î þ°sZœµ'`ú(¾ú¤ëƒ{˜îžŠèT¯§"ºÒ=Cƒèrh5 é¦KI™ay ªÍ',Ó8ßD7Ž÷ýÏ9_"\éG:ÓÄ ¡@±ºÜðXIÐ:¤OFõDŒœ*ûiPOáÔõIP§½ä©èÔrèÙÛ|dјîÎÐè(¾@ÿ¢µ°…&jÉÿ´OÁ—P‘ñï¨å«æ‹“Á,‚!¾~X<éœúáðÑ•á³N ½“.5JMêQQªš¾ñŒÆ=4ã=€:åavÈ2u Átõ\éË&alfƒ¹„#wR ûPTà¥ÈJòŒê¯y˜XÐ_ó87½æÉÃ$ufBmdvFÔG‘NMCjçïµì¦¿gâ æÊ);ãSÚJov7Ëk!ˆyW>'8ÔoûñºV_çË]e½nî–ù^VÆÎùZeÛ¼Û\_ÕYSó~»º\ïV×ßÉõ½ó·Qº)Þéó"­«Wt|®%H5¹/¾ZÝnäJ_…rÕ&÷T*HbÀü1·´5î|°ëiÆí³íú©úðÇ9IÒŽ’ õf·ß®v=õõ>¯Ìç»8•ïÖ9¯Q2v¥ìEï|§+Wë|ënSZk’Ÿ =[ÿ9·ë|³º^¿Û”+(ã&_mªæŠélº.û.ø¤Â™Ã+{ &!ùáþ¾f%­û¿Ó 2½`YfáÛg3AÖuPU3Jºi6|t¡¹ÚÜJjWmùEͦ"Ëú¹ãxnß\nÖ·#Ýov»aº’„U+L³|]y²é÷OÎXñ;ægswÈ“û#ë23È)æ¼®Ÿ$%AêÀ–%þäVèÃãû{Éq¯5µÆJ΀oÞ/·Ë›@eöZ΀ŽGƒõÒø`¹¿¹Ï”c¾»}¡*g[€EYÎ] óçóy›ô‘ u8† £.ǵ1бŸBÉ=ëó0%o(±šéþ 1c·ºY_n®7·¼ÌuFTnš„aB'I¥2|Oœ\¾”4ò’ °_ß,÷«Y5`¸hަ˜|=SÚ¾îçý®c=/óU§&Ý]æ@í›w•"IÚ!¥$¿X<ª ÝÆ9ùS,ƒ|iäï»ôâ©çJ¦õÊwE:—@”qV:Ú+pÒ§à¬$C‡æfùí(U©Y߬ÿ"hËì92¸>.‚©Âf)3«oGóžÐ.{™ŸisÅsh3tHº‡:L²–øJv¹ÉV.—T¦x†}žáu à( ¹eï¯3ƒ§Í8Y‹Æ–ƒÛMþ›rÝn®{Šr&±´ô”•“¢'µi.ik²!b.üÁÈMoˆ4†ŽÔB5¿Ý&-¤17ì«ìÐø A ñRÏÓzo~Ó;`ù¢~}¹”ÝJAÍ‚JÍ›åå~³%þIÞ˜-ø'_MFn• öŸ˜@f›‘ªgª´º]½]Öt`€ÊøÓ¸ÃåRrªê§ñ<²Ú2Çr¨?‘P§æÅ¦~râ±Õ›ôœÖª%l$¤=ŸePDÅk“X-='ÊW˜ámÃàOëÒ93ÎÙ~Yy"HèííFŠdX”%ÑÌr;Õ¬ÑÚ²þšy?ò9±š|ÈXÄøsj“Äø÷KüðNS’ôÚÔÍöÏ“ÕJÂ…´òÙ”}UD½ýدo{éns·+}PªÑ°NQx5‚µíz ¶í¸HɃÓÍoV·—«9ªVe¸©Å-ÈÅ’.– ¶xjÇöFs5ò=J–õN2¬§Gk|¸» Û¼V#Gõh¾À\xüϾ̅§:8úùÉÿƒü¬‡­5o’ðŽF§}—¼CøGïPmÝII‚ LŽJù¦q8ЮurbøS‡W<§µp6"šA7h4ך'>3ã9ɰÑ=|Ö€öüC7°ØÑL¦Î5O¿3³¼ÕÀ‡×úäá3ï{N>ó;ÏžkTö}Þ)ÎÜ äŸ‰á%vò›àO@@\_ótþC¥ƒyþŸî?9¿ç±ù.ßÏ"³ž|§uM¤ø#GáØ=¯€ÀÃV5ò“.úã·ªüº’ yz««-œaتÃÔ¹UùæÅrÈgÙªý=Ñã÷*ó>Û^…çÏßͶª €"£>~«2–ðîÙvê©ìçã9³OÈb:ÌêyÄF²zž÷¢ˆ¨t£ž8_N’ä5ݨ§Op€ñV©žàª®áJÊ€N®lq“¦¯‹øËUðûsG׿mÚÕ’žÆË5šá}4­vw<9Ä‚z¶¯owûÕ’—4NËÑçæÍÜa&\?ËÇ]:Ìä¶zâa¦ C¼)‡™.{úýa¦Ë½K-_'Üj†?]óŽÇrâQºÕƒJyvÿ ’çžðÈ{.¸áÐ,ŸXò¼*žXæ§z¦Ïúü#ƒìóç˜ýõyäŸ^‹N”¹ ’”ãái~å—¹B©æZÊRåIÖH &†ouÓ9õÁ÷&í÷gÿ $ sendstream endobj 166 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1152 >> stream xœ’{lSuÇï]·y…YD-¡`î5jâB”yÄ FDäe&2V`¼뺭[_[Ù½íú¼§]ë»ëcímÙÊ6Ëc¨ HP%1ÈcbÔ~·ù™èÿ?N>çû8$QYA$Y½yûö­æ§e€ÕårYU52¨© ¾XY|îá⻋fž%*¤½…G©;µŸ:Ñ|ˆ ˆ§öo\"_Nˆzb ±ˆˆ‘NÒEP”¨$·UTUôW\‘–ÍV¾-ºäå9(•É)úÅçBþú­¼ …pdææøøƒ@Ôñ@’ò¹Bœý”ì´•ï€.0Ñc‚ÏkV˜ÀàíÊÞ &6Ê{™>~È mÐÙÑÎóx=Þ´t R9ÂàüÉìÅ^Êõô‡l¾C‡ Œ ¼NƒÚ=®Î[å4ƒ©; Ñ~ÎbÐBœ>À¯Vàef3ǵi8nÇŽ£GÖÙYžã¡‹²ûláÀˆtÈ“ƒ$¤ ͧæåIƒ»(RQÖãfz<Í^(@2+ ÿxéôW©t¡ØV"ÛüI…tÆÑ¥otQ–ï´}™œ2L2ž, K>ò¼„½æ®òIÈ ì.G$ceäâ}NHÁ'daèG­-ºcû'Û'þºŒ6>LÒr4ˆ !B†öN+;µºC«Ñä´¥RN¤åâ¿XE bm†DTVøS¡ðQÉ©GcqÓxÅ?ß9ÏHÚ•Q6}®o(ÑKO¡ úqë0(ÏÃTäËo£{.G`„ØÀDj8>#ædy‡ÑIëÖêšÕ@iíù´?e„¿ssBt|ʘ5©k²µ¶ØhýzË ¦lmJÞ¹oõz ÞR¹ÞTdRz‹V(׎’oÿ^úóž eŸZ‹e¸ðR Ë~Ú9‹¨YT‹^þõà´zŒ>yñÃûp‰ê'JöL–Ž÷ š@eÓéî^U˜Ù1Á ^5¿×TnK©Ž‰·+®®öšØt×®i¬;ûøÖ(Ú‚è1)¥œ€Ð 9~ Ý‘‰ƒb•"öœ/è¤J1[_Ç~/~åî®_-GÏ Ú›­\~ë1Rÿ$;ûýô>ZueR÷®–}cÿ6æ´joÓ~ äô‚Êu™š§ â?cÅJendstream endobj 167 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 274 >> stream xœøþCMR6‹‹ø®ù-‹ ‹ ’÷’Á¼¸12OÂøˆø÷‹²øŸ²·Ÿ÷¥á÷ûù©‡‹mIK%‹g‹d¥‹Í‹Ç§üj‹~$`dÂًËËً‡½ #²`$‹˜¬ø÷‹å÷ç÷ä²Ó÷÷•ðø®÷Of‰}I|€„…:‹}‹ûO÷ó­¦ä˪©©©´¾‹Ò÷ûÔûû16-X¶…–¤¨¯¡~«_¢¾È±Ð‹ôÃ=:D\BEKûûmŠŠ‹løG 7Ÿ ´™q¹endstream endobj 168 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2214 >> stream xœuU{TTõ>ãÀ9'#HÆ#ZgR´‡šº¥Vdê•EÈr¥ eÆPggf;3¼„‚˜á1ãA塘DË®ʲhiš˜×Š,öÜÖ=`ÝÕ?÷ìµÎ:œýúö·¿-¡<ÆQ‰ÄsIØê£O1º·¸ó=ÁK ^%O>¢ôEé„‹>]S£ÏÄ eÎI_zyÞüÁÏ>÷üœ¹/¼HQoSk¨µÔRj.µœ ¥&Q~”?@R<õ5žò¦&P¾”ŒšHqb6ʃJ£Ú$Y’ãÇý"])ýÑCã1à™èIè`º‚bh¦€ù”}•ýRÐy OƒKðtmsø_þÞOvCp w¨ŸAš70zC®2ÙͶëmõUÎ=)ÎèðØØ0%o eWï3dŠÆSÁ|^¶#RN¬Ì ,çL¯Ñ²ë´ÝpNßãäÊaëÊȽ… M“ sá|«ä÷~ l’âWÂTÎE¦áÊ4Æ0/iêt›qƒ43Äãeï…ýç/ñ§ÒÖ0‹‰‰ËàûŒ·ûCMtI¬î·¤î xƒ«;{ÈlÛź˜86Aô닾b#räwÿ"µ)¯ ªÀ\nÞ=„{ý%{ÍyfMTi·y7ë-\Ð8¶¹„ILh÷Ýw—üd{…ôâ` è¶f+¢7¨â âìéíéú3°:‹{ÚêörõB;´e7ÆWä‚T¬é,§-Žî –ø<õáÈ„ŸŸÆG¯é°ÕÈeëW08£ÜÓż™_Ò-ÄY=û¿Yy»ÃÁ…-MxÎ%Á)·ð“!©„8|jèÆÝŸ¦Þ r9!ŠzúªQ“ ©côš×y¥‚>b: GE; Gt£“U2¯ëÅÉ¢šÑa·ÏXÒÉߥqqÑÑ⋼"'Si±cø³_ zôcB¿W¸C¹¿Õ3Rýw:µ»º@ÔÐ;Æf¹ŽÊ1”ùý‹ãçÎX"Ãy’ûÿ] `p±øМ¶_ÙoYË 2Iñ6k ½±u”ëíè…”ï×H-‘Ä•Â*ŽL-å|Y¡HcÛ_ám»Cµy÷X³Lè΢ƒrÙ/&¡•sfÚSÊŒÔÔú —ÓnwòÞÂî¬&”ÜÃPú HŽí¯qaÞ-é}¼ÇmMe©É\VÌ;Û»ìÇ2+QaiÑòͱ±ª –ÈìßÅú`­Í–WVÍæì4uÜœ/g£ûõ>޽ô‘DEæ&&ÉqãÌwi]À¢Ïå›–²B³V¯m¾|½jCA¬ÈèÒ µyEz‘$¬ò>”U'È·Û¾?`Ê`è~² Äï8*?ÕxÜz¨ût?XáèÎúD6!Wµ9½&§©©¶Æy2®wŽÈ¬ÉDF2å²ÄŽÞËî ôçAôGÙì»Ä“—„CLRZ8‹“¯¸Õ°©Sݬ:b€jö‚ ©»Õݶ‡¯‡Hˆ-R• XýÞŽÍÀŽVeú®IN¹î J…íÂ0WV..š%Fšø‚΢«eÓèM$Þ³‰6×—ž´T” •bÛ ô âG&‘7Õd¬Ð@ôÑN8lá»Àgêí½<½Éí#ö{"½ ›ºÒOøÉ®âB$—R«l„ì§~vµoÍÒ¥á┼#—ë±_éoØ;Ïø9—Å‘ƬV®5ïMçÍt©þ`)´± [¬iiª-)Ë{cn!'š?¦ñ²h'^ŸÍ%Ì´Ybó²Û3Pø ´õÖt°„û'—+BœÜ§j…nÝ‹[«óØAK |!æ¼Êó*ˆao zž÷v·¡¬_êœr¿!u¯yPY ¶º,Ø*¦·fAV¶,rá‰áªê Î¦‚mò‘?èí9UU£jNŒ¶«­’_ÎIñÉç Hg*,!Žÿ—.œíÄœŒf³ÑEl‰Ö¼C=w ‘¬á£fdNò(,)#ôÇdüâ3¸¸Ø’"sÉß"£Z } Í|«Æqï¢4}f]Q›§/Ðiº’òÓïâ8ò$V Aé$ŠL#Oèu;w‚–Õ vWܺŒ’|×]û¯€^¬7þˆa}’rl”b+†q}¤1ŒÃíë´]ÇÊëR!¯ppAw=é‹÷î,´¿á°0ó½É!ÚW`!„§w¼ÖùòW¹GáSèoj¿í¼Pü\c‰‚\äR`I¥ =óÎÀu8%‚þuÅÇÖ›çköA+œË©UþÃJƒyyÙ„^”—1¶¢$U8çªO¹eœÃ`ÌàÃVÌï«`já,œh`G*™zŸ¬ [L7áh· eL•’™YºŠÑ㺮áÐý!—äØ}L¾-ÞÇ¥\­ß^±=·0?D¼„, ¡ºƒóqÊÙ^ @fæ5âC˜à9sÖuhËêœÕ-Îì:…V†¼ýÒù='€Ú?3dÚëó£Þ•“$R£=(=ÆiQBqJŽÿ¹Oä5JpÝà¢!?Ùxã÷¾ÿb¯¾üIPPpÄÂMuªæf›­yfÕF¾¡ý¬µØêåëS £2âåŠè$}ª>CÔ°`eÿÉ74ÛKá#¾“¾Ñºt&™øfâZÕô¢þhy‹¶Éûؽ¶ÔŒ”­±/ † ‹o ñ²?àFHÿ ëÍ÷˜gõz„¢þ Ыcendstream endobj 169 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 111 >> stream xœcd`ab`dddsö Ž´±Ä»»Æ|_ÂÚÍÃÜÍÃ2éÐ>ÁÝü;@€ˆ—1012²hþèàû¹ù{å6Ƈ?Ù˜š¯;¯{á‚òî*ù?{تʻËJçuÏ•ç“ãb1ŸÏÃÉÀ‡!sendstream endobj 170 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 5034 >> stream xœ­Xy|SU¾¿¡ôöŠÐN$QȆÙÅeE‹-TÊ®´,mº¤IšfßsïÉž4M³´Y›n@¡ •]ÄÄAÀq{8èÌ{ONú.ïã;7ŸÏÏÌgþxÓûO¡Ÿ{Îïžßwû6pÆáp•..-šöÌ´iì?FRŒ}ä@U¿><”èÉ“¿óȉaû3AXU]S»XT'.”H7Õ—ÉÊ7oÙºíí¥+vVT®~vÂ#'Mž2mú [†•`¯`˱Rl<¶[‰­Â&b«±5Ø ØZl6[‡-Äa‹±±—°Bl 6{+б¥Ølìql6«ÄƆb`ñ|¬{•‹åa8¿âÜËžst làÍÜÚܳø’¼±y·‰]ƒæ ê1Ž£à£ða8úÛ%w®dæpõã„ÌLf< _;v­Í™r¶‘?¿yæâÓåÏ€6’ÙÃ`–£Ó€/'ÓcSùiÅg# úþ‚%„'Ú©jYMëÈ÷PJZnRòõ¢ZL ¼ ^eÑ[$¼‚¾+öÜOÑÿ|hÉ-èsvêŽÖ~]#IZ›ì~[SðÏr„­!ŠG6¬p4ÌGàîÂ/˜+Jë¶l&½g™ ìG§yÌ<®nR #`†€`Gs}»Þ§ €a˳µ8Zìá$œÄküÃõƒgñ§ÄÔWLõŽýÁÒ“Hÿ:•ñ6ú–ôØÓ\JnA„Éç™7TQBð ~ eø;õçJñš[ÜìVy;Ý”-/¢VÎT&ô‘:ôk‹Ð] †d†1ų̀I'ÃÁg·ïÛG€j.­²¨)•ŒÉáI—¬X1O÷ ^¥.íyø¸7ì¸ZAػӿ֦uh€P´PÄÐ8®¯1kgš›àüå¡ q§×Í­À+…ö¤Ëê´ºHÿÕð´Á§à0À§óä­ 4©_³»Zâm=Û[¶—¯ZÛ@Òxðß™±?b«¥³vþx¨“Ó?»->Ùÿ×TáMÖ&Àïì0Wë,ÔÿÙ÷¦fñ_LI€˜*xðÞjsµ+@Ýø[ßp´9QN².¶Ç\q[œÿ5¾ÿ˜i¹ÌTOËÈ~†se¸ØE&eËÔ¿ ±J€-îŠ;â°ˆçê :SÃð›·uÌ£2º á$Üûª•ÓXŒié©QÎg§àªS9ßîâFß8¤ë×À¥ö]×~G³µ™ðæãÛ÷m—ÆÇ¨´ WÞù«Ñ·Oïª\ë˜ò€žÖÓBoÓú ´ š?µÚj3ß‘G¹Lv:2e€ÞctHEŽ:@<Ïä™Ü©p€öœŠÜcèÛÊsÞ¹%Å[z>Q óšè Bf­UÓÙZoÑ=ßjtš\ Z;ÂÍl[M,‡ó;a±”Ýéû\ó‚EÌà9ÀHé­ –¸kæ*ç©æšk5 †˜ÿöÎsߦàð‹NA®/QŒˆíŠ®n¿Õoó‘oÂF[#íGý#qVæ7x,ÎÍRwKš¹WF\fµ-ˆhLï4PèËÉJf‰¹Î("þŒ[ª“çövÝ/P= 'úÐ2J¼JhëpÛÜHÝÞ†äôØšl~kó¤šWpÙX™›Ec­¡ÚTK*ŸV>½uìÀ¯^ï<u&1²êÐ;ö¨+j²ïdÆ©ý,ýC'ŽïŸ—A–ŸEVw—¹JkÑÒzrÖ}³YHÕ”½ê€(ƒ¬wØÏÚŒ wØR^»Ïê!o¦©ÆSM®;€þ¥¹O’žÒÉù*½-šÀS bñ•û×ðB/†‡^ŒÌâÙU6UnW¢=û¯ìïÀ•ö£í½§³“ÇÌÂÑK­­*‰\Ó W‘Ó™i 5òjeßâ¥ÐSU<ÊcñˆÅ]!› 8h; üÖˆdž°°|ùØ|™­ „wfkç%ækžM  < o¸÷Ò®+=—¼ÁÆ›Õ>×&_™§,ÉŒà9꩚(H€ÔåðžÞ«½íÿ(Þ×¾ëH¦¼9¨<ô7µ­–j¥•ʺ%•%;KL:³Æ` ½T#å}êy´‹r7ѵD,V³_åÃ;@„ro°íz`Ji­¾A¸B¸¢r…Ù`6R‚Æ-1cÌÛ —eWpý´Âf“¨í…ÛâpF"ÿ?(¨‡ËÒ#¸©øþ¦@z«r IKŒJ2Ù4NóÂ’š:Ѱ•˜ó­üð;—»ŽÆV|sdËÁƒû:{wÜÙiKU¸©Ì4ïu@Hô±`Äw´’žýÎ“õ=ožîÆìîñò˜sjZåÑT<ÑRGE$\Êü–‹`¢¡4ºRž¥Á"3ȉ‚¾WÅ+7¯|¼|k¢/Ùœ ´’oý*v Y` ùÌéâÜFÈã} ÔвóÈs<_}rÐtžYõFUƒ¬´tUÑLjÇ‘)sYSVêü¾x¬%$ûú¼^¯ÇÓÈ·âѲ=›C›¬`Ÿ‘NI³è,gÑ)Ã_Ši÷,ÈçYœFö­yÀátØí­­¼“'O\¾é!‚.W’dËËv£n…®ºFÖ #d R©ÜÜhh4z+Žð >µøA0îm¶²Ý߈›uÿËæß& KÊI«oæ@² bs2eê3l^x®n¹¦T¿œŸ²9Z{V|iÂ(È…@Á×/ße^¾V´­Œ<ßež`þíþ®þ)åø§ÖÔ)«tÕ`(‹×¦”8­GÐHÀ©<[#ð;C½WœÄéãžAþ“µWÝht¼ýÄæI6çváÝ–ŒG°L¦~ééî³½½á§«MrÅkõ¯nÝþzY‰£¸\ ¢>»‰Ú­´×s¤Çyð÷ã?qœÙ˜H_ý‰ä!ü4°lψÎNÌϲH¨ *R7Ôiå«6=ÿ¨·Òƒ:‘°¶ÄAœ«C"¡¤nç¶öíÇþz¹qDpþÞ…{çî%ÞìØ÷3)ˆ„2¥NnP‘ëŸ[ÿüúçE·ë>“Þ¦\” õµsïvpÎîbeü)çâ­œôüô(n5%®Õ„(,ínIu]ÝXŽ2ÁPf#scö½«ïö^Ü'°»ÜHJÁak5Aåëëv,E`íqËu—¾9GB<鶺¬n°4EÅÄ/ðîÍœôïQÿÃx¢Í²Sn’SrR µˆ-b“˜_qpCð5G —ÎÆ48y,¾·—ÔÃɾ ^EUövÕcs“_¦;ZØÅÏÂ"Ä|Å¥P@j¨e&ñ4/Í]SˆÅ›Ï|ðyúÕ2ÒsÇÀ°¯®µÜf²¡°ÅZÚ¹a˜¦ƒÕ‰çœ³7aóÅ86p3± !ýyÿ¶ìÜdæ×L: þ“W&Àa_;z©K`sØÀI¸õN£Æ¬Õš;V®,_ˆW–õ|—@¹!A:ãܦ]îÎHW²çÍ݇q)^²J„r‹Ù (CÎ3eùÀN”vÎwˆé×qK¥AhªÜÂ(y†r¥ñåŒdC’¨i à «ÉW«½%ëŸææ àŸ±Ï!¸ÿôÕ½o‡Û:Ûw/@êJ)42-¨"d~iTàÄÛ£‰TßÚðög~¿ì÷RR_aÞiª0×ð(ƒU§D®¦¥2+žÌ¦$,>ÿIÔ·ù¤ùS=WañµÊwFÜÓ¤'¤'ri¼®m­EÇã 'ÔzjRÒfq˜imÉô m½QŒ¢QU£¤UºFõJXNL¿½wì˜'ú–àpôH78OÀ‡™G‹Ïáë[v%ýþƲ]²K»Mßa_þõ½;)MR#{Z“¡}@§7èŠû5Í­ÍÁÖ˜¼Udèñr°R,­%|÷k¹º…c¶ÍG-˜¿pòôþãäW8ª÷ÄæB M Y±õi’k\*yz& Ê+ÚŽ‘¾<×ùøg·ÑÛ)Ü`üÙ,ñã`…0›_ÐÇ=¬ •YI©É9÷ëu›¼â§ÐpUÍNE=ÿïáê˰ÃU•̗͂]©®åÙ£“ùÓË­K—-._[†«wà7Yä#,ª`±”ºgE™©rPhº—IÞ‰%Åf ¹…‘ý,yW²˜iÀŵŠ}^c'«ŸÏŒËˆìphãVZDÕ ‚¨‰H“]É]‚‚ž¤4Z-(¸LYhËãÙ“’töOKqàè+°årüÕnPåW„t½¢Ãº·þã?½ða"ÞßraQRá’ÛåŽ%AžÄYç¨÷½ÑÚ°ì%>»qáÖŸ/,cp‡hÑÌ¥% yVƒÛì-ÀzÐiƒ3yV;r ·ÉmT¢£t:I³éÀæÔ"¤C˜AO2ù3O•~.!ÿ ˆÛÌQ5¿§>ZÊKžå©yÏNÄ” ‡à fG4“´Çh75 ´”>;V‰™Çx”ƬBï2¹ýds£ÀÝèõº|D6*Y;Ò÷Ñ€aîÊÓk‘ˆˆ:¾ýþC©Tïþ³à öà¡VJªF““†µÝêÆÕ€/rkCÆJ†²_„oÛlïðؽ(ÞJ»tø<àwà¯fP ¨5×m¶(ʽ߫¨†’ÜŸ2R‹ÊÞä?$ÛÜZv ^ƒš›ª‚_;Ãö&/?Øh ùkº×'×8ôvÐ2…®NÀ¾µw )†®)ði¾.¤ êCö½÷Éçƒ)BƒF ÚAñ]ˆé630ñÁŽUBñ¶šmÕÛj®§«y?G#K þ%ˆ=81k²ÿ€@Ùk4¹Â),ò%¸´Âwfʾ“¾hÙÂŽè9ký n;¦ù?L]¸ÞŹZXBö6WìdãŸßvü‹–ù%¯×°¼Ž!^úRxiñ¢×_e/M´®i)‹Aá¶íˈŸß¡ $ï`@Òÿ;\øÙ3mÁ# Nù”^5¨·+bÌø6fBœïÞèÞàÙhSÒ¢0EØðVàŽ{psz&¯)Ñ”ðǃ =óý ‚Óý3‚Óíb”ôíšfÞ˜«zÓ^^ǙȅÏÙ·Â’ËLÇMU¹‡Ô[I Òv³ÁbdÞ¸?‡gPêU&›Ã«è×CL1)ÄÌ1š2ÐCì9 :3‰>”™SP1Ú§ò)I€˜,V3°BjÒ0/1ÿÍ3j j³­(†ƒdpH=TçÑ4Ú:gž«m5f'¸»Ímð²H‹JÒó¥iþ7p@iFùà“í6WÕ‚J¢:*n¸ð6G*:ˆ61R¯CðCnA»ÐR[]ùXMT’ìjOuý_Ycç\F&ù/»,q­™^ѯãÊMJ¹RÇ,bÆ=ÉÈ# ¯—|7ʼn4É ·Ãíð×F´²ô†ì¯à.€¢¡ .†“=.;âô¸LNÚ‡¦húgû(£žÉ%hM!jM¤Þ«>;«e4ø-`Ö¿Èè™ÉÌäÊjžÁ 0 y4:ŒA³­%ä÷Á…pô](°ÀQÛá¨1wMN´ Šú4 èXV9òᵈ=—ï ö|üw³†˜UŽ,Ö­Nò<‰RF ø»ñ½`m/ Is•½ ×3)ÃV‰¹4«:?½k¹m(’}°ÕÙíèvwñ™iê\æ1<ð…#fú"üŽÓ—ö\í ¥‹JaM]%Yp«.,‹uÆSçŠR¥3ÆnžS.ÐÉ,õ–zål”PlZ Š$¶ëÌ\ |[Êùâ9°(À•Ï­]ZjFÃa&M[ .‹@[—?xàXûÁEbz÷k‚JsmÆÐZ¤í¿ËÓ$š¹L…Åç8Ç!àj‹saÞx.÷²¢Ñrþ ¤²¡I’è/ˆs>¹O]Ëß÷OåÎR—m\P4NÅðõ̰ÎSܹ±£ì„ä(ÂqX> p–s£ôw„( ýFðf×8U>I:]³N³R¸©fÛ¦Ê (Ç Ïÿ‘ŒåYû<}îƒþ?Š~ÐzáèÅ@7èµTêìÕ èX÷$²ÕX;ú‡!\­L‡„â8èé ó³F7ïþ:4„Ò2µJ©¬´T€Ð`UfÚ!s¦ Zøå›)wFð¾Hï±6:P¤ä{ NB.3¨ë„¥ÚRð`¯OÒ':9éÕ_çÀÂt'·ýÌ»ßEwÿòÂ)«–,#ŸŸó»Ïί©ã)”‘ª'Òƒp¯í4\[…ë+ë4z“šV ÐXQ5à*Z TÈÔgà—N¿wêýŸž»{ ÀAäL89}ÂÄEEäÚZ #*cÊXW[{WwU#jƒ`pŽoîCƒ0ìgf÷endstream endobj 171 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 275 >> stream xœ÷þCMR5‹‹øáù.‹ ‹ ’÷“Á¼¸12RÃøˆù<‹·ø–··Ÿ÷Æçø"ù©ˆ‹jDKû‹w‹z_œ¢‹ÌŽÅ¤üˆl‹€!Y_Âä‹Å‹Å‹ä‹Â‡½ #·Y!‹–ªù<‹ë÷á÷ Ö·æ÷ ÷¦öøá÷UaˆxM{ƒ…7‹|‹ûXͼÕÃdzåÉßÅ‹õ÷û Òû#û(=)W·‚™¦«´¯qŸlާ¸Å©Î‹ìÜQ)7QK>Jûˆûc‚ЋЄmøe 7Ÿ ´¡rBendstream endobj 172 0 obj << /Filter /FlateDecode /Length 3197 >> stream xœµZ[GFâmŸà$„Fâ!5ާéºWŒ¤€@!d%¼AtfÚÞNæ²éîñ%ˆÿÎwªªo3½Þõ&±ÜÛ]unõïœSëoyÆ9ýMÿ®wùâåÅ·<¼]¤Ö»Å//~û9× Ÿy#ÌâòÅEÜÁ\¨Ìåbas“qá—» V4Ë˯±Aðцðäüb%t–s·¸Ü\pÑ­ý]›çœ‹Á*S ‹ßÐbå½ç6.6va2Ý´XÃiõbűFy÷pÚ£óÜp7¯Àx®“-°‰›YçîÐÈqz‚ûâTãI`g4^-—+a]æsÇžFDÚñÙ[Œu]D~r¶XOÎ]åÎ÷‹·´Øzçœa‡—Ë9é*ÓÂ˅ˬ0^Çm7´MxçC>¾¼øŒ¢¨/<¤¿rÿ|!„•™• ãó<ƒÐÝ…$2Ïû7Û‹/nÅ·œÃ7DbD:žqξŠ¼¬y‚ûU\1ñËe°w²…™qãkà‹ÏMÈIbð[hÄßE8æä¤R”êß¼¿“šg–DZ• k'‘Ó–ÎÀdNJïÆyè‘Äü–…r5Ùó!rOx ÎÃ;ͨ”–ßHË=ØtWîIÄ!öC¢I6ûy‰0MÜ+ÏrgNòìä¥öêÖ<”›"/Aû8v3ÊKéb0œ—™å$r./­Tï›—£úø¼<ö’—Â)þC$&±Ðyb*oyçóD¾Í„4Vœ$fª„Òº°gÅrA!}%êBúgg¸™d¢Æï‰1”|åò¾Pjà–³÷È^|¹½€ÇíÙ«áH] ’L@5wý›÷ªêÂ(”_û¾É{Z$G-ß{ä£SgùhÐçÀ#B:‚Þ`O÷æéhB™E6£É{9íÈd–+„ŸûL8ŠÆlîCƒ†•†a90²Qâ–çì_§IªÌH"£wÀ"-`ÒTÑ&î½Vs™-2Çíñõì¼Öê)rs!ÒVkþCÔÿ‰ Óv™«‰&WsÙ¤3 ЋɖŸLÓt†g¸?Ïè;Xf¶ÙŸ²ÌÓSó§³áSR üœÃ(àn% a”¾:ɺ¼.—xaØ£ºiéIgÞ Ö–õîÉk€^œvbq¯n>ÐÓPEHOBuà ; á\{ŒàtÔ¡‰÷¾ÿñ<Ä‘<ä%œz?râïè,ž ¸HïtD¬'PHÖ„è£Þköõ±?ÌqÅ>}É%+6›ª­^-1]xˆ•Ý'ÍÖ‡}Ób-ÌÎsaY/Á@Â&íͶ迿%ݹ–ž •Ós¶? êêöìÄHV i–XØÞ ÃLêr½X·ÇG+”%¤±]ñ&ªí«vÕwE[ö´Â/¿:¶q¹÷¬jÓ{oXÕtk 4øí­›S­‹íömÒfkÚj»í¤9ؽÞ7å&¼a¯¯Ë‘ÚMùh_í_Ò œJŠ%ÛVßuq+·ÕõÆ\:5ÍèQälbÐ{þÉ{qܯɱlùEŽsÞeJÛ…Ì W©êè´¬„DÙ4™¸Æ§ôüûžN‚»Ü²uÀ„%èyVMEÞ‡J±u8bn».é™}“¾;G°{¹©~]ÖJ(⎳¶ÂÙPLH2:Æ%êvl{x¹ ±1A;Š P(ûØÈM6b8éÂ’Äp™EÛ 5#8a½RüNgð‰npËŽ»åJ…sá*ŠÌmëè ¾®Ê˜0j q=’©]Î0-r=ÓÊ,nú´iÇùt¦Z¤Îé§´Õ/·seÂež£_÷Ž÷œ5‚§°h‘%f'!ìì´9Ðh)¹À`o‰ ÁÇ2ÔîÍ»hpª³£A‘|oˆïU¡ÐXîa®B‡(Ü)Eý¶éZ€$XÊ.&[>|ç”Aí·óüûØtë4L<“-g}ÄNâ”-W6^±¿´lJAL„… óðÁ²æXßÔUƒÄFR:•áp¬»m‚ø=le¶Ç¾ÌH0D—œÎfŠË“ä<î7eM¥g“ˆ;¼H°mWrÑìçž½Z¤h¬€Ûc™ÞsR«ëªl: °g·+7à¢2r;V)âÞŽÝ^… Wd^7ÁtÖ:‰ªãó(~¨w±$‰P’6UÓÖÊÑROãF_>~Nõt¨¥e⎀µY\?¡*•ÒòÓC¬ܱ×­r‘šè¨¹x8Ê…P´Õ®L‹&2=|áT—vTÏkxßIñäOSv‚«Ëæ¸mƒ8\|]µ×‰Òø¤ƒ 0Oó2‘é'àïóÊ#u†Ö¶ÃÖM‘Ї&?aRñ²$¼9êòŸ*œyl Áýà§Np±®Ë`½”2œFÀš”*ÓÏ– æId02RKN‡Ú¶øyŒxNÓuè™ ÓIבÐ|ܼîŸAM:ðPi±¶Ã‘Sˆf¡Çp»dÊž—sŒeÆIŽºŠ¿(·uó4`ÑÍ ª‡Ï–+M¿²€o8=«¶ß¯â3•Àš,D[N)Ïá)ûͰg]îÑy“q'gEM!óÊKPî»/W>À—Px®_Ü©Ÿœ[=% §á¶&iyοììp g'hH™‹Î¹I· ÷rV8xÔâo¿OŸî³½ë±Ý5ß#Ù£=¨ì¤÷$×#e£úLc¿%EE|¬ÒØGÁÛQ,ý Š- VúyФ.*Wlw$4c ûïœ}t_{b+¶!òŠ5ßÖíoª«eÜ‘ºTãì_Áê.‘(j£Ï¤óß"ýŒà|8|ºÀ …=2„#î!´é³›fzèÚÒ.¶ qE”íË@3á§tzaµÖÅ®l©lÑ+²õ³&ZÓÔ´R‰ìH%ò¯cÍëTœÒ c³‹(õùýP4Ón A›4†‚4Î Àd” Ý…æ¤}´ïìSñJ‹Ç¬¿ó¢X£ùk‡O}[H›ÅpÁåÓÅ'ÔÚBÒ€è `“.ì™§¨ïìòšæ½Nt|ö1l/Úh£ ”OÝBèÂR•BÖÆ»È€+&æ(?±'¦Žn˜R.}U4±Q¡ébZŒAteJ/ePni›l¶í1>“† í‰ÆÂq0Ûÿ²ì³‹ÿ{§ŽÛendstream endobj 173 0 obj << /Filter /FlateDecode /Length 4650 >> stream xœÍ[Í+¹q÷yŽ90|Ñ‘ržÚÍoÒÆúȬcØ;Hì3©ßL{õ1+µ<ûüùÿsU‘ì&[-ÍŒ³su“,’ÅúøU±úÛE]ñEñÿzwW/ï¾½ãôvÿ­w‹½¿ûÙ¹^øÊa÷Ÿî¾àBU® [›Š ¿¸ßÝ}ÍîŸÚåJJYÕܰfzY ‹¿%k±¡–¬;¥ßŽõi„÷–š]xbMÖÞ>o‡^ŽíÚfÿóåŸîÿ–fd¾4[YaíâþË»ûŸ~Í~¹\i¡iÆì;ŽOªòαÁŸ@Ë)öø¸ü™ˆÄ¸Í‰ùŠ[α¯ùŸF5ìœK)\(\UR#¥¨”ñ>TËçu l`ÿ¹ôÖãk—ðBj+­bëþ€Ì1¦ò¸vÄ&¥„®=ž—«±ãŽZ¼ÔÀÜœÀ~)k+XJ *N ­_¬¯w‹ûM:)¡aNçÙó±ý M¤9ìu‡ó -®•µßeMñ(h ÷t’B;èÇY·?õÇóºïþ‚‡î5Ç]ÆžŠ=œû‘d× ›üvÈö”V$ØSCD\mƒwÊèœ\˜ÃhXÞñs$¬4ûÔ¾Œ³<Xͺَd›ççm· û‘ž ƒìZ âÖ­yàкé»ÃþT-WJzè Ý\ÓÖŸ‡‡m»Ã(âQª©‘ƒT7}z2,j¥Hn`uн}F.è‘rD»yè¶À'bòìs©5Û!Ç, â¦ÝÆQÀ¿&[ÀþpÜ5ÛñyÓî¡•-Ø)KtA™>O˜1° ïK×? È——ì¼ÿ&“…ý!Pa/{ì‰G¨œQÏ„ÐëÊ˜Úƒé æþ3Ò1 š~N`ëJ{!R_@_±Sßì7Íqo´TÊ.ÚÜ x lr6Qý ’@@Éù%9vn¿Í¦8#ci= dý!°÷~Ø· -Ž›³ßp¬ 2«È~€Q` P:º°Ú•@“d}’BfŽBL¡ˆ$M`-K/k úrÜl?ÇgT•8ÈY^ŽæÎ²o²ÓN绚±‹D7Xä™É˜¨ìaÓ6Ûnÿ˜†ˆ(2ø„<9ï;œ”½ˆ u~acf<Ȱ¼p’1EñwœVuÁeÛîZšR-îœ,gA9¼ðì@²`Æ'ôM›±)“)ÉIge*´º¸%Ã>(˜ŠJ²`UM|ÿêF‹( éÙNL]²jc;HXbA·_ŽÏQûÁŽ Ù‰’¤G_ ¶fn]h:QçÕƒ ÐPþ6õð•´µ:ƒ'{‚úuŸ£Òj…c]%,-ï}9ޤM¢ŒhöØîÛ#6Úsfè¨;gÏãño>¥×. %-Læ²'ƒ¾Õˆé@æÔ۹ēÍCÿpÿç)½`#àÉb…ë¨>M¬£Ì©‚A×iþŒ” vÈg++g‡®äÅ7·³D—cç_`g gåÌ ]U)aG&Œ¶Çq( x|Ášb>peÊîàã X õ‹rn@pÖ¦]‚ÿÈIŽŒüõýÝpazñxº#¾ˆý·; ã`ÄðÈ]ìî„w€áðf{÷ÕU¨+í ÔÅ•9"‰ûÔê>ã2´'vÒj„³¼Ò û6¨bêðææÔs(HVIÖ¢’FáÔLÌÈâR.âù±‡E`®á°0¶Æ‰ %xpxÓd x”Ë71­´#qå@²ÒH²–•‚y‰i·…ÏßÀ&Lå¤ô¨¶Ó!p`Ȭtƒ(Z¹°q( ùq൸˜™ÅÂ!,JL¢¦œàŸ¸_h¦I"'î">¾û^%‘X8iýx€ƒs ˜Pü÷ Î¶Ø£¯Á@§Î?º©ÎôË]…fŶ»J.r½-llv8¸`éäBV†›Z„!Gèº6Ü Š‘Œâ9Ó²ˆé[ø>/~ŠƒØÙœï3âW,ÑõBÀšA“f×: ä@Øn°Èµòúó)¯ —à L>âJ8oñ'JØ Hƒà²±¯º]·mŽ£»;¶Íé°x‹œ™.Bå—ÞÈéÉ x“€ÕºMž?¤À+B«JBs:‡„í1ÞÛnGŸú#=IáèÐ=‹è ÛWTªÛîéáøiÈ#o札ÛYÃYÐ2}Ô‘ÿ!ñÚÒÍȧk‰GQøG0rNðQ>Õg|~Œü¦ƒ`,Yž ¿éFå¹PáB“GÞ+¯¸ cøM‰T˜x€®Å´^·gïÆ÷“/t`Âï™oxó©‡Eï6×…šn«²°PྠAäí8Ž—3F^8ÊEQšuáJW–/”1¨äµ Þü.\…’Ú¢¼Ýtáµ3n ÿ(ôÛX51鯱ª„¸ÀªÌw\ÊÿdIFÕæm«SÌ!®‡rR9ð„ø €ÁhôŒˆôÛ÷û^å*‰$ÁÔãK¹—˜;² î+᜼"öÊå°]W¢vˆÛÑæôƒþ{ª_Êdóg”@—‰8P´hã)>æ`ÉÕœR LÙnÿ‹ Pî…H\êãÿU@“„J^ˆ‹õ‚èÝ_ˆ×ñ ‚7ãˆEÞŽGÐÞ_âX‘V@BtS)žÉ¢âYú&YœÇ#äa»™,¾Žøk"Yª-8"Ä"`’3,âjiÁ"qHÉ!‘X1˜ŒÀæ¿–Ž0'g¯"68v”P’ÂóàûãúþTƒ¶Ënã4®B³  éÔ–}:ï×!fUìð)þöö"ßfWì¹96»¶o§³VΈJëk26 ãˆwô;”9º4Þ`;”QeöDz5COÄ- `©rÞvjw—yjŽ€6ô4O}ØRrª®SîÎ{J4(tDn,1c 1ëC€W ½ÂÐMÓ7ói!S %¯ˆ Ì‚è6/®`–W`{ÁÝdC®ðXà‡zûJFSå¯áù×Vò5;=…4®×€§‰W!Ï]²º:œŸâ3e8KjÔö”®œ~}…÷D ò›vdÁƒ›&…G™o÷\å ‚ÏéDá‰S,ÐÓ0÷lhKåÍu­ELoƇý¡O$-Û i¾ózøùÛ¡sžlí©o7’wñwä­V°Ée1ì«Æ|%ì«Ý¯Gþ—¤û„×eHiŸeØCBqr{qÿ4^5J·£$¨ƒ©ÎÛfÌþu»]»éšžÉÔ]—×^}`sÊB¦$'²¹Hr®›S;Nfj_aŠ~0ÿ1•ãòB€ñã <Ó”ÿ•p”‘áàñî/†`­çÌÄ L˜d4OI“àÁëUf«^¨0àÿ?I Î…N\E¢ÅB1”pãB/Î@Nö׃ 8`èƒ Çoñš\H«À°SªÜ-¾áÍûƒ Ëáh¤Ñ˜>¹kˆ„ñßk\¦øuy¾äåmV–î'²ò Fœ¸H/*l„ „c(ÑÆÊ¤7ïF$„@Qƒ0ÌN¦Àذ,€K1±>ãižÐ,ƒ"ƒx–‚~ð‡ F0ÚG0+ýŒÈºvï F~ðä¨róÉ– Š0¡’™,*@ô•~›,Î#`Q-œ}&ŒßCr´Ä¸~: G´3)ÂP7#Œ—§–îúœ¥TEY6/Á{¤ÛRð¼1YiC@â°FC°Íñða@g†„šêTb‰oÚçˆj›Àú~çÐ÷S¬A}„QØ€‘G—µô'Åûê•á¡à·ûHæ&$⨚#À„¯€¹NÕyÂVٚƚî­MØ^³îÏÍ–î»ñ ìpCn¼ã;<÷Ý®ûkº»¦.Xí›m^óÁ¨B^ap§pˆwMx‘îÈã¸M{ìB%ŽäayÔñOZ@¸ÛÞn3L·ZbmR털¬>@,¦mº&f¨¡|+Ið ý¹KeEÒZ:nMµ, @æyÛŸ ÐÔ@÷ñáTt@½YphÃ+OXK².5¡‹MÀ—‚½ZÏ" ànæt>€:Ø5’$_ërµC¡=kÖÌååÍcûû€÷áŒB¢âD¼§×VƉ¼!¼†‡2ÄÎÈ™=;›4’G[[“xéË=î:\*ˆÔûПjÆÂÍ!ŠSMÓ˜§ ™Nç‡]×Sö „ÜÅ%g ÜÈO·ÜÆËÍLޱ¢ë6•"þU®— "’!›’)¥­Lß¿#•ȹ+±8ÇpUá][*3Bq {4s¡ñl(žÁK»+PúŸB"˜K9_üãÉÜ^í|‚ê]ÊÂEÄF*3™]W*»Z½=¿Coå†ò‹ò[°¨·£¬¹öõ÷y{±õëÑÉí{~àF%òܺž"_:ø:Æj¿ ÀWã\ÞÛãK¼¡^ë¹´wð™:ÍrLWÞ¾´HŸ‚éYo7ÞÔ¼fÈõs ~ÜŒA;—иæXF»*S)­¥aìöWÁ:¥-»ÑDö ,ˆî k.ÆjTµÌ¿Sýý¬ VqÚO„x¼Üç7”ãâ„ì~éÐ~À±›Mד•& Édŧ¦+¦™ ƒS.¶µÆAbš˜Šêc–ˆ™²v›:;0ª^Ø •åEÿS…*`Y±9„Ä÷õÊüÔÞlO¡`u% B½)ãÇL&nGxEb0ÆdX¶œb2ááX•!_zê”A ²ô6Å`ˆ×êà1ÃgHtèØîÚèŽaæH±Úû˜¦^äÔóÏ ¨YÍN0xðÆÄÏ‚xâ¡]»S°ÂWîÅàj¶/C{ ŠÓMÓ9™ŠÝÁÑÅ465ñàýUøF9Š.Ó Úl̜ǎ‰±øÆ\ S©(†«Á!f]¨ÅEè‚Â;“¦Ïk†Ñœûôµjýú0’ßD_ßlw‡ÃàêóI`©»9\øóyèéþŒŸA܆Ô=_Zy#€ÒÚ&EO·m0ø@ðñSx*œšó¶«Ô;W¢ëÖXófkœUp³OGÀ©3n\ÈJ>~›ô•ÚB%ÂMþ²& “³eAüÑŒ¸üZ˜ äDüéHøp£;6mÕ4Øý²Å;&°ç™ ª'Yí¶[‡P7ÚeLÎ(Žk‚ÎT]Gý *ìÕŽ$a¨·ýÕïc*·à„!Âw¨a§°¬šdëc¸«CÖá¹YZýÍÉ>ÎNï0ÌHç’(ŸfÖ€8Lê,%‰~‰1öÛa)z¼o”5 ðrÂÍÓúØ%AT2|f@&›‹W`÷ùûÕÇ~?ŵeý†6%ßuW‹%ÂX¼[ 9?÷M°¥ÚJúZL’qD™lJæ@ –¸ø·™¢iLËqK»á\åÒ–ºHéW~1Cº(÷ÊIÏpÈUàϼ¦\Š×ÊA¦…y¤ß«bÌi´ ya5[߬WàÁøÀ…ùgx˜†Rƒ2º/ƒ욇í¬Ô*^ÙáŠ.œV;§7€ý±„%¿”6{$üO×8}ðy¿LN®û?›Ó‰¾+”᛺ YØ"_„Ÿ<Æä™n«¨ʦH|€Û)Å•€Ç¾ cÛ~4vçá&Öâ—&Ç>=Nõ·‚=o}KzÙ‚"æãÔ`#»dAeÂ1¾Ì„À_>Œ…5/Ð @*•‹5mÌ ·[¸û;%‘ãendstream endobj 174 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 211 >> stream xœÈ7ÿCMMIB10‹ƒø·ùR‹ ‹ ’÷SÉÆÃtheta‡|øˆøÅƒ¯÷»»÷»¯¹ö÷³öø·ø~÷D#¯N<'Wû@X-lû‹:û%×IåÎã²ñÐß÷¦÷3‹Öûñû ™Å¥æ©¿¢´´À»‹µ_PLu4€a[Mû 7ph‹}‹v}ª¦‹²‹Œ‹Ä¡è–¶ yo zSŠendstream endobj 175 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1468 >> stream xœ“kLSgÇO)²£0æíd©šsœ2ÄÛ&j¼Ì¸é3*PD¼Š ˆµ0ÁJZN[Úó´Ð -”K¡Ð© àµ(ÎÀê4"sqN§!.Îi–ì’Í·Íë‡/Ù>ìƒï§÷ÓóüÿÏÿ÷ç¡!Ç{+.1ucì’ñï ÀiÁÀ¶ Á‡ˆPÓ¬°CSǦ\}§21þÂÅã$‡Š²²÷&‰"‰H&¢ˆb‘F|J|F|N,!ˆˆàL"”8Ç‹àiB>9ÍÏ%B³C¯MXÆ÷k"ýÃr‡±ƒ‡ò|(ÑÇG%(Ž28Œ-GÝEÐ5³µyoäy}Fqb&/ÍfÊò5PLf¶çõýÒ…æ,,(Ë@{´’f%’ù)@sõ6§ÅencšÏ P"ï§:v®Þ•$-£•ýùBȃÇd¤ÙeÉ %0ÔétÝ4jï÷é±\¦‘VʘuxP«âÔ ÈÍG›kMvé7¿R2ŠjGù~#òPO“o.Ç“1…çàè¨o ÉˆBsÐ<q3•“ë¹5àBüã—™n__Ç) ûÛ3“…EQ¢$Fœšž±ÈÈ@f‘'°ØÃC òk)]µÎÕ¤ž3+´jWÐ ë…7Sv€ïÁ"\„ËñªgQˆFÛíï³(@­R«aÒñZæäõ^°‚W[¿‡|¹Bâ@k‚;Ân"u±HFuÀª>ûÝãpLdoî©ÍsðÜhÛ·âéÿÏß$ÿöTÅkr3Fu­ú³ÊäéVIþ{x5ìg"¦"W`¥‹‡bù÷ŽñÇüÉZõþ¯x*ÎÂÙXâ…Of£Yh7ÊEEHE?Ÿ÷ ﵡ٣(’|òówüáVž±, Ò–0›0iò:xeCìý±ÎrÏòÐ…kÃc|t%Kw!aªŠÕ(8NCǰ圜©@n[Ÿ^©ÐhÊ€£qÌ󇜖«­@^sÔÞaj¯ÑÓQf·úZ1¤@ •šÒ S%(ȸ …Ýçv+íè±ù‚hÿ HYºtCh‰¶µ¹ÕÔ®30†ÐAŒÄ»jZm--nÏ¥áS½`“\Çe)Õû€%Ëj¤.G{SëHWFš0+;ŸÞ²Q&ÛWBFÒ“BW6GL$ˆåA1Òendstream endobj 176 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 282 >> stream xœðþ SFRM1000‹ûUøªøR‹ ‹ ’÷šÆÁ½µˆ˜tŠÅÿM@ÿ+kûUª÷+£ø¯‘w÷Ñ÷bÑì«øClœª©ˆ]ümgq‡ntl÷vªqos®÷£ƒ¦…¥‹¶‹³›©²’•“—Ž—Œ3÷%–ª|jmޏÜ÷þû(€ìlš¬©ˆ\ûICg76Sn™õÜ÷ÉÿóàØvøw wÀ÷~øQV„Yuj`oh|_‹_$á0÷òæãõ í?íû À†‡Š† –? ×ømÌendstream endobj 177 0 obj << /Filter /FlateDecode /Length 2171 >> stream xœXKÛȾë˜C.›9´«ÝïGˆƒ$‹`±w؃g 5¼’8&©‹Üó³SUÝMR2:Ý]]ïúª¨w•à²øËÏíq%ªÝêÝJÒn•Ûcõòfõâ;§«È£S®º¹_¥²’Êð Tå…ãRÅêæ¸zÍþ²ÞXe¹šÝÕC}Ëþöou»^ÿx󯕔Í'¹«[›oŸnYÿ®ƒ1N={Üß®“­éúfâZ(÷;ò”%Pø2ü²?]à>\w€öMßt³šÂ2îÓèg¬!x ’V`ÿ0UáeãhÉcÑǹÝUc™¢25³,?eÀò¼þW´ß _ÀÃ3j$MÄãü‰[ ÿ…*S¤³eŠL´×ÙOìÀ¨m›QWy6@³ë'¼–-(Ǿ1m¬Ïð¥šÅüÈ#Eº$FfeåG!, ã¡aÇ1ÒèøTgî1ù«”Ú*,ÚYÅê³’¾Ó2èМvÔZ­¦ xÑN/¬ÀŒ`/ëÔ¹óïT¸Ú\à´Ðìw»s7[Nµ8n¶ôîó2 kê¡Ò×£MX±K§Bb¼S‹”ʲ»bƒO~LМõZø¼·ûÝCJ¢s« åãF` ZüˆÄp@‹úÔL¡/kØ{)FÚ?#k,Aƒ]-Ô¼Ò0„|v¹Z}C®äé£_/—åC1F9Ÿq?Ö`ÂÁ–³8þ½ùjõ?¨v#endstream endobj 178 0 obj << /Filter /FlateDecode /Length 3642 >> stream xœ½Z[#W†W ‰7$B~K;Ä>—>—„  ´Ü’‘x`¶×îmÖvm{wóïùªÎé«{f=aÃîÃôåT:uýªÚÿYf©Xfô?þÝìÙònñŸ…à§Ëøg³_þöfñé×F-}ê4Ë›—‹@!–BêÔeri3“ é—7ûÅ?“_¯Ö¹ÌÓ,Sɾ¿üÕš®uê½Áã,õÎæ.)Þ=«^ß&»únW½þ¤]¡’ã©hN_ln“ýù •µ/œIŽÑzí•LîöÅ"»]Ý®VÿºùÓBˆÔçÚ.ož-n>‰q<ï÷Eó-¸Å¥Ÿ~-ìà8R¤RhÑR®gþ­8Yáf_ò‚N„¼côçâ]µ?ïÛc¹‡-wÕ«z%’zÛë£<žª}qªês!Ò¿”oOõaýuqÿêˆÇñüv¤ºj_™Šõ“'yâêT6üê8Ë·r}]žÎÍ¡]m’M½-y‹Ä}ÖKu%Ñ7»úX¦í^j)tª´‘´™‚Ťè6ƒ„È8H~§Ì”l)†éN;gò¤Øµ1ØP&_¾+(eÚ “݇u¹UV'»rÕß .AÍ.÷¬eÞ”Eøy£–4w ³ÖRãÍð2R=ä1£EœÑkhq u:á\¡¿Ô¬ <€ª Á¾Ðk­¤‡Œ*yUÐÓ Ÿ¼á÷ÆŠáûÓ«2r jVЙ莿F|8Rb½;¶&i—x„Ðý®Ø´Ì¼fŠ@ ÞñÉr%§’ϲÃ6.ãnw’oDQìïwüNrÌ/:YVüVŠçÉ}ž^’®ˆ­Gæ…¹9'u%%TéS…œ¸a¯ÐGîž@zö2Ù–;Ä´6´·Nž•'ZFrÛä|Œ$(j/ÎÕnÛrñ|¼Yº)ß„Â%Yw”>Ÿ?=sÍIåÒ†£Å=wÕ!8\äÝ”wMÉþÄRvˆ¬œ¤ÜNŸ©8HK›¦j«l\ÌôÀ•O•„“XS¿#1 ’†OþJ—6ËœQÐØ%v¶Ê±ëæx§HÑ©öZè@.‰&‡I…›qw—æ&óz9"9ߟŠ×lëܰïjÁ õÍ*Ï)àlR4Uñb×À˜Ú<%ƒ³üY¹ºù÷E¾r¨ ®=%*¶É8ï¼èâêÛùæT%%äwî!U8¨xXUþɪJUµ©„4³&9ä5·©Úë ù¯‚ÿ -rP³*)2¹¨iH§¹÷“èÙ¬rv—`ÿ¹b p™9Ùk—¼T« /åx÷N&›âÐV‡f¡!¼jIµ-‘ìyY¦/^T;4€¼«öÕƒjð Ä‚yý†1AÄ„HÎ{ÚÔØ ‘Wʼnî(ËëÃM¶1çæZѸžX¡1ܯæ’Ä–òAã·‚*s\ËF0.9Ô;Øí¾hÇUœO¬˜(#uÐtgÎìÃÁxòQR¢óÈ1¢9ì‹l2.2Å€UF…¾u>¼à¥P¡áqËÛ•n•|‹š‚e蔨õékª‡2óæ™dK›º¬«ã?£ÖsÅ®/Uj„vWn›jôRH¯#šÛèÙAr“´×«‹öÜ–pêa[4Ûøå³8ÏûûPæÛc3DÏ$«¾CŠY‹„Û¡*ô —’«{Úc¨¹cT¬%÷/ëÝ®=‡É™T.®ÈŠmà U´g,ãƒOLvõ]ÿ®~ÙWè¶ÐKŸl_¶K6mâ ¨_²´G¶3·®Àm?A›×/ŽeÑ#Z“ÂöªÇã„«S+5Üä^Å^ìùòºNE.|WQnv}ˆ,f3®ƒO©Ýn :¶Ÿ?Z(tªQåÓ …öòšÚ5(ZZ4ʱ d2ªÓÂBE¶îkG&&ˆ‹wýâ3ÇhUÊdIãcc°&‘rù0_Þ,þNË—wÇ9ùòí"[þa´$à—(Ë.5z¹_¨,G6³Ý“Ýâ›gÌ#±Û3U –ÒS~³4cF®àVdb0ï „:úÓ°bt.—ö(å}*C{$Ý£*ç>RYË.p"‡Ñ™¹N¤XÚÁÛ¬ò ¢Ã :›¦†v¥N¥%}çÆƒ¢{òd}ƒ%ô¬¡oð¦Ô·ã)¥PinÕ|ŒŒ~#”¿M&Èù£°2)jêú“xŠç‡”ÐÊàüè¡ß«Î?6aw~h,翪˜Iä!Ûªââ`£­€ÌM.tæ\^…­G´6U{‰›ˆŠýcٔѠ’ë:Ù<éÚ8ãâRõ†qº—áû¦ä9Õv¾Ô^ë’#a´G;jg̈ӢòL;£‹ì8)÷9{Ɉd4RЕZÙä sÒ 4Öû©XO›z?TùémÄEnŸJ”j3‚Z Ô¨f!:ù¹ô–ïb©v9lµa4¨e˜« F ô=aæXp<¥Ùî“üdÒ$N3°¢K\¨: ~o7³Ùù48å=Æ[$C(æ~€H¢…[ŸÐ(%Œ‚Ç^ÉÀ ø¤n¯-ð驽р"›ÝyÛÏCç e}žž|<]¡IwÖ­å!OÜ8†îTcÐÕ òªä6!ÜÊ™SPSÒÔ÷œQé©g]ìŽuĨk`Ý}·$1^6ìÄ„CX:ÍšCP9µ0A•á›Ùñ’KúÍ:=0´éªÎLt¾k¼áñðhðÄ;b¶‹©£Õø…H^G·‡0…F÷­ÍHèlj³OËn’÷¾¤¢­Á¡F$è¹Z=N€z{8êíŠÑÀù¾á0l-tÕ©×ÂùHó46´¤ÎÌ$*»ƒÁ¸ž™¸Ù¶ÏÅ¥mGnš‘{˜|6ŸšMj¤˜ŒÝ>„.g§i#’ Ì:ñ8­sÀïaHÜÝŽÊoH.PØÅØh¯Ÿvº¹œNçnqØQ¼_¢ï4 ìø_? ìH®˜vü›rgý¨;>4vë(ž8vs³c·6€nxΠsÉ€ª ³g2ðƒË\âl”ÂŒ„>”ÇX$(lå}øfDŸÊÃvÀ­]FUþÔe >Qr͇Әm¿Ë¶¢ªJßß·¼ŸñŒ’.rï:ÿþ§ŸÌåéá16Ÿø–tZ\í\Y€„Vˆ¹L 0ÍÄ\d/» äΜâûjQ.#O<* ú|ãÅèãÊ;}GÔz’·o^•ÇÁ§høF¿¯ØIr7³ŸS61¹‹L&å/6Á£¤ ¬øcTr:¶ÛøéI?öDàÀòÄ;Ư¹Šýéç‡m˜WÍÁ}¼ê~w¾ëGAqîÆj:%nLGÍ–©u›+ÖÔ¦eÒP üÚ¨¹ï%„J2ÛnL&Uíb.„&áC¦ì适NröçˆLãÜãø49î"#_lè¨å~`ÃÇ'_ØQ[×õ<<ür@4BÎgòÑôëÜ›e®V{+e¨ÕYtáÿ©XÏeöÅÅäîQá?Ä©+QѰñëH™êÑo½,÷Æèf5ÿgGÇs#õÞÙú¡ÇY—³?À šýQy|hö'¡`K¡ þšå~! ýª"ïž<}ÐGʼnX"ù¥ÿOs¾ˆºrÎç6Oç|Ê\9¥å9Ÿ“<çsÆNç|¨)D‰6,§1—@¹§Ÿs…OŸòÁ‹$3Ää@Û6U–~2ѽ6-_Là'?vI]> ®×ê½_øÂõÉ÷„¢ùÂÿÞïéßS«ñ„OüÓ|\/hÒì(‘ôCB•€ºÂOÿÂo2=”Pi<5"¡„:òÆ‘NÚïA—ƒæƘ²@úº)­ŒKÝ5!5?8¶4âQúbpŒpO™úU$Mü/fÇ.SÖÍA\!C‘éZ[‘{þÙþZ!ëH©BÒɺ¬ó÷ÅÎ\³oendstream endobj 179 0 obj << /Filter /FlateDecode /Length 3831 >> stream xœÍZKoäÆN®B‰‚ø0€}èYïÐìw·å`#8kØ¡F\‰ö<´CÎÊN{~vªª»ùG­7@vbûY¯ª¾æ«YžñYŽÿãßÕæ,Ÿ]Ÿ½:ãôë,þYmfŸ\œ}ø×3Ÿy#ÌìâåYÁg\¨Ìåbfs“qág›³¯ÙßæNdÞsÎÊùBZ›å\±›b.læwì5=;xUÖÕõ¶¼Š¿ä–­w׋uõ=u–ž•ëêf7_Ð$Z3|t0RhFc ¬(ÙËÝ~Îa´Žm`$;¬‹øÖyz ]+ÒÚ’ÕÕöz]víuµ-‹}Ú‰cûòz_ÖuµÛÆßÛ]Öåþõ\«Ì+8R±˜sñç3Î3¯•]|~vñìkÖÀˆl¾°\Ñ4jæ %ð{;ÇÊíU¯@jÐÂU”ðJ²æf_–¡ ¢c·Å¾Ø”M¹¯ŸÓz~%x_+Ve6W ™‹+ÐÃ/æ‹<30}¬tØWgFjnf ž)¯%Cr¢óÜpÆ ´®2ež/¸±™a=¸ ϳÜR ¼go÷Œv?µà=³ÈVT=oø˜D—看hbäcÂÚVx‡ö,ìy4¢×øžž½SÞ ¢‚Éç¹WvJ3 qÕMN[±`_Μ°•Õ\;8®’ˆ½íâÛÕxÅÁáÓrÙ~9Gwð›gçÃÕ LiÀ„†Ul4Ëó±´¤Š'Nþ³qß(Yå:¿ç¦cY-Rßu·S¶»žOmDeZ€ŽA@ðG†a¤0‡VøÃÅÙ—¸'=»®ÏЫgwoÿ²Ð3£¬¼m΄tàoí볿 Êr*(ÃŒ`0#¨|b2ؘãr¥Ç~z Nå2¡ÂíÛÊ$¦œ.\þ°t‡q¤ë¢øxÓFåæè¾‡[álÇŒ#¤7ÀiKx-2o¥6¹  © dûËÓuãu&pJa2)M_9ÊôaŠAPá»ËžXum2påzK,dfôØ1ÛР¿u1Xd£„78ˆg‚ûèvU€Lf&0„­o£Áù=ô”£gœö3î>ûÄçÜñ=· CäC´ƒÂ`ùˆ˜ßନ-ÆK¢ 3}Ô5i°<Ï`Èã¾ …;9ü)k ƒ-á99Š~OòÎ7È÷5<Þ¢ß`ÈÏï—†}DÞ.úp¨bp^(¶íb ô˜P)¸‡çpÖán£JM®¦|20nÜp³—æ8I²F‰y—‹CDð+ËyïN Jz“)w` 1/†Äœ^÷ñb»¥4\rÑÛêÑlÚBF”ƒJÌ&™8¸§ÈA&€K +ƒWͰZ•¹0åÝM¹‡\ –jµAI‚ôÎ@Á³jb9†>Yϧr ÃCzJº“C¼‡|'ZŽ|gp4©¾ó8{W" ·¸dl秦9ƒ… gѲ-¼VPÂQmhST[”F| õdXïjÅ’ø¸`Wž0u‚zJT…h±>”5¾ÐÔê×4¦X¯S¦íéb\SP)‘…Ú+žI­GµÃÅM…«8U;£g»ÔªÂçT½¾<¬×?Ʀeu,_9írU½‹…;½‚ŸR¸Ó¢gß®*°Ã,XúMhaå{G³yëHlqK«b›fìP“hI[½>Af±±»mªMõÏ"æmÅŽrûç%¬)!oʹ¥¥ BÝS½Žô€€M|½înŠvŒîº´uYn’“hÞ :ØÕn[~”\bö ëÇJ lŸlø?Ñ‚õÞyëCCúÅÅ}íwMjÂV&TüV(G,Ÿ2bYhb0=ŒÃã{¢Qh ÑÓaøLñe© ZÄYí tã“0Ö'ÈÀš‘íëÉ„e»Œñm„Ô£ÄF2Il@šÈó®àxƒ}“QEÚ FyÕ§Íè·±„)=Øy–ÕìGÂy-=ºÙmµ*sh&¸K“¶Ý5iŰߤÝ@þ®;&âaú‡Ø·y[Ñ­…¶ÛƱM°Vå¥`HÅEd…(YИ•ù䀻ԞÎ^Ñ3&,>£Dë¦B,MA kßq}Ï¡MßÜì×7qJ¤!·eš_d SêC ®j ú0âºåïÒ^|%®¾½*öí”9TêãØaÕ>ÞЉ.‹ËŽÄÜZ4?Ô;Ø|µ)ëuÞ‘–¢¯ƒypB)Ù/·-BªºØ®Ê4ë„ð«å<›DÉEB¿–JÆœ “38„,ÄB°h 2íâ¤EcÄhqÖ))Ɉ‹u½‹ÂI:~ךÄïÒPúA!ð£~ Æ'ÏBR•^6ý¾¦ý)ð‚ÓªélJ8ÈC´eSÂ)Ò©”A%úˆ’ìÓÓ©Eš?¹‘¦U)Vœ’VAõe…˜J«=ŠSr…U†ê’Ë7S¿ÄúÁ÷³Èà)S¸*ßÝVýŸ4¸o]®_¦¶$pöÝ¡nb 4\6]ƒb xYrÑÌÀë4³0XÆL’5ûêò)á°$͛ܰÚ^U¯rre«®Àï1ë ¹Ëv·ß„6â¾eWUÝö—ÁÓ°þ>¶©Áe.H—‡&Ž€mu­Ç™XX‘9<ë'4-ŒŒÉh/ñ¡n)eCÂŽ=ðOG»ìãèvInv/Ý )UùCO·‚˜g€Ö½®ÍÍ>*-»°­„b!€…œ…2•xDƒ!Õ[çPDk‘áæ¦Úv(¶dÜ'üZLnSVŒñ³jK@©’ô@Hàž$; ˜œÌmµÛÌwº¬(ÚTÄ ìæT{{› LCžŒWdûy›xÕ4n‹–]eCäqéž,µ{z¥R/á³è»°5™ÓmiôNàh¹”SÑœkÑÆëV °ôá6j2œv‘’H‘Á ‘×·ä+ Ðà·Ü®~Œú€t·ÕD¸Pz…d^ ´600jRðó³ó‚M'Þí«fò¦%T–H8yH0µ8õ¦¥wAtï¦e(ÝOöÎ=¶|,]¤/îqñî1šÝ¦\»Ê <»;~ö(f~h÷D´¯í‚cãg [ï‘U‡þ™°í/O§n¹Æ{‹àS&!°=Ä«·ÌÖÛàÕ» õ“/-þ?hu'1AÂ_#P7ÎY°äö—§ë N‡SBUª±þzˆV—<ÐêéŽéZ’¨§Óêܹ'ÓêP?‰VV×òdZ]²Ã·CªKIu¯ŽtLªKLCÞ.…ÝVÞÇ?m8Fª·#þG¤úñŽ’êíHuÞaK Õs€~Î}©îG»}œTÇ»§ÁÇYuüLàqVÊKðÏ^(LfôIx1ͪüöÁõñâ-ÐêC®RC%û¬ú×ì£ߤu“$2 ¿ÁRØÛÓ}PZ} W#P[¦Ú!ç!m‚Z–É|>¥G 6Õâ%[­CÑœ8#f×áYFUQƒ³MYl—óÉO»,ý& h»í‡£ ž¡øØI' ¡G#ÕÕôpÛTÖŽ¾EIG¾Jå-#B(¦J‘"&Ø+8²«(²Ü(.¨‡Wå–jhˆÄ‘D&JcOé98L¸çÐ0iËÆáy}"†pr< ¥XÚ©6;?G¦LCØVŒO› xoòÖ” õ=ZP‘Ä» ‹÷5›ÛuìAß&6°íbÇx¤&µ~<7~°ï®Fó@=Jþ¦è_PõŠ8ô>¥Ûá'ÑTFþ6MBã·uCÆó>T`É .¼ÙEâCUÙ»0Ü_Â6ÏG¬Ùe¯t[ïZrðG ¼$X,ŠÃ­b7­µ¿£Ñïh}”ÀæöÐô_Þ¤Zî€AˆwW«\ú@Õ‡zºgíæÈ·v¿õmÉõ뎛0Ä€ko+ë€ý2|a;”rÑ«`‹C·Õº*öm­‹—Nt º¯ŠËu{ר9,T‘‹0úûùB MV³Þ]#gÛ†ýnÏá»ÈDš-QvMÆBÝÀ†ÿÕ»[k§ýä˜{´jv ýóÔ]¶³F=4Å×ü›©Û¹Ñ ü¡Ä7-=ÖVW×›â¡arrØ‹N"ý!ÛýînÉ>ýBDØzï½®kkoáǶå]l€am]ÏK¼_A0ðF!˜FlûàéŸwjÁ¶˜ÚBâþÎG ø [†¦~öésÎÄû·"º@{䇺ìÎÔPzZÃTÛΈŠnåºÚTk¼?J"zYÔ7UwlG4dšäv_¶_z¿®v‡ò•v§Ý'ؽ.^<s^²úÕ¾t{v[-çÁhÃŒ‹n+©gu=O°¼)Ú¾p¸E_Ø"¥ ±áY}Ø,ÙÄûQ H-öæß–óoŇdߎ¬'õùwûcÏ7Ó†¸™§kÕâ‡Ï«ï—ÑoŸ§2äVç«eÐü¹Ìé$#•Ÿçmïè&ç<'M¸roGpà Î’mbW5; ¯ ƒ8r1ñ¯•ñÔKê0)~¨6‡Mgpî@©ê_u¢)C*Šv4•ÁC%12t.~gÇxGU|yö_¿åendstream endobj 180 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1231 >> stream xœ•S[LSw?¥…ýF§I§èrNŒDÍb÷€:g6/ ç¼à(ÁÛPˆÜF¥(Ð;ÒÒ–óµPÛB ”…Ò–Rª¸VÇE:·D—¹d‹[â¦Ë²dê2þ%ÿ%Ûa°·=lßÛ÷òý®$P<oÉäî}}Óü² HÞÜŽ¹}‰Â‡õ•DÅòo—M Ç_¢ægI¥äì¹ó…§‹Ë)*›:D½O¦ò¨]T&•Eí§–r÷(å£þä]Iؘð%¿˜_•¸ããOñ¨ÈêŸüé1 (×e'BÙ ¦Aj¼J$/›øm ¯îiWƒ²Nj­­:»1¾ºzZ½ÎÓ~é^ 1ôðP`{Í^ÈÚKׯ²åp ¤¥êÚªBµ H儎>“©ßJÛ†º¾ rXµçêš´“I.”Ðú´Š>M5j¾á¤Sã(Îbö`?þ_=Ïœ!ɤ`=y“,K¿÷NÆùOñ6¼œ&cÄ.*9êº7âÅ‚þ›ŒÿÎäÐ8 áOä™EUD Íc*÷‹ËŽâî’¼QÌ,ÈWÍòŸ"ƒ’e?¤”C¥¦µÑÎø Øì‡aCp=e­µü.¹é‚J&5Áo%aƒÒðö_9ðU8yËGo/¼ÝìgþFH\9t»ß:b1ö°¨ýzkÀô…®vrÕxΖ§“-pY€lè=Œ³'yøÞl;òñã¹ "“Å|,à–±*–WÖ³µ•HÖvGË:h’þÇ׋ÿ.uËzœ¾6Ú|±÷ÇžïúiäôÆú¦Võ(ûfáÌÓa¼Á¶K•ŽVª=z†ë©Ú4C—-Ș[Í­Ð 2<»maoè’ÙôŃhÿeh4kNé«J¡ IÝ5ƒþ«=wª±qAÑž}ôéB¹ªZ‰R饙$e Eýoƒ³/endstream endobj 181 0 obj << /Filter /FlateDecode /Length 2399 >> stream xœÕXKÜÆ¾/rÎ%>ÌM=Â’é÷Cˆ8²8Ð#–öæ zØ»Ck†‘= #¿=UÝl6wCÉrŠÐìê®wÕWýnCK¶¡ø7ýîŽts{ñî‚…¯›égwÜüíêâϯ˜Ù¸Òi®7W7qÛ0.KKùÆP]2î6WÇ‹É ÿaìÚâUuÚ]»-9kÈqKñWYR}lŽÍPM×^âº":ü”” ÒŒ¾KÃöŸW¿`¬tJšÍÕ³‹«‡?’W~<÷m¢Öd×Õ>° öÑÄÊi2œw;? Í{?Q2EnÎíMTŒ¼¯ç-ƒcœ–Äyû‡fÜ7 &½?€Dñ°¸uì e»Û2â3ÝÔ3ÇkÜ”×Û  Šÿ¬»-ž5oý¡Ùw]%&… ¦”Ôe}µHúŠmÁ¨¢p¹éý¤ê©ê«£;ý‡‰È“alŽÕè‡GÛB—š ·)…b›«ü“H²6¯ÇºŒ'û¾ïú¤ cv Ë£0ÂÀ’ô×䛸gœô+ÖÙýäÇŠæ#™+œGÁãLgµ±ÔÈð©ˆ+1Vœt‚«l´ùK–†û‚é|èÇg#?–EÓô2ÓÎ#XæBñ(mY’Ĉf β–Rû‚êl©Ä(jè’—†æöXež®ÎÍ<­4KžFJÊܤãeˆ@Î-ÑBþnEg ƒË‹¢_£¯›Û¶¹)“¸6dDB2 Í羓äsÑs*°;dRƒ±üö&/3«oÊ;ŸY~y“Ï}Ù,^±ò/e˜]] ¸Ê“Z”'Öa69çjïˆ\!P Nª>¾qÐñR·õUï1w{ÛcÁz;1½}έȔ³eM´²dÆ@] aÿ‡mA! "­6 q.,ÒªR Å4dJ 1nTÜBq $‡f6îK¥LÉ•¢vsgË×Û‚[ˆ) ^skRq ä6 õ9ð…Õ+xi´žh‰Ú^ý|ß®¶Œ[7QTmiîš‚ßXö?˜ý¶¬þ¬èªoT‰|~·Œ›üH(³+†`JRÎJBÆIi º$yÑS¬…ú¹¯Æ ËþYpÁ"ùRIŽÕGè +ì &…‰[wOg¨Ì’ÒºÕaèðKFN}·…bòu¤J8Æ5ijìnÞ:)©FðaÕ×ù¬Pÿ‡ËUj[r=Ç÷/ƒîÏÝJ B:ï·J“l#Ã$.u!ˆV˜)Q*g•OÈŒQ*XçŘáŸcCBTÂn²÷íÎ#óPsɇ-7%üúØ¿@»Rr39*7øàP0LpèT4D® Ðb b çÃ8L´Ð+æB³on÷‡O¥ädM@-ÙU‡üÙ`i›¯vU þCÿh2–±ØOÑVÌØåzÙÎÌ%Á]SÔ)² 0ÍAßøŒ_ßNÔ†ÝÓ¢Jê±EÄcõjŒ7 (e¡™Iè6`Ù€nÕÒðŸÅ” ~`ñ/ÀÜ8ŒL0óÞ8öŒ8c ñù('3“Y¹-æÖ5ëÎ üÌÉÏUÖgi„…ƒ±ãÏJÆAšïž^NBÀ¡§"$è£,3D)ÓØç¿ž!ÿ÷m ¶¼œºdè¬ÿ¹N-ñîÐ¥i!H{÷ÝùvŸ:˜$m7æ.È Ú5 Z “jèèeOl S ©y@p°WÎvÄÙÐ úæEÄi”S®‚ÅàMH@¦Š‡æÎ»ßâ3d·‘$4i (G3Ò"•‘o&¼g+"²&Í/U¼ó˜·®oî¨`E‹s–º§Mà‰ÉDø%v} f€M`H‹kHÝ ±¯Šrdw\þ¥¢õ!5€ro›]|«‘¦…¼ók–)Ø`Ò´ñypŒÇÚýEl™)òU[/wOŽî„mã>L7*QÅ QðÒÀÉÔ Áíâ~ŠxSƒ'p‹‰e9ù@‰€åÈ·9Ž‚0fŠ#*sëñº PK\¦†“вu,'>B)(<Ÿ–Ⱦ®bô)CÒ^@’×2*DôÉÛåFÌ ƒÑa»G×E±ì]ª¶‹ðQÓ¾¾õømï§!‰“D‡ÏPžÛbqÈJëª}Š+Ø+4w6†Ä03ÆEI&JÆ÷S@Ÿ ·#0jµ³|c|9Q-fœîpŽ·‰ñ<æÈò[Ý5ímzE•Û"Áà(€‹¡2¥R¹vÿóºËsÀ¾ βˆˆ§šƒ½Q3ŠŠ>Ra²wGˆ%ŸT®ô"ݺ~òƒ²Bþº2¤|Ü…´$¡JFéÅ\œSCg k,Ä]$䵟nLãš@Ð ±ÔZ”ªHýcï{ŸÄ"øf†0’tG˜Y±Å/v– Þ‡4”œGô ý¥oâ½N±®ÝOç»b-îCã7ŽH<Õ*—EG?1W‹Çóõy¡Â3±rUÁ ¤!óKé$“q;¿UqïºD[:]UÌ[š²Ìáôý6¸V1ðÔ ÃbS¹J±3%#Žs ,B"/g+¬ÏïÊ"âLšÿ1jÎAßµ– æ…/ÞôÀhÀ•Kçý σÁÚºµ£!Ø%"©æÌŽ~†_Y»)°QTlG®O®.~€¿ý=Æ)endstream endobj 182 0 obj << /Filter /FlateDecode /Length 212778 >> stream xœ´½ËŽuIŽ9è‰&>ü£¡píûeÚ@w MZ‘€% ¢*#³BúO¦”õåéÛ¸÷9‡\ܮڄByDz¸Ó϶mF#×G£ý×ásüìÿüŸÿôøaøøãÿõ‡ßýðüÓããùÝÿæßûÇùynÓöñ»?üÀß?Æiù<†éc¶Ïq:?~÷øáÛã—ÿûßþöŸüݲ_Zß~i^?÷ã´_ýÝïø‡oùõoÿËŸþúãOË2}žÇúíoÿü«ÿsÿöO~ü8íŸÃ0ßþñ·?ýò·ßþü'û¯sû–ýè/»~výöÇßþ›ýì9Û·_/ƒg´÷ý—¿üñ׿â—³úí¿üø“Ù§íÛŸÿú×ßþñû¯×;¿}ÿóúñ§ásXçÓ~à{{ûç°|ûõûoÿügünûÌë7û×ÍþËöí÷?þÇßý?üt=æOãøy®ËΧýo?®«Äúí—ïÿõóÇŸÖqnæoÿþÇÃ>á8~k`^í#ßþé—?ÙÿØìóµ_ÅG—múöÛ_ÿþË÷ßþß_ù_Ïßr6ãçôío¿üõ?»•ýÛ?ò3ïÇ·ÿÇ-Ç·ÿòýÏûÛoúãe`ŠìÉñ´í¿­Çþö´mØg<íajmOK mlýÙÆÏæ¿ ãþüã`£ÔþÃ_®¿÷í÷¿ý«_ÿò† ´Ž¿û·?üîþ‡o¿þéG?¶oí=ͳÏxM„óXæçDø+ÿóÐíÏ€©óï¦ñmªÇç±íÓ5Õþ'Ámæ“?¦åfÓaŸù³ßþ5'n°Ö~âØÇçÄýWfm>Ï6 sçç¼µ‘¼~ø?|ûß~ûãßÿb£2ã=›þßøÌÿëï~ø?íO­ü«-»õ?Ûç˜O{ÜñcÚ—óóXŸÿü˯ÿþãO?,Ÿû¾ ëÇÿÕaÂÿÔVíÿþÃt¶y¾Ÿk›$ŸãöñøansïsY>Öa8ìŸßøY¾÷øa™æýsÿØì•í;~(}ëÑlÛk™>¶uo¯yÂåï=ä৆6Éãc9Îùs9î~JlÛ¹~nãÇ6Ç'ÿ`úÖCl×oÛ`óÇ2Lççο—¿WÕ—¾p\>öÏm^öÕ^ùÐü0mÉ·Y6­s{;oÿâÿmZÆÏe?–yûÜó”ÿðíñãØVö°ßþþšÓОôØ?{ïËloX{¬6çÚ ù«†ö7ÖöãÒxõCóЬo‹=çö¹òåþ÷žh?>Ñ6·9¿¯G›}?=ÿíùßæíø<‡öA—µ-ÅÎÿ¯¿ýññ‹-!<Ê<>ÁØ–ú±c¤¶šÚïœ[ÛwNŸ•Ûl9§ö½µü©ö†ÆÏ¹½Ùs®!øï<Ë24›x–i^†ö\íÎ}šÚ'}ûÿocûó¼}¬»­ä¯§9ß>àí5+ÝáŸÿzYã9ØÀ|¬ã°bâ6OØþç6NÓµžÆmo»Êò± Gº³ü©öÃ^Ñ6ø/ýƒ=Öù94¯òñÛ¿ÿ^À<ÍͶ¥´· d}jÇïÝ-€üS…Ûüÿ—xùUuºèÿÐõ?ìOü˼Zߣ޿ÿãLÿË|˜QñçÿE»—íŸÍ ¶©„¨íŽmEl-V³%?žÛj‹¸-‘6ÇÝã·:NÍŸlŸ–ÄaCbch–¯}¡íñmþoãÚvÎ?5á¬ûÜ>íµyœŸ[›˲Îø¡}nAéi«ki1!'óqŒf¶¹l¸ö¾ÆæµVs(muŽü©ijŸp:š­©ýÔ|´lpl‹ÑÆ´Í~û¡Ý"*û¡µyܵýÐÔ>ÂÎ…8íöIÛ»oŸnµ6íûnŸs·±…îÛ×ibsÍû`M· ¸Œ“9NüÔ´4÷½˜­É^Uû©©9Álµÿr­é¥ý{{Ú­½³Ù~jn>Å~j²ùçþaÛÚÀ·Ïµ´!=àÖ6KÛÛÏöAg÷ÇmßhÁÌf‚k·3Ù0´?Â(alÞ¬ùmnùC-T¶ýjmÑ”"Mµ×jnuwÑ8=`jhtnï~mï~ÃÏÄéÁ¿×6±öÉ×£ýs¦¥8=»4öÑÇ61·‘ÁK˜÷8Ê6ÌêÖ&tKd¦ÝÇ=Žrû©©í¶ mÍnŒKò(·ŸZ–ÃfÔ²¶€÷ðq£Ü~¨9³Ïd.mküܹ*Ò(·j1¯Å Ë´¶O²]/'Œ²Í›YÍÔÐöcŸ~s >Z°Ù6ÞÝ6‘›ùÞâ—Ù>s dO›Àõ|Ÿ·õ´¿´Øu7¾…8;ìm´ZV3¾mÎm”[¸ÛB•õüà×ñã/¶ÕÌ#6Ò6lÜ“ÚLYl´×¥ÅAÛ GÔþ›M”¥ìZz¦þÁ6üûð«Ûn³bƺ>;^SgAKi`Îöhß9qÚnm÷ùÜ'·ÝÑT1ñÍøÖ~±}c>®=¥­ºöÆVÄ\K5&þ):¶¯eÔ,­\+ÕèÆ7p;˜ññ)[<-â:ZlSgû…?3Må ðsö³U gxdL¨Ýu]ÚÆ0ѶŒo•z Žæûñ±ûøfz@ˆÝ>vx¦L‹0s|z*ž><šYnÁGó4íéÛ_˜´¿eï»ý…e-g?cóÂí´_Ü-5¿dn̾Á×!S+ξۉ_µÄuµïÌ|ó0-V·ï´¿]ÎΣn¦ªUfÙnns=¹}Ì\:ylefÝ9¦÷·í;Þíÿý½\yFø’ïeª‚øxL{é6q ïwºHÄ<+búœªõÀYÔËR1‰âªÁ=?<üð¹¼,½O+]Y7#';6’9c @×ñ²<‚®ß“z™’1ÈÏÕæ°Õ±Ú`"”jÃ{Z ºÚÜ:–riñsƵcŸs-L\íƒüXê©òúºÛà”Щ·h¶ÂÉè¾r0iYø×ËT± Âòéæ,‚õ)d–ØÍãO&}KMå-?ø‰¹ «OH~ãzú^–Їo™”m³fjÙh›yÍliùtù¥è_¢ ºYOyÕ?8-[êÒ¾3ZjÓòXí·ï ?-<ƒÙîhªÚ˜‚»Ú8(Ça‰à÷r…e/sãS²Pr]ñ$½±:Gu Ÿô2Uø”ø|H[J0Ú4ÌÆ×¶§Õlµ“áÇŒ¡NûT« §kê´ÕÉÜ g\õˆÇG$ë6]wFŽâi³cx¦7}LS*zÇ“ gËWÆÉêh³—qãÍmó«/Ù°ømÅpéí; %úÂ9Šƒ céfªð,Ñxtب´?22,O›}M={[ô ^ÃpÙnÞ€¾RÚ/|dð¢>Ý,î/z([Sm¡Î6–×B˜Ç–}ÎøcÃg/Fÿ×ÏVPwç "Vì¥úUî »D7ÛÏI0nˆæcù<™öM§ x3Ý–GS7œ¸)ÝpôgÓeÿÖËG¥m"ûHp?[ÅÇÁ3Å| øe£©°½=$äp’[éoéµ¢/Å.°!h¦ÚðüTiûR{ã]£ô,u\m P~/6q’üœÝLUšLð¥ZÎÑ×l±çd{ã]£4ã–Úû?]à‘"{I=ºÙªÂÖàM·.æ Vcª»«*²ëd{3 Ñ ^a¡}ð“rL±Ud?é±k'KâZ¢#á fƒ ÿ½ÚpÄ×Üì/ð7>4´Š¶OLîJ‡Ï‰»‚ìi/¹v˜~¶ Ïw°¸æ?l>í'Ø<¶‰oYùà½Ü(è;šŠÛ‡9)ÃÖ6î«à:ÕÊC[Ñ ›­àÛÞª;Ù ÅUw·•>¿ —U`ù­ÌŠæ±íc-R‚kÆ‹V/ï›OpáØ|Úç{LW.“¶äìæ«U‚¹f?´ãÃÙ*iAËì¯â\9ûdKŽÛök™LüúRcÞ\:6#Âéù˜è»ªm4»}ߨºÙ*vŒ¸?˜¯l/|²qYOfxyÕ-äf¢KG±Ú”ØÌëÎWr¶>õúƒn¦ò4H[”ÝÑèju£o²‰æí£èБE,À¥6}<З}Oœ¾'$½LÉv6Ou°V2äbû”ýã. þAîlñ>õñÚx¦—]¾§#½Lé^‘ܹy¬Ë³µIµÑ++½_{òu®\>_7Sòš¢w²hÕ^\ûeÏ?e›Ïþëf¯Œ{¢ðƒ+| U><ïS7s ¹¦Á_\8ö}n-+±Ø÷SlpM‚~¶ŠQˆ;2ÉÓžy³…{nü²+rßêh+<¦J °@Y¿7¶•yض´ ^g$;¬ïóa÷DB{pß]ƒ‰ì°¥·ËÛ6ëÃ6óöˆåð*¬È[—oüÝl›^Øâ°¡út_Pú½ 3ò6Xí=ŒX“«sáÝ¡¯ïNýYÂŒŠÜî§aËsùS ÒÛ÷"0Ð]ÑsÐN–d7{'PŸ«ËLÓ`èöz³™Æ 9ãfô ŽÔ«.rP·DÏ>;YvN$ž»9ÞÕ ãžU )¸È›ëÍÓÇÝΓºe¥ÿ˜<]Ì!AÞ=ñìeªØJãngΪE_§­IV²µ¹5'°ø¼O¬ БޝŸ-yQaëÄ4‹íÍɸҖƒ ¼¹Þ<Ü8‘ülf²™Þ/9RÝwÞ\ë96;$Ì> ×RDE²!>“ïN¶ªä;lvlCÛs–WqQÞ=ûîg+<ª¼©ªÛù.Ρ}sØÃ\n®¥ç~é$ Û‹¿*w4`Ë[ÁÍpÆ=úAt\hûR rÄ&ûøM|6Œ¨’µ‰ÀÂÂK©}Ãw£*ÈŠØ5§º™j°¹M~õ1ˆÛ?8œ±Ë ›&ã ±$Bð ¨—©4 r¨+zÅñ$×Ê%àʱF9i6Ûãà vô¹[ÄHyjå}LI·{è «­Ö6‘…F[p65£¸Î§'<»²ƒ—¾Jê4ºJØí`† zÂie™ØHÖ§PþILàÊDCªK¼G%«¦^g;¿F [C«]ÔŸ¶{¤ü»»ËÙKs@$«,;iÜë­.:P? 7ñ0ÅöJJ% ßïgKÕ“÷À0£¨¬¤ÛÕ 0Ç7Û¬¶ÅøG3íG/ªí+7¡DÜì!§\;æâl¬ˆ s@àÒL7[ê÷ÓfQàrj;Éä;vŽ %ðDº—©âeÅa3l\éÓÚzE½w›s8©„M{ÜËX£~Bág¢¡iº„j _S¨q'ü„0ÂFd\Ì5Á43Á"~Í¡ÆÍ‹›?ÄȱiqÅ“9æ”á)üt²U„a÷‡úµ1…Ø0E¿W!§D -º™’ø2î}Ppê³½ª¬ˆ8eô(% =v6hmòY2–L‰[êprkžÞT‹ ‡ùíñª°0DŽþÒû™*Þy xP*ºØ‡ÿ÷’v‰ sLÄÑìfJb€:!N›>íŒ0ßËø2GW7P S¨Mþ©·ë•ç¨PBW“z™R9)Ä<(Q¯1‹3È᥆Eô mÈNnA›ì CK鯚„S„u³GÇðÉõ¤ÍÖÊ8za˜îÚbÝÌò¸¤tÎtô«‹j)6–¨Èõ¹^¦R€ƒ³­8͹YzÄs$ KÔÙ”¾™4êfÜOŠÙ:gú9­+³d;°2—ñT­ô…X ƒ‰ˆnmû.ËóŠ=ÇS7*K6¡üĤÙf—ˆ"fÏÕØt«G¯:ÇÙ¹Ø×ÍV¡Ç£f—Ðr £ /éeJå¹,Až;XðÔ|O™au¨î½K`{#ve;TÁ$Q´ÄS7/=8—„vðEm.¡I䛃 §×É–½nì&ûµ›¤J6Óp.@œcßq8»™’—·xW ‰‹—ýi-a€Gyï‘—7„qれ¼$ˆÎÁÙMÈܼÌ<ó%°&~ÛNë׋’È7EÇWÌÜÏ–¼ôÖ!Å¿Áãe±oý4ö³%QcˆŽžÜL,5ðÞ=1ŽÖ0òfb8¾9Ó¾3Kì« ›©"֋јu«œÆ—Ý‹ m³;±È&Ñ%bc¬×Ï–¼¨ÙAã<°Ç[—ÃÕæx?œö§ïÚA†\XµE)×µü!'øJˆ| !N¶—ãc:†Ôp%’wRlˆìpúÛG·mp ±ä9ús-¶—©ÚÙ#Ϩ Ú,û?©Žjğÿ޶ŠÀ1Ž»ßgïƒÇ[Ó±ØZÁÜ8Ž2”¬…Ý&BÙÝp®ÃÚnyMDNM$’dX£B kvô%i¦Ö·H9¦"9Ö3(ErP_­?7˧:˜Ò‡ì¹ÛË” )ÃlæÃ7“7æ’Qä`χ³—)•ZCL©ûh{QóUS¨éCŽ[¿…(0WÍÔè5Z’-äÀñ iõÈA],jßY¼úU#| ö^Òj[E˜#¹ë¼÷[ãyðs°çÒj/S•´úBZÅ›l¯êy…þÝM•/:­¶= X׫p öØr»™Òˆ8ŬÅz×ÃöF&}ˆ’l\–Õ JX‹éØÏ”ÊÝ!ü…ܽ"Ú¬¨Ís‚”ËHˆ|)ŘÕ"¥öQVÌÎÅk†‹Ø)ǵ÷!›Ð®ž¿xö“'‡£ d{YÒý(…žˆWsñí;“¯HMo$E‚”CeÍC Õ»{³µù¡ Ír¨|óÞcìêJ÷¼òe]µ ’ÔäøÖUón¶n"㻢˜weìºì?Hf#á-Ç´›©J9‹‚¡œƒˆM/P 9’ʽ‡ Êùj¶¼‰æH9P¾“ÎßcY¨Ýîh­›*ÃwIl$Þuå¼—©›@9³h¦4Ù¿Áï^c#yMx=Õèf«•C4k‘ÇŽÓ/…@äq¢b{òQx*w3•'hŠ3\ð=líWí"•˱G3ÙYTaßi;ÑJ~—S9 Äo¹eÛ¾|LOã>ÚI$^ÁÚž”1ïì=·Á)µ)»ìÌär²óA‚~¦n&àýXÍ4&¹žÄøNMú*Rƒ¼ÛdmÜ|ÛâNNMIôr|ÏÌ ›)Oi® û\,^mÎP9ž—Åãù«¤ 5Ž i€÷ýBTgþ™AÒœ*¸êbw¨þÒT³53Õ4Ç÷_¤›1êíXxdäJÚ(9#ún¦rÌB–6töâ7š$JXÞÙ”Äó1zÙ8Q2×ö³kÍHJ(¾ïšWô¾yýûÖÞªIØ-Í#U+r”7>uý @×?|΀1|¯rBÉîçL á½çδ\²L•Í¥0ßQI/S7ùAŒáoç­r”õä’àIœÿ×N¶˜„|Àd3“í•ÍÞh±HsÎàÀ$ä &s›<_-’Åœ3ܤ1ˆwÊÁ8x¾âWÉð$ГN¶nR„Åc$FFžÖÿ툔ã¥@ŸcÚË’2“÷tÈd6`ÛÞÕàŠ‘æŠ’282 éê‹ü`köùœ+JÊpMBoþÉ:¾ù»ZÇ+yK ^ô]íêfëæ½Ç  c÷e9Ù©¶ïU†'>GµŸ-•Rߌ[Ã[ôû3ŒÍii*@æö²ËHŸ)B7SÛyKÉãPÌ´|Ü"©Í)ƒÎ˜xºeSvÝ]O)rÚœ1Üä1@¬8s3Æ=ƒŒ%ÂËÃMzƒxÀŸåÓßïìð'g¹9ÎwŒÔÉRšùmú]ÇF_Q<2°É§æül+œ2\ô"õ2U/ÒÊÛ [Nv±ÝoG³Üísê÷²Td qƘémõYuzA„Ù^wäC7”™wŒï\ó‡åÕ$h*.! _UL/À»N¦ëb»É÷"×ÄiLH/p$Á^mÍ^ ”3oIA®'^>øÕ3mó3ÛÇ«âdZ-çݹG kœ’ê+ÕîgëÄ…äøìxnñWG³œ5§üÆA\'KõJŠù ”‘jš]ëåˆ+çÍ’óðíw3¥´,¤FÞ+sy®dIÓäœ>9£ é ×Kœ¦6žàhšœSž/^}ÌA@jfVö.›»iÍm%OqÎÕÍVÎ7¼„räŽÎ S“Ûœ‘ôµ¤+ä-x\HÏë´œžòK–,© ÷Jþ=¸Úƒ{å„ëÈ0e˜k’é'. zmöV<%¨$É’%}‘ÇÌœkgåå¥C™­d7OfÖÉV%¤Üƒ±óäÛ<{o Íl%¿ñíeJ¡YH„l"#º×ÛMƒ‡ŸÎ–$9'K^ó!œ'öí°Ùš˜­I’,ÉR§äÅI×â¯ëðÖy’Øæ‡S¾Ÿ­úÕ§äøp&ÁœW¯þË™­¤7Í:YÒ´(e.–ˬÞzp<<çZØÆ¿ýÌì«5g7ø”ýL)Ú{O‚œìAt]¼"¥Èås¢ôL1_I—åÑ’§ÃU&Ÿ¥›6&A§nEœ¼Œ»is¢t# „ÔåA=rŸø~vjf/é럽LÝ$F1yAêyp´w}5@–Ä>'8žÆv³u“…ôÅÞ™5`F68Ð×ä^RæFÝLs+Î3Þö ˆˆËê®~ñ“ÓóD‚¤KwXò• 9•ܱ]—("DΖJ†LyìaÍl›©g‡¯¤Bh²Äà8&B3–`Š…ç*:H²TK )y9lza°8O¥‚œß03êfêf-ÅäéæÄãdׯb$8Ž!{™ºIbúbS´¥UƒýE{ç,)± g8|ûÝLÉdQ-ÐÏH÷û‘$ðåpÆ”êÁYƒ›ò›XUÈi—“ÇRùy#lgÍË1£Re g]|Þs°Ã¾údfξÁ»¯óÂàõ™i2Ÿþk²w3UOö”¬jîüå«™E‘ÍKB瀴›­”®¡ ù¤©éytNr÷œÒõµ¤|ô=ñÃÓâzó6ž%¢HrÈ4#fkÞpózyÍ,HB÷Ñ ÖƒŸ€Ûâðcíš¶ç$Ì‘f7[7é[L±Ðc¡ì:mWytÎæ% óqíeJ^~LÖ0 OËV¨ˆ0Ó9®pkl†€•*_^DóÕõPU(\ÏS¾WÔfj¼zJ¨*ÓÂ/&QLÕÀ3×ç‹ç…‘šÉK:÷d£lÙÇ?®¯ÏD0$kšØIÚ‹?®«D4•O óæN–ŠD0æj–½¨Ooß¼sÓ:®¨J7½%c"ØÍT…pßò>0ܽ3§6;×»H’zR2?T¢¦VÂÖègñ²t!ÙáM¼3?/#\ÌT{S\ÛÁKvx£‚Ä|Í¡.ÜDûsó³º7j’Ó9 îfëfòÇ| § Ûn7ë[0¸ú“Ô Iéø•O¼l.Zµ-•Ü-í9-ÿÁ\`q‚JAÝðîféfºÇl1T,?˜™e Ihùjº™Êy)ä(ï°6¾úшp‘r×Φ~¿§¸þ¸æY­A’?n–@rÌ3SKªlTNšz5Ô ˆ$¯÷ªVJ&˜q 1êÁ*ª…$œŽ«»Ù*ŒœOb0pŽÛêÉ&?"[HÎ鼺›­:ÀHYeû«½ÃöÁïŸ×Õ¯À°žüNJ<™±ö²¤d=¤§ 븶ßý…e±&g°Ü{Û”s™V¦”ØWQ“Þ–ÒFÏ#‚Í»¢s¥Q1Í¡?é -˜â„W¹&§Â ÌbVk™È°S-gÇš›Hæ{/ô¤lÔ)ýŠ˜tóêºB®Éë“øw²U¯ž”Žbd |†mªØä”•/©›©›µ³Q{qmq¢Ýǰ\5Ì¢ÚHÆÊÕÓÏ–æºiöÀøàîù Œ–}@ [´“ß»ª‚·Äeçøè­¬ yI’_—&Bf‹Âœ9j¶FOPU^’ìדÚZ²Óz|Šfk|’ݤ&åô÷F;Šù(èÿê;Èöù„ÿQ’”Õëz™ºIvc:jc:/´ÿlL\@9e}jlÕ¹@ÊGáGlÃÆËŒ HRV¾ÿn¦õ‡ÔÖY¿u¼˜¬–ë)å$¹'§¿јÛÚˆú媤{_ÿ¬÷hþë´?$·ž,µîèfk¦6*‚$Àw´?d¨À¯ØmÓ”= •&g±Žû»Ùº™ó1C¤ßy¼¥á¶^cdÍbù†úÙºÉc†Šs½íEÛD=¯ •irë_/SJüC® ä?@¼6?&ªŠ¤Ã^Ar] ÿƒ•aÃvݲ­’O·ùÀ1ÙÅQYœ‹i¶V—B Í'%Ä×ÇÒÿ˜¢‚Ó·ý‘‰ S#Um$‹eúÛËR=Ûc†jã9x¯ä+¢)$Éb÷÷2UcŒ”¶¢sÖÀè«mÊtQªØHjëâ^7[¢õÄ” ©@›VóuÄIÔIžCúJ¨ýˆ9Ö‰Õ/ñ\‹¨?’t3ŒõƒM°¸r¦«ý©È?9ëv±g´Ùn_}¶ÛeŒóÇë EËPü¥ybô©¢MÒu®éÞÍT=ßS²P?[ÃÜ—€W¨69Ÿ÷ʇ^¦rVŽ#‹•mPVoÕUÉÜ{Ûªó–˜—[¢¾Oö®¶ægÑ®çÆsGÍðÎ2ÉÝñYû™Ò‚ŒãÛËi1 c£áºíLäª$x!EÈÌQHqBä Áz—`‘«röÎ4-fæWÎ(„-.¹"·ÊÙûJW̦QH±ñåÛ¶áG'²^%÷³(£“­ö1·ýãúúTºb:‘õJôöÖ(E©\•3nI½LÝäê1›¶™:pã²Æ\T¢WIÂÍ9ÐÍT‘©Ç¹ƒ²?n¯váê¢YÖÕ$wg?Xwmý²ûúx¬ggÖX²¨ºZÔÞž$!ÅGɆÇÏízÍ"­‰ À¤/¦ø¨Ùâ©:•ÖDÈ<äMH ¹9ê<Þi:û”,Ô0Éß½f¤—©zi¦ÔÝF¦æãî­ÂT “ô﨟­: й¹Mú6Ÿl‡@s!j_ª†åüÝt/SUUÇ[šïU;f׆¦•ø•¥ŽhLó!¥ l‚-?€¡âW–8ëcš´oÂ9@‹Îq¿²P†)5G1ÆÀ«àçáÙÕ'+V9{§Óèf*Ïx/ëy9´”…¡Ûx^ ²^¥¹»—ut³UgB11÷Ê6ô^iÓ—dDô*ÉÝùö{YÒ¢Ž÷ ßk:FlãU(—¨^Ô2|uØ¥ 0å%Y÷R€i_Lð‘ö¶Š›­áªÝKDŸìÊü§g™Ḣ| Ì…y–—¥*I޽ȣ—©Ò½çÌu ²-#õ;tD©ÊÙ;_O?[5ÒI™9¤É“-)‡+¡©J’w¾ÿn¦´Â#äø¨ðÀ®ãq¸Š«ªW–¼Â#äø¨ð˜íCÂë Õ+ëÿCŽƒï¼ i<öKÄUÕ+ë>áçùƒ_¯™£2 8æÂèRTR«ròî5,ÕÓ=åå¨Tðv¶×’.Īœ»{G/S9-‡þˆ†Õmî­Ï^}¢JåÔ½·-™Ù18‡3Úq¥‰CÍ …Kø/ô„˜ó·Ï¾Ø¶gß—yól΀“êúÙE!ê¯7¿Ú ‘KÍÌò\Ö¼Þ%hYÈl´Zg‹ú¨Î‰Èà«rÅTo_ù9çö.°1´Ùw,¤Íï±F¡©EÝÍg{G[i8³ða¡öŽlcÀ(S“WG²üþ¦ôE±ÂÞ—­Ë—z[èu¢gxÍO/S7BHÐ*0V›”¸¸xEÃ=çV/S7‹5j¦^,HZ6k~Æú¡BÄKz×j7S…gŽÙn¡Ç°r߯Ò,m¸¦Û²{æœ"ÔõDA÷@=Ñ‚:Íñ˜®ÛÍTkÌڈױÂ^W›ØÁåœ µ1  å£X–x‡;•ÑÛ(jc4.ùâ:ÂúÒ“Äàµ;ŽC¼PG¬BxP/SU2—õTîüÝgí‹êƒY‚àêf ;šµxkŒÝ²Ûwkþ|§pDÂÞíÁÎ^ÖÈróÉ›UDQ*(qô³Õb2¿ÅoÙ¼KzH$)úyÓ=PôsÚ&9î§ÍŠï•¶(ÒÈŽšø†ì‰’†™[y%.ýñš’ñ]R_¾6´2°µŠL’¶ıýÌì…Ý¢a´:Ú­)*KÞ:góqðU.¢°¨OT¢´ô`kX|g;¯U.¢°ÈO¾îxãöÕ×}”ƒl‘ÙIo¯‚Þ½\+K¹"q½ö³%bS”–Ps±2ÞÁÈO•ØÄ÷ä {»à“·øqóJ°,‹dD‡ÑÍTH'9g>5¶?<³·JÇY2ò™ÕÍ–8‚˜Æ=žM¬V»ýô‘¡sª÷…Ž¥&›v%„-Ì–¥1äWéXä( Yýl©’•¦¥oû])afiC$e:ÏG¥kÕõqA³B}›šÛ»?Q};ëZœQ³2¤…õvªÆ„E^=PÜY×â¶7 Ô¼/¬ýü°ù¶qî@Qû…¢ÐÚŒ1%#®ÙîO¹Ëò³«rÔíKóîfJ¼PÔã,U[Ù‹ÎÆi Î¢"xÖì¾¼ƒˆ†‚=D™<|§Y¸íYû×Å’¹Ÿùãúz9¡(¡ù„AÔ\íî&ëÖYfó¿^¦n”·¨AHžÙ­ÓåDµLe묟QyëgKËóÞ4¬šéíóÒIU©Ee£<Õ*ËÃOôíY @yt *µ(Ẕ¢Ze9Vû[ÃI[WìR‹¢Å)ý Ìæ÷¹ìÜ~¾S®£…r9?ÝVùüuª›ÂĨaÃFÐȉÌ–Ue‘–\Dîe*gƒIBÃ^À3®¼çµÈô³F%Nàjj4#ópÍÄሼÞ\thÑ•¼â±›­ÚDÍ\7oÛ5¿|ë"B‹ªÄ)ÕË’¬ÿ¨=±çž½§É¿ªÔ"N}!EE±Ètä¶fÛÉíêȪ,gA‰RT?[…¦#d.hûëè—¶ÍVDøy[]÷ŠÚT]Wt'Ÿ_pëH<]¨ß¢MQ ˆºÓƒ]ÑéTÆ«£¨ß¢MÝVFÈ\A‹ø°ðGÉ+Å:kE™úÙ•)jJ¨ïY6êÚª}çtó^ÁJ“-Û63íÞx¾Ð«E‡¢{égKË*ƒ`…²Ê•Óv¹.E.$ê,jqËŠá¼·¢Àµä¶#“=fYË^j ‹®¿H9®²³ôåÎâ8|ÌÝY´I}¥í‘ìD;3@DÑ «ŸTXŽÚóå+º™Ê®"‰q8Ž>pL¬O¥•¨³`w/H'mì­Îsœ¯{ŒDXÎò™WŒv²TªAó*Üídœ0ï×DHªrм^´¡Z?HÚÎw£=Îf·öy{Ñ”E?£ðÖÏ–Vx¾ m ƒu—«'¢ÊÓY‹ãhFq µ”ЪaŠ-¦UÍ“ ŽùYÇ ¶Ï‹TÍ—{u¼; [(¼NJÎ×EF"‹øÅéÞÏÖ̈́Š wÓJÚ›=Y€”cQ¾\Ðìc(»h8퉦§€Ö븬•/÷c&t™Ä¢ùBVNêgI7SZOD4¯§ÄæeýÇËaE…:élÌIœNž(ï,”˜ˆ/ Ä :‰Ø× G9ÎÞžÝáåвP¨“dçúKÐã ¿ ¦26Sãu¶Rê¬Ù]rt:H2Mì¶×Öé¿ ËYD£øÖÍÔðÖèîM‹ j ½1 Uݲ«a–•UEãëég«Ì½“Böxî¶Lùjk˜eeQѸrúÙÒ‚Ê ¶¡ ò°¾TVCàÕ“"Q‹ wŸ'Ì$³E›uübÝÖî]3í¦.–‰ˆ†aèh+CÛP ºYc\Œ;®ˆ¾®‚œ{Ûà[¡ìn,Ø»›Ÿ³$g‚ tKG˜óˆ/šÝU/µô$¢¡Êsd‡Æq¤ +4ñ¤³Ñö²$ú\PãЛj¦1{bÕ?²`wï%’††Ýî`å0{ºShíYgcºÓÏV™IÍ&Õ.ìîÅEi¥Í)N'KZ8úÒãàÑG¦móæ=ƒU°Íî y>jh¦ªÙ%Ù–ÒnÉšjì"³QïfªÐçÂt4ÓÓA÷° Ô7kÊ„a¿¦AÒì³XÇ%6“Hü´â8ûU …f/2œ;€\u1Ôn¼9À®Nà¢]´3ªnýl‰ˆ"›å˜-qßÇœ¬*Ù‹w'ÐYÌ+7Ï“â bEfé,þÿ7õ¾W½­þ(Ža.¬Ýl÷¿®}É:»hœWýl‰B’kœ#Âú®õ/z½dß_(zQsCFj“­¯ï=ërTôúÙE/x¨/E_ ƒŸA¹^D>¯/ êK²ÒéäÙîBˆ•Ïlí£™ëZ½;õì±UÌâ·+Á<Šê>ã;Ú­=Š¶è‡ƒÃÓ¢´Â’¨ï"Hº,R5 ÈZÀ{í¹ËëlU¡ÈGÑëWq5œÕ‡úÕ§².J£—Âö2•ÝÃìµ°AG|<‹Œß:÷¨¾µF¯…íc¨“>èlàyöáªqe]4D®à~¶ªjØ7±Ñ ê“^×LˆLŸôHgT¡øúV?y¿ùJ¦Ï*¢‹FA"4Ѩy[ë¯?Úý«¬XU™>ˈ÷¢|ÒöPºå'x¯9Z(ëYþóJÖ^¦²$0{%kö ÅnH9lâc,´õ,ÿy%k7[µp¥=x3Oå÷éj+,¹Èœýli)ë»LˆJÖ•;³mzÏJÖ(‹”È„°Í¼3Me[ÿ¥mRlíTÔ >*õ_jQ%4Ýð@wâöSg¶[ÉlëyÞ¦«J"5È~¶DƒŒŠ#*zÑŽCÊ+‚T•¤ô&&>Øgѯ +Î0ü@ôÆ‹¤ AD}íêê>ý÷Jó•‹¾›)Ñ£œˆ„ C±Úmñ¼Iœ¬8~áM¢øà-(ØJ®ƒD T&t±¸›­Z`Œ2 íÖ(Ñæë¾úuLÈR!'U?["DUÑ܉yu{aƒ'½Ê%²îø…Ê„@[´ÓH!p¼Z±@ Y,¤ÊØÍ”ªŒqNÚ´ÝfJSW™Eûó3#Û6òX#"<–®%ŠŠ6˚ןŽïÈCï <²ðÈYEEó.ËHëí•]wûD–‘TGw-RZT@ÔÏôÃòì/•„…ÜQº™×õDœžy<ãyáGA3’æxï[’ ˆ’Í˧ÕñBF¢Rcìg«Ö£H†eQ*b ?&""‰…œS ‰[‰ŠâãyÖ£½-?‰W¨:ÒMÇ$‡Ë¼?™MŸgE¡D&­½,‡ovÁ:ËdTˆœHßÓÍ”èQuÄTYp— ÔðìœÉ„(“Ô‹¢êèðÔ—tW Q&ÝIlt¶ D$¥Õ½ˆk3î,pBV©Cö³%:dPQÆK¨ÆqõJ%¢LÞ3Î$¢À×ÊY£]žP %Ej‘ýl݈‘Q.´ qâµ#J †ÊHAEŸZ,‰ù¦;¢NØ‘µuô l"k“÷JdÒ mÓh¯z1ÿf=¼¾?#Ñ #úÙ# ¨Þ™€\-L+<‘ÅI*Qx|ðJ }¡-6S,ðD'ŸRd Q©;øwfo«AE®û~¶dÝGáÑ~ËÔ 3^î¢ Y›¼áI¼ uß!ë„»™2Ï4}\_ŸcTñúW&Å-;ýõ EÈJ!§R?[²ì£Î`;@›y`AãèíQ’ÈBÄêeÔ¼S}Áº¼è›RÑ ©^ö³¥æ’ZéEÅX‡’= ”ÈŠfµ’z‰V 3ºXšå ?dD! ç HÌ`©8M…FÌ“] ‚pç˜ý6+Å =\@¢Ÿ-Qh}°ï’´«yg(DŒ½¤×¢ëFPGQÂ<øZ½GºQPé º™ºñQµ)°.\™¦nùÝᙈ€êòx7[¥ôšÄQxï ÈÕvÒáyš+Qƒ, rÅö³¥+6i­^ð<ØN=ìŸÏ;Ê‚Èr,Ç4æ18Àe0_í2%³¹tÕ¨|¶_=.=ÈÊÐ1©uCkvÉ3¢ŽRWígKĨ¢B°ß©™šÏ)"”% ­®€½ë¨À\F®Ì¦€,Yk½”Õ÷¶ Qû´ÔGÄÖáà…v‰‰ˆ*)·t^Q§µiÜögDGÕ“ &R-—Þ+ê´&³í8ê [ÓóF®@Š¢”{Ͱ\rÄUó8ãÎ wf[a%;I}¥lÛÇŽh¶Q¡EÊ|л?oR@$*î½ßJ²ª½$;å­hGG6‚u²ôJѶŸ­ZIÒªùMH†'Cù‚ëˆüzaÆ^¶Ôo%©Ö÷1¸©Á%{D"æz]Tˆh†œì=¬ÜðoÕÛ(°beÓ5·±ù½9J€²Kõ¶›)Qo£V‹*òÙ}µëRü”‚Ÿ¬çRb‹Z­9 »`k£­Ñ;Ï ðÉz®¿Òc¹<{™G}ù6Cà’øeP#,}E7S¢áD©Ýc¸‰ ío±L¦€>YÎýÂ]DyõÁæ¯Çøñ<äX€Q`é-º™ª Å¢¼ŠNB¬@GâûC&5Iå´êd¨pQ«E9k˜LY˜ß;|½SŸ¬ç~¡ÞF}Õ ©‹°óÆ/Âa²Kõ¶Ÿ-‰¤Öb2 |­ÄbQt«5‘Ä[Óà6óÁ°ÌÞ yDßõÍvÏÂò ½Z¹Oìiq~Ç£b‘g)ìö³%N!ʸ(D Õ6ÏÌ…ñd©÷  åWhp‡»³ÅuÅ2"Ñèô³Uk:IÅlXqO÷k“0#-ýB7S¢íF%Ååð„í­×½¾Ây¢Ú{/î&ùõÁŠ–öèO)˜‰–N¡Ÿ­BÜR.êËE 6ˆüóˆÜ[ª»Q˵w×fU[TÍ´‡¡õ½—!Z È ò£°ûÖŽpiQG>ølM8' ¹”€ûÙ 8 ¾æ/&TÔbl¼á‡¢¡, ß‘ ¨Ñ¢>פ!øyk•€Žè¸€ûÙºQ€£F‹S ;">·z%:¢ãršô³%jFÔ.P €•µÚ‰ÞAéPÖ7îÅå(ÿ¢yØi£ÙÖôr]”!PG$bŠËýl#HÉ/4ØÆaôxªàCYn¾Wu’°kR¯µ;²ÇiÛ$ëîí ½!µÍ™½ÈTüÅ@t´%Þ-ˆÄ(Å?|Nl ˜•…ä'º)!1fl25È—x¸4¦*A*_²m‰ßŠ‚6ZMÌ౯Ï0KDï ]½pt•´è‡_Õ~¼»›A%½šBw7S"tGYGÉÙlq8\‹*>‘¾¯5p|\_ŸJwÔ¢mvM¼‚Õvž‘³KÙVÖ«©t÷³u£tG-úÁ>e§sJéÜÊz5•î~¶ ¥; Û~(Á˜ê`ýñ>¾œL¤ï/äè(›³Ye®Î¨„Z‰¨L9ºŸ­BŽŽSÓ´nÛ¹“¹Ôml}¡êRwÒ§K5:jÏ~:΄áØýÐc†k*OS:ŒÒ3¤ÃnÅvkBײ<}¡´tHáM5ƹ‚Ñ¿¨b¢,ÓÃt2$ŠtÔŸ!ÌÐìá)²h-kÔ_ø—¨£Ÿ ºÊ½íÂÃTW¦ég«V¤“flSa¡Be± OÓ+]™þ¥Ÿ­Bj ú3)ì¾+¬!l-iÔeìi‡¥)¦°—ÿl¼i¢ßâ‘Ek ¿•žëR±£ÐŒÎIhY´M~=pEòM»›)q.Q³Æ!lmž|VáWÖµé]¢fmz#çl³5{»Ñ~e]Û§A>¨„f XÎX!”X·%šv;â\¢Zmr‚wÌŽé)'d&Šöúu˜Q+~|z`éêY‰ Mùº—¥Z½Ž3xçΙùŒ,”W‰Í ÕÍTáV¢^椎Ò¸c¾6š€¾DÒ¾°“ÄüpôŒ%ë—(Jdh.ÿ~¶ ;ÊÕ˜.޶pö)dK$mßå#èŠ_Ï9r?•;R“¦ýàUVì9˜DÌJÃD÷ögÛ0·W±DP¢mµ·}dH΋^`e­š*w/K¢qGEE¦#©›:wuOÊ(LTï{Ç‘dhœ4XíMã¨ñÆ3%¯²RM»›©‰;ªÐh¦…”äÙ/ó«¬Rsv1£+%IÙ8²0!ð°Þ =„b°,w¡oGúÁ~fhO¼Lé+º•šúv?[…ZÕlZ@À5ìWG÷‚‚eÁ»d^QÌ6w0ˆ„e¶ØT–åî§þ“”e‹ñft…Aƒ(‚(U">Ót3% jÔ–¯ žpßœEØ+ËØ÷”+)ËoÇ,qàŽ¯¬JÔgêÖýl•9TV–ñþ_ÍW½n«²úLݺŸ-á\Q¥F!ÄŒ"˜ájü[/Q² ù约3(Ë(‡ÀqÞ¶V½‚¯âUY}¦nÝÏV}ŒáM¦öMõj±xÇVe_"e!\Gi¹}úÓO?=Åææ¿ fYÑ+vL‘Ÿ)\÷³%ÂuÔ©½ÚÉîv²q8³Ô‰–ýô\I[6µ¹½"dûvPƒþF¸™èÏ$nýl‰ruê;<á;íÑxmˆ28Ѳ/ÓE§(.[úÆúÀÐ3ëÑ„œ‰þLßÕÍ”(×Q§¶ôœBoïN®b HÙ_8Å(-ã¸ÀD¸¶O^ð­HNäg:Å~¶DP‰ú Z ®î ¼[÷Dc¹×Ä“jm;eûìH8–Ã/gQ&'Ê6½b?[õQ‘—Ž“"3]à>òõW|/©ä_øÄ¨Z›Ží3Ùôt|P%r"lÓ%v3¥Šxœò¶*üR&Û#yi¼]‚|Ôò\mÏy©ZEÜé R$ë~ìTPÈaÉ_˜°E»8_¶6/IÄîöC†Ð¾ƒ*ÿö% xaÂ~¶ÄÙF­2ëÀá³x†PPÁaÖó/ùþ#œ„ ";Ê~yÙ“Åu»3¼ÌùDˆ§~ßÏ–8Ú(Ø£Η­Vm̾'4Ì¢~ái›—ÂÄŠ";°øÙC»j–+ƒ>â)á÷³U+mIdÇæ;B“°Ö~‘Gæ|¢ÃSÁïfª: ôzœ…1…¤½³Ã%V!†¢èßËìQ ÷Þ`åi»˜žP>QËÉ»™ÒQH²:Δ,Öúsµ“·ì¶+\O¥w8‚ª†rñÉçÚB£:[Òâí—Ú¶Í_( ½þzºt%ŠèÞèæòeÅxAf§8ßÅŒhóQ‰w)/£=ùäÉ2 µþÞkD§G6ž~5ZD«ô.‹ìç»™2oÕ‚¯Ou>*è¶ÐGœ²‚Lì;†Â»¬²;Mîf«Ðç£]dwW¿^×Ú ÌŠ}¦Ž '¹)JTr¦îçjF_¡À@ ¿Tþ£6làdeBi]Æw"ßSøïfªÐý£Êó+;Ðáy‰YÁ3 (E¼¨à›«iÎǪu¨é+Ì*¿î)ÀúAw7åe>·^§R ½¬ÍÓÛô²$'*ø¦¸´wa÷[Z®uzãjÁƒY忯4H²;Ìôƒ_ #P/ ót7 …Ýé°ƒAGvÌ+è.«ð=íT'V‚Toþd:ùìz=?é(0Ëù÷â}’×qNán[™“ç$¶Ë<×}?[Õ‰•w©¯ -1 B•Šœ_®û ÕÿŸá©}Áö²šïŸùœ<ßuŸ´vsÙ¼Ç]V&^&œyœÈñÔñ{Y?ˆö^l‰×°žž€*Ùaÿ Ž…v(­§Me¸«ðMpœˆñyýlÕŠUÚ¼<‡º­õ¶·£ PN”x†º 4/ ö¨8ÇWoZð=õo%ü$²Û&°ïèHYTqœˆðy}ìT‡T‚Po“àÊ?ZŠGÿ'XO´ü{•*i릶73“9¨qð]ð´öùö,×ù|‘ß1ýL‰nUz›_m‘úø|™uü—juuSÚ=ns’5ûJ ³òN;—%‘¢>o~êŠ;¬uOáYÂÿ‚6M[.?2]眊îNÁ¾›©<Iž·¸Ú+±†Õ/«ÄÊ$áSŸ a–ÔqHËuƒ¶ÛPÿW)²;û~¶$ŠòüÕ‹sæ0L,bQ®™%ü/û(©›ïº²¿ùddQÀH‘Ý)Ø÷³U¿ ú¼sí»÷b‡K¾—`3kø_HöAU7Æ;g›»š=P)Ê;%ûn¦ É>NzÃšÑ Š\ÃÁhH®µˆ_:Ú(УÜ犒; 2ÿ¥ÙGUÝäxx_ª§Î.˜S”wjöýle%îÁ+Dæë*›à“£ŒND+†óZ¡ªèü>¯‹¾uI}lj‘Žõr£ B³>Oe¿—%Ñõ£Š.8ËÕÆÀ;BHU”þ[‡œ•w£“Åy×û¬8hVç©ë÷³%9 Q¨Ig¿"‡Éˆ0U«¾@AÕÇæßœ™ð— A³îO`ÐÉPužèà8Ñ |XGjMÍá \%}óp3:î·©ì­÷ šUâ‚n¦ \áý¬FYÚ0 žï óT€ðr—ãÎvZ½twÅAIܽŸ‘‚Ê3/wÙÏ–@Šˆ$ )ïœÜ-šç‰¿zflq!Îtéú;K0hqÇ|ŒW{i•Âè{YGÁ„9žÏϧ-g†_8ˆp®h}PžýìX”ŠèûÙªaE ·î{ÖwäÖ˜8¥ú«n¦ªJLàˆÒŠc}¾PMQä™ÙÅ=PHšÿƒÌÑýxz¯q%•™ Ðeu3U¸¬ˆp”h§Ÿ^vÖrTÌ3#†Ò-D|€ Ê¥Úe£:UÐLA þ¹óÉ¢¨úCš˜4´‰ÍØ?cHá ½, PˆøÀrŸ†Ûó{'è‚i b¸w Qõ7MØ<Ù›¨^pÈ :ªeÅ„lœµ®g »2HA ÔûÙ*\Bd 8]´CI³ÆOwˆŒ3?P wB'=×d¡ÃêZíùì£It'=¨bñ¨‚m;$¯x¬¢ž‘Œ~I;"@ľ¸Ü6y:§¬R˜iG?[Õñ¦7p¼ U§x쪮àSH‰;ÝÀ1ö/løÅ™{ ñ¯~ŽTm^w¿ÚÚSŠ W&rAâÑÍ” H8Ì-M ŸÎÒï˜$ä3S{Ι¨í\ ûrIÔ,3¸ òèfª¬ÉXâAž=øù[?Ǧ43  N†ªóKoØödXÓ^Î2²§WE3¹'/.á‡ë¡ÎM›ƒÚ‚afvAâÑÇN¡òE¾as`‚Whp]5QÀÐÄ@ò.ʵ€Äã‡eàÚߦa`œ¾ ¼ö½}çð3šZvt3%+° “’—…úÚâIYlþxÁŽ$PF3{ÇÄù*š¶š¡·¸^–ÄAE´"onÃmÓà°)¥ÍôãÉ&áª1Úý×ýø^qUAdÝL ëˆdÃB~Sí7§O'­"¯ÐÆLAÊDû‘/a;èË¥¥ïå#³ÀÔ›yOJû\<„)`W°d7S9jJôãÁ o§ƒCÅòaÄHîqH¶_®#iÕó–whÐAö±SŸæzƒ¨ à‰w»îš§û„ ù GRaìbåÕïSóàl±XÝL3è%ûÙR’„I{Ö¶låVIuàXY£lÒ,\g#%‰ÐÃÄã–öœf¦ùYv…-\äåƒ#§°8ßo̲Ù 8”áyF/S‚7Þ`†¹`o[m— 0QW-À#Ú½BŽÄp¤k§uØR0ãŒ(è;A/r t…š±½´§gš^ çŒ:ªÄ}u¬ÐÃãÕwÝ^ Ú•¼XðIs?[6"Æ@“`ômã°x>ªìYPÇ=ØøÁ&™E cD¿úQh± ræ^–ªcadø¹°ƒðÚÒvΰãžm$ü`^« Î ×Áq…ÅQ2w3U…‘d ítpó•8p8ÓŽÛˆôÁxÄŽ³N¶ÂK ÍýF´s3!Réc'p{”ùàªkQÐÌÏå±²ÀXp¬l¡3½ry%ÇÃp(Û/ð®:Ë yl¯¤¦3‘˜“4WhO<œŸÞN2aÁ+3ÝLUGφÁѳ“koº";¡ËŠjžþÖ¤‹³MÊ„>1ÙÉJk3Ò#88"cø^†E8ôàí7ûÎfÞ¯\YÒ5šù¨[@:è´Ù(âžßƒ.QypÄ>ÄE½, .ŠpÈœmÛ¸l»™®Œ¿ÀÊ™ÝûÚÈtl>M#ÉI›3<8¤ 8câ¢n–’ÏðjQ¬—öÏõuÝPA•"÷±í¹Å!“Gxl3§°8£! $ÝLU'âÞ ’«^ñV÷'TÎÜY(g^Ûiq€ßªØy[að>V÷‰dÆò™ebÖÝæ%SH9ÓrŸ~¶ªãmòà$%B´bª³gáÓ™•î%bs/v±½›æ•Ü™(ŸÎ(è©û½MÒ ˜¯w= ›ßŠ—Ð¾^}óÁR5>1!Ó)AÏyˆ‡º™7aÉTÖ÷gç8Þ3slF_PëHpp”ieÏC“y¡P·~¨—¥ k¼Tç1g)@³Þ¶ ÙÄmLÀ¯ô­€Ö•òÙ4=ó:8’¼Ý“m?Œi•F'býfJ@Èv·6Qñ®ÆÕ“EÈè‚úÙ*\P„K6©VtÂO~º2ÃhP ¶£ÐŽÞ¾1nÃuä2ºZÛ麞-:ú¬Ïãsfºd¼©åfÍ@‹Ñ.v@ÍygO[¯"«ÂQ°ÊÙäù…øŒ³žAlBL(µÝ<ôphPprÁPt¡m%÷oQ›4W·‡ã¹7GΨŽFL ç'ÞU€y_·l;¡(ûH-[ý ÿè¤<ÃtÁUÄðÝL©hŸ¸–åPÍá`¶•H^eü̾îÅÖÈ™lC‹¶X‹ß|Y°zaQ„XÝLMÓàMwM±öÓ ¡d¨ÎŸ#Ú2_±m<Íb’wy)üõìŠHÊ&%î@(7?›nD´¨YW3ÕéÇw°…Ô˜ñt䬵¾¾ ]‘E™ï7¯ç¢¾R}åU$]ýl¤+.½Ños4uœžhXß/ãľJÔÁŽV2 Ïëh¥–$öõ"]F=1 ïÎq9T©ȼŠë¥—%ñÂl™ Æfí‰ëh¥ÔdöõE¹A@RHpíé[n,EB­¸Éô²$Ån¡åÛˆ.‡Ö{mc¿©>öîŠ@Êëò–ƒÁï)”b€Œ¬»zYÔÁ–9Vª:ï‚(e™}}Aº"ò¢;( - bmdQ™YW?[õ™ÊÛBEËŒ¹]QdúõëŠ8Êð¿—xX3ïø_ 2²"ìêgK†!³-|<Ͷ¸®,Õá_/Úõ†¤Ìw™b\Ä/¬°}ÆV¤] íŠlëÁ~¯HrÆÕÏuj @ä_—]m›€[æPÞ|—²ûĬ(ûw³”"tÔ–ºxxÕœÆì‰¡·Ól+­ ÓB' µ‚ȾbYÙ´›7 gëü<¥˜ñ¾p-±n¦ÄYüe‰“7þÚXðvy-DFMstÏux×ÿ” ß±ˆ­lÛ^Gê]Óæ!¦$´EwÚÉPu(òmáPäì>döÖgRJ ôëš+ ²"k²pCùŸqFºþE_ÚÍTu(2`+›ˆ-ܵàiœ|o’J%[/Oú›Œ=µ‘Zºn{Ið_`½h#"0GZe´%²#^÷è Š ‚L´|ó)ÈȘpzq‚O»j8 è/Š´›)qŽW™,×#n!ðª~ 3­/œcÀL ¢# $W×ë…ù+‰¢oìeIj¢hŠ4e·?…1ðb\= ºj!ê\eL¡ç€mºåù®¨Mö²T­ ˆ {4ÔŽu΋ò öÏÌ%þ°%Û&=ú«;¼Òûz%,å%ÔÀRƒ÷@Q\/䊜¿›©Â=FÀesqéHìšIr~%ÿ‚½8¿…å†çW¨ªÍÞ`*œäæâN´>áü ò÷°"27##›7AxˆPæ/PÎÇqÆËž÷§2öο\ã_y¾ºõÂÈ”t3%p-¢´§.Ö`¿ª§2ôØöâø 9W¶(·?úµÌê3!ãºëe)s4mí ã¡m†Oi¼8~¸N.´û@&xê…¬‘Éõ²T ü ‡Fy¥Mâ"EþÑÝc³¶o¸Ðn JŒðw_ÄfýlØ,B2L˜‰‰Q3îÕvÂò¤å¹í¬+Ò¨ÇË8¡ŒdÛjƒsm‰NûµŸÙè”X‘uõ³%¬+-œØ.`X¼j¤¨9ÈôËÇ÷¸òç«;°)Kºì>Œq{®V½"÷êf)mÅ@¥‹Qu2Ÿg^tr™4AŠcÄSLE½Aæ`÷.0‘)dõ§Ë£ï]E•@¦WTúÙ*$üH¹sí¸mæ+ÃRQ?“0¦3Ö>o*<ÁK•u: –MÚ«!íìÞªª_È”‹x¬Ÿ­‚|EÐL¾°Í¯]õD·*µÃnJL¸˜¨u1'²äŸ/csSE=Ä[ÁÄ—P-°/Ë‹š»Ãm§Ãq'hCæckÝLUmßYÎÙN ɇ‰¿W•BdÞvK×2ÿ2"¶âÆëæg=«¬ê2#£ïg«XšqÙ™²<ñ:H› ¬â=)PYÞV+˧Á°0ÈL,HÒ n/¾˜¹rËBì»Óࢦ!c2òµ^–„¯EšfúÚ1`ÚK`£R©{ȼí6ÎìýnûP~E“+dLæ5½L _‹8Íû3¶µ±œ×%³Eу ·/JÜšyà22™.*2(£ ïe©pਡd݃0 ¼ŒW‹s»'l‰Y`agŽ<”å}‰¹A(}l/KÕQÝw˜†“ºØëÛW¿î\ÑyÛ=]KüËüÖÖ\àÂw¥EÊÈX¾ÐÏVA×"K3IO½ gY®:Úör‚‘¡×ÎÁÎí;tUR, ˜Ì«rº™š­†í:ZÄx%²Ž²§hdnæ,›?h~#3úmvRž¹ÜUP4zް GfW2 ëD%NÊ 2P£¿ìfJüeDj–¨ryµQØÆU% »àdóéA˜M?k‚\¿íêß‹²Ae¬GèeI[$j8z‹ühñf?¹BA¨˜¨·àÈ×ÎÏdWÛ>YT-¢0ûÕ«Ò±¹°i¼’³X| ¸Œœ­Ÿ­ên k~H—Sfýô»s!Cboió²…HÃÌŽèÒßÖ€÷—)Š„˜µõ³U8Ö@ÖÀ|¢µQXKe ¾1·™üãy‰Ð ýì@.À3£iÛÂ%>,Þ‘I«"`cÛÇŽ¸ÔáìÂÜ^x“Ùîk©ƒ€ºk¼rðëÕ©9Ð3D<,¸cØèl#—(a#šëfJÐ\$qèÖ6ÛÂj£0y“[­dZwëS3@åå´6'CaG ²Îu3%t.²8ÏrZB‹Q W(j¯û‚ÎE„†í{&±H‘÷/Õ ³Ñiw3U 4‡på/ÖŠ^¡(UÈÄîÒ; òá˜å;Ðøš?êõ‰Ÿ¼õ²Tp·HÙÌÁµGnq™ ¦XªRP ÷bnolÌPY[ZøHÛâ”|FäÖÁˆ·È×À= ´·‡¼:I«„Áù¦ãl‰Šá$ìÈîŽÛuYK 28#qëfJäæÀ×ÌïµQ\mª~a[U¥ܽÛKT gaWJ¶8ÞJmA"gÜq»™*ôͨfZ^³B4Å0xá *ˆâY)Du§á ŠuÙÙï[ê 2r£ãëe©:‹ûæp2f„ƒbtQ¨ ð®Ö “BhaÝÒV'7–ö·¿¾,\‹lÒ'â-L Î2¢¶R÷Å+‰´$A`}j?[ŒÐx!¶1Þ鵊ò†Ì½./$)¶Ϋ³ƒ‰‡q=5OmÁ®ÏÙè<›%xF»ô Î3•/¤ú†Ëw2ôžL‘`&ÆhÔñ ”8Z¿gœ§³ëÄWüŒwïS í»£-Ù/"°4‚³@íi¯oóvAEÍF†š>7¶Ó=ÄuqÑ;f4A¤e{eCÖÓK™E‘TVúØ‘"pH¨~«ÏÜÍ¥O)ÖTYyH_â°òÁʈÃr!h…àE¯Šêf« C>¼fÞRéÃÏ£îó'»Ch=FÆ…ÝLrx Š6‡'À¸å|Þå¬Õ <¾0c$–C·÷ҾúN)šÈ°”±—%qÆâ,ÓnóÌVª/„'úX>O ¼Ÿe€Gg‡YW3&-šH|ØÏ–ðÃH ½\´™°Áj†Å/b€|˜Wƒ¿ÑõšFZ7‘@ b/K#.Äf(j‹µ8ü@s®¿ÈD1'³od0²;ÛøMCžaz?‡\5‘éóü^–êÃÌ/臙·‰cÀ¿(ÀHœð &pg™’Õj Úô X´jBáÝ`?[… ЀʆYÑÆaóÈU 02Ö|&Ò³CÿTçð‚‘ÞavBÓf+)´¶">F[ÝL Œ(‡ ù¶‘Y=|Õ Á…ר_='/Ý.ó»‡sšÞ\Q5‘á`?[B# 4‡iïÙæº *Áȼ°X)-$&—Ïf`[ã»+¶~kp®œÆGÙÍ”¸ÌÈ‘Háº'ŒÂäçšs†ðBfRïyØÒˆ€eÚ^ý¼ô:¢„ølÿÞ½¶]­ìZ.E‚éVûÙªN6^èG›¹ÃάâÖ AŠüœQÔE}èèÎoíÏ ÎY šà hÛLe[=­­^ȪŒn¦ ÒøÆ³áx'¯=Ð Ä_”1Asƒã#78?µf"SC ÝÝL‰G|½TmhñÄ _Šú‹Œ } øöõ:˜  îô‰†ðð©µb"sC:Ón¦ åR”£1¶Û‘w†CYP-ÝtD—–0òŸÅÜËäíØsY‡àÍ[7#ÎEoÏÕ¹Ò•æZ …’ô€ýl<3ÒKdP'cYˤÖ+ƒŠ¥B8¿à™:"0˜H›Í,¯œ’‚ “$šýlUg­ÂDT0Ñ7›¾ O\TwdÌYs0—ŠlÐ<ãˆËæçë"ª\“!øà±›©êõ;eÄ!ê•3ÄÂS’òPÞ¡òåg#ó3 ¸¢YÐ6Ž‹onZ¹ ½l'CBé"“õ8-ümO{øÕYZç!ÜÎGr¿êƒ]›{‡i–6òžú·"-ÍàÆ¢Ž^–„ÔE0ál¶gjÏ¿3cÔ*Ìîî½`bi8ÊzòðeåÄEi†ð6’º~¶ ©3 ›¶zÂ[·;%)iG?é®ßToÑÂTGžœ ëÉ[Y«j‹Di{?Lœ¶¯žoðœ7¤<^ù=Zÿë»Òƾ`Rl‘ 2¾‚Šü¡;Ö@͵ýîñlK$2diE/Kõî7†ˆCÜ‹¥m„¯ë¥¥ØB0ãT1r?s¦ÖØÑ‚t`Y)‘P4H¨ØÍTÁ#BÄîÓ²Ö6 »/0-·È˜ñéj#ÑC–ÇÚ.¹¢(’êÇm¾›)·#|°ì†WÏÓªZn‘éáU]î3†^çá@õÌVÖÖ´DBˆm7Sâh#´ôÔ.;µ‰Ð|ÁÄ·Rm!ðÐQ^€òï´¾L~W%/ ™ŸýjËð'ïߦ• òCô²$81ÂC rÌúå¼Zæ5 É"36¹4b½}>¾@Šú¡@“7w‚ZÑïåz á‚üÝL@1âC?¿=cÿ^¼F¯(ÞHˆ±rªŽ #ÎÃñÜÑÛ<áq5¯Ð‚‹ŒüÈ ûÙ*ÜêÄùíɺ\ͤp#ñ×GD»5˜PûÎâðZê(úÑ£v3%5ÀAt¡]lÀÚÏ~JJ+2 ^CYÎŽTïÁkb/Gx•Hä2 !d†ýl Ù‹­F«m ™BkI†°¾‚â\d/²7(¼›öXÛ Î-­£È|ŽRq?[Ùg&Ї,ió bòŽKEQF&}_p½HÞ°ƒ{Çûá¦ED¦säzýl1R<œÑž¨÷ؽß«’ }·X/‘7t\‘qŒÖÇ–wlI D¦st‡ÝLX/R<ÒŸØB‡ëÎPN‘(ß‹éEðf(Î[ØÞõle§%çˆõúÙ²9Èb\£¥ô×ÇZO‘QZ ®f®7©Nµ{~ÁØvÉ‚ž?FH½m¥³š~x4­”Èü¯›)‘G£Š#jg~Û(¯¨š‹,˜º"÷ŽMc Fœ—bU/Þ{ÞÄûl ÏÓ‘öðh’ª•ÊIûÙ*j*";´¼iY¬-‡YJ…ÐÅÊó&–÷`7yhãó°Rê"„÷Ñóö³U`ÇÄæp‹'¶E…ÀÃ{V˜xÞãÙê§uýª6©ŒæÇšŠ~¶ ZØ Îrã² ÄàURf‘øáå‚3Â3·9‚†mÖÖ—µ×E}DÆ|„ýli ›á öBj½]'ž¥ÞB(Ü‹¹E0†FpÞ†t¹ÚiiD‚gté½, u‹Œ rÙHõÔêÔ\.K%‚á.Ëo×?]>0r±Çó|(>øD`-zÈ…—7ìgk²ýí~¼‡PÓ¢èb„‘ãY!Dû`6Ð-XÇ¥ØUeDF}d„ÝLŒ0Aœl¥Zo[ å a†/ï)ÂlhÀ›nÖMki„>Ù»ÙH‘ yø'¿—óy§rQi‘±¡+¦A¤…òÏUNyÝèQ–_܇#ØÞ¼î¹mk … AV_t3%ÙE ‡ÈgOÆvËÈ•RTc]¼Í2í3Ç=8Ûùìɨ‰»™*¶€È QÀ‰Þ­‹É+/½‘Z a‹_оˆä¼ Œ”öÏš«#2³#ìëd¨`}‘ìá5¦úrΧç@Rh‘á_‘QÌ4ÎøÜæ­(Öùª|êˆLìè1»™*4éöÌc²ßV?\ÕYdø÷*«ˆ<îÁNc#U2ê'Z!ÈŽeÝL‰Ç|#{&íÙé`>0Ë©µÈBàß…ú>®/!‹ÃÉçÉâ%à¤Á›Õ¦ºÁuä|½, æ‹PïÁb‰Í^§5¼¢¨—+,„ûU>k?26̨?ž Š¢ˆÌá¸u3%/ò:ÛOôhƒ°y9_Q]‘™}Tàuè.…ŠZãÕ0dÇáQûêùȰ3Ï\®¼É>8Ö¢Å|l ©5±Nãå&‚gŸk›Eþñ‹Ò‰Lùø„ÝL~8Â@-| # .´#ÓÂ{8˜ðɉmM8†±ñsjá„">–\ô³U8âwhq×%LÎ+'_Qƒ!Äð#ÃC¨¿ `²¢dÏv¥t"s>f ÝL Œ<Ð<±cÃì‡{S †ðÂk,‹ÓÙßùÙ)|§ÍJbM­›È„l°›)ñÄâ<ÀÉ8}ž¯³ÙZ‚‘aa!G^®8Â;›V— Ò"¶ÂÍ‚÷¼ž£“%qÄ"1šYº7{·¢¸B@á=Là‡Ñþf´ØAàË$úÙ*°`€€8w=Q“ŸÙ_¬¨›NxO#¸3ç5îh¿?nÞÖª¨u¸G,ØÏVÁ´‰6ެ¯›Çç¹êT98á FtgžËº«˜/k¦üúg-vÈx`°§-ó‰§fÙ/…{X(ì[Êò¬ŠÎ2ÂBã"ÖŽ qëàmnŠ‹}È ùòRßÙLO¼zñ!/Ê!„ï v3%u‘ÝY&Ø&Ôá0Ò5Je…ð½húé*3mŽžüÞŸÃa¡ÔB(‘cE?[Ë{'w8=rL§k#ZW!tï –iÛƒWÐ(]ÍA´B€Q^7SɋܛòÀP¡ ñAç(Uí}ò"jCC¿Ñ”@~–9h)D¦qäxÝLÎ2R;tuXdø¼Ê0—U(Ø{yÌHÚÌ3-Ø`7;¤§]D£—ëg«àxÛXÔ±XiÀÄZ ©®²ç¶Óu¬ ¼Aó‰ãí󴵚0@•Zê#”’%ö³U ·Ú< ¸ùv–Gµ ÆQ÷=fÎRk=„0–»=ÛÐ%‚f?i·ÓˆlÞ*N«(„²‘Ïõ³%‘ÆA<;˜LÓS<Ë5BìîK0Ãa噾l^DU…™ ½õ³UHžQà´$jr…‘pá(eˆzOß" CuÏÌíhXI¬Š: htžÝLô-²6‹ ¨",vãËBç)%Âãîé[Bdž*!÷n¯wò¦ñ¹š"b4V`t2„»ÜÓ Þ­3Õ"8V–ƒÏÈáä3¶˜´ªºDì8H«í±ør,3ýªåŒãǺ·\ieŠÙ´I¹î³_œXUZÄjŒË¯ö³uÃ#î³’ ‚öŵ­¡ H”ØËR±Dnˆ£¯>ϯ¦ÓZ!hñë³8ë|]ýå·VkEæÜPº™È¡yvfõxd¯³Z ¡‹>žEMEB~¯«r‹ÚˆŒ‰»™’T$ÒCä·'·þñøäµmZe‘ã=NLÈÏæÕ¾P:N–Ûke„PA–Tt3¥¾*áË3Q¥ÞB*^8PYdÄÈ„,òC$dÜ®é$Ë«P«€~‘Ë¡ÖD%a÷ »¨ vÇÑÏâJÀìªgæ I½ÙÞP Nc¯>¤›+¬Z³!¸ð 8ñV wcó† w˜ªÒ">²Án¦ 4Q M[SøŽý¨m-|±ÁˆïÐZl£VLlH¥…>¯(ìeJzÕn¦„ FhIë%ð\!DQ·!´ð 6øÝ{¥_³Ï*)¶ÈˆšO'CB#Ä!kׯÅÛNI͆ BÍG®W)ø°[ƒH¤DŽÃ1s…µ kur#µ±^ãKä¡ *2žÊ8\€¯ (28$rìg«@Ž0úÉl:ØKÍÅAÞÇ„ nèHÚ\¢GÅZ?¡ØÞµŸ­Â½F¾ˆV ?ŒÛâUÕ‘A¾¼kÄ‚Èq¹>ÆùðäN (Ò½ö³%81ÂÃ;߃ ŒW1©Tc_¼´:œ°TüŽÝ_ìjs… A`ô³%P1"Dó²Í#ð²ƒÇëEMFÆŒn§øÕà*ivÀÙ+CÎËו™ ’*v3U@Å‘#|êö¬T1‹ºŒ eGÅßÂÛ¹ü¾†éÙŠ­€‘ڮ߳•ÑŒÏFxZp! ‘~³›©ÂmFÔˆÜëC-£äm6¹x#ÓÈ{öñ åSç̺Nêh½… DVjt3U°ÇH=Þ´`8|g’Ú ¡‘/öé íÊö÷Û;¶Ãõ­¹‚Èl£Ÿ­‚=ÒhžsZy.½E ¾‹ÒŒL#ÝvºG5áAHƒì¬Ù¦‘c)¨È‘è±—%q™‘ ¢Í!ê›ðü¤×Z™!üðÞe&X‡“ÐH¥ìF ¶’–r åy$ÝL)LÜÏ\æì\Ý2[ïE•k3¤>eÌir÷ˆOÈå/& ‡+m+øÀu—®6å’ A~¬Õèe©@… >Ø6£2¬¼[£¨ÝxX¡B/Õˆ0Ϝ܈¡àè SÅ…ð>’Ân¦ P±àƒ÷»Cóy§•™ú ŒX4ãvµgŽ'¦áÝWË‚Nž˜ÖÚ‹Lú¨e÷³UxΈªl vƒa¹:Ùç2†Ï #:óp¶ïxÞP”[dˆGü×Ï–È£A µ)e9:7I6øÖÊ ÑK] ØÐ<ï°“ µ¬ŒkR+7-ž÷*ˆ¨c'Z›IÔR Át½ýlYšk‰¥}½ºUlh‰‘UÚ@L¬¿ÖªŒ ¿ÀˆõÙ4=O^°n¸X&!¥‚ÉûÙ*@bĆ8ÉÝ|‡C¬U,:ŸÛ?!ÌÞ‹'»«yr#´j6Eá$9iQl‘‘!ac7S…ó}ã†˜Š§ª£_ÿ£EÂ]IBu¿Ú>Äß÷áö‰Höídp©¥Šé€ûÙ*]$r8S:1©ks…Z·‘©Ý‹ÑEŽf ñ3/u§ü«eÂÚõ³%Ê™„¶ðݶ]B“’Œ î¾(Àˆ$ –g†™Çu’Tª(¶±þ¢›©Á^¾¸è5N[ã Fa¤ÔrŒ¬ƒÞ ʉ¥¡hÀsãyú%ÒEEâm”º™*œfÄr^“Ù¶„6ÇÕ3Yê1Ý]êï‚{ö“ Ò¤¾->Û´ŠB8]bGS‘ ÂÔΖ9§ç.\$n8%®Ÿm´vsŠ2Éq¨fK\ðÅ+ÛZRÂ~¶F(ø`eűsï_‘Ë127,œ:ŘÄò|^MØ•/× á}ä„ÝL ) \ðÁëh¬¹Éa16k7¥CØá=ÏKÄ͈cA‹Ë °à{U!PŽ9\7S…¯ŽðŽ'©A뎫›nUA_…ó¼X"7s^\Ró^èÑ“ ”È‘åõ±Sp¼Híp†ú´gŸ\ƒ•ª ¡z >"­°àÃÖ$¢Ì‡î¯{°#ó4¯×> %@)ˆbÇ ¬£­Á¼ µn–z¥ê›ò|aÄæNÛk1¦aH·¨ÁHˆðz3o籩Òedg>й߂ÉvvEíDÆz‚ýl‰?øgÐÿ² ƒçŠE!† Â[u;3»ocßý BR@‘±ýi/KÙ&ô‡T  Á€j½¢#ÃAnñÌ¿zÒv9È2-Tc#R[í»oW³c˜\Œë5jOí1B>TdâL)Úàxµ„ÔO$Aìg«@ˆâ´7.H^L D™mQŒ‘¡b±oûiïˆù¬`ÂR^û즩xc )¡È( ±Ÿ­"Fd¨½ÁÉà¸8!¢–cd¬ø¢ˆ‘ó!ËåلἕaQD‘Y Ýh?[º[%hè}nñÜž…ÂÝözåá—.øNúL´ŽvW·´‚Bh 1b7SÂ#54OkCañ»·—-j1,^Žvú¸¾Úâ<ÐýNú$ÏVpjUµ÷ÿ\?¡4•ÝL•¢ËÕ )ªíî´CÀb‘¼^Œ0p<ìëåYÌÀŽþEiDb}d„½,Œ0"Aìèà/…‘%>Zc‘±á=$LïÕùo³ŽJ,I—ÒˆŒúè{Y*œáÄQ+ƒY<‘ ,Ö³,A<Ûw›ÃLCÞW?«%úèûÙ*a‚æy‘PÞRT[dføÜ Ã3©¯E@--’g_W©ŠÌG?ØÍ”øÁÈðL˜kÛë0û3E…Eæ|_ÔSDî†ãÐܛ팯“æ\!hŽP¯›©¢?ó;Á³½ö<Í“bèŠúŠLù¾€z»ÙÌjÃŒsMÇì5Rò dŽL¯›©Â€‡cÕ˜f‹]ÕL¥HË'2ä£ð¶PÌŸ<¤ÎäêEîf;ó9òÞ8; &e‚æXPÑËRô"ÃÃ\©iC52NÌùé¬?<à¹ëÝüšêöKëÞÞ>{­ŒP0GyºŸ­ÂaF€µâ@°ã™“h•Ef|¯¢ŠÝPt?³“Y[kƒwAÌ¥æXTÑÏ–UD‘Ó6áÕ4ì•l©"UI¥A ä¸Õö§åØOj=E‘…ÀÂ{çéŽS¯¶­I¥— ¶ûðëî‡_íJRÙ9Ó0 ¤:íÃã—Ëò‰÷ ‹§ÐËTI4LØö`Яi¦)­žÈèE]ÌTDz_tÑÖ‹u2ák¢+*0€|FÝ õ¡«‚;ëÂAMU«&2 ô]¤“¥ácxjGúš³×í'’ž›]""F“·ññÖUÍ$E!ýíT½#Ä9-'d¶QU”J !‡Ü'úÙæ ãƒÐ>ö‘ÃYTu…¼•Â3D…mO¿Ò®(ÆÈìб›))âŒÑ’Åa ó/j:2„¼Ç‚ ÜY8²®Ôl› ^_/uÂöèû»™ªŽcˆóØÈ>\÷bkIGÆ„•Ge Gävæ õ'?딊1챆£“¡ê0v ÞgÜú;W·Ò\Ö!xðåV#®C^Ë›¥†stB«,éѱö³UÀÀ€þLPl[¢e~áõ¤Cè ›ž‘zó+oïÊÌÎTÅmsñzôãZA!\µýl‰ üÏ2QÞFÕFawð[cdFøŒÔÎæV‹ñOh¤~OZUB‘É‘`?[9á~ðTƒÅ–í—R›Èaä„8³=~r¸˜¹¥¢ Áˆ÷Ð0‘=Û˜[β€çoWíƒTCýcE?[…ËŒ˜Ð¶å擬ëíÑŒ^5‘++%zÙ/’´Ä”b!•¿†êÄv €V!aÉãâE\>ŒDò!å‹°w¿’ò‰L ‰»™Üá"Z:n€$ÇÕ`S 1„?Þ;ÙmŽYWL8ÆÝ/—ò †¤ÝL´1ÒEsžÍMYç †Ñ;WI!F&÷¼1!Aìé+Ó¬æŽvVOJýDƆ¬»èfª:œð"Ng¯Œ4lð.)ÅY^8K ÀÍÀn£Ÿm/Ê'2ä.ÙÉPA#7|ðZu»VåØFOíŠZŒÀ¬L6øÕ8Ð_þ(¬Õ¸‹ýæz´…˾( È*ÐýlU§®Ä©ë q÷Êd­ªÙHÔе:ˆBrìN’PÑæóÙ?à>oir3Ÿ<΢¥™zòÑÉRuèúÚ\lî[K›“¬àÓ’ ¡†.ecsµ¯mF Ò<áꓱ¹«l<ã‘)Ü|ðÿÁ&FBˆ‚ Üɳ®³·ïÑ¥ˆtÙýlü1ÒFsÆm™#t[¯Ôª(ÉDòéŽþ3nDÕ×-E ‡ Bî/ýlIõG”G-˜â¯+j¥$ ¨tL=X§5_uZX]šä·M÷uõ"-¼Ÿäéø"oÄï…— 4—µú‰ïTé‘‘$ DúØiÿ ®Æ¾^í2Ã:²µÖöp¸öü^¢#mº» ÊÜÍÌ;Ò6w ?çHòÂH¢Òirîà¢*ÉÐ’¸³Ÿ­bƒØ¥¢ÉÛhW?`žëJmÞƒÌD=…Ãã,Þ©QËA2dñG/KÕÁñ€-qpÊo…™ÜI*FlºïÇ4à×'ÆŒ¤P W3¯¦Ã dE¡G¢‘”úÙ*\tÀ‚8õzàÈÜÑ”å R2"äðå ÌCϱÃßàâ²€–pdàG÷ÜË’0½@ðLí;O*J«ßPÔ‚dÊçcYµÄÔ g©Æôãåç ár$z½,ÕÐ-q1{ó+J±ÿñzF­±vFwÕÏ–`·7ʆ“Ó¸A|±í“åÛR„! Ž‹ÈÚ[îÖÌï§Ìrê}×ÏÐÐ×jc'ÆfŒ”XdÆF8×Ë?¿^‡«‰óÃÕ¶²—Wçy©ÔȰîÍe~fDm…§ÁMx/âÐÊ…ÀØXíÐÉPæ"ˆ3äq¸Td.¹"²º™‹ìÌsI¨9Ã@œ¥… ‚טEu3UˆÅÙ/›wîÛ¶£ûå¾¹`!“ºË´ÞQÁ=mŸhv°2ý«j 2[#•ëfJ \dpèCø[ß=´–jÁtEMìL4a3›Um°g8²éj@%%‚ÖXœÐÏVÛ^p ¹ŒG·ËæÁK.WHôí Öij%Wvð±x‘ ´Æ 3²¶~¶Ô&²†3Ëjê»QOê¾ S´DºŒ}í^œÜö ‘—hä:¥a¬Pèg«:´¨™Ã_${WwÁªl!“µ§7Œt ù#¯¡­,oê®Å™€qîfªð†‘”=Ø~9ùØ^• 2L»¦Öµ.M-Ð-œ3†Cmß™üê­3FvÖÏVRpÒkñpçB×N‰§™Ç¼|Á2ûŇEeCbn·3C0P\ÇAWޤŠÊXÆÐÏÖ ’#QaXÐxèX&™bÉ‚·/øZD`¶7[keìòçUC u‚Éø–ûÙªŽ6žæ[3GÁ; V5 ™¹Ý¶ÈÁÐãýÀ‘ëöÞØVK2*céA'CÕÁæÀÓp¶ù`anýls*EPææ\É¿žW‰j `ž|´…»šBÅ Õ\A œŒþ³—¥‚œEN(1âjËcáíjU-BBiÏ=#±-S™ø1°NÙRk„Ñcö³%Î0p2täõ\Ç|z—ÖK»w†oÙÄÈ*Läæ]»Z4 Œè¬›©âæÓHÊ,I9\i#ÍEê¦Q¸¡˜ †Ý(É-Ê”±%æ=GNÜíèS·(-PFŸÙÏVu ú ¨átó@6V»Õ"anÅœ¹àY\èòNŒHÐO‹¦â‚ÌÀ¨f÷²TÀ³ÈÊp¼yõ•³û¡a-SžFã#jµÆW­Vde8št ž…( ‘Tãžæ¸Û>¿ZSz=Æ…B…Á2îu=¦ ÆåÒå`^ôÐÍVá”#/3° 1lÃü¼¥Z „©½ "ãB;b~‡R¿”%cAC?[RЄ²‘ù¼áJJ„qQ9x?8÷\ÛýQQöÎ4ï6ø8¨Ë;ãµ~!A,²¯^–ìš`›ÈöÕ×J\ö|m`@‘çÅ{I…™‡ñ›s­Džp\n F±W‹x)_:EžÙÏVÁµ"Ʋ0aßénæç­[©B@—W´…, ™ä黚Ë?›—‚Š´ÙQ"^J•DæJR>Ÿ9Ø c¡•ü`Å"W–çeu‘‘u3UˆÊ‰Ù¬YTfJ7\ÔL$læ.Ó–_w﹘0–³ÍÊjÊ-à]UQ—C²n¶2òŶ9Y•ê¼+=‹ä GTŸ~o»,Ê„®½XZ^hâÌz\wžIÉ‚@1eýl‰äÖ÷ÃaWãÚªú!K²T#‰3uзf÷ÞÛBJ2­»+dHøÌR¯ ÷"ž×Õ¢„„؈æzYºAsžÙL:Ñ> >‘G¶´@Ñ\?[Õ‘è@ãp$z櫞ÜÕTʼnØU•Üz"³(ÀR $ø¼L넟ÑIv2T¸È@Ùpz‡û›ÎëJÒ\W î†gEzeoÎKzéºRXa}\/¢¡X-h0¾:'(bO`ŠU7SúÐ `ùa<³ŸP-x}f\nzü¸¾<ÏÛ¾3'‘Ý-&D5—_},ˆ]¸=@7S7Ø)‚!œß^üÖȶbì;õ³%t>b&K,=±×År9ÁõCÝS§Ä…l/Ø¡ìàîﶙṠ#R÷n¦ 擟ˆ…–þÿ±ö.il캒îT<‚õåû1Ž=ˆÛ±:5ÿÆ%"À”€@ºsØQò^†¥Lþ@Ë}½F#ëðY„ú‡äE!SËy'Âa¯ç`#«êçY8¢ä4ÎVᬢÀ„¾Ø“t´e# A½Èñ"B}%§( !«á!5-»ßU¨:ºHG ÇÙ*D§(1™Ãšÿá«ËͪÊgŠ"ùuPâ±YÕœ¹lst÷çO<ìÄ,"ûtÕ#t¼.NGOEm‰ß`˜)‰£Ä„ºÊ—5_½J…{Q¡ŠHa]]ò ²­¿öì΃Á+ÓHÛE:¢è4ÎV!:E‰ÉgáWâì*”û Añô‰ëÂVJóäWï­c1Ó²›ÓÝùgL‰Ò ë$VÕ«¤/¡Jn³Ó¶9ÈÓ'çªr/£úq¶ ÿµ*ì7—™ò‡ˆšõí*(L¦Òï+áèäØNu{U¡¨^ 3U5εʴú¼öüJk-PE˵Ô3òÓ.Mïͳ_‘ ¯(Lß äv›…ü,DѲT¸â WA ÷èØ¶ù¾dI‹,n'Ô^ž~åí¦%% Ðéðùc“70©¾/ju®q¶D犲¦™£´l3EÀ'òI€H_ÿpÀQŒB3ìoj“ûßD»WÁŠxœ­ânÎ l™ÿQY±‘õ6Z-ÈâW²u+ÊLaÛÅFä{‘¢È!ÇÙZv 逓ï~¶Çó¡žz¥-ôß®\³„E½€È_ëè6 RÆì€\©ÛªÎŸ5+:ØQ–ªÜ m¡÷6Ís»|TVU0Õ/Ú^& ì³w¯eË¢S–»!2Úxï¡}Q¿¸^"¥ÆüÓ‡j^„ öŽ7,X~ZdÂ… Yùp‰ýO WÎÎ+* ²ªå% £,Aêú1öò«Ù‚¶üÒ²¯«Eõþs/T6ˆ†öUÌ¢¦e)®9!Ç¢l"-ʲîEÅlœ-qðQØöÙ2·ö«7ìYÔ6$ í… Q¯ònÉ>ùp‚¬ YÓb!Ã0S¸ëîÛã>±½´/ ®ç>¿Y DsÄÎ{Ëìí àj"üüÖ–$- Dö£šêDKk²êE½l˜©B.‹â˜¹öé2‰‡E_ ¢~V¬W¸’ …Ñê¼Ö¢[ú^©E¡ŠrÌ0Sš?$A kqcd¿”ƒ‚¥°AD/׸`œŸÆU(ˆ„·F;&¹÷KõªT=±ó […zÅ*s›61ÚÄÌ»¹ŠÊƒ,g}w¤w‡Ï)JüwTp¡ÌZ‘ûtnóî-)ŠgÅ0SR‹5(àCÜæÜžÌä›P«D§ê!P1ƒ=jGhÝ1å¾ý¸×j‘—Xg0ÌT–<-œj?©SÓïԯ߽ßõ«¨0¡håà ‘Çæ¿êþ¢BQ¿g«ê„ jZa9ÔJž;ZC ŠÖ?¬ 3arÚLÀj7ÐQ‰\Ÿ¥(*X£,VP¬ÌZ¶i29‡(tÿ¬j½8•¨X¡1ðDß{KÒH…U$Ï¢ÖWÊ2†"]¼Å­…᬴R][¤(:©q¶„uF²é-I»gÏ´ ‘<ÓÏ},¨aæ‹Ú¦…ÂÒ‚CŽ-É\37]v¯ `ñæÝí“W%©Ò-B¨a¦j…,iX¶´èráø”Uê‹Nfœ­~;nÞ8€2fÞEOƯjf'—q@8¡\!«‹²ö)-ª]ÞÎ4CÔ¹œ"¨ž1*i£,Õý«?ºJ*vÊä“kQ…´ž¤5FIÖ%feYò³3jާhyØI¨·­’ˤj™6p;¾ŸÖ^L= MhCY >Ÿ‰){R¢ˆ¹ÆØ)!gÖìí?µ¤;u m]´"ªòãlÍ ?šºAgJ Ö&Fa>ÊôYsêx³P†¢vóá ÷kzU^}Ç뽆٪ºAu [®h߬⚲‚jõY+ª”!Wæ£zƒÓȯ&ޏTõuUx¨Ì³UhCQ B3èe.o{JÏ+­>«EÓÑyzw$Ó—$à §ÓFYþÙmü"[:Eo‡®{˜©BŠb¡” ÓB7 e™Ïªt/‚‘?WgØ¥‡þÁ¼k·ü·RÒEÊaü0ÎT:Ñ>,)¿½'jyf^¤)×A˜ëßÓéÉm¡ÝgíèJQÔr V.V7Ç“DwÕ{¨³¥JQ†ÀŸ9_ÕñÁ'ñ^”£w()9v +Û6ù­½*”‹ÚCG:Ζ:Ò$øàDEÑÃîa…ŠîYú‡UŒ”¾0õÌ.>áA¨ZyVrÈ,†™ªzD[iÇÚŸUVÜUr»Á>ûívAî±°­Å©<®ûÍdÆÎ’ÐW1ôš}.sÔP¸áwtÿñÓî<#§üÕh4·˜¡ýA—~+¡>É8)ÇÊÒ•—‚bÁöšRþ‰b9*sÚ‹Ú¶£\~á]–‰EÐyö|RX,:µ³Š¡7n*UÑV4ƹ£,eQÓR†y%]N¦.•3Œ²‹‘+Ïüì±LìT•X¤™ès~:ƒRâ텛ʼn¦qmÖuELñBÖA–r¼ç"L”I0àÛûEÚSž¼l ëµ"¥P„gKä•(¨˜§hëy…_Ý9Êo]˜–Ä$iÉÉŒ²ýÉÒ…ƒèOú°™ –xø}`ï}ò–ȺYP¡<ÌTÕÒ„ô4³´§µøµ*gq†0«¨igҜԱ‘%J*è|dv¶çä{9«._%ª H•vþSš ñW”¦]ãl x‹˜Í[d¦nœÜMtd!q/êMÔjЃ1_ÞŠ§Jr–sÜô6ÿy>ŸÆÊ¯Ä‚^Èýé>yã^–~E…¡·cçE¼‰ò VÕnOÞ„Ý…ì›%Š7ãl©x“Ô´3ðÚùL¯W‰8(:ÌŒ¯*·û˜1Diô½ÿ'é0v¾Ý|òó2õ–I‘~E«¡h<ÎV¡òDQÇ0áŸv”—ˆœ…Ÿz×$¡óZšñ“³¥ ùWÄË©,*æHìVùöÿoÿ¨w ªz›Å¾çQ– Ñ$J$((ßqLžíý$ªgÅ#ó鵺QÕ@;üÞO¾’”[‘=(ø²“r`Ôø/öíðªuoJ‚º/[‹ØølãReWD Êãlé•rI¼À ½[èÙD(ŽÇ?äŒ(8 2‰—‰ÎËAݪPwE”`ˆ5ÎVÕ1Ä t þ¶^†$Rq8Þ匤8XBq¡°àxѨ¼«ª…áq¶ôAüêÎ kn¸r…E+Y&V‰ƒ†W4$¯OCr’/Ì!¸Éç—O¤Ê¼UÚÞ!5óóZ]p‚Ž5°îgûÙ“,²±hôœ£,ž3Š˜?ˆÇÑÂBŽ_Ð"LŸî´  ¥ì"7¶÷àWÚe}3kT†™ªJ’l…ʽ72¨¼)’…Ñq¶´ï, è=³§noÌg®R©ˆý9üôžu!!¢~­+b{Ý÷܃֨\Š@!aœ­ºÿìG6ðþ³Ýþd?Ì_ÿ­dP‘^„„(Øô{SN¦>+‰S¤7>¡y¼}:D´ßN¾–DYÕ×ݧ¥(t ÃL‰¸ º ÕÀc>²!˽x(I ú}·Œ¼=]oÓ-äN‘-úº¸ÿ<Ÿm#€ODEÁÂùûfV‹S6"E« ªµŠA†J앵SLð’NS™Rô œãl©ô•tÌjXm­´¶ö”X%ϬM¼‹I.°s¨mÝ ñáÂ[5HQèt†™ªZÔ‚ðà=jØmw1%V9SÄ —Ž~ñ=”£¹Ïîã§*ñ2#~úènZŸî¦„ï\ÃCà”`ݵ’ËŒøèßè=Àçµ÷Xº£í Ênp4–%ÍÌå™12´šYþüPßXÉRƒ©DøÍ™›Ç2ù=zªŸŠ ðeþË£lbñÑÙOgU;3º'ófê¹G(=É=Û±y/h™ ι”ÚZ,BÀŒÉ«Ütä›< áÙ§{¨¸ší¯­x_›Í¤õ)¢ž «§‰ŠæÇ¬,Ú(&¾ ’JˆÝÖ“Å`Ènw¹ªŒ †§R3ÎVÕ"p=ZÄf_½ó»RY3Òÿ‡¨;ò$Œe>¦s÷ÌB¤QÅðUÇÙ*DÕ€ëÑ%æÊÇzˆÎš€¾{`ä=ü|ø}¤ìpn‹Q›Ý $·p¡_&ï~r”©‚ÎGoHµDØL[ŸUH¡™×é|äçæŠ­QÞ`vNõKaìîÖ‡Ù:Y<¬ÎÜ[Ÿ ¥2§ðúw›ø¹-­y"á:'¬#Õ%3`÷B—1†¦òî’~n¯¾Eî¨ä·ž}V ‰l˜;åÆ!fª®§ÀáÑõ´sûm«Š«ø(¬þÌ'xŽ)¤ÔÈ Þr¨³è…Âש43Uµ=溞k[z×SV…Ô3gä-íû}ž4&nq+‘}aÁá¸å`ˆü?BÜ8ðô{EÕ}‘#ös½ù'[¿!DB‘¾R@äõ–¬¾'×nTÓ¤Ïèc˜)Áüê Yq78~4ç@ò`ÿóÿéO_RàðXŒú; =ù=_"è «'ågëàGÄþa7ïrÑ;ÌÏÅž_YO<áý;¸˜7,ä>×›©X! Ê÷ ­cB¦Ÿzš¡ªžàwêãlU­JÓ£U ¨`³íà W•3Ê÷Ó›#hîÛ¾ý¦Ó¯ºÊaFù_?¨ø‡¹„ùZR•õ25§ a¥è? \9Å omd"û zï¦9é H†÷¾!OQ>QhủÚÇÙª¹W¢á˜\ºqN´oSÕà2.'hdHÛSGûÑ ©ßø1×BÊËܽ ì½±(rpŸ¡l‹ëIT~VNánœ­ºµè‡©£µÈ‰—¡2ž"å wÙÿ‘©e·ïi®díó| )/sw&‰Q†³‘Lóáu¶ïƒû_ ÅNÊ"/)›ì8Þo £¼~/©m‚ÔW 3UóÈÇÍ}L;²ÒÕôªp'ÝMï¼N}6V†ÚèäÁÒùÙñ*· ø&2gë…šG®Uƒ{a°Ë9GUõ6aߤæãl)5OŒÁäJ û&E½ŽÞ©ùoÓSó¶1Üqų·%Ï´K7ßd^ÃLÕ-??ŒÜ[~pÔ­N©*í.st—9$ǾÙ0âvÚ}²|="Õ HçÝ6\«°=Ø[ªÒ Ÿ¦¾7ÎVFs86;p<žßùáÝÝüä'àa[ì×¾n’§°™®fŒDi2FOä8v· {YDâLN=ÎVÕд!ÆF°àæ^’&B›àëû}1'›¶r¶îtô!ç…6–™3aõ0S…¨Ð4šbN”´@EE¶Ä®_¤ªÈ‰mCO¼Vëìã) ñJXòWª pÅt›×¬}¦ˆèM€yä3%BUäÄæûN‡‘ß›Eº–ìêúa1Üa³7¶»Ó­½½{Š^±ö#gEŒÖ€‹áÿ±ù/Lº”@bÊYƒ ¥ânFçj1:˜*«:(1ýÄ;[Ž$­&,s>çÃks ‰+Óæ°åHM…ÚQŠvXªtxw[Ò¥-3UµšŽlËÀÄí“ÏÁ—A–¸5¿ø‰ˆ‘ n3³ŠÔMô ª9eÔü%Ë_l[æÂx¡ö‹&D* %~j[þïf ¶P2†Þ&µ_»ýÇ*[Ñš„6weiûó|þ6|é/º>NˆƒG/&SH1¥¥a¦^”¥üko½\¬Öß]PSH1¥¥A†2YN-!xýí]ù@ BkÖüN–ûõ¹u¸½G‘…>$|˜Ûœ­ª%$pd´„¬ö7ë)9\G­)³fÀ1ÜýðÓÖÌùŒQ^гa8v?: RxE$&íÕüv¹ìÙN)Î.UÝJ¸õãLe‚Ûo“Ë8ú.jN‰71S8“–?¬µ?°Ô'ýdå*¡g7¼®žO[dŒ.Ž)˜F®b“àbÊTãl½ÈTÛ‹¿@6°éýÞ²¨7 +¦L5ÈФ“§"P¶°óØX“o=Sì'éJ s…˜N% ŒàmimïÜ3…Ü$¨˜BÕ8[u;ÈRöv»ëð´/Þ>$Ò•`gw')£ûÃèD3uô)†*TeêÌï¹ã(µÏï?DÙë[̯Ε£ tvÄüÁ2cþÿŸpàµìËŸÝZ^8ÜNd)AÅô0ÃL$8r_T·z<í>•J$.AÃÌ¼Žƒ~ %QoωøÕÝ:(—}z®é.Z;vKŠ0…•žª\ &;g«¤Â™ÛÚ×rdrëýŸ¯È,\ Úåâfª¸€#®\ôRïtPí€dSg¡eJÜÝÑOŸˆ3á„mÑ,½Ø_‘˜©S‰r•Ñ.‰â0SUŸH Àè;ÞÌM1£S L(1ßW¤»€øpE³÷E©&ø×å®Ùòy~^Þ‰p,d$—°oÛìc·UWÊÄ–¾b”%¡‘uØ¡qß\.Óé3 …*óÚ %l^È®þÃ{š¼Ü P¨22v)9Dœ˜0yÚ¾ÖØÙ‚â]"ôú° öެ*é)³`Räa¦ì‘C¾Æçƒ‡Ç…Ö€ë/qg!‘””õ’3•Ø?âˆÕòìÊó¹è¶ ɉõ¢Ž×±´-~xs¿JCƒ)*³UäÈÑ 1¡ºð¸¯ʪΔٲc ±mÿäI’1 e¥_D‹æwv9ؽêfI0îË.‹Œ3[NL¯8ŒÌœ‰0#÷Km#Yõ^/Üòº®¼d¯S„¾2xg«XÛDñþÁ¾§¶ÊiNÕ’€?IMÇØy¦mÂÜŠÓÚˉD&üIp:ÎVÕ P)º«ãkKiåž+$Á©<õn€È71,Œ.h²=Ã~J2¥À2ÌTO#*ý°ãÃJîŽÄÜÞ4—S_Ði¥^î°´Ì*ºLý¢ÓH9-:_pì´?¹z™€H%™„Ò 3¥?;SL*ØQÑrܳGUªºUå×´1Â|íÞÀU}OG~JøW/áÿ%¡¨ºß?XšN&B‰ÐRbÖa¦^0kÄ¡æÑÛ›€ì—JjI&¦­ÃLUeü­Bc_-×¶± ›WñgíEèë?”–HC1‰ ]q‡MÜclª‚‰S²Öq¶ª*þ@VQÅ-t3ÆÒU_„¾¾TñFjcF"׌÷¾õB~ÉÄôë1"Æ!9q•ªMÑšXs/ÚI@^L3ÄNAHµ¸Ï"~¯ÏÁý%#Óløn™azñ=û1ýÇÛE3ÌI@:ÌÔ Ýxw¡u-ñ-‹n9'ñè;-ÞXÒ~ûÈ’åhíîò¤¡F`j§ŠÍ¥¶£´·]TM†ª»é5BN Ö:Ä÷š»BWÉ ”™Ï8[u­ÿ0…87ÙÊiObã¶-4ªäVDh°¬Jâ †iEªj³÷ãíçQE¥EÀ«cÖÍ~‹}öÙé¿PÕö>;¨áú½nWД€W.«°ˆP½|qúÛåÚ¶¬Nèü¼¿—~ié‡>Þvkfûî'ýH6BTù8‡™*Pl¯æÏZ$`×Yo\U (±YbPórè:î#™Ò–¬{0+Å_»™ ´ŒkvÙ&K;ÂSùÆÙÊüÂßÉ+ ÷¥çÍ/¼6 U¬ìÍ(VLŠÈ_ ¡®ÄJ£,´6nÄÓp&íÅOü}…œ$ü¶ µ½?!U‹ª7¬ ;^™‰@WâÚq¶ª…@g±Ç³ofrç$*'e‚ë|ýKgQ‰yá?BöÀ)LYK€ûÈ(ÃÞçÿx§LÔ9¸ø6œÈülÎÁ% _ò Ùf¶Ss߬5®A„œ g]d©ð:´¢ ðíIÞU ’ÀØ'jŒÜÓÀ€1¦þøþVŠŒQzA†2P]è"ô´²ôOÆ›ÈÙ²#\Ô…Q¦ÚḢ¼ÕÁåG˜aET]‘‰Ìã¶&[ ~Xˆ°"\”{|œ­|H#˜YþÃPõ§ÖCŠùdÅñŠù¶*÷G¦ÉRŽ€XïPíýÌ6"Ælm]©IRN&¬/°"² pø¸«•“D%~A\Qì‡ã­À{lQPðQDpí³>µœ{ßÙqÛçúªF!„•âÆ0SY ø°céÂ’?¿q)DÌŠ AOàmêí²”!(–+b˜©ã&Ðj>µ-Èx¯‹ù]¡QŒ¥º1ÎVU' -êä9Bü°Zxì)‘;„ëò™FîiÏtfÛLNåÑ-RFf£/(4‚O ©Éì^*#“Q)óÂKWÚÉægJŒ”i0M?õwó€íQQGUB 'ˆ¶¢ï4gÚŒÚêè=Øÿ3î‰ó,›¸%€P–àµ'ÖvÀ~[A Rô˜(þ«ü<L” /ÜVsÍ–QD„rRKg«æ£a§ÎŽb;…wN«("˜“þy˜©ªý—†šõŒà8¼á£’W21}磉`Ó¼pCÀ1µÌ„'‰j"B9©¦Œ³UբУ=‰ÍÁ˜ ,BL_ÜH¤¡†·Úš‚o;üö,°.ýÂш0?¼ï 7Dî,Z/D¡œ ú†™*i ¢v„æèÍfÑK¢¦ÝôÏ´™c"¸»‰Û ‡¬^H™uÒ³ 3UCÒˆ2íåß3ô¨vvú„¢¬wì¤P2ÈÌ:‰´Ó¼y{WÏ@½,›å³ ‡Â‡W–£l¬7 /éUë‘bb†ÑFt÷¡Z…"¤“JÊ8[#DUë ÀíiM°ÚJ¦¦äKv~xûj»¦Å®,¹P%Eˆ¨óO‹÷çæÈ;íèoÞËF OÒª¬G€¨c#<~v­2áGˆœ -ûuxQT¥¶dDIÈ0ÎVáˆ"ÊDJ¹b¤ÚÑoRù&ÓN7ý;8åò:¿ÀQ‚¾sôä>9—UÍEø£«ÃleN‰¹H§_®rÿ^®¢ä2âE[”·_Ë2?§SVg„@úòdIoFMk×Ö÷ŽêðÍ`=§Ü«Š#,³“K¬’Ø"f*q¢ædMØ›ª¼dî9ÎVUö8%4>L˜Øì|½\ãË*ްL¥ˆ*íÍóìo+šD3ÝáP¬®ÙëÒ#9´ÈÿÄä©}ß–^Lž5 ] d©€’AZÒ{Ûâݬ Á/]mD(å—Iþ’C…Ï>œyï‹8!t‘ä(K/T2‚C4<œ4ÐY Ý!³E®¡Q–Œ3¢PŸmŒ<­Žä%“¥,~^Ö„’6޳UU€lˆ ð“»°½Ã…Þ\4A‹¨Û^;lš3Ëžb¦ÄÚ2¾É/ÏZŸdÿ«@oMü±ÏƒÁ—š¼Y^õŠÈ(_J<#3´³\F"·c»Œx?cÅ/DŒœ™©ãܧZ^°|"Dˆƒ •Û&Ó;Þm[VšÌµ­L>>r¬q¶^JŸ#¾ƒÌ{zÈû œTÜžáà8[Íy϶˜›G;{—Q„DXß)“°¸ûº÷ö%GRFý‹á8OÆ Ûá¹ü=òE¬ˆ iÛ9Û3d,Ó}åŽ/8?æÆ(>\ ÇÁWLàÏù³ã¢/¡ÄÌ‚‰ÁÀ¶yŘÒ}¡˜ßBëÈ ?q‰¨¤÷öH^˜â#g²•Ù½ET–ðl\lóÓñU•cGÐgoq™)«¶‚ä/3ye¤ˆÃL½@Äú̧rhTû•Sï&&/0Ëbœ­¸Š‘pRË.êŒm+>'„çà*}|«†°µñ¶ ¶™#^+I Ó<'ªÏŸ•Lîß®7þâÑzd^=ÊTA×"K³È¥=™/këqŠÿÌÛÜözþy>Ï>Õ<°ß æ§­Tq½P2¯†f+Ó4 ˆ9y!¼Í*íEÉ×"ƒ´òŽh;>ýò‹Dö3'ãêe©˜\×.Zê/’šQ•@ˆ[Å×NŸR˜O–±G?9Ã) ½@2z£a¦ªŠèÀÒ ÍüÕmU³ÊVù¿ð6¾®ÈÒŒŒôŒxúÐ2oëÕÎàkøìs³]>ì¶ÛÈ?« 'óŒl”©‚°ž†A¬î¹¯P+ø|Fn_À1ʵN{ÊÞ]P™W³UC¶ÂlxŠ<û…!ϬŒKi”¥œD£zfå|œÝ‰Âïõ?€<¢2” ¹€fÀ‡ƒ s N# g«*í ØÍK{±À–ó>.È<£9ÏaO'2»JØ”-25F…?Y(á Uèö²ySCIÖÄü¨…Â}èâՂݾ-’0Tº.Gù¤Ê™-cÚ4ÊÒ Ž Ìh/…žý¢å‚2 ,#Ÿg«Æl „¡; Q•rqé gXFB=ÎV ñж]8.,äñ/ü,â28EˆûmÉ-vü­À¶ 5¯‡ýâ2àMz9_£3R{¡Ï‘rÙÆhû×°õ±L^d/{£@fÍpyUð—Uá>EÏ}úWäÌ ³^¨rÌÄìTµ¦‰[—åqgÎÙšS€´ {¬ŽÞ¾åÞ'8(jØëK•#ˆ‚x‹±›[D`§lX`•׏޳5ß'öëi‚HÒÄ[ã~‚U¨<ˆ­—ƒÏBѰð,¯Le*#q4”_üÙíÝþä¨yŽLëÑG'ê(—ÿV>ìEð<ÌT” ƒ¶‡D~C!!'cˆö‚¡"t‹8ÝøÜïÛŒY¨”£‚_âdIú±òh²Ù,dPŒ#•r•n¼NÄ Áèͽ;÷|E³v¡RþóŸŠëoûì"B´€w‚[×Y¥@9c$W¯G™"Ï}>ït⊃Úô‰7ѵsrñÑ' é‰Å ÿw[5ýI„æÃŽów|¶å q¸®FY*:âãªAEèÄ6]~Á®Â錃\4 Ù¤o÷Á*úvLÜ”m3¡Ÿ¾ra&Ìí×)<Ä¥5ÌT‰Œ"ÔÁì N˜ÖÅ>E·™û 3UWTþà!¯¨´ˆaZúU§… 6üp̃„`Ù y}~€3bÙ|*×ÐN„êZ–NpÈ6ÈÌ+õPàÂ[2}ÍüˆQöä7i¶oÅF¡DžþµÄ},+²Ë˜R`UaC^ó8ÎÖzž¼~mZ\aN,¯Jž>E>„ªØ›€Åòv¼5¡¯™ q9Œ²ôRÙ&$ðô Rû ³ V…‘<³UÕF„„ÚHTo–1*¤Ìäý†Ùz)kŒHǼ܎@êÀ{vÁ9SSÁ>Fm¥Ö‘I¿pý{q®WüeHŸ§ˆ{³²cÞ2­V8“‡Þ#Yè}!VÝvŸ†¥6¡¦ÚÑý² CÍðäsW”¿ úò HlP8ýwÓÕø´-e¦êÐÍ35Å&äNz"ŒAÉ ðv9@N€¨¯eªf8³`¼ÊÉVؽWä( Ãm1ÌTU Ê%Ùa{Y`«™ê¼•bƒ²@\ØÜl.ô´5P¦1çÎsm^¼_<¢ø:þJéŠcVóØÌ,,lNY˜íGh„l³ÎÛOÙ{Ý™ YK|Nù&×Ä>œn7aC¯î”[ò—p®^Àã$)‹¼f`Èö\3-˜­!×°ÆÙJ½g•­îXÿ'ÈÔ @óu˜Ø»]|4ÿË=Ê>È1‘#tÃN¬ýmë¸5f¸+t‰\jœ­º@2²£' V¿Ï®Wn+x‰çÞ(KÊ¥ÒD‰¤ `m°8¦À™S½þÂÔ®<*­ä„Óÿ °ñr;€Õæ½z-rÒ8ù0"Œ¼´aí$VHœŽCáPŸ×Êð-!–‡9µàa·ÚûiÁ †á¯gK]C!^‘×çVW+XâÕ}Ãl¥@ ñÍåSäöïõEwAæ%ÆÆÁØÜÆúŒˆ ˜V =þ0S/x˜ KP³r›SC ªœ3UWà}Ùˇ“hìÊÝö£cÒDRÏ0kjžàòR¢è„U¸1£AezÚ¿wxëÐVÁ8/¼2Òd»¹êf{ïs6afBó­}‹0äÃa›¸×Ãæ³ŸPP£¢–q¶^ e˜¤¹º:é3Ñ Ö˜aˆ—Q²T"Ê9Ъ½ZÝo[þ Ò( „Œrœ­ªª-¯jÛ°/–çn³Œ-3S!A‰¼Ä¡UN› ©òеL.#Ry(—XÞpµmvá5Ë‘•H Rq~wóÑY# î#Ñû^®Pˆå¦“Ú0W„(¨ÄKÚF˜ÉÑ"¦Ù#D_ÄÑ»«“0ɇ—\ž~÷¶OKÈøPH ßð0S/%o’ ‘z¢oï*O¤<޳…ÀƬM6þš…Ì1‘{«y ÈÎÁöfèüê–‚e˜eäúe1o³tøÁXàÊLe^0L„.¶½fˆÍøîC$ b™ÁÌOÕÛ/)A¡ÚJi³OUÊ(,ÅKÞÆšÊ9p‰’° å/¶tù#1*Iñb¶a¶^ªÙ"(ÃþÏÉŽu,]!ŒÂRa†™R“‹y»­Ïm)=—† ˆÌXÆ ²6¾IëÜäØâ(Õ{.{vñ©BO{IÆ—ÊnèíbÿáÍœ¨Ï˜/‚‘ŠÖ$žâ}Vgõ´+óTáœÂ\œ°¤IÛ‰§Øž°6 w)=SM¹l&._`¡ŠÞN{9Ö1¿š¡§@¾«1v2þpTögBý>)Z§0 ¢Òq¦EVZpö|6æëÿ(Š‹#.fö=oOU`4±&˜ÃLIéï"²ef×1Ú2ë7ýxU É[E\@"x “uŸîVÛãÍí¯ 5yIb"dÎÍÚf: † O%Y*¿ø/Yùp&Þ„o„ôoER…¾8lyº@J9ÞŒ8ķ݆špÖ¬2J!&\›ÃL±<êù¼®§P¸ Ng§¿*VhòÊ ²õÒ±aJÂvüe‹ñØGªd1gç£L-G ñn¯DêÓ-1 TÝŒ(Û)·ß*qL\ƒ®#¢(´DÝB§Ö‘YØ¢Ÿp7Ëf‚_Øp£0 ž·Ïk9Aå4ìIº-@‘ÓÂ{r펄?+'@Áë¥F™ª]Âè ¿üÝï>gGI› ²ˆq¶Z˜Ä»pÛníScúR¤ŠO3mà è€eÃÅ4­Œ§ "'ì,oœ­º´ê‡QÒò6›¸¸{ væ{™c0Ê‹ŒÂ¢¼QÙ쬽…m» è.aŒn)†Ý8hömûU„ î2Èørº/8@ Ó†–Ëë¦ Ð&lˆnˆ™zO$€‡9S‘97¯CÊ–‰_Ë(KËbÏzkqYK/ ±[¿’B ¡1@?é„y˜S/'.XœPR¼q¶ªB¨ÀP…Öë¶Òæ~íŒp=ay~Áúg.ã­û|åzx¸Ï×!zäæGù¶|]‘ÞèðêàËZPÚ+Ä” ¢ø©˜úÅfyG¬ýÁäó~¡\Æ ^,5ÂJo6†P„'Ÿgð5ço Û®âЄ˜ ¿·OØÁÞ^û+ø–m—l~KPfv‚&¼âj˜­Ü¸bu ϶#z¿¬2;a¤}ÃLP#" ÔR-FÿÚr<<ŸU°'˜£Þ¹‰N ¯Cãì®aÞ›QŸŒ®±Ã‡ªØXÍÇo~!K&}‚&D¤Á¹ ;|Òâ^¼€VSÆD&Ü~†ÃGœ×"ªÃ&îêV8˜TT™Ç ÐøÕaÒþ}}¦õ)„̈ƒ)f„ ¶gÛSÁF[nÊNÌàÁ1‚{~šfÌHÀ‡“Úì’µöx[BwB T 1ÃÌãùtºó”(­l¤6·Ë§ŒíxµÓ(So·³„ôÖcÒõääûÈ "ð2ßa¶ª²¤@ P—t ~_vFT á$¼ ·Ó aæ®i;‹yž28É{^ˆ[Ä –·ÅoU ¶5iJ9\@O³¯ë9Æ.›×õdô$„Àk„F™*£¸œüÛÏn;ÛNI{ó3‹4=  Gg«íé±e,;wýo ŠØÕêáÓØâ“Nø²ówÔç° zïcÁº$Ç÷Ãædaº ùa™ŒÏ·ÈY¾×À¯Îþ= Ú•I3ƒÓ²ò±@>á½oWSȶñlX7fq4‡gF%ù¸×Ù 2dà3öôø3ÁºªFÍoí ¹=À‹•SŸøTP,IÚÉ¿†™ªûC¢&?ŒÜï@ßÞä'p*'ãLãÇÙªŠqBÒîÅ8&{ìÖ¾îK@WNì½Ô|{ƨqQ&ÂiØ1t²ƒá8x_gs°K3€:ãÆª½ßK¯ÐL Á $‹©½“ÅÍôꇜP3Iþ¿©~ÌÉQn³2ÉkQåÁ¨.#¯¶sWŒ1³Zíf÷fŸ^ÁàìË œhcò!ÜÏòχJˆ™}æ«wP+SÉ)Ÿ×S ²4U×£äl ‡Šh(PINç˜ޱSò•˜¤YÚvãrç–æN~7”RIäÈWÆÙ*øJLøP&±Ùå{m©y±´É y1ßúòÑ)‘¤QȟМ³_ì2NL†l%&ލ·¸qçîÖ¹»ÒÉ-_ØJLAByé¯E+£øL[$·ôמnvH‰#ÉŽKÊÌ8ÑX?'—?E!ßó’ãÙXɾx£´BÉ ½Tc˜­º&=%|èù_ü`ïs+³HRÈtrœ­Bs9ŒX̱‚Bñ‚.å,’ï‘ÐŒ³UZ„å‚B‹ ó9¶óäl­‚ÙHúøVhRÃ7ØÆÞΣgíâhúÈ#ÓRÇ™1J"}ØÙ)´Ýg{Ívȹ?ÃM2Ú‘$ÓSÊß»³û´ùaÚæ<î§%vB’)JÎý2•ùB“ÛÃŽ›{þ-µŒÙênºÔ–^ÏÞº“H‹fˆ^1ÌÖ } ù¨õj•«íPº­G"pkL8Q"›ÇÝ,Eóa VrRúMAc’ߊxñ/êõ $ôb€a¦bv†n¿ –îó§/ì7˜ÛzIVHáP0ßÞìi ðoA$‹$’fªX51D¹ÀÍ?±LÕŸU‚’jrÕLœg—µùm1{粉  9 _•› wðË3Ë$1hýÓo°ÛR•7?ÞKùƒävØ?ÈV½(RꆑL+oOìãâ ¶ é# a¶š©Éùîæ­”)è}WòA(ùˆ¥Û»œ¯ B’Å—ˆ6Ư¶êÛr@²hÊ¥’Šã¾p‰˜vB…^­vsÛšÇâƒP!™é³Søag7…ª¥¾¾3EWûG™²µFÊO3AH³½ðfܯM.è‚d‹L媤ñßD ʸU\nvÁ Upå9•c³+{Ë-”´¿ØÛŠ+þ°—”(&@vBžˆn6ÃÓV#ZI’~Äì´|xíˆëîkÄÆ™é@[®(kÁîEžR®êŸž!ë)³Áˆå¨S¯ÝÌXBR¾ÅA†Zä‹û ÷»ýÂÓçù†àþ½[*e>– è¥C@iZØ…$G¤ÃLYU\qнÍ!´ïck•‚H–Åä/²4TÙ_(yè ÊŽü˜f¡€3®7 *œgdä!©ØËy3*3øgšñ³_>-ÌC².¯Öà°±Ó.Áõj/¾ñu0#¿ž{.Rªíqà~vܧøA²)ßY£LM©sws<$AH‚½¯.Sú ‰’ËàÃlUP1%A¶ØÚC±;îóài¬èAò$®Ûa¦ŠÕó){ ¯\±â%Р9——‡TéÃf ËÄ,wQQ‚¤SÏùó‹â=a³×ÂbÍŠ%r­v”©Œ,L¸;x»9tG&azœ’2ÛíÍMîæ¬¯£WKòœ³ &ÝÃL¥äµ@¼OÜ&ÖN‚7k«ñV׃#'cxý()Õ‚|2²B oâÈY|NÇ^ê©cV…g3lZOo¢Ô„]2/æE–X–ôÎ¥Dž_”ò%h¿‡O½õ3VsqI©\Feª^a)[ú°ÂaRsn\’fKBÅÝ<ÌKrÑ<±ýçI1lyˆCÞ˜·’o« ¬>'f.7þæAèNß}EΞiºžS¥½6ä..³"v›œ%h†-é ¶£LeÎzÿAH`ì—·èöwo}Õ[’£ÃlUzìO6DÁaÛr>¥ò9 —ŒÉk0C:;+[8dóm”þÞãaÑ¢.¸ÓY•Íg&‰ºf/yyÈÏÐû7ÛɺÙMQl€’D]R83Ò à”Ÿ¡ê´…ï½»â¢eIá¾)L©¾Rpû“™®³ÈÜ%írYy¤­•tO’“°œ¿Ôuýó|,òOižþÉ;õfœh«4?¦^ÌØÒ'¾ ˆº¸K¹­žÇfXžzá¥<ãyuˆÔº}ä@‚’ÊøÊ[Ñ>†Ï>Ø;ÆövŒ[zú–"G—ðßQÝ K|ñüìé[êí!´¿€âpCuLÖ$÷–Àß˦ÇÙ² :Ù ¸÷âÏ„%ŠÆ§1úG•9BÖf«ßî¥éwNè,GY*‹˜Fسê¡sÄ,ÐDZS †"1À„ÇbîåUEÚœ3 ž¸Ëê7óÜ~[mŠ¿qlÌ,32¼<Ó]±I^2FÍ"˜~ ´e÷5]¶WxoçGÿwâ“R//Úí}7—s0iÈ©¥dÌ?†™ªD¿/|ØômwAعùl4KÍ9£–˜ ÌqµçÜl]>òA³TÉ!~½®8ýþÞ_°lDsËÒ» 7ÊTŽql#ó‰µG}ö‘Þ5ÒŒA=Æhíüƒ~x‘YJàÏm:ÎTJAqtM lA§wYø~9šV¿¨8eu^ñ›EØSß18y³o²¹6˜VÉ4¸¸Bññ¶S‹Ç¬_މ…ä§’jø: ÁËqÑpa÷'J#ì±½·ôæôûïB^ÎÿJ+úbõW² ÄÝ;·¬]ÇüCòSÉH™qŒ©Èù1Ù€2›FÛZZz;CNP%á³f Äþ^—Œò±þ&1†ì#†tnV’â;?¦º’þ0±™Ä‡ìê)¹äº9Ù¨S‹”H`®ÉúÖ¶™,âÔœkd1±Çþ߆߶S½DS_I~ÅĦˆMžÏö ‘®Å°åݨˆ„<Ôo%É™¯„þþ~†Ù*ò†øø]Sl諾|oÜ­òè˜JÔ™C ¯ JL˜ê¶šŠãž<çÇ9£#LJCÎZäÕLù¼ú*NY‰@v¾«”&ÀÑñš–³¥æûõ“Qþd’Jp'3ůÇOOÄb–€‡€žgÏ~jN&%‘àóf ¢gûß÷³H‡ß›BËÒyå0õžhþk§åA/^ä™ês/Ÿ+#ÜÞÆ%‚­Md80£Wpúf âŸã,ÕÈ96¥VKá“ÞRƦ7s½q¶òQî‡;*J—ó'×ûö\8½H1µEÙÆ¦ím¯®5)[Ž»ñsŒ©JD á9D¤ôÚ/½ÓìOCxV!<ÇëÏÜÖ>ÏA“? à½d€¢~ó*¼½ Ö?‚Eˆº!Æ!Ì:|ÂzN×$2g¢7ÎÖ„ŠçóôÛ cHAT˜ÙÕ~ÖeÅù«LLÂnæpãlAvŒª]r³m=w®®"­“ÈÛ¶VcªÔЦ¿õ„Þð·Jë$ôþ&q14… c— µ'19]ÒTL¢WtF™ÊÑHÑ"SlOqö‡tHš•£W—gG™B¿¢W %IQR*ö&è„(‚ÚŸ6»y‘»£ÈÆB$̸*F¹WaxÅfº9f‘Š¥@˜•+1OþøÅC¶âϹߧ““O?u¯ŸæñÿU!t˜!îpN»ío•ˆM‚êÝ)„¹N{ÆûkáÒæ UNºr(ìºÓ0S»_qwŸ‹÷~¦$5/…©Ïaϱ°½Åó²-Û¼ÍÑ—Ÿdf/ÓEŒ³¥‘vzK®O™:¸^ý™Ó7 ¼ß´¡ ÛÂj_É.”j+Ó{n5¥“€ù‰2~bŠ{1@žÛÙ{=o£Œ^ó¢\È4ºíÏgŒ æW »L3Ì–-øÙbÂÕLÕø\º¼(é”D¿tÃLé;Œñ à´ýÏö ÷Þ“¦éSŠa¼*0Ò^/fQ“@À­Eú$ÁöóSÄŠÞ¼Õþ¯Ýj>v€Rú A-¿Ú0S•T‚E„ÚÈ6kåe Zä9 ¤g³·¸ð{ž^Ãú›cüàý—aøÆæãêPåˆ_c7Çûãlä.˜ÄIŸ)ÿ)Ê‹.¨‚7‹ðû·hùOEù%Àch8ÎÖ²·ß‡ >ù½z)2´1ZD¶ê¶öã4ËЈ’ž1F‹Žbî¼Ïã’ C‚ÉþÿÝÙïVœóV¢¿€ŽÿYª×Ûá´wi¯köØ^£} ÿøø†™ªX|ãwÛÁ-ÚóeU$$21 ƇÌvb6S×3>$ç '¾àкYÐüÉUtxaE rl÷äb°…xâ¶v¸v^2ÏÖ,BÂ1§î£,í6VÑ®*>fï/MA¾oÓ„¶R”´1›2·ÀÊuM3$ãûg«ˆá~^€;ÍuÝú-3’ŠHT÷„ßÈßB‰uâл–áñÏ9ЋašKP+½ÙÍiN‚s#‘Ÿÿ´§Æc¸eˆãôÛÏmñ$Jã{‰Äœ®´uÚ^Aa7—TJúaœ£1äsðÀp†Ü§ÎKÀÆ×3ÌT>c4fï~Áí[s#¾‹ø=Glßø,†P^Ì‚3µ=¨Ë´r šÃ,ÆgÃLî÷°DR1aÀ¾i伪WãÝ| z‚:TÏÌ–j7S³Ï…pWâ¾Ç‰¦ËÌq$yûÅÞƒWĨ†ö´eµY—=S« äŠ1éK›IŒnД‹´ckyˆ?h ‹5bhÁ’zÜî:y·Yˆ*Ùß³C×ëÏÛÏ쟱¿12±¯ÖK͇ƒ x5zq@:Ì”´DwK/AÉ‘f}bÅØÅ"ÛöªM¹m"gŠH¬+ñ £äa¦*~ ðÓÝÞñ¶NwŸÁ/±„J×.üµA“3*eÿ±„1ŽFG™Âƒo²‡gþΧ×K+Ч7£LáiŒcÈÔ,÷Ñ —$`•XÇŸàF€¾Î½Z;‚ß°/†(èXGÈŸtøýŒ)z“(†Ûb˜©"ì a zuÙ¬´Ü~Ç]J(óúbhÚ6(íØ¸üw Þ$ü`L5ÐV:ý=Éï9¼M\ŸƒìV©ËVlÔ{?7HínœT¸‰Å§MæÀ2œItíÍi¡WÔVËwc¸…ï˜"'„s»yÕ­9þKI왃«o¤CÈÛ«%fHy'±Ä‹Æ0ÒhËîÚ†Ó=|†aŠˆÞÀZ#ÖÐ߸™¯Xˆ&sè©¡ÆK@œ½(9Ä“ïÃ3òÁ#!Â7&ˆ'·WkÚåÀײø!¥d>ݹt†™Jg·m”½«;†ûúpé æó}°¥ .°±‡»u,_O1O Ò»ÀC¹p%Érú­EÜ)Bí7ãñŽ ¯ Ùö½ZÄ¡ôÚ¯ŸrvïO³-¶öd¬'ä8Ïÿˆä$òËg7wÒ8Kì&ØÍM^<üb´ô~éôF%Án½°|Ñ9F”óý©b©ˆ b€FT‹m‹ù]†Åå@á«èÅ3ÙÌí¨É1ççõÒ9¦É§6Wû C-r;°IæÅCÙ½ð̳³œ„ñò>ÔßCð¥N. ØPób*ý ˜dI ñ âÁî?.DiǸ‹ƒóÈáïU™Ãl-¦ö‚éÙ$[–¡ÆC°!…Ð6öoYéÛ3ŒÇ6Ñ òßr}Ï4ËGû÷ G­·ºcoÿù} 9z’Ã˜Çø(K…׌NÅNJB›´ã»W‚§ìHù5ãÉþá5æð#±m¤ÐHOçZ\lG¿£7Äu L:þmïØ“xƒ«ÿ{Å‘“C„ç¦3Û~yü~ök”4¢Òs,jœ­tØ"_™ó¬²/OßøÃAÃ8¯s±5âM`98“óØëUn9 K«‚Óò·³YK?½±"tömSûæG¿Ã¼”ä4¤+f /žb^ŒfÊÕ6¸VH¸”O:â—Q––Ãö E ÷ݯ‡‹'þ ûˆ§&Z…-ëòÔ+æè(Ÿ¬þí‡Ü};Åì]ü‡ð!»œ¶{/oT•ANLƒ µ_w3޵þ<æaɲÐΆOäpÌiÒ_{Q×âÉŠìŸSu—æw×xrà"§¯Ÿ¿÷#߉ÁzØ¡ÁËóœx ~G'ýÁ7to>÷@ÏÐä·yò³”ü JToæÂÓÎÙ9å©Î;6,þmþ•cVΉï©}÷‡·ÇÙÉjyfè 'šøwž ãlá’&sË×ă<õ¼ t öÄÀÇùzʇó*焻ѓGt¿’ í°—S!œ‘°"œ;î«ÜZ>'¾§BôÜö{ZBÓNÅýh iñ¤ùìMÞ?g˜%{KVN~½³ y§>èâÏÏ…}éGÛƒ±Ùí¹q©ë ®þž £E€æHÏ£OæIN”_à¼ÍÿóÓ$I¼žè§?Oa— Ø4ßÛÓìtZª/çshë>á£w[büIiù½¤/Á#‚¶-Øå³õÒGæZœ&]Qt<æÉ­ÏÆÃ=u‘‰Ž4:;û/[ÜdrÝÙҢͫó) ‘®t -›¼aõ†ö}9]!=ÔÚc$ßé­ú&©Ì-° wDq¯^C³ñ¶‹ëæ-QÁ…}3èÁnw %÷óaRz¢ˆ×dî1ÎVÛ¢v·§zökßâFñ¸Ñ¿¢kAñɼž/çSòÁ=j‹ƒ¯“ïôþUükûÆV݈ú×ïI=ãÓb¬ýX6OÌ丧ÈÕ6ÌT‹ÓÄÞ§ÍÛ%¨ŽUaq;~8 Õª¯Lçxf­%¯œ>ÊTÚËñ£¦8 Å»’ïçï3à<í8÷ºh“ä§ÝÔ‡ÙþøE8ÿÅVçn©—Oãʧ‘úN®Òq¶òü°ñ Îæ<{/òj똹ÑìÓ£àU®\øû=háクŸèl>¬yµ{²æÕë×+§ž’;ÓðÝ?òHrL°­ß‹@â¶÷Tw9¶ãt⥵ٵ}ƒèm¼¶ßtÿ£ý V5¨KÄï?Î*wx½<ZÜe/o#º.„¯˜¦¶Ùÿâ`CŽqoôfùŽìä»Pý€ò¬Í*‘wzˆ¼=Õ¿y¶tuŵ«Z¿ÞÇûÛcyn.qPôl£,%g”X<@ä6[ÐáFòÙ!îé9ì-·µ\ša~XÖîŠ0Ÿ×Ù=bpV2·¿²[•4bväâNèˆÆY²Ôlfm?ï²I÷F¬±_6#úèþ÷û¸sí)áÂ-Ÿî—§D^ãNi­]ËPâæcw³W’}àœÃ‹vÀó·¤­H—ÊøÉâ"Ÿœž~¿À¸ƒò~q¼·/1}ë‡dMÉžêü©wê};A¾Ë¸IǾµãmbÜ$þH¶Êa¦$ÁÌ¿§³ͦ®œ>iFœVÞWÜE;ÿŽÂ_OÊÂúák8ðÿ"»ß¸ñ»Ö¦yÅ€8”ýFÞü£ -ÇÊ.çû)´‰«ŒÇ´ ñä´1^Ž[ÍO™ÃÅ•¼ªY‰¿ý=0‘Ls‚õêkwùñ‘—!¿ÑK´5lº‹þ²Eå­?ªm,û-”â¯ó¶Û0ûìÂCØWx-&íY·ëìeyÝÉÞs²¡Tkoá¼:9,s^æï4ÀcÅ*çͳ%é k‡ÑšˆwKýHöV^/Ü“MYå—yñ£«Zé!?w¶•L®Ä¿ýu|N*²»vaê 䄯:¿¾*¾ 8*óÖHâg².™üÂ<ìB¯@ûž=óßœ Ù¿Õ±{}g~ÜüZûÑUÐlœ¿9þBgtæ m¶±G—¸>ÞžÌa7drÄïÀÿ&vÊ ½ØFo¯ýÛÇ?ëÕRö¦MÄ©wá‚J#û[¼ÀÞCe;¾mXÖAÊow·ý7ËÑ<ùlÿÔò4eýš¶¿ì³‹+ƒn}ÀÖÍ"¨ö+“˜æspº·?ñ±-–ÛÔ«c[~æ 4U<‚øƒá o«q´9@> ÷élÿÉÎ=#ÏÄ¿åÍ­Õïøáe‡fiï=âútãx}˜ñã[bÌèa}âl®EáÆÿÆG‚å‡â±Ø0[Åã ? ê´Ÿºo†Yi[žo~*õ3¸N+78¶çôZöµïÿøxuY„•óÐÝ1†Š_~š»:;ˆl\ÊN<gÞmxá¶—«‹ßÑ*;7û‹g/ü»m·?àë¥WßëBŠ¯Ú¿¢ÙúÁ¿NÍSßxçW¹<eªÚ•aÕxK¢uPŒ ¨ÔæI¼ß¸„|{ÙZŽfÃÞA‘ØŒ’û¢ÓÓÁ’«Qœ¶:™—Çw=âq\yy¬}Dbái³cxÒ›1¦Š%=‚\£ºÛµë;ãdu´Ù˸ñëpa®—ºÿn~/blß÷°ö³ÏÑ9Šƒð²ýQ¦ Ïýˆ‡@&î¯í™½ {ÚìkêG`oÃk˜ºíàMøâ»«Ìê#ƒí…)£,î/z(óÅöÔñl„užÑ£t¬]U/æØw˜­* îîCljÛ§«Vî »ÄB@Z.÷íë·geÁ]ŸÍôe0êoyàÄCéõGÿ÷y‚œÃæ±L{÷Qé˜È>’xœ­Jhñ¼(|FB'y”þÖ«Ž‚/Å)€Nß“»Ù´•/õ·/Þ5:@ÏRçÝÂÕKÂó¡#NÒ+SF™ª˜Lð¥Z7œs¯1Ñ3'ûÛï= ʺP-Ž/î7&éA‘½¤Ca¶ª°5xSÄ­5÷µóÝêÔÉ÷å)D'ØÃBû⢋£"ûI]Y×ɇ½Ô¶ŽƒEqàˆ¯y9_XîŒ/ÍË Ï¶FéJ' çD:KžÒÇa¶ ÏO¨ ;î¶·a—+ý»Žµ7ÉAáEãLÅãÍ&ÆdØt¨”#ÆÅ°à†!=`éëÓ^¦g¡¸êá¶Ò÷ÿpœ¶Ö±÷quœ1 ×ìEtÙËûá\8\Kßlõ üâHÎn¾Ú%Xkö=]`Vɶú«ð)z$Çcû»MP—q-?4æÇ¥ã0ÂL‹Ã*@—_¤÷{Œf·ïÛ0[ʼnϨæ3´Åu¿¼ð#£z„¼<„èÒ‘Gì¶$óºkOnÂѧ^ße×Q¦¤ª0 »³Õ·pô #õÍÇGý¢CG±™j 7ᾜ{âô=!eJŽ‹p8ôÖ/û¹V7Á£1Ÿr~¼e#ÁŸ#È]1?Þ¾õõ=x¡—]¾§#£LU% Á£RÎ=Û¹úŒ«ùÚéýÎ>l;»|/,eJ^SôN¨œñâÚ_öüSŽùì¿^ÎÊx! ¿¸Ã[¸qzk¦øð|N½¬æš&q»½ŽÅ–ÝG鹟bƒ¾ÆÙ*žB<ñIâ²ÜÃNž5zðË©è%}ãl¥'ïuœóÊ Ê[ÂçÓƒÛ3=é„õs>œž^Ãsw»úd ‰Hä„-½]>–pX_v˜·Ÿxô® +òÑåÿ0[Å¡Ž8¨¾Üm“[’0#ƒePq`2F³¼».|ºèkÏ÷$–0#…"¯çi8òbI½–,z*z:È’œ¦ñìDêku[ûÄ)ÀÐãõå0rÆÃÔ+8R¯ºÈAA>=ûdI|t89‘xž(,Zm7þù[ùp}ùõñ´ó¤nÛé?OsHODO7ÊT pì=M J-=:Ÿy@1– h°)}3é©û´œ6³Ò¯˜Á832ñ[5s}*GlŒõÆÙ’"»Ÿù>K¿ ¹ˆ÷sðÇe{ñ®5²0¤Ëª“ßVü!'øˆü ;Ëñ5]†Ôp%’o(6Dvèþö§{,ýzÉrôç,v”©ÚÙO^QAt¬ÏÝëEğÿѶŠÀ1>w3~®þÞ'·l>ºÍ"²µáWäP²»!LÙÅØÑ£ü¹sj"‘$ÚZXã—.½Ø¼HE$r¬WPŠä@_qɡ¦ô!{rG™Ò€!rx‡ùðÃ0âᣊ±«?»áÜŽ †‰šÔH|ËG:Ì”Bóšß(Õ_ÎÓOŸ"AÊ¡²Cóƒšãto¶oºÐ )‡Ê/ï=Æ®Nº×/«×‚HR“ã[§æÃl½DÆ1vE1ïÎØu;û½9³‘ð–Ït˜©ŠœÿDÁ çPÄ–¯P 9’ʽ‡ ä|ÇK'UŽ”å7tþË~xß­Ífø.‰Ä»NÎG™z ”c0‹aJ‹ý_pÇ>sXóšðzª1ÌV*‡hÖ" kÌ{¬+OðãìYu}T#^†ÊÃLåšâ ¾6íÛn#ô ]S¹‹ðiÆ Û"‹*ìOì>Pêw9•Ó@ü%‹Q¶Ë–±¸qÚI$^=ƒ÷€àüA‰kbwUÛ]${1ôG0ÎÔËâ¼·…ÑüDc’ëIŒïªÉCEjƒw[¬6{Ü–o;ân.MIôr|ÏÌ`˜)]Oi­ ûÄe»­’ãuÛ<žïãx$U¨å˜øÜ/DuæŸýªjIHsªàÔ?Äî þÒT³µú=²’€æøþéfŒº¡vll$ÙgWr%m”Àœý0S9æF!K{töâš$JX>Ø”Äó1z‡²q£dÎîŸYžvǘJ„ï§fÞ¯·‰æ†°[šGU­È SÞøpý €ë_¾fvÞgPä„’-¼¯™ÂûÌ-ô´t,Ses)Ìw©d”©—ü ÆðŸŸ¾F«õ˦s‚'qþó\ÙRÁ$äL\xlWQpÐb‘,æœÁ“@19ø7Û»}nŒ$‹9gxIbï*ãàµÇ¯’áI ÿ(&ƒl½¤1ŠÇ“˜yÚü·þ RŽ—}>ÓQ–T3ùM ™à~µö®&'Fš+JÊà’IHPÿƒk@`ËoÓ”\QR†7Ñ$ñæŸl⛿«}îÉ[Jðr ï´k˜­—÷ƒx§oËźÚþVžú|ªãli¬”Âø]¹¹rÞß²{îÖT€¬íe—‘>S„a¦*mç'!@&¦»5xñR¯œÔæ”AgL<ݲ%»ŸÎSŠœ6g /ùAÌ+®<Œ›q޵("¼œ1¼¤Ç1ˆ‡ø³ýçïwuñ'g¹9Îwi¥´òÛòëm£ß(ØâKs}Æ § W#}W‘F™ª7i åí…m7§ŽØéŽ·£YnŠö¹ôGY*²„¸bÌô±ûªº½ Âlï'ò©ÎÊÌ;ÆwÎüay÷†MÅ%䫊éô®›)Á¾õ[“s*®)ˆ«1!½@K‚½4ÚZ½(gÞ’‚ô_Œ»[ï~wën~æøó­8Yöãf ¯Àù® sJª{ª=ÎÖ›’Èg×sÄ÷‰f9kNù qƒ,Õ;)æ3 #iÚÒ¯Ô¼Yr¾ýa¦T- ©‘ÏŠÁZÞ—ž,išœÓ'×hB:‰ëÂíÏ‹ÝkÅGÓäœòüãÕÇJÍÊÊÞíp7­¹­ä)®s ³•ó /¡œy¢3èÔä6g$c-©Èòü\ ç}ÙnOù%K–Ô†g%ÿ=¸ZÞDx´Pf™¹d˜k’éG. fñ"^üJJ ’$K–ô”8f.йNV^vUd¶’Ý<šÙ [e”r<Œ“oVªï—™çÌVò°£L©h![HóŒéõ‹ÝWéÝÙ’$çdÉkÞB"„~b?·çêRI’%YªS┼¸Òµùëº|tž$¶9Áá’g«~õ)y|¸RÁ\w¯þË™­¤7.𠲤iQÊ\,—Ù}ôà|yεqŒûoVß­9»Á·gJ¥½ß$È•=@×Í+RŠ\>'JOŠùM‚¼,–<®2ùœ(½°1 ú08µ)å˶xwÒæDé „ÔåCy.|¿ ;5³—ôÆùç(S/‰QL^z^\í]÷È’ØçÇÓØa¶^R£¾Ø;³̈Â&ô5¹—‡¹Ñ0SÅÚŠëÆŒ·3qÛÝÕoÞù·< ’.½É’ßTÈUÉÇõÜ9 @ˆœ-¹(2!ä±— ³m¦ž _‰Bh²Äà8&B3Ý–`Š…ç $YªCJ^ N¶¼°Xœ§¨ ç7ÌŒ†™zÙK1yAº¹°¬ñ $Áqr”©—Ô(¦/¶D[Z5Ù¿hïœ%¥ r†Ã·?Ì”,öÕBú™é~Ÿg h@_>ΘR}8"krS~«¢œv¹òR*ï7ÂqÖ¼3*%9ëâï½'\«>õƒcŸV®¾É§ïëÆàõI‰4™O _ìÃLÕ‹=%k5Oþå>Ì¢Èæ%¡st˜­”®¡ ù¦©åi“Ü=§tc-©>ú›øá×θ!pYŸ’a’2͈ٚœÄºÞE3#Ièþ¥h†ëÃÁOÛæð¶vMÛsæ’æ0[/é[L±0c#vm9Œ—Gçl^²0®£LÉËÉžÂEÇÓ²r9ã·ÁfXIùÚãE$°ö©‡J"8è¿5¦|ߨÍÔÜgJ(Èiá?QLÕ gîϋ煑šÉK:÷h£ƒlÙלÿôÏ' ÉMœ$íÅ_ý*MåSBçzó KE"s5ËÞnÔ§·?™|rÓ>ï¨Jš½%c"8ÌT%áþä}ÐpwÌÎ\Úƒ8¹ß]HnèIuÈüP‰:­„­Ù{ñ2ºìð%^™Ÿ—nfª½)îmà%;|¡ 1_sQn¢ýsëSÝY†ät.³õ²øc¾†îÂÍŽÛÃæLN͔Γ÷Q¦^rÁ˜¯ÙºmÁ%„yñv•i䜎Éà8[ÅêŠ+Æ/.zËÔð ìžqh¹ëíìAòÃ7ú'ùszÇ;üŠ–‚¾¤Ñs÷ü!w?pÁƒ™ò‘½Š_R‚ȸ)&Hž_ nƒþ[–œ ¾ •˜±A'^Œ`Íð>Ž‘¤¬Î%çQ¦òfÚ|LHÈØ<ÃÆò^ç^e’‰fuž­³õ²bÎöa™4||¿½@$9¯ãnfJ¥áÿA>íµ•µõ¢l"9Gti8äö@ýÜeYÙ ¢@DsD—†ó?(Ã7šÆÌL"’#ºx’4ˆ·;KQ¶.)´Dn´­ò´ÈIæ«8pïñL…-r"çRð0[ur’7@ª““wm¼!}€ IðøÂÇÙÊKÌ“]´Ê¢/¦ÙÚ…Ì'%ÄýÇÒÿ˜¢B§oç#A¦FJm$‹eú;ÊR½Úc†jÏsòYÉ=¢)d±®÷2UË)mÅ䬉ÑW;”颔ØHjëpo˜-a=1%€ƒB*ЖÕÚ[œ„þHÚð<ÒoBí-æØ'V¿Ä¾¡?’t3Œõ‡C°¸s–>þTðOκö̶ÚíÓW»]Ƹþù6R´ ÅïPZFŸ m×éË}˜©z½§dBýjs¿¯ 69Ÿ÷ʇQ¦rVŽÍJŠPvÕ©dî£mÕyKÌË-Q?{WGó³.Ñî÷Á¾£æxg™äîø®ãLiAFÈñíå´…±ÑÔo;\•0€R„Ì…7 ÿl¬O \•³w¦i13·¸rE! lq˹UÎÞÿAºb6BŠƒ/ߎ oȼJ2î§(c­ö5óOÿ|HWL§ñd½½½5¢(ÅU9ãö—4ÊÔK®³i[©.lÁM%¼Jn®a¦ŠL=®”}xó¼Í.âö™(Ú3±}Br÷ºì#äå(û@¸½Ûm„»C³ÌÕ$wg¿\Øwmÿrúþy¬g=k,YT®ÙÛSAR|Tøyó}ô×,hM0“¾˜â£zük‹]uŠÖd=䤅Üuï4]}I4Lòw¯eªÞš)5Çt…™©ù|ú¨0¥a’¾ó³U'A17·EßÖ“.Dö¥4,çïî G™ªª:~Ò|¯ê8±º64­àWF|¢1ÍJAØ[Þ€¡ð+£®ú˜æ#í[ÐhñáÆ5®ð+£€:0L©9Š1&^¿NÏTŸL¬röN§1ÌT^ñ^Öòr°”¡Û|÷™WiîîeÃlÕ™PL̽² ³WÚò¥2"¼Jrw¾ýQ–´¨ã7Ã÷šŽÇÅÜk| ð¢Žá£¨Ã.e€)/ ÌÜK!Ó¾˜à#í»l7[S¯î%Àû‚2ÿå)ó‰9Ä!PæÂ<Ë˨J’w/òeªtï93G]ÆÁ‚lËHý!U9{çëg«–tRf4ys$åÔAU’¼óý3¥!ÇG…~á>_—S\¥^x…GÈñQá±Ú—„)Ö7Ô+sÿCŽÆwÞ„4_g‡¸J½2ð¿®øÙkÒ9 ¾+w,õöÉï¹¶wƒ¡­¾ ÉfAÚúkL-r7_ím¥Ç™Á‡…Ú'²]<F™š¼ Éøý‡ôEXaïËöåŸ/½-xð ¯ùeê„Vå°Û2 ââæ†'<×Ö(S/›5² £’–ÆŸ±~¨€x‰gp¯3U€¸rÌv =¦ç”féÀ5Ý–Ý3ç4R×îz¢ ušóµôÛÍ”5f6âu@VØëj {#èΩ h0”°#ñ.w*³Q(hc_ôÖ/[LˆÁkw\ñB„™BxÐ(SU2—ù*w.þݧöEù`F|CÃL!bÇ£oÍqZvûÄšÿ{#‘BØ»½8ÙËY¾x3ERAÄ1ÎV‹Éü¿íð.éGúO’¢ŸÛÉù¼mUü­Ø¢ ‘G5ø†ì‰’7CÎ×Ê£¼‚‹?ö%ßDê>èëÀïh¿vå%<ÛÁ"«üûí¿Ê(-R¼jÉ~ßÄ:”‚k<=(Ml~³n_¢a…”‚k:œùÓ?:ŒåC+_³•ž³ÏBÀb¦,^‰4ÊT½£#@ùðª„ÝOýRE,Nφ٠kÄ~óµ1óÝ6Â’ÿ½œˆYà¬wó|&cÇ)yL$æ)ÿb©ªTú6^©„mz°5²"˜™ép›ž«í)t,õ¶¶W¤: f<›ìth&”3ƒOóÔ±m3£Wt·hˆ-¹åÌà§o›ë?»¾PŒëû{±¸È«dRh×2 3•VÞÖÅ(¼Ï¯ûß ùŒ´xmñóló{™…_*Ññz§a¶j”p͇f3¯³w „™‘ŽƒïQ¦´Þ)ó 6ÎÖö‰,áo…C3òz§@~ìîX30Å.ÓP…CÜü`ò¯¬Ÿûµà 8ÔÙ'“eê®±•¼¾’WÔIU3?Ò‡YjQÚÆ®²z݉蠒ɫ#,:çšUÆ™©Wð ³U玉óØk½Prp·äý¡ 9…9f+»/íÆ ºMÌÝ54Ld qµ'± arU¡Oïék¢AƇv¶6B‘IÒqAqlÿÍê…ÝBŒð´ÚÖÉ’Î9ü9ø.(,ô‰D ¢¥GÃâOŽ»ïr‚Ÿ|ßoðÆíÓ÷}ÄA¶É¬ÓÛ« O/×Ê(W÷ë8[›"ZBÍÅÎLø¸X_ÁOlâû 8èÃÙ.øæ-~<¼,cbAFtÃL•tÂAèùÜXÔØþᕳ…gdä+k˜-q1ûŽCÍí»?Q¾¹×AdVÆHZXo]5yõ@¸3×â± Ôͼ/¬ý÷ÓáÇÆ}BŠ:»…ÑfŒ)q­vÂÌS–ß]Éu¢Ûy3%^(ò8KÕv΢³ç4‘³(ÏÌîÈ;@4ì!ʤÀÃwšÁµp¶§öoˆ%s?ëŸþÙPDh¾`5W{ú‚ÉÜ:c6/üeê…¼E6¼Bf·I— i™bëÌÏHÞÆÙÒò¼_‚†]s2½}.TJ-”x$Ò*ËÃoÌíÙM€òè@(µ-æX‘VYŽÕþ­é¦­>p'Sj!Z\’Ñ@„9ü>—“ÀÿÞÈuDQ(—ó~ì¶Ë×§Ç4h¡U^x7ÊT¹3‰úðâUÆÛ|òBŸUñ-2T㫈˜àÈ ½ï¥| •CqS 3UUÜ}q•k ÈwÛ '¿W'Üžƒ,œ“±Ø7ºnî.ÏA„;'6ýÀÇ_¦…ʽךÏÇä?·ÀÅ™{qsE¦€±x`?¹£+pqæ^«Y¾ Å,—×ÀÜ~cw3ªrÕc”©´aÚÃ¾Š€ Øðæíäv“4g()ßÍŠ´eœ­| JŒ±¸’‰YGÆ·¡øö‡™|aj÷2'›–üLŸ(Xxh„UF?ì:[Ê6c‚4Q^áYD‘UMœhs2K¾Øò Ïò+œv’숶D^ÏI’ëû‡²”d¿|¹\ÞZ-øVP÷Ä(KßW÷³!"_úpâ1FLw'N™Ê*ƒòÚ¾a¶Êl4á% •›_·E|{wBAe3‚â gK‹û„‚›è£÷½ßÄ¢ˆ7ƒª`©ŽÚw·ûÿl––F´¶žËÂÍ|ú™£p‰Xjœ-I#„Be". iÏa󹔟ΠÊ+Ö„ÂX¢•™îÎ{ß*>9ÕKabäF8°4r!sƒeª,hÉ!ò(S9L oxϼóž×"ÓÏŒJœ@j˜‘y¸fâò"¯7-\É+‡Ùª}@dFÐ%pó¶]óË·.Z¨—Ô(K²ÿ#{âÌ={O‹o~¥Ô§þ¢",2ŽÜvÂj'¹]¢@ެd9%¢¨q¶ –#0Øþ>û¥m«Q ~>vç^‘MÕu•;ùú‚ÃØgÊÓý6E¹Ó‡SÑéTæ>ÑNè·°©—ÂÊÈÌ´ˆvH^ëÌŠ™ÆÙÊ™ê{6”&ŠòýîôâYB¾ðµ è¹§*ëÄŠ¼ªr”©2Eôá$÷͉«Ï½^-¬èYWƒlååŸRIó-ÓÍ%k÷±‘k+ûÎéæ;ÁJŒÉ¶m[ˆ‚N<_ðjáPt/ãliYeV(«Ü¹l·~)r¨3Ôâ‘ÃyEkÉíD¦ö˜±–½Ôõ‘8®Ù}¹³¸.æî,ڢƹÒÎHN¢] ¢è†ÕO –#{î¾b˜©ì*ŒC;úÄgbsrˆZQg`÷¤û©óœ×~‘€åŒÏ¼bt¥’"8æU¸ÇÍ8a=ûBHT94¯c¨æ‰¡¿ãq»µÏÇ#S~Fð6ΖVxþ‚6¨“MŸ·>Qñtfq|šŽ¡–¬¦8bZé´4&Žy¯ã[›çEJ§ ùv¯Ú»#ØB dï”\ûEF‹~q¹³õ²à#ØBäi¬¤½Ù›H™ ùr 9ÆPvÑpÚ M/'­×q¬É—û1]€X4_`åDǸJ†™ÒzÊѼž‡—Í œ»ÃŠ„:q6椦œ.ž(Ÿ,”Xˆo Ä @ vèÇÙÛ³;¼üKQ€,uBvÎ_™Œ26Ssï­T@™]ÇÑ©‘<2-œ¶×öÕË¢¾ 35ý ºûáo‘¡ÒZÕ-§f¬¬¯gœ­2÷N„ìómî¶L¹5ÌXY(wÎ8[ZPh */›Ke5^=)ˆZ€Ü{ž™!³ E‡MübÝÖéS3í¦.– DÃch+?†ÛP zØ`\<N\¾®@νmð­ » ö:±ù_FrTÀ=,aÎ# ^˜]¯,=A4TyΜÐ8ÏtaOœÎp”%ásÆa6ÕJ±úbåؽ{‰ÄÐpÚ],£œVOw Öž9Óq¶ÊL:P4[¤]8ÿÜ‹ iÒæ*Î KZ8úåqðè3Ó¶õð™Á ì…ÙýÏG†fTÍ.ɶ”öX¨¬)cÌF:?ÌTÁçÂr4ÓËE÷°MäLJ e^I‚Hþ2°+ ]äqžNƒêY© °Âì¼f0ð8T£ÞÔèÖ¸£2²{)F qÑlq< /QVz/˜neœ-tÇ™g™qIr{g7R@&voò_bhNµ[qsΊ|ál.”³Ug!‰¢a<ÅŽSÈ®Uñ™› ágÌÆe5Èø•Èâ¼å jí÷óf- ú ¹ÏlÇN8ÈÛÞß|Pò{lDsãli­hq¨E惇0}$fŸa_TDl†H¼[q^ý*Ђ٠†s«@#CíæÄ›ìênZáìÂÎHÝÆÙ!›å˜-q?ÇÍ\¬Šì…ýú€Å¼ró¾ùC|@¬`vAg¡ôÿnê÷¬úÙýŽa-ìÝìôï×¾dÎ.ëjœ-!ô!¹FöÿÔ÷¿ðzɾÿAô"sÃFj‹í¯ïÆž¹‰Þ8[BôÀC})æºà1x‚àz|^_êK/j¥ËÍÞîÄ å3[óŸöÕÌuí^ È“zõŒØ*fñ·+`¡º¯ø¶„µGØh›~ºøxZ”v, } éX ¤jµ€·Ÿ¹Û··ª ò#zý*®†³:ãP¿úu!^ ;ÊTv«×ÂŽøyŠŒ&÷(_¬ÑkaǪácâƒ>Èžçœz³uaˆÜÁãlUÕ°?°ÑÔ'}¯™LŸx$g$„ ¾~Ô/>o¾Âô™":4 ˆÐ Qó¶6_¶ûWY±ª˜>cÄw(ŸØJ·¼ƒ·¯Ñ‚¬gü畬£Le$°z%k@{`±R;°è ¶žñŸW²³UƒÃˆöàÍ<•?—>VXÀ¹à?®q¶´”õ¢’uçÉl‡ÞSÉ!¼ D&„íÙ¬'ÓTŽõßÚ!µÀÖI¢^`øHêÿÉ #%4nxa:qû“‰Kgµ[ÉìèynÓU’H9Ζ0ÈHQÑ‹qœ¼Ð.i"‚GÉU‡™Ê~-QTË?7T·ß¿û̉Y%Òúê+2ú_íU£¿Íws[º;ÌV ?ûDÓËAöy–¨Ú"|”:Í8[…³$Þ'3—©g7ªÝdÚZm¬• iýÎ8Ú‹Ø_ëóß+%'ª=ÿn"ZýPHÙìOÚº£Œ¯ò‹àW:˜q¶ p½m ^‰'A*hS[1”ÏzüþT(·t^‘ÓÚ2nç3¢£©çd")Ë¥÷ŠœÖ0Û‰V_ØZž¹‚RQn_a¹ä<ÀUó8óÉwåXaUv}%¶cG˜m$´H™/z÷ç ˆ„â¾û­„Uí%Yÿ•¢]²Y'£WBÛq¶j“Ъù{š@†7CùB×üÚeÆQ¶Ôo%TëçÜÔäÈ^D"¹^"¤!7§@O;üWz+v6™çþƒÞF¾êÍêbv>øEt˜Ì`IoÇÙÒ'‘h-Ê×Ú“8=ÒSYGˆnµ'¼5w˜†eÎ.P‘Gø®mŽsx Ëzµ ò\8ÓâžüŽG•eÏ쎳%N!b\”b„j{Ï æ¢ñdÔûA'âW0¸ËÝÙæFeA´tÆÙª™Nâ¯X ;îéþò"Ì¢¥_fJØn$¹(.‡'lolï÷úŠÎiï;ÜMøõÃÅ [{ö‹§T˜DK§0ÎVw#ÊE}9£¨É%‘y÷–t7²\{wmUµMÕL{Z¨>Â{¢Å€ …}8·NDhDÀÒ¢Ž|òÕ0»6YÈ9ä³%8_ó *jñl|à‡JC ¿)A‘Ñ¢>פ!øù•á¸Àãl½àÈhÑ•°q"âsÔ«¢#—Ëdœ-¡‘] ;k·‰‰ÞAÕ¡Ì7ÞárÄ¿vÛÓl{zëeˆ¨#ˆ˜pyœ­Âc”ü•Ûs˜=ž*ô¡Œ›ß©N»†zmÜ‘ýœvL²îÞzè­©ΜE¦ðb -ñn£ÿò üÿ³ö/ɲ伲&Ø¿£ˆDÙû1:C8Û ïdÍ_¤UÐÜ…­NRRrý7ö‰XnN ýàäĦ€YYH~ÐÕLA…1Ï&KK€ü/—Æ@%Hå¯ìÀX’·¢ Q«ð±'÷‡g˜%¢wGW?]Ž®’ýñ«Ú¯ßtS ¨¤WSèJ„î(k£•œÃ§Ëµ¨Bá黿×?ýç£tG-ÚV×Â+Xm癹º”me½šJ÷¸X/JwÔ¢?œSv;w¡”^À­¬WSé«Pº£°íM ÆT'›÷Ï'éû9: Æ–lfš ÌàêŒJ¨•ˆÊ”£ÇÅ*äè¸4Më6±;™KÝÆÖ7* .u'}ºT££öìÝq&„L×éM®©\Å@‘²ÿHŠQZF»ÀB¸v.nøV$'ò3“â¸X"¨Dý#wÏ>‹­À{¢±¼kâIµ¶²ýî(8¶Ë/gQ&'Ê6³â¸Xu«ÈWG§ÈÊxÎüú+¾—Tò?rbT­MÇö•lz:~Q%r"l3% ¥Šx\òöVø¥L¶GòÒx»ùº¨å¹Úž5òRµŠ¸Ó”H6ýØ© Ã$’1a;í¢¿loY ’ˆÝí‡ ¡ý \þìK@°cÂq±$ÙF­2ëÄÇgçBA‡YÏïòý?¡&ˆì°ýò²';×Îð2ç!žúý¸X’h£`Y è/ÛÍm̹'4Ì¢~‘i[–Š";X¼÷ЮšåÂÊ O…xJøãbÕJ[Ù±ùÎÐ$l4„_ä‘9ŸèðTð‡…ªZa‚^^SHÚwv¹Ä*ÄPýw™=*á> Oy9:ÓÊ'j9ùà°Pú’¬Žž’ÍFîÖyËi»ÂõTzw#¨j°‹/¾Ö6æÕÙ’oér¡í8¼ýBi èõýÓ¥f”(¢x£›Ëc”Aã™âü0¢ÍG%Þ¥|í“/>™,£@Qëß³FÐÑ=r°ûÕhy¬Ò»,²SœʲÞü|Ôù¨ Û‹>£Ë 2±ï ï²Êî4yX¬BŸjŒ¾Bþ©üGmÕÀÍ” U¤u߉|OáX¨B÷*?úWN@§ç³‚fPŠxQÁ·TÓ(’¹u¨é+Ì*¿ÿÞ;J€ýAw7åe½xn¿Ü§R ½¬Í3ÛŒŠ$ '*ø¦¸´ïÂî·´ZëöÁÕ‚³Êÿî4H²;šVæÉ¯„¨—…y¦›A‚ÂŽétØÁ #;æt—Uø‘qªŽ• Õ[>Yn~v½žw: Ìrþ»xŸäuôiã¸ÛÞÌÅk’Ûe žïý¸XUÇʯT¯-ñ xU(r~ùÞ©øïþOxbi_°½¬æûï|/^ïzÎZ»¥lÞcˆ)+ /Î Â,©£IËuƒ¶ÛPÿW)²;ûq±¤Šò|ŸÅ¹ò1,4±(×Ìþ‚}”Ô-wõêo½y²(`¤ÈîìÇŪÚo‚>ï\ûÆî½YsÉ%ØÌþ’}PÕ-ñÎÙ–®V? (‹å’ý°P…d½á€ ÃhpŠ™\Cc4$×ZÄ/mè1F ésÇÿ’; 2ÿ«ÙGUÝä|ù\ªGgÌ)Ê;5ûq±²÷á¢×Áæ÷*›“£ŒID; ×µBUÑù}]së’úŽŽ™‰µ§Q¡YŸ§²?*’èúQÅÇ”ôrµgà¡ ¤*JÿkBÎÊ;€ÑMs^ÿ>+šÕyêúãbIBŽB<éœWdÏab1"LUĪ?APõ±ù·dæ‡GäK… Y÷'0¨ê'ú…h'Ú OûL   © ü ¢¤onÅÄý¶”}ô^@³êO\0,T "@ÓÏn”¥=†Éë}až ¾ér>YÂ.»[7qW”ÄÓç)¨L0³§Ëq±RD$Iùäân§yvüÐ3c‹Ž8Ó¥ë¿,Á Íó5÷ñÒ*…70ŽŠ$‰0‚ K„+2)>??m<3¼ø#Fœ€¾¢ýiP^½w,aJEL„ãbÕ°"á„ÏÏô=€;skLœRˆóÕ°PU‡RhQÚÑÖgǪ)Š<3»x Ióÿ9ât?ß>k\IeæLYÃB)+â´ÌÓÛI/GÅ<3b(ÓBÄ8T¹T»T§ š)ˆÁïÜYUA ‹†¶°yöÏR¸Â¨H">°ÚçBàöù}tÁ41¼§…¨ú›&l™ìGT/8d ƒÕ²b¶î‰Z×caW)È€õq±Š”Ùº‹N(i6øiá‘q¦à*AóæIèfæZìè°»V{?sôÂAÓI/ªXlU°mÉ~«¨g$£ÒŽÈ#pbß\n[¼œSV)Ì‚´c\¬ª½)À ´7ÁuН‚SÕ| )qG h3áüâÉ^¿#sO! þk竟#•À˜×Ó¯¶ö’¢Â•‰\x %È#KKËÆOge€OLò™)È;çLT G'߆sëµË .ˆ<†…*= K|ȳ'ï¿õ>6¥™]x Tõ/¾aÛ“aMûr¶™3½*(šÈ;ñør o®‡:·j †™Ù‰Ç˜8…Êù†­Y¡=€~ÕDCÉ»(ß…$>ÿg›øîË4ñœ¾M¼ö½ýÉå=šZv %+° “’·úÚæEYlþøÂŽ$`£Y}bâÚM3ÂV3´à7*’$¨ˆ6`òæ6Ü6 >6¥´™~¼#ÙÄ#\5ƸãºÿüWqUAdÃB ëˆdÃŽü&¦ÚwÜ’>“´Š¼B?xf R&ƇÌüŽ‹¹\Fúöô™–ÞÊ{RÚïÅ&L»‚5˜ ‡…ʧ¦D?>¼ðv¹ø¨hÿF,€ä‡$`aûå>“V=÷°D¸+@ƒ rLœº›ëzÀÀŽw»îšÝ}ˆ…‹ü„#©0v±óê÷¥epŽX,Èn¦Ì’ãb)I/„I{6¶lçVIuàÚéQ6i©3ƒ‘ƒDèaâq+{n Óò,§B.òÍÁ‘SØ9ßo̲ÿ%²p,(ÃëŒQ¡oüÀ KÁ>¶Ú.Aa¡®Z€GŒÛ‰? ¥ëduØR0ãŒ(˜A/r L…Z±½´OÏ2½@ÏuT…ûîX- ‡Ïwîº}5WRðbÁ$Íãb ؈C‚1{´=‡ÍëQeÏ‚:ÞÁFÀ¶ÈìT°ñŒèW? -DAÎ<*RÕH†÷…|ß-=aç ;ÞÙF–µÚÄÀ¹©7Ž+,Έ‚yX¨B(Œ$íd‚[{á\ÀáL;¾l#Òã'zl;D–š+x‚`cP I€‘aع©­€«qù2ß 9:ßýîÈM5Ã8å;ü–…Ó Ÿ ×Jò`ÄÞ±€Òkíª2_A¯‰0£f(šú¥¼‚i•Nk %²\áPéLÜ z^߬Óñ«j¹²ñÕ›™mˆóñü‰Å+ªÁväžÐŽýF´s3!R'ÿâöQÖ‹o];ÍüOÙV ÚÊ6&Ó^Ë+9Ά²ýÞUgµá'?Û^Ô`&²K’– íO÷¿>N2aÁ+3ÃBU­gàõìæ»·ô“ÐeE5O¾5)ÀÎÙ&eBŸX¬³ÒÆÆÌÌŽÈØü¨@‚‹"úðö›óäfݯ\YRš¹Õ- L:ì)âžß‹)QypÄ>ÄE£" .ŠpÈ’mÛ¸l»YzÅ_`åÌÞsmd:¶ž–™ä¤­6)ÎØ‡¸hX¤”3Ü-Š÷¥ýïþ½n¨ J‘ûØöÜÎ!‹Ÿð8fNaqFCH†…ª:â~ ’·UïøVÏ*gî,”‰+¯í´hà7;o+ 9ПUÅ}"™±zf[Xu·uÉÁÔRÎô†Üg\¬ª½-PtR∶CLuö,|:“ 2½DÌcéÅ.¶±ï¦e%O&ʧ3 zt¿ŸEú¡¹7Г°ùíøÚÏ>7?(Uóƒ YN zÈC<4,”¤¡ƒL¦²¹?'ŸÓì313Ç`ôµŽ­L;gšÌ …Bøs†<ÌC£"eXãVöc®l)@³Ñ± Ùâà½|+ uÆC¥|¶,`ϼ΄$÷dÛÏ´J£±þ3% d»[[¨ø®æÝ‹EȘ‚ÆÅ*RP„K¶¨vLÂ^¼»2ÃhPíázöæÈ¹ÕBkÄÂãüÂ;° 0/àë•m'e¿R;ŒíÞÃ?;)Ï0]p1ü°P*Ú'®e5TK8Ø…íM¤F¯2~f_ïbkäLŽ¡ÅX¬Ío¾,X½°(B¬a¡–eò¡»¦X{÷B° ÕõsD[–+ŽƒÝ,&Ip—{€à¯?`WDR¶(qŽrë3t#¢ý@­Èº†„©ºÁš(1óíÈY½¾þ ]‘EYœpÞoYÏE}¥úÊ«HºÆÅ*HW|! ôD¿-e0Ôu{¡as¿Œû*QW[h­d:ß½µRí‰}}IW„Qž0wçê U\™Wñ}I²p[&ˆqXDûÄWo­ÿAf_Ø ’B©€kOjc1 µâ&3*’˜ ÜÂÈ·SmöÚÁy%â>öîŠ@ÊÛuyËÁä÷Š #+®Q‘uE°e‰•ªžOA[Af_®È£ÜtE¡ƒè,ì™Y‘u‹U÷T~Ù-+Ö~¿:£0dúõëŠ8Êð¿[ÒxÑ~¸:ÚÿëŒa`' ^șܨHUÓhàohe+J["ÄEŠü3¢{Çfl¡Þp¡Ý^@*1Âß~›‹U`³ɰ`F-¸»í„å HËkÛYW¤QŸÿ³Í l$ÇÜÞ6$×VH Û¯ý;3+²®q±„u²…À‰ã¦Í]#…ç Ó/¾W¯Ÿ»;°)+ºìü`ŒÛsÕ ôŠÜkX¤´•nFÕÉ|^LrY4AŠÏˆ]L…ß s°÷˜ÈªúÛeáÙ÷®Â%é‚q± ?R.Ô\'nD›¦µWX*êgÆrÆÆçÂó¼TåX§c‘`Ù¢íiWÏV•!S.â±q± òA0ùÆ1¿vÕÓªx!†½XL¸X¨u±&²âŸ_Æá¡ ?ÄaâO¨Ø—ÕE-Ýá¶Óéêæ50d>F°6,TÕhûËÒÐg»ðH>-ü{•"ó¶Wº–ù—±7^·<ëUeå;ÈŒŒY|\¬âÕŒ¯)Ë ¯ƒ´Õ@ïMÉx€Ê²ð¶ZYŽ8͆ƒ,ôLC’$¸}ùZ``–Ê­ ±?8ž†ŒÉÈ×FE¾išékׄ'о*ßCæm¯õpF`¿¸í—ò+šÄ¬1™{8F…¾qšÏglïÆv÷Kf Óƒ ·?,‚aM­¼p›YLN… ʘÂGE*xj°,bzž/ãU3Cbnï„-10;XXÏ‘ey_bö %cŽ©jÕý…ièÔÅ^ßÁÕçugGCæmït-ñ/Ë[2XK¿+5!(#£}a\¬‚®E–f’0>õ†q\eÙu ´í›#ì‹“%ÚŸ0U‰Y@0™»r†…ZÍÃÖ[‹x^‰¬£œ)™›%Ë–Z^À“™ý6;±'d.×ÝÅ çËÐ2»“Ùl$*qb+È@ùrX(É—©Y¡Ê׫=…ƒÇ¸Ê¢°[N_~„Ùò³1!¨õÛ®þÏ…­@Pý£" b‹D ­·¨6ö“ BݨÀD½-_''»Úöi²¨ [DaöW»Ó±¥°eîÅY4.#g«jÒ dÍ›t¹döýîÆldHì­"mn[ˆ4Ì’áŒ)ýíðù2…ù@ˆQÛ¸XEb d ÌG´ö6ž% C†o¬íc%ÿy.úB¡ÿq à™Ñ´cã+>m>‘I] °±ˆGRj„pNan_x{&«·î«ÕA@]Þ8rðgŸÔè/;ÜñØèl#[„°Í %h.’8Lk[íÅjOañ!·êdZ÷šS3@åå²¶$CaG Ù熅:YœW9­ ÅS`V(¼ ‰×ýAç"BÃö½“ØI‘÷/î‚„Ù˜´‡…ªšpC.Nù›"FV(¬ ™Øu½£ oŽY½¯å³Ù¡Ná/HüŒàmT¤‚»EÊf ®}äv.³‡€%–\ Já¾Ìí‡*k¯~¥csaJ Ÿ¹ "Ä-ò5p(ííCNîNR—‚08‚©-Q1tÂΜîxô~dµdpFâ6,”ÈͯYÞkOq·¥~ù…m•K!1¸÷´—¨zawJör:½oA"gÜq‡…*ôͨfZ]³C4Åcpã Dñ¬¢ºˆÓÐèD„bSENÎûAFnL|£"U½¸¿`½¸1ÛC¸(FFwµf˜B;ÖmíídáFkû¯oßEé ñ&PgQ{S.÷ÍDjI˜Çœ:.V#ôC/ÄÁöŒOf­ÂÞ¹ ûòB‘b;àº;;XØŒë'PËÔFìúœƒÉ³EBf´KŸ<“}!ùz è·˜"ÁLŒÑ¨ãE)q¶yÏè§³ëÄwü;>½O9$´ï±d¿ˆÀÒε§}}‡ *<júÚ8nÏýâ¢_Ìh‚H«öʆôÓ‹Í"ƒH*+câÈN8$T¿ÝWîáÒ§˜5UVÒߌˆѬ|ÑÑΰ|Ôc!xÑ]QÃbô#bÈ{æ­”¾¼µà!‚*ßÕêm‘ÙÜJ”ý§ ‰bÏnH_ǰPU«uÀ‹hµFßüfJ(¯îP«G&ïT0‘;”d Š|;ÊrTŒø3îÑÙ1,TÕ ?<^x ¨– «‡€Â?°`w–Î,³ØÑ×j\ ÎU‹†À=bÁq± r@w®8>¬^0«á#ü§fˆ|ÍMôx©û´Oõe‚c>)I<¶{ï~è¾_nÁŠ0ϲæŒSy{(‹Ÿ¯Õà‘xŸ?îß)iÝÍ :gö_Û`¢O†P:º9ÆzÈ­›OžLŒêQ%è‡ñ¤IОÕìrgáÉ`ðu‹É¬ÎVè}°dlûÝ„êÈžG8.VÕÅü þ`°\,ãAÐE£æƒþ ´-Ý(5Ÿ·å)(ž¼Û´‚{áöE§0wDÈŸ 1À@ÓDè5?£&²)#C‚ÆQ‘ªFéÀÑ)ݲ¶=„‰ß^áîÈèñÒY Ù/ül>Ÿë¿œ¡~ŒŒ ‡…*äð@m /€qÛýÜå¬î‹¿˜1’@«¡Û÷‡ŒÒþ„¾N1MdXHÊ8*’$ã ÑËtÚzÆæVÜÂýY>(¿½Ìð¡yu˜Õ‡1©iB ñá¸XÂ#-t»þl+á¼ü« !ŠÄù°®&ÿF÷¾ŒÔ7‘@ â¨H#.DC3µÍF \ÞМý™(æbö‡ Fvg¿iÈ+O˜>Ï!»&2Ýc?*RÝÌüe€ÞÌ|,|Üñ Fâ„ïX0;«”̫Ӧ_À¢® …{Lƒãby0P@*VE{‡Ÿ\Å€! gͧ^ú'ŸÃ Fz‡}Ø M[etR¨·">ž¶†…8Q š ù¶'³ûñU‚ ûSï3'»n—ùÝÇÛœ–ß$W¸&2ã#Kè`d–0í{¶Ó¯¨,™oJ;“K€g+°½ã§+¶~kpvNãcÆJRfd(¤pÝžÂâ}ÍÙ…!¼•Ôoݶ4ãÀ²ßy^zQB|¶^Û®vN-Ó„`@¦Õq±ªÎæÀ ½µ™;ìJ·0)ò÷Œ¢.ü¡³_\¸þŒ?+8cd‚ƒCÛaz(Çê©·Bx!]ÃB¤ñ‡+f#ñ.î=P‡FâŽ_ʉ ¥Á…ç#7¸>Õ3‘©!…îa¡$£F¾ˆYªöhñ‰y|)üAúƒÜCÚÏÞ˜  žÌ‰†ðð[«c"sC&Óa¡ åRØÇ1 ÛíÌ;á,¨–i:¢K+yáÏféeñqìÙÖ!xó5Mgàˆ¾èãy;w¦ÒìÅP(É 8.VÁ3#½Duó,k•ÔÞ+¨híÂùόЃ…´ÙÂòÊ)1d˜$ѫ굧‚…¹Ùô]dâÂÝ‘1geæ`-Ù eÆË–×~Uöd>$xªê¢þ¥Œh¢Þ¹BìxJRìŠ!¿y62?£€;†ó¼ùæ¦îŒÈ™eJ™¨ÇmÇßöi/¿:K}ÂíüIžÝìÚÜ/L³²‘÷Ôÿ˜Ôš!À¦ŽQ‘„ÔE0álµÏÔ>ÿÉŠQ]™Ý½gÁÄÒÐÊzóðmçÄ…5CxIݸX…Ô…ÍG=á[·;%)©Ï#‹ŸL×?TÑÂ:oaÓù[ÿ`âmN4Aáe: G¥«ƒ#19¼a¡ª.í€î>¼Ùý°=ùð~…$ã½?`^àmV@mR¼gŠ..‹Ìäó†…ªº´ºó¶~¼8Þ“ ~ {î÷e€Ð³=G»T §{KJ³m7Ödö¡…©MÝÑqáYx`¬š9&*hœÐ7¯L¼°ºV¦ŠLiÇ«`Ž1¢§ü¦@ᆯʡ‘)ä:F2ˆÞï™mu Ý™RHR{¤‡&r¦>/; _F"Œ(B‰áOwa$ä×çÉÜ<ƒ®\ðê¥ÈX@q\,A… ¢…:ßÃ꺰º2¾+Ø æÁèãwI,3÷¥ÂJ!À¨p\¬ªí;A´}ƒÿm¦òÖkõe=tj»òÞCóµ"û%ŽÛaú%2gGŽãà Lz † !wLîcâTÍÛ¿xÍÛ%Þ>¿ª°mdø‡I#09ƒtm{°`–ënú*Äi!ÜŽa¡ŠtùúWqܬ°\ŸþÕèÚÈ ð‹ü"–³,Ç{ý°„8¤0[$tGæ7,”@¿ˆøÐWµYúiŸÙÕ…)#cÀwFÂrŸŸŒ?F !wd~ÃB ò‹€Ï&/½ØîÖ•Êl‘ເ°œ-¬ƒ¥œÝiåmÐbtÇ|9.VÕe(Ü‘7WÃ~óVÖÊm‘H cŸ—‰ÓöÓë öyCÊã•߳Ϳ>¹+œ &f‹dÈø *Fð‡éX5×öw¯g2¿ðd`$$‹HÌòÙâÒˆÍöù礡 š¼¹ÔŠy/û-„ ò—ªŠzÿöŠý{s^aÞHˆ±JªŽ #ÎC{îèm™ðêÃ+Ôp‘‘Yá¸XEZý¡ƒèß¾°‘ì[ ÆÄ¿5=ìÖ`BíO6‡×â£èÇŒ:,”dÔ1…v³Ö>ñê]RêÈ€ØeÑœ©Þ‡×ÄöDØ-ÙF!äÌp\,!{‘ãa4ãÄÓj{Ð,¡Õ’!¬¯ 8ìEö…÷âЛÁµ¥>ŠÌç(‹•sf¢x¨’?T,>q©0edÒ÷׋ä ;¸O¼Ÿ:0-|™Î‘ë‹U$ÄHñУ½Pï±{ þù¯²\è{Åz‰¼aúàŽŠc¶9¶¼cK,™Î1 U`½Hñ`¤¹þÅ:õ;7‚"Q¾/Ó‹àÍPœ ¶°½ëe§sÄzãb Ù‹d3®ÑJú~ã±ú)2ê£Bk‡«•ï[ª“wÏ/;º,èõc„tÐÛv&0óô#£©S"s<ò¿a¡Db(ZÔ.®ü¶QNî¨ÏEL]‘ûE‡&ÈÑ…'ÎK1 —EÆ‹ï™7ñ>[ÂëÄr¤}x IUg„2AÒÄq± OEd‡V7mеír“¥x,„.V™— 0±¼§ÉCŸc¥ø"„÷1óŽ‹Uu‰0ˆ6ñ‰5Üæ…má±xøÎ Ïû<£þЭëWµ‰3B˜=ãb´0°Aôrã² <ˆÉ]b³Hü°§àŒð,mΠa‡õ¥÷ºðGdÌG@8.–Á#a3œÁYHíc½ãYüBá¾Ì-‚1 ‚ó1¤[c¤ÖˆϘÒGEêä²™ê©ùÔ\.K Áp=òÏõO=F.öyúCñ‹/Äâ‹vÆ8.V¡pF=„ˆ‚Õ¶=bÙb!’ç;vK`ÌÖ–uÌ¡>ž}šŸšžÑ.1.V!#GÈfIpv=}Ûü)Š âòNóÔ~°ÊWL)¤£A\qû§H~Ÿa™AµЛ‘Ä;!ˆ¡Œ`äO%f³ŸÙ`×í {¶5göèÛN|ö€Õô=Ž‹µØ ýç~¼PÓ Ôaäxf„h¿˜=èvXǥؕ3"£>2Âa¡ F‰ :[©ÖÛÖÁHÙc!Ìð›Ý#ÅÃ1ða€›¾iµFéó#û°X #´ ¿¢ó{»Ÿ;• §EƆ®˜‘Ê?ß:pÊ~£Gi¿¸-Ø>¼îÙ¶ÕC!Hî‹a¡¤ºäõìͳÝ6óM)ÜB_+‚Lû,qOz;Ÿ™Œj  H”8,T±Dn'f·n&wî¼ôF¼Âÿ }É}x)ÿê¿kvGdfGØ7(PÁú"ÙC5–úv¯·×@b´È𩬰¨Nfg|îðQûÚâŽÈÄŽsX¨B“Ž`Ï2&çmµ§àÝÈ•Ï"ÿ¯­"ò¸'ÍTɨŸ¨9BmÃBIÆü!{&íYw0?0íÔj²ø×Qß?ýEÈÄâÐù¼Øy 8iòaµÉ!¸ŽœoT$Á|ê}h–8ìë´Wõ²ÃB¸_•ùîGƆ5±ñãi€(L™Ãq;J^äu¶ߘ;ÐÂáv¾Â]‘™sTàu˜.GZsr¢yÔ~z=2¬3÷‰oÞb¿8ÞE;óq,¤z0¢Oã›&‚g¿×±òuù¯_X'2åã'ªÈÃÂ8´ñk˜i¸P F¦…ïp0á;“Ûk´  ãàï©Æ E|´\Œ‹U$â_hç®.L®;_áÁbø„‘áᨿáÀd¦d¯vÅ:‘9«†a¡Fh™Øúذ{soò`/ìϲèÎøÎ{§ð'mUkªo">²Áa¡$Gˆ~€›çôuí½ÙjÁȰ°#{*ŽðΖUTÚɆ£p³#Bðžû9E’D! £•Ö½Õg¸æ …ïX0;4!cü&Ì(¨ÙAàmãbX0@@ô]/ÔäWÎ+| ߩ`w–¼æã÷çÃÇZ^{Ä‚ãb\0P@[hóLÝ:?}ÕÉ98á Ftg™Ë¦«X.k¡üúg5;d¼G082–åÄÛšYήpO…}+YoTL–±qd8·N>æ¦0X$ è|Ã#ß¾Šà/»CÃôÂ+¡7ä…BøÁà°P⣈ìÎ*Á¶ .3S£8+„ïÅÐOªÌ´ 8zñ{.‡…â…P"GŸXËû%w莞¹ –ÛµõUÝûƒåEÚöá4J}8ˆZ!Èå U¼Èí°)O<*´G|19Š«"£½?@^Dmè7›2ÈO›ƒZ!2#ǪH–‘ÚaªãD“ás•a¶U(ØûfÌHÚ,3mØ`kÒ@Ò. Bã˜åÆÅ*8^Äv$vêØÌ°ÐK!î !{;]ÇšÀÄ1_ÈëÁÝMÝÂæ˜ ‡…!3ê–>Õ†Éuv¤Æ Ñ6]c @Ð2«å‹µ}¢¬:'4ä11ªÅV±Û\“‡Àù¹ZÒo}Ædî•Rtÿ<…!B` 1â¸XEcv€†–mÈ€=åe÷fUñVd¬øDŒ˜#Vf^Ï;MLk•"£@BÄq±Šü‘¡mô¦’ó1€ÅÖ ¡Šï 1Á¾ »(çg~D´Cd«`‰¢íú¢:±lŽ&Ô[‘ñ¢#kœËø“ÇöLûŒÿµß§½P» T©Å¡D,q\¬½Ðöa(4â–Ûi,¼ ÆQ÷½V®R=‚0ÚÝž1t‰ Ù¿i·Óˆ>*N]BÙÈçÆÅF¤qÏnL–åϲ'CˆÝ»#Ñ14+¯ÌeëÆCTe¤Èèm\¬BòŒ§Q”+< ޲)C4ÐwúÜ=+·£i'±*|ј<‡…*è[dmv* Š°Ù/“§X2„ǽӷ„ȼTBíݾÞŇÆg7EÄht` „»Üp¦™|Zgò"8V–ÆçäÐùŒ-fâ ­Ê·‘ˆÒn{,~\Ûʼj5ãüÏ~¶ZiçŠv²i‹r?W¿8±rZD7FÏ«ãb½°ÄˆûÌ2a ýÁæÚƒz(%ŽŠTl‘¢õÕ×y:­n A‹_XŸ³îïÕ_~kµ:(2ä†2,”€Ä@-³³ªÇGvŸ…x1„.úó,< ùý6U÷«r oDƂĉÃBI)é!êÛ›[ÿ|ýËkÛÔe‘ã;NLÈÏÖÕ¹Q:™nÚíÕ!T–Ša¡4W%|ø¡9.õv¤â……É"#Fd‘¢ ›vM'Ù¾F­úE.‡ùY •„ÓÝ…ƒBØq±p®4Ì®zf½TЗà¢{÷Gz¸Âªž Á…ÀÁˆïÌXÙ-nÜa*§E&|dƒÃBh0¢@[¶¦ð]|Ì£bÚZøeƒßa´ØA­þZü°!N !|î(J2k &nX„í#ï|z…m#ÀÂîÐ(FÝG|‡ê™É~=ý~<5[dÄǬ:,”°ÁH­híO?B¾ ¡…°ÁÀï~~->]>b¶ÈˆšÏ @B#D“µëóæc§Ä³!¨Ð€–#÷nŸN‰”ÈqºV¾amÃÚ܈#ú5þDŽ ‘¹±+ãr¾2PdpHä8.VaôÎl&Ø.Èf3FF¯À1!Aƒ„&’¶”è§bõO(6dv«H¯‘/bTÁÆö‡yáX¼Êä7»F,ˆ—ïǼ^^Ü©BÐ!Óë¸X‚#<üpò=¨ÀÜͤâÆ¾ØhÕœ°ª'þ‰Ý_ì“j³BÐ ãb TŒѲlËH3²ìäçõ“‘1£‡F\%Íà8{瑳çšÂI‘Ù ©â°PTŒ5ÒÅOÝ>+UÌ—‘A#OÙQñ·ãŠí\~_ÃòŒb+àc䃶뷗Ùl4ó3O ™7‡…*ÒfDhàžèµŠ’·ÙdóF¦‘ïì1âA«§î•¿è¾øQGý‚éÔª`‘4{¼|hÁtùÎ$Þ ¡‘_öé íÊößoßát\®÷¨çB"«q± öH£eÎeg_z;!ðð]X32ôØéÕ„! r²f[FŽUÄP‘ "Ñã¨H’2#ĘCø›ðùI¯Õ™!üð=e&X‡Nh”Rv#GI‹ByIà°P ÷³”¹:W·ÊÖgQeoFbƒÔ§Œ9-žñ[FÒó¥âÂô0c¥mÿàºKW›²åB½£"¨0€ÁǦà©L;ïÖ(¼+TèVó,ÉÍ8â(8û€Àä¸ÞGR8,T #üð~w¨b¾îÔ¹‘¹¡?„/Í|ôñÌ‘â¡cÙ}·*èfÇ´z/2飖=.V‘9#4ªrlØ ¦­O²Ï6†Ï†‘e8Ûw| o(ìâÿ‹%òhCmIYÎM’¾Õ¹!z©ëqZæN2¡V•ñT熠Å"óvFD}hŒÝœhÞ’¨V ÁL½ãbY™k…¥ýìÓ*6´ÂÈÜŸö ú¯Õ•‘Áâ1¢>[¦÷Í Ömmb¥HŽ8.V#6D'wËA| |ÄêÊÈ`ÑùÜù/ä‚ÕgñD`ׇ'¨1ò@+ VSôqœ$'-Ì6 U$ßnˆ¥xûAuöëÔ´!lÑ•$¸3øÓö!6|܇&í7œÇÍÃ¥Z- 2‹U0ºHäÐSº°¨kkÆõmdj÷et‘£™BgüÌ­î”ÕF!¬‡ q±Ä€¡œIh¿ÛËÞE—ÐÄ’‘ÁÝŒHÒа¼ò˜yõNRqQl£ÿbX¨É¾,üpÑ3jœöŽO€Nx 3s¤Ú1²ú.('– ЄçæûöK¤ Eâm”†…*’fÄrîÉl[B{WŸ™,~ Aw]ýýApÏ<ùÉP -@êÇæ«M]Âј†Š¡NŽÌ¹½»p‘¸¡KS?ÛÓ:}öN2e’ã£Z­pÁw¶µóÈýϾñVä¹É>Án÷.n‘E´Z<9sT¨’&”glïF)=·—Û‡º(öÑ~1(P‘Ù„ïÖ*jûšüֹʎ‘©á7³GŒ‡a·È9:',1QdÒǼ>*’ÂÑ‹…«•ÚGÞ9ÚCÝ™vëE1?r<ô_Ïi°´:(„õ‘Ž‹%˜0BÁ×ɧ0ùüŠlÇÈܰHêcËóuµ`WÞÜ® á}ä„ÃB ) \ðÃëhl¸Éeglz7ÅŒ!ìðç%âfˆkÈ˰à¿Ê!PŽ5ܰPE®ŽðŽÔ uWŸ¦[9(à«pž›%"q³äµ %µì…=Ùð DŽ,oLœ‚ãEj‡êÛ>û⬸&„êñði…>ìÄ)sbÓ}¿;Ò8/CñõÚïB P BìX Œ5YV¡ÖM«Wrß”ý…ÿY:m_‹1 {€q FB„ý›ùéǦJ—‘å@{ÉýL޳+¼ëŽ‹%ù4â?ô `þe{ ^+F A„¯êvfvÞÆ~ú-@„Ä@‘±óé¨H9&ô‡R /@{Üz…#ÃAnç™øÓ‹¶ËA–iG5"µ·ýôíju “ÍѯQgjˆòÁ‘‰žRŒÁq·„ø'’ Ž‹U Ä Ñí ’7Sa³-Ì*û¶w{GÌg† +yíw7MÅSˆ…"£@2Äq± ˆ‘! ö$ƒvqBDµcd¬ø¥ˆ‘ó¡ÊeoÂtM>ʰ0QdÈ4:.–îV úœ[|n¯B G†pE½÷:¼ë‚¿¤ÏdA› átuKB‰‡…Ž©¡eZ{v~÷ñ²…CÀbO´Ë?ý§Ý)Άî_Ò÷!y6é¹j'îÿÙ?¡4΋a¡ çE„†˜rµBŠjû†'õbX,Š×ÎÇþ~`Pž8Ñ¿°F$ÖGF8*RÁ#ÄŽþ‚§0Ó⣋Œ ß!aâxßɇMT¢%]¬õ1ŽŠT$à ˆVî WÓ<‘  ëU– ží»-aM¦!Ÿ»7ÀªEB@Óâ¸X" @в"/jw n‹Ì ŸÍ 1<“úÚi¨¥ä9×U\‚ù˜‡…’<ž sm{=V¿`¦pXdÎ÷‡Ÿ"r7´Cso¶_'ÍÙ!hŽPoX¨b>ó/Á³½ö¾-“â)0þŠLùþ€z»ÙÊj}M×êžN±<™#ÓªH„à¡­Ël³«š©©}"C> oûÅÜñÉG|&ïP/r7Û™ï™÷ÆY.ò™Ø"ÍÑP1*Rô"ÃÃZ©ijæ91;,ò9һ迼œ`ßu€n~MuûKûÙ¾}ìÕ¡`Žòô¸XEÂŒjÅ…ù`×S“¨Ë"3¾¯©"B7˜îWN2kïÚäS³5BÀMãb‰©"Šœ¶ ï¦y`¯äHqY$”r\ãvÛŸ¶ë¼©õ& …ïÉ7Ò;´Sï¶mH¥[Ä‘Éà¨Hm»ÂÛn?û(Ê-ùÚ¢ó§Àg6X*|ƒ‰ÝÁösÐ2u]>QV]Â÷˜{ÇÅ*Ð`ðLâÓµçà'\uX+üƒ xgÙ3TpPKS˃ð=Ò¼‘ü¸»}¦¦ñ #ÓÖì@ÑšQc—9IˆÕd@¡cÁÕviþ¼¦Í“oÀw–0O$ÁÝ®œ˜Õ‘Ÿ'ßa± ê!J|èë<|ãW‡…€8·àìTÁŸÛ}£)çQ#?s·(®Ÿj+‘sjÕ:!Œg„a¡„ÎgyuAÏ Š• #óºwËEh½™çN6.eß„6²¹AÚ—»YÒ³Ÿ^sEe&t—øúøÒ‚!êgQÓº”œø-µmÉ𪾠al„c%\‚á\ØÝág›ßRJ‚v–}çËw¡­Æ§FæzP¼Ú>~ÓÊôÓI©º+2‹ã©aT¤²áù—Ø¡çù°3b{«{£Õ!TÁ§Évþ<½ùÕ®!ÕY3MËDªÓ~yüåÒ>ñë°x„€Q¡J⸠a¶ƒ~-+C©{"£Cš.†„©Ú²¿tÑÞ›d¯‰ù­p`$ùœºêÃT1îl 5UuMdè»È HÓ?Ó£é×ì8èZÝ·[PœHz^v‰ˆMR<æqÞên&1u„ôo§jôŽT}ZNÈl7¢ª(N !‡Ü'ÆÅæ ㇠hçÌÇY¸:„B¾Já™ b€ÀÆ1‹·_iW˜12;$tJL1Z±¸c!Ldþ…§#CÈw,˜ÀGöšm‹ÁëëŇ!l¹X¨ª; @ôc/|AΩߋ­–ŽŒ «ŒJ Gäv– '?ë/Þë”Ì öèá¨jÆôÏçŒÛ|ç«O+ͶÁƒß´qêZÞ,5ݳ 겤ÇÄ:.Vú3A±mI8-›ð‹¬'f ¡ƒzEéÍŸ¼½+3;SÃÅëÙÛ#ÔA!\Þ‹q±$þg•(o£jOátð[˜12#üƒFjgk«ñoh¤~OZe¡ÈdHp\¬\pØÕÀÃb+κR›Èaä„èÙžÿåãbå–L‚ß¡a"{¶1·šeÏ?º÷AÜBÿ裫H™Ú¶Ür’M½½ZðÙ]ÙY!(ÑmS¼HÒfSþ‰F*ÿªŽí@Í!aÅãæ&¶Y‹gB(!ñâ°PUÇvŠè؆¥f³–o–tb¿Pè˜M·öhOUÉ~Û]öȆbŸNø|cB©6ðD Å=)ø›Cl5bdäè¡ÏÃ׀ˇ‘B>¤œb'ì“íWbŸÈÔ¸qX(Á.b¤ãHrõ›jÄþøžd´5fS1‘O¿\ì I‡…*hc¤‹–<[š²ÉAöfŸ\%FŒL ßycB‚ØÓw–Y-tOŠ"cCú.†…ªš³^DwöΓ†½¼ËF¬‚ +ã…³Äü0ØcöÞöÂ>‘‘ wÉA ’¹á‡×ªÛµ*×1{iWx1[t°²ØàOã@ÿÏÿÖ7îfs¿Ú‹Ë#|a È®ÛÂg!¬ ô¸XU×u`‚èº^pîÞY¬UžD ]«ƒ( Çé$‰c>Ÿñø÷ùH{›õf;‹Z-2ôâcP¤ªéú—ÚZlé[K[“tð©eC¨¡KÙØ\í§Ÿ6£i™p÷ÅØÒ@·gÜ"2¥“›øÿ_“·&FBÃîäÙ÷ÕÇ÷¨…C)"Sö¸XŒ´Ñ’q{ÍqtÛ{iUØA2‘|ÒqÂ&Â͘¢ú½¡ðp"äþ2.–¸?¢–ÕHüHÝÐK=ñL?÷S~vp—#Ñ©†n‰‹Ù7¿Ãú‹ý×3ªÇBØÓÕ¸X‚Ý~(:§qƒøfÛ'íÛbÂÇ—ÈÆ[ž6Ìï§ÌrêûÔÏÐ0×êà$ÆŒ”,2c#œ‰¿öæê@â¼¹ÚÞìí;y^œÖ½¡¹ÌÏŒ¨íÈ4¸ oâEê\Œn‡A 4Aœ!Ë¥"Kit8dDdu_2Ù™×’Ps¦‰8K ‚×XE UˆÅÃY.[OîÛ¶£ûå¾Ù°I]­wTGp†¦§ã_ ;ØYþUƒÌÖH内(æÐ_þ­Ÿ~´·‚`ºÂ»R'MØÌVU{Ø+ÙÒP‰Å@ÐÍ ãb¸í ×PËøév;üð’í ‰¾ýÁÚ" ƒWrç;/r„z 21#kKS`"kèYžà©¿ìFQ$<ñ+|+ §h‰tû:ÝœÜö ™—hdŸÒ0:ÆÅªš–5sø‹b¯O¬l ™¬=Ù0Ò-ÔWÁdü–ÇŪZ›Oó­™OÁ' Vž…ÌÜÞ [ä`˜ñ~¡åº}o«‚ŒÊh=¨jl< ½Í‹›pë½ÍÉŠ Ì͹Šþ¼»E5P0/>Ú‹»›BE‡jv'cþ© g‘“J̸ÚòÚx»ZåEH(íÙ3Û2•‰¿ÞSÎ…TÏ€ð/fÌq±$N†©ƒ¼žëZowp©ÿ@XÚ{2ŒxËÖDVa"7ïÚUÓ€ 0¢³a¡Š›O#)³"årU¤=iÖ(â?˜Fá†b"4N£H$·°)9bKÌgŽÜ¸ÛÑ—na-PÆœ9.VÕýÔÐÝ2=«Ó›DÕ¤ Ì­X3žEÀ…)ï„À8 z·h2dF5{T¤žEV†öæÝߜӛ†Õ¦ <Ágxµæ¯W+²2´&]˜†gG‘Tãžæ¸Û>ÚPzšã‚Qa²Š{߯¥Ã¸l]P榇a±Š¤y™€ …a{ÌÏ-Õbp¦ö54DÆ;Î<üJýbKFCøXbhˆ BÙÌùÜp%a\Ô_.Þ@à³Ã×ö|TØ¡BOóiº¼3^ý b‘}Šd×ÛB¶Ÿþ®Ä÷À>_{0 Èëæ³$ #DæaÅù͹V"Oh—›¨QœS/ö¡Sä™ãb\+b,;&œ'ÓÍúܺ•¬ºÜѪ(T’·ïj.üe)¨H‡µñRª$2W’òýÔ`_Œ…Qò+vr¥=§°9dÔEF6,T!*$f«v¥©Ì(Ópá™HØÌS<–-ž>s1a,?̶(»)·€w•!£.‡dÃbeä‹ms±:*Õýf=‹ä -ª›/¿…·]ö¡k_–¤ø f¿úgbY(ÆCÙ¸X"À¹õ·9¬®­ÜY’¥:Iœ©ƒÆh,¸ »÷ÙbmÈ´îÍÈð™·Rï÷"öëª)!!6¢¹Q‘^Ð\„g¶’nŒÏBNdË–ú°Í‹UµD‡–è•_õ⩦2$bW9 ¸õD:f§+%Pàó0õ?c’¨H‘²¡úDú[î~%iö‡{áY‘^Ù7ç–ÞkéW +¬O€ëK´"t« cæïäEì LñD5,”~è°¼ŸÙ;T ^Ÿ—‡žÿé?ž~Û_æ„ÙÓ΄psùÕǂ؅K1 õ‚"Bÿöæ]X37ÚŠ±gxDì4.–Ðùˆ™¬°òľ.Úå×G õN²½à„²ƒ»|Úf†ç‚ŽH݇…*˜S LÞ -Ýj_÷hdŸ!ÔÈ)B!£å¼á°¯ç`#«òó ŽˆœÆÅ*’ULè‹=©Ž¶jd¡P/8^ Ô9E,„ª†›Ô´ì~W¡rtAG<Ž‹U@§ˆ˜,aÍ‹ðÕq³RùŒ¡ɯƒˆÇfUsæ²ÍÑÝŸ?ñc'fÙO£"=BÇëâêèá ÐvLü †…’SbDLðUž¸¬ùêP î…B'…uuä°­¿öì΃‡W–‘ Û:‹U@§ˆ˜|¦>%ö®‚ÜÅÝ'® [)-“_½·Žf¦e·¤»óÏX¥Ö•X¥W‰/Á%·ÙnÛäé“s•Ü ƒâ©~\¬"ÿFV…wÆÏ›ËLü!&¡Y°«@˜ŒÒï+ÅÑÉe;åöJ¡H¯†…ªg­26Àœ×ž‚_i­%ZÎàgäO»4½7Ï~!^aLßMÈízlùD1ŠT¤â€«Ãýtl¯õ}5d¤Å,¾Nð^ž~åí¦%Ñéðùc“70)ßZEÎ5.–p®ˆµ0Íֲ͈€O䀠¯?p„Qh†=ð›Úä>ŠoÂîX1‹UÜÍÀ–åßΊÍYo£U@†_Å‘­C¬ˆ™ü@p\Û.–0‚ïEQ‡kÙíH9ùî{{Üê©gm¡ÿv嚘ý@XøZGϰH™~dÿdÁ•ÜV9fVL°£"U¸m¡÷6æ¹]>*«2 dúÅØËdûÙ»WÙ²Ó)ín8m¼÷P}¡_\/Q¥ÆüÓ‡j^Aí;Þ°`ùÓN&´(fåÃ%öÚpåì¼Âi©–[FEêú0öò«Ù[~鎀ìÃëjáÞîgƒ0´/1‹LËJ\KB.‹²‰´°#dîEb6.–$øÈÇ0¦}¶Ê­}êÍ{Þ†ÄÐþ02D^åÝ’3ròá ²2Ó¢‘aX(Üu‰žÛã{bïÒ¾ðp=÷ùÍbl8æoØï­²·_Wùàç·F°„´ì ²°Õ¨—z2õ"/ªÀeŽYjŸ.Ë—xX$øjlˆü¬X/N¸…ÂhuÞk§[æ^ñ"¨"ŽJ뇴°7ž‚ì“rP°z9ãBpþ|W¤P€„·íF;&yöK~%UÏÙyP¬‚^EXeiÓ&FÛƒ˜y7Wá<È8ëKÜQÞ>§(1øï¨à¡,šÉýtnóîµ§â^1,”x"ƒ‚|ˆÛœÛ“™ü%Tw‚pª~*f°Gv„ÖØ³QîÛ·{u ^¢Ï`X¨Œ<í8Õ>RWM¿S¿~ßýί"a‚iåà ‘Çæ¿r¡PäWãbU°V¡–cA PrßQ­?VÀL˜œ6S`µ› ˜¨×gE‚5*R°±²hÕ¦ýÉä:DÁý3ÕzI*‘X¡1ðDß{+Ò¨ +$ÏPë˰"fÂP¤‹·¸µc8VʵE1I‹%ZgT6½% ¸{öJ«€äYý|ác†Y.j/-K;rl¹ sfºì^  ÂâÍ»Û'w%)éÐÅÔ°P5!K Ë–S.ÒŸ²¢ná\L2ãbõ›Øq#ðÆ”±ò.z2~©™í\¦" m<ÀX]ÈÚ(-Ò®ogšu.W”‡' F’6*RÝ¿úÃÍ`©Ø‰É'gQZOh§$ë3[–ùéÇŒF-ˆãé4GÞ$øí ‡VÅe¢ZÆn—ï§µ›'Ó ùú¦´H¢P±`bLûeýö…‚® ­bJ«H<‘j™´°C°m|ñ9„Šê3øÊ±§>L=ƒ&´¡¬>Ÿ‰)€=‘(Ê\câ”"gæ@öí?^Òº[VD*?.VÑ úÔР:X›Á|Äô™9uy³ C‘Ý|8H‡ûµƒ^ÅëÂwÜï5,VÕ úËl¸¢}3Ç5±‚²úÌŠ*2äd>ÒŒ˜F}uØ0qœK•¯+á!™«`C‘¡ô²”·=ÖóŠÕgZäb:ú"OïŽdù’z:m”å?»_dK§ðva$§Âì½SõHgp@¿9áçžz¿°q!8D?ÃBeÂbßu[ðtïÙ­Û¡ Uõ{V»óÕy®ö(ÒžóNobñÙÓ‹Ëg¼ÝIP´P¦°a¡Šq Ú4WT­çÕ딂jg¤óBp¯AûØJåò ï2& ó¼ó‰°ØéÔö*½qS©B[a0<玊”¡¦• óJAt9YºTÉ0bS®¼ò³Ç2±SQ(± ™˜s~:)ñöÂÍΉvLã,ÚÌu¦¸‘uP¤|Þs1 |{¿H{Ê“Û2¯”B3.–à•T,S´õ¼"¯ž ò›¡ Ë’X„ ,9YQ¶?Y:8ˆù¤› °ÄßÖñÞ'o ÖÍ@…8xX¨ª¥1€ô4"³´§µøµŠˆ3œ¡˜Õ¨igÑœèØ d‰H<­Æ9ù½ GÎÔåËX"A©´cóŸú¡¹€¿BJXv‹%Â[”Ù¼EfژƩ» G%î…ÞDVƒŒ‰"ðå­xJ’3ÎñÐÛüÏóói¬ü"ôBîO÷ðÉ÷2ú Ãl5&Î ¼‰x«j·'ŽlÂn€ûfCx3.–›Dkp !¯ÏôzEÄè°b0}Ťr»OCD£ïý?‰ÃØþvóÉÏËÔ[&ý «!4« <êx¦iø§Ýå6ÉüÔoM%˜× ©?9[ºÀ¿Sü[N`‘lX"±[åÛ?·ÿ¨w *½Íðƒßó¨H4‰ˆ†òÛäÙ¾Ÿƒ „ràŒQ<8*ŸîÕTíÈ{?õJ"·‚=|ÅI50<þ‹}DÛ¼ªMÝ[£p@·àek/>Û¸”ì ” ÎK¯”Kð3@hz· gPÇ8#8“x™è¼äVÝ(Á#Ö¸XUÇ`€è<ü1l݆$¨8Žwœ‘ˆƒŒÇ3ˆFñ®R ‚áq±ôAüò €3“57\¹BÓJÆÄŠ8xECòú4$'|a éÀM>Ø¿|"UÖ[…p0öÔÌŸ×êÀ9lk0°îgû²'Y°±0fÎQ‘ŠÌ¡æâq´‡°PÇ/´€‰ç›H¥Û"µ³5’ÅÙ Š&ðP>,T.}0Ï{£ï¾ÕÃÏ%}yq`@¼ùùffõ^1çÌ%Š“^OÉ‘ØâÞûYlç%ʉ•%0%‹ÕöŸ£a÷ý…·À2òt2ñ´Á"´@ΙLü"-°ÝÛ† \(ñW 8’ˆa¡ ÂÁÇ÷q›ýäìÛ^ÁœN¼³ˆÄ ,LCÖôCBAŠ…)P0«ò"{°Õ¶®Vçž}B†`çÄ&2c¶ìå~ Ù ®í8Ü­4‚jQp—Π@KŸ¶ºïÔÞ2¿~<@S>쬿™NÁcÊ|N|QDÄšk9üeéê€ZA dãbIÚŒèC¬°n&lnøÏ8WðÄð6ƒo/n~ç«V ‚3¦a±ê“„>œÝ‹¡·(Í”xbD”ªµ.p´Öa;ÜLõ÷N:¥­™UTd»ë"<0$ºLØŸíH…L!i $ÃBUÝuC`œôçðÓ{ÖAB”úqh]™Û×}ÏýÐÉ¥à‚„q±êþ³làýg»ýÉ~X¾þ¯Â ‚^@BÄö ú½)'KŸÿ*Ä)hÁƒOho?]Dj¿í|­ˆ2××ݧŒRˆSðP7£Âƒ®œj±Ùqg^²NDp¿ïV‘·§ëmºîlÑ×ÅýÏó³½Ð'"Q°ãü}³ «S6‘Â*u «¨”½2+0z`DÀ-/œ§˜Rxç¸XоwÀ¬†ÕÖJûÂÖ^+òÌlâF$\`ûP{u/œnØÊ …(0é Uµ¨ðà=jx)ÚÛÅ’Xq¦À GG¿ò=ÈÑÆÚg÷ñS¼Ì¿ úènZŸî¦$ßãp ]‚¾kU.³Äï‚þÞü¼ö>+¨îhûB…²›ŽÁ2Ò̺<+¦QV“f–~Tßèd©…©¤ð["²4=dò{ô”Ÿ øjþQ–G+ØDóÑÙwg¥Yº§æ?,Ô‹äEqð$ÏlÇæ½tÂ2U8çRk±&`LîrO¢#¿ÉÏ~z†Š«ÙþÚŠïk³™´>%Pè©hõÌ ‘ˆ`~ÌJ;ÐF˜ø6H*Iì¶žì †êàö”«dTdx’šq±ª± ×£ElaõÕ;¿+Êš%ý? j”ØQ'a,ó1»W‚FU†'T«€ªA®G—˜KP>ÖC8kô=£îáÏG¿*;’ÛbªÍn¢$_á‚_&%Þóä¨P…:µx“TÛN„—iës£ šõú¯:õsKÅÖ(‡l0;€S~)»§õa±DZ<¬Î|)¶>J1§èõï6éç¶´æ‰ ×9a)—Ì»]ƚʻK~ôsûêÛÉN~ëÙ§[H°aÖØ‰‡„©ºž‚®§¯ß¶ºQ\á£hõïÊ|Ï1…”ŒÜÄ[u^(ú:Iã°PUÛSÐáÑ\· smKïzÊäQ”zÖŒ¼¥}¿ÏËƤ[cÜJÔ¾0„àp¹åàù(ân”O¿W$¨º/80ÊþÐ\oþÉÖoQ@(hà‹¢^oÕÉê‹qrv£LO$}ž>†…™?Šú¦…¬¸šs <˜…ÿ.óÿÓ<}IA‡7uÁ¨¿Ã¤'¿çK€žhõTùÇÅzð£Äþa7ïr1;ÌÏÅž_¬'<Åû1q á>Êô0ÜÐÈ}®7K±Š”ÿ.Ü'i2}(ÆÕË ¥z"¿“Ž‹Uµ*™­J 6+ÐzUD˜¥üá>Êô–ZzÄkß>ÓéW]eF˜¥üoªø‡µ„åZª2Šõ²jÎ0"JÑtuÔ3²µuvPƒì'Ò{ÍIÿKh@ bxïòrö‰‚Õ‰`N©}\¬Z÷Jj8&—nœí¯©2¸,—ShHÛ‚¦Žö£¨ßôcn®Ê˺{¡²÷Æ¢¨ƒãðyQ”mçzª?ŠßD+'¸«n-úÑÔÑZ䊗IeÜ å‰îþòþGMÝTvû=-•¬}žOò²îÎ"1b8É4î³½xÜÿµØ•²¨—C)›l;Þo;F¹/Ñ6‘Ôy®ªPÌ£>nécÚQ•®> WÁ(èzïÂëÔgceQY~=‚êDHç/ºm¸Va{dó(’hÝE(«9)"ª¬˜…t·¯°ã§}ml!ú·?ÏP ÝtB“à%Ü­Fƒ" ÷‹"¼Þ «Èöèi>*H`J^ÒXT×MÓÜ&~3Ëå¶Ïfþ9ñ%I½D µÛö66 °Ùœyk`¬Õæ!,¬Ž67•>ÑÍM?'ƒe÷œÛßpЀ'›²”’=Q×1 ‹eŸ·L-â_tôïÌwËáU¢RBÑà} Vbz”»áM9}òéÆ‹ë ´—qjéÃBUíIA8G{=ç²»™Z)¡ˆë^{@ÿÀÁœ5*,Tf‚@m_jû 6 Ë^“@%Šˆíªõe;ZßsT–Ñ8á2¯µ-¿³ C:Ñž=I •ŒïO;˰å¹h1㽨c8rÆ£Z{rà'Z÷ïEí²À‚ºÚ&òqÛRJ'ú4ùÞ¸XYšÃ¦x¸`³³ÇãùÞÓÍ’üá<¼ûõ¯¯›òTlfªçE¢Žj2FOÔqìnö²Å™:õ¸XU_L¦m1m nî–4m"_÷³oÑôd#a+gëNGr^°±¬9S¬ª€jAšFSÌ kA;(BEQÈ–´ëTub{¡'^«uöñ¼-ù‹ª‚¸ 3Ýæ>µÏÞ$0·üa¡TEØrßébä÷&@AW¢%;]?ì wØìíîêÖo;Ö~pVÔ€Ñpñølþ —‘˜8kP ô†ø€›¤£sµ1:X*+ *1óĘ8…¶•d´šÐæ|·{s ĕտ?´å¨þ…ÚaE;¬T:¼»-q)ˆ)- UµšÙ–Áí“ÏÁ—AF\"5¿ä‰(#›.¸Í¬*Ú¡nbVP攥毲ü•€í•¹0^¨}â…‘B"Q‰oËÿû0…¶¤d ½ƒšÔ>íö/]¶ÂšDmîdiûçùùÛ@òUÑõqÝL¦€Hb¢¥a¡^ÈÒükßzÛ¸èÖߨ) ‰˜hiP ¬,'-!øúÛwå Ö$Z󻲜´_Ÿ[‡{Ñû)²àC¢óõ«j :2ZBVû‹›õ”Α„5e­™àxÜýðÓÖÌùŒQ^гarì~t6¢ðºŠHš´»ùírÙ³íRœ]ªÜJtë'™$U*òÛ~.ãè»Èœ’jL¹yH˜"™aùCo¬ý• >é'“«$={àuýçùI³E–‚ÑÅÁ1ó£‘+l¹˜˜j\¬L¥`ûâ/(xéý޲țD+&¦hÒÉSQP¶cç±Ñ“o=Sì't%¢s%1ó8•d`>Ñ–Ö^ø•ïL›D*&¨«nù‘”½Äî:<­Å‹· ºÙÙÓI”ÑýaêD uô)† ª²êÌßsÇVj?¿wü(ÊîoÅa~u-\u4]b~L°¬˜ÿŸÿ+:ð‡ƒZöåŸÝZ^8ÜN°”HÅÌ0ÃBJpÔ}ánõ*xÚ}*• .‘†Yyó@+¢6ÞžåWOëP¹ì§×êQÝEkÇnEf£Ðé©äJ`jÇãb•ªpÖmmƒkµ*¹õþ×WdW"írq U\ÀW.z©w&¨¶A²©³``Y%îéè§OÄ5á$Û¢Yz±¿Eb&§r•¥]*ŠÃBU}"AFŸÒñfiŠ20Q‰ù}Eu">RÑì}Q ÀDþuÜ5[=ÏŸ—w¢9ÉÆ%ìÛ6ûØmåJY±e®IÔ¨uئqß\.Óé3 B•õ: %9ز]ý‡ïir»AA¨²dì(9œ81aò´÷²ÆÎï B¯›Àfï’U…ž²LyX({äÀ×øùÈÃAÇkÀõ—¸³‚… %Õz© •´œ#V«ðVžÏE·…’œ´^ø(pK{ÅoîW4$z0¡Ò¸X…’uc4hLp÷ղʙ²¶ì²†Ø¶ÿäÉ ’e@b¥_‰Íïìr°{Õ72ÌœIdÜ—·,j´˜ÙrbzÅaÊ,…33¢ã~UÛ¨¬z¯ny]W^²WÀQ_yx«,IÛ„yÿ`ßS[å §´$ÈŸTMÇÄyM£´‰{ˆø¼>CøK–LsàGp˦›ï±Øé_Þþ+ÌDdN ¤ÃB½è£QÄÄ@7Þ]h]Kü–…›D“òè˜8í<¼ÑÒ~ûÈ’åhíîò”YB‚©í*6—Ú¶ÒÞvQ1š,ªÚM—P£È‰ÁZ‡ ñÝsWp•,„²ò«öúÿ¦€s“­œö$6¾¶£Q•z€™Mì#«|Á0­¨ªZÅìýøGûx¤(BZDxu™u³Ïb?ûìô_QÕÞ}vP#õ»oW¤)^¹¬Â"‚{ùâô·ËÚ¶¬Npþ¼¿—~ÕÒ/|¼íÖÌö»ŸÌ?‚lDQåãªb£ðjù¬ìÚ#ëá«Ê€’6KÔ²ºŽûH¦ôJÖ=I+Å_»Y ´Škvl“ÑŽè©üÆÅÊú ÀßÉ+ ÷¥×Í/zmT±²O4£˜™'%@¢ºRV©Pkã €ó4’Iûâ'~¾'‰~[¨µ½?! ªvªÞ°2l{e%V ])׎‹Uu(uï8Îì›…Üy‰â¤¬àº¾þUgáļð/¡zà¦Ì’DÀ}°lØûü/œƒ‹oÃŽÌŸ-98úU^mfÛ5÷ÍZó˜ädqÖ Ð HEÖ‰B+|˜h€oOêô®EB"Æ>§Æ¨{š0`S|ÿUDF”QfA² º01DÑÓÈ~0?™ÞD-óÑE Œ Õ6ÇöV.?¢VŠª™¨ybÜÖdk †oVDå;>.VÞ¤q˜YþÅPõÇë!fþ ²bû€c¾­ÊýÁ4åˆKÁ; ¨öýÌ6"ÆbmÔ$”“Ö±"jÀ‘®VNJ"úåº(Å~8Þ z- ""×>ïa’O­æÞwvÜö¹¾Ê(Da%Ü*‚;–.,ùóˈKeVLÚ¸oSn•Q†H±\ÃBÕ2nZ-§¶­ïu±¾+…ˆ±¤ãbU>ù ÚÂ'Ïâ‡yáñN î]—Ï4êžöL7Èl›áTnÝ‚2²6ú"…FáÒÔdq/‚ cde”[ʼðÒ•¶³ùžOÊL‚¦ïú»eÀö¨ÈQPˆèÉÄÀX1wZ2mAmuôìÿ1Ýû!´lÊ-A¥¯=±öì·ZP¢ÇBñ/ûyP0a^ø^˜çš-%BDDå$K«ÖG£„‰œ:c8н)¼sZ¡ˆÈœÌÏÃBUVô_5Ôò«WÇá ^ÉŠé»>šLÓ4/ÜpL­2áN¢LDTNÒ”q±*/zPC± °a´'±¹0¦€EÓ—4ÕP“·ÚšBn;üö XD.ýŠ£QÂüð¾7ܹӴ^@Q9yèªHƒ"ŠaGhŽÞlà°$Õ´‡þ™vÂCgÖ1q¸»)¶/X½@YëdfªI£”i_þ=ƒGµ½Ó'eÞ!b'AÉ @2ë$ª–˜ÈÛwõ ÔËØDQ>˰)|xe9lc½Lô’îZ*&fmä »Õ*xˆ($)ãbiTDáZ‡ÜžÖä¶‚­dÕ”úRP;?¼ˆ}µ·¦]i¹P’"ЍëŸvÜŸ›#£Øi[Ë^6JèxŠVÕzDuÙ€?;«Lò# '”–ý:ÜUÑ–,QRd«HDQÊDI¹b¤ÚÑoR|“ÕNý;8årŸ_ÐaAß9zrŸ\—Uæ"ú£Ó‹a±²N‰¹H§_®rÿ^®¢Êe”mQÞ~-ËüìN™ÎˆéË{P$½5­][ß;Üᛉõœr¯G´Ì®\êd•¤-b¦'jNÖä€wSÉ‹è¬=ÇŪlïA§ãĉÍö×Ë_¦8¢eRPŠR¥}c³Ÿyö·À„&©™žŽp (V×ì¾ô¨ÚÉÿÄä©}ß–n&ÏL#‹‹ÎBE*DÉ(AZÑ{Ûâݬ Á/]6"*åW“üUa Ÿ}8óÞ/:8!ê"+ÈQ‘^TÉ(¢ááä VÈr` p‡¬-r Šd:#ŒÊøù¨QD«#õ’ÉJ¿@/sÑ ©6Ž‹U9ÀƒløÉ·°}‡ ³¹0‘ý nïÚaÓœi{Š•6 k«ø&¿êXãb½XŸ£|Ì{ú‘÷8©r{–ø(ދՒ÷l‹¹e´³wE‘ë;Uvî¾®'½}•#±QÿÊŠHœ'Ï Ûá r!ðgé‘_P”á¶7g{†Œeu_uÇ9?ÖÆ0.&Ç!WL~?×Ï.}JÌ,˜xØ6wŒ©º/*æ×hõÂG\âTÒ{û I^4ÅgŠ•µ{;QYÁ³q±ÍOÇWeÇŽBŸ}‹ËL¬ÚþTþ²&¯Z UÄa¡^DÄ(ôYNåШö)§ÞM š¼ˆ\ãb-«øY'zXvQgiÑ^Åg‡ð\!€¨onè ÖÁo¯Á6sÄk…²šÇíâ„ûüéQÉÊýÛõÆ_9º î5iÿù©û¥#6½ïÇ,ý+ÀÁa•wû“e÷Ѫªá‹HçßÒ¨PS ñ *<ÆÜ ès$¸¨ê¢¤9]ëE„ RPv Þ±ÊÂFeõ,§Q…ICDÑ °ó²=};Ö“~Uç³.WIñ.°E “\6ŠåëÎLTê"“1ýŽ‹UY•ƒœfka› ›Ûž$PÅy‘ÜÜXô4È Ö9¶°ç˜¤,Åg½¿dÛkÿáÏ>Ù5¨iöv­ø HfîœRE"+nþu-ÐðÓç|eÌ»ÄÛCß/ûL.Å'µ^D2·A U¨kQK³“K{2;¾¬­ŸSDùÏz›Ç^ÏžŸgŸj°_óÓVªr½¨dî†+«isòBx›UÚ7ŠR_‹"hÐÊ;¢mûôË/’²Ÿu2®îQ‘ŠÉÅqí¢¥þâAÒŽfdB Dq«ôµÓ§ÔÌ'ËØ£Ÿ\Ã)D{ɘ†…ªÑAKšù©Ûª¦ËVõÑÛøuE-Í”‘^¯S# ëmÝí } ?û܇ Ù[>A.Øím£þ©²ºèd^‘ U(lAOà VÏÜ‹;Ô }>Kn_-Ê`°kö”qp@yS¨è"•¹sxX¬ZdKB˜-/‘g¿¢°PȳVÆ¥4*R.¢ážY9gwEá÷Æú%‚êÌI-cÙ4*Ò‹:…0{ Ý =ûEË…Ê,bõéq±j™- aèÃ@c¸R..]Ñ™E,£B=.V;âÜíuḰPÇ¿ègQ.CRÜoKn±à¿JØIÍý°_¹ ò¦Ÿº¯£³¤ö¢>G•Ë^Œöþšl},“›ìE!ìûbDaÊJ± ’V]¢2²ˆW|5Ʋ‹†Ðì¹úˆ†þ°°] Êåì{Áä×9ŠØ¬Ú¿Äa¡^,¬Q–[ù.aªÖ,ÒUêq±Š7#ªW°°Î,ç³7 d­9 \î þjUØ€ž¢ç>ý+êÌ*f½¨Ê±³]Õš&v¾º´Ç:s®Ö\õ’–É+†£·ßrïTj²×WUŽBà=.Æ>ln;Õ†E¬rë¸Xó <±_ODBoûI¬‚{ð l½|* ‹žåÎÔQ¡²$ކò‹»}·?5j¡?ïtâÞô‰7ѵ}rñÑYN¥'šAÿßǪ՟¤Ð|Ø1pþŽÏVA9‹8\W£"ñqÕÀ:ñM›.¿`WÅé,94 Õ¤mo÷A}Û&nbÛ,ž¡Ñâ² ‰ŠùÓ¹_GƒÖƒ$·c~-¥îÏâ´èAL˜ÃBU¶Ñ Á6z¢mþ°ÿźR™;+K,þ£j_݆ˎmÇç..2·K®#ffäOSÿðêG±vx w“h˜V 9 B|÷ÇÅ*Äç ¡8š¹n-¯ÐQ.j´¨Kû¢©³›w‚ð+&Nî|& GñXÄ!·u‹Uî“ôãÓW.Ì„¹ý: Õ…EâÒª”Œ¢¨ƒÙœ0­‹|*Ýf݇ŠÑ°Pµ£òGrG¥¦¥_u*"°(H~t̃°lÜŸ_ÀYbÙr*×ÐN êK'qÈ^™WêÁàÂ[²úšõ#ž²'¿I³ýVlJjÂÓ¿–t«Šì2äãGL)dUцÜó8.Özž¼~mZœ0'-¯*ž]}Šú\±7«Ûñ­‰úš$.‡Q‘^¼‘Q„‰Ô>Ã, «¢Qy«òF ÞH¸‡7«˜)ªH+2“ëyAEBü†»öEÞ"¿ŠÌô"¶F É*— †ã ÆZä˜BM2ÓWTвª•å_9h!šŠ2Ät0,Ô‹\%{¦í‰{3Û1o™VVt&?zÉŽÞΪÛîÓ°T‚MRÓ‹Ú¥ûd'†ZàÉ箨þ*òÐWŠŠ œÓ¿7SOÛRÍ4‹:LóÃBM± ¹+=QŒåÆ0¬]ATwŽ Uk8QfÁx•“­°{wä¨*R _‹a¡*[`l` ä)É6ûÛmYXͪΛ-0(6°âÂæûpÐW¨­AÕasîÜ׿ÅûÅ£_Ÿ¿R9sÌj™/3­€…$›KVûQ4BµYçí£ìÝw&’¬K|Nù&פ}8Ýn ½zbP@´%ÿÎÕ <®$E±ÇN^3dÈöœ™š­BΰÆÅJ:z!.Î*[=±þH¦& ´\‡‰½ÛÅGó?¹GÙ9&åݰ½¿mwScwE]¢.5.VmŒÚчàÕï³ëU·y‰ûÞ¨HªK¥5‹¤°öÐSÀY§z3þŠ1ð®Ü*ÍrÂé"ÿŠ`ãv;«-{u/râ œ|%Œ¼´aí?HXEâ$é¸(gS$̬Ð|½oQ ùpØ&îõ°yãì'©QJ-ãb½ˆ”AèÀ$ÍÕé¤ÏD/´Æ,†¸rP¤R¢Œ"ZµWóý¶õçÏ¡PE¡F9.Våj ‚‰»Ú6¼Ës·Y–-³¦B%ê%vºárÚlH•;Ö²r%•%Ê%V7\ÐÚ6»ðšvdU$ERqýîæ£³F ÷½\'H!VO'µ?`­,¢H%ni&Ÿ1µÈ!ú"ŽÞµX½1I&ùð’ËÓïÞöi Y>%…ßð°P/–·(’ ‘zbnï”§EH¡ð8.&6dm²ñ×42ÇBîÍó$$C¶7›@çWïˆ`)² «Œ ¹@ý²3o‹tøÆXÈ•Y•y‘a¢èb¯× øÐ‚ï>D¢P,³0óãzûUJ`T[‰6ûTQEKqËÛ˜@S9.©$lÃ…ýÅ–.?¤HŒª¤¸™mX¬7[J€`Øÿ9Ù¶Ž¥+ £h)a†…R&I.–ív´>·¥ô\&Bd–eܵñ›´ÎMŽ-Žð¨~ç’0cß„]|j›ÐÓ^’åKÕn˜íbÿáÍœðgÌ…‘J­IzŠwö™9Îü´+ëTÑ9Esq…%MÚNzнÖ&á)¥Wª©–ÍŠËW0¢Lo§}9Ö1¿šEOEø]‰“å—J£@†ý™¢~Ÿ­‚§h”JÇ…B}˜µàìõl¬×ÿ0ÅE#.fö=o~žª„Ѥu°ÀJºH‘-3»ŽÑ–Y¿é·WE4ysÄIßÂdݧ»y{¼¹=Ë«¢š¼”F±²äfí 3†*žJ±Tþâ¿Êʇ3ñ&üÖ(Hÿ«”TQ_\lyº@M•ry3Ê!¶ °¹í6Ô„³fU£Å„ksX(Ú£žŸ×õå~˜Û¤±·qú«ÊŠ"š6qq÷ì¬ïeƒ§¼¨QØ)¯¨lvÖÞŽm» Ò]’1^t‹¨R`¸Ñfß¶é"Tá. _î+À´¡eçrßT!´‰¶@‰nH˜úHræL"snîC•-+üZFEZ{Ö[;—µ²aqëh8»õ+)Ô•ô“N˜‡9u;q¡Å‰ª@o\¬Êt¡ÐzÝVÚܯ]O´y~…ô5Î\Æ[Ïùªë‰øÀÍ}^uäæ[ù¶|S‘ÞèäøËÚ¡´;ÄT‰âÇ1õ+à0Ë;bí&Ÿô+ÊeYÁÍR#¢ôfc€"<‘øŒ8ƒ¯%[Øvm‡&Äbø}¸}’ìÛk¿e{K6¿%(kv"M¸ãjX¬¹/è8«CòloDï—UÍN´ ª}ÃB¢F”0à¥ZLýkËñðzV…=‘9ê77©èkàÐ8»k˜·Ãf©OŒ]/ÊvªâÅj9~ó Y²Ò'Ò„ ipn’><Òb^Ü@«%cR&ü˜6ñ¶ûµóÖøŠøý~AxÁÈ‹Én$ÃD1—¿Ýöìűµ»Ø­û¿t$b’&Üþ5 J’3|â|Tìû^qžÃ)λ\³v¨ªåŒa¡^DǨ%|8¡ÖŽÇSKPl[íP䊎ÃBå-5Ðáøpû匸á›øV·c… “*Uf‰ãEÐòÜaÊþ}}¦õ©™%–˜QT°w¶=¼hËMPɉYxp™‡{þ4f™!(Nj³KÖÚ×À{Ø’t'JUC°òx~ººëX”V6R[Úe‹S–íD"p·Ó¨Po·³„òÖϤëÉÉ÷… 'Û|‡ÅªlIA%€/é€ ~_vž¨T„!áEr 5 Ì3ßšöf±ÎS NêžÅ-Ê V·Åo.{5Ju¸ I<§ÀXý»¯ç8xvÙÜד¥'QÜ#4*TyŠËÅ¿}ìöfÛ.ißüL“¦HO"0£Œ‹ÕÞég;«Xv¾õ¿Uœ]MC=|:[|Òÿ¢lÅúþvAï0Z—Ôø¾Ùü Y˜nƒG~X%ãó-r•ïþäÕÙÏBíÊJ+ƒÓ·²vä£A>É{ß®¦PmãÙÐ7fçhΕÔãî³È€7öØÓÏŸI¬«V5ÈèçpÔ³.UfŠ5´Û¢†„ÙiÕÓá¥2ñØî“^T– h˜7vžvÚÜï*ÙîÆª–¯RýŒ¾ëÅ÷Žë_ÚÚD„’›«cX¨Ê*q<† ‡>ë´öùPYOÊÅ:K½X£Ô;=ÒI•´“¤~~²{ªjáÍXiÛjçž‚TP‘Ê÷ñyŒŠµ]‹_ºuch¬ÀÞŽU©ò…5oãù¢½V~ã­¨.Róa‹•ÏÜhá]üýdõV›ABl gF}»™[“{f!óä"úEÕ ‡p k8?[ì»7°«Î“굨“êlL‡Á’͈///dž\‹…PúºÏcú=àúL.E ŠT-¾TÒBËÂúÅò c[¥){ylkY1½u¿;hO*ÏËÚ‹u©0l[Ý®ën“©]ùaB-iÅ冯a³Giª4#õ&2QèÁ²õϼÍ]Íp3E¨çà„˜Ùg¾zµj*¹äs?Å HSu=J®Öðx°©øˆ†B*ÉåëÀ1qJ}%iV¶Ý¸Ü¹•¹“ß ¥*‰rÔWÆÅ*ô•XðÁ&±Ùå{m©¹YZ© ¹±ÞúòÑ)QI#ȟМ³_ì2N𠵕X8ÂoqãÎÝ­ëHmù¢­ÄÂJ(/ýµÓÊÅS|V[¤¶ô¯=Ýì GH$;.)³ àŠˆžõsqùcÒõž[ŽgÓJöÅ¥U„‘šÐ­ÃbÕžôTð¡çñ½Ï­P™EŠB–“ãb½(4±–ÃøˆÅ+T(^Ð¥:‹Ô{ThÆÅªŒa¹Àh1a>Çvžœ­Uh6R>¾-Biøáà{±·óèU{q´|ä–i¥ãÌ ‹2JRúðf§ÒÞ>{×ì 9÷g¸I–v¤Èô’ò÷îì>m#T~˜¶9ûic‰]!É*J®ý •õ Mn?vÜ|çßJËXýÁÏp3¥¶òzöÖ¤´h…èÖˆa±^Ô—PÿAµ^͹Ú6¥Ë(ª¡HÈC˰P•5á·”ôÂ✠Œ+Í$—›.Ü­GQDàÖXpÂ"[ÆÝ¬Dóa*¬ä¢ô[‚Æ"ßL¼ø/òz ¤Žt3À°P±:C·ß†H÷ùÓö{˜Ûº%+”ˆH 0Ì·oö4!ð¿BY*’’İPŪ‰u$ì7ÿÄ*UVI¤R“«fâ´8»¬ÍoëŒÕ;—M,-iøªÜl¸ƒ_v˜µ )ëŸ~»­ôXyÓñ“½TÚîýƒbÕ‹"•nÉ´òöÄ>.¾Ð¤¼s hX¬jr}wóVÊtè}'ù?… H>ÎÒí»œx^/„ )_N´ñüj«¾-‹F6˜,U©HgÜ]"– Ð«y7·­e,>(*¤2}Ö`ª?ìì&¨Zúà Ñr¥è´T([{ÐHùÓOˆ¿• Äl_x î×&ê‚T‹,åªÐøo¡2nŽËÍ.8!Wý!—r¬ƒcueßr;JÚ_ìmÅ•þ °—’(@¶Cž8Ýl6 †»­žh¥HúÙ¡hùðÛ'®»_"Zƒ6®™Œ5ኲvؽ¨†' )»ú§gÈzªl0"ä†uêÞÍ,KHéÃoqP ÿÏÿwn{Õÿýÿµ>µÿ^9˜)q£ßÉöÔþ''jd¯êÍnÿ»\ËìFüóÿÒCˆ‚§ÿíùYñ¡ÿ3ÿÿû¾²Û¸×on1ßÿÿùÿÏ÷—èÿFÿ%=@üÿ‹CñŽ>¶>gΠûþI;Ém¤=»&ÉRçlÿÜÒí¹=ÿü¿Üö­Ëâù7LƒY"ôæÃþFÿ“sá/Ú#´7ºÿ¾ÿ þ³ýþ[ô£ÿ–=BüÿË ÷Pîw{ާÏeEš-Jû¶û¶ëö·TÊZq{ 9e½"FIµKkX¨¢LŽ)FËð-ƒùb•µ¤lf5ÅQ´M\ð°ô‰刅X7£/„CË7;%º@•5,©­_6øX"ƒ´á?Ó‚Ÿý6q±¤Œvû §Çv«±Ûo¾zœ“õ‚ÉüÛD“j_˜p°ßϮߪž$å±§ÊQ¡¦Ôн¹¯!TµP5¼§²O¢S9I+_÷5 ‹U©Ä©ªµÅÖŠ]êpŸWª%IáËu;,T±ºclOáà:æ6á”QŽ´ˆvOw¨}?ì®±ÒÚ*3§Ä¢ I}übÁúanŘ>+ôøuˆÌ!E­Ã÷Q¡²¾cç¾»+©7§(ÉhS?x¦’ÕÞö–&wËÚ×ѭ⢆䲖*ʰP©š‡¹‹ÄÛâÃ¥ýÍú¤¼wùà ÑX/=¨)ÕÎü'‹[sÎxWN–er}ýbe2žýÍsðzzW¬*0RJ³ÐµJêWoEK’Ïó‰R ˜øcßlU\‘Ù}£BÕ+,•¿¶LàÜÛ’×€è&R!ómŠktÃlÿz‹Y<¿¼ÿPHƒøóšùmõÙ"ÓäJÛùñoa‹q»¯ÈÙ+]Õ_ríûàC1ê܇ñÉÅ!•L¤^u?*T7§7”„ŠÔ>y;&2þî½Ìª˜HÕêJ÷°X`ÿ)o¡9qzç¶œOïCVU¤vSíï‘ÎöÊv²Õv7ÂÞ'êÌÅpêB:½Q&ÛÀxÃDy‘ƒÙ‹Ð n4sζ³nvõ;ÚDy‘šÜi²s*¸al;mEá÷Þ!¥Ó²Ôä_ 'ÖÈ_¶ßþdfê,¤©£Ý'02ÖÊÎȧÚI:«©ëúÏóó`×Fª“ñôO^’8cGû¯Òmb-Í|P -pâJ˱ÛúèÂDVrÁS/¼T§`~%i·ÏHj”2¾òVôâgŸÔÏöްSèé#u ÑEŽÿ®½ŠÄ/ž?{ùõöÚ_€Ûß´Wk"¦ÈÁß}ðãbÙ :Ù¸w7oÒ™ŠN$—•âém8²¶Xýº6-¿sÀd9*RQXÄ2žU?ú·DLÇÒZjð(ËŒì<ñBÌÝ/W”͹ÒàŽ»¬~ÕÒí×§sà÷+«ŒŒÌLWœz £V,?Ʋ ¸.{WxëG ÿ÷G©Dp¿ØnßwK9‹†\ZJÁúcX¨Šâ†záÃ.~»ÜÃ^‘›ÏF«Ô\SðÔëøVW{Î-Öå3<´J•â‡Ð†ãú‡×ÜÏôim™ôNhG…Êg{‘ùÄÚ£>ûŒöZ£Ž‡zÌEÛùý~÷¢²”ƒ?_Óq¡R Š­kâDh;tz;ŸßoSަÕožN•F]WüVP…1 {³ßdsØ› V©4¸¸Bññ>b;Y$ ©O¥Ôðu4÷W£ƒÆ.Ä"eÀ±ÇÞý»•7§_hêrþ[jÑŒ¨ïü¹Pmàܽó•µÛYH}*ÉÃÇ„Ê9¿""°ZàêØ¶––ÞŸ’ T©Gø¬‡…‚b¯3À¼­¿1ãPÝ€cêêf#óc©+å ÛXI|8‘pA ^’K­›‹º´H…„m”-qbmûÔÐ✚kL‡ûÙÿÛÁÝÞTwôhé+åÁ/вÉó³=H”kñX¿>,®à}ýš™\ùÊÑß¿Ÿa±Šº!>~‡Äí»j_¾wbWut,%êÊ!¯@%&Œé[âx&Ïõq>1‘ÇŠãéuíäÕBùU=œªÙù]¥2‰Ž÷4߯ŸŠò§ê”R‚oò°PüõøÓ ±X%à! ‰Û³_i›‹I)$ø<‡…Ånÿ÷ýlgѦ£e™¼ò1^ts¶Ýò`/êL9êó]>Wžp{_žx±q,dÅÛåãTÓ!þÙÎÒ¡5ÇÆC©™c|t_ªØôàÍZo\¬¼•ûæཛྷ?µÞ·‰ÆÕ‹t¦¶S¶iÓöm¯ÎŠ’íÿÏÚŸcI²ìH€(ß«ÈÜcó°ŽZD3Ï™¿¢"PsÌW¢âÝ•‰t׃ˆšóî‡ücª"‘BzéD½öW µúÓÞ×*¤ç d ·ÛÚthñ' ¼k@¨Òh^…ÏQÄ`ýCX„¬äÐiiÒ¬ÃGæçrM2szãlMè‰y~žþs+d¦¸^âìÒ!eVÎ^že ¨(®–JEI¥Ø¡²\:ègÛì)MÞŽ¢ ™0óª˜åZ^…i$›ñJÄ1‹R,%ÂT®Ä:ùã/IÙ‰?çþ@R.>=ê^?Óþ¯J¡C r‡ƒ÷íxǯdl’TÿðN!Íýp|7ö¯¥K›T¹èÊ©°óNÃLíþfá}.ÞÌ›ŠÔ|¦>X?ç¶‹çeW¶y›£?©Ì$_¦‹gK3í´KÎO;¸.çÍå›$ÞoÜPH†í`µd/„µ“éMÔZÒIÂüd?9ŇÍ5@ž[콞ð,£‹8C– šæÂø„ó™ ©õ•dÂNÓ ³e>e¶Y6“5>—N/J9%Ù/Æ0Sº‡1?8mÿoÛ½7jù”r—y†DúÃ÷â,k²™x¦¢(Ÿ$Ù~0e¬h¶\í¿vÓ|ìN¥òA’Z~´a¦*ª $‹HµQ%lÖ›ÍD´¨1rBIÏf»¸ðsž.Jþ­1~àý—ašÊæãê/ŠåŒ_s7‡÷ÇÙ:‰»`¼G·¦ú§]>!'$o–á÷OÑê%FEÍù%Ácj8ÎÖ²·ï‡ >ùC‰)3ic¶ˆ–6\ÕmíOj•¡%=cÌ1íÆÜy°&†$“?øÿovÌ~7qÎwüŒ&ü’:ü?ÈR\Sn §í¥m×ì¹½fû’þqù†™ª°øާzíǪ($Idr@̃™¡µ^ Mðy0¹n<ñ©›¥ÍŸ8E‡ +rRs»o&“-ä·õ7¶xÉ:[«IÇuei7½½=}ÌÞ0œ’|¿¦ ÚJY Ù˜)¸¶"h™!™÷oœ­"‡ûÙî,4×uëÏI)"YÝ“J|3K%Ö‰S8ìÇ?çD/¦uè‚Vz³§ð Î5Œd~þÕžž&Ïáb–DÑo?·Å‹(Íï%st}¤­Óî „Ý$¿×ð6BF²›R—­1Ù¨ï~Š7(ínD*<­ããCsbb]{sZèµGùnL·ðSæ„tn7¯º-ÖÍ\JrÏœ\}3͘¢€Þ^­0CiÌG¦%_Ô4†™æ@[öx:œîáC)SFô¬…4Àú7ó ¡Éœzjªñ’ÄðØ É!V¾OCÉGR„oN#·«5íµçkYÈPËÜ\’yñT6e/Œyˉ0^Þ‡ú_tr1IÀ…¼5/ûåÂþK¢ª­ŸÑá¶|þÐäEï7Uù…P1¦ö«%†dÝ5ÝxÉÍe©¹ØÕcs<§Ñ´Z&ÆKz>Ű̘Êò¿2'É1Õé‚ߌǻjÐ,¶œ_ä6GÐ/áÙÍ!aoœ1‘¨!!õ›Å‡”`±^ËÝtýQûËhä…e©p—Ñ9~8³Õ®ó|øërš‰ÿ¬…i±à‡_nËtv‰~Î’4 {YŠQÙ‹Ëôû<ÅŸgÛeŠÞ¶í6™¤?†Ó ‹LPÚ:ç Bgëoò¶¹ÊüÌÓ@¼v›.‡~à Á5Ê€ãîè Ï—"¨ã…¡ròPYÄáM\À5ÊT;b¤ø<Çl³Ñ8Y«s0ùþÑ'#ÒÜ¡{ó¹C“ßfäf)ùHToÖÂÓÎÙ9eT 1À‚†ÿÍßI±f%N|£BôÝ>h‘Õ ä™©ƒD4ñïŒ ãláÕ-sË×Ä@E=/(ÈaO |œ¯G>œC¨Ä w£'Ctc"ݰ—¨bF$¬(ç÷Un-ljoTˆžÛ¾O+hZTÜvŸ(›coòîü:Ã,Ù.™œü:zgAòN}ÐÅ¿ŸÓ—¶…±Ùí¹ñ¨kWσÑ2@s¤çÑ'ó$'ÊpÞæÿùÓ(IlOôÓާ°×#l<óíevŠ–ê˹mÝ'|ônGŒ_)¿—ò%xD m nùl}ô‘9@‹Ó¤+ŠŽÇ<¹õÙØa¸§N2Ñ‘Fgg²åMF×­,Ú\ ˜£€8DºÒ¶lò†é íórºBZÔÚc$ßé­úF©Ì-± ~¸W×Ðl|¾äºùìWpaßÊ#zD`·»¥’ûù`RQÄk²ög«]Q ÇmUÏþŽ_¼è/7úW´`-ŸÌÛáõrŸ’îY[œdž|§÷¯â_Û7–°êFÔ¿~#]ôx`ŒO˱öcÙ¼0“p%N‘§m˜©–§-ȽO›·K 6:8ªÂâuüp@«©¯Œçxf­%¯N2•¶9jŠ)~Ø™|¿ÏÄútãÜë¢M’?í¨>ÌöÇ/Âù/v:w+½|WŽFê;yJÇÙÊ+øaãœÍyö^äÕÎ1k£Ù,¦¥àÛ!ÞÐC Üýa»ð÷^ÜOt6j^íá³yuýzåÔ“Crg>ûG>‘#ìêwH¼ö^JàqÎN'¾Bœ]Û7DoãÚ~ãýö…¨jP—.‰Ÿœ-(wx½<Z¼e/»]ÒWLSÛìÿãÀ†„qoôfùÑóä» ~€N”. /î\c¿lFôÑýïwxsm•ð‚šO÷ËÆ‹(‘ϸ£´Ö®ePâæcw³W’{àœƒ-À󻤫H—ÊüÉò"Ÿœž¾o`¼Aù¾8lo0L_ýœ)¹SêzßNï1Ü€¢cßZx›˜7‰?’«ÀP9Ì”˜ùû!!=ÛlêÊé“fÄiå{Å[´cùw½( ç‡Ûpà#þAvBå÷¬˜æÄùø ì7òuàgeh9Vv9ßÐ&ž2†iâÉ?´1_ŽWÍ£ÌáäJ>ÕLÈLâoÏL$Ó<çÁÙï,aðÖŠ°ä%ˆw´çí …\QÙõ'Qµ‹eß…Büv~Óvfb?;ñî¶/¹lÖí:»ì Ÿ;¹{¤ljímΫc"‡UÎËüx¬8eøiól‰t…³€`tMÄÞ’?’»•Ï ïä@S¦ü2/ÞŸæÉ‹ü<&wØU2ºÿ^< ô×q%>œTd{vaê䄯:¿¾*nœ™yk$ñ˜¬G&o˜§]èhŸ³Wþñ“ó û§:v×wæEà•àÇÚ΂fãüÎñ:FgÎÐf{v¹.6Ö8k{ò”w ~ÞÔø7qSfðÅ6z{íŸ>þ®«¥l§Ä©oᥑý­}÷NK•-|Û°¬ƒ(¿)înû3åh^|¶jùš²~M»_ö³“+ƒn}ÀÖMTûÅÊ"¦ùD÷öˆí°ÜÆ^Ûò3÷` ©b â†'¼Mãhs€|ý‘wFÖÄ?åÍ«Õßøáë•fiï=⺺q^3~a|JŒ=¬OœÍµè Üøg|$X^ÏņÙ*–3|e¨Ó¾ê¾-[/Te}óªÔkp&78¶çôZö±ïÿ¸¼z,ÂÉyÐÝ1†Šo¾š»: D6.e'<μÛðÂm/O?£);7û‹gþÝvÛ/¸r´âé{=Hq«ý#Ú¨‘­þujžúÆrœÿ]åi𾘶évp=ïÇàéög¼&”ãåPÁstà•0ýwßž‡½‹;šŽ×Ël±y¿øõI cS"l:‚;¸|·âí{påA– ºªe¿WóêcY.6×ïÏ¡ŒW+]½ï—‡€­ýüîÏÏaÇþ ÙöXûãÄ-ÇÄ[0ÇÖõÉù>ð²T¢xkpG!œo_¾¿/ÇJoÖË ÄÃŽ@bõÁaS ö¹[ Aïãcª('ã÷Šq*µÅ<‰Û[޶ç#WË¡Ùpw ›!ù±:=,ÉSåûõà‘wÄf’Úð¦…[£&] q£L*\˜^€Û¯÷ÎgÔ ®ØË×_&z¼ä‡{ºO6o“«xOÅ'$¿Ñ¿ý(KÅ—ç8­}}D˜×Žó¸Û¬•mé~)ú—è‚^îS¾õ.9ßWûÍìÂAëí³Üõ~†Q%ÏàâµQ¦ªÀ<Ü‹J›½àŒ‹Þ°ìe^|J¸öfÛFÙà›¸˜X£ºÏOF™*|Jü~Þüh ®-ÁÙiœòX³}ÕNÆÅ©Á ÕÁœ÷¶œ}V£8mu2/Ëo=òq›éËÀ¨ÿ•'¥×Žþïó$9‡Íc™öî£R˜È>’ <ÎVE„Å4‹‰‹X…Ï(Èá$Òߺê(øRDtúî˜Üͦ­¾Ôß¾x×è½JµÇÀÍ”KÂsÐ'éÊ”Q¦*L&øR$­›/çÜ5&s²¿}ñ®ÑBÖµ8>¸¿˜¤"{I=†ÙªÒÖàM‘·‚ÖÜ׎ïVQ'{Ü—UˆN°§…öÁˆ.BEö“ž»²$®%:’{©í")Š"àˆ¯y‰/”;ãCó1ȳQºÒ‰‚"N¤XòH‡Ù*Á…#øàYúf«+ð‹œÝ|uKpÖì=]`¦d[}+|Š„†ä¶¿×ºŒkùAc~\:‚fZ¦]~!½ß0šÝ¾¶a¶ŠˆãXóÜâº_.üÈaTCÈË"D—Ž:b·#q˜×]{qBŸz}§]G™Ua @vgÓ·8úƒ‘Dsø¨W :tT›±–pžèKܧïÉ(S.Bpè­_öuM7ÁИçķj$øs$¹+æÇÛ§¾¾'½ìò½eª’(w¥œ{¶sõWóµÓû}Øvvù.,eJ¶)z'¨gl\ûË^J˜Ïþë%VÆ„,üâ oéÆé­™âÃsœz9Í5M¾q»½ŽÅCË4î§Ü ‚q¶ŠUˆ•$Ë=,²0Öhà—¨è’¾q¶ÒÊ»Žs^yAùJø|`zpû3Ó£˜HÖã|ˆž®áAÜÝ®>ÙB2‰°¥·Ëa Áú²`Þ¾âÑ»r4­È¡Ëÿ0[EÐ !Õ» `rK’fä0X&&c4˻󧓾¶¾'ñgI3R*òOCÈsøGêìZ²œhTôt%‰¦1v¢õ³º­ý â”`hx} ¦1à¡f<Œ½‚#uÕEN rHôês%ñÑ!r¢ð¢ÂºÎW ÿWelÇ_ò³ ãÙqøj›K•9_=JIVLÄú™fª}ÀóúÇŸ½á"„ðpÆ]šÌ$Å’ Á“ Q¦¦Üód-œwjcênÇÊ%áʹF¹)F£Mdò ;ûÙ-r¤Ç¬|Œ)Ib¸ž°ãÍÛµù¸Í…”mIJÀÓÔL˜ÄØ@Þ>÷û@“òúHê4»JØëb†€<á6Y&Éþå¿9‘äŽLŒ1¤¸ÄoæXb³Î»}]N>~X¥V9»¨¿| ÷(ùOw—«KsB$ £ƒ,‘4Æz™aB(øaN_ØÑ'w|‹RÉè÷ÇÙRôä7qÀ¬•5ƒ}¬KNsnñ²1q€È3þ£™Þ|Šo¾rrñ’JÄ`8¥GÌí™ï#YaNšfKý~ öX^'{Ù×#vÎ %ðBz”©b³âFxï:|Z»¯þ¤¿VeA›=Ô’kÔÀOÈ#¼ý†–¥Õ’¾¦Tã ø i„wBØøÍµ¿Wå¯9Õx9b1ø¬Y™œß|2眒 <ÀÏ [Ej¢?Яƒ%ıú£sšrJ†ÀÔb˜)É/cì²À®»ué/$iÆ)ñÑ ”€í±Þë}ïG2–LÉ[êtò8§¼S-+œÖŸ¯W¥…!sôMgªØó˜ð@*ºÙ‡ÿwI»d…9'âj3%9@L§-Ö§·Î§?®Tä—9»zI€bšâ£ø©¿S[SV(©Œ£I£L)œrˆ…gè5Öyó6ƒœ^jZD‚·P:ùäØÉNZ¬¥» M/c úšO…œš¶‰Ñ®…‘ÝS>É S^äÈÔ Kš[ùó;^ç'ãAçÆü¦e>›á¯Ûÿ°YóUfE8òm)„Ò'`s“5:´’þ™V+™pʰ^btLŸO²æÀö\¦Q[R¬—3S‡”ޟ˜Ê¹±dEŽÏ2•Û§iDÑÊ£ó™3aI‚›ÒI«îÓ>mfÒ¯˜Á833ñW5s>U#}!WÂb"£Ûm´ñɸ)){Χ^TL–аɎI³Ýû½%gÏ ÕØœ‡3søæÐ9Ï–$ÈÁ¾a¶Š =¦8Þ¶jÁÙ³4«Ch9ÑÎYKGF™Rx.$K€ç. žšï`—I‘Vç„Êɽßd ÜÞŒ¨lMþc΢%ŸzÙô˜àtíâF¡I曓 d˶Ñä|&eÅ$‡a8 ιoNƒ¸œÃLɦÇï0Q{UѤœEKàYÞoæ…$Ï/ÈÌK’蜜½¤ÌöÈëÊM &þ8n2Öß’Ì7eÇ=ggK6=§uÈGñ_ðø¤2ŠÜ7§~LÇÙ’¬1äˆHGo+ Øÿ’òhM#_V ¦cà7Wº£Ù#³ä¾š±q†™*r½˜Ù|µiB7îÚ'c­ìn\²¥OŸÊs½q¶d£Bf÷3ßgé!ù~NþxìoïZƒ …!VüŰ*á5Á_@äO’ðp±XŽé4¤¦+9‘|ƒbCf‡îo_Ýcé/ÐK ³?ÇbG™Ê©}å ¢c}Þ^/2þœþ¶U$ŽqÝÍø¹ú¾OžoÙ|t›Edgß<È©d ì†4È.ÆŽîåÏØKÉ$™ÖĬÐÒpébó¢‘̱>A)“úŠG.,t0•9Ùs w”)MR"‡58̇#>Ê3W9ÙóåeJ¡ÖjEmµvM¡–9otÞú7)„hsw`jv–T 9qüZý&r€Cñ¨XûO.2|Iö¾Ðê[Eš3¹uÞö„œ… æóšáçdÏ¡ÕQ¦*hõ')üpÔíëù´GHµ ‰£'³!+´z¹­§?,— 9q¬7=%rˆqHV°QÕŠ ?'{Œ—ãlýnzs¹í"_ É„†öglsÖžKš/ Ÿ§ÞÃlÉÖÇ,ÁaAl×åcF«š!gžÑ†,Óç8Úð Åž¦eÞ©ECÊD¹=ÓNÝöãˆÛ¢[Ù¶‡)»¤õ)õnªÜè”´"Ùö„bß»p 'öšØr‡™ÒŒ8嬖ÅÚ[–ö‹É_ÅC–dëbëÜeZ‹ã8ΔÂÝ!ýܽ#ÛµÁç«×©–‘ù%SŠ9뇓xwœÎ­×ÖÜ)çµï!%›À®7ö_<óĤÀÉé(ÙQ–4¥ÔóÃÑl³Ÿ‹y#µ¼‘ô”‰í8[ÅvÅ­@Õ…ášp&|¢Õ6Å&GZéãðsª[#ì!õÞKƒ¹›K@] ±”êzá³£öD ¿lé!ËÓ]ª…X*ÖzVSâ'»³ôIzEá%is]·Ç<Öòºc¢ÜŸBHŠ%Éue*§­ ,tcÜÕåŠJ±”SÛѶB90¾²ïÕ5ñ µ‘äÉü˜1  HcoI¦')Š£œ(¿”B1qÌÍ97–¬ÞÒ—*Ém1eªÎbîêË`/œ[È`š¨Eä·\Òa¦4i0@óRýå<=úRN•4i0PsD÷fë𦠭rªü²ï1wu¤{ݹY] "EMÎo5fë%3޹+ļ;s×íìôæÊFÒ[®é0Srþ“9#¶|‰©‘$Qöì=$Á@Îw¼±tÄ ª‘r¢üÿæ²¾·Gk󃙾Ka#ù®#ç£L½$Ê1™Å0¥Åþ îØgk]“^/5†Ù*RåÍZæaiyue_1~ÀÖªó£šñ2Uf*Дg8àkÓ¾í5B¯Ðµ”˹W3&Ù–YVa¿±÷@ÉßåRNñ—D.fÙ—­bqã¾’ÚI&^­ÁÎw@Ppâ™ØÅ]ÆvÅ^¬} Æ™z9ü!÷¶0šŸhLj=Éñ5c¨( bòn‡ÕfÛñm!îæÑ”B/ç÷¬ †™Òó”Î ªO<¦±Û™!r¼n›çó}” 5ÊŸû…¬Îü³?U-i.õ¹;Pÿ eªÙZýY)@s~ÿG¹³n°IöÙ™\)%1gF?ÌTι!diKgøVh‘(iù`S’ÏÇìÌÆ Éœ½?³<펱$” ߣfÏÞ׿ÛDsƒ°[™GV­¨ SÝøàú¡®ù™ÙùžAQJµð~fR ï3·ÐÓÒa™ªšKi¾S%£L½Ô1‡ÿüô5šrԛΞäùϺ²¥„I¨@˜xðØž¢à Å¢XÌ5ƒ&¡crðo¶;vûÜ)sÍðR"Ä$ÞYæÁkÏ_¥Â“DÿaLÙz)b•˜™yÚü·¾©ÆK‰>×t”%åL~ËP&x_­íÕ䈑֊R28eÊèð lùkšR+JÉðFš„$Þü“M|ó½Úç^¼¥/'úŽv ³õ²ï1‰Ñqúµ\¬«íU…'‰>Wuœ-Í•Rÿ±'7WÎû[vïÀÝZ‚ÈÚ6»ÌôY" 3Uq;?*y4ÅØ«Á‹K½rQ›K&±ðrËŽì~:žRÔ´¹bx©b5€\qe0nÆ9Ö¢ÈðrÅðRÇ$äÏöŸïïêäO®rsžï4Ò Kéä·ã×ÛF¿Y<*°ÅæúŒN®fúÎ"2U_Ò”ÊÛ†m7§ŽXtÇîh•›²}ýQ–Š*!ž3}ì~ªnD˜íýdB>ÕuCYyÇüÎ1XÞ½!AKqI¹U±¼ßu³$Ø·þjr.ŵq6&”hI°M£­Õ•@¹ò–¤c¼Ýz÷·[wó3Ç¿¯âdÙ›-¼fñ] æTT÷R{œ­7"./ Ï®'Ä÷‰f¹jNõqƒ,Õ7)Ö3@F¢iKBRëf©y¸ûÃL)[J#Ÿƒ³¼/½XÒ29—OÎÑ„rׅן{׊ޖɹäùcëc ¦f¥²w;ÜMkm+uŠó\ÃlåzÃ%”3#:“N-nsE2Ö’’\¡nÁ×ô¼/Ûí%¿TÉRÚ0Vò߃«åK„GKe–™G†%±ɱ~è²PaöâÅ·$*E²TI”ırÏuRyÙq¨¢²•êæáÌÙ*³„T»`1Nv¾™Tß3Ï•­Ô7¾°£L)i !;HóŒéõ‹½WéÝÙR$çbÉ5o¡B?±‡ÃíyºTŠd)–ê’8/Îtm¾]—ΓÂ68<òãlÕ[ŸŠЇ+Ìuwõ_®l¥¼qÒl%-‹RåbµÌî£çËk®cüÛŸYý¶æêŸrœ)¥ö~‹ göºn®H)jù\(=%æ·rY-y9\Uò¹PzI`côarjSÊ—mqw‘ÒæBé¥Ë‡xä¹p™vje/å㟣L½F±xAéyñ´½î¥°ÏŽ—±Ãl½”F¡|±=³ÌÈÂ&'ôµ¸—‡µÑ0SÅÙŠçÆŒ·qÛÝÕoÞù·< R.½Ñ’ßRÈYÉázî8 €¹ZrR2TB¨c/fÛL=¾ ¡Å“ãXYÎt#Y‚) Ïtb©†Rñæp²ã…@qžB¹¾ae4ÌÔË]ŠÅ ÊÍ…íd=Ä+X ŽÓ£L½”F±|±#ÚʪÉþEÛsJJ,Èw˜)9ì!«õ3Óý>k Ѐ$¾\ÎXR}8"krSþ«B¹ìræ1”TÞo„pÖ¼+*ErÕÅï{OxV}êcŸVž¾É§ïëÆäõ)‰´˜O?ìÃLÕ‡=k 5Oþå>Ì¢¨æ¥ s‚t˜­T®A†|ÓÔò´ÎIížKº±–”ý-üðmg¼¸¬¤@0)YfÄjÍNâ\o£™!)èþb4Cõáà'PŒírx[»–í¹sJs˜­—ò-–X˜¿±vm5ŒË£s5/U˜¯ë(S²ù±XÃ*\t<­Z! À@.çxÃm°V¢|my‘ ¬}ê¡¢8èß5–|ߨÍÔÜgJ(*ËÂ?Q,ÕÀgîÏÆóÁH­ä¥œ{¸ÑA¶ìcÎÿúϧ ÅMD’¶ñWJDKùTÐ9ß<ÈRQÆZͪ·úôö›É'7íóUÒ|xê-å Áa¦* ÷§î‡»cvæÒâä}èBjC/ªCå%êdh%lÍÞ‹—¡ ©_òõXù¹Œp3Sm§x·5ƒ—êð‰õš“ºpíŸ[uoÄ2¤¦s‚x˜­—Ãë5tnn›[09ú“Ð )é¼xeꥌõšÛ–\‚˜oW) \Ó±g«8]ñäÀøÅCo•ÂÞ—»ÞŽ=H}øÆ@ÿÎ@ï¸a‡?ÑR /©@ôÚ=¨Ý<ð`¦|d¯Â/©@dÞ‹? ãׂנÿW‚-¹@|VbÅžx1Üg†ïqIªêœre*_¦ÍÇ„„ŠÍ+lïuî*“ hUçÕú0[/×)Ölʤáãû£èD’ë:Þ¦a¦”õ¨áÓv¬¬­‹²É5¢Sáþ³õwp—ee/ˆ"Z#:5ü[ÿ¾Ñ4f¦0‘ÑÉÛP¤¼Ý)EÙ:¦ …r£m•Ñ"i˜¯â€{Ïg*Ø"rN³U©xHurò®7¤àB ì^·ýïéïÉ ’+O§E«J4ÿä“–®/W$žó8þñ'¿ñv8hÕB”Ü­ì¹­þÁY 8A¡‹€nøféå¸Çj .b XÞ˜™a )h¹5ÃLåºp”OX›¿óh¸Hµë`SJ~ÿ–¸þuͳڀ$ÿºÉU0?b¬L­¨²U¹iê;P3 R¼¾£Z©˜ÅŒ6ä¨?ª Rp:]=ÌV™`äz‹>F„Õ›C~¶šÓùêa¶ê#U•íØmÛ/&w~ÝwÃ<ù›Tx²beI™õPž‚Y÷ĵýíÙ7,ƒ5¹‚eìmGœË²³¤D\…&½]¥ƒžG›_D§—Q±ÌCÓA[2ůpM.…™˜ÅªÖ*‘é$Z>¯¾ÇZ›Håûô¤jÔYú9éá꺮ÉëÃø²UßžTŽbe'6>i›"6¹då& 3õrwb5j×.'Æ}L[×0 j#+oÏ8[Zë¦Óã“»çžmç„v5h;¿oª‚ŸÂ²‚‹g|öQV¼$ůC¡²…°=GÍÖìªÂKRýz±J[+vZBOÑlͳ›Ð¤\þ¾`G±û¿{9þ{ÈÿIÉê:‚Q¦^ŠÝXŽÚš®í?ƒ‰ (—¬1ÈV] ¤zŽpFx˜>f\@R²rÿ‡™Rª?”¶ÎõÛċŴ\”“àž\þrEcmk+ê«Z’îsý3Þ£õ¯³ý¡¸ý°³Ô¦£›­•ب>R¿±ý¡B­qñ‰ÝvL9±@irëtÿ0[/g>V¨ éO¶·´5<ö¾†¦Ñ*–;4ÎÖKý+Tôõ¶¶ƒzwŠÂ4¹ˆu€o”)eüC­ Êx3Þ&ªˆ”î µ.(ÿ‹Ê°éè¯l+ä“ëa~áXì¢U}1ÍÖîPhù¤‚¸á(ý%*xúY²4RÔFªX–¿£,Õ§=V¨¶ž“ÏJîMÙHë|ÿ(S5‘ÊVLΚ˜}µ L¥ˆ”¶î ³%XO, à P ´cµö'A¤lx–ô[P{‹9î‰é—Ø×"èÝ,cEýá,Þœ¥?ø'WÝöÌvÚí§Ÿv{Œqý÷m¤hŠ¿¡´.Ì>´I¸N?îÃLÕç=ë êW˜ûð Ô&×ó®|e*WåhñØLRt²û®ŒÚHå>ÚV]·ÄºÜ õs±½:šŸuŠv¿ö5À7ˤvÇggJ¡Æ·Íi9 s£©¿v&pU‚\H*s)n€ü³Q°>%Xàª\½³L‹•¹å•+„0°Å+WÔV¹zÿéŠÕ4„7߆·Nd¼J*îG”1ÈVû˜Çù¯ÿ|®XNce]‰ÞvP”ÂU¹âöMeê¥VÕ´Ô‰Ë[ðR ^%7ÏÀ0SE¥ÏdÞ}T˜¢aR¾sÆÙª‹ X›Û¡oçÉ"† ûR4,×ïî G™ªT?e¾«:Nœ®M+ð+C\ÑXæJAÚ[Þ€¡àW†xêc™²oA å‡ϸ‚_ ¨ÃTšCŒ1ñ)øuz¦údÄ*WïtÃLåﲎP—KÙ˜ºÍwñ*­Ý]Ö1ÌV] ÅÂÜ•m˜½ÒŽ/™Á«¤vç¢Žß ß53ÂÅÜ5| ࢎPáCÔa2À”K3î¥ Ë¾Xà£ì»ì7[SW î% €ö2ÿå‘ù‡Âä/”¹0¯ò2T%Å»‹«}H˜¢¾¡@½2àä¨ñÑøÎ—æëì ®¢^ð¿®ÿø³ko;ÿ«°EFrÔÀ7To,”¼r¾V†ò \ øc?’q/@R÷A_¾Gû¶+áÙЬò÷·?•¡´Hñ©%û~u.R \ãåy€bÐtÁæ7ëö%4¬ ¥À5œù×t@2"(­Üf“ž³ÏB€ÅŒ²¸i”©úFGåçv?úEdqôl˜­pFì;_+ßm#XòoN„Yà¬wó|&ãÆ)ò˜˜Gþ9ÄR¥Túl\©„kz°5²B03¦Ãkz®v§Ð±Ô/N¸J¸^ÕjÆØdÿ ƒf‚rfàÇËüêØµ™Ñ+º[6Ä–ÜåÌÀO¿6×?þìü~€bœßÇØ‹ÅI^E&­q-Ó0Séäa·.fá}~Ýÿ½ Ÿ­¼¶x<Ûü]fÁ/Ñq½Ó0[5”àš;Ìf¯³w 3C:|2¥z§€ü˜_°pv¶OT ÿ«àÐŒ¹Þ) ?¶ ;Î L1Àe4TÁ!^Šü`òŸ¬Ÿû³à*àPÇ>‘ž,û£w päåð“¼B'UA˜ Ññ>ÌRË*pÐ6¾p•ÝÐëHˆ”L®Ž°ìœgV1ÎŒú¸‚g˜­ºvL8mëÉÁa¸%ßUS° ‡Ç‡ÙÊîǥ݈ ÛÄÚ]SÄ,Á!®¶»$(®*èÓ{ùšÐ Çv&¶6B‘EÒqqlfua· FX­¶kŠÈ’Î9|ü– (,è-}8¿9î~ËøÉïýoÜ~ú½p]2ëôvôér­ å dÄû:Ζ€MZ‚æbg%|\ÁÀOØÄý pЇ³]ðÉ[þx¸,ÃÄÑa 3U&Ò BÏçFQcû‡WÎRè8CF~²†ÙG˸Ï3Äj·Ùo׈ K½?p¬5Ù‰°'!ìb¶*)¿BÇGÈgK‘¬t,Íx‹kt†„™¥™”á<ÿ*\«ÖÇÌ ú85·v¢øvƵx"feIKë­«Æ€E>=PÜ×b؈A:£™ï…µ??6îTÔÙ©(Œ6cNÉŒkµ÷fFY~vE®ºÝ1ïa¦Ä E<ÎJµ³èl&â, ‚gÌîÈ;€hì!Ë$ÁÃ=ÍÀµàlöoˆ%s?ë¿þ³;¡¡ùA Ô\íé&ãÖfsáß(S/È[ÄÆ$¯ ÙmÒåB´La댟ygKåy¿nÍÉòöytRQjAÙD´Êêðs{v# <;”Z-ÖX­²«ý[ÓM[}àNF©Ñ⑌~$Ìá﹜ ÿ÷†\G( r9ïÇn·|}zL-h• ïF™*oFB¢>|x•ù6W^Ðgª¸‹ƒ ÕðU„˜àÈK½ï£| * ÅK1ÌT¥¸ûÂUÎ1 Þm'œø•àÎÐruÂí5ÈÂ9‹}¢ëæíòDpç„M?àã/¦åÞ‰gÍçcò¯[ÀÅ÷â劘ŒÅûÉ]gÜ+‚Ã_5ˆ‚˜år Ìí8ðn†ªœõe*]˜¶X€¯"ÀØðæëäö’4g()¾›A(¢-ãl½ÀWa‚Äû'™XudøV@(îþ0S_E° Ú½ƒ˜“MK~¦O(Xð,.h« ý°çHì(ÛŒ .hByÏ"4±*@'ڜ̒vyÏò+Ä ‹$;²-‘×I²¾/àPV’ì——Ë[«¾¨Šwb”¥ïÖý\ˆˆ/}8ñ# ¦»#N•U ʵ}Ãl•Õh‚—0Tn6üºâÛ» T6CP*W¬ c‰VVº;ß}«ðéŒS½#n„€¤‘™,£Ê-9ˆ<ÊT®…7|€gÞùÎkQégŒJœ@j0#ópÍÄå D®7Zp%W<³Uû€ˆ—ÀËÛöÌ/w]@hA•x¤FY’û±'Îܳ}Züò+J-àÔPT‹ Gn7aµHn(GVd9J„¢ÆÙ* ¨psÛßg´m5òçcwÜ+bSµ®2àN~¾à0ö™ôt~ 6E4 âNNE§S™ûD;A¿›zVFÈ\AËøpñgÉ+Ä:cE™ÆÙ”)bJÐ÷lž)M$å ô[p§Ï’p Tá #¨U@Ï;U ±NX‘«*G™ªA¦ˆ}8É}sÄÕçÞ ^-XÑs®ÙÊÇ?•’æ[¦›GÖÞc#®­Øw.7߬„1Ùµm'YÐéƒç ¼Zp(º—q¶TV+È*wÛ­?Š\@ÔÔbÈŠé¼¢À³ä‘É=fXË6µ¥Eý_$WÙúrgq]¾æî,Ú¡F\i1’“hW&ˆÝPý¤ÀrÄž»¯f*»ŠÆ¡}âšØœB- QgÀîNØØÎs^û;F,gøÌ£ƒ,•(BÇ\…{ÜÌÖ³„„*gÍõ¢c ÕøAÂÆÐßñ8‡½ÚçãSüŒÀÛ8[ªðüÚÀL6Q|ÞúLD…§3ÇՌഔÀªaŠ#¦Í“Žy¯ã[›×EŠN €æ×½jïŽÀ$½Srí X,àû8[/>[Až†•´½)@ʈ± _hŽ1”]4œöBÓËÉ z‡Õ"òå~Ì€.€(š/`儎ñ” 3¥zÊ¢¹žÁËæÎÝaE„:ál¬I9]¼P>)”X˜ˆoLÄ €:Ø}Ñ#g»goxù‡"Y Ô ²sü%àqÀ_&C›©¹÷V*@1»G§FòA´pÚ^»dÿXÎ Á·a¦¦ŸAw?ø[DÈ ôÁ€¦ºåTà ++ŠÆíg«¬½Böù6w[¥ÜÇfXYP4Þœq¶TPÐ6*/›KeWO D-€Ü{ž2ƒÌ6ˆ2›øEÝÖéS3í¥.ʃDÃ2 ´•—!mƒ6ëÀ‰+‚¯+ çÞ6øV »{±ù¿ É ÜÃÊÖ<‚Á f×õ¢KO Tž3'4Î3]X‰'œÎp”%Áç‡ÙT+AˆÕ§+þ‘»w/‘04D»‹2Êiõr§ÀÚ3ÎÆrgœ­²’(š¢]ˆîÅi¤ÍYœA–T8úÅãàÑg–mëá3ƒ°Ìîx>bh†ªÙ#ÙVÒ ™5ÅØf#:?ÌTÏ…ãh¦—‹îa›ˆ6”y%Dä/v%Bñ8/§ê™ÔŒ°‚Ù¹f0àqP£ÞäèÖpGAdÈîEŒ!4äE³åñ@`øˆ²¢÷³Ñ­Œ³%]„ã̳Ìx$¹-ÁÆÙ »7ú/ahNµ[âæœðgs¢t˜­º I(ÆSìˆBö¬ŠÏÜL~†Ùx¬¿±8oùµö÷y3Áº? ¹žÙÈÛÝß|Pâ÷°šgKµ¢ˆƒV•a:û1H˜}ë¸Qb3ˆÄ»çÕŸ-0{áÜdhÄÅ Ýœør€=ÀK+8»`gDÝÆÙA6«1[á~ ›yX²î  °˜+7ï›_ÄÄ Ì.ÐYþÿoê7VýÜþŽá,ìHÝ,ú÷g_2Î.ÏÕ8[‚Їâ}D¸ÿS¿ÿ‚×Kõý¢17 A`¦¶Ø½q}·`ì—#¢7Ζ zÀƒ¾s]° Þƒ p½€|®/ ô¥¹ÒåfowÄ Êg¶æí£™ëÚ] ÈH½zElŠYüí 0 ºŸø¶k`£]úéâò´,í$°$è»’ „RͲ–ðö˜»}{« D>ˆ®_ÅÓp¦3úÕY¤Ñ¥°£Le÷°º6àˆŸGdü3¹Gñõˆ5ºvŒ¡|Lø ²ç9§®qd]0DÞàq¶*5ìØè ôIßg&¦Ox$—3"„@|=Ô/>o¾‚é3Šè Q€ 4jÞÖæëÏöþ*« Ógñ”Oؤ[ÞÁÛÏh¬gøÏ•¬£LeH`u%k€ö€Å(9,`Ñ1Øz†ÿ\É:ÌV FhÞÌKùséc…8øg`œ-•²þ„P²îŒÌô%káJdAØÖf=Y¦r¬ÿÖ‚Ô['õ†HýŸdD 7¼0¸ýfâÑYíU2 =ÏkºŠ$ƒgK0Ȉ8BÑ‹q‚¢@"VˆYÈÃ{`2Y!*N¤ïfJpȈ:â¨lxËÎjz&§DfBIâEutE'´¢'28I$#> tn´ÅaŠ=‘ÁÉŠL`!”º“ÿfõA°Ê" È{?ΖÜû<ÚÅo•`Æî. F"c“/üC»P÷·é´à2NH€q˜)óLË¿þó# ˆíßY·Dìöí!#…ëñûWA¹¥óŠ8­ãŸ‘M½&šH±\z¯ˆÓÌv¢Õ¶–çE®ÀE(·Ÿ°,9àªyœùdÀ]9VX™„¾¶cG0ۈТd¾èÝŸ€” ÷Ýo%XÕ6Éú¯|íì”Ð:z%h;ÎVÆ$hÕ|­& Û©|ÁëüÚiÆQ¶Ôo%¨ÖãÜÔä½Dæº.*d4(CnNžvüWô6¬¸ÙðdÍmþnŽ2@„%z;Ì” ·«…Š|µEßí¹ïRPÂ'㹄Ø"VkNÂØ:hköɳBød<×·tÃZnÏ,óˆ¯¢ÞÆ`4)¹À/5ÁÒW 3%N„j1=†Aljÿe2é“áÜ?ÜE„W?þzÍÿž&Ç‚¨–Þb˜©Z(áUL¢YˆÇ‡ÌÔ$–Çj¡ÂMD¬:rj˜ YX'|ý²>Ïý½øª7`¨‹uØùàáa2Kôvœ-]‰„Öâ0@¾ÖVâôLOiAt«;‘À[ÃàóÁ°ÌÙJò¾ë›ãay€^-‰<δ¸'ãQig 쎳%N!¸b„j[çsáx2Ôû¡áW`p—»³Íq¥e¢%¡3ÎVé$ü§aÇ;Ýß /ÄŒ@´ô ÃL ¶‘\ˆËá ÛŽíý]_áy"Úûî&øõÃÅ W{ö‡§”˜ˆ–Naœ­ÜP.ôåÌ¢&; ¤ü…渷Dw#–k{×NU»TÍ´§¡ë#x/S´˜䇰qëD†F8‚´Ð‘O~fç& :'¹„€ÇÙ8¾æ/(j±6>ðC©¡ ¿1A£…>Ϥ!ùù•Áq ³õ‚GŒ] '">¡^ÁqyLÆÙ4#bPàfíÖ 1Ñ;(;”ñwp9¿vÛj¶;½õ‡2„Ôˆ˜àò8[…ÇPò—lë0{>UðCn~Gu°kP¯;²¯ÓÂ$u÷ÖCo"¤œ9‹LÁ_,Ä@[âÝH )þåxrƦ ³2üPW3!ÆÌM–湉—CcJ@%’ʯì@[â·" Q«åøÚ“ëÃ3™% w§®~ºœºJXôÇŸj¿~ÝMAA%¼š@÷0StGX­ä¶8]ŽEŸ@ßý\ÿúÏéŽX´®…O°Zä™yº”ÛÊx5‘îq¶^îˆE8§ìvÞ…PzAne¼šH÷8[ÒmoJ0Nu²ùxÿþWðd}ÿGGÀØœÍL” \£ÖJ@eÂÑãlpt<š†uØÎHæP·qëP‡º>]¢Ñ{öî8B¦ëô¦ÇL®)Lqeú—q¶jD:aÆv6"T–»°›^ù0Á•é_ÆÙ* ¦€?£Iáô¨°{†Xpk £.sOk–&˜ÂYþ«ñM ý[>”ZKô[é¹:ŠfLNÂÈ¢cñç+6,cÑD±‡™ç1k4) ´UxøY%¿2®Mï1kÃyf›­ÕÇäWƵýäF…4XÀuÆ !Äšx+A¢ a±#Î%¢Õ'øÄìéZ8!`‚hÿ_ˆZñë?O,}R½PV‚B¾e©F¯#Æ ¾óäÉ|2 嫇æfªp+¯F ¹‰£´îZ{  Ô—@Úïv‚˜?N=ãÊú£†%04¯ÿ8[€ájœ‡GÛB8÷)Ì–@Ú,þÂGÀ/nÏ=3žÊ© Óþð©N{Ns€’a‚{ûw;p¯X" ÑvÛ[`Ÿ™’ó¡%°2VM”{”%Á¸#¢ ‘éŒ&uCçúô¤L… êýî8 NƒÝv­Æ{J„¿ÊH51îa¦^ îˆBc˜J’g_æ¯2JÍS8Čޔe£eaAâa³z¥Á2Üý¾èç™a<ñ¶x¦¯Ô• ÔÄ·ÇÙ*Ъˆf£i ×tö‰î –ï’óŠ`¶¹ƒÕˆHXæˆM%Á2Üýà? Y¶oÅT ˆ"%d•€ÏtÃL‰ˆµUçû†oxÎE´W†±ßY®„,ÿ´XáÀˆ¯\• ÏÄ­ÇÙ*k¨Œ,cÿ7¿Í]¯[U}&n=Ζð\¥†b…fêƒ æKìþéÏtdr´ó¶»ê ¾Š¯Êè3qëq¶ê6†˜´çl¨W[ˆÍ'¶*÷%PöÀu„–Û§¿íMZûôË67ÿ4ËD¯ˆ˜?¸gK€ëˆS»ÚÉÞv²u˜x²„¨,ûñ\ [6´¹mª}kÔ ¿ÞLðg2nãl rqê'<á7í«ñÙåàËùN\¶òƒõAC¯Ô£ s&ø3}×0S‚\GœÚÊs½m|:¹‚eÿá#´Œv…äÚ¹¸à[)9ŸéÇÙ@%â'1¸»/ðYl½'Ë;&žPk‹”í³£àØ.œE99A¶éÇÙª[E¾8:EVºÀsæöWü^BÉÿð‰µ6ÛO²áéø ÊÈ °M—8Ì”"âñÈÛ­ðG™,FòÑx{ùºˆå9Úž1òµŠ¸³/(‘lú±³‚Â&üK¶lýe{ób€Dìm?Tí7Pùd_";M8Ζ8ÛˆÕf¸|–ÏTâ0ãù¾ÿ:aÈÙ/{²¼ît/ó|Ä¿gKmì1‹ýe»©9÷¤ 3¨_xÚæ¥p°"ÈŽï=´§fy°2ѧ@™,S‚Ö¿{ £{ä`÷«±Eäc•½Ë ;Áùa¦Ì[à¶àçƒÎGÝ.úŒ.+ÀÄ1”¼Ë(»³ÉÃlø|DãENwõ{ÖF˜ÀŒØ—iê¼ñ¢D$g9é~ú0úŠ láŸÈÄæQ ÜÌ  ¨"[—é;ï ü3UàþåGÿʉtz1+¸ÀÌ” ^DðÍÕ4 çcjbúJ f”ß?÷Ž`ˆÀ€»ò²^ÌÛ/ש”^ÆæémFY‡|C\Ú^Øû–VkÝ>¸ZèÁŒò¿+ 쎦ƒ•~cò'a„ÔËÀ<ÝÍ CaÇt:D0àÈNó u—Qø‘vªŽ•Õ›?Ynî€=¯çŽÂf8ÿ¼Oð:ú´‘î¶›¹xMRÐv‚ç½g«êXù…ê±åh‰…`ª  Àùå½P=è¿û?¬ðÄÒ¾àö2šïŸù^¼ÞuŸ°vsÙ|ÇSV>&œù8ã‰ã²$0~í]l…×´ß^€*³'Àþ<^Ú´Þv”á®&’oBÇ O"oœ­±J@û‡£©ÛFoû8º@Ê ÏTw¡‚Í‹€=” ÏøîC ~O@ýW?ìγ ‹*' <‰¼1vª&•ÔÛ!èõG+ñèÿ„Ö,ÿ¥Jغ¡íÍÌbjž< Þ6>ß¾KïÏøk0Δàö¥·óÕ.©¯Ÿ'! 3ŽÿEí#®nH»—ÑíLR³¯¬aFÞ‰Ù²$ RÄçÍOõ¼Ãæ÷þ1Cø°SGcK÷#KïsÊPpwöÃLåEHð¼åծĚv8¬+„_}„RG“–ã-ÚÿW.R`wöãlI%áù>‹så2,±(¯™!ü?û©›ïêÕßz3³(ÈHÝ Ø³Uµß|ÞyíÑ{³æ’ÿ•ÄfÆðÿ€ìªnŒoÎ6wµz. \¤ ï„쇙* ûxè˜0ŒYÌä£¹Ö ~éh#@1bpŸ;þ—¼“P¦â1ûˆª›ƒœ/ŸKõàìBs òNÌ~œ­ŒÄ}ø„èu0Áü>e|r„ñ1‰hçÂð\+©*8¿Ÿëbn]Bßѱ3Ó±v7ªDhÆç‰ì²$¸~Dñ1¥½\m |"tA© Òÿê3òÂè¦8¯ïgŃftž¸þ8[â#M:çÙ:L,F„S°êÊ  úþÍ™yò©$hÆýI 2Tõý’h'Ú€OûL  `S3ð]!}óp+&î·£ì£÷ 4£þ¤ †™*è‚H ég7–¥-Ãäõ¾pžJ |Ýå|²„]v—nâ­8 ‰§Ï3R¢2‘™Ý]޳%$E¤$)Ÿ<Ü-›gÇ_AzfÚ¢SœéÑõ_.Á Íó5÷ñÒBT ß@G8Ê’8ÂHL˜#\áIñýùm Ê3“8ÂH' ¯h”WïK4¥Rt„ãlÕdE¢>?Ó÷lîÌИxJa识™ª:”1¥m}–¾MQÊ3sï„BÂü?ä‘ÝÏ·ÏW¦2ótYÃL.+Òh%:é§·“ZŽŠóÌCé"}€¤Ê¡Úí :U°™B1øçÎEõ´°hh›¹¦!… ¡0Ê’ ‘>°Úç‚áöý}tÁi Åðî"êo˜°y²P½à!31@Ba¡VLt€ƒ{"ÖõHØ•ƒÊ€‰ú8[…KˆÜº‹N i6øia„Èt¦ÐD‚æÍÐMϵXê°;V{?sôB"‰é¤Q,¶*XØA"Ùó±ŠõŒÌèŸlGä#±o·-^Î)W)œÙŽq¶ªö¦@n ½ ªSl§ª+ñ)HIwvm&œ_<Ù%ð‡12ï) ˆìüôsd%0æõô§­½¤¨èÊÄ\ñfJ(Èp˜[Z6~;+|b’0Ÿ™yç9+†£“·áÜ:D-„e&.Hy 3Uj@2-ñ!Ÿ=yÿ­÷±)›¨ 2ƒ UýKß°ðd´¦mÎ6s¦WEŠfäñøòÞ\tn9œ¨-8ÌÌ]ñc§@ù"¿ag`Wh Пš(ÈÐÄä(Ê»‰Ïÿ³M¼ûÇ2MÌÓ·‰Ï¾·ß\Þ£™I ²ÃL‰Ç ܆AÉÛF|m󢬠lýñ%;!Íê×.šn5“ q£,‰ƒŠÔDÞ Ã-hpÙ”¥ÍìÇ;%›øG1îÇxÝÿ«xU¡,Èu 3%\Gd6,å70Õö¸9}:iy…ý`ΠLŒ™¹ ÇE_.#}»{ŒœŽÞÊwRÚçb¦»BkÐA3•³¦Ä~|øàírq©(ÿŽX’w:$/÷™lÕóK$w…Рƒc§îæú!=  `Ç»=wÍî>ህùƒŽL…q;Ÿ~_šçˆÅ‚ÙÍl½ä8[ʃ¤ aО-Û*‰\;5ÊÍÂufb¤¤A"éaàq+{n3Óü,§B-¼È×GžÂò|1Ëþ—”½ÇBex1Ê”Ð?d†¹`[m °PWZh·§‰@K×I?êdKÁgŠ‚þw!ô"©P+ÂKûö,Ó ê9SUá¾;­¨‡Ïwîºm Æ•|±ÐdšÇÙb#Ҍ٣m6¯G•{ªãØôƒ2Ë 6æˆþô£°ÅBQge©j L†÷…\„oHO´s&;Þ¹D?˜×j+ˆsSoW²8S$™‡™*€ÂÈd€@;éàÖ^8äpf;¾ÜFdŒ8Ñëdá^JØ\¡'Hl 2$0r–7µpâô/_fÆ7“ßýîÈ šÉ(åË~’eái…Ÿ ¯1Ì”øÁHc|øÆJ¯µTå|…êxu„™zp ES”WhZe'Èk 3%°\áPéLŒ½/ߌÓq«š/l|õffâ|<¿ñT¼bU"ñˆÜÚñŸ¿ˆÉÜÌŒRc'pû*ëÅ[ײP3ÿW¶•Žmei¯å•9Î4 —²ý¾Ugµá'¯m/j b&r'æ$ÍÚ7žîÿ|œdf„…^!13ÌTÕzh´žÝ¼{KÏì„]Vªæñ·XžmP&ð‰Å:+mlÌLPÐÁ‘2ö…eHè¢H}øúÍyò ³îW^Y¤¾š¹Õ-P:˜tØ*âß‹.QùàHû.eIè¢H™³mËÂÍÒ+þ‚VÎüÑ»¯œŽ§e&sÒÎ ‡”δé¢a–’Ïpµ(îKûßýûÜPÁ*EÞÇÂsËCÏð8fNÉâL  fªêˆûe¼­zÇ®ž©œyga™xòZ¤E¿©ØùZað¾Vg¶…Uw;—L]PÊ™½!ï3ÎVÕÞXtR"EÛ¦:÷,ütf‚J÷is/ö°íMóJîL”ŸÎTЃûýÒÌ}o€'!øíØ„ö³ÏÍ ªù¡ YN õ,$é¡a¦Ä E2È`*›ûsrfŸ‰™yl!Œþ`­#ƒƒV¦3 æB!üs&yè‡FYÊdKع²e¤ š…Ðm«`ƒ"÷ƒ†¸ƒx/ß Ò:ÓC%|¶,àžùœI>îÉÂsZe£cýÍ”!‹ní b¯æÝ‹E%…4¢ g«pA‘\²CµcŠVxñîÊLF Åd;í˜ýáñ˜zËÿbì´¶Kž-:úŒÏãsfvÉø¦V›5-kpŠv³5ûÊó ´b ìsŽ´%äUäªÐ v9[¼¾P>ÓYO›(&HmO=œ4(xr¡¡èBÚJîß0¢vhú´‡ë‰Í‘ç ¬Z#¦ó ßÀ*ˆy!¾^¹íDEÙGjÉØî=ü³3å™LºŠ4ü0S Ú'^Ëj¨æp…í&£W?s_ï`kä™>C‹±X›¿|YpõÂE‘ÄfjY&ºkˆµw/ÉP]?GjË|Åq°›Å Fy‘ýõÙ));”xG©Üú ݈Ô~`­Èu 1Su?þ[h~\€ÄÌ·SΪ îë¦+rQæ'äûÍë9¨¯¬¾òUdºÆÙ*˜®x!ô¤~›Ë ©ëöBÃæ~‘0NÜWIuEb ­•¬Bç»·Vªü q__¦+’Qf ˜»su‡*ªÌWñ¾Œ²$^8[ˆqXDûÆWo­ýAæ¾þJ ¥ž=ý©E4 ¬ƒÌ(K"6äF¾Í˜rh³×Î+õ`Ð]‘òv]¾r0ù;…"ȔɮQ–„êŠÄ–9V¢:XŸ‚(²‚Ì}ýÁtE>ÊEw@ZDmd!Èœ¹®q¶êžÊ/·EËŠ³ßŸÎ(Ä™ýúƒëŠt”Ñÿ.ñ°aÞédÊŠd×8[² ™ÛBããmn´-D²T5Â}Ù®JÊ|—!¨EüÑÈŠ¶Ï´Ù®A†„íŠÜÖ‡ó^QäÌ»÷uª ò_Ý®„M„š-.s(?¾K¹ûÄYöf)eèЖ:x¹jNsöÄa¶Ój7­-ÓF' Z¡Èþ ÄgeÇn=œíëÓ¥˜é}áµHˆ 3%Î2Ð_V8ùà¿©­_—W¡€PdÄ4g÷\—OýOÕð;!i+ ÛûL¼k9<ÅT@¢¶èNªš"©-4E®îCV}&Ra¿úYQ"+rM–ÿÃL· ÿ…¢/fªjŠ ´•Ä–îZò4/›DI ÌÖדþMÆ=µ•µÔ_{Iä¿Qô¢ŒÀÙ*󠭱ݳ6(™ÑòEÌ]‘cB÷âŸÖ5œé/4=è0Sâ_e°\KŒB&&à•~ sZ8Ç@3)ܯÎ_™(úÆQ–D+AS”)§ýSX dõ€àª¨Óe˜ÂÌomê €òùÂ]›e©j­ b4ÐŽ}šîÎò íŸY0‡øCH¶ =ûÖ]®ô~#½-åjÐR“Ï@Qº^˜+òüÃLî1\v·™ŽÄž™$ϯÌ&Á¾<¿¥åFÏï@U›½ÉP8käæåNl}¢ó;É?ŠxÈH¸3rø„§!B9!å|Wlöz>ÈØ/ÿåÈïøÎþꂨŽŒIÉ0SB®E*íÁÅÚœ]=•I!Ûþ ø#ý…FÎ#ÊMãG¿–¹úÌñÞ²”s4íî`â¡Ã/Úo†Î…ö_ÿ0†žõ¬‘“e©j üšFÙŠÒŽé"¥ü3E÷N›Eb õ†ív‰Äÿ.äi³q¶ Ú,’d80 £fÜÕvÂå ‘–϶s]‘úü?Û¼@FrÌí¶Á¹¶BÝ~íÏô@ÊX‘ëgK¸®Àl¡p⸀isÕH¡9Èì—¯ïÕëç®ÅÜ”]öþ0Æë¹ªöм×0K)ƒ*ÝŒU'çóˆð¢ $—y@¤¸Fìb*ô™{w‰™BU;,<{ì*T™½"B0ÎVáG– 5׉Ѧií–‚ú™ c9cãóÎáù½TùXgÇ"ƒe‡¶¤]Ý[Uú…Ìr‘g«`¾"Ñš|ã˜_{ê‰nU´B†½H ¸Xˆu±&²âŸ›q¸©Bñ#˜ø“T Ü—ÕEÍÝáµÓéêâ0d~ŒÄÚ0SU£í/—†>Û…)ù´ðïURˆÌ·½²k™ÿ2FlÇ‹×ÍÏzUYé2GF/>ÎVq5ãµ3dyásv¨â½ € ²,|[,G:Í KƒÌôLA’ $„pûòk3WnUˆýât6¸Ð4dšŒüÚ(K¯E6Íðµk ´Mà RÑ=d¾íµÎØonûPþD“ˆ2MæŽQ¦„_‹tšÏglwc»û#³…èA(·?$ÙZùà6³˜.” ™(£ e©pà‘PƒdÓƒ° |ŒWÅ ‰s{gØf‰…õy*Ë÷³AX2úØQ–ªVÝ_2 ºˆõm ®>¯;+2ßöή%þËüÖÖ\àÆ½R‚rd”/Œ³U°k‘K3HßzÃ8ž²¬:¶íë#†Y;'K´ßÐU‰X@h2Wå 3µš†­·1_‰\G9S4rnæ,›?h~+3ûkv"Oȼ\W#ƒž#Y†–ÙÍF"'²‚L¨Ñ_3%þ2RjV¨òzµU8˜ÆU…D»ÄÉáÇ/avülLjýÕÿý¯UF=Â(KB±EF ­·¨60#>ì'+„u#ñ´|üLö´íÓdQ‘l‘ ³¿Ú•ŽÍ…-s/΢ø@è2òlãlUMºYó&]™ý?»1 ÷V1m.[ˆl˜9ÃSúÛðù2…ø@3RmãlŽ50kà|‘¢µUؘK2†L¾±¶•üçyDèK ýŸr<36íØxŧÍ'2©J!l,bÇØ—I¸§0· ok²zë¾J„¨ë딃?û¤æÀž¡ñ²äŽi£sY¢ ©¹a¦„š‹L¦µ­v±Ú*,>äV• ÂÖ½úÔL åå±6'C`GB²‘œfJعÈÅy•Ó Z¬½B¡eH|Ýì\¤Ð¾Ð$–)òýÅB]h6:ía¦ª&ÜÀÆ¡ Yþf£ˆá ©Bfì:ÞQ0o‘³z_óg³“:…¾ ñg$ÞFY*x·È²™ƒk_¹åe¶8bI¥ ,Ü—sûáÆŒ*kW éØ˜RA ÏH¹ 0"Œ[ä×À{io_rru’ª„ƒóLíl‰C'ìÌéŽGïGViA&Îȸ 3%psà×ÌïµUÜí¨_þ`[¥RHÜ»ÛK¬zawBv9½mAbÎq‡™*ð͈fZ]³4Å2¸pP„ ‚xV©ºH§¡Ñ‰ŠM99ï[ô™r£ãe©êÅý%æÐ‹ ³-ÂE0º*yWc† !´´nk·“…¥ýí_ß6ÞEé ñ•LDUDí¦\ Ü7W©$AÈ<úÔq¶ 0’~hà8ØÖø¤×*ä ™t]^(R,®»s ›q=5Om ‚=ŸsÐy6KðŒöèœg’/$}CwÁƒ ýSd0Çh¬ãE(q¶yÏè§³çÄwüŸÞ§<$°ï¶$^DÂÒœ hOÛ¾ÃÇšLjúÙ8n÷ýá¢_šÑ‘Ví-„ ©§™E&"‰¬Œ±#‘"ð@ýv?¹‡CŸ"Öª²ò~3"uˆfå‹Êˆ–Ãò"¨ÆBèEWE ³U°‘†ü¸fÞJéËûQ >D¨Êw´:‘‚vÈln%ÊþÓD‘goH]Ç0SU«u Ñj¾ùÍP>Ý¡RÌ@¾³‚‰¹CI¶ È·T–£bDŸ!ä•ÃLUýÐÉ–Õr!õ¢ðZ0wæÎ̳Xêk5.çªDCÈ=Ò‚ãlÌ] ê¼ûsEú°zÁ¬‚Læ=5Cä×\DKݧ}ª.C(8úÃa–ÄcÑ{÷¤û~y+’yæ5gdåmQϯUà‘ø>_îß)i]Í8tÏì¿¶/@G'š a鍿hë ·n>y2I0ª¥J¤Æ“b$A[«ÙáÎB’‰Áד¹:;¡÷Á’±Å?ª U‘!|‰Àq¶ª.æ_âËÅ\1‚*w9è ± ÝhéB©ù¼ÍOñäãØ†Ü Ã1žBÜ  ô1M$½ægÔDedÂDã(KU£tàÑ)ݼ¶-ÂÄÝ+Ô™züƒiŒ\ É/<7ŸÏõ?N‡P=F¦ I43UÀáU´3¼€ŒÛîç-gU_$âñK3F&Ðjè¶ð(í7ÔuŠh"“…dGYgÉBô2vžñ…™ÃŠúBøD_˧å·—9|hA^ÌêØT4!$ éÃq¶„?Œl¡Ëõg; çå¬*0„Qüƒ@ $ÎÕä;º÷c¤º‰D’@eIÄH¢¡ˆÚf#.ohÎú‹Ì(æbö‡ŒÜ~ÃWf˜>Ï!«&2»Ç:”¥º™ùËz3ó±p ñ Fâ ßiÁDÜY¥dZ d›þ‹ª&”Ü£g«ðƒ4BåÀ©hëpxæ* ! ™k>…ôê¤Ò9|iÁÈÞ!;CÓN•ª­È³­a¦„ŒT š€ù¶•Ù=}U†Ð…}ÕûÌÉŽÛeþîãmN˯“+T™ã#98Ζ°ƒ‘ 4‡iûl ÓŸ¨$™/,nJK‰ÉKÏN`»ã§#¶þjpVNÇG9Ì”¸ÌÈ¢ÂsOX…Åûš³ CøBVR¿u¸¥ Ër|çyésD‰â³ø}\$ôZ¸Ú9µ\DBÒ­Ž³Uu6¾Ð[›aWª¸U€!”"?gu¡ýáÂõgüYÁ3F.Cp´†‡r¬žj+„/¤*c˜©‚iüáAfÃñ.®=P…Fâ¿,cdÍ .Ì ÜàùTÍDf t3%5ò‹˜¥jK‹oÌô¥Ð_d Òrƒi?{tà1õ¤O4 ŸZ™7¤3fª ‚"\ ù8#!ÜΠܙʀjé¦#ui#üÙ̽,>Ž=Ë:„Þ|uÓ™pD_ôñÜή4k1””¤g«à3#{‰ êf.k•ÔÞ+¨(í†ó>3’ŽH ²Íf–ON‰ CˆI2šãlU½ÖÂDV°Ð7¾ O\¨;2ÍY‰9XKEnÐ<ã eóƒkˆ*k2„>$ñ8ÌTÕEýË2¢‰zç ±ô”Lyw( ùõ³‘ó3pǰ cž7nªÎˆ¼ ½ì CÂÒEN¬Çméoû¶—?¥:áí|%Ï®vlî—L³²‘ïÔÿˆTš!„E£, S‰9g«}§öýOVŒªòÈÜÝ»L\ZYo¾¾í|“¸fßF¦nœ­êŒÀ懣ž°ëö¦$a#Õydð“îú'Aõ-¬ó6¿õ&¾íÉ&(¼ Gá¨tUp$NŽdÞ0SU—v î>|Ùý°˜|ø¿B ’é½?ȼÀ·YµMpñ–-Î>]T™“#™7ÌTÕ¥¨;oëÇÅñžÕk¹×Ùý~ `z¶u´GÅÝ›Sš-ÜX[ɇº6USDÅ…{á¶jÎ1±‚ÆÚàæ•ŽR×JT‘™CÊ1ÆÙ*8ÇH1¢§ü&@ႯJ¡‘YÈ/é™Aô~ÏL<¶ÕY€¬¦ÈÜ!q A†ÄµGöÐÀ@ÎÔÃ÷e'P¡ËH c'Äð§«0å×çÉÜÌAWxÕRdZ„â8[BFbõ(Ðù¶ «ãªÊòðÁNd„>þ–Ä23.R !üH޳Uµ}fmßàÿ6ÃGùêµê2„=tÖv廇¦k…÷KÆNÕ¼ýKï¡y{#ÄÛçW²Ìþ!Òœœ‘t-<Ø@0óu7u¢´ÞŽa¦ wù=ô¯"ܬ°\ŸþÕ¨ÚÈà—ò‹´œy9¾ë‡#Ä&…Ø"Qwäü†™Ò/R|è«ÚÌý´ïìiu!ÊÈ4à»#ÑrŸŸŒ*„ÂÜ‘ófJ(¿Hð™Ãä£Û½SºR‰-2ø`'ZÎÖÁRÎÞ´ò6hHuG9ÎVÕeX>¨#ož†ý櫬•Ú"1´}^NÛO¯7Øç (O~Ï6ÿúdT:8LÄIñ©‰?LÇšˆ¹¶¿{=ã±¢D"“ƒ”VŒ²T÷pÿpˆhâÞ,)m+ÜŸ—±…ÐŒ°Š‘÷3ih…ˆ–¤ƒ–‰„Rƒ$‡™*8ÅH!¢‡û¶ªµ-ÃéLå™f|\mdô0€åd[[‡+ ‘„°~ óÃL ¸ÉÁçÀØzv«ªÜ"³‡]]Þg³,"‡†ê•/¬ì'¬©DB?:Úa¦ÄÑFbÐÊS{ìÔBó 'ŠÚBÈC§òÈ*ïòY@ûOcò/*Ù ÅÈùÙ_mÕ6pñùmª¤È´ ?Ä(KB'FòT9Nýv÷‘ù…&CF’d‘3¶84b³}þýA)FÒM¾Ü ÖŠ~/ë-„ä‡fª #}èýÛ+â÷æ½B¼‘(ÆÊ©:Ué<´çàÞæ ¯>¼B™ò#W8ÎVáVØAôo_$ûÖ‡ˆp#ñ‡_=DkpBí7›“×¢£Òu˜)ñ¨ÄÚͬ}ãÕ»¤T‘!b_Ê¢9;²z>Ûa—Hd…0ä ÇÙf/òxÍ81[m ÍZ%Âõ,Ngö"÷„÷âЛÁ³¥:ŠÌÏ*g+ûÌÄâ¡J:<©X|âR!ÊÈLß¼^dÞÁ}âýÔ ÓB'‘Ù9òzãl1²xèÑ^ˆ÷Ø»ÿþWI.„è{¥õó†éƒ;*ŽÙæØò-‘@dvŽîp˜©‚Ö‹,„4סSs#È)Ë÷åô"ñfTœ ¶°ØõŒ²S „s¤õÆÙf/òx @6ã5ZIß_;ÂëÄr¤}y IUe„r‚dÇÙ*4‘;´ºiÛP¬m—‹,Ec!ìbåyI&.ïÃiòÀƧGX)ºáûèyÇÙªºÄ1ˆ6ñ‰5Üæ…m¡±òð+L|Þçõ‡n]ªM”ÂùQS1ÎVÁn½Üx¬ 1¹ŠBd‰?ì.8Sxæ6g°a‡õ¥öºÐGdšá8[š‚G†Íè ÎBj_ûèÏ¢·î˹Eb ƒà| éÖÇ©4"‘gté£, ë96Àe3ÑSÓ©9\–$BÃuË?Ï?uy±ÏÓŠ¾ž]„pgôãlgÄ3Á°Ú¶§S,K,ò|§Ý1fgË:æPÏ>ÍOEBžQ.1ÎV#G’Íœàìxú¶ù* ŠLÄåHóC¨ýÐ^(wI0¤ŠQ=djŒá{ŒÂùþ Ç T[€ÞŒ$Ú ¡ØhúÀFþô+1›üÌÞ»n'ºg;s&¾-ã³VÑCFto8ÎÖbúÏûxaM )Pç#gBˆöÁl¡[²ŽG±+eD¦úÈ3Up„‘Dg+Ñz €”5Â~½{dñf>Œà¦nZ¥ÂôyÊ>Ì–„‘4¿¢ó{»Ÿ7• ¥E¦ 1 -Þ:ð”ýER~è>´`ûðº'l«†B(Aª/†™’ê"0‡¨goævÛÌ›R¨1„]|­2ÛgŽ{ºÐÛùÌdT…‚¤‡™*B@ä !àÄìÖÍàÎÞˆC¸Å?ؾHÉ}øYþÕ?kVGdÎŽdß C×™=´Qã¨o÷z{ $B‹Lþ5ÑÉÌÆ?wø(Š}íÊQGdÆŽs˜©“ŽÄžyLÎÛj«àÝÈ•Î"“_YEäã>œ46%#~¢â¡ì(«fJ<æ³gОuó SN­" !ÿ:Õ÷¯ÿ ™¸8t>/–/Nš|XmÒE]Gžo”%¡ù"©÷¡Xâ°í´Wõ²ÂBx¿ÊòîGŽ 'jbãÇÓQˆ"2Çp4Ì”0x‘¯³x|cî@[„Ãå|…º"szôQ¯Ãt)(hÍ}`ȉæQûéõÈt²ÎÜ'Þ¼Å>8î¢å| ©Œ¨Óøz ¥ƒgŸëX™E]þñ éDfùø ‡™*üp$!Ú¸ 3*ÁÈlá;9˜è;ƒÛ5ZІqðsªpB)>J.ÆÙ*ñ/hyW&ׇ¯Ð`cø%#‡‡TCÂd¢d¯vE:‘y>V ÃL Aù@óÄÖdžìͽIƒ!|a_Ë¢;;ÐwÞ;…ß´SIZSu™á#78Ì”xâH¢àfž¾®½7[%™,,àÈîŠ#ygǪ*-³á(ܬˆzÏõƒ,‰#Ž$ £•Ò½Õg¸â ! ßiÁDÜ¡ ã0a†„‚ЄܣLbœ­‚ $ ú®bò+狺 á ßYÁHÜ™óšOŒßŸkUh„Ü#-8ÎVÁ ÐÚU>"¶È1ŸA†„Œ< š¬?˜7;%š ¡ =4¹w)øtÚ€@¤¤§kå kkwæF´Q¯ñ'åIA(27ve\ÀWŠL’rg« ÃèÙt°ÍbŒLA¾މ4’ðÀDÒæ=+Vý„Ò†ô®ãlî5ò‹U°±ýa^8¯RcDòë]#-ˆ—÷c^//îT@!Ô!Ýë8[B'FòðÃÉ÷`æ.&5†ð‹}A«æì@û¡¡zâoìýbŸT›eB R€1Î–Š‘B4/Û<Ò /;y¾^h22Íè¦ÑÀŸF®’ÍÄèì)g÷5…’"sƒd‡™*HÅH"¢Fºø­Ûw%ŠYè22ÑÈ,;"þ–®Xäò÷–g[A>F~Т~»Ì&£™ŸAx*¸‘~s˜©ÂmFª Üõ¡VQò5›,ÞÈlä;÷éA«§î•t_<ÕQ½…PˆTj 3Up‘i4îñò¡Óå‘I´ÂF~¹ÇÈZT¶¿íát\Ž÷¨æBDVãlÜc`Ís.;ûÒ[†Àä»fd6Òm§wT=h“5Û1rZE™A$õ8Ê’¸ÌÈ bÌ!ôMøþd¯U™!üá»ËLd:¡QJÙ‹@%-r åóÈ3¥D`âýÌe®Î«[e볨²6#qƒÄ§ŒsZÜ=âSF ¤ûK¥ ¡‡+-üÃs—Ž6eÉ…P~ÔjŒ²TP…üpl VeÚù¶F¡Ýò°¢ ]ªÉúxæÈâ¡cÞ}·*èfÇ´j/2ÓG,{œ­ÂsFJÐX•cC4˜¶>É>Ë8„4|F"èÌÃYÜñ)|  [dôß8[0ÔŽ”Õè ’ð­Ê ÁK ´¡yÞé$'Ôª2ÞIUnµXxÞ.ˆTc7g´oIT)…Ðt½ãlY™k…¥ýìÓ*mh…‘©?m!ê¯U•‘‰Å?hÄHõÙ1½o>°nƒ¸(“)…ÐäÇÙ*ˆÄH¢“»ù .—XU™Xt~îüpÁê³x"aׇ'Tcä­€Z ÑG:Iž´[dÊdã0S…óýá qoOTgþGEÂ-:’uZbÃw ûФ}ã’ó¸™\ªÔB)A:àq¶ Ž.2rè)]XÔµ³Gáê62k÷åè"fñg.u'ü«2 áÚ˜³%ŒHÊ„¶qo/»‹¡‰$#w0"“††å•iæÕ;IEE!dõÃLM¶Yøá gÄ8íŽO ° 3}¤Ê12ú('.   /ÎÍ÷íH*ŠÄ·Bfªpš‘–sMf m®>3YôBÝuô÷‡‚{æÉ’ ÒJýØü´©ŠBx4ºÄ¦"ƒS'GæÜÞÎ]p‘qC—4¦~¶Õ:}öNe%Ç¥Z­pÁW¶µ|äþ·o|Õ~n²o°Û;…‹K$DF¥Ïeªä •gÜÞRzn—áCUBöQ~1ÈPáÙ#Ý­UÔ¶Mþê\%ÇȬá׳GÃnËÈ9:–ˆ(2ÓG¿>Ê’0„‘D/žVj_yçhUcdΰK/ŠÑø‘ÇCÿõœK«‚B¸>²„ãl MIÁ•×ÉU˜|~E–cdÞ°pêc—ççjATÞ\® áûÈ3%Laà?|ŽÆ†›\–cS»)b áßù¼Ä¸Yqmqy€,ø_¥ŒRŽ5Ü0S…¯Žä;©ÁÖ]}šn¥ _Eç¹X"2n漸¤æ½0£' ”‘#—7ÆNÁãEÖ=Ô·}÷Å1XQM«Çä#²–|ØD–9±é¾¿ƒÙ8/C±½öYŠ B;V`mMæUˆuSê•Ô7ea¤ÿ̶m1Nà n¡ÁHaß™Ÿ~l¢t™²3h—Ü_Áä8»B;‘i=‚ãl‰?ôz0ÿ²-ƒ×Š…C(ÂWt;sv¾Æ~ú+@„D@‘i=úÓQ–²;MÔJ1\€¶Ôz…#“ƒ4Üò™üéEH‹r€eZªÆA¤vÛOW«Ó0YŒõµ§v1’|Pd¢§cp\-!ú !É Ž³UPˆ‘0D·7HÞ „̶cdR±ˆÛÞíi>LXÉkŸÝ0L!ŠL’Cg« #eRû€“A»8ID•cdZñË"FžU.{¦kòQ†…ˆ"st£ãli´J¤¡Ï¹Å÷ö*´Pd¯è¶÷^‡w\ð—é3XÐ&BD8ÝR…°¤‡™1²†æim),÷ñ²…CˆÅîh—ý§½)Άî_¦ïCæÙ§¦ªÿ³~BÙ@*/†™*”‘4Ä”«PT‹îT‹!ÄbQ¼vŽ0ðxˆëåYÎÀ‰þ…4"q}äGY*8ÂH "¢ƒÁ*Ì”ø¨Æ"Ó†ï$aâñ¾“ÿ›¨DIºH#2ÕGw8ÊRá A´roX<LñDX(iXŸ²DâYÜmk2 ùܽV%BôÑ-޳UP„4¯È‡„Ú"ð ”Bm‘9Ã'$Ï ¾–m€ji™<纊*Bh>úÁa¦ÄFÏ€¹^8€Õ˜)™çûCOy7´C36[¯3ÍY!ÔI½a¦ŠùÌ¿ žÅÚû6OŠU (ô™åûƒÔ‹´›¬¶ÌèkºV×tŠäA˜9rzÃLŽ0xh«Æ1Ûì©f"E*ŸÈ$·ýbîôÉGt&ï¤^äÝ,2ß3ß³\ø3‘E5GAÅ(K¥9<œE05m©fæ‰Ya!$ŸSzÕᗗ커›?SÝþÒ~¶ÝGb¯Ê%æO³U8ÌHà­¸0ìzjUYdŽï+ªˆ¤D÷+'™µ»6ùÄ,bŽ¢Šq¶DTAN »aˆ•©"*‹„‚Ž‹D à¸ÝâÓv7±žBd!dá»óìÚ©w@Û6¤Ò%"‹È™ÁQ–Z¸Âm·Ÿ}e ÍùÚ¡óU`Æ™B¾ƒ‰»ƒìç dêº|¢¬ª"„ߣïg« #Í$¾][ÏpUa!\áÌ` ïÌr† Epi*y~lÞ@Kü¸º}&¦ñ #ÓÖìÀ¢5£Æ.S’T‘E \-Jóç5mî|}gó„ÜíÉÁ‰îQU™âsç;ÌVÁºE’ ¥¾ôuøUa!DœKpv¢àÏë¾Q”ó Î‘?sµ(žŸj'‘sjU:!s„a¦„ \œùÕ=#X$Š•#óuï’‹D õvfæl\ʺ aØÈÍ 2Ô6w3§g?½æŠÈ&Dèñõñ¥…CÐÏ¢¦u(9ñgh´8jÛ‘aªº áØHz ´•è çBt‡žm~s)‰´3ï;_…¶>K”™×ûƒÅ DÛÇ_úB™~:SªêŠÌÅ1ke©lxþeìÐó|XŽØaum´*0„Õ£ñi²èß§7¿Ú“ duV癦e"«Ó><þr)ŸøUX<@À(S%ãxA£ [ ûµ¬4¥ê‰LRt1ÄLÕ–ýeí¾Ø$ný[¡ÀHä“u'ªSÅÜÙbªªšÈd G‘A–¦Óƒé6;t­®Û-XœÈô¼D‰H1¤xÌÿ!ßêj&u é»S5zGV}ZÎY4"ª(J a'ÆÙÎ12Œ 4€}œ3—³Pu ù …g^6ŽY¼ýI»BŒ‘¹C’ŽÃL‰ˆ#pŒV,î89ÿBÓ‘IÈwZ0w–Žì;1ÛfƒÏ׋C¸=úþa¦ªvì@¢{á9§þ.¶J:2MXyTJ8"ogÎpò\ñ^§$ÆPbŽA†ªfìÀþùœq›ï|õi¥YÖ!ôà×­Fºu-_–šîÙUY¥GÇ:ÎVAêÏÅ’-ð ¯'b aÝôŠÒ›?ùzWæì U<¯goP…ðzÔ^Œ³%~0ðV‰ò5ª¶ §¿…#s„0‚‘µ³³Õrü©¿“VI(2³GJpœ­\pØÕÀd±•F翎Ô&æ0ò„èÙžÿãr±rK¢ ¡ßIÃÄìY`n5Ë>ÿèÚQCûGÅ8[…ËŒ4¡…åæ“lêíՌϮšÈÊ ¡]6Ň$m1áŸ(¤òm¨:¶h +7°ÍZ4Â’^fªêØ„":¶!©Ù¬å›%È/”tÌŽ¦K{ h«Çªd¿í-{xC‘OOølÄS…« |"†âž|ÍIlbdÊÑMŸ‡Ÿ‡##øpŠeØ'Û¯D>‘YCÒÃL ÝÉEŒt<@’\}À¦ 1„|w²‰´3fS1áO\äB’mfª`#»hγ¹)›dË0ûä*bdòoL” búÎ2«¹£“êIÑOdÚº‹a¦ªæì@/¢;{g¦a·€oÙˆC(ÈJxá\b ü0 ì1{o{!ŸÈ” £ä C“yßU·gU®cöÒ®Ðbnщ•ÅŽôÿû…ëƒw³¿¹_íâ2…/™$˜=ÎÖb/A;.ãHŒq‰ÒevÑÀ=‚€m±&OsD³‘ È/Ý Aô]OÞxzôÁ·*´È¤!éÆq¶¤ƒ0’‚ȸqúy…h#ó†8Í@å¡Aõd=Ïœ£: aûè3GY²GÑ?x=Ó›#'h=m¶pøB¼Š6oøKy¼g¦à>ŸÏm¡³®ô8[U×uàÑu½ ïÞY¬UšÄ:VP„§“$¨óùŒÇtŸ´s³ÞlgQ©Ef½ød©jºþeí,6wŠÐÒÎ$|*ÙÖСlWûéÙf„ Íî~›è²ñL·LéÌÍ?þß5ykbd!ØÀ›<û¾úø•p(‹H—=ÎVÁ?F¶Ñœq»æHÝö^ZrÌH>î8ÑÂ͘¢ú}¡ÐpEÈø2Ζ¨?"¿ÝüÚ^• ²˜Ö—Vß©u }Æp¨í7‹_= u¢€Q;g+ÑtzmžžÜè:I#éiæ1»/ØV¿ø°¨lHšÛ«ÇÌ"T\—ƒzÞ¤Å*”±Œaœ­I'$GE ÆÁC×¶xÌKDqû‹¾%0;›m´2Nù»×HÈd|ËãlU­ÍAOó£™OÁ' V5 Ys{WØ¢†ïZ®Û{ãX-!ÈRKª›ƒž†Þæ‹I„M¸õÞæTŠ š›ëHøóî%ªAóä£mÜÝ+TsèdôŸ£,ÊYÔÉ J̸ÚòÚx»ZU‹¤´çÌHÚ–Q&~ ìS΅Ԛѿè1ÇÙgt2Läõ\×z{—Öˆ–öî £¼e k¢Va›wíjÑ€H`”Ά™*n>J™%)—S‘ö¤™£Hýˆi7„‰`0œF‘”Ü¢LÉ%¶$‚ùÌ‘w;úÒ-J D(£Ïg«ê‚þÔÐÝ<=«Ó›DµHA4·bÍtñ, \˜òN‘ w‹¦â‚¬‘f²TˆgQ+C{óî;çô¦a-S=ÆgÔjÍßZ­¨•¡5éÂ4< Q")ã=ÍåûüiCéYô4.*L–qïûµt1.—.¨æEÃlN9êe&lH Ûc~n©–ÑÔ¾ QãB;bþ†¨_ÊDcAÃ8[RÐ,€²™_ò¹áJJDã"¹x?8Ÿtm÷GEÙCR¨ÐÓ|ÚÃG£.ïŒ×ú…$bQûeÉ® ¶…l?}¯Ä}`߯=¨Èëæ³$‹Bˆ¬‡ñ›ëZIyB»ÜDFqN}D¼”/ˆ:E=sœ­B׊2–… çIw³>·n¥Rº¼¢-dQÈ$o?ÕüǼ(Òa­D¼”*Aæ )ßOö•±0JþB°b‘+ËsŠ2‡,uQ#fª€ÊA³U»²¨Ì(ÝpQ3‘d3wñX¶üyúÌÅ$cy0Û¬ìFn!ÞUÕYêr‘l˜­,ùâØ\,¥ºßJÏ¢r†ÕÍ—ßÂÛ.‹òQ×¾ZZ¼0 Å#˜ýêwžIÉ‚ˆb ÊÆÙpëosX\[U?d$K:•8£ƒ¦Ñ˜qvï³-¤´!«uo… I>óVê}ãYÄ~]-JH¥¹Q–^¤¹(žÙJº1> >‘-[Z ¥¹q¶ª–è Æ¡%zå«^ÜÕTÅI±«* xôDuÌ¢K%àó0­ýŒNr¡ÂE• ýÐ'Üßr÷+Is]èp/zVT¯ìÍyIïµô+…U¬O×WÑŠ¢Xm0''¨Äž„)FTÃLé—N–7ãà;{‡j¡×gËMÏú§ßöWsB‹ìi1!ª¹üêc‘ØE—¢fêEvŠÂú·7ïšyÐV{(;³%ê|”™,°ôÄ^ËåD®2Ô»ê”t!; NÜ=àÓ6³x.ÒU÷a¦ Í)(LÞ –n¹¯×hd>‹P‘œ¢(dj9ïD8ìõldUý< G”œÆÙ*œU˜Ð{’޶ld!¨9^D¨¯äe!d5<¤¦e÷» UG鈡á8[…è%&sXóâ_|u¹YUù,CQ$¿J<6«š3—mŽîþüÆÃNÌ"²Ÿ£¢z„Ž×Åéèá  ¨í"0ñ 3%Qb”˜PWyâ²æ«7B©p/*T)¬«KžA²õמÝy0xe©b»HGÆÙ*D§(1ùL#|Kœ]…r4(ž>q]ØJižüê½u,fZvsº;Ç”(­°NbU½Júªä6;m›ƒ<}r®*÷¢A1ªg«ð¿Q«Âžñxs™)H€¨YÑ®‚Âd*ý¾ŽNŽíT·WŠêÕ0SUãlP«L ÏkOÁ¯´ÖU´\@=#Ú¥é½yö+2¡á…é»ÜÎc³Ÿ…(:ãQ– Wä*ˆáÛ–"ßׂ€,iqƒÅí„ÚËÓ¯¼Ã´³¤D:>lò&Õ÷E­¢Î5Ζè\QÖÂ4s”–m¦øD>)éë/8ŠQh†=ðImrá›h÷*XѳUÜÍ„-ó¿3*+6#²ÞF«eYü*B¶.bE™É‚ã"l»˜Âˆ|/R9ä8[Ën!pòÝÏöx>ÔSÏ¢´…þÛ•kbö€°¨ù«`ÝÃFAÊø‘ýð‚+u[Õù³fE;ÊRÕ¤-tàÞ¦yn—ʪ ²úEÛËdýìÝ+AÙ²è”ånˆŒ6Þ{(D_Ô/®—H©1ÿô¡š!¨½ã –?-2a‰BЬ|¸Äþ§€+gç•YÕò…Q– uý{ùÕlA[~éŽÙ‡×Õ¢zÿ¹H*DCû*fQÓ²לcQ6‘åY÷¢b6Ζ8ø¨aLûl™[ûÖ›ö,j’†ö—B†¨Wy·ä Ÿ|8AÖ‚„¬i±a˜)Üu‰îÛã>±½´/ ®ç>¿Y DsÄÎ{Ëìíàj"üüÖ–$- Dö£šêDKk²êE½l˜©B.‹â˜¹öé2‰‡E_ ¢~V¬W¸’ …Ñê¼Ö¢[ú^©E¡ŠrÌ0Sš?$A kqcdß”ƒ‚¥°AD/׸`œ?+ªP o;vLsï—êT©zbçA¶ õ*ŠUæ6mb´=ˆ™ws•YÎú*îHïŸS”4øï¨à(B™?´"÷?èÜæÝZR :ÏŠa¦¤!jPÀ‡¸Í¹=™É7¡V'ˆNÕC b{Ԏлc6Ê}ûq¯Õ"/±Î`˜©,yZ8Õ¾R§¦ß©_¿{¿ëWQaBÑÊÁ"Í3~ÕýE…¢~5ÎVÕ Ô*´Âr,¨ ”KQT°FY*$¬ X™ ´lÓ~39‡(tÿ¬j½8•¨X¡1ðDß{KÒH…U$Ï¢ÖWÊ2†"]¼Å­…᬴R][¤(:©q¶„uF²é-I»gÏ´ ‘<ÓÏ},¨aæ‹Ú¦…ÂÒ‚CŽ-É\37]v¯ `ñæÝí“W%©Ò-B¨a¦j…,iX¶´èráø”Uê‹Nfœ­~;nÞ8€2fÞEOƯjf'—q@8¡\!«‹²ö)-ª]ÞÎ4CÔ¹œ"¨ž1*i£,Õý«?ºJ*vÊä“kQ…´ž¤5FIÖ%feYò³3jާhyØI¨·­’ˤj™6p;¾ŸÖ^¬ß¾P¨ë¢VÑ¥³U8ž¨jZØlÛ_|¡JõYøÊ¶§>L= MhCY >Ÿ‰){R¢ˆ¹ÆØ)!gÖìí?µ¤;u m]´"ªòãlÍ ?šºAgJ Ö&Fa>ÊôYsêx³P†¢vóá ÷kzU^}Ç뽆٪ºAu [®h߬⚲‚jõY+ª”!Wæ£zƒÓȯ&ޏTõuUx¨Ì³UhCQ B3èe.o{JÏ+­>«EÓÑyzw$Ó—$à §ÓFYþÙmü"[:Eo‡®{˜©BŠb¡” ÓB7 e™Ïªt/‚‘?WgØ¥‡þÁ¼k·üo¥¤‹”Ãøaœ©t¢}XR~{OÔò̼HS®ƒ.„1ׇ?§Ó“ÛB»ÏÚÑ_”¢¨å@¬\¬nŽ'‰îª÷P)gK•¢$ ?s¾ª âƒOâ½(Gï:QRrì@=V:¶mò[{U(µ‡Žtœ-u¤IðÁ‰Š ¢=†Ýà ݳ&ô(ª4)}aê™]|ƒPµò¬äY 3Uõˆþ*>¶Ò޵?,ª¬¸«$ävƒýì·Û¹Ç¶§ò¸î7“;KB_ÅÐkö¹ÌQCá†ßÑýÇŸvç9å¯Fƒ ¹Å í]ú­„ú$ã8¤c(KW^ ŠÛkBJù'Š=@æ¨Ìi/jóÌ­( H‚ÐWþ‰ zO'£¡–8‹J/"埶 cöôæ“„]ËÖÿ( ažë8€†™* (÷ õBpsޓɱ_!÷ì¨õãÏ“3”’@ƒz'8²7·ï‚¯ªãY¡_f)мn*̆™^ë¯d¾-Jº÷T…Î.’Ñׯu…㘢p`¢jã¢àЭ3%ÒOzÌ_rUmg’SÉìY zWÕ£:ƒý感{êü¢‹‚Cég˜©¬°Ø»n þ÷ž½t[tha›ªú=ƒVƒr9ú«ó:ö¨¤-zλz“$Ÿ=½8>ãíN"E‹ C6ÌTá¢\ƒ6ÍYëyõ<¥Pµ³¤ó¢à½íc+1ÊåÞe™XgÏ'…Å¢S;«zã¦RmEƒaœ;ÊR5-e˜WÑådêR9Ã(»¹òÌÏËÄNEQ‰Eš‰>ç§S1(%Þ^¸YœhagÑf]WÄ/dd)Ç{.ÂD™¾½_¤=åÉ˲^+R E˜q¶D^‰‚ŠyжžWøñÕc¡üfÑ…iILB–œÌ(Ûo–.D҇ͱÄÃïëxï“·DÖÍ‚ åàa¦ª–Æ ¼ §ž¥=­Å¯¥P‰8‹3„Y@M;“椎½ˆ,QRAç##°³å8'ß»èÈYuùj,QAª´ãðŸzÐ\ˆ¿¢”0ígKÀ[ÄlÞ"3mtãän¢# ‰{Qo¢VƒŒ‰øòV ÉI¾0‡tà&œ_>‘*óVQ8h{‡ÔÌŸ×ê‚sp¬¡€u?Û?Èžd‘Es çe©ðœQtÀüA<ŽörüB€aâ b“R`¡t[¤[ÃYÎf¡XÄåÃLåÔó¼7ÖÝ·|ø¹¤/ šoßÌÌÞ+Í9ëE¤×]rÔ lqï=Ûyc‰êĪ%Ð%³ÕΟ£a÷Gú »À<òtÒñ´Á$´œ³2ñ!"¨vzÛP$€ %gEJÄ0S…Â…‡ïã¶ò“³{…æ,âÄ»‘ôó£&¦ÁkzP(Å¢)³U ¼¨=Øj[WËsÏ>!Cdç¤MdÙ¼—wø¹Îî€êÚÂá^J#RmR¼Jg¡¥O[Ýw²·¬_¿QxS>,ÖߌSpÀ˜j¾"N|¥ˆ(|X\Ëá/K§C"ÔŠ¤@-bœ-q›QzÀ+§›A€Í þ³œ+òÄ_ÄÛ(|{¡pó;_¬J°"*¸Æ4ÌVÝc’d„g÷" ô­$”f•òÄ+Uk]Ð!ÐZ‡ãp3êïtª¶f­¢R&¼».Š&‰.Îg IÈT$Í•‰a¦ªîº C`œŒµMœv-5Ë­¢U¼(Aˆ0/°Îdº–¤«DÅŠ¯4äóDT6N®RU1I tjÃ,Ùy2Yoýü,¥‰D§ ®’ÚB±Ú¦Z²ÁFELÑ*ü‘ÏØróÏÆËZÌpÛ8üÕ³È@Érœ)+å›p¾ÎO9L()xç‚Ie°…déÊÂmÏ\HEKQ"èOÆÙ*¼JÔ,P>tÚwk¯v~Âô¬€Š®ñ®w& ³dûÆŸÙ YÉ–Yf @1ÎVÕ±ô´¬ÍŒŠlyËšh Y³xñ+Qk@3ÐNOÓÎ[Ž4ËÌ~’…r-¹¼x¸M\Yk´`òðºû_(&QĈ2æ–ÜP¾ŒI²ø4K "DxåØ K…ÌE pµ¸¯=¹«ß­¨:iÒºéûÏóóéN zZÊ.rc{~¥]Ö7³f@¥a˜©Ú©$9ÀѹQ¨Ü{#ƒÊ›"PgKû΂°€Þ3{êöÆ|æZ!•ŠøÐŸÃOïY"êGкÒ!¶×}Ï=hÊ¥ÈÆÙªûÏ~dï?Ûí7ûaþúßJiáEHˆ²½A¿7ådêóo%qŠ´àÆ'4·Ÿí·“¯%QVõu÷)ä…F)Š]Ã0S"nFƒ®D5ð؇lÈrg†@/^'J¨~ß-#oO×Ût ¹Sd‹¾.î?Ï϶À'¢¢`áü}³ «Å)› ‘¢UÕZÅ C%öÊZ©¦xÉ §À©L)zÎq¶TúJºf5¬¶VÚ [{J¬’gÖ&Þň$Ø9Ô¶î…øpá­¤( t:ÃLU-jAxð5lж»˜«œ)â„KG¿øÊÑÆÜg÷ñS•x™¿}t7­OwSÂ÷®á!pJ°îZÉeFüôoôàçµ÷Xº£í Ênp4–%ÍÌå™12´šYþüPßXÉRƒ©DøÍ™›Ç2ù=zªŸŠ ðeþË£lbñÑÙOgU;3º'ófê¹G(=É=Û±y/h™ ι”ÚZ,BÀŒÉ«Ütä›< áÙO÷Pq5Û_[ñ¾6›IëSE=VOÌYY´QL|$•»­'‹ÁÜîrU O¥fœ­ªE,àz´ˆ-̾zçw¥²f¤ÿQ5"väIË|Lçî™…H£Šá)ªŽ³Uˆª×£KÌ”õ5}÷ÀÈ{øóá÷‘²Ã¹-Fmvƒ’ÜÂ…~™H¼ûÉQ¦ :Y¼!Õva3m}nT!…f^ÿ¥ó‘Ÿ›+¶F9xƒÙ8Õ/…±»[fKè|dñ°:sSl}&”ÊœÂëß=lâ綴扄뜰ŽT—Ì€Ý ]ƚʻK~ø¹½ú¹£’ßzöY-$²af씇˜©ºž‡G×ÓÎí·­^(®â£°úw2Ÿà9¦R#7xˡ΢ _§Ò8ÌTÕö8<šëx®mé]OYyRÏœ‘·´ï÷yxÒ˜¸5Æ­Dö…!‡ã–ƒ!òq7âÀÓï T÷EŒØÌõæo¶~Cˆ „" |¥€Èë-;Y}1N®Ý¨¦'HŸÑÇ0S‚ù#Ô7²ânp|iÎ,äÁ þ;æÿÓ<}IÃ`]0êï0ôä÷|‰ '¬ž”œ­€û‡Ý¼ËEï0?{~e=Að„÷cìà>bzܰû\o¦b…@((ÿÜ'´Ž ™>ãêi†ªz‚ß©޳Uµ*LV% ‚Í´ƒƒ^U"Ì(ÿÜGLoŽ ¹GlûöN¿ê*k„åý@ âæækIeTÖËÔœ.`„•¢ÿ(puä3¼µuvAˆì'è½›æ¤ÿ%4 Þû†<]DùD¡Õ 0'jg«æ^‰†créÆ9ѾMUƒË¸œ }!m? LíG3¤~ãÇ<\ )/s÷‚²÷Æ¢ÈÁ|^„²-®'ýQùMX9…»q¶êÖ¢¦ŽÖ"'^†Êxˆ”'ÜýeÿG¦n”Ý>§¹’µÏó)¤¼ÌÝ™$FÎF2͇×Ù^¼î?;)‹¼¤l²ãx¿-Œòú½¤¶ Rg\5ÌTAÌ#7÷1íÈJWЫÂt7½wð:õÙXj£“KçgÇ«Ü&à›È|œ­j¹6V î…Á.çUÕÛ„}“š³¥Ô<1r“+)ì7šõN8z§æ¿M?NÍØÆpÇÏÞ–<Ó.Ü~“y 3U·üü0roùÁQ·:¥ª´»ÌÑ]æCøfÈÛi÷ÉòõˆT' tÛp­Âö`óÉ?,Ý…)Ë9 +fî¥Ã+J‡ñÓ^[ˆ~áöç ´W¡hRx €{©Ñ K¢ûE‚Zï…Yd{ô,>*”À J^ÜX¤ëÆ4·‰of¹¼ì³3"¾„ÄÑK´Ý¶Ç°±yH;Áæô[m­6aav´yQiÐ'zqÓOd°ìÞȹ-ð j²‰¥TÙºîÓ0[ö}pËÔò÷¸ÐÑ¿Óß-‡g‰ª ƒ÷5XÁôˆ»Q›rúäÓ×Ò^&âdéÃLUíIœ£=‰5ç²{1µª„×=÷ÿ@àF5’™¨í¥¶ï`£°lžìÊR¢@l§Ö—Xüi}gôQ,£;qÂe^k[*~gAé„=»“e*)0~>íLÖç¢Å,ïEŽýátÈjíÎE?aÝ_y/²g`yµMäã±¥*ðiê{ãle4‡Cñp`³3ÇãùÞÝÍIþp¶Å~ýãë& y ›éjÆØyAÔ‘&c”ñDŽcw˰—EÄ1!ÎäÔãlU}1MÛbl nî%i"´ ¾î±oÑx²)a+gëNGr^hc™9V3UˆjM£)æDiA AQTdKìúEªŠœØ6ôÄkµÎ>ž¢¯„%¥ªwQL·yÈÚgŠˆÞ$˜Gþ0S"TENl¾ïtù½ P¤+aÉ®®Ã6{c»;ÝúÑÛ»§èk?rVdÀh ¸þ›äK $¦œ5ÈPÚ!>à&`´q®£ó©²ªSÓOŒ±S°åH’ÑjÂ2çs>¼6§¸2mþ [Žô×T¨¥h‡¥J‡w·%]J1Ñò0SU«Iàȶ LÜ>ù|d‰KP󋟈Ù¸à63«hAÝD¯ šSFÍ_²üEÀ¶e.ŒjßxaB¤"‘Pâ§¶åÿÜLÁ–JÆÐ;Фöm·Xe+Z“Ðæ®,mžŸ¿ $_ú‹®âàÑ‹ÉT @Lii˜©eéÿÚ[o«õwÔT DLii¡L–GFK^{W>¨Ðš„5¿“åÄ~}nîEïQd¡ æög«j -!«ýÅÍzJבDkʬ™p w?¼Àã´5s>c”ôlŽÝh£^g‰I{5¿].{¶SгKU·ný8“D…A™àßöÛä2޾‹šS¢ÆÄÍCÌÎ$€åkcí–‚ú¤Ÿ¬\%ôì†×õÏó“Å£‹ƒc 懑«Ø$¸˜2Õ8[/2UDÁöâ/ lz¿·,êMŠ)S 24éä©”-ì<6Öä[ÏûÉDºè\!f†S #øD[ZÛð+÷L!7 *¦P5ÎVÝòƒ”½Äî:<­Å‹·‰t%ØÙÝI@Êèþ0:ÑL}Š¡ U™:ósî8Jíç÷Ž‚¢ìõ­æWgáÊÑ:;b~Š`™1ÿ¿ÿ[8ð‡ƒZöåÏn-/n'²” bz˜a¦ ¹/ª[= žvŸJ%— af^ÇA?Ð’¨·çDüên”Ë~z®é.Z;vKŠ0…•žª\ &;g«¤Â™ÛÚ×rdrëý¯È,\ Úåâfª¸€#®\ôRïtPí€dSg¡eJÜÝÑOŸˆ3á„mÑ,½Ø_‘˜©S‰r•Ñ.‰â0SUŸH Àè;ÞÌM1£S L(1ßW¤»€øpE³÷E©&ø×å®Ùòyþ¼¼-àXÈH6.aß¶ÙÇn«®”‰-}Å(KB?"ë°Cã¾¹\¦Óg Uæ!µJ8ؼ]ý‡÷4y¹A¡PedìRrˆ81aò´} ¬±³Å»Dèõa8ìYUÒSfÁ¤ÈÃLÙ#‡|ŸZ®¿ÄL„DRRÖKB<ÌTbÿˆ#V˰+Ïç¢Û‚$'Ö‹: \ÇÒ¶øáÍý* ¦¨4ÎVA’#7FƒÆ„êÂã¾z(«:SfËŽ0Ķý“'=HÆ€”•~-šßÙå`÷ªod˜u&Á¸/»,2ZÌl91½â02Kp&ÂŒpÜ/µdÕ{½pËëºò’½BLúÊàaœ­Z`IlÅûûžÚ*§9UKþ$5cçšF´ ?xp+Nk/'™Dð'Áé8[U7@@¥èX¬Ž¯-¥•{®\§VðÔ»"ßİ0º Éö køE(É ”Ë0S<¨ôÃŽ+¹;Zs{;@Ò\L}A§”~x¹ÃvÒ2@¨è"0õ‹N#å´è|Á±Ó~sõ2‘J2 ¥fJ¿v$¦˜T°£¢å¸gªTuªÊic„ùÚ½1ªúžŽü”ð¯^ÂÿKBQu¿1~°4!&ºñîBëZâ[Ý$rNâÑ1vZ<¼±¤ýö‘%ËÑÚÝó¤¡F`j§ŠÍ¥¶£´·]TM†ª»é5BN Ö:Ä÷š»BWÉ ”™Ï8[u­ÿ0…87ÙÊiObã¶-4ªäVDh°¬Jâ †iEªj³÷ãíëQE¥EÀ«cÖ;‹ýì³Ó¡ªí}vPÃõ{Ý® )¯\Va¡zùâô·Ë+´mYÐ9øóþ^Zø¥¥^øxÛ­™í³Ÿô?"ÙQåãfª@±¼š?k‘€]{d="¼qU5 Äf‰AÍË¡ë¸dJ[²îÁH¬íf6Ð2®Ùe›,íOåGg+ó'¯(Ü—ž7¿ðÚ€T±²O4£X1)"U€„º+²TÐÚ¸OÙ´?ñûr’ðÛ‚Ööþ„T-ªÞ°2ìxe&VH@]‰kÇÙª:ÅG̾™ÉW¨œ” ®óõ/E%æ…?„ìS˜²–$÷‘5P†½ÏÿðN™¨spñm8‘ù³9—€~É+d›ÙNÍ}³Ö<ºr2œuh¥ÂëDЊ:L4À·'uzWJBcŸ¨1rOƘúãû·Rd„ŒÒƒ 2”êBÇ¡§-ý 2ÞDΖõá¢. Œ2ÕÇå­.? +¢êŠLdž·5ÙÚÁðÃB„á¢ÜããlåCÁÌò†‚¬?µRÌ +ŽTÌ·U¹?2M–rÄxG€jïg¶1fkëJM’r2a}‘M€Ã7À]­œ *‰ð ⺈b?oÞc‹‚‚‡ˆ"‚kŸ}˜ð©åÜûÎŽÛ>×W5 !¬7†™ÊÁ‡K–üùÕˆK $bVLÚxoSn•¥ A±\ÃLÕ7Vó©íhAÆ{]Ìï B`,Õq¶ª:ùmQ'Ïâ‡ÕÂcO‰Ü!\—Ï4rO{¦0Ûfr*n‘22}A¡|MMf÷¢0PÉ™ŒòH™^ºÒN6?Sb¤üHƒ hú©¿›lŠ:ª =@ ´}§9ÓfÔVGïÁþqOœ‡`ÙÄ-„²¯=±¶öÛ Z¢ÇDñoåç`¢\xá¾°šk¶”ˆ""”“ZÊ8[5>uÆpÛ)¼sZEÁœôÏÃLU¥è¿4Ôü«gÇá •¼’‰é;MӘ慎©e&¼²ec½LxI¯Z3Œ6ê »Õ*ô!TRÆÙ*i$¢¨ZnOkò€­ÐV25%_ ´óËØWÛ5-veÉ…*)BDZ¸?7GFØiGó^6Jèx’Ve=Dáðg×*~„È Ò²_‡EUjKF”„ ãlŽ(¢L¤”+FªýF •o2ítÓ¿ƒS.¯ó l%è;GOî“sYÕ\„?ºz1ÌV攘‹túå*÷ïå*J.#^´Eyûµ,ós:euF¤/ïA–ôfÔ´vm}ï¨ß Ösʽª8Â2;¹ÔÉ*‰-b¦'jNÖ䀽©Ê‹ðGæžãlUeïSBãĉÍÎ×Ë5¾¬âË$PЍÒÞØì1Ͼñ¸B¡I4ÓÝ.Åêš½.=’C‹üOLžÚ÷méÅäYÓÈpѵA– (¤%½·-ÞÍšüÒuÑF„R~™ä/9DQøìÙ÷~ѱˆB™A޲ôB%#8DÃÃÉA-‘åÀ@Ñ2[äeÉ8# •ñó¡‘¢Õ‘¼d²”Å/Ð˺€0CÒÆq¶ª ð€ Q~r¶w¸Ð›‹Æ hÑuÛk‡MsfÙSÌ´‘X[Æ7ùåYë“ìõè­‰?öy0øP“7Ë«^åK‰gd†¶q–ËHävl7ƒÑïg¬ø…ˆ‘ó!3uœûTË –O$q¡rÛdz»³mËJ“¹¶•ÉgÂGŽ5ÎÖKésÄwyOyŸ“ŠÛ3â#g«9ïÙsóhgï2Šë;ew_×ãÞ¾äHʨ±"çÉ8a;œ €?£G¾ ˆQ!m;g{†Œeº¯ÜñçÇÜŇ‹á8øŠÉÃü9v\ô%”˜Y01Ø6¯Sº/ó[hyá‡#.•ôÞþÉ S|äÌA¶2»·ˆÊž‹m~:¾ªrìúì-.3eÕöOüe&¯,q˜©ˆAŸùTjßrêÝÂärYŒ³µWñ/2NêaÙEÑ¢mÅç„ð\E¡oÕÐÖ¡6Þ¶Á6sÄk% dšÇãâDõùÓ£’ÉýÛõÆ_œ.ƒ{MÚ??õzé(ïû)–þp(Ȱ̻ýfÙ}´ª2|tþ–F™šâPˆgàx d¨1æ¢Ï‘àBÕ…¤¹º0ÌÖ „ ¨ (;ïØeb£X=ã4R¸Q–d0D„n;/;Ó·c=YÀ¯t>s¹ Å;`‹ “\6Âòu§'*€º`2ºßq¶ªRå€Ól-l°°UÛS T8/ÈÍ KO±Î±Í{ŽIÊ(>ó6~ÈvÖþáÏ>Ù5Ð4Û]+þœ™WN)‘ÈÄÍ_×þ€Ÿ>ç+0ïo}¿ì;9ŠO´^ ™—A2UеÈÒ,riOfÇËÚzœ"ä?ó6·½žžŸgŸjØoóÓVª¸^(™WC³•iÄœ¼Þf•öƒ¢äk‚A ZyG´Ÿ~ùE"û™“qu²TL.Žk-õI ͨ ˆJ Ä­âk§O© Ì'ËØ£ŸœáÐ^ ½Ñ0SUEt`i‡f~붪Ye«ü_x_WdiFFzF¼N}hŒ™·õjgð5üìs³]>ì¶ÛÈ?« 'óŒl”©‚°ž†A¬î¹¯P+ø|Fn_À1ʵN{ÊÞ]P™W³UC¶ÂlxŠ<û…!ϬŒKi”¥œD£zfå|œÝ‰Âïõ?€<¢2” ¹€fÀ‡ƒ s N# g«*í ØÍK{±À–ó>.È<£9ÏaO'2»JØ”-25F…ß,”ð„ª t{Ù<©¡$kb~ÔBá>ô?ñjÁn_ÈI*]Ž£|Rå̉–1meé…NGf´—BÏ~ÑrA™–‘O³Uc¶ÂІƨJ¹¸t…3 ,#¡g«…xEÛ.òø~qœ"Äý¶ä;þ­À¶ 5¯‡ýâ2àMz9_£3R{¡Ï‘rÙÆhû×°õ±L^d/{£@fÍpyUð—Uá>EÏ}úWäÌ ³^¨rÌÄìTµ¦‰[—åqgÎÙšS€´ {¬ŽÞ>åÞ'8(jØëK•#ˆ‚x‹±›[D`§lX`•׏޳5ß'öëi‚HÒÄ[ã~‚U¨<ˆ­—ƒÏBѰð,¯Le*#q4”_üÚíÝþä¨yŽLëÑG'ê(—V>ìEð<ÌT” ƒ¶‡D~C!!'cˆö‚¡"t‹8ÝøÜïÛŒY¨”£‚_âdIú±òh²Ù,dPŒ#•r•n¼NÄ Áèͽ;÷|E³v¡RþõŸŠëoûì"B´€w‚[×Y¥@9c$W¯G™"Ï}~ßéÄ?µéo¢kçäâ£-2NÒ‹AÿÏmÕô'š;ÎßñÙ ”3Äáºe©èˆ«¡wÚtù» §3rÑ4d“v¼Ý«èÛ1qS¶Íð —H$æOç~U8XœÜŽù¶”z x†Óƒè0‡™ªÊF6BÙ艶ùÃþ?Ö•bîL–˜üGj„ºº —Û‰ÏS\0·€%çH§3ò§Ñ?lý{Pn‚ÚÂÝ ÝjA3âÞg«€Ï!9š¹nͯ°¢\h´Ð%·}±¨³ïðƒRLDî|& Gx,pÈË:‡Ù*ƒû„~|úÊ…™0·_¤\Xð—Ö0S%2ŠP³+8`ZOøÝfîCb4ÌT]Qùƒ‡¼¢Ò"†iéW ‚DØðÃ}0‚e3äõùÎhˆIdó©\C;9@ªkY:Á!Û 3¯ÔC oÈô5ó#FٓߤÙ>…Mxú×÷±¬È.C>~`JU… yÍã8[ëyòúµiq…9±¼*yvúùªboËÛñÖ„¾f‚Äå0ÊÒKmddC˜ÀÓw2Hí3Ì2X~Dò4ÎVUj#Q=¼YÆL8¨V0“ó¼@‘пᮄýF’÷¯àWÁL/°5"$Ë\6o(¬…)økÂL_¨±²•å$9hM… Ñ 3õ‚‹"Ò±gÚâ ÎH•š öqè7ÌÖKYcD:æåvRÞ³ Ιš ö!0h+E°ŽLú…ëßëˆs½â/CúEnÿ^/Ptd^òá`lŒÍm¬Ïˆ˜€i©Ðã3õR ºä5Û)·95Tš¡ Áé0SuÞ—½|8‰Æ®Øm?:&M$U𠳦æ ./Õ!ŠNX…30TV¡÷¡ý{‡7¼ mŒóÂ+#}Av±›«n¶÷>gSf&4ßÚ·C>¶‰{=lÞ8û 5 0!jgëRÐIš««“>½`†xå K%¢Œ­Ú«Õý¶õçÏ¡ BÈ(ÇÙªªÚ0ñª¶ ûbyî6ËØ23”ÈK,ºQå´Ù*¯XËä2"•€q‰å XÛf^³Y‰¤ çw75±à>½ïå:…X>a:©ý‚¹² DA%^Ò6ÂLŽ1µÈ!ú"ŽÞµX현I>¼äòô»·}ZBƇBRø†‡™z)y‹Ô}{Wy |( …àqœ-&6dm²ñ×,dމÜ[Í[@.p†¶7›@çWï°,Ã,# Ð/‹y›¥ÃÆWf*ó‚a"t±í5C|hÆw"QË f~ªÞ~I ÕVJ›}ª‚PFa)^ò6ÆÐTÎK”„m¸(±¥Ë/)ˆQIг ³õRÍA $öNv¬cé a–B3Ì”B˜„\ÌÛíh}nKé¹4L@dÆ2^µñMZç&ÇGñ¨Þs ÌØ›°‹OízÚK2¾TvCoÓøoæD}Æ|ŒT´&ñïì³â8«§]™§ çæâ„%MÚN<Åö„µI¸Ké™jÊe3qùÓ=PôvÚ˱ŽyüÕ =Šð]±“ñ‡£Ò(а?ê÷IÑ <…a•Ž3…,ú°Ò‚³ç³1_ÿKQ\äq1³ïyóxª£‰u0ÁfJºH‘-3»ŽÑ–Y¿é·À«MÞ*âÁ[˜¬ût·ÚonÏxU¨ÉKj!snÖ®0Ó10Tx*ÉRùÁÉʇ3ñ&|j$¤ÿV$Uè‹Ã–§ Ô¨”ã͈ClAápÛm¨ gÍ*£bµ9ÌË£žŸ×õÊý·ÁIãlãôWÅŠMžB¹A¶^:¶#ì@IØŽ¿l1ûH•,f âì|”©eãb !Þ함B}º%fꯛe;åvâ[%މkÐuDåƒv€¨[èâÔ:2 [ôîfÙ,Bð Ûn¦Áóáöy-§#¨œ†=IW¢(rZxO®Ý‘ðçß Ç Pðz©Q¦jD—pzÂ/÷»ÏÙQÒ&H,bœ­&ñ.ܶ[ûƾ©âÓL¸:`Ùp1M+ãé‚È { Ëg«.­úa€´¼ÍÇ&.îÞ‚ù^æŒò"£°(¯ET6;koaÇ.(ºKã…[DJáF7š}Ûþa¡‚» 2¾œî P´¡eçòº©´ [ ¢b¦Þ àaÎTdÎÍ넲ebÀ×2ÊҲسÞZ\ÖÒ†ÅKGCìÖ¯¤ÐB¨D ÐO:aæÔˉ 'Toœ­ª*pB¡õº­´¹_;#\O؃Cž_°€¾Æ™Ëxë>_¹žÀî3äuH£^¹ùQ¾-_W¤7ºü€:ø²”ö 1%€‚(~*¦~±‚YÞk¿˜|>Ð/”ËXÁ‹¥FXéÍÆŠðDâ3â ¾æümaÛµQš“á÷áö ;ØÛkŸ²í’Ío ÊÌNЄW\ ³õ‚ûw@¬äÙvDï—Uf'l‚´o˜©jD„ZªÅè_[Ž‡ç³ ösÔ;7Ñ ô5phœÝ5ÌÛa3ê€ñÂõ"vø°S«ùøÍ/dɤOЄƒˆ487a‡CZÀ‹ÐjʘȄ‡io»_»Þ·ˆßïÀ F^Lv#&Š9þö°/x°ckw±[!ö8èHbB^þ5ÀJÂ>q>{ß+â9DqÞåšÙ¡R âŒa¦^ cd N¨µðxjŠm+Â7:3•ä@‡Ë‡ÛÏpøˆ3âZDuØÄ]Ý “Š*3âx_ :ìBÚ¿¯Ï´>…q0ÅŒPÁöl{*ØhËM9 Â‰<8f@pÏŸ¦Ù3ðá¤6»d­½ÞÖÐUCÌ0óx~:]ˆù?J”V6R›Ûe‹SÆv‚¼Úi”©·ÛYBúë1ézrò}äx™ï0[UYR ¨K:P¿/;#*…p^[ÈiPŒ0s×´ÅV5&ÈèçpÔ³—Š™bíeQCÌì,Õ€¦ÃKebØî“^T–hoìŒvZ î÷ †ÊI¶WãŒ2Uã«”?£ïzñ³ãú‡em¡$Åæêfª*‡ ™8Æ Ï:­}>TæI9Ygªsc¤z§[:II œ$ùóãÝSV‹ÚŒ•e[->`¤@E2ß§Îc”­íZüêЭ†Æ ì-¬J™/Jó6Æm[ù·B]$;æÃg+ÇÜhá]|2{«‹AB‚l gF~»Yµ&ÏÌóä$ú…ê„ Ò5*?›í»7°+çIz uRžé0R²™bÆËË Ì“sñ/Ø ©¯×yL¿nÁgrzìZÄ KÕâK)-XÖ/–+¶ÍHÚ˰aœ­eÅôÖýîB{¢¢¡@%9c8ÆNÉWb’fiÛË[š;ùÝPJI$‘#_g«à+1áC™Äf—ïµ¥æÅÒ \$'äÄ|ëÊG§D’F!BsÎ~±Ë81²•˜8¢ÞâÆ»[çîJ[$·|a+1q 奿­\Œâ3m‘ÜÒ_{ºÙ!%Ž@$;.)3àDDcýœ\þi„|ÏKŽgc%ûâÒ a$'ôRa¶êšô”ð¡çñƒ½Ï­PÌ"I!ÓÉq¶^MÌå0>b1Ç Å º”³H¾GB3ÎVUh– -&ÌçØÎ“³µ f#éã[¡EH ?Ü`{;žµgˆ£é#LKgfXÄ(‰ôag§ÒvŸí5Û!çþ 7ÉhG’LO)ïÎîÓ6Bæ‡i˜ó¸Ÿ6–Ø I¦(9;ô/4ÊTæMn;nîù·Ô2f¨g¸éR[z={ëN"-š!ziÄ0[/ô%ä Ö«U®¶CéòEŠäˆ Z†™ªJ~SIO,.,Á™‚qÅLrºéÈàf<ù´EˆÀ¬1áD‰ümw³͇ (XÉIé7I"|+âÅk¼¨× 4<Ò‹†™ŠÙºý6XºÏŸ¾°ß`në%Y!E„K@Á|{³§À ² Y$‘Ä0SŪ‰y$ÊnþÆ2UV RHªÉU3qZœ]Öæ·uÆìË&&€æ4|Un6ÜÁ/;Ì,C’Ä õO¿ÁnK=VÞtüx/å’Û=bÿ [õ¢H©F2­¼=±‹/Ø‚¤wŽ€†Ùj¦&ç»›·R¦ ÷]ÉÿI¡ä#–nïrb¼^€ I_"Ú¿ÚªoËÉ¢)t–J*RŒûÂ%bÚ zµÚÍmk‹J@…d¦ÏLYà‡Ýª–>øBøBÎ]íeÊÖ)z„ø› B‚˜í…7ã~mrA$[d*?ÈP%ÿ&jPÆ­âr³ N¨‚+È©óà˜]Ù[n¡¤ýÅÞV\ñ‡”€½¤D1²òDt³Ù€ž¶ÑJ’ô#f‡¤åÃkloD\w¿DXƒ$6ÎLÚšpEY v/ÒðÄrUÿô YO™ F„Ü(GzífÆ’úð-2ôýϹUÿûÿk|jÿÇZ9SâF¿“í©ý7'rx¯ôf·ÿ¿\Ëì…(øïÿÍB$<ýO´çg=Ä…þßùoü÷}³Û¸×¯1ß‚ÿý¿ÿëû!úŸèÒ Äoñߊwôy´õ9sÝ÷7-’ÛÌH{6vM’¹ÎÙþ{s·çöü÷ÿæ±o]ÏŸ0³þXèÿÿ†ýþ›sáíÚŽnáß÷ßà·¿Ñ?EÿýSv ñ{Øwû_¬…l±gÛVìÙ6öÿÝ^çÿã¯õþÿú>Áïkíÿð5÷[Lþ—ÿ5ŠwÿÃ#\o¹ßíõœ>î9ä~ö·l¶ˆê®º”![Î| çÙ"K„qIM:6ÌT‘}GÏ„ú;8šcôñÆJË$'$ˆÌÝJcú ‹rrCLÇÑnÂY蛟ν2“”ý%nˆ™7<ü3ÍøÙ/)6&Ù¹Wõp(Ýi—%{UÏó¹`?ƒÃÌ¿½9)¥Fò…ýìXX1•dÝîG™šR‡÷æå!Y,ñVÍ>àN)•&Ô^.1ÌVŸS²l‹­=»+â>FmЍ$ŸæºfªXÝ1ï¶§pðj+báðRš›{©xH©?lÚ±ŒÝ>Ÿ5IÚýÄ1þÐecúŸå|BO$WvM”©Œ,œ¼; ½9œI&¦z<›2aÛíÍMîæµ¯£W  dÉÙ2áÌ0S  fŒ÷ÎÛdãÃÍÚ¯¼%úàhÒ˜†= VJÉQ7p2g¶‚oöÉ´'§í/u÷1ûƳ¿^¯§7Û*Ø‘ ù³% €j½Ã-‘¤ç¥¼5‡OGöÃV™¤Þ^n0ÊT½ÂRVýa'ÂéæÜ¸ÇHâÍÝ<ÌK·Ñd³ýãk1~y+$ù9 x{ý¶úH ¡?9wYú7_ƃÝWäì ´bœRÿèú!Çu91þäÌIIŒ¤Á.ì2•õ ÓûTB¢kß¼…‰´¿{‹´‚I† ³Uéö?Y3P‡‚nËù´TdX#™µ×êþ†tvV¶pÈæ`Û• {H¨£CÔwz#û¶9ô ÃèH`öÂoBÑÙNÖÍnc£œIõ=ÌH£Sz¹ÓV>÷îÊTŠ–%Õÿ¢¡˜zKÚofºÎ‚ðHzîå#m­l¸|²„oý¥®ëŸççÁf”~ã韼{qƉöo…ƒbŠÎÌ~!Mpâ ‚ø;·Ûúè¼#C¥œðÔ /å)‹É+flôÚí£)d’TÆWÞŠ6Cüìàclÿád‹BOŸÔS° ÿé²ÄÏŸ=} A½=„öÐD`H—Éš0 ü½¼~œ-Û “€{/NøªhprZ£t# dm¶ú-pš~çÎr”¥"±ˆi„=«ú7GÌBI¤5Õ`(ÓL=±!æ^†W¤Í9Óà‰»¬~ƒÓí·§8ðÇÆ Á2#“!fº+SŒQ³¦mÙ½^—íÞïú‘Äÿ}ŽRJ¼ m·÷Ý\ÎÁ¤!§–’E0ÿfª‡C¾ðáp»3ĶÈÍg£YjÎ)µÄüå°«=çfëòÑ š¥Jñ#ü†pýÃ[îñË‹4·Ì!½ ¿£LåÇ62ŸX{Ôgý^£ïÔcÜÚÎ_ôkã‹ÌRnÓq¦R Š£kâ i :½KÐÂ÷ÛÈÑ´ú…Ö)Ó¨óŠß,°¶7û$›kÈ9a•Lƒ‹+¤oO¶xÌú*™XH~*©†¯ÓÀ¼l9vÏ10ÂÛûwKoN¿'1äåüSZù¨ïX»m îÞ¹eí’Aæ’ŸJFòÈÑcLå@ÎožˆÉ*8p#m[KKo{É ªä#|ÖÃL‚ØßëÒb>ÖߤèÝ@ŠÆ0×ÍJ—|çÇTWÒ&¶1“øpÐáC=%—\7'uj‘ ;(›ãÄÚöa¤Eœšs,:÷ØÿÛÞvª iê+éÁ¯è<À±Éó³=H¤k1¬G*g!#öÛkræ+¡¿¿Ÿa¶Š¼!>~מۻj/ß¼«<:¦uæÃ+¨¦ÿ­¦â¸'ÏùqŽÀèÈcÆñá0¼y5S~¯A•§¬D ;ßUJàèxÏÙRóýúÉ(²NI%¸“‡™âÇãOOÄb–€‡€ÞxÏ~SnN&%‘àóf âxûß÷³Hq›BËÒyå0uÁhm§åA/^ä™ês/Ÿ+#ÜÞî'¾Mî8JÐÛåSZSÿg)¨Fα1(µšŸ˜26 ¼™ë³•r?Ü¡£/çO®÷íÍqz‘bj‹²MÛÛ^]k(R¶w?âçS•ˆÂsˆH'èµ_Ž¨ÙŸ†ðþ¬BxŽyCÖÇ»­}î‡&À{i ‹?šWá-ñ°þ,BÔ qè´0aÖá“øsº&‘9½q¶&´Ú€Àñ¬²^û²* „cffTR¯F|ÌLÎ$N|Á¡1t³ ù“«èðŠäØîÉÅ` ñÄmm“í¼dž­Y„„cNÝGYÚ­nß®´>fïCNA¾oÓ„¶R”´1›2·ÀM3$ãûg«ˆá~^€;ÍuÝúmD’ŠHT÷„ßÈßB‰uâp»¾ãñÏ9ЋašP+½Ù {N‚s#‘Ÿµ§UÊc¸eˆãôÛÏmñ$Jã{‰Äœ®´uÚ^Aa7—TJúaœ£1äsðÀp†Ü§ÎKÀÆ×3ÌT>c4fï~Á-[s#¾‹ø=Glßø,†P^àƒ3µ=¨Ëùr šÃ,ÆgÃLî÷°DR1á"ÓÈy¥³Æ»ù@õ2u¨ž™-Õn¦fŸ"á®Ä}M!–™ãèúö½W³ˆQ% #ìhËj³.{¦VÈcÒ—6“Ý yiÇÖòÐkÄЂ%õ¸xò®ÄUrDÌ]¯?o?³ÆCÇÈÄ>Z;,Q42$àÕèÅé0S6úÝ-½%Gšõ‰c‹lÛ«6ä¶É}œ=#±®Ä7Œ’‡™ªøiƒÀOw{ÇÛ:Ýý®‰ˆ%TâÁã Þ¸³v[ûÝ«9"ÎqR¥Èš]¸rѲTOÚ'ýPÙßÈÅlµ/lZºõÕ>6.…È9¸q&;ÆP?0ËÝÀmµú=ñ K€2ØRŠ6œFƒÚ>>膊çü€^O¾©¶7G¯y瘈φ¶5mÙ••<Ö!P x|‹5&¯>¢®ØsLÔ# >® ß3bó¹v1´ $Q)ûoKãht”)ñ1øðf!{xæïü– r%@ñôf”©"zá’¬ëøÜÐ×¹WkÇ@ðöÅ“ rã+~gŠÞ$Šá¶fªûB˜‚žn6+-·ß…XÄÊ|£¾Z ¶ A;6.*¡Eð&ácª¶ÒéïñH~Ïám2ÿŒd·J]¶jÄ`£Þûé¼Ajwã¤Â=>•4–áL¢koN ½¢¶âX¾Ã-|Æ9!œÛÍ«n‹5y3–’Ø3WßH3†(·WKÌóîj‰5Œa¤9ЖÝɧ{ø¬Ë½µF¬¡¿q3_±MæÐSC—€ ÿ8{Qrˆ'߇¬äƒGB„oLOn¯Ö´K¤¯eñCJ#È|ºsé 3•ÎnÛ('zWw ö!ä9Ìçû`K) @\`ã1wëX¾žbž¤w‡ráêšåôÛKЏS…ÚoÆã^A³í{µˆC%èµ_?åìÞ žf[líÉXOÈqžÿÉIä—Ïnî¤q–ØM°››¼xøÅhé9üÒéþJ‚Ýzaù¢sŒ(çûS;<ÄRÄ(Œ¨Ûó» 1$ŠËÂWÑ‹g²™ÛQ“cÎÏë¥sL“Om®öA†Zäv`“Ì‹‡²)zá™gg9 ãå}¨¿‡àK\ °!/ æe¿¼0Oƒ, $¾aC<Ø=ðÇÅ9íwqPb9ü½*s˜­ÅÔ^0=›xÌ2ÔxH6¤PÂÆþ-« }{†ñØ2Â|—fnñ Aƒ±|´òxÔz«;öæñß›£'9ŒyŒ²TxÍè$Qìt¡$d±‰L¾{%xÊŽ”3žì^÷a1ëÑF ôôw®åÁÅvô»œCüQ×À¤ãßöŽÝEŠ7¸ú¿W99Dx^a:³í‘Çïg¿nK#*=×É¢ÆÙJ‡-âð•9ÏÁ*ûòô_4Œs][#Þ–ƒ39½^õàðé–Ó°´*8-;›µTð§7V¤“ÎÇJÙ'?ú]÷E $§!]Á0Sðxñûð=ËP®¶Á½°BÂ¥|Ò¿Œ²´¶-R¸ï~`<ñ_ØG<5Ñ*´ @hY—§^1GGùdõ‡l_äîÛ)`ßèâ÷8„Ùà´Ý{y£ªÄrb2¸d¨}»›q¬õç1ïK–…v6¤ü ‡cN“þÚ‹ºOVdÿœ¾¼4¿¸»Æ“9}ýlüݸùLŒÖÃ^žçÄcðË8âÁúa{Çf[`ݽ6:Ç.rô>þK᧪=?“ÃíñuùCƒ9x¿¡ÊïYˆ*¦ÃŽ©ýj!Uw 7ä¼äËe©¹ØÕÆæxN;D?r ½È2ñ¼ÄAÏ–SYþ-c’|¦º\ðñxW šÅ–óKnó šÎKxvsHx7®˜È©!Gê7ŠGB‚Åz-w« 8ýB¸Ëè!È =ÊRá.£süp¬mçùðKë4(ÿY¤‡?|¹-ÓÙKôs”¤Ç°§¥˜À½x™~ÓøsäÙ벊ÞöÚm2I¿c;‡r,2@hëœ':[“·ÍÅ£ÌïÝ< âµÝt9ú=n×læ(¯á޾ðñ|餀t¼ð¨œü¨,Îá|šx×(SÅÙOŠÏsÍ6›Üˆ•¥gu>L¾À?údœôßнùÜ=C“ßæÉ;ÌRò3(Q½™ O;gç”§j8ìPذø·ù;€VŽY9'¾§BôÝÞ2h'«!䙡ƒœhâßy.Œ³…˼Ì-_òxPÔó‚Ò!€rØçë)ÎG¨œîFOÑýꊴÃ^N…p`DŠprkùœøž ÑsÛ÷i M;÷£-¤ÅÕæ³7yw~a–ì-Y9ùuô΂äú ‹??;¦/mÆd[´çÆ¥®'¸ú{.Œš#=>™'9Q~€ó6ÿÏŸ&IâõD?ýáx »”¦>ßžf§ÓR}9ŸÃ@[÷ ½ÛãWJËï%} ´mÁ.Ÿ­/>2Ðâ4銢ã1On}6¶î©‹Lt¤ÑÙÙŸlq“ÉugK‹6¯̧€8DºÒ¶lò†ÕÚçåt…ôPk‘|§·ê›¤2·À.Ü%þ=xĽz ÍÆ[Q®›·‰öÍ<¢G»Ý-”ÜχIé‰"^“¹Ç8[m‹ÚqÜžêÙ¯ŒýÅãFÿЬÅ'óvx¾\œOÉ÷¨-HO¾ÓûWñ¯íSXu#ê_¿']ôxPŒO‹±öcÙ<1“ãJœ"WÛ0S-N[{Ÿ6o— 6:8V…Åíøá€V«¾2㙵–¼n|8pú(Si/Çšâ€?ìJ¾Ÿ¿Ï ü´ãÜë¢M’?í^©>ÌöÇ/Âù/¶:wK½|W>Ôwr•޳•Ÿà‡gp6çÙ{‘W[ÇÌf°˜¯$Ùp5ÎÀÝïË ïÅýDgóaͫݧ6¯^¿^9õäÜ™†Ïþ‘ÏD’c"€mý^·½§¸ó³§/7ήí{Doãµý¦ûí ±ªA]ºx$~þq¶P™¸ÛÀëåÉÐâ.{yÑu!|Å4µÍþr<ˆ{£7Ëw©'ß…ê”gmV‰¼ÓCäí©þͳ¥«+®]Õúõ>Þ¯ØËsÓtq0ˆƒ¢ge)9£üÝÀâ"·Ù‚0’ÏqOÏao¹­åÒ óòvW„é|üyÝ#gña%sû+»UIÓ!fG.hœ%KÍfÖöóΣ´¹qoÄûe3¢î¿;מ.fóé~ÙxqJä5î”ÖÚµ %n>v7{%Ù.À9¼h<¿KÚŠt©ŒŸ,.òÉééÛù Œ;(ïgÀvµÃô­’5%{ªó§Þ©÷íù.sà$ûÖŽ·‰q“ø#Ù <*‡™’3?œFÏ6›ºrú¤qZy_qíxü; =) 뇯áÀG8üƒì~3ËïZ˜æâ||Pöy;ð3Œ2´+»œï§Ð&®2Ó6Ä“hc¼ÿ·šŸ2‡‹+yU3 ³û{>`"™æ:7g¿³€Á[+Â#/!B~£=–hkØ$týe‹Ê[UÛXö](!Äoç;m·a&ö³ a_áµà‚˜Íº]g/;ÈëNöžƒ” ¥Z{{çÕ™Èa™ó2§+V~Ú<[’®°p ‰x·ÔdoåõÂ=9ДU~™ïWÃä‡üÜQwØV2¹ÿ^\ ô×ñI|8©ÈJXìÚ…©/¾êüúªø2à¨Ì[#‰ŸÉºdò ó° ½ísöÌ?~r.dÿTÇîõù!pKðcíGWA³q~çø Ñ™3´ÙÆ]®‹‡5ÍÚnR刟;5þMì”z±Þ^û§¿ëÕRö¦MÄ©wá‚J#û[ûî=œ*ÛñmòR~«¸»íÏ,Góä³ýSËwДõkÚþ²Ÿ]ìX1të¶nAµ_¬LbšÏÁéÞ~ã'b[,·©WǶüÌ=hªxñ ÃÞVãhs€|îÒÙþÈÎ=#ÏÄ?åÍ­Õïøá¥˜fiï=âútãx}˜ñ ãSbÌèa}âl®EáÆ?ã#ÁòCñXl˜­âq†¯ŒuÚWÝ·e뉪<ßüTêgpVnplÏ5 èµ:ícßÿðñê²+ç¡»c ß>|5wuvÙ¸”x2μÛðÂm/W?£UvnöÏ^øwÛ>n¿àë¥WßëBНÚ?¢ÙúÁ¿NÍSßxç?W¹<eªÚ•aÕxK¢u¥ Ã06%¦#¸ƒË{++²TÈU-úÅq5¯>–åbsýþ,ʸµÒÖû~y°µŸß÷ó³Øñ~Ðl{¬ýÎãcâ.˜cëõÉy?p²T,¢¸k°GQ8ß¾|¿Š^–•';Ë›Z°ÏÝRðºžjÑ1¦Št2~?PŒ ¨ÔæIlWDÚ;ÙZŽfÃÞA‘ØŒ’û ÓÓÁ’"±ð´Ù1<éÍSÅ’ŠA ®QmÏ`åã¬mö2nü:\˜ë¥î¿›ß‹Ûç=ìÆ†ýìÁstŽâ ¼l”©Â³D?â!‰ûkûGfoÈž6ûšúÁÛð¦n»x>øî*³úÈàE{aÊ(K…û‹ Ä|±=u<agô(k×cÕ‹9öf« (‚»ûÐqbÇö骕;È.±–‹Å}ûúíYYp×g3}Œú·#!‡“¸ƒèâ¨È~Òc×A–ĵDGòa/µm„ã DQ8âk^Ζ;ãCó2ȳ­QºÒ‰Å9‘Î’§ôq˜­Â³ÄSªÂn¢ØaÃ.Wú!wko*’ƒÂ‹Æ™ŠÇšM&ŒÉ°è,Q(GŒ‹aÁ CzÀÒ=Ö§½LÏBqÕÃm¥Ïÿá8!l­cïãê8c®Ù‹è²—÷Ã'¸p>¸–¾ÙêøÅ‘œÝ|µK°Öì=]`Vɶú«ð)z$Çcû»MP—q-?4æÇ¥ã0ÂL‹Ã*@—_¤÷{Œf·ïÛ0[ʼnϨæ3´Åu¿¼ð#£z„¼<„èÒ‘Gì¶$óºkOnÂѧ^ße×Q¦¤ª0 »³Õ·pô #õÍÇGý¢CG±™j 7ᾜ{âô=!eJŽ‹p8ôÖ/ûºV7Á£1Ÿr~¼e#ÁŸ#È]1?Þ>õõ=x¡—]¾§#£LU% Á£RÎ=Û¹úŒ«ùÚéýÎ>l;»|/,eJ^SôN¨œñâÚ_öüSŽùì¿^ÎÊx! ¿¸Ã[¸qzk¦øð|N½¬æš&q»½ŽÅ–ÝG鹟bƒ¾ÆÙ*žB<ñIâ²ÜÃNž5zðË©è%}ãl¥'ïuœóÊ Ê[ÂçÓƒÛŸ™žŠ‰tÂú9NO¯áÁ¹»]}²…D$r–Þ.K8¬/;ÌÛW]ôµç{’?K˜‘B‘×ó4yޱ¤Î^K–==dINÓxv"õµº­ýâ`èñúr˜Æ9ãaê©W]ä  ‰ž}²$>:œœHns ¢- ¸šš +1¶·Ïý>Ф¼>%u]¥ìõa†<á¶²L$ûÊc"‰ œLŒ1¤\â7r–جón_—“—V¡UŽ.ê/ŸŽ{¤ü§»ËÕKs@$S‰A–Š“4žõ>2à ¡à‡9}aGŸÜñMJ% ßgKéÉoà€°¢¨¬ìc]r˜c‹—ùo¦4Ó›Oñ-ޝ\¼„ñ°Né'æöÌ÷‘¨0Žf†ÙR¿Ÿ{<n'»Ù×OìJ<à‰ô(SÅËŠ/Â{×áÓÚ~õ‹ ý¶*;´ÙC-±F ~BáíŸ0´,TKøšB7ðÂï„°ñ›k¿/®Š_s¨ñ²ÄâáX³2>8¿ñdŽ9%@xÀÏ [EhNЯƒ)ıú¥srJ„ÀÐb˜)‰/ãÙ²À®»ué7$iÄ)ç£@!(Úc½×û:ßOÉX0%n©ÃÉãœò›jQá´þ|½*, ‘£¿ôq¦Šw”Šn¶Ááÿ½¤]¢Âñi3%1@ §-Ö§·Î§_®TÄ—9ºz €b˜â£ø©¿S[ST(¡ŒÓ¤Q¦'…˜ÅÂ3ê5Öyó6ƒ^jXD‚»Pqtòʱ“´x–î.4¼Œ!èk<bÔ´M<íÚ1²{È'QaŠ‹œL ²4¡¹•?¿ãu~"ôxnŒoZä3±þºíá6Kb¾Ê¨K~ -Eh!|››¬Ñ¡¥ôÏ´Z‰„S„õrFÇðÉy’5¶cÏ ÃôÔ–ëe ÄǑҽÒÑûS96–¨ÈùÜ(S)À±÷4-(Q´ôè|æÅHX‚ Á¦ôͤ§îÓ>pÚÌ^H¿bãÌÈÄoÕÌñTMúB¬„‡‰ˆn·ÑÆ'ÏM Ùs<õ² b°„†MvLšíÞï-1{¨Þ`_p>bÌÈáCç8[‚ ‡}Ãlz q¼mÕ.‚³kiVGh9ÐÎQ—ŽŒ2¥x.KÀs žšï`—IVç€ÊŽß` ÚÞŒSÙš*ü6ÆEK<õòÒc€ÓÚÅu8B“È7AdË^7N“ó™”C04”Æpº@œcßñq3%/=ñNÀDíVE'H9Š–0À£¼ßÈ Až7]‘—Ñ98{ ™í’ו/5ñÇqS±þ¾(‰|StÜcæq¶ä¥ç°ñ(þ<>¥Œ"öÍ¡ƒÆq¶$j 1"ÂÑ›‡‰¥ìIq´†‘/O †cÐ7Wº£ÙOf‰}5bãfªˆõb4fóÕ¦ ݸkŸŒµÚawc“-}úTŽØë³%/*Dv?ó}–~rïçàËþöâ]kdaH—U'¿1¬ øCNð7ù$.v–ãcº ©áJ$ßPlˆìÐýíO÷Xú ô’äèÏYì(S9´³¯¼¢‚èXŸ»×‹ˆ?‡£mc|îfü\ý½OoÙ|t›Edkï<È¡d vC˜²‹±£;Fùs1æÔD"I†51*´°Æ/\z±y‘ŠHäX¯ ɾ⒠–LéCöäŽ2¥C äð óá‡aÄÃGyæŒ"{þ8G™RÔbB Vœ£íE­½¦PÓ‡7ºný¢hsw`jö-Éràø´ú ä€Cq©XûO."| ö¾huŒ­"LŒ‘܇uÞv…œŒç5ÂÏÁž£ÕQ¦*´ú~8êöÆö|Ú#$[ÀуÙ­^nëéËéBë—ž9œqVð¢ÕŠ?{f´Êr$ámˆ2}Ž£ ZìjZÆš4¤H”¯gÚY·ý8âöÑ­l¯‡!»„õ)ônª|Ñ)hE°íž÷ÂØk`Ë8Ì”FÄ)fµ(Öî²´_L~+¢${.v¹Î]†µXŽãL)îá/p÷Žhן¯ž¤\FBä—H)ƬNâݱ:·>\[c§×¾/„l‚]oì¿xæ‰I‚“ÃQ²£,éy”BÏG³Í¶~ÚY̩鄧 lÇÙ*^W|Ⱥ0\΄W´ÚK±É‘Dú8üêÖ„=„±Þ{i˜k±)°Ꚉ¥P×^;jWúÍ–Þ²<Ý¥šˆ¥d­Gu1$þp²»˜¥OÒ+/ ›ë¼=Ʊ×àþ$B’,I¬ët~”©¶¢h`Á Ó®.¿PT’¥Ú޶¥=ÄÀøÊþ®®‰ ½È$NæÇŒA0/ÆÞ‚LNR$G9P~I…bà ÌÍ97¬ÞÒ—2‰m˜2UÇG1võÇ`7œÛ‘Á0Q“‰oùH‡™RhÂ`@ó¥úËyúéS$H9TvhÂ`PsœîÍÖáMš!åPùå½ÇØÕI÷ºóeõZIjr|ëÔ|˜­—È8Æ®(æÝ»ng¿ 7g6Þò™3U‘óŸ(äŠØò $G’@Ù£÷ƒœï¸béÄ Ê‘r ü†ÎcÙïÛƒ£µùÁ ß%±‘x×Éù(S/r f1Li±ÿwì3‡5¯É¯§Ãl¡rˆf-ò°°Æ¼Çºò_1~ÀžU×G5âe¨<ÌT^ )ÎpàkÓ¾í6BÏÐ5•˱Ÿf ²- ²¨Â~c÷R¿Ë©œâ/\Œ²í\¶ŒÅû3ÐN"ñêì¼çN\»¸«ÂØî"Ù‹ù ?‚q¦^à½-Œæ'“\Ob|WMÆ*Rƒ¼ÛbµÙã¶|ÛwsiJ¢—ã{fÃLézJkÙ'.ÓØmÍ¯Ûæñ|Ç#©B-Ç„4Àç~!ª3ÿìWUKBšS§þ!võŸ¦š­Õï‘•4Ç÷I7cÔ µcc#É>»’+i£æŒè‡™Ê17 YÚ£³ø«Ð$QÂòÁ¦$žÑ;”%svÿÌò´;Æ”P"|?5{ô~xý»M47„ÝÒ<ªjEN˜òƇë‡L\ÿò5³ó>ƒ"'”lá}ͤÞgn¡§¥c™*›Ka¾K%£L½ä1†ÿüô5Zå¨_6<‰óŸç:È– &!€`ràÂc»Š‚ƒ‹d1ç .˜„|ŠÉÁ¿ÙöØísc$YÌ9ÃKŠƒxW9¯=~• OýG1dë%EˆQ<žÄÌÈÓæ¿õ‘r¼è󙎲¤šÉo:É÷«µw591Ò\QR—LB:€ú\[~›¦äŠ’2¼‰&!ˆ7ÿdßü]ísOÞR‚—}§]Ãl½¼÷ÄCè8}[.ÖÕöo•áI Ï§:ΖÆJ)ŒÿØ•›+çý-»wàn-ÀAÈÚ^vé3EfªÒv~dòhб[ƒ/õÊImNtÆtÀÓ-[²ûé<¥ÈisÆð’Äl±âÊøçX‹"ÂËÃKzƒxˆ?Û?þ~Wr–›ã|—‘YJ+¿-¿Þ6úâ‘-¾4×g¬pÊp5Òwi”©z“¦PÞ^Øvsêˆîx;šå¦hŸK”¥"Kˆ+ÆL»¯ªÛ "Ìö~2 Ÿê¼¡Ì¼c|çÌ–woHÐT\B@¾ª˜^@ﺙì[¿59§âš‚¸Ò ´$ØK£­Õ+ræ-)HÿƸ»õîw·îægŽ?ߊ“e?n¶ðšœïš0§¤º§Úãl½ q!y|v=G|Ÿh–³æ”߸7ÈR½“b>2r¦-ý IÍ›%çáÛfJÕ²ù¬¬å}éÉ’¦É9}r&¤3¸.Üþ¼Ø½VLp4MÎ)Ï_^}ÌA Ô¬¬ìÝwÓšÛJžâ:×0[9ßðÊ™':ƒNMnsF2Ö’Š\!oÁ×zÞ—íö”_²dImxVò߃«åM„G e–™K†)±&É1‘~ä²aö/âÅ·¤*I²dII‰cæëdåeçPEf+ÙÍ£™ ²UF )wÁÃ8Ùùf¥ú~™yÎl%¿ñ;Ê”Šf!²…4Ϙ^¿Ø}•Þ-IrN–¼æ-$Bè'öãp{®.•$Y’¥:%NÉ‹+]›¿®ËGçIb›.ùq¶êWŸ’ȇ+Ìu÷꿜ÙJzã¢Ù Kš¥ÌÅr™ÝGΗç\Çø·?³únÍÙ >å8S*íý&A®ìºn^‘Räò9QzRÌoäey´äép•ÉçDé%€IЇÁ©M)_¶Å˸‹6'J/P ¤.òÈsáûeØ©™½¤7Î?G™zIŒbò‚Ôóâ:hïº@–Ä>'8žÆ³õ’…ôÅÞ™ `F6¹ ¯É½¤8̆™*ÖV\7f¼A€ˆÛî®~óοåéHtéM–ü¦B®Jž8®çÎBälÉEÉ !½l˜m3õLøJB“%Ç1²˜éF°S,…|_7¯OJ¤É|Jøûbfª^ì)Yƒ¨yò/÷aE6/ ¤Ãl¥t eÈ7M-Oëœäî9¥kIõÑßÄßvÆ Ëú”äiFÌÖ|à$Öõö(šHB÷7E3$X~‚ÄØ6‡·µkÚž“0—4‡ÙzIßbŠ…ù±kËa¼<:gó’…ùseJ^~LÖð.:ž–­Èéw¸ 6CÀJÊ×/"µO=T*ÁAÿ®1åû@m¦æ>SB©@N ÿ²ˆbª=s^æü§ÿ|Á¬AÐÄIÒ^üÕ¯ÑT>%t®7²T$‚1W³ìíF}zûÍä“›öyGUÒ|xè-éÁa¦* ÷'»cvæÒÄÉý.èBrCOªCæ‡JÔÉh%lÍÞ‹—Ñ…d‡/ñzÌü¼Œp3SíMqok/Ùá ‰ùš‹ºpíŸ[ŸêÞÈ2$§sx˜­—Åó5tnvÜ6·`rú“h†¤tž¼2õ’ Æ|ÍÖm .! Ì‹·«H#çtLÇÙ*VW\90~qÑ[¦†a÷ŒCË]og’¾)Ð?ÉŸ+Ð;vØáW´ô%%ˆž»‡ä¹û Ì”ìUü’DÆM1ùCB°ðüZpô¿%lÉ â Z‰tâŸÖ ïã(IÊê\re*o¦ÍÇ„„ŒÍ3l,ïuîU&hVçÙú0[/Û)æl–IÃÇ÷KÑ D’ó:î¦a¦Tù¤áÓÞX[Y[/Ê ’sD—†CþgÔïÁ]–•½ D4Gtiø7ÿƒ2|£iÌLñÀT "9¢‹·!Iƒx»³eë˜B IäFÛ*O‹œ¤a¾Š÷ÏTØ"'r.³U')y¤:9yׯÒ ¸/|œ­¼ÄSmoe¶f‘!‘”béû# Y¥{„×mÿÿôûäƒäÌÓeÑ߬Íõ¤¥×—+ɉggÇþä7Þ‡VíH@%wK{n˰Xœ è"Ð ÿÂÃ,½,÷˜­BÁE@ Šå™[HBËW3ÌTÎK£|ÂÚüG#à"它M©øý›âú×5Ïj’üëf’³`~Ę™ZReO妩ï@Í@@$y}§Z)™„ÄŒ6Ĩ?ªP I8]®f« 0r>‰‡>F«7‡ü¶œÓõêa¶ê#e•íØí¶_L~ïüºï~†5xò7)ñdÆ:Ê’*ë!=…²îkûÛ³¿° kr˳·-9h.ËΔç*jÒÛV:èyØüžFÅ4 ýMmÁ¼âšœ 30‹Y­e"ÓIZ>¯þŽ57‘Ì÷ô¤lÔUú1éáÕu®Éë£ø²Uïž”ŽâÉNl |Â6%69eåKfêeïÄlÔ^\Ûœ÷1m½†Y¨d¬Ü=ãli®›VŒOîž{`´fHØÖ íœü¾Uü$¶(+¸¸ÆgeUà%I~M„Ì…è9j¶fOP/IöëÉNHm-Ùi=>E³5?Ên¢I9ý}aG1…ú¿û rüóˆÿIÊêu£L½$»1µgºn´ÿ &.PNY1ÈV ¤|ŽpÆñ0¼Ì¸@’²òý3¥RHm]ë·‰‹Õr=('ážœþò‰ÆÜÖž¨_®jAºÏõϼGó_WûCrûag©MG7[+Ù¨I€ßÔþ¡BÖ¸xÅn[¦œXPšœÅºÜ?ÌÖËš*Dú“í-í{†ÓhË74ÎÖKþ3Tôõ¶m õî(Širë€o”)UüC® ɼ™oUâ#é°WP„\’ÿÅʰéè·l+òÉù0¿pLvÑ*‹¾˜fkwZ0Ÿ”÷/KÿcŠ ¾L™)µ‘,–éï(Kõjª=ÏÉg%÷ˆ¦@6’źÞ?ÊT-c¤´“³&F_íP¦‹Rb#©­Ã½a¶¦?ÿã¿Ö›—TìvÊî7ÍsøÐv8qùR¡˜<À•!ih píÍP‰$Áxþ7õöftì(«tbŒp"IÏ™4ÆÜûÃqYÜcK”* (ç玅fÛöÓ÷…]Û¸þù¶\,[¿mi]§*ÞI¨oŒa¦ê‘ÒzHú«Öý¢¾‚ïäÌßk$F™Êù;šA6+>:LjÙ}`Wæ;’ã¶Ug81ƒ·”þ\ì]mw¸˜»ß;”š¯àíf’å㳎3¥¥ØËiÑ £¨©ß‹&`+/¹9OXÀVÎó™ÐÅÞ"Ð%3°Å-Wda9Ïÿ ‹y7J.¾|;`¼É"“-ÉÍŸòA¶ÚÇ<Î?ýçÃÄbâ'ë5ëí­Z)ØÊ¹¹¿¤Q¦^²ú˜wÛJxÄÙ n*![’šs 3Uäôqí @ÄÛìmÊ·Ï”ÑþÌÄF Éòë‘Á£@ùn÷îŽ×2“,ŸÁþraßµýË9ûæQ¡u·±¸Q \¤tO­I€¨59ðõæûè¯Y œ¦‡ Îük‹ýw ádåä¹…,!o?]}IÜL2}¯.eªÞš)‰Ç†™Iü|úP1åf’èó³U§K1‹·EßÖ“CDJ¦Ü,gúî G™ªê?~€€×œX]GŸV˜,C>Ñ]6Á–·j(&ËЀ«>$ˆ :->ܸÆ“ehP†)‰GÙÆÄKã×é™ÿ“ÙVÎóé4†™Ê+Þ @Bê²1t›ï>* “-Íò½d˜­:gŠ)¼×ÀaJK[¾ÔP„lI–Ï·?Ê’–ü²¯þ˜q\̽zP™ð/ÿ,åv}Lyñ`&dŠ ˜ F€ñ²]ÜlM½VP™à_ì –§! ¤ð‘üA™ ó,/C-Ió½d”©Ò½çK·-#õÛv„iå<Ÿ¯gœ­ZüI9< æÍá•SOhjIšÏ÷?̔ւ„µ ø†û|]Î{•e ൠ!ÇG-Èj¦X Qð±Ì¼L äøh‘çIóuvÜ«|,s_ðëú‡?{5HÈÌQÃkavh•¸VNÞ½d¥z¹§¼5 >ø¶oékåÜÝ«AF™Êi9H%èR[{û3ÕOøUNÝGÛ’•ƒs8£—VBhV. àÿÂbÎß>û1ãd8ž 1ëáÙœIØLÊÆÙ¢ùÁ÷ÍïÖKÒ¹gÆs™1xeLnÈl¶ª‚g˜}¤s|WîXêí'?çÚÞ†¶ú.H)›iëo¬Q0µÈÝ|µ´•gjŸÈvñ ejò*p$ƒúÒa…½/Û—¾œ·àuÂ3¼:h”©X–ÃnË€ˆ‹›Wžð _Z£L½lÖÈ*Œ^lHZ“ÆJ£â%žÁ½:ÌTBâÊ1Û-ô˜vž{8Pš¥z[vÏœSÐH]y¸*6TtÎ×ÒïASÖ˜ÙˆW Xa¯«-쎠;§‚6f ÁP> ϻܩÌ>p¡ ht|Ñ›]¿l1!¯òqáÄKzf áC£LUÉ\æ ¨ñ¹øwŸ*åƒAð 3Õ²æµÿ#wŒEjq×çk·ß æüô§–Vo…“U‰G'Wö›Gª˜Hä¶.N ³!™‡/÷Ì…mŠŒ³õ}«ß¸>$&=–ïC°ëgJ³'ÄÇR‰p‰­ 鶃x>o[yÿVüRðË#ÕàC†ÈdÌ[3çke¸PÌÀ8Ó—OïÒy?vü|óø²íKpþFûÍÁ<÷?¿OtåeBÛÁb±üŒžèÊvPÈ>>cû“)¡)Œ—KÙ3œXÙ#°U°“c†€”ÐfÂv?ëo&âVØ*Ø©C¦?ýG«‘¡`jåâ³b{v– Í´Èk¯F™ª=SA^nôá©8R:*°È)à0[ß•ù³án6fòÛÖ×VPZ‡¶2Û›*ÅÈþóÆ®"`Â1µÛ6>0µžC™kbPO‰ìKU5תòj.8ƒí£»Í4+<×í\m§£»«oΰ]ŸG»Ÿ{ pÆíj20Fžãö0 ÎÌ‘H`¶5gtàî9²Ñ¹ Â’õ­yýáÏ^ °•×B`˜È₸R\![^!6ÊÔw±ÇÕ÷|1séÓûz«Û;ÙgM'®¸rda€—‹G ›ß-tXy™× ³U“¶Ã>ìô›qÐïœ\â Ì\VeJëÎW³ b£øl7œÈÁþ­`sfo^w¸š=Ы ¦x´gÖ¬èÛ(b5L 9¸ûõìkôÖÉ2B¹eêÎ ³µ¿¾öWÔ«U€8ñ2fYúz¶WaÁm¼q,»º¯c;VN"\½Õ8»º×=”jмZŲ%®reΙÂyEÕ0[u.Ÿ¸›-„ % ‡qdÞüªÐYØœËÃl=ï+¹8/ÎGD°Mý|¡Ó‹.Ôãp9ÿä|­ªú-°A¸éÕžÝnˆ‹%"JÆ…¾ˆÄóŒðíL4l\&Ó\ œmÚÐÒtñ óÃóhKhadƒ>&éðçàžD°¾ðC2?Œßw÷$‚õ ºoÙàñÛO÷-èÙ¶®~¯x?½à.Ãx~ô.ãl .ŒpU3;YÆq±á¡@<+\È÷€Þ‡s|ðÉ[ä|x-_ýýèb†™*SˆôÐß»±€µýÃ+çH)üÏÐÏWÖ0[âb’üy–µvºH[ 9‘þ ‰Œ°ÐV„]ÿa³å§Lvþ P$ŠgKYdZ–f¼™tÆ2ÍÒhÍHÝŸŠLÖŽ:¢Â‘ìí»?Q…"“I®ƒHrµˆ×:¨ óš‰B¢Èd24ñXAÅØÌ;âÚß›~8G:Vì›4G‚ŠGÛCðÜ'ädzË|ÇH—qàj·kÌ<ÉùmU­HŠF×9†™¿¬%©;'Ú“HÊTøÈœö/2G§ÈLûRÔã*Èb…°Õ§Þsˆ%sXëŸþ³»­ˆM}‰!ÌjÎùô%–µŠŒV½Øs”©vé&ă¥6u!ïT©"P²Óq¶´$ó—hbLÓŸ+IU™êI”Éžñ„Sv=žeBè3¿Hö,ókÿÖtÓVÇ”• ¡Ñ—DÏá¡(oý9ytt_=¼âî%tS¿ÿ¼éô¡¨Òûû›_XŸžå S ôòÌQ¦Ê½”8߇ù2 à»B@ ßû C5ê‹8®ï°ðþø^ò¨B‚ ;n£a¦ªºÌ/Ús% y{Ûd}¢døç5,·ç9 ç®,ö‰®›ûÑóQ’ºð Ý_š‡úÎÓŽ†fjò¯[ÀøLü¸#͈Y¿ˆÞ¿5O_Ryy¥Ôí‚ð3¶—²ØÈ¼ låBæËÔ]°cŠa¦r^šè3ñ¢¨yç}Ä¥È|Mœ@¾x—y¸fâòö5ïvê.LÌëm‡Ùª}@ä]ÐmpC¼]GÍ·.È]ˆ—Ô(K²ÿ#7C.êâ›_ »€µ¿`´ºŒ·°Z„`—}+Ï0Œmœ­£…åDÇcsöËW+«A\~ìÎì"W««z3óõ‡±Ï,(Ƚp5r‰ÈÌ>œÞO§2÷É‹Bî…«½”õF"e® E’Øø³þжgjEÜ5Ζð®H·P+¶yl5±0¢ ÷BÀ^aâ3± P„>Š×3l|‡é‰ÒýÔ%·7ã7t Ï Ï+œY*yFÀt^5~ÜŒ,Ö³/„DÄ3Êóúæ1†j’‘(æ`ðÓa÷Qú8ááBòˆÇÙÒjá_äåc²YùóÖ§}*ZÏTO3b:ÔÌ‚³Ã‡§+Y”çè&`:ïÍ]`kóLJɺ <ßîÕ8‚ˆØPêÚ;{×~E—`kÁp\îãl½,øˆØPìzioö&×ÏìZœ£Õ1†7Ÿœ:ÜüÂb9yt¸›ONÝ;×^÷âBYU”¨{>ƒt†¥ØR ñDö¸®†™ÒºÙ½n¤ÍΜ»‹‹t=1B潦,/žŒŸ,$Yìo ö ¸ž|‡H%Úû¶ûìüCQn-èzÂÎx%ã™P"5osïV¸žIbGéiTB„p(œZ8y²cÁŠgPGÀ7ÌÔô3ôñ‡ñE ‡:T’iÕ՜𙑸’:'¶Ãl•ù}¢pŸïøËÆûˆÏŒÄ…Ôq猳¥E­è¡¨õ²ÉkVcᬂ×ú½gù –ÛP´rØô;Öµ>AÖn­cù”€:<†¶òcH@¹‡Õ„à9p¦h ý’Þù` d§CÞøÃK:ñoµwÇ?˜8¡QÀË‘˜ˆ‰” ±ùFÀŸÈJsgŽ7gú¼Ô'øGï9Ê’@À1®5½¨­àäª e2E|w+ ìá ½XÉÚ^s°BÈðØpœ­2½hÏLwû‚ÿÿñPeI+q¿GÀÌÌp=|ඪÿ¢D°g¨Ïn˜·<ûX(#*øöGÉ`˜©†åh¦—‹þd›µ›h¾OGfŠXbà =·j´Ú=biQ'$zf€„(ï½)5®;³ÿBÈñ¥º7r=R³¥ ÀB¼\%at+ãl 5ŒŒÐ<ËŒÆÛ#Ø8ΤÐ'2F|Ó$ØûpÐãêÜ£‡TUøçŽÃlÕ‰NB{˜Ø²ã¸²;‰|`mÒ2ûã²dHüJ„Þg 0¶öË­³@‘ â_xa$z¶c'œümïo>;KE¡~ä…ãliñm ƒ(3Cª„‡0}$!!D¾¨HñŒÂxãë¼ú=º… ¤Ï@.’è ¥­¯Ý˜¼"¢€ÿ‚çöÆÙ9ž%¥Ö.„ÀoæbUAPß›jÈ›¶Þ7¿ˆÏLö/t.ÔÈþŸ›ú=«~väoX ;B7;ýûIþ £ãºgKdƒ£é ûêû_DI×ÿ #ÖÃ\Fj‹í/˜ðŸÑ¡á8[ #Dù-Fá1xS‡h½ü6@B”ß^p—›£ Ö/ ÑlÍÚG3×µ{á#OêÕSh+(Æß®˜|äö¾âÚœy¦múéâãiQÚI%€_˜gÌöbngY |ûÙ»ýˆ.1·Ãܶ=±|»Û • ¢M¯îÅEŒV·ª{Ú/ôÓ …G™ÊþdõJáÀ6?OÑöÏô+eþ‘z¥ðC5ÞLÒ‡AÁUS¯Ú/”’[~œ­ªVøgº¨ƒ*«ï¥."$âÉÇ$(´Ç‹ßîPI™S:– Ò°TsÏv›Ål·³žW¥ƒ *ß…‚DQ€æ}Ú}´?F¯óe*3„Õë|<íEsN8zÒ‚÷gÀèu¾ÃlÕh2ÂC¸?ÏýÏ¥æ4/€‘k`œ--ôý‘¨óÝy”Û)ùÔùFÌ/°’d{6ëɼ–Wcl6H¶N2ûôG-௔3rH#“&|·ßL\:«ÝhgÕswµ²JRÎq¶„rF¦‰zgŒ´Â#eˆÊ=‰~èㇳJíáµÇŠ.ÒB¡@Ùõˆ4º# CT ïŽË6ª‚`Enúa¦HFþˆ ¢=~¿¢ŸŒ(ÿâM"3üðÎ!%½1Kå åŠô&ãlÕD2rC;lب­×s÷ËU ¹"³E.ªq¶„D iîļº½°É³dU>2¨ü – äÐ6í2“î‹×\bE¦‹Ä’ÃL)–ŒkÒ–í±’eõÒöϯ …×{DHeéZ"…´UÖ¼þzñùÎ; ’J&•\‘BšwÙfZo¯¬ß¤õÿ³ö.i²ë:’n¿F±F°?½%GNãøü»—0%Îe£<+#cc…ë‚öÀ?’Lé©E ÒA6„«ye†˜¶{~Z"¢,rEJRK ѵ½²yå>4§ÀI¤ü[’lãéŽ?ËvZ»óˆÌ,DZ¤(9.V-JFåÐ˪TÔÞ#Ü"©‹|¦’´%ÈïݱÒî–÷)$Ê”qwhÁóizö½]qÛˆßôWîܸ ÿÒ˜äHÌAåÞ2Šà«,DKf«a¡DêŒÂ&® gMÚ¥îù8~ˆøII* ›îdEnïê`?Düô´r@5::ëHb$\ͨ.Q³R-ˆE,)uŽ‹%Rg6acãÑoó¼»ûDᇈŸ¿1jR$alöÖCoÍþeYµ¤Ü9.Ö½3*’ö@|pÛQWtej!š¥?Zƒ"‰Öù’6ávêdÃwnþÈòço±3É‘¶Ì´[½YF´ùÞש…H–äãb‰òµMø£OnYúààŠ€dý“ÚGÔ6¿<ˆëÜ‹£? ’õÏ[íLz$üÆ“ÿdõñË *D³ä{?.–¼÷QÛ´¿íí dötQ@,þ@I5ìvãwo*²²HIrX(ËLË¿þyK’Q7Äíß¹n¥ÛÇo¿€Š¬-òQK^û¨LØ Ðž<à¦yöÁ‰zdéâ½3*’àÝØÛ´÷²>¢ZRïK'&}Ó­Ñx­j$Þî‘5ÐêuHz'FO¬˜ j‘;áÈD4чy¬Àµè"ÃøóÅŽíA¹s­~†œ’‹D7:óK˜G”f¿œ|‚m][P‘o»X[L1 z*ŒØ“¿«³ŸL ˆA4Wf‚a¡~d‚(§Ú#°o|3M£÷Z(ƒH®.¨‹UеINEöÆLX¬¤ÓÝÅ–8C–\ùÆŽ‹¥olRgÝ„=ÙJ=ÿÝ'&h‘Ü÷^(ï|ÐÕÀ×aíãT¹Ê;Ü…Ó"ÂMÕ'H×ÚmTWÛzuÍÉì÷x ®ýÀ„›Ê^Q`©ÝŽ‹%KTjNê²&øó¡’“Å\WÙÞZ-D6¿zSß  'ë¹]½ý÷ÌõU«ZýŠØ›;¹û/q‘`©Ý •3aRjmǺ­|V¦Ý§~²XRsf—,¯Be_íV£Ðßÿ tT‚¥x;.V-°$}Í>õÕãðBF‰Žh°dAãbé%¨µð©ŸÜëL}?¤|(+ºÕ‹µòbAØYyÛhûÏú -ŠDéO8åÛ/aÍf?iϽŠxDâe‚«‡ãCo/nÅ• òhS|1zÑzÿUrq™¼¢lq[ÑQOõ$EQª3{E-ؤ¼MшµÜ'çåâþ„e|p-ãÌ'—蕪•%…—Òð˜8¢ G›ì‹Ùý>©K!”(Å¿óV’ní&Yß™ž :Êò.…áq±jý&É·–kìjBdü°ø/Ø‘H¼eŽŠ¥y+ÉÁ¾Ž!MMŽD‰`«¢Xaóá”ðiçÂß«¢X¡~Úi´o¯ú3ù¼Rˆ£ˆ‹\€Ü×Íá'b)—ÊB/âa¡D!Žz0Ìð«Ý¦ÝBòf ÅPY3¦Œõ`K+vtÞÁX³O$ •5c6\Ë힣5\ìé1tÍYîSÌøHd^f—a¡D'Šr0&ópÙ›Ú¿EóN¢²düG‚‰î—C¯ùßÝÜYà#Qy™_†…ªíkQÂÅ”&éQ·øŠ’ùQRyùX T$–¨ÃOg•©ë{zÚ›EeÍø…8j¸ÞÂ9ÖYèCu„õd— ñ¸Xz%’"Œ‡¦ºv%N¯ ‰j\½I 6ﰬȜò  I4dÿ³9øâöÇy×ÊÎsá¼Ïä§·*ú ˜âñ¸X’¢T S#å¶+ÐËRŽ”åä? Q”x¡ó]žÎbèGd`B£q±jÝ(i¼xv›jü* þˆ ̼0,”èÇQ-†G™°Ý±½ŸØ-,)*Ê¿ä$ñ~Ùg9áÕžý(6…?"3)Œ‹UÈQ.†Mžu×d‚’DR.ä¨Û½kOU{©Zh/\ ²$šr,êb  Û!Ö¯óUÓÅ ÿøLUͺRø›¦£t ýäÏÏìÄ´€LY^¦0=.–ÓQ†¶ ³ÀŒ«éÃTXe©úŸŠÊ1|î8”åÒk vÀL¢.S–ë‡.•c´clœOyÊ™D]¦.=.–(&QGïân!ó‰2«¬¡ü–¼£(Qn»š- lýÈAM"\Sò«È1Aà~€e»³W`µÊ"øoå(‰Ç&'Û()û:maeÿ€M03•չМf\ˆ±$!-—¿À“s¤±e±új3E'l¾YÍ,-eò&^.¿)KèÌ_Ù±$oEÑC9V ¶¯=¹Ï=#6Ö;P{u?8PKz÷—2âþÜé¦cI§˜>,”ˆéQ:G=G_N—ë]…Š(òz®ýóVÓ£ÞmO×Âã˜må™ùt)qËš8Õôq±~¨éQïþrÜÇÙåú¹eMœjú¸X…šÅso®0Ò;Ù´Âÿ+èÈëHÞQ”¶d3ÓšeF]ç`BÆD¸¦ä=.V!yÇGÓôtô¹’¹œnÄ£ÊêrzÒÀKÅ;êÛÞhÒÉtÞ홞Jà”'£¼ yòDZ±ÕÚ!м,w\—š-^Ê4ú#f×Lü`©º‰zÍ 3(¨ÞQã†p°Br³/OY®ÀwYÿ#¿D]³w0±ïµsSíšùe\¬ZõNº´= 5-«]8F@™›h×Ì/ãbâTиÑlqúª°{…X𻤃—µ§u‰S~በ«1­…y‹­+Šïâ+3W×½£4Sît,~ÄvEܲzMÝ{X(I.QåF³€vn¬€-+áÌ.Qå6…’Ïl‹µú(×°e%܃Üp¤iHxñ†P”MlL´kŠÞcâHr‰ú¶ >¿|º–[€ÈM4ð?ï JÃÁ~ýç…¥Ÿ XLtk Þ£"ÕzwT¥ÁTO>™we¡LL”k>PÃBi%*ÜXh>T^Zw­}¡ xMDðß’w¥¿Ž·ñÊúñ˜¼ᚯÿ¸X…än<F· á|UX˜ˆàA‚Ђɋ·é3s]u * Nö›<ú¤~ºÍVQIºù—ÇÄšiu2𳦏‰¶îWãÀ³{<Ž v[~h¥ÀÌ"ž)$Ëz8•ôQ‘DGª9̲3ÚóMù냦2neýwªIR7:&v{6Ðd}°7FYVé£ õCFJ7æŽas.ÌŒ,+á”Ї„Ñw+Éåh½XPªØT‰ƒ9EQ[–ÔÿÐУÊýåè7 ‹6Q„5­à1Q©¡‹Uè[Q1GóJ´éìù Ò–Eõ’«EÁÜSÈÅÈ_ª -Kê·b”´h« W ÐÁ,-Â.b"W3 % ªÚ¶Ÿß7|ÃópÞY µ,|ÿ&iI‹~µOØVƒ5‚ò0Ñ«©t‹Uû¿ùÛÜ}ÇËz5•îq±„¥E]f‹Öœ©U.èšhß…`Ô| Z4,hdnïªû +&–õj*ÝãbÕí/ahu6¬]ˆÍ§á*_ñû©;ŠÑí¯ÿØéÆö×/·<Ýòô/³âbÅÁšR÷¸X"uGeÛ½Wv6—]‡‰O–À@Q¿ïÌ•ÔhÓ§Û-‚>` 'Ì7BÚD±&£K´î¨l9 ?i_Ǿ(µõ»‡.&[E9ÚsÔ½Ò%'¬Mkæ®a¡DëŽÊ¶mè) ·«à“ßU>ñû¤ÅhØõâ¸sqºB<¬™ÇÅ &*.˜Æ¸{.ð±uUæ·Šžtn[)íXM`¨Ë×QŠ'Z8³â¸XuËË£™£ãee òöVø¡Z¶F~8FùÂĨ®ÏgU½Ô¹¢dî¼[$íQXc’հت]ôÉí-‹AD±³±Ch?AïABì`q\,I¶Q݇0;ñòY=CŒ¨¨1€.øÿ ý9A–‡™‡uY]w:õËdP¤{*þãbI¢?fJ On7ï3'¾˜1c€"Ó¶,…+Êòh«ñJ;‚˜VFƒ*ÝSô«Öæ’,Åw†&a#.ü”LE¹§æ?,TÕ ~tè˜BÒîÙ墬0Fa¿…ù¨Iøp•—£S@á‚¢¯“( ¥W! ñètÙlJênÄL,$PÅú(ÌEÖôÅŸ¹¹¦+sQ‡³­P[‰NºMþU²\û-¶Ÿ 7‡÷(n Ð/Fꨉ*ý—ø¹šFÕD9aÐñ©þ #â”ú]9Á½kß|ñn™5 ød¢B˜ƒM¿†£|fŸêÿ°P–\ðráó–ÿ£DoyaF«th_`”fßqõ°Xˆr?ÓW†½Ÿ0$¨1#²ª7>ä&@QøYNf«>æ¿bGþ‰¢øÍÇ—éZÄ™  Yª # ¥æD½:Ý'а1£†Ró‹‚¿¥š–o‘|ÌD ì1Cÿ»wìö›4™Þ„šõb™¹¦`†YÊg¶INüM i÷ÂŽ3µ­ÙÇG‚ ÌPà·•!©ôèƒX™7&?lG¨aÖñ™n ‚¼Ýï dgçȳh?2NÕD”}Ë'ˇwÀÎFôvMAŒYýÿ­õ'5Íæ¨ŽÛ›¹ø¦à‚Y±ç{?.VÕDóVöqË1ù‚5«"FQÿË÷>(ûàŠŸÿp…'* Ìâ¿ÿÍŸÅ·Çž³ƒ4o)›‡Pb¸Ì³£3¾õž²ÿ¨H¢úßíǶO›öïW øûE]ÂìÇe¤«‰¬Nèh÷ä~ãbÕWÒå¿<+é6£Ü§ð†'Â=Ñß @ü‹ú>¬&ŸñÝ'«8PÀOÅ?iò¶œ'†LREUz'š=¹ß˜8UßLÐõí!èÛë&æC) Hÿ¿E­$Å›8ßÂ,– æÉWÁ3`ߥµ×`\(‘ù£¨oÏW{Iýøó$¼2ËþÈexæ}×m½<ì”Ș…zJü£"‰æå|ËS½î°! ”IWfÅÿ8$xtÎô<²ôÖ+!Œ"ÓSß*_„¤æ[]íV¯i÷#Ù*m3)þÅ£Ï aVàѺå2C[mˆ ]ŠJO}\,Ù E5¿ ]yz^ƒfÅÿ}?*ð–»úîoý°²(Ø¥¨ôÔ÷ÇŪú{‚œïüƒÕ{³î•ÿ•4Kþ(üA„·Æã[ºZ½Pt)B=þa¡ …?>ôF&LÔA3¹b†^m(´µæ_&Ú¨çcnÒçŽÿIL%„U4ÿGâ"¼%ÈùòáZ·,/TT„zJüãbÝR^î¾<¤õ:Xh>‡ÝŽÎ&6«÷“ÀUÉKÓ—v^G¾Šl…"økPL÷KÚ>:ˆfæážu³fõŸÜ`T$¡‘`ÎzËÚ5ðIÛ°Žð3g]8êCë_¿ýeÍÚ?©Á¸X’¿£nÃI1hB¥=»Ž‹%L# (Ð'îVü³±@ª™rt€ ŸJûìS/ô`zÑæùûšûnÁ ‚'˜GE’D9†%™ߟ߶ª™uü‘#}@ŸÓ~7L¯ÞË– ¨ &Âq±j¶‘èÃ÷5qÐÆÏ\@Á|5,TÕ18Z¦v´ZµCñEjF¿ùCB_MlæOdWš1SÖ°PEÊŠ´­M'óôvÒ)RÕL$Ê´ij/Wv·ƒbV?…Høß;"$€n´pÑln2µŒ@þ0*’ð‡Hl«t!pûþ>/»@ B$~§… LB¶LöÒà l™9ùà@µ ™è=Ÿ‰ÒØmWd)„`b\¬"%Dn§›®Z¸Bdú)´â½ÿXì m&£3Øb%Äîï癸Øäïý$ãàyY+O/zº“e²`†ëE™Œ­¶P¡ôì\…U#zý§Dàs=oñý¢ÂP"Ä)ãbU Zž A .XÜ%rí®·™Š¦ŒŠ$ *²˜Î¹p·Eƒ—M1pÆ+¿™o.Kc`‘ãÿ«À­0”a¡¦Dtb›Skí·¤Ï$­*²à•¨ž­ƒPfÞŒãbNwõ4É¥_XàåL‘\Bš„Qð°®<±¦}¶‘ kÒ”:,T®³ùò°âåâÅ¥#I°µ0›ß„&1[a÷™í>'òfa,L©câÔýh/«»üí¨rö' ¶Tó¥ŽðÄpJ{ö0”·å|¢,`s,Ì«ãb)šI¯É‡6ªmçâJâÚé²6ùÉ6³š’ÌDcuÛZ},Œ™Œ™£3TódíˆNlgàg—Ùÿ¤‹@X¶Ð¦ía¡¡¼€‰%mîmÇÐP P(.P%ÆíEJbhJ;™yû;cfìAD4Œ¬“°V,HíÛS (hxÆ)•8°;é xãû̱·[ƒ¡ÂBø=.–À“ˆJ0J“YÛuØ|«8\pÊox‡=dVGl¬*ýNØ‚Aˆ¾GEªÛ-ñζ“á) Ï@å7?IˆÃ²V»‚²7õÖwå׃{ Uˆ‘‘–ÒLpkßj¼:•‡ŸDÂaÌãD·–-‡ÈR˜ž $ 0r«°Úpâé_\"ÍT9ƒ”Î_-¹¨fÀóþbUÀ«¼, „ìdX(Ƀ•|y6kk_P•+ Nù™3Þp(‡mV?YP°²“a¡DÈ‹²öFWƒ¾e/ rVö‚ô¸·œ‰úêmÙ6êú¸r+DZ±\ù\}̲m4f×"{í^¡žHc°„÷ xüç‡ÙEœq 9Ϙ8÷WOßÔ¾ÑzñuýœäFý»‡ojywÞ¹æšÃºï[´õ."´ÞmL×]_PþaR¼Yí?äù„¶oýæ»÷ü½íñ:°­:|æ@º{}£U©ÈŒ,q[z¶‹:}þ󱞙„ V"ªjè ø }惥W›BÕQÝk€ Vû› •e±~UÆ33K<¢rùGL¡Ø—'aï¼tõByº€³~5sG`@Y˜­tØUÄ)ÐÓ´rðˆ»ˆÉFEL¡˜-m1µWpéºEÓ37ûÿ#˲çi™IŒÚ3Ãþ*àw“Šô$ª˜–Ü\‹÷¦ýÏý…‡R^úrØËénàí9Zªào‘Y‘Ѫ©ÅëTT¬ž!ñÛ°PU«á›µy{ûŽçà¼ñ{&ôÂãÂåÝZ–Ä@kà™–!Ï>iµ?NŸÅ-\)ÑúÕ­YdX¶Ûª íÙçò×gÎEB6.VÕixšZQšîë ûÏ̬LaˆY ³cìn¶Ìç KÙ†fñÕˆ/—žò~7·ãõjÄÁg%áÉ1£ü§/â;n[ûì§*:Mo¾a-7žb€Fô6,”$ÇÚLгO'¯ììS³«@`Ü‚HÇЇ¶s"¦IèÐrÄ ³ã¨H„¹q„Í´+û} ì/°lt¬‚´E®†nƃREß肌ÞJ¡qYÀõy ¡In>ÚËEVÿJú“à„—`›­¹íAŽšwßV+œ Ǥ5.V‘´"¸³‡jŸé“¸-UÐ/p/P10ïÅ—íc ã݇‡§$´w_x_m 붆ð À¸üÜ koO;ØÁ囎´üdX‚K‘á áÂöÇ´©•KNØ7[­ìªÎhÒ@´K12–°ÇˆÑ*x²tY|ï¦þ‰L#ïê=Bx«¯¹œà6¡ˆÌÒãb½V©°&ÙÚcCz}xÈõ*1ÒšôåW(zæ½XÿU=c¢ÙfáÎgáAo…CHçO3CböÇ·ºu÷©³[#²{Bø$}ÃB)sI Ó¶›- ¢˜°ô@Ä¢&ÃÎßZyÄ„_ÎAÆ\¶Í„-Ì‚É ‡…zZ®°5j™Õ)Ž?PmŽ‹U Íø AÙ?èhI†¡®ïÉlT= v–l3’L´÷r‹?z{¯:Tì|Ðf¤_>uõ¤-Æ’ (I6GE’¼I¦ šXÒ¾ñÕÛ{Å¢’a玔À ±7ÂiÀ/áA|%‚)‰7GE?J ™˜R8c0§ <83G *B<ÿà›‘@zË8ò˜üøNqdFIº9*’°ÍH2-±R2Ã5ðÁâ#ɰó´¤û2!¾´R‹öÙÂÿ‘!%áæ¸Xu_ï3azZñì÷óa 7IÆÀÍÈÍïáž›?Ðï¡Ì(I7ÇÅ’Ëa&šo?–FÛ…è'ùªéC€çƒ7_ Òr—I5ØRùYª•O#sJâÍAoF˜ùåˆbìÕæÝ{‹Õôg«3ŒDÏe å•»Ô¬‘ %鿍HwÍ–v¨ö\n°ôš-í¾òƒiG¬âª}AB¤˜H¶Ú»Ù.ìÆ´¡v¡¨0Ó€5íA]jŒûz7Ëfˆ O2Óa¡$½BjÅ®O·œÚµ@qRxI„¢FÁxöœwùiSÿlá׋ۮsï4$lê3ÓH6­2Øg*ƒËáU¬Kýdƨjæ}ÃL4󮞦VŸð'öáýáRY¡•™L¨ÆÑXL–á‰L×ÃBUͼ;Ú“Û*j«ÏæÅ—?q§(™|’õ ;lWh°Ÿš” %™¨ñ>ÒFKÒmw=ãvÏ>¿£p¥d"é1wïFFˆ®Ûi³;ˆ #‰`D&éa¡$›Þhf«½¸JM¬ñ+OJf’dÓ€ A´gšnwg!â#Q’Èd:*’øO¢¼ŒÐiÿ®P²#EèBiêN‘€ 1+Ã[òz¡–!‰ôŠŒŠTµàˆ2ÒË>MŸîë£Gf’aAI«¾­î³ßÂËûzW}(Ýöx?¿db„îü#œ|6ú3#ÒØ1,T‘O#m´‡·Ëëv¾+jõÈDò1vØVÁü;Ôäo2-Ñ&0${FòotWLj(’R#ý4npø´»GMBHý:®¸Ùëy«uo´èj“ÂÎA…3Cð#=ÃB ·Œ”òÖêÚ8»…/»<„cþáéˆdË;'ý›Ñ”‰0›32|$µéÁK&Y†jï&‚Ú*ú “07cæ#p\¯–ߢk&AL´æ´ÿß?L(á6Uœ‚9 HGEªú© E?5{®ÚCEv§ÌK3ÌH±rÀ`¯,õ$±O‰$ë`˜‘Xâ[¸YkÁÝ$*V ¡šùmp*¹Ý÷ÿmó§Ñ1·÷é¸mjÐÖÚ~ç`ÎR¶G*8.–PÁÀÑì:q’FÛþÒ&TXF2'ôë{u ·Šçó&ºV;†p>ÂQ‘žõ?®öXÕ7³:y½œqµÇCrp8>ÌÅ*DhIÖt8^Tö÷n‘ gÙ„ð b|\ Ÿ}y,<ó‘Ž‹U‹ˆ±\?[?2˜ü!(´¼u!ƒµ¸ñ^©[Ca"}ãb2BG¶ñ­7ŒáS–í‚%Ÿ$a!&\]œÒÒ~ÂT%® á‰Ì‚ÃBÝUœUbKo¾cÝÏCtZuÑû“O98âLK¯ v𸖳Ÿm)ÎŒ<»Ñ£˜ã9$ÚÏwÂ2ëû¢)ŽÌ*™a‡…’ Ù£ížùB¶«p°ð«Ü‰OÀèð6C{`mHˆVüû_áØ¦H«Ç¨HÂ"#z„ó{° DÈGmeó‡àÉ($EÙ]‘'ÿ6;ðúiʲÎÆfÃ…™à'ŒÌÐþîhmYr™ûŽ1A„+HŽ‹UuÈéò|Æöÿüè×l*I²B’n!‰ØÐòíŒS;ÚKãã  #ˆ E2Éq±ŠÜ$h:ªÀv6–«…¥$SʨPD=â{.öP´®PDAýo»›t®žKÉ:—4PylÌ"Óæ#×ÔcÙ%qç˜8’µ#ßür0{{DÚU\}Ò†U„ö;„:ˆŸ}x{“èæ½¬âd-ëØ(L^’z %Ô3BNŒc\íUlWÁÛ W‰€ÐŸi;³It¾–¿¨O‰Dø%¹ç°P>#æô­WÛeã*0¾’„BÿŸ‘N¢BX”¬|寅q#L’Ïa¡ªŽö:ÑÑŽ­ÇfÓÉ‘G H†¡]„)eĈ¶ ƒTÙ2àìø«°n$ÒHD9*RA(#´×¾rKlvðˆ%ˆòʇN¾(¢AÅöjáO:6WËÔ»@#áä€ Â&#‰ïah_rr§˜@„VúL=•‰¢I|æøÖ£·ê«k##F²Éa¡D5$Òò^»Š»=ê—ùX@­üö?ôeº…½œÎ¹Å¶‘#áä°P…è%VÛlíPrqÜö)‘a+Y„ˆ2bDtÙÙ “Gˆu#£F&¾Q‘ª¦ó7„Új»òÂ"в2“li…àÖÞNî Ù˜Ñþõmã»È)œ"lþÄŸ PÚ¦«½)¬ ››´Ô¼!“9u\¬F؉¾s(–íŸÌZ…$óа3Jû [ ×ÝÁÆÂ^ò¾3 û tf7Á®¯’ÕR»q;±ë`¶mÿ4R©t‘m“3$YGzÎè½_#êM0ÖðìEAt¶™ñhÑœíÔZüŽÏóT` `,Y`"ÙÅ,PhVí~>¬°ÃdúëÓññ”ÒÏJ{óX“sÚ ^(~²}B,™Ø’ôމ#KKà¯Ð.wÔpÅ#ˆ¶J©þ*Ed ¯øE³I+zùæ¨}E°*×–q± †ñë×[$l·~y/tAuÑþÖÜÚDgöB·œ.‡ŠEè' 0ÃBU$Å€L{ØLÏåñ?ê‰Éõ7ÛLü{¸:‚Õ¾»$FA”´À Uuñ” ìs¸ Ø^žÁÀ͈-Yf±ZÙ6Å¥­^A”„›ãbü1àFo^Qoø¨’“‘ä½Éˆ”Ð; ðR÷i¾j`È|8*Ò­+%É–ýÝ«õÏëཬ!}9Ë‹®“à»è‹ÓòìŒÂ¿]ÆÅKxµÂ$Îé7è=7±û^"yD3ûÌ!ö•™Ž"t’¾—q±kJ-¹n>“6™UkÊþáIëÅ>ÔlV©.n£qŒaíêήÚþšŒP.c™jÚ[ð9¸mk,Í ê]òId:.VÕÿF¤ðÇ.–îq!èPRŒ`T¿ :Ø–îZ›Ox„ ÜBÒZLÀø,\")<6˜h•ùÉlêcÕˆç{K¶¯d´J$;*RÕ{,šïÛjaâÝ+|0ÒþÁd#55£ŠoæsýCMÔ¹’Á*‘ì°P…ªø«=à påö¹¨WŸJB´ÌÔ6öçÄÔ~B“­ØK2V%IÒw„¤è];íyÆf,>á¨~-w{|›èj_âõÁfj/øIl:.–pÓHI½Ûb¶'átÿwáU’ú8 pÏÕäwtï‘:L%8IÀiĤ葇̷ÙÔŠË{ä³S%“Ô¼a~Έ ­T0a{eë#B²¿$CJâÍQ‘êþøezü±ð°F(¬* wþ¦›‰?ÚnÌ\-¨hýØ'õ—(£d«Èƒfå9ðT´ëpxu,VáÑÿqoÚW7=$GÈ]*mçîxoç ¸ìyèf„X¹4µç’.õ­dNIÀ9,”0ÎH4Ñ…éº]ËÝKdõªõì÷©O•íòcÆ_o„[Þi±ð—dTIÆ9.–@Έ4-ÅÚa¦JR™U2ö,Þ­VnÈiÏlË § Ï~|zö˜ªdŽJ’lDšØÞáX:\…Å[å³_E°gÜß½ws@e3JåxMºK[9üšŸX²¹Ö)Sk$¶i5Âq‘d¶%qçé â/þÉÔ=.VÕ-@©·Ës_é©W¯Š°Ô¨oG5®ÝÙs]ߣ³œ  •óÕ»è~µFlŠiO(%S‚9S+‚Viyª€²/ îå`q›†Ú_¢}€l„§–jVm&ëðP{I¬”ø‡…’¬Q¬ÝN\Z|cU…U%ÓZ¿òTûì­øŸÂàx2ïíÄ_­æ’ŒX™°‡…*¨YŠaÿÇ03ˉÌѲ”\.‘òÚ6–‡Ÿm–º?h";`„ÿ\ 2›…’uÜïñÎtm+Êoix«@¿ôb_÷a…mû»½ïë¢ F`ðè7òY Á¼…åñ{â]†Kø;.VÕñh/*…ÙÜ”mäpå{á/bTËŒ3ì®-®ýP¾l_ÒJF;,TÕšÿ²èÌßù„X±LSApÂ(±}òl¤Æ?wLÅ:æyóåP,‘ˆ2Ë $|2ÒHðž-™íÛ^~( Zb„Xú•<»[ÛÃ7F´Íìþáðök¨‹EP#ý/£" £ŒHrÞjß©}ÿ“ûX5Ädjù; &ŠˆFVT¯D ´M‰‹EH#å¸X…åÖ/gšá®Ûùº³Ô“%ÙX¿Š`ÄÝçr×büµPã7žØà¿:F›ür¶ƒ¦ñÀµÇ$~Ið9,TÕú0'Zÿg‹´Ù:¶ùÙ Ùj“Qèà3°IÛÖm«/g?(A,,™_| UµþÌéÓ%ðªy÷‰ša„v'D z¶ëh,bail¶ÊÁÌ›µ0ªó$ºSâÊ€’)+­+ãb|6âX *øP6q7]åfÉÄö´‘¢b ÀÌRe[fdçIæ¬ä³ƒÉb¹©‰š7‰ïËÞ¯ÂÃ’ØjG©Ð‡øéŽ•;ûü£«Ö•¼úN2%JKgœØÁ‚2´Ë°º¾­ ¿•ø%aŠò“h–™+Ya;pIä9.VÕè'ýÁ17Óy/¦iñ°M¼zåY°fFLûÅ«vÝ.>Ÿ?àëÞÆ¤¬3I«iŽƒï;¡‰xYXr-§êîSMt÷oT¶û˜¶Â“Áçþ—€"M¶ÕÄæÞYjüв"&Á•´¿ Ud׈5ÑàŒ s³ëz78GCLFŸéŒ4Ò‰Š'ct K"–DÃB ëŒd]q›e«ö½n/Ü+™~þ6«$ù}ïØ­pœ°$êJHgäš–_y ÎöÙéª<&}þVá´ëà^ÑŽÞó>yñ…±dz«jÃpÆÓŸ†ýCCre2IÔ³ëez¹}ú††ƒ rÍl“äO.b§Ù‰Ç$ùPþb©‘wb¦ÛDQ·ý·×=Ô-:C2¥£dT¤ºÉÿ…NÑå¿Y Û®°ŸT¡¡«ÀÔˆ;-AšdKD«éA£Å¢D”,uX¨¥FrŠ&ÿm‹Ûe8ýS—I¦«wªXzN¶v=¤ð†º$óJÔóH8¿w|àÖ³×X]&vS PÔ†D&‰þù•ç!íçª3D°%í°P’h#ݴݬmBË çuŠÉDh QIÅ—¼|hÔúГŠöä•ùe¦p$4ªsÔˆ:í?mÛ Üòŧªå$ÓPbÔQ‘„¢Ff /Þ“íÓ«(Ì+ÂU#é‹\Ï2áâŒz.mÂzölÏ'ÇSÌ×}¤qMR#ë„[–ç#½1·f+‹àP‚Ôa¡ Ž©©wø¯¨6·?¾˜DV«Äí¼32I´cáõ–m¯>AE½,™[xŽ‹U¤îâÄ+ta±Ú·>B<1 ‚>Y;bIT[í'›S~1œ¹dÖJ²v œ¦BZîBÒ^½+N­+BAû¥,šñ#šüòlížl»—$ûM_|Ž‹%x2ÂHŒ X· Í]½zWX(ªãÉ!:_œe“Xøl©á$CFâÉq±r–M(;±Ã —ÅÇ~+ÿ€“¢JðÓ&¦N} {HFŒ„“ãb 1¢Hôä/” ìt‘ÿ«œ&B+²É„14sÇ®f¶ Ï÷áïj ɼ2š ­€[ùÞ±•>Ù"d?«½Íx÷’+ÒÏ<º´é›Úˆ&¡îÌxÖ_¨þL/I=‡…‰7 ºhI¼øª´•ur‰8M²èë2ᘚJH«nO°)¼%ªþNÕ‰rÚ3¿NÜ#µ/©ÁêQJ†:.Vá$‰ÄÔ6sÛ†äv¹}Uœ%ÂT«TMØ™xä—'9@ߟn˪¸A„Y2U‹UpóË〰±Ü|·]8K€þæ‰I~ï•èÎö“Å"Ü’N’q± âø&šýqP .ÄäÞ1—$ÚsvÆ–gg½ÃÐ9}ð…+$£JBÎq±´f”Ð Çjµ¯}ôwq™I|¸a„{[èÃs·>çJ ! ŽŠ$ä0rBhx3%]s繆—Œ%‚{ä×én=F¶÷½ûñ‡/d&âþÇ8.V!»F‘t‹*Ú¶Ý]{ÙX":ìot˜àž=[Ö½ˆ õì%Õ¸!–q± m;‚BK‚³‹üÛæW¹pd˜˜Wšå{±8ì\z0ù’® qnd^Çå{Lœ"ù¨‡Ç \¬]€Þ&þá~ }` (?ý•˜Ítgø]‡õ³=sf#ÿX‰hXÙÜѳá¸X/Î;½Áü ù œ^Ò¶K¢›á~ óSÇœEšõ£} »-m/0Û_XyA2­$æªÀœj¢'™ÀÁÎÓÊ®ÁžÏZA$ªwÈØ‡!}zËÕ "°’«Á¸XÂ9#Õ´õ`Å\€ísÉ^xK2ùŒÊsÔ™1ø®¹¾ŽÒI:3»¶k¢e±7º—•À8Ñ ïÓï²@}&ÂAéPJv/—bƒýaí¸Í| ÇŠ ÕŸ;ŽŒ8ma˜.ôñÞcDÕd"”ütX¨b‰‰°¶XÌ'ÞLÝy>•øU¨þ8#‡üòœ?ZVÿ[³%$ƒJÎA Àq&ZæñRlŸõã{,q—dâYì¹(—fiPòðÑ&ûÚíb ɘ’9vX¨B$4Ór,¾µ«à畹$ÏÇK!ä—£îfÊvtÔ"œ’^’a¡$Ǿp¦iÖ Î/L“º:K„xv¾ù¯PM]î‹Õc b“ÏWNfa”„›£" ÛŒ$óK‡Èa·Ó¨Qe̶Uä»1!ž¨‰í4w[IáÉ(‘ rX(9Ú þÁŒ‰v·<–’Œ%Ã2‘#¦–ÁBn~ÆÉd䈹 ›aΚú ñÂöé;¤éäÎwŸø®.öUñöZÊI¦jU‰v–'g)áLÒ¾Á±²R»ü “ *™·‡…*2wä™ðWm¼q3})êTÉÀó7ßLÒÎöâ-h‡9øwª¿D)%)ãb©û 4Q©¹Tºî|\ «Š@χqF ‰Mdžˬ޾ÿ‡IF•dœÃB ãŒHô~âZ½‘;YUyökYtâé=løI{*IfÕ^’!%ñæ°P’»#ËD—Ň{uí}øêTɼ³H{òŽüÑ«.ñ´ZˆÓ›³ D%s÷¨H’º#ÇÄæk¥Ãqõ)‚…£DXço²™Ø#ÚÆ1ó‡ˆ8Ô¯!|’Nq± ²8&:æR‚•î 뇠Îß`3²GK^mÝšÑâãÑ »†ðI’Íq± ´@¦=hóLâ:ßýíÉüPçÃ6#}´Ìe³w,—µP~¼ú52¡$ÛëV†¬£Ëæ­MŸ³kïÓFä`›ÇB¶ØÙE8mmš\D´ãâ.’|—)½FBjlÇá¡6ž|lRá*IÕoÒ†›´=ªæ›?¢Õ}á‘ò›ß¤Â"Œ’psX(1Dþh»Íö^~f&S±“£Œ¡ï䚉!üâ'nùMQˆREZGÆÅ*xä›>¢¯}æc°|\Q3‰Ê?xd$†_å(ÖGǨÿC "qä°PŒìËøÄâ¢]â‹éT¬$Oþ##.Ä€ÈÙÔ8èíPÿG&Šd‘ÃBé5’GL èżÍ^…“OŽ´Ðr؆%ù°î¤ùÂ"D‘9v\¬‚EFôÈcuÊfö†…±”ôØé¬å!Àùƒ¼\Õ±!|‘ÙpX(K£6êóhà]ggZjþýÔu¼5-³.îK—£OAV÷GŸQÕŽ¶©6ådù8¿Uí¨aÛoΫw‚,z&Ý“°Þ4õY)¥÷+PØ@žŽ‹U4áTŠÕþ²:nÃX`?ç79J2LýF¸‰q:3Oë¶¢‚9U] €Ž‹UdìJ­40íž—²0”KýMNâüÒα{Ñ:ß³B¢ D0(Sö¸XAÀ óes`¢Ž’ Uûëf±ùÉ­AfœF=ÛßÓ^½ÝÄjçâ QJ‚:.V0ü²}Êu[ è"-& *†|¹V>­vÐ6ŸÑøx[ÖD­` ™\÷Ä„-d[¢áô_ŸU¨fÁ‹“ãb‰Q%bH(zÖ>Ër+zÙº"¨ò·S%A>ô¥¯L~ëÆ:­ò›dH‚8.V¡ÃFÕÕvvä4\ W³²wE„Ùß1r>˜ V®tÓNðVØM„2Û U@Ĉ í§´±}z—Rá\¬ø"&Òç»1íö.~–B6DH£Ê @C㤆cW‘¢Ñ²ñ2h¸ÝRš¿Á²á8]ºÜˆD›;±‰cÙ*?L"•üsw[Åñqm+3·ícçûÙöo;G”´j«=Åû¹úa¨•ƒ%º\zæëC˜ÓÌ%v Ú6WPÔm" ”uT¤b‰‰¼}ÎþbôÁêê[¤úÔÀ8­’ûZï )¾¹žÔß«Ì š¢½÷Ûv¸­~«`Ô:Í´‚i£-ãn\Å*Kf¡¤¨ÃB5BS{5LÙ¼x˜«Å#\õ¡¨tbÞAªq-^‰‹EX()ê°P’½3µwfÃcÛ¾òΫWXbVíî—âȈ:Ñ’?sAYO?üR,†2s %52SÛzwa«—)…'F¸ê5η߲ŧƒJŒ,†¢ $ 5Sôà» 2o>öLü0U½È´¬ºwÿtÚÄHijӵò k‹âîŒK\+ÑÙò'œøþØ5—ƒ‡Êj’+áì¸Xœ ,ÖÛð™`»m+ÖþD³ žN=0C·¥D¯¼Õi¢€•Ùu\¬"½F‹™æ…c+ßJ¤µOvo¾ózùŽS­&Y™^ÇÅŒ¡é—çA€†Ìݨ+¾áªý‚Vøw¢{~âOìprŸ­œ '‚DiUK`jD§–e[Fš‘e½,©Ü+¯zhtpðÓ 2¹žÿ;ËÚžk ÏIf¢¤©ÃB05ÂSìÃ.~ëö]©Å– XC…œH‡•-¶‚ùi&Ë3 0“P’Ñ€µø×ŒÜHRáR<`QšïÑjfÚÊL;,T‘h#”EÿD·®ísyŽT6Ædnû›ÒFj»¼ÏÊ?t_¼8R/‹ÀVº`†…*(md²Fi/Ÿi1]¾–‰/F¸íCi#GµuÜþýv§ãrJý,ÂZIiÇÅ*(m`²–k—c ZMÁr½0±dnë±Ó)É ¤Báä,Øué8I¬'™µÒŽŠ$I6RTLÚ¼¸œNçüêaÒú;É&H‰¾wl¾ì,.ŽKã‰rLÐa¡€&ÞiIvuÂtpÂvábIL4‚cn‹'Tüµý< g=¸/hù”V«„~z†U°šÐ'†öÂñ·®še;‹ÀQú`FE* j@¨_ÎáÁuœvž8Søb³VPÕm0{ZZœQf¢Üœ}ªer³%Sª@ª ÚÓ»ÌT÷üIUWL&¬~f¼fóÑGGÞ‰Žz¬»í´>ì¨W_Kf¢ÔäÇÅ*rm„§†“ì`*»[?ß![d¯ÞKL"“öÞØJåS"x>FaeÉô’Üs\,‘yƒ¨k”é\V9Ä^]1¢ûºJx©åêé$ k;?¾“ꊦZäênW‰ŒÓ›£¼Ã›PÕt"”Éz\,ÛJÛæÕ>ûˆÕÀKmóe^\» Ýðê_ÉDõ~§=¦d|(­Þ ¦á ¨ãb5òRtú·ÄËÀK¬þ•LT˜<ÿƒ4±ú§H*ó€px^.ç’Töá•èÔ¶u«± ”¬DÊ…‘%ÓUrÙa¡Štý"¦xx?^ Ï~Œ–b„ªº¾ç ?måâ:ÑöÿÁI>çña«6…¡LÙãbt2²Ht/Üj¶§• õÄd^ùÐÉHí¹1rè­ ¥Õq"”‘xr\,ñªDiÂÞÆ{{ÙÛ랸W2²üë"ZÔW–²WïÉ`FZU†…šìfáåب¼Z6˜€ÛpffUu®duö·Ì("ìUÎzœ??"¾0œ$ÒHD9,T‘f#t‡l[DÚu¸úhp±®´ìšô %ÞÇ&؇MØ3Á±ùÓ¦†áL‰ÃBÝZQb§yrÓÇù;MìStAÏàZê=#ÚHÀ!é1©¶…;}üSò¯Yä¼ÚÞn3l%Ïçß¾ñp $ÆÉþœÝŽ]ÜM"Ž“èJ¹“ì¨P%îLDÒåûû¹½ÝXoÔp"Ì’N•AŠ¥ €M¶Í·ÛäÇ=VΕ ?Ÿ¥ ÒH̬ûXÑÏ‘ê(âÄo’%‚Q‘tF® wÎ4k_yç¼5®dôÙ]*Å‘G¢EN×Õl"È’°s\,¡‘m~iB¹N^…ÉGœdçJÆŸÅ*@…(!I®,ã›ûøÕn"Ø’¸sX(žo~yª“M̹¬Œ§/V|+‚@cÉ-u^ƲÐ\XB„-r›8,T‘«#ƒdë< ãÕ'@WFÀ)+*éž-y-HI-{aðSöm(X$’§À‘>¢iþcß}qaXÌ'#†‰ÐŪ{7QžNœ¶Ð1L„.6#›îßíOÒ·Æxì§)F!•dœãb=¶$KGTîi§K>¥Ç•d2ÁFŠ‹g³O©ì@ Ô2v»óÆrìQ¼.Ü* ¦ö›ÿêñ§Ö˜á¦¥YË#~Â-‡6.“ @‰NÇÅ’”A)zC0åµ]ß¿–©?UýL7Ñœÿ ºÜ²–XM2eÊ)gìI±=ĻծÁïdáYÉ•[ÉôŸ¾1j )^ÆV rÜ®%”ÓWÄÕñS¶­DgK½88pþXtc“ûJÄi"”ät\¬FPŠ 8ü|3M¦ç¶’ajQøˆ7ÍZbÛpûÛMçña'b6É”ìt\¬žFT ü É`á©W2N}èi䛨y³µdº&ØYØM2%=KÄK¿„BøÞ¾3.¼+ÂS=öÞµ®n¾ §‰›6÷ÂÆéŠ›zM„‚Ÿ %ü4ÒRË´v)l‹àC” ׊՞h—ýó³ù“ç—ÄÝL¼¶N,1²ÓD)(=*ÃB•K1km…<ÖÖ OêZ Zì;é 4ëúqVeð ‹Â’ˆ%Iç¨HéŒ`+:(®ÂL3”zK2üü:|æO6¥‹ b ÉÀ’épT¤"¾°&šý7\NÓH6–(ú¬Ÿ²„"mÝm k2]ûܽáY­!‚+™ÇÅ*@gÀš–yvW»<¨p™dòy/‰D°µM§‹D`%óà°P’#‰4‘°-¯Àêç.Î’L+ÿð‘Dzˆöw®ÍÖÓí¼<ÛA0M UL!sH[k?ˤ¸ L…¯$³Ê?Ðd„‡ödm»Ì®ÕݯbܾH29,T‘†D=³ÍU§¥&Œ*£›f¿ æ;ÚùŠ¿æ±Ó,x}¡»sÜH2ØüF“‘ÚZþ™yÈ£õf#ŠD#$£"`2’H<½àMíâά,³³DP¥ƒÉ‹ÎûË7 ìÌèРoÿÑ~¶ç[u„(^¤f>.V‘b#†„traJÝuïbÔ]’Iåc&‰è +çéÙ¼+ŸÞ™-!‚i&KÌ$Qyµe{7=«+Çôˆ»$I³Ô#΄F¸Ûж]ç‡ÂSa.äù;]G‰þùz» Wu«‡ØA2¦$ß©-pxÛí³D 8ÓÒµ=t~X£fc‰Ïßx3HØZÅ®Ë'!«D(%³õ¸XàŒ8îR|»v¼&Vg‰Ï?øf@– 9—¥%Ÿ7„RoŽŠôÐÍÈ2¿ÞA0S yÄK,Ó^™ýÿ26¸ÿ¤›‘e¢óî.³Únª·$àN‡›«ü¼¦Í³u€–aOdÍÝûœ˜OÕ ’A¥gëa± vQ!:ˆ|é«/Ê…±Dpbò*íÔôï3¼£{éeV:¹»0ÿ>æ¢Û—nñ³k"j..ÉÄ:.VA4¿4U´-I¨®M½FÖG‰ N½B à'ÎËàѤÑãp~öNµœ¤d\,ɃbÚ¦˜GÀµ«p:½.%tþ5#z´g«•¥¼~¤aåÉx’\s\¬»¾NÀ—m#,Û–ê|êë$`¬åÌÒ£ø×ÕæÄK#EOÿü¯/·†Éª"ðô7*M<ÓVò¶)Úàb8ºãC< Â<é«È±ŽÚ:Þ’˜Mƒ¾ZðÙ½"ÙO"5ÙËxX¬Í覔 g½lÝ ëµÌÁëíf~Ûª~þÀIÍGb»ÙÍ­lÂg‰°TBØa¡ª~þ€]ÑÏãÑf¸Ç“Š¢ÙœÉº* R»ÊÜöìŸö×Ñ(&¡©Ü¹ Uäò@]1*ú¤È}lŽúÕ®’Á¬‡>\2Ü’)õ+áO¶Ú‰É$³UBÙa¡ÊF‹¹¥ÀÐէȪ]E(íï,ž°©=c6ú™÷¤$ª&A«d²ÃBL62XÙm•]†Ù'¡‰]%sÚßT6S ;÷q-}ô˜ŠË$ÃUºS†…ªñ„E'þÎRÆÞž"%†µ•=Åùi€œh‰ ù˜}âAa2É”øtP ‚žFVŠ.ü]Çì{DZxªÃ¤Å~û‚ù&ÜÍ›ý—ûÕ^\î ›If ÔãÇÅzQô“æáétÓKâêJÑíØ"¡ÈÕKá03X“©c¶Ë;yå%^˜Œi(±)ºò'oG>úf)¾‘l-‰ôá‘HúvÖ4ªD %qç°P…Bà¦å¾õä:o€Ÿ%žm ™öЯvy4q$úáŽÿ0jcçεrndbIÖ9,” ÎH6­lõïúéžx@~æç•âp‚‘öTµ‹½"ñ-}^š7XÒò1.VÁ$‰Ý•—ÏÛáÅN6$DùŒÈÐÇBaà”Õ—œ?¢ÎŒ $ÇÅÒ˜ð#ÚÙ'4O\v1ž¸@„P"–£Ã„÷ øî>okÖÌ“h²{C }ãbUýì:RÇn²Ï¬Ì 'ÞÙ0"=làX©MíÍò“Ô‘±kßa¡Šlñà—§*l~m÷zd;H&ˆýÑêo@—ÒC :jûÉâçw¨{C°á¸X÷~8êhÜ|ëxò…ïŠE(ЈrÑô³x‰©cYv´۳Ƕú©©…Ã$¡ÉŸ96³BÀn§f}g¦¦剴“Œ‹5é˜ñ`6 ʺ¶Å«¬è0ù†Œ¤ÐVs›OŽºàÓ­bßšH9.VÕ'°£/æ¼ >:³²‚d4ùDF\h‚ž‰–ŸŠ¬N‹LéÐ¨ê’Øò·)6ôÙå“cCѤÃl7øùéVá }[Ó^ñÝD3:…³ÑBp"3î¨H.Œp$fÆ1·×ƃ+ËFâ‡÷*“€:/ûÝÞS>Uk…@?æØq±$8ˆqš|­wÒ©MCâïd™ž=Xy‹ õ<¨[½ÂýÈ ‡…*NAŽxж5—ë.íJsW#6 !ˆoS¶„ÚÃ' x¿ðöÄU¼ý­k ÛäÝ…ýËAdB…>ñæƒs^ýY/,‚™dÇŪzð_Ø-øËxÈNo8Vó‡Éâ!ëÄ0R=ËŒ3Q9ŠMï‰NŒ Âé"ë¿€ìÂçïúÿ°þcwá­W©‘þ{+Ü$ Ë¡¡þ´»….ñ“ Cl!‰ÜøŠdgŒÛ“oŸþrÅÇ.D»’`íëæÓU I†€E…èl.Ñ34PNÔMΩŸË ®!lô“Œ‹U°¹ˆâl©:Oæ§õ>N/9LÖÅ­^ÜÙa—ûñuÓ%Œ¾×‹;;ûb-nŸ—)òÿ^BúMì°v3žS—¤õGHßW¾'}úD–Ö+)ýsï$ÜgI£@ÖßtV†“ŒÉ‡…*Äô€íÍXé ´›Æµ¡p¯$¼èë^ ~ž>†4á>/Éw;ÈÚNÙ™¼Å’‘ ÃÄa±ºY:ÖôÅt¨tŸ'e˜Þx/:vÎS“DKõæ/ÅÂÃu ëŠpˇRF”ˆéB^ˆµwÊX»‰àFrÊq±DªÂô»9±˜®œ+Y¼¦Ž§é¨F½,¸báã^Äe’9è/OI“Þú¿o\RÙ/®þ/ =GEú=#–´'éƒtÈÔlT§… KBÏq±ª–üÀ9Ñ’¿òV/žœ*ÛFb¡•Gƒ bäˆö²±ÉˆÙgß”§…F¦ÕAФx$úñO$ÌåÓO@ÎŽ !–?È_ä|vçÜñ}-ýsµA$ø°¿ˆç0nÃX‹ù™ô¡æ…„ðÈþ†…Ò/PŸ÷vá;{‡tá„È4ÐCÏÿúÇÝïý¦shÑ>­¤…ÏOZó‚3_Ï.9ìöl¤V§AFl„sãbÉ*¢8ôeŸT…Ûi! ã‚àºÎE€†½©iÙý Sudc19.Vç"Œ³„5/þÅWóê_ÈÀ.l¸÷ë ³Áï`nC©÷û'÷žå¸(`X¿)š/Œs·ÿ½•ü`:—}º¹:´W‘߯ŠAÐ ÃBIUQ¬°'Î’¿z_Z"„Ö•ź:LøÌž×vσÅ.7ÃjcÄF87.Vç"Šó™]ø–Xë OD`uáÉJÏ‘=YvlEoÙ|ÙÊâƒdO5ê»æs?°–Ýwán-=ÂÏÛ›?LÝ¢c&<Â]âVŽ˜H‘›­ÿ-eŸ>[]B¹Ï«X"5ÄÛëð2D‰C¸â1°>sXì+UçÉõPõ\($GªêôÜÐ( ³p» “Ÿ¢+ö e‹þô»ÊÏÏò¹»½܇m´7ì¦w¡;›02äò0*R±8pƒ×ëöÒœ¨™#ÃÅø Ç~ÛÓOðžÃ„ÁôÆbkòùïC…˧QFˆ5ïð‘“7Ü©™C@#å¸X‚(#‘´%a‚p36ãs6ÅÁ!Ôò5!rD´{øKm'UM±](käš0.VqÒp`’¶$̰Ñl&u{£¸:82·,ªÎŽ#ðóšæ¸¨0^Ü…‰óB  qâ¸XÏzcÕ)ôúO/;â ô¬7 K8âý8£¸Õ£#–DOúʧhö*¸0‡º,žžÄ#L4ÑÌþ$Z¯ÜÔÔ‘y#sø¨HUWzÀ’èJÿ`fùåóé*wH&—Œ½LVÕØgïž TÒJrº!QÞm<ÅUàŠËˆ"0°'­]Ù½n0„wÂ1ŸÜ‘ÙC±áà§Õc4°@é“\ö­ì]9³ð¡d„é–A‘‚ÑèfµKûçAðx)?î,:~tÑG|úåàh7¹Ï,£ŒÖ‡§FâiÊ%FW›Ùˆ]¸[2%OKHOM9´“wð­7Ÿ\XeaýÃá¤7ÏX'æÕß’&}1ÃBál`|øzßD{[÷…{¹OŠŸŒÐXÆÄ¢¥o0p|ššïeL(ZÀs3yÂã½ýÕꘀ§½æ {ºI’€ªµ%3QÒÔa¡ ˜Ñ©­6Ó…¡Þ˜ÏQ;ⓉtµxÀœM&~hUÓ‡Çl[MÏå@¬-‚iŠJwM EâáÝXÊÙ7åHrñÉ®t:‰àü¼édä‡Á[ wLôüšì'ÊïàXEŒÐÑgÜ|;™ IU,+ª›ÛÃÇ%KÇËÀq¸¯×hÉÑñÌ$ôÐ~Óú8þa\ONQK‹F¢Éa¡Ä á!tß‹©cžü­UwŒÆ^ÆçIDè‡öò3>/YÔ|"\¶•a¡îz(Ñm+ ÛWë²÷{\`¢Û¶Èµº›|öà %C::ªŒ06«ƒ‡ö›K)j<àHT9.VÕNÀ$úÉ9ØX4×B5±¼üƒU¢ˆáŒ3µt;×…¹P¼™:VŽŠTÐÊ'-ËNòɞ’æ¼á$ºkOŒ§h›YõCd~ùàÊH­šµ#Jíª´åŸÞ@µ0u$¯Kdê(J{ŸÞœÙw¢…" ×?PhŸ–½Úk˜Ö Vž¨ îa£ºlÀR,D©ö·Å©©A˜&aè°P5 M¸Ò-&i¤^eu5Òd’ë^`·ýäÁó‡JjV(îÖtq<ï-Ó0 %…¢hTz#U[M’EÚÚXUž Á®pÖˆB¿<ÿnñ»\ŸQ³D¢¥Ä¬£"Õmà/¨ ¿ÍNÅä ²ð]$înÙdM—æ ´ ½ÇÑ)øøí¼—“´–·,9 I»lWðÖÂ\Ú;Ñì7Ó6ï„Sœlѽᴃªj¬éã8hZ»yGl"B^Ÿ<I(¶vøví:øù6…»Ch)óì¸XE6ŒTÕÔò|ûâ‹IU«H¯9öÔ“Èàí_+UëÃGüŠÁ#‘M"Ñ1qJ…:sE»û·{gK}áíöHWȸXEÛö‹Q¢o{&ð²FNC¢M$3Ì®M0’º/gJa3³v£Ú;„æ¹ßpX¬ªoûMýì90!£}Ik\ DR¯H&ƒtgHdu±}åa‡) XV‡ò<:CÆÅ*H`ä~hÛ¾,7nwGåÉlг7:˜Oïcæ.,á:t_ۤݻM‡eóµø=„èqc?,TÁ#ú3 éÂ0ãÍêkîãÕ:"xЃŸ«ã„®!Ȇ äàöq·7ø•3C8 Þ°P÷¢˜–À/.>Þ“¸¼lq ìæõïéžÐ>îD­ß¿°§oê óH&…pÁHîÀ²ãÈ‹\zÄñ¡t\p\,å‚ p^´ÍãJîá„¿©`âv¶+3¡Mßå ,> a{̼ãbiæM°K0ªŽvv¯CÔ“‘yÞô.6ŒÈ¿0ZÑNŠâÊ©VŠLáˆï†…ªš¹ß´Îž´cíWU6d(Îsx‡·Á>û ¥ÕY×jf®ïý°Èdœ§ð ¢ß솣ˆ³^ðjeŠ´BûÓáÕ g1Eìhìå§\I ø ØPò·²¤ý [*çGbp®ÿŽ tKu Tºëz7¹TA%šs/B¸ö‹GÿöÂî"©¾€û¬= ›oq kJ¢y»‹t }è“mf€ÚþÅö!Žìn\¬—àíNlóH”ÀÁ»-¯(<Íe×(—sC"ĸG¬*íb®>ŽJ) ¯7 Û¡ÃÝwÉ÷ ÁÂM’Ñ¡à¸X6Wþ>< ÄW}¡vüÃfTÈ‘_JÆ„Eëô.6o´›jKÚÙ«¥h$G ʨH…Q$’:+–ÚýðbͶˆÿ¯òŽdšW(_÷áoÀ†3NþÀÜùDnê÷ÈŽônX¨‚ÞEV‡žö ×ù™|*Ÿ˜Gçùj,?OŽlKt =›o´·¥Èñ¾š'2cæéUÛ†J%뇾“åžÔKY¼Š rËñ?¬Hþaó幯saaÃ@ødî€ÖЮ™-‡©0ìWVë„à7&îa¡„ÛEJg –ávö!^• #“¼ß¦‹ˆÖ°ùpÙgêóBÄ:!øÜnX¨ »¼±ù‚˜½aB\ÂǪz¿6ƒÃ“ î¼N׸ÔÀ hí7HK´Ë§õ/.òL?1cΪÈy‘œ¡zÅ^ý¼úf«ð0dºö¦t†¦Í•âÑåÇœfS€°µûO°ËJk[ܸÀyÖJ܇Պô0êH¤mÿ3¯”ƒ—“û°Î¨#‘†û×JxÖŽ¨óuŒÈÌ>ßïÚuœØP,žÁj1I½Šåò.àÍJW+9Œ;S|a$h£"åŠÒZD\–úY‚í¶Lî*ɬ]0Ú¸Xº"Ú²ÔÒ^€‰õlZPûŒ¿âÖ*n¤°µ:¹Ÿ¶Jÿ2y'…½Õ‡Oϱ¿æ/…”Õ§gÐå[‚¯ÊÞG ÄÏ0ŒðX¨ªW9@3t yµë»øáBjÈ`-¢Ï.íM;E†ÄBò¹ï\°÷Å›† ýÁ»"ÝB4ëȳméN>[â3ÈìÁ]Hag¸£"™zé_˜Zw‹%’f0½ûÍlë¶¶PÑŸhœ?@ZÄfh~š¨Ç_Þ•«NƒLÖ<ô6ÿ»?ïë‡v¡-z¿ œ<ü5[ˆ1#މóƒ£EÒ…§j·+ŽŒÅ6œÂi9Ú¸XÊÑ8C•=C¸<ï3EÔàZÄÞ¦G½°ãq¸ÿ‰ üÁÞçÆv{Ê}­ üw«^‚h¶ê~x¯æeêýÖb ÐFSÁ¸X¢‹Dλ·M]<í|A7®ˆÑ S»ú=K” c±¡µµà'Gþì^H˜?©+4b)K=³éÙM=ööeEï™\qG<*RA¼"ßBCÆŽÅûl÷ç ò¢?30Ž \w¤G$… dÊ×¶+awaV¤õcâ.V[âvŒìÞoÒÞËáÓÉTÕ.wß…Ã CŸ?O1vwlè ö± éIå Ȱ†gX¨ÂP™úÑ=Ü®ƒ/”…Å@¸ÏoÌ“PŒe^›È³^‡ÆÁ5´Œ‹UˆžëØÓ¶®VÊœ}‚¸ öÉ–ËwÞ[H ÒãdÞ*înµΞ`»¸Æz™|¸õ¾û!¶É®Ü ¨ãÚMà“ü ? O„:ÐëÛ€l&Ðpd¢{?æ‰(æKG8ÇY-]HÌ.¸†œg\,I´ë`,–ìÍ´ŒÍûZ2[ôóI0æé*lÿr”‡ °!I«n¥JˆæË¡ê(:Ý ˜¨u&8D?#¢TMªñ IKífDÅ{R}gTQïS`Æøô2¡°R“BŸë oH}†…ªúTãÁSp²ž7§€ƒí̾…ý >òXXgÊߦPYWüAЃ}š±œe%÷A²²qŸÛ„oˆ}FEzd¨Dæýcc>è ŠÂÔ#Cµ×ÿr"LÂTUÀ%Èш^›ÌÎ3EÊ‚ü&ÍxIç׫šé º51J%–‚àLp‡…zìO­&°–Ï·ý)¢û“'WÓöéäK†¨Bˆp 5A{XmÛµ0µpO§ÐYÀsÖ¸XEæŠ ³†Áó˜ïíF&Ø‚™~óêÄg0³»'—™ÝÉvÎ ‡ôg\¬ªù3ÀtάÕì-õîOaØýÈ]Ë ¯ng6kk:‡à ÄÎä&<ÆoåÌ Íöd^\H§×#œ”3ûÅž2ÖƒSŸö¬L—­8>Ü‘bÿ— ŒtÙMåë°{+|‚>–¡Úëj¬Óô^š¬3%,D 4*R}"âÁdm+xÛ͹úqÂJÆê¡?ÿîÏ»—4Ð4€^ÔäíVû©¬™hg‚Cî3,T·œ±çô܈¦÷Þá£@[Qø¸XÚó02³]u»c>ܲ€ã‚‚úuxõ}vH1 jï•9·ÝîÏÜkïHžµÒŒ‹U÷~¾Œ÷~îö“Ý-ÏÆlóÒD$cwÐò:¹×û_œÛxð Ã!Ú§«'¤Ø2Üvæ$üô£' b,´…©aX(AÍQÚB¢CQ†Eáð.>gõëGÖ‰¸];&Mœ½©¾€Ï‚„úsñùw¶ÂL¤5¶+ù|؟؊§Í±°ã@tÈ*õ¾ŒU ´Ðû€¬Àa˜ ½7‹¥X1!ÌbY±˜žûÚwö  3ÆùÍmY±uÈŽsA±º°&P¾+ð…IgX¨ªw30oÞÄKÑ]Š…ã8e{“@¶[¸ÝGäU`8Óghû[ï¶¿D:Pé#C`• —_%ÛLCœ}|Ð1ƒÏkïcú @?$¶M»™$,ãâŒ0(É t‡«)MË¿—ìHïȃ¿È8vG¼Á‰T+r ŸL\mm¦»Ë…f by€Jd誜hL;ûz®ì9s•a¡~ЉÈë<›·¥ (VÆÀ‡\¬GµÚ“n&ï¹Húì£Æösg £ž]}é³¼÷ˆª}zŒoŒý+îðfÆ}¾ªÀl!Y%@…YT+`¯ï;Ÿ²oƒE¾®ÇwSДD<ì?µÊ››/ж…ŠŠ‹U5hz‚Í…ÛÎ>¨¡Âä™°üAÅ#ñÀ6SüéÜ}¿#l[©©ø¸Xô=š®ïùh 副øº€Ý?oœ¡Rîb{ÙÝ_¦‰@'0âÙ{T¨}DÐY¬_¿­·+Xv†!úˆpïüÂ|ar -ƒèc\,AtÀÎ>ó¥Øú$:¥ÎC~gñ'ìÑš'Š€ç„çH1q¦äƒMåQW/8a·¾í'Ђb#6芛éï0U_€èïÛùúm«w8( ò{$2ùÍ47˜"Ήû‚o^ü U5øÈñô®ÛÒûû2 Ej3Y½w¾¥MPà©yÍ«Ï4A0€)Ê„˜6r¸|t°äïÂa” ñ›>E³Ûa^a1yšëéG^‘ý%©¯–ë³$²ÿ À‘ô@ÿð'[?æJ™°Ð ‡þDDcÆê¯Èä¸N1®PâŸa¡„ÓD*cº‘ÝŒ_šCt "œÉMç4ÿúÇÝæ@ŠéݼÇÉt~¼¥0\-Ä4ãbýà)‘x|Ù~¿\ÌYó}ÈöCr…ˆ¥Œ‰Sp”HMàãb ¹~¸m-˜°•ß%‘ŒöÉ:Wß`)ÈB<.VÕù¨ :ÿ «l¶™=8V[©p&+?8J¤&–ZÒÆko§Àûy g²òä@¾Ü=Ù @KIn& L#¢ÝyA`O4c ±.&ê5ÂmSôÐ<f íyô®:ß(#ðUà±Ä¸XµF˜ÈÆ>oßﯩ"ÑŒ%Òæ¼ÀМ7ÃÝaZ;—ü‚¬fFQ‰ÞD™wxBÀn» *eJC…+£Ž‹U·Ñ½øÃ—3ꡚ¬Èµ@Ȫ0ŠïäF$ìï´T²ö¡`YÍŒ"ˆ‰qÚ|·ùp÷ÅÃM;õŒól7Î'N–ÿ´x×!#€9Ù¾¬t[hb™,H:†…*xD¤–p¦»ëÕç +>á¡÷.kO}$_FèZÃÃöÊ 3+HŒ‹õƒIDj€ç ‡!/p¦´ÒL! dãb)“HåçJû©?… ¥èLâÝ®æL"`Œ­]qííåàöQq¦ 2‰a¡êfµðf5,Ž««mÍ”Â!R@˜ý9ÛVj;íàuÞ¡‚)ø‡nÎÉÙn(Ä—Žp„²½3åST3¦pGú G:>í¶±ùí¾÷h±Ýô!"©&¼@akT$¡ªQÌA ÁÂÝp»ôô›œ5 >?ÒX$ˆ'Þ™åropZ3­¸kÄ„€HªÕí2ll{*ˆyk\¬ë™Ð¢j Áæä@^°5]['嚀ºŸíU},»7Ö.a¯Ä†bÍä”´ »pä7,–}s~¸Üt"¾:hÌÝ™!—Ãw¢Jm…WøS[a„(ôÃ+túˆæ'¶¨5³R„a¡ªÎº€ ÐYGÏǹìîêWj+X!¢¥Z ŠDòï¨û<*Ï¢ ÛmŠé>ö›IÌ·Ç }k›¨g/úɶ· ƒEðw…ÿ²U‘ŸÖdÉ<DxôîN8•rm—C“1«èôžG…zˆWà[¾îÜ$.Ï¥Ìx :hÄ=ßóÕÐFJðå¨Üwí)O­„ÐFeòÆ}À¦r1UÎ*ê? í¸X÷åL2&–ìè‚‚_Ð$c¢ñ|bU?MÜ/à‚¾Ï„èIð¥ì9/ë~ýçÏf‚·*þ3މóDuߘ}¢‚5ÏîŸPX)€Ü`\¬ªm, [|„ÂiJüÉ >'ô¾h ú¾‘É•£É§£\Q°Ê̆…* g@è;a@±Sqóz&–ðF…ÜRÀÄ"Ï>|¦€‰¢¢?è0ÈÚn†§[hí³†„ÿ‰ôMr8,”€Ã¨[^=]†}NÁ”(*zrTV“67gût}ïå±x9*6®{—·ˆgEÏ-Ý ù’Q/GçÌÅϱù5IdQuÉAÒ;売’ZŽNêÕöh ¢H |1(êÌ,câ:|TÝщE‡þ9îù* eVæÿÐá£Rnq‡Åñ°Mâáí¢‰,Š˜N~X¨ª+hîö˜=áäuðÇ CJ‘åd–(¹›†êUÊÙŠÓ‰yDù\–åþ‘Ë/1¨¬}ã…[Aj¢¨S†¦ÐáƒìŽy›ÐÑÚ·Ýþ£{[¸œ(óÂmÿîÏw·Ô£”£Åé¤=ºIQašˆéÄpÃBý p/©Üîú¹{»ÈîðQašÈéÄpƒe>iîHÀ¸ýí^ùد‚ˉ.ÿ[…O:¹Ì´áäS¯T –&Z:_ÿq±ªn¦ ¹£›iÅ^ßÚ¡gnÂå².‹ìXRyrÒiÏÎÆÐç’E¶›äû o÷À‚æïöÎ]ÔŽö‡gcÉѰà%Ú¢ý¡Þ %Fà(Ö&y¶•³œ•# G¸VÒÜ¡á!‡îלì`Òä)æ S$¬ Ûéë¶Ø6Ý'€e’˜„}¼®ÿîOZr²ÐŽ$N#™o¡ðOÄxbÃq±~`Ã(´Û¿ !±ø ™‘ÿ‰Ol8(Ф3ì¢\oô±ñU±–B¶[ JI¿ðY²%‘%1º6[RYùvøO„x‚Ãq±Š”{oe²½úi<µNP¢ˆú”ð£`Î%ÓeZ¨£Ï\Up˜5}þ;–kû|Αyéõî°ÆcuÒ š£Hú.àßæjîãA¢Êþå<¦}ù·[»Çd ô!žfX¨Bgª:<о7ŸvŸV'Q„÷(eóAÛâmS™¤hð¼_Q "Aòš½ P¤HåŽgSøyyße®õlÆÉnR3Ï!PΗÕmf—Q‘Dʼnš-3Ÿ—ˆaÖu꼕„pË[v-î“ À1Ìby¬ŒcŒ)·§½ß]ö§á*×Áxy~´™SÜWë=QA÷™2((\¬«àaÖÍ©¸ e7 |ÞÂxP°Arp˜3â†NŸªÜÔÆ‡…ºoN$+¨YVÛ÷à}>_öžDV|Ôå²¾¸àÿýPÝ“.ï òjiäð‰ ÷D;'«PÝ£ÆŽæ¢ Ôãsõ[IaÖá“@ŠaÝíŸ>™­²dúH½æzM ’)Áà[Çl öô©ù¿‚ŠHþãÝ 8Æ?¸ç‡éÞ”‰JþhâQ·ö>Kœ‹¾®<¶€[¢mS«ÆWIF«ÊÁNBëõ$Z¤b*Ìcâü˜£ Œì|ðuŸÖn:%R1Eæq±ªÞ— +{:­ö(­|K  %Òs%4{ïKÔ‚1©in²·‹+‚¡²^L|5,T!4GYùËþ&cG+­>Þü’ˆVžÈÌQTþò žíddaQ¤%Âó#3GEØv –¶ö“«[CDeÕ˜Ró°Púµ£ºŒi!;|OÇgöZO™–(Ð1AÛ¸tÞ~o ŽNŽ'?·M2J¨–gð‹ÉÉỪW/Éê½$o™íËÓ'(6 …)šö°P?4ì¨5ÛÐn’j?,¨@QYަŠ=,TÕOtk˜$Vl–Ïæí$l‰´ýÆŠR3¦¢iô°ù ,±•F‰M!{\¬ª$ÈÖh'šÞL¤7DÑ–HÛ?ìäQ¶3c?Ú‚÷aÛÊRñ“b¢~ ièÄÁà6¹ob󇀩 ñ2¿Œ‰SHÃA ¶ÒÒ."¾¯¯¸•µâøV³xë] xØíàjÎÉ@Jô]*ÃÃBý†£z‹a’Z©‰‹ÏZ޶Bïþ“×ð†Ó2 Á›]>74Tã'×=ù1«ÍQ[F†ß $½c¨BfY.D«®6G=#úgÝÊY`®¬Sm«nSyiË`¥<]ý¸6¾è2ý9ܽÙ<ª&œö u‰l=˪…ó½ÎF°e¿˜kÓ|†ÆÑ~‰„J(–ˆÚ.aoöåí³?ñ¬-½p†Vwœ‹ˆ'¢v|rÃs ÿýÅ”×s6=žÜøœÚo^ÞÙPƒ ‚:ñóó©ûh×_ž[ü±S£Û·=™ ‰¾MéjX¨B2¸%ÙVžØ‘yÖAÅ3Ê•È%¥<\[¤`L èCÞRž¸/îaÿ¶{Ã8Ý;%ŠºC))×ø>ܵæìØ-£9Q·©‹‹uK8IMÀ=yôî¾¼†¬¦y³Íä{¥Þ$q¼o'ÚÀÌj=’2?QÍ)ߎŠT¨íñµÄ΃ßÏnýFµ]¢èï…ÚÞû}¢ nû OÕ\X è'¢9åöq±ªŽŸ ®#ã`W³YȇQ)@Ì ¼ó‘G]‡wøÂ/aŸÅ™q™Š/ Í ûüÏ%‹dëűv®µûÇÏLd‹ë†â…Ÿ-e9&|kí@{³ûfí´LXû²ï”pP¤"FibŒÒh×öô¾ņ"¿ßvÔ­ír™~×/ôÿ*'Ê6³Ô @Y_˜J¢hmÔ~0š–G 38ѵ õÈç ƒ¶ËÉ_Qp=`Ÿ˜M·ËØK n¥ˆ;µ‹š5Nö4AOòEOà›èÚÌ#ãbÝ!•'¨ÿ–ÿ0˜h ž£T|yJñyrE¹I³ôßU« º8Îýf™ŠòN&õo{f›ge±¶ŽÿÌù­)JK`#HTÈ¡+Šzù‰jkTÒ¿œ÷¹î\;EÒ&jûýª'õÛž=Ž&|æ´+ÆœükX¨*E†ôe{â…·ê|[2C²‡·½•x¢6ü¿¸ZÔÕM[mK; ‰mêó3íÏаPµnŸ”uô)ÍT,®‹ûóc‰úN6.VÕvTz´ðø‰ÃZKð !Ÿ×4 ÝvM7è©›Q}V ®²þCûŽJ7¤ÅÉâ^$A·ÊRxÜBÌ kË®/xqSñl!h0ÅÓÉò=î)n@$o¯rvËÊíÚ’ÿ+ÂYœðk\¬'Ç|Ž}æ…%¾Oð/Ó¹å÷m¥˜¾ŸÏ)·”Žr˜„Â\ÐÖŸ•sžÔ2¬ÖýÖÖ£¶ÝÌörî3‰¡ ŒJ£pÛ× Uá¨$üÕ_Ttô,|·­©‚]f‚ñDi'«Öè£ŒŽ•dƤ({Û7r;!y"µsUªê5y+òv‹}svÞV1Á¬ÚÿÖ蓊nºú…rŽ©m¹~*È¥p\¬ªÙ$(òx °<¶+±¹8«TPTû©0*ò&±úúypì£RA‘ì>Êè_ž©Šžwv¥$O”vjôÃB2}På1ù s6JQPÁ¤Ü÷ЯÑO¬Í³–ŽÚ÷CIºÝp¸G ì–õvâºa¡j¡>Êévó?3 j[ÿ}\[fn"¸Ö $ƒŸ¢~nY€KD»W÷ÌÓŒîDb WX§|Ã'fï-í+W\¨ðÞ±|7ÌTŠ]½‘%*é·÷ï>“° x¢¶“ÿ‹UèôQ•G# êÃ:‚ø€)ÌÊ=iMÐaâß,ÑoÖJg‘ò?Ù]R·êw¿ÏsŽú9SLb;ný@…:ÑØý1À%àg'ìIŸÇL¶_‡;+F˜5lê=ãb©+jÝØ«¯˜Hyô3ô:f9ÜC¿§H]n² R2ªÓó„÷É…{%…"7“1Ž‹õÕQ–Æx¹Óû¼'¡fY’6ºŠÁ¬·«zw]¨Žj²ý—?Àl¾WÀL!EpöbP$=á<=íöFìhÿØŒñe"]w¡ZS%)Cì8Xy².&¼ÍÊ En&i«êk ²4X6çÈÙ~9ËÎìQ¤kªQ™¶;6{]µo<›µÀ„I¼ö†Ã¼ñtÍÞxe_Û†œõ·ïÛÒ»E2&ËʰãµA‘ E9êÇ&|ìáݬˈâ—â6‘˜Aù-û¢‡cöý»ÏêUz%Ò0åQ‘~HÊQõEGÓɉ(mÃÏ ­‚™²0ÌghT$“|ÑW€Ï[øÒ,ú¥©+M¶-òCj3ù–Âï¸XUÃFdѰqò-l÷paþ¤$¢m”Öí¼=˳û£^ð: y7yÊ÷ŽQ0ú€íG'? r½Õ‘0½pÒÆÖ4–â‰.ÁU¤ã>} ßzò! Ê¿¢¼üÃ\å^{3— ßò€”ô¿þdEøÑ£D‹íµKöw÷Œ@›$âRý¨|/³Œ q~gã§5ðåQb“¥V ŠãbýhSˆ:*¬ §Wá÷aE+Yk¥J;.Ö#„µ˜›µZ‹%û£4ö(a¶t®8X^Dm,¼@ie›ˆëº3ï[aK(˜Û/¶Ú;ÿ…{¢†Œì²ØÙ ÿÉ:3‚¨!£ÿÁÞÎí4™áŠÌ?hO`-^LJE›¼¦þ“…×Õ9Ó[Øðl›Û;þˆdý´QD­÷ËÁÈ(­ú”“‚؈L%y\¬»ªOhÇÊCÛïm|°ç7ì‰hËw¢ËòòßTíQCµû¾Ì4 ´?Š¢jF6*³R ê‡>5TËôØ®ÇÔû‘ÙˆÎÊi\¬g¶=ôS±ñ~ñíÓö´€1>°)ïržDÖy±Òö•Îå ¥J"ÿê§Ê)½jÛ̲ bLYZ c;ÑÇrwÔeô€g+õØÝ‘õý8šã%ÆBUá#íïz‹FW¢Ö¾ú3Þò)؆© í'ËîS ‰Äêý£BMqfÏ}vFÐ8Ñ¥Àµà†§[Ô†Åú!¡¡=o;&©Ùå–Q¡HC©¡ŽŠ$s{¢dŠ÷ð²bf³G¹²•¬ªV ÅÅÎ(GbÐÖFÔ±îLvÉ’bç¸XU³C6Á"'ˆúÖàC­hEäO·¦mR”5Ânf2áÜ» R²öÉ?²ÿøÙGŽe¥þd?· ªÖ“ÕO¿] ”|úàÆ¬F~éWn}¿®Í¯‚°,½‘bT¨B錺¦•S»¥ÌëÅ“p›¬}zìõüwžý€Ž F¾{ îþz…-¢Xz?ŰXwU””MÌñ:ñ”0ù<+KV6¿Éå¼OÞà‘…ÕäŸ?]öÚ}"`’@_ŠçEýÐηvÑóÑ@©xF}ÓÇâ' ¯ @¼Aß„Oqâ¯ý ý€œ'D}ϨJ“¾päñ½kQ¨”K*ž£"ý@Q”ÄtGoo° Ò™SF "\FŒ‹UKžI”„"ƒÁü°9]|Ò*ˆpI1.ÖK«8¸úÚ[Æ!A½x´ ú‘‘7’zñC™ŒB$ò4ýŽGÛ“¬ÌÓÂ=D¬t#ú#DBœö’¦»b+”ÅÊì ê‡ö*µa5ã±LÞr#4A$ÆçUŠ’Ÿ]« Òj=¢R ² _¦q±ž›~°•dZ}ÄMäFÏ=· uÝ~B{àFXǃàyöõlòS¢…-¨(È»>,ÔëxÔû@tW^ò£«ÉŠD$”«x•¢ÈëøÌï|ö®¡,ûgÐÝø¤‡âáàN`îã"£ä¯šß?î?m·ªï:-…äŸ÷¨®õ!ÏÄž§‚´¿rï£rTõbß#ðGù f¦­£®©2½Htnëu~1(Ò~ÝQ‰D=Üéäzn[$jDýš’4=·ê9,/žŠô"û¹ýzT¨pDœ ¯W{(Þ[ù„3ðˆ|xIúV¾ Q,ür¨Þ {1Íë…ô/z"¡Á°P…¸”GÐb($üµœâ$j¿¨“?ô½¨æáÖ|î'…G¹_ä>¾AÊ3-ã ÄrØœ-Š{¢ÄG¹ÏŽ{mG¤—ôNsóÓ„X¤—¨»Á}“înjSw!ÿgmŽùe\¬‚ÛÈ™ï†å.6sJ¡Ïc_tGwO[ÐààiFQtà ä{¢~TþE§sô°Xå%©p>|ëÂH°¨½(u|´†…*µ¸¨–aç¯Lëâ]Uѳ F)nX¨ÚhüÒÝÜhl¹hZú‘ë¢Ç‹4GYæ¥Ù{JÚÜykL¡Åg-šZþæ³´S9I¶„Ç„ÐþÔÏFázi²%Ô.„$¼at/ö…ÉŠgòdéˆ3Ëè"ÿQ8«ò1=>f8ý7S#¨íª$/šŸË±AÒô‘ óhö6Ðÿõ\4¿ZyÔól˶¡9`ƒ ‰¯Ï“æ÷(|QƒÃ6mù»;ŸsUhÞ"ÓQàê‡å2»¦œñƒQ(q«è-’š+°ÃbýpG¹ Ó*PݸÏnaÈ¢·HjãÆÅºKóTˆ»,eßvúÜö\Tæ±îŸøl·<Ù-¿…‘÷­è}ïÍš Nªå¢Ÿ‹êçFÞ êÙžãBɽí>ËQô$üýË£g×àDa <ù-•ÏE¬{Ô¹¨ŸÁ2Ûþ=&'Ÿ©’w–Ø(Î 5Å1]F‹Jœ­p1âiçT‘§E s“ì¨PµÜ)L¾:ÙL¿wW˜jÓ¢ZñEªò²u˪{VO|ÜËšeî,€ýò²q ^Ö {ǶCr\hßA‹Üäܹ"΋Ožˆ$åeìÝÜ£vù/F”RW‘iG×jÉo?ý«…¢ž·jTR¢ %'•´ï¾w³¤(ê"Úù×O§Ü'MîË­2Àê™DÕÑíü®amŸ®ÒE!ͪÀbp»^Ï’»ˆmnÄëQ}¢Æƒ¦‹Ó0WÏÈ]õ‰ý¦Õ­'iÌÇŸ—¾´$ÉÛd”–V1»xQ}mI’7)ÐÂçíÚîÇë5zÁg$'åÍý}÷íåênß,ç‹:H]q\¬Ú9µ¿/£ {§Ÿj£º»ÈƒìGER]1=çàâSÛ{FX!àgñ—÷-t}9oë·9«8ÔFä{Ãb›!·ÔÚÝý == é³Ó'ÚE㈞8"8êgVäØ`bû ©ø+HúšS€Ÿ×ʲ5é]_N l%Ðn[Ÿ š»hbLãbi¾Jª”{[ûü ÜE¹rŸì°XOÉ TTk—8ÝÃùC©@µ»iå;ÑìukÚ<”å®/ÏÁ@AÐrØz J¾(b\¸†…úáez¦…@“n«ú梯ê×Y£î=,Tíe}¤³/ljÙb²Ÿ§wo‹.êZÔÀZҹܶ¹NT±—6£³át›U1¾ûA“ƒ©½Pí<¼ï_Ôu‘í~èÓQ;ÃÆmǃ¸Ÿ{Ÿ`-’uÖ×Ûi¦¾_³Åì¶U‹´,âe¯q±~ˆÒACò±dã~VJ¡-gÉ̃"•’tÔ0±b5“~{Tü:ʲhLÔ¤ÇŪì¡A‹r{è†i¹ÏpÍ2u–«(NE)Êʹü›Í2t/gVª£ZõC›ŠJ”m°.è-ðäª'‹Z•´Ô/¡µûÑ)ÕÕGKÝ0¸°Ì•Ü ®>'Y ¿wòT!DÿÙÊÝ¡#—&‹¿¢ƒñ!ê‡ß4J\Y1q½éà°E£l<.ÖËoʱŸ““Áv…¸©~í¡?n:[üxÏ´«þe8 ‚24v%›MQõE QZÌ vÚæ E:|y/ä鬩ýÑ¢dfïü Ö‚ï>à§P¨³¬ö²œ¾u.+ùzŸx#ª²(aî7h*ç€&‹Óà ÃÉ ôìfIYu07†‹õÃe.P=6©Û>ž³^DQ%ŒÚ°P*¡%ÁÌ2ª§ºý¸OS9‹jqõX6ÞQkçî/òÈç-m÷Üü‡a+ñÈú-MBúRfKÛ~7¨e¹Zµº°$æËÕaaš/ê[ýލÂx6|xXëå/y. hÞlfV³Ø¯ D ‘Íÿèt°FÐì:Zk–§­.$a!Kl¤U.øDq௠2ÁšeqQÁ¨§‰“µ(Ó£ZdG[Šú1*‰‹ D1}X¨×¤åÕîW{@Ï®Dñäuj!~6”é³`¢xò‡'5ÊP˜Y4sTÄæ¥g%¶'©Š×°PÒÿ~ìð‚Ì7{×NT²Íë—!5(Z¸o“í=w³Ôù\,Ù‹èõc÷Œ–r­çifZd ­úºì+Ë?ü­s}9©uÂ_Íþÿ*±]´0—¾îîv]â”=zXrw›RÅ)î*c‹~EåkX(:ïÏëº}ª/y ÞR,Xq9&]Ua‘°nŸê X?&QD! ¾Êÿ±ÕªìWa8‹MŽWF…zy”0äBÝä VA±yMJñ¦¦uæ›zÅMúŒ”ÖÅûÌÚµ˜“Æ•Å($úÄ50ŒVˆ½¶^IG´«Õ¶8Ö;fBðÕ¥ Ùk5á”»Í*#?]7ÈË"0Åæã£¾NóžøÙ·w¸fþñÓxžøÞ'±žÄÅ~»jï5Í‚­èAnoª–d“Úƒù—?»sSeU!JIãb½ n—ýto™¤OŽ[×Ám¡dHC^Ú»ö{jAP‘0j€]aÓ´r£R¶¢4Qê«6N¾)¨þ<æÈï>#Ë¿Yµ¢¼)+‚[iF”½Õªœˆ£Bm­~¨TQ“ÂÀ½ÖÊ}Ûþ£GXeÚ,[=ªì£úÀ<¸¡ñroc!«Š0DAvH˜úJÊ .æL&xnnèM5‹7¼-£"½&}nqkÆúÅ â¡`}òáä›ö/^Õ¿êÕ~†–Z“Úƒ¾ý ó¥§Þ‡PHµ¢Q䫲 …D ÅhæÜÏâÙWT èÞÂg>÷[_…Tö(Ü+;¨jÝèpcôæe̶„Twö>®íÿkíkzäH’ìºõQÀê¢=ð¦¤0äÆ÷Ç‚0 IÀ #;" ÃìjÈj²f*YÜú˜ÞÖ¯—½gænf‘s 4P̴ͪŒðp7{ï¹™ykž`Ay&M,[ÌÊKÓKGÌСWè^²9³¤œä¥*»±–|ùgu÷Cgý¡½h%!Kl<ÁÊ~À«µƒà&'ÇЪ;àuê5šëQCaT}o[ dXu8áS[çxé£:VŽÏH³Â<'}Ü>ü&ÈRÌét$d±v cT“te˜§Ùº! ;]Ь‰²»¬ÓÒþ «ÀI»Rýø4S¢——¸˜)ٽɔŸL‹ÈÂo’ÁŽýIТX®¥½RÇ~Ôg¤à$WÝÐ}½dtÕ6\¼ª;¦.*ÁIV²¥šÞÉ誤‚8¢³ üLÞƒªä]ÏÄ[šà—á¾èŠ~.“Q;¦„eèR‚0ÇæJxñjÖ›6A˜c’½RvèëSUÜP S”`x︢#o3ÉØAº²Ò¬¹ËN½ñŠæTO¤L|l] ¢~U+•»N3uCøöÊÑU;؃x4â.µ~/é×I\Ráû4S{8õÁ“Lv²ýõÁPãƒ'Þ9iÕ©ë³ÜåW3Rõ52ÉMNÏ{”Àn^NÞºjƒ&ÈBc¿5ÂÍBx”ÀT‚ð¢Iõ¤Ë¿[uëH ŽÂ”ÉPdNúù2”¡œRtÕ¥8sWœËÄà¤$©uŠ¥uÛOSŸ¼>Ä Ä^[i huh‚“„dÉŒg™º¡ôzyˆ~ß?+ ?l“„¤Rïy¶Ž²*ĴÉ¥:hçßk’ai“ptC’u„‘y=­®YYJ¢³F›Hå EÖ‹E,…™„¥©¦²Në¥ ÿz%Ʋð¦IÕ`YxQšLjeôeê[F!†I{#c6ž|«yÞIšLbz”ólíøí¼ŒåºúkÀ½kpr«ì3Ѭúø"àv¨êüdÝñ´:2 •˜ˆïä^_Û˜  Ê µÔ 0Ì¿ÓFcÙz?ÐO“HãäR/޲]ï†Yµ]Šâ(Ö7ÖÀ`J§†­(ìX‚½}kcp  FñÇKг…fì_-?V¢t%A³Òœ[ÚãÜ‹Ò{Í©Sdø 4YÈN&ˆ²gÒl,óîCûͶì•"Si6ã}n"¯’è{Õ<þ¨%Æêòô2žÑ¢YXMiÔx ¥&)HEØÓLט;5†…áì-7Ýê=IžQ±Q­ç<[G }NÙ±„>ìâ¤ë"&ù4ª?¡®gغ¡ê¼òZÕmÐ’=‹æå5쇇¥„Ÿ“t/!iªÏö°¸PV.¡k3—¹•(f8´<Ãt´37ÔÞ$VÝPw½`„ØÜ·‰éÞD’{“¤´ H^éa’_¯´^ ø¤ˆ9jµN Ré3{,êÙ½n\§¹_ì7!ö_Pò:›fZíAÜè±…6úT­¹ZQöMZЧ™ºQ\î…¨±½•½–}á}6‰5ªòœgë(›Ï‰:pû  XÛ0 Òz“ð£Ò™×p˜ÎǦ.ÃØ¬Ö£ê@ì :Ï YÇ‹8îÖÖnlf«}9Ðd£ÐsCÖq"VAÃêDz¼Y…ÔDQ“г'9Qƒ~t #˜§`Vj£ð¡jÉY–Ž“ j°‚y¦ÿDºŠ&¬'õ3+úðϳµËX^´âŽ5r9`ÁmE+xî1ß«HÇñ^.cFOKÜŠÌZ­­Îºj”TT‹9ÏJù¡}sùò†ÖQ#&voÇ-çÉ)+a’G¶HKçÈ*nÒZnh¶^HaF¡¦ ŽM¯ýi³Š›Å%Ø^H!×MgE–,Û&±eŸ,åçbíß½‚@¤>LFßüN–½J¢ëï3[|5i‹[£z ¡§Y;©j 1nejžfYˆÌèQ… _£AáLÚ?‹™Qx±œ¿³L‹ ASaÇ΢ØòQt“”™dO§™:J¡sê ‡a Fké5Æ(à(ý÷z éÿl–fUå$Ƥ©lq&(Ìçê59TŠ¢·,²%5dË ;ÉÖN—N –ÒE(ðßív¶¯‚³~”ì:ú{ ù„ÃB#Y¹Úb&KwIbѧsž­ x:ŸÙuæ”C—JvÏFðÆ ¦©I7ÛægÊ9sš‰mgX#µ]ºu•b¢ã'LGašüáȺ»dy1p˜c-1)ìçÆ¶b¶¨{•V²ºÅ–]OtR…¥z55š?£œaYc'Y:š®AP „Ê¥Á ¥å-YL¢ƒ„ólíüéǵ$Ñq±ªhë[¡b£ÔųÕë–†t0 s…5°‹*`Òôö1'Þダ‡µëwVëy÷ò¡W 9ám´†¶Ö«¢ZW±òQˈ¨jXŽK3}ªÕž-½5É"[¤Û–„u’¥æè¸»È}9š ŒÖîè@ ‹äXYõ9vå3OyA‚Å ­H¢–I«f,Ñb•Ïγu ŸyúÌT©-idfZYIÖÓÃöqTY4§¡50óÒê¾0÷soí˃´êSspŽ‹¶Õ"Ý.ÉY,T(u A¤SíÌS}æu­ì;”=«¬¦%5à†væ©>•}ò™¨nQÕ´¤ØÔ g{ªO ld,†S2Å+³¨(T©]Ž¡[9G l쬇HÙ‹·¯ÓlWŠÎV;á™Òg* c‰Æ«pž­ššçÒìÞÔÁ×S]Ôsc³2–ø¶jjçÙ:JrÓ…©S æ0Ϻ`T¶DÌo¥N9Ò}Õ~IpäIÕY¢ì–‰¹û ç­rXÀ‚’[Ç4²pZÇä”\º‚Àå±\±8±¤æqë^Õ»Ä÷íyÿús-ݱ gÆ-ûQ ™¬Þ8 e‘¨+Á?ÍÔÞ\ÜKTf«®UE­¼DuÕfØÈËQè‡ß³pf'­¦Æb$í-3uKt:ÍÖ uÍñpîzôÀNCeY#K\]ÕµÓL¥ Õ”ÞxÚÂÛj2Ç‘Úi{Vß[Á©—ªôN)ö<•z{ù‡‹*H,ˆÒ]lÄgkÛ“E´('ìâ§÷ÌÇA½ü¢Ù7IîI €¥öœejïçh2žš2¿ã íU¥qdÉWÍmUol¶& 5æJž¨#÷tR¬v’É3œuÿ-ŠH‰ÿ«útš©ƒ‰éù<³…VýË4YzWÒ£å÷³ÑÖ¶ÍÖy,5»,#7Ö™P ±Æ 5:1=sg#V])1Ù¡àQçJìÞå55‰H4ËÓ³¬Ö iS‰”oÉA'Ù:žEs³ d¯§Œ—ƒ…d¤ÄËM<ÍÖN,•Õ⯙Ø#ûÊßÙU dâvOÅà™ÇCV#O¿Qæt I%–÷{”…%ˆ,;vêò³(˜À Êë ¾=} êßth“&•$…mÖ>~ÕŽ'ºÛ•.UIJŠœÝqÎ2…ÙJÅ]Ž®99·ÔZL 1>}´s“”x»j0':ÊA©)3#"²Àœº§é&Y8ФZ ÏA™ÞÞ !q(m6Ž„£@SoGOɵ‰Ñ´}SÌq¢’UJ‡£v$¢ü¨À̵6—TŸDÿ,¯ã4[»+ix¤¯P‚¥tapráîIdNΪe(Cðja¬°j¶s_dÿ¯•)õMÉ;‚R"”úÔO2ôw¿o%|~}‘ÔÈš½KºÃ“²gm¨Pþ2“ÑÑÛ­ÔÝFü¿[ºÖ2ÄøûgÍj&,ïèÙni·P~×ïà'ì/#Úäï4ˆí_¡¿þi¿ˆòŽr‘fÀßÅgR‘Uz2Ÿ[+ÒÞþ"¡a€d ÂÕ¶ø]ÜóI^CGN†|®(ŠøýîVªé’Ó_ÛÄñœÊdXþaîMOÍZCâ]ê;N3µ÷°÷¢ƒu£Ç›Ê×±œ*ÁðÒM_·Z­=p´˜y‚yÅ×Ä «ÀQvDVCŸÁšöqg†GÌ ¸ÙÁr@¢ˆ‘¨¡ÎxÇû®Ö]pÝ” &Í"qC/|y™Ë gXÕÙíÕ;|§Sº˜)Òb©ðQ]SÀT¸¼UÀÐlGÊ;5¨JS‰®VËÆb·š3é=@öpx±¯-P<@Þ›;ÆJî6ªkÃiìÊa“(’Xí–°rŽ©Ôí9OX™EÖQ¢_—®”YFU$qZI§™rÙ*ø|I)ˆ€¬JVi´eÍPRãÙ­\G©™«Â $tšKõúJâܪ¦x2zÕNÙ á( ,‘¯³ÓÀEIÂú\ŸÖ/ÿ€¸Dº³R }¼ni"â—,2ë-‰aÖY)'˜Rqoû)IÆïyuq70¿ wå–Äíùœfë€Húá·äyVòð­ÕÊ‘xã¹å1•ôИۅzbdÝX xQb‰èYy´§ WmvŒ6*ýj§“I*¦¦½,}VÒ‡êùŸ3N4³®!Q¸H¬QÙæi¦ôòô§1sO9ìRC¼£ùHI]HœQÇó4S®ØNÞ7Î\5í7€ü˜<0¬%1ÃcüCg)Ë1´§R/dT—„ŠDë¼–4÷ÊQJýzÊ*±Sü½*'¥d(DSßllê4»eX,õ0P¼ÐMkJõF« to‹Ér‘ÃÊ@(hM¥ƒ`i™J çÙÚvðÉ@“zº¹–"F2Ô„ò«A‚βç8oÕ¦&Êʆ#ÌÙÞ6$DƒHËTl8ÍÔÑŽ³coÜqžÉ¯úr²}Ö2óLlÇÞ0ªÆÅTé8–å‡Äï<$±7ñ‘zØÇ(U{«Ñ}­YBÀ(Õ¤£qÜ{žÁ‰t';ˆ+ ‰ê©Ôpž­†Õ ÛϹ·FµŽq!$-lÄ+°p=QûÄÊT8ÏÖAòŒÈvôÁøûyÔùx $ÖdÈÖQ"Ì"äÓÖ ÷@'H´iW<†ç)ˆ‰ŒDcjæö æÛvëY¦" +]T„ç2";nê\báæ[öÇY¦\ûDÈE ´µˆ÷Ä»JÐol<Ù™«žxßÚou|€û­,z™ºž¸·ã Š@=€Óf×´ûúp@¼ep#H5W; kenëóf£TìyMŒ+Ô£êä6KÕŽ¨è!^þ`Ç4žšÄ´òý™Ï8öÂí]=ÿ«WGùxŸévžç¸ê‰=œT‚]£Ã‘2G^b;Ïg™Úñ‘h¿Îµû"Æ>?g&Á Ú„÷5Œ8;›rX$2˜X8+ÑÖRL"OdGýÜy¶2M OÕv´‘OÐOV¹wbM·ö†“Á”•K¹µýÔY[–ÌÇÛIp¬_W-GåN‘@¥Z]|±‰žÇ ÚÔÄî…¥VÀ‘º£…]¢æ­Áy¦Ó‰øØ&ñi¶°¤‘ÁhŠ?a ËÜ•†ÄžÙQ¯wš©üÔ=ã>^ÆCKÅfËìYu€ãAW=Cð­»øØrâJÛ2ÀÎ=þ5"'n´ àÀ_ÐK;ÍÔÑ®žCÕd1$yº¼(b? ˆyû­8<ÍN¯w¶˜š"îÄÔ”Vj—IÏ«8‡_ÁÆÁ|ÒRN€Žì+c\Ûˆ;ÍÖ~6‚êsl«©‡öZ5Ô³7Ò°w¸öìõ Ós±Ž„ƒm•ë^¬è!ó¯tŸgks22ô%Íd:ªgI{”“¯jÕÄ»jUE I76;@¶±Øê… ¸zhÉ]†úq:£¿™6%øi;H§ÙÚ§,„¢­CAà`UKU}h¨·@ÇÁ ‰˜•Ô!ÞYG¢I Ö*>ÍÔ¾ï1+sy^ß ~Í&ü/ЏvG±h^õÔRÂÑÅÊß#œ`TQìi¦hÀ½IÒ”zõúPXAŒð´ôez‡Êì}×Zo²D :Þ¼zÀ•0§GJÉ[‡ƒ$Ÿ°§î6œg«Úa€–XÍiE™¹W;,Çoh‹*â¡û*JÏ€Ø4WczgO&±Œá<ÒÖ:0< Eì½îзšLÛyØÛ)^Ø[ZѼ^©ú3bφ{Qå˜ÇMÓ¯ñn_ S/ÛÉT®D=2Æ3Iÿ,S»“œf--ÙxÁïq}Y´ú\\片ðÇ¡ÝcBpŒ–ïÑÖV‹œ2ëH¸QùÊi¦Žö¼äÁˆ™7Hœ-GÁ%¦‘ ¨"/™ý21yG^´êy<Óˆøóml‰ÉŒSê{]JÚD"C?«‡raŒL¨A‘üdíõˆ ÑöÎ1q{%±ˆÌïÖ'Œ #!¹s-í8ÍÃ2µ¢¡øŠI½jj–]õÀMnG–‚ðƒ‚™øØ¸» ‰jH‹lw!Q ˆ6ýÚ) ‡ºAP|%9k½}‡¬FñÇÐ2É«V¹¢ëIo­ŽˆVÄšY–îIåHi‡ý( õp³#ZÝ·VùM‚‡¦äŸeŠHÈc4«ãÅÃÛ!m‰m$g´ô,S°ßÃ=ª­sǺu*‰›‰$Hèq‚ÌÌÖVŒ y€½ã­Ã%˜,:;€½ãiýØh‰l‰ƒ 5ß 'x¨xú4SxÚá?R/-ùíÐ:S1kØ #îpÚc6&s LÙ¢ ¨8á:«çÙªÎÊs˜ÇP·ªŠjSºjxÌPPã÷Åå¨QÑÓø´Ée 2‘r¨ƒqÇ)DY2ÿ•~Ç Z—þÈ \$ö(S¾ŒÍ&°´˜Äcåý‚›Vób +ã÷½kÉI·  'ª¡ñN,<øcrLË $³ª„éAˆJ,γUm Ø8ç@;º¬Ymèñ½h{h;žkÞ’‚@£Ìæ ¼d§‚}¤ÄÝ€ZXÕ0œÏªô®‹:¯myLdyú3F£ë,šg4q“â­ÓLT„…>³±ÆÈ“Z좈±#r:×R…¸¾"âBømUªÅñÝó¬ÎXæA¿y‹€¸ÂÓã0.ܾíf;¯ñ€$ v1<bpçCÛæ98A‚K%ǶªÇ²æ6Ä`zÊX¢ÌPNeç„Â#ÎQ€t–¥Ø•b„»·|D«®LÐf7šîæ€è6bªT#ºoèdŠ?¡'…]gY:@]c1µœù»C‡¸¡.aäÃöÍw_˜ÜÉüB¸d«Æ‰ˆ1"…F'ÚŸ08ÞݯØpÀpĤž³¥'lèñ“Jð‹5´¨ÃÞ%…Xƒ²–:u€0ÜÈzö eá&O7.––arv;Œó@Ë(!.‡’+0hc–“š­¾`P}„ƒõ|q€f‡/ƒ–™¡Cݪ®Ð'’0È}¿AK¼QypŒË•dfì€ÔåF¢]EÔ_Ù2P¾¸3™xN;Lò@檅~ôFºor€˜ÔQt–¥ƒxáÇjaž[‡¦ æ…˜!D/Ó£ «ž¤ˆP×aÿð\ž)‘Ø Û`UMÝyhµ/9¨ÜglEÀ¿2¢{»Àƒèñ×öÌ Âè>Û8—³˜3ÀÍ IE×ólUئF2$m½RéiËÂT-É.…AY¥L†ƒ†©EÌtCE¡X1R‡ih5å+'°ãf|Ìj¥JÉœ·ÞóÄÔ?™]‘û½»¶0 ôPZbWmŸŠQá>ŸM‚ˆt8QŒ|š)ºz®zœ<(ò"^ÇÌÞ0B•ɳ,íK®$ßF¶¯ÍQë"à}mqzvCèó †uÁ“1»¾ÛÜ#¼@LJ&F¶µ,v'ö°Ô±fQ®·)=Oìð°Æ3tž#ôPqW‹µûH /AE‡'Ú—„.’ôP’êÒ¾nfmn‹ucÜ-$Ÿ™³&ÕÏ•[‡ïÙ=ÈÀ#è/¬á„û¢iQLӆÑö¢#¶MàÉù<ïâ®é&ªlrçâ®é&ØM:mÖÁzye•¦³,UþÓ¹KÖt¬ªH5£6´Ü¨s—¶‘ŠE¹®ûTJ+<.á¡ÝúH'ÅÓ=zú{¸9ì–uùSÔøyž­}}˽ -B$P+!hâé&@p¦‰»€zÜì3DKV¦ÌÔãÚe«ä‰Ø$T›…Ú•3âߗ¸7ŠF÷ê ý¢¿=]¬$GÕîŠmÙ[8rÿ1žîÑÓG8 €LFÁ%ãÕÉ((DAžgYÚ=ðÌú¦q™JÝaðÉûP¶|Ô*ÀÕ{¯\ºÃiÇ ›~”0’àrXGó Ë4ƒ©Hý\‚€H…’ËròÑ©Jîchq§S{>:YØXŠõ'’L8|ȼj8܈C‚V“ÄpÉaUòy¶ª–é e#¦½Ík¿$öǶðXxÊ‚³>¿&n°z9¸'ÐѹµèÈ ±$¢«\¼Ëö‘Õǘ©kãÒ¼ƒ6A9ò‚% {Õå£Lö:qÛkÄgÇy“Á3HLùòy¶*å˜Jžàl¡$¸ÄJºÄÊÏ›Ð[{ÄÁχ:ÉwôJí0™v€-B8,¼Á#¢ÒUÓ¢ùmã bSö·9rí(ÅÇÛ)t?NÝ`âC‚)Ü(H9ÍT¥ätdóЖ}$¨”NXÁ«%Œ„Hà“º½ºê1"H‰¨º\G7D§ØëžKur SÜrž­ý¹ù§tÕötÏó\7؉O‰r%C߀î”}˜X—ª6´Öª? w•Y2ð(JÎ «wÃí좙ÿ²*®U4õß´Û™~'W7—a÷E7b÷üW-Â1ömoµ†GAL«e¢zë༂wX+‘ò¸àôª©ÄÛ} ÷qÝ?‘ëÕzÚ0ÒÞe-.îÑšåǨH[;›¿ W;âBµ-:49ÀÏ`§ôÄø³ÞÉ4ߦ·á ¨Ú­äþËÐí²‹s@>à*¿°3éÂxïQF‘z:R÷ø7»ÞÓD¿b{‹hlßì‰Õií%ßSvJÓ½„zwÔ\©ZŒèœÕ(ÿHŽ>¹ e7§™J’V¼?¢Ò›2gkCšœ{ô?ÞÛŒ|`#+ÈLÝq3ºò7ZþÚ®¥Ù`=£õ©M¼âÉ®{´c}k‡@$¤§BbGÅZÑFw}†zñ“ UШ×VJë–~ì§qläWª#×4=JQ³ƒ\ÿE•ÙCI³VÄí¿È{0C“e.ĵ¼?)L9˜+ kÙs'1\›µ —_!puX8¾p±„wùÞ!`¿V€»­ÂÚÍ´*Šç ›CWBH5ÓõÝ8õ CH´äÉä.Óòð‹¡g­ GX÷Ûý˜W# —;›ˆÜbD'Mü,›ùÎ_%@‹~´j-Û3®çäÓ‚†>0ãìJÁ.ô„ Be׺ƒœˆ“Vxï`›Ÿì”0´e§˜ ¸çæOœ0¤û(n™>MÜÜârÑL‘äåâRTïxš©ª»Æ€[§rts|ŠÖìíÖ2¡~Œ~+’’•5i§0÷<²3Š8×Õη ÓÙƒÿpðVöäqÚiSëTþáðËGzñ¹ZkŒcóÇü„b€Ø2\›WIœtÞIjAò8o’¯œj(ØauÐÓ/Ãàxÿ`7>Vxän·ÌÜ~Ð-Þø ½7Ó!§’yo`÷gȂŃÂf’]¯»ÿèüƒ² 0„qœá娩{PWM[Æ<“‡Þ— bêGKK 㲂xcl¢G»ŒæÇŇ m|wËŒCô–éká.΂*}fDyÞH©~ÀbE®J­ª8#F:gN²©¨lÿôÓ¿þÔ6<ƒÝþ÷ùúî>ýôw¿˜7-ÑæÓÏvJ{û™ð‹ÐâË“÷éúÓ.ÿãáëÛóýûH°µ³mºòÞ2L‡1LŸ¾•ñë.O?^®ïÑ“¼™ÛËÛõ7xe’·u—/÷ߟ^ï«á’áÁ÷|èЮ¶éß}ÀÌ”ðLû¯0Úá°Çµ¿<ãc˜êMÓ_¾<½ŠUz+Kêòðb¯´ãåîõhÌÄ`Þ¹Akeˆ§r—½5 ìíöæÿ‚/BÜ”‰Ï­òü¦Ë¼ýóèÉ?‘±¬þoåQ7ÝÁ· ¸—u{žÕW´û?ûðm~n‹/^äûÿêSž?¢3Ôͧîlæåàþ«+jN¼ÿ©ÁÙñúæ}\/ã_»iÐz¶©Èã,dJ}ÒYƒ‰2\>?=?ß¿üÀ‚åÔ|/×¶mûËwZô;Êú}øþŸÄ.ËñI'¦o»\^ŸÞž‹µùòãñéµLµ®švÝåEœ‚~Å/ßuF·Ö0£ev~@‘ÖÂë7z!¬ý‹g€¦|ù£^j³¶—§××'x†vZ—Ëïèù]âôݸ¾oöÑU|Íßšãkί­éçË¿}´å!-…ÏâyÉdy|yÆ4áÅþñp¨ÁÅâöpx±|å/ø+̲ 17äŸËr¹±¿·]?z¹{üúôüðú 7ÐÀÄrù[ó}Ã8ÐuòÏ£û}ÈÝc1yùq÷|w½½Þ¿ä/ïÇ'†õòo÷å¶Ä;í÷…T¦vŸˆÿ|i$VÛ´GËM´-_Ô¹­í„ž×qÞ÷¨ùwøH/swnÆ Ísåæß}pŸ¿“mš©¾%ó`:t<˜y>ôY0Op2‡p%Ú@` ÄÅF³üÂgü_ߘ;Ì¢éòÛÇG¼8ÑhõN™Å׫ZÿÄüÁtÖ¾»Ü¿~Óà%ÏP|é‹}FœìÝóf@ܪ ÷ÝëÃ_øäÇ©½Ü˱wi/ï?ÚU¬üâ_‹•åòòz÷üZìÈ„yÀTç5J°»ãmóf_úÝOŸþó._í[úN&.»]rwÅ~•yl¼õ‘ÛÛÚË?Ëܽþ§—òY…ßd_pMxý*³ö×y¹lŸ›/ßïñHø–môÐaG~qߌ/Æi~ñ?¿ÿº™Âô·Û×>ßÿPT° @¸¿“P÷X®a¼×osc°–1ø~/+ 9CMÛªUü"_þG}Vp‰÷ú—©‘¥ÿ g¶ô«¸¹úïðW<Ò­–wb Êo«Ž»,Q. ¸¼ë®\Éty¼{þz_lÊ£~,€k-ß,k¨¿4B¨_Ú‹ù†VžÖ—òñ9ŒäGðv½üßopÜCË+ãó{»Þ}9š/Ÿï“Ö‰óôÑâéÏø;’Õu¶ø·xn]ˆëÌYUü$_u¬Ë/×ëý—yrxpji½¼Ü—O ÚøåÛ}ýiD^‰ÜÜÃëöËx¹ÞýÆF°ñ0I°¸¾çC”©ED$`ÙVé7y@z—vkßepœ„<üz>=¾/«±ã3`Ö‡z_>°È7Ý}µ_ÅÕ]¾ó}ò\)ß$C°/‡;N±²ZV-Ô Ñ[éX¼¿åœÅ÷¸º>=—o••üpµ‹“·==¿Ê#á/£xr n½_1kÿæÞV÷4êêîÓó­ïezpF©‡ïåíîñáÿÑ›Uä“›(ýÙpsÓÑM&Ãrt÷´8…»·?~“i ç‚—¦q­_zÝÞÿ‹.Áy„o*/o>òå7†!„ í!eË:;怗†#< PO(Eâ[Îà‡ž™Êƒ|á½;"ïåÙ ýá {WÍ/Ɔ±ÜbÏ´hÈÀ?' À‚gïËKsòÙæ¨mµzGþ»˜O^)^ëÄ/óI²2­¿üvÙ/öAø½§ï÷ÅJ_<_êëxÄK]Hõ2efüŸP.[ Ò×rKf4áGâÈSï?×¼¹»Œdœ }:÷YÛG¹³Nž€;eå›­U‘¾8^4VXEÏ¿Ý$B>\*}FÿŠöòåZ$\~¾{Ù”…Y¡»½2Ã]šƒô ð„½ÆFúž^}ÏýË˽yZYÜw Tx#£Lå’_^þˆYÀžÌ fÈÓ£.–AcxÏÃz[óªüÚ ±GéÇ* bó¨O4Ê{ä×ò~,Ú2Ê%ÍÝåOo/¯åêûÛžóE‰ÉÆDÜþßOß?Tîñáûý˜@»r‘,ìE|)ÿn/eòw2ظAœËÛô—Ï˘ˆ‚ŠÿHˆÂ Ì··ýÞ2y,¶8a@p€<õ§·×ræß¿<”ùƒ¯h ,(!<¼µ_ÕeÍ‚—ÞÊ„h÷P8[xxy•Ë{Ã=•Ëú†—NÌz%ØTóòËýëÝÃãË>Íîž…Ù~)VÇòÝâ.ŸÞþæåÏÕoVZF»Œ?!@qM‚^« Ø ‡Å^‘0öóÓW{M~¹Û¿]!Y™ì_Ë•5ãðo¸ÏOp ¶ö„žß8¡”\èçàø®œ|Áb/½.¹ï—ïÊfWa?¿XÇäÿ>L|r]Üà௓Î bƒ†…brzØý|ÿh´àù?|V)ll/åBqÙ¸§»-Hÿjß0îÃØÁ6Bˆœbàkap«2oþ¹½¼ý0±mw}ê Bà›.ÞÙ<3|èYø}±{šÕù~-Æ`5À×ñµŒ è¿gЯáßQÝìä~_Ë #”kûa‡Úá›>?^ÈDõàCå3¸Å…Ê#ªñ8g%¥‚6?õ« #£4ºL¨)ÃB¦MIf‹$ÃËV!åòòøôÃâã°Å&–?(,p1h©ûº×¿>ß}y¨> stream xœ…X;“ã6ÎÙùÊrd‚ðWvÕv]¹Ê.9ò:À’D/2Aîxþýõ ©Ù±] 6ºÝ_ÝÐûä$÷ þ…ÿU·Kö×Ý;I«ûð¯êößw_ÿ,³½9™<Í÷çËŽwȽLõ©LÒ}‘ä'™šý¹Ûý*ìÕŽi^žLYˆÞ¹ßÌ)I2qmݸþ𱓂o¥<“‰¦¯Ú¹núk—ZL·¦Ú]ìÜN¼H#~tÏÓж÷›?PR¨R‰á ÁVš–¢š¤èÜtÐ~]§ÃQ§ ^”ønž¢ƒZ€ù–äâ9®Q‡ßÎ?ì$8šébþßîüÕ¯ €¢¦(x©t">¢I&užŠ¡±L¢"¥ ÀŸ|ˆ$) 1±Lsy%‹i‡ëñ€Ço¥h›ÃQ¢cÀ zgF¸¶¡ó¡ïY&ð1‡JÔäÅë2÷ÕÔ =jÆ‚Xß¾Ÿr-F7ÍcïÃB’ }(„‡¼´‹ÿ…øtÈôÉhY ÛÎî?ŒÉùæFÓ0ZØø’€äD§•E¶‰Ü€ŸÍfÁRØd¡Å GS™æÂs8æ&£5ï¼ë>bÁ—`S/æé(çÝÝŽv¢d&„‚@SYùˆØBñšnvZuUCwŸ'çו-˜ ø5ý{EI®"JrW ʨìÊC¦ñ Ž™nΪú‡¤¢Bù*Q„¡Ï¥è8¤¦P>ÍÒ¹¹³f“1€x,ÉGç ÎŽ¸ y/Áª†ÀöuÔÞ¸z®¢mH!éry]û°!Á ÌÅeDx—RgZ ]\OCT‚üµÑ_†±³ˆ`¬^…•8Iq¿x7.yôT%I!ƒ%Iaî¡H'@ɯϛ3Ç&‘à„›a|B1. Š,Ø#¶h®·ð»j”ÑF¥@8½S~©ŒY¦Lh6-¸² ;…˜+θx‹ŸÄÅúÉa— AgÙã6HÕº­uÞG9t6: dzGäG¥È7B"œÌÀ¬ëÁd°ˆX¯W)ظe3ŒÙ´œº².]lõ ¼'y)>¬$岫-C"ú²!TÌ”ÆuÀÈ%êÌ·T2nùÏh$±7C÷‚ÞU7ì·w‰­–"¾aª3ÀŸÌD¿èž;€A}„ó`Ó¼€ÕS0åú%!)âÖÀ­À,ÕAÑa6 ü„ŽGMª$°ÖË3¤{@&E)Œ÷«CÓfUÆl•¤›ë+_e€>†ª‚óû–•L·´ìFˆ!Û¿`áMs ŠÙ#k@GMwßpÓ8ÙPÚð6\‰!ÁoJJD3­¼™È S>œ´C1AZZO§W„Ú¹ í‡Ö­ãÂ…a’æIcX[÷gT– ½ót":©ø¾ÂT„…VÀ¡J €/KWæh¢ 7sŒ~ºº)¡Íoö¦éëù!Øx`ÄLÆ“Ûö:ŒÍt#Ê+è £»Ìž ‚ „‚é '@îâçµõW( o€Í·aö„ŠØè|øš©ŠÂ®@HÌJQRAƒ¸¥KÑ/Í{©…„)ä³6¸ÀûÚ„Ù­Pä…RD¡ŸèDF 7¾„åBn¡Ø¶aY&_\ÝtÜÇp=åüÒ¬ÎǹLqk¨]§›p ¨y–N+'N ¶Q-÷Ç%GõÇêENCƒRšÂskú…¨&–Ï7HðÌ*yFe‡ÏK³Áuð’|™Û¨Zqšñ̪Õ2Å‘UŠÁ»¨Èˆë°¶§(å[¯êüdÇ)jÌqJ€9|À)Á¯$d;+’À¤Ì·`l\ÏIáÄNBq:¾¨h¢PK9ƒÜÏ#½ˆw½mƒÎ0ÎC«!Ð=E8Äqˆvæ3=õ~Õø W´œ›Ç½+µ²jèvzp°ô:#„}KÍ!øø|kZ÷œq’L3*íGöÂUäF zdÒœæ<ÐÄN:é·{¹†‹Ò~X0•6tÏQT†ÎæƒZIõÍ߀9¶÷#Ì¿ÉO¶©Q¤Ÿ0&ámE@p¹äRxƒÌo®…® %µGΈFhH¶£ï†Â_1ï0î¼Om÷!ë›vë6'©¦ugÿÜtÿ¦[èhî »yÁsÿy«˜%x[í!4>÷‘ó}³û|'ùKª{b>¥û[ÉÈJ4×»0ð§p¥ K"YNÜ¡%ß ÖÄ#á^"³‰«›|Tå2Í36\@?òÞD1FŸm|ÀXx RP÷ÖVÑWxÅ–ÂÆÅﳟ–—ÍõÓÝýu­zkN¨éØq˜c¦yäObˆŒm|„kÐTˆ®@)v¶ïi*É M÷ýeŸnÔÉ¡JJ8äIo¡K<ñXƒg~áÎ$m^'&àˆ[lB4N«tƒŒz@)õx8e,@‡j7“ácØ•=̳›MˆL8>5ÙDtŒ³5hf}mÇ:Z0|‹ZN¤g’‡ãM£ëÿ¨¢©ˆ[»ÞI¯qÖÈóLc{ˆ_yÊ´Â*¤>œßý÷¼û þþÒ7Ö9endstream endobj 184 0 obj << /Type /XRef /Length 218 /Filter /FlateDecode /DecodeParms << /Columns 5 /Predictor 12 >> /W [ 1 3 1 ] /Info 3 0 R /Root 2 0 R /Size 185 /ID [<59ebf08006681b42f124ff1ca023017d><1f8a7ac1ac0687e3a006513941078fd6>] >> stream xœíÑ? AQðsîÿ®:á–B÷–Q‘o€òŒw°²I›b±™øÊd°²H>€…ÍlaP¢®ó<_Ââ ¿ÞÎûötN¯!p )„¢aàBþý±¡P›­®í+ör[ý÷òkCáÍwºV ì"^öF{0µ†þzMè¾ lCç3h `ºHÇìžy_gf •.Ó¬ õ¡Y…Ƈ™OÖÖ-&¼aŽóΉ]æg§0_bò…ó¾_²>ò6ç»0y€þH–a$Ë.ob{¨økÕ`&’eb©5k}&â ”U$ endstream endobj startxref 346709 %%EOF maxLik/inst/doc/stochastic-gradient-maxLik.Rnw0000644000175100001440000007613714077525067021144 0ustar hornikusers\documentclass{article} \usepackage{graphics} \usepackage{amsmath} \usepackage{amssymb} \usepackage{indentfirst} \usepackage[utf8]{inputenc} \usepackage{natbib} \usepackage{xspace} \newcommand{\elemProd}{\ensuremath{\odot}} % elementwise product of matrices \newcommand*{\mat}[1]{\mathsf{#1}} \newcommand{\maxlik}{\texttt{maxLik}\xspace} \newcommand*{\transpose}{^{\mkern-1.5mu\mathsf{T}}} %\newcommand{\transpose}{\intercal} \renewcommand*{\vec}[1]{\boldsymbol{#1}} % \VignetteIndexEntry{SGA introduction: the basic usage of maxSGA} \begin{document} <>= options(keep.source = TRUE, width = 60, try.outFile=stdout() # make try to produce error messages ) foo <- packageDescription("maxLik") @ \title{Stochastic Gradient Ascent in maxLik} \author{Ott Toomet} \maketitle \section{\texttt{maxLik} and Stochastic Gradient Ascent} \texttt{maxLik} is a package, primarily intended for Maximum Likelihood and related estimations. It includes several optimizers and associated tools for a typical Maximum Likelihood workflow. However, as predictive modeling and complex (deep) models have gained popularity in the recend decade, \texttt{maxLik} also includes a few popular algorithms for stochastic gradient ascent, the mirror image for the more widely known stochastic gradient descent. This vignette gives a brief overview of these methods, and their usage in \texttt{maxLik}. \section{Stochastic Gradient Ascent} \label{sec:stochastic-gradient-ascent} In machine learning literature, it is more common to describe the optimization problems as minimization and hence to talk about gradient descent. As \texttt{maxLik} is primarily focused on maximizing likelihood, it implements the maximization version of the method, stochastic gradient ascent (SGA). The basic method is simple and intuitive, it is essentially just a careful climb in the gradient's direction. Given and objective function $f(\vec{\theta})$, and the initial parameter vector $\vec{\theta}_{0}$, the algorithm will compute the gradient $\vec{g}(\vec{\theta}_{0}) = \nabla_{\vec{\theta}} f(\vec{\theta})\big|_{\vec{\theta} = \vec{\theta}_{0}}$, and update the parameter vector as $\vec{\theta}_{1} = \vec{\theta}_{0} + \rho \vec{g}(\vec{\theta}_{0})$. Here $\rho$, the \emph{learning rate}, is a small positive constant to ensure we do not overshoot the optimum. Depending on the task it is typically of order $0.1 \dots 0.001$. In common tasks, the objective function $f(\vec{\theta})$ depends on data, ``predictors'' $\mat{X}$ and ``outcome'' $\vec{y}$ in an additive form $f(\vec{\theta}; \mat{X}, \vec{y}) = \sum_{i} f(\vec{\theta}; \vec{x}_{i}, y_{i})$ where $i$ denotes ``observations'', typically arranged as the rows of the design matrix $\mat{X}$. Observations are often considered to be independent of each other. The overview above does not specify how to compute the gradient $\vec{g}(\vec{\theta}_{0})$ in a sense of which observations $i$ to include. A natural approach is to include the complete data and compute \begin{equation} \label{eq:full-batch-gradient} \vec{g}_{N}(\vec{\theta}_{0}) = \frac{1}{N}\sum_{i=1}^{N} \nabla_{\vec{\theta}} f(\vec{\theta}; \vec{x}_{i})\big|_{\vec{\theta} = \vec{\theta}_{0}}. \end{equation} In SGA context, this approach is called ``full batch'' and it has a number of advantages. In particular, it is deterministic (given data $\mat{X}$ and $\vec{y}$), and computing of the sum can be done in parallel. However, there are also a number of reasons why full-batch approach may not be desirable \citep[see][]{bottou2018SIAM}: \begin{itemize} \item Data over different observations is often more or less redundant. If we use all the observations to compute the update then we spend a substantial effort on redundant calculations. \item Full-batch gradient is deterministic and hence there is no stochastic noise. While advantageous in the latter steps of optimization, the noise helps the optimizer to avoid local optima and overcome flat areas in the objective function early in the process. \item SGA achieves much more rapid initial convergence compared to the full batch method (although full-batch methods may achieve better final result). \item Cost of computing the full-batch gradient grows with the sample size but that of minibatch gradient does not grow. \item It is empirically known that large-batch optimization tend to find sharp optima \citep[see][]{keskar+2016ArXiv} that do not generalize well to validation data. Small batch approach leads to a better validation performance. \end{itemize} In contrast, SGA is an approach where the gradient is computed on just a single observation as \begin{equation} \label{eq:stochastic-gradient} \vec{g}_{1}(\vec{\theta}_{0}) = \nabla_{\vec{\theta}} f(\vec{\theta}; \vec{x}_{i}, y_{i})\big|_{\vec{\theta} = \vec{\theta}_{0}} \end{equation} where $i$ is chosen randomly. In applications, all the observations are usually walked through in a random order, to ensure that each observation is included once, and only once, in an \emph{epoch}. Epoch is a full walk-through of the data, and in many ways similar to iteration in a full-batch approach. As SGA only accesses a single observation at time, it suffers from other kind of performance issues. In particular, one cannot parallelize the gradient function \eqref{eq:stochastic-gradient}, operating on individual data vectors may be inefficient compared to larger matrices, and while we gain in terms of gradient computation speed, we lose by running the optimizer for many more loops. \emph{Minibatch} approach offers a balance between the full-batch and SGA. In case of minibatch, we compute gradient not on individual observations but on \emph{batches} \begin{equation} \label{eq:minibatch-gradient} \vec{g}_{m}(\vec{\theta}_{0}) = \frac{1}{|\mathcal{B}|}\sum_{i\in\mathcal{B}} \nabla_{\vec{\theta}} f(\vec{\theta}; \vec{x}_{i}, y_{i})\big|_{\vec{\theta} = \vec{\theta}_{0}} \end{equation} where $\mathcal{B}$ is the batch, a set of observations that are included in the gradient computation. Normally the full data is partitioned into a series of minibatches and walked through sequentially in one epoch. \section{SGA in \texttt{maxLik} package} \label{sec:sga-in-maxlik} \maxlik implements two different optimizers: \texttt{maxSGA} for simple SGA (including momentum), and \texttt{maxAdam} for the Adaptive Moments method \citep[see][p. 301]{goodfellow+2016DL}. The usage of both methods mostly follows that of the package's main workhorse, \texttt{maxNR} \citep[see][]{henningsen+toomet2011}, but their API has some important differences due to the different nature of SGA. The basic usage of the maxSGA is as follows: <>= maxSGA(fn, grad, start, nObs, control) @ where \texttt{fn} is the objective function, \texttt{grad} is the gradient function, \texttt{nObs} is number of observations, and \texttt{control} is a list of control parameters. From the user's perspective, \texttt{grad} is typically the most important (and the most complex) argument. Next, we describe the API and explain the differences between the \texttt{maxSGA} API and \texttt{maxNR} API, and thereafter give a few toy examples that demonstrate how to use \texttt{maxSGA} in practice. \subsection{The objective function} Unlike in \texttt{maxNR} and the related optimizers, SGA does not directly need the objective function \texttt{fn}. The function can still be provided (and perhaps will in most cases), but one can run the optimizer without it. If provided, the function can be used for printing the value at each epoch (by setting a suitable \texttt{printLevel} control option), and for stopping through \emph{patience} stopping condition. If \texttt{fn} is not provided, do not forget to add the argument name for the gradient, \texttt{grad=}, as otherwise the gradient will be treated as the objective function with unexpected results! If provided, the function should accept two (or more) arguments: the first must be the numeric parameter vector, and another one, named \texttt{index}, is the list of indices in the current minibatch. As the function is not needed by the optimizer itself, it is up to the user to decide what it does. An obvious option is to compute the objective function value on the same minibatch as used for the gradient computation. But one can also opt for something else, for instance to compute the value on the validation data instead (and ignore the provided \emph{index}). The latter may be a useful option if one wants to employ the patience-based stopping criteria. \subsection{Gradient function} \label{sec:gradient-function} Gradient is the work-horse of the SGA methods. Although \maxlik can also compute numeric gradient using the finite difference method (this will be automatically done if the objective function is provided but the gradient isn't), this is not advisable, and may be very slow in high-dimensional problems. \texttt{maxLik} uses the numerator layout, i.e. the gradient should be a $1\times K$ matrix where columns correspond to the components of the parameter vector $\vec{\theta}$. For compatibility with other optimizers in \texttt{maxLik} it also accepts a observation-wise matrix where rows correspond to the individual observations and columns to the parameter vector components. The requirements for the gradient function arguments are the same as for \texttt{fn}: the first formal argument must be the parameter vector, and it must also have an argument \texttt{index}, a numeric index for the observations to be included in the minibatch. \subsection{Stopping Conditions} \label{sec:stopping-conditions} \texttt{maxSGA} uses three stopping criteria: \begin{itemize} \item Number of epochs (control option \texttt{iterlim}): number of times all data is iterated through using the minibatches. \item Gradient norm. However, in case of stochastic approach one cannot expect the gradient at optimum to be close to zero, and hence the corresponding criterion (control option \texttt{gradtol}) is set to zero by default. If interested, one may make it positive. \item Patience. Normally, each new iteration has better (higher) value of the objective function. However, in certain situations this may not be the case. In such cases the algorithm does not stop immediately, but continues up to \emph{patience} more epochs. It also returns the best parameters, not necessarily the last parameters. Patience can be controlled with the options \texttt{SG\_patience} and \texttt{SG\_patienceStep}. The former controls the patience itself--how many times the algorithm is allowed to produce an inferior result (default value \texttt{NULL} means patience criterion is not used). The latter controls how often the patience criterion is checked. If computing the objective function is costly, it may be useful to increase the patience step and decrease the patience. \end{itemize} \subsection{Optimizers} \label{sec:optimizers} \texttt{maxLik} currently implements two optimizers: \emph{SGA}, the stock gradient ascent (including momentum), and \emph{Adam}. Here we give some insight into the momentum, and into the Adam method, the basic gradient-only based optimization technique was explained in Section~\ref{sec:stochastic-gradient-ascent}. It is easy and intuitive to extend the SGA method with momentum. As implemented in \texttt{maxSGA}, the momentum $\mu$ ($0 < \mu < 1$) is incorporated into the the gradient update as \begin{equation} \label{eq:gradient-update-momentum} \vec{\theta}_{t+1} = \vec{\theta}_{t} + \vec{v}_{t} \quad\text{where}\quad \vec{v}_{t} = \mu \vec{v}_{t-1} + \rho \vec{g}(\vec{\theta}_{t}). \end{equation} See \citet[p. 288]{goodfellow+2016DL}. The algorithm takes the initial ``velocity'' $\vec{v}_{0} = \vec{0}$. It is easy to see that $\mu=0$ is equivalent to no-momentum case, and if $\vec{g}(\vec{\theta})$ is constant, $\vec{v}_{t} \to \rho \vec{g}(\vec{\theta})/(1 - \mu)$. So the movement speeds up in a region with stable gradient. As a downside, it is also easier overshoot a maximum. But this behavior makes momentum-equipped SGA less prone of getting stuck in a local optimum. Momentum can be set by the control option \texttt{SG\_momentum}, the default value is 0. Adaptive Moments method, usually referred to as \emph{Adam}, \citep[p. 301]{goodfellow+2016DL} adapts the learning rate by variance of the gradient--if gradient components are unstable, it slows down, and if they are stable, it speeds up. The adaptation is proportional to the weighted average of the gradient divided by the square root of the weighted average of the gradient squared, all operations done component-wise. In this way a stable gradient component (where moving average is similar to the gradient value) will have higher speed than a fluctuating gradient (where the components frequently shift the sign and the average is much smaller). More specifically, the algorithm is as follows: \begin{enumerate} \item Initialize the first and second moment averages $\vec{s} = \vec{0}$ and $\vec{r} = \vec{0}$. \item Compute the gradient $\vec{g}_{t} = \vec{g}(\vec{\theta}_{t})$. \item Update the average first moment: $\vec{s}_{t+1} = \mu_{1} \vec{s}_{t} + (1 - \mu_{1}) \vec{g}_{t}$. $\mu_{1}$ is the decay parameter, the larger it is, the longer memory does the method have. It can be adjusted with the control parameter \texttt{Adam\_momentum1}, the default value is 0.9. \item Update the average second moment: $\vec{r}_{t+1} = \mu_{2} \vec{r}_{t} + (1 - \mu_{2}) \vec{g}_{t} \elemProd \vec{g}_{t}$ where $\elemProd$ denotes element-wise multiplication. The control parameter for the $\mu_{2}$ is \texttt{Adam\_momentum2}, the default value is 0.999. \item As the algorithm starts with the averages $\vec{s}_{0} = \vec{r}_{0}= 0$, we also correct the resulting bias: $\hat{\vec{s}} = \vec{s}/(1 - \mu_{1}^{t})$ and $\hat{\vec{r}} = \vec{r}/(1 - \mu_{2}^{t})$. \item Finally, update the estimate: $\vec{\theta}_{t+1} = \vec{\theta}_{t} + \rho \hat{\vec{s}}/(\delta + \sqrt{\hat{\vec{r}}})$ where division and square root are done element-wise and $\delta=10^{-8}$ takes care of numerical stabilization. \end{enumerate} Adam optimizer can be used with \texttt{maxAdam}. \subsection{Controlling Optimizers} \label{sec:control-options} Both \texttt{maxSGA} and \texttt{maxAdam} are designed to be similar to \texttt{maxNR}, and mostly expect similar arguments. In particular, both functions expect the objective function \texttt{fn}, gradient \texttt{grad} and Hessian function \texttt{hess}, and the initial parameter start values \texttt{start}. As these optimizers only need gradient, one can leave out both \texttt{fn} and \texttt{hess}. The Hessian is mainly included for compatibility reasons and only used to compute the final Hessian, if requested by the user. As SGA methods are typically used in contexts where Hessian is not needed, by default the algorithms do not return Hessian matrix and hence do not use the \texttt{hess} function even if provided. Check out the argument \texttt{finalHessian} if interested. An important SGA-specific control options is \texttt{SG\_batchSize}. This determines the batch size, or \texttt{NULL} for the full-batch approach. Finally, unlike the traditional optimizers, stochastic optimizers need to know the size of data (argument \texttt{nObs}) in order to calculate the batches. \section{Example usage: Linear regression} \label{sec:example-usage-cases} \subsection{Setting Up} \label{sec:setting-up} We demonstrate the usage of \texttt{maxSGA} and \texttt{maxAdam} to solve a linear regression (OLS) problem. Although OLS is not a task where one commonly relies on stochastic optimization, it is a simple and easy-to understand model. We use the Boston housing data, a popular dataset where one traditionally attempts to predict the median house price across 500 neighborhoods using a number of neighborhood descriptors, such as mean house size, age, and proximity to Charles river. All variables in the dataset are numeric, and there are no missing values. The data is provided in \emph{MASS} package. First, we create the design matrix $\mat{X}$ and extract the house price $y$: <<>>= i <- which(names(MASS::Boston) == "medv") X <- as.matrix(MASS::Boston[,-i]) X <- cbind("const"=1, X) # add constant y <- MASS::Boston[,i] @ Although the model and data are simple, it is not an easy task for stock gradient ascent. The problem lies in different scaling of variables, the means are <<>>= colMeans(X) @ One can see that \emph{chas} has an average value \Sexpr{round(mean(X[,"chas"]), 3)} while that of \emph{tax} is \Sexpr{round(mean(X[,"tax"]), 3)}. This leads to extremely elongated contours of the loss function: <>= eigenvals <- eigen(crossprod(X))$values @ One can see that the ratio of the largest and the smallest eigenvalue is $\mat{X}^{\transpose} \mat{X} = \Sexpr{round(eigenvals[1]/eigenvals[14], -5)}$. Solely gradient-based methods, such as SGA, have trouble working in the resulting narrow valleys. For reference, let's also compute the analytic solution to this linear regression model (reminder: $\hat{\vec{\beta}} = (\mat{X}^{\transpose}\,\mat{X})^{-1}\,\mat{X}^{\transpose}\,\vec{y}$): <<>>= betaX <- solve(crossprod(X)) %*% crossprod(X, y) betaX <- drop(betaX) # matrix to vector betaX @ Next, we provide the gradient function. As a reminder, OLS gradient in numerator layout can be expressed as \begin{equation} \label{eq:ols-gradient} \vec{g}_{m}(\vec{\theta}) = -\frac{2}{|\mathcal{B}|} \sum_{i\in\mathcal{B}} \left(y_{i} - \vec{x}_{i}^{\transpose} \cdot \vec{\theta} \right) \vec{x}_{i}^{\transpose} = -\frac{2}{|\mathcal{B}|} \left(y_{\mathcal{B}} - \mat{X}_{\mathcal{B}} \cdot \vec{\theta} \right)^{\transpose} \mat{X}_{\mathcal{B}} \end{equation} where $y_{\mathcal{B}}$ and $\mat{X}_{\mathcal{B}}$ denote the elements of the outcome vector and the slice of the design matrix that correspond to the minibatch $\mathcal{B}$. We choose to divide the value by batch size $|\mathcal{B}|$ in order to have gradient values of roughly similar size, independent of the batch size. We implement it as: <<>>= gradloss <- function(theta, index) { e <- y[index] - X[index,,drop=FALSE] %*% theta g <- t(e) %*% X[index,,drop=FALSE] 2*g/length(index) } @ The \texttt{gradloss} function has two arguments: \texttt{theta} is the parameter vector, and \texttt{index} tells which observations belong to the current minibatch. The actual argument will be an integer vector, and hence we can use \texttt{length(index)} to find the size of the minibatch. Finally, we return the negative of~\eqref{eq:ols-gradient} as \texttt{maxSGA} performs maximization, not minimization. First, we demonstrate how the models works without the objective function. We have to supply the gradient function, initial parameter values (we use random normals below), and also \texttt{nObs}, number of observations to select the batches from. The latter is needed as the optimizer itself does not have access to data but still has to partition it into batches. Finally, we may also provide various control parameters, such as number of iterations, stopping conditions, and batch size. We start with only specifying the iteration limit, the only stopping condition we use here: <>= library(maxLik) set.seed(3) start <- setNames(rnorm(ncol(X), sd=0.1), colnames(X)) # add names for better reference res <- try(maxSGA(grad=gradloss, start=start, nObs=nrow(X), control=list(iterlim=1000) ) ) @ This run was a failure. We encountered a run-away growth of the gradient because the default learning rate $\rho=0.1$ is too big for such strongly curved objective function. But before we repeat the exercise with a smaller learning rate, let's incorporate gradient clipping. Gradient clipping, performed with \texttt{SG\_clip} control option, caps the $L_{2}$-norm of the gradient while keeping it's direction. We clip the squared norm at 10,000, i.e. the gradient norm cannot exceed 100: <<>>= res <- maxSGA(grad=gradloss, start=start, nObs=nrow(X), control=list(iterlim=1000, SG_clip=1e4) # limit ||g|| <= 100 ) summary(res) @ This time the gradient did not explode and we were able to get a result. But the estimates are rather far from the analytic solution shown above, e.g. the constant estimate \Sexpr{round(coef(res)[1], 3)} is very different from the corresponding analytic value \Sexpr{round(betaX[1], 3)}. Let's analyze what is happening inside the optimizer. We can ask for both the parameter values and the objective function value to be stored for each epoch. But before we can store its value, in this case mean squared error (MSE), we have to supply an objective function to maxSGA. We compute MSE on the same minibatch as <<>>= loss <- function(theta, index) { e <- y[index] - X[index,] %*% theta -crossprod(e)/length(index) } @ Now we can store the values with the control options \texttt{storeParameters} and \texttt{storeValues}. The corresponding numbers can be retrieved with \texttt{storedParameters} and \texttt{storedValues} methods. For \texttt{iterlim=R}, the former returns a $(R+1) \times K$ matrix, one row for each epoch and one column for each parameter component, and the latter returns a numeric vector of length $R+1$ where $R$ is the number of epochs. The first value in both cases is the initial value, so we have $R+1$ values in total. Let's retrieve the values and plot both. We decrease the learning rate to $0.001$ using the \texttt{SG\_learningRate} control. Note that although we maximize negative loss, we plot positive loss. \setkeys{Gin}{width=\textwidth, height=80mm} <>= res <- maxSGA(loss, gradloss, start=start, nObs=nrow(X), control=list(iterlim=1000, # will misbehave with larger numbers SG_clip=1e4, SG_learningRate=0.001, storeParameters=TRUE, storeValues=TRUE ) ) par <- storedParameters(res) val <- storedValues(res) par(mfrow=c(1,2)) plot(par[,1], par[,2], type="b", pch=".", xlab=names(start)[1], ylab=names(start)[2], main="Parameters") ## add some arrows to see which way the parameters move iB <- c(40, nrow(par)/2, nrow(par)) iA <- iB - 10 arrows(par[iA,1], par[iA,2], par[iB,1], par[iB,2], length=0.1) ## plot(seq(length=length(val))-1, -val, type="l", xlab="epoch", ylab="MSE", main="Loss", log="y") @ We can see how the parameters (the first and the second components, ``const'' and ``crim'' in this figure) evolve through the iterations while the loss is rapidly falling. One can see an initial jump where the loss is falling very fast, followed but subsequent slow movement. It is possible the initial jump be limited by gradient clipping. \subsection{Training and Validation Sets} \label{sec:training-validation} However, as we did not specify the batch size, \texttt{maxSGA} will automatically pick the full batch (equivalent to control option \texttt{SG\_batchSize = NULL}). So there was nothing stochastic in what we did above. Let us pick a small batch size--a single observation at time. However, as smaller batch sizes introduce more noise to the gradient, we also make the learning rate smaller and choose \texttt{SG\_learningRate = 1e-5}. But now the existing loss function, calculated just at the single observation, carries little meaning. Instead, we split the data into training and validation sets and feed batches of training data to gradient descent while calculating the loss on the complete validation set. This can be achieved with small modifications in the \texttt{gradloss} and \texttt{loss} function. But as the first step, we split the data: <<>>= i <- sample(nrow(X), 0.8*nrow(X)) # training indices, 80% of data Xt <- X[i,] # training data yt <- y[i] Xv <- X[-i,] # validation data yv <- y[-i] @ Thereafter we modify \texttt{gradloss} to only use the batches of training data while \texttt{loss} will use the complete validation data and just ignore \texttt{index}: <<>>= gradloss <- function(theta, index) { e <- yt[index] - Xt[index,,drop=FALSE] %*% theta g <- -2*t(e) %*% Xt[index,,drop=FALSE] -g/length(index) } loss <- function(theta, index) { e <- yv - Xv %*% theta -crossprod(e)/length(yv) } @ Note that because the optimizer only uses training data, the \texttt{nObs} argument now must equal to the size of training data in this case. Another thing to discuss is the computation speed. \texttt{maxLik} implements SGA in a fairly complex loop that does printing, storing, and complex function calls, computes stopping conditions and does many other checks. Hence a smaller batch size leads to many more such auxiliary computations per epoch and the algorithm gets considerably slower. This is less of a problem for complex objective functions or larger batch sizes, but for linear regression, the slow-down is very large. For demonstration purposes we lower the number of epochs from 1000 to 100. How do the convergence properties look now with the updated approach? <>= res <- maxSGA(loss, gradloss, start=start, nObs=nrow(Xt), # note: only training data now control=list(iterlim=100, SG_batchSize=1, SG_learningRate=1e-5, SG_clip=1e4, storeParameters=TRUE, storeValues=TRUE ) ) par <- storedParameters(res) val <- storedValues(res) par(mfrow=c(1,2)) plot(par[,1], par[,2], type="b", pch=".", xlab=names(start)[1], ylab=names(start)[2], main="Parameters") iB <- c(40, nrow(par)/2, nrow(par)) iA <- iB - 1 arrows(par[iA,1], par[iA,2], par[iB,1], par[iB,2], length=0.1) plot(seq(length=length(val))-1, -val, type="l", xlab="epoch", ylab="MSE", main="Loss", log="y") @ We can see the parameters evolving and loss decreasing over epochs. The convergence seems to be smooth and not ruptured by gradient clipping. Next, we try to improve the convergence by introducing momentum. We add momentum $\mu = 0.95$ to the gradient and decrease the learning rate down to $1\cdot10^{-6}$: <>= res <- maxSGA(loss, gradloss, start=start, nObs=nrow(Xt), control=list(iterlim=100, SG_batchSize=1, SG_learningRate=1e-6, SG_clip=1e4, SGA_momentum = 0.99, storeParameters=TRUE, storeValues=TRUE ) ) par <- storedParameters(res) val <- storedValues(res) par(mfrow=c(1,2)) plot(par[,1], par[,2], type="b", pch=".", xlab=names(start)[1], ylab=names(start)[2], main="Parameters") iB <- c(40, nrow(par)/2, nrow(par)) iA <- iB - 1 arrows(par[iA,1], par[iA,2], par[iB,1], par[iB,2], length=0.1) plot(seq(length=length(val))-1, -val, type="l", xlab="epoch", ylab="MSE", main="Loss", log="y") @ We achieved a lower loss but we are still far from the correct solution. As the next step, we use Adam optimizer. Adam has two momentum parameters but we leave those untouched at the initial values. \texttt{SGA\_momentum} is not used, so we remove that argument. <>= res <- maxAdam(loss, gradloss, start=start, nObs=nrow(Xt), control=list(iterlim=100, SG_batchSize=1, SG_learningRate=1e-6, SG_clip=1e4, storeParameters=TRUE, storeValues=TRUE ) ) par <- storedParameters(res) val <- storedValues(res) par(mfrow=c(1,2)) plot(par[,1], par[,2], type="b", pch=".", xlab=names(start)[1], ylab=names(start)[2], main="Parameters") iB <- c(40, nrow(par)/2, nrow(par)) iA <- iB - 1 arrows(par[iA,1], par[iA,2], par[iB,1], par[iB,2], length=0.1) plot(seq(length=length(val))-1, -val, type="l", xlab="epoch", ylab="MSE", main="Loss", log="y") @ As visible from the figure, Adam was marching toward the solution without any stability issues. \subsection{Sequence of Batch Sizes } \label{sec:sequence-batch-sizes} The OLS' loss function is globally convex and hence there is no danger to get stuck in a local maximum. However, when the objective function is more complex, the noise that is generated by the stochastic sampling helps the algorithm to leave local maxima. A suggested strategy is to increase the batch size over time to achieve good exploratory properties early in the process and stable convergence later \citep[see][for more information]{smith+2018arXiv}. This approach is in some ways similar to Simulated Annealing. Here we introduce such an approach by using batch sizes $B=1$, $B=10$ and $B=100$ in succession. We also introduce patience stopping condition. If the objective function value is worse than the best value so far for more than \emph{patience} times then the algorithm stops. Here we use patience value 5. We also store the loss values from all the batch sizes into a single vector \texttt{val}. If the algorithm stops early, some of the stored values are left uninitialized (\texttt{NA}-s), hence we use \texttt{na.omit} to include only the actual values in the final \texttt{val}-vector. We allow the algorithm to run for 200 epochs, but as we now have introduced early stopping through patience, the actual number of epochs may be less than that. \setkeys{Gin}{width=\textwidth, height=110mm} <>= val <- NULL # loop over batch sizes for(B in c(1,10,100)) { res <- maxAdam(loss, gradloss, start=start, nObs=nrow(Xt), control=list(iterlim=200, SG_batchSize=1, SG_learningRate=1e-6, SG_clip=1e4, SG_patience=5, # worse value allowed only 5 times storeValues=TRUE ) ) cat("Batch size", B, ",", nIter(res), "epochs, function value", maxValue(res), "\n") val <- c(val, na.omit(storedValues(res))) start <- coef(res) } plot(seq(length=length(val))-1, -val, type="l", xlab="epoch", ylab="MSE", main="Loss", log="y") summary(res) @ Two first batch sizes run through all 200 epochs, but the last run stopped early after 7 epochs only. The figure shows that Adam works well for approximately 170 epochs, thereafter the steady pace becomes uneven. It may be advantageous to slow down the movement further. As explained above, this dataset is not an easy task for methods that are solely gradient-based, and so we did not achieve a result that is close to the analytic solution. But our task here is to demonstrate the usage of the package, not to solve a linear regression exercise. We believe every \emph{R}-savy user can adapt the method to their needs. \bibliographystyle{apecon} \bibliography{maxlik} \end{document} maxLik/inst/CITATION0000644000175100001440000000150214077525067013642 0ustar hornikuserscitHeader("To cite package 'maxLik' in publications use:") citEntry( entry = "Article", title = "maxLik: A package for maximum likelihood estimation in {R}", author = personList( as.person( "Arne Henningsen" ), as.person( "Ott Toomet" ) ), journal = "Computational Statistics", year = "2011", volume = "26", number = "3", pages = "443-458", doi = "10.1007/s00180-010-0217-1", url = "http://dx.doi.org/10.1007/s00180-010-0217-1", textVersion = paste( "Arne Henningsen and Ott Toomet (2011).", "maxLik: A package for maximum likelihood estimation in R.", "Computational Statistics 26(3), 443-458.", "DOI 10.1007/s00180-010-0217-1." ) ) maxLik/inst/tinytest/0000755000175100001440000000000014077525067014372 5ustar hornikusersmaxLik/inst/tinytest/test-maxSG.R0000644000175100001440000001635114077525067016517 0ustar hornikusers### tests for stochastic gradient ascent ### ### do not run unless 'NOT_CRAN' explicitly defined ### (Suggested by Sebastian Meyer and others) if(!identical(Sys.getenv("NOT_CRAN"), "true")) { message("We are on CRAN: skipping slow optimizer tests") q("no") } if(!requireNamespace("tinytest", quietly = TRUE)) { message("These tests require 'tinytest' package\n") q("no") } library(maxLik) ### Test the following things: ### ### 1. basic 2-D SGA ### SGA without function, only gradient ### SGA neither function nor gradient ### SGA in 1-D case ### 2. SGA w/momentum ### 3. SGA full batch ### 4. SGA, no gradient supplied ### SGA, return numeric hessian, gradient provided ### SGA, return numeric hessian, no gradient provided ### SGA, printlevel 1, storeValues ### SGA, NA as iterlim: should give informative error ### SGA, storeValues but no fn (should fail) ### ### using highly unequally scaled data ### SGA without gradient clipping (fails) ### SGA with gradient clipping (works, although does not converge) ## ---------- OLS ## log-likelihood function(s): ## return log-likelihood on validation data loglik <- function(beta, index) { e <- yValid - XValid %*% beta -crossprod(e)/length(y) } ## gradlik: work on training data gradlik <- function(beta, index) { e <- yTrain[index] - XTrain[index,,drop=FALSE] %*% beta g <- t(-2*t(XTrain[index,,drop=FALSE]) %*% e) -g/length(index) } ### create random data set.seed(1) N <- 1000 x <- rnorm(N) X <- cbind(1, x) y <- 100 + 100*x + rnorm(N) ## training-validation iTrain <- sample(N, 0.8*N) XTrain <- X[iTrain,,drop=FALSE] XValid <- X[-iTrain,,drop=FALSE] yTrain <- y[iTrain] yValid <- y[-iTrain] ## Analytic solution (training data): start <- c(const=10, x=10) b0 <- drop(solve(crossprod(XTrain)) %*% crossprod(XTrain, yTrain)) names(b0) <- names(start) tol <- 1e-3 # coefficient tolerance ## ---------- 1. working example res <- maxSGA(loglik, gradlik, start=start, control=list(printLevel=0, iterlim=200, SG_batchSize=100, SG_learningRate=0.1, storeValues=TRUE), nObs=length(yTrain)) expect_equal(coef(res), b0, tolerance=tol) # SGA usually ends with gradient not equal to 0 so we don't test that ## ---------- store parameters res <- maxSGA(loglik, gradlik, start=start, control=list(printLevel=0, iterlim=20, SG_batchSize=100, SG_learningRate=0.1, storeParameters=TRUE), nObs=length(yTrain)) expect_equal(dim(storedParameters(res)), c(1 + nIter(res), 2)) ## ---------- no function, only gradient expect_silent( res <- maxSGA(grad=gradlik, start=start, control=list(printLevel=0, iterlim=10, SG_batchSize=100), nObs=length(yTrain)) ) ## ---------- neither function nor gradient expect_error( res <- maxSGA(start=start, control=list(printLevel=0, iterlim=10, SG_batchSize=100), nObs=length(yTrain)) ) ## ---------- 1D case N1 <- 1000 t <- rexp(N1, 2) loglik1 <- function(theta, index) sum(log(theta) - theta*t[index]) gradlik1 <- function(theta, index) sum(1/theta - t[index]) expect_silent( res <- maxSGA(loglik1, gradlik1, start=1, control=list(iterlim=300, SG_batchSize=20), nObs=length(t)) ) expect_equal(coef(res), 1/mean(t), tolerance=0.2) expect_null(hessian(res)) ## ---------- 2. SGA with momentum expect_silent( res <- maxSGA(loglik, gradlik, start=start, control=list(printLevel=0, iterlim=200, SG_batchSize=100, SG_learningRate=0.1, SGA_momentum=0.9), nObs=length(yTrain)) ) expect_equal(coef(res), b0, tolerance=tol) ## ---------- 3. full batch expect_silent( res <- maxSGA(loglik, gradlik, start=start, control=list(printLevel=0, iterlim=200, SG_batchSize=NULL, SG_learningRate=0.1), nObs=length(yTrain)) ) expect_equal(coef(res), b0, tolerance=tol) ## ---------- 4. no gradient expect_silent( res <- maxSGA(loglik, start=start, control=list(iterlim=1000, SG_learningRate=0.02), nObs=length(yTrain)) ) expect_equal(coef(res), b0, tolerance=tol) ## ---------- return Hessian, gradient provided expect_silent( res <- maxSGA(loglik, gradlik, start=start, control=list(iterlim=1000, SG_learningRate=0.02), nObs=length(yTrain), finalHessian=TRUE) ) expect_equal(coef(res), b0, tolerance=tol) expect_equal(dim(hessian(res)), c(2,2)) ## ---------- return Hessian, no gradient expect_silent( res <- maxSGA(loglik, start=start, control=list(iterlim=1000, SG_learningRate=0.02), nObs=length(yTrain), finalHessian=TRUE) ) expect_equal(coef(res), b0, tolerance=tol) expect_equal(dim(hessian(res)), c(2,2)) ### ---------- SGA, printlevel 1, storeValues ---------- ### it should just work expect_silent( res <- maxSGA(loglik, gradlik, start=start, control=list(iterlim=2, storeValues=TRUE, printLevel=1), nObs=length(yTrain), finalHessian=TRUE) ) ### ---------- SGA, NA as iterlim ---------- ### should give informative error expect_error( res <- maxSGA(loglik, gradlik, start=start, control=list(iterlim=NA), nObs=length(yTrain), finalHessian=TRUE), pattern = "invalid class \"MaxControl\" object: NA in 'iterlim'" ) ### ---------- SGA, fn missing but storeValues=TRUE ### should give informative error expect_error( res <- maxSGA(grad=gradlik, start=start, control=list(iterlim=10, storeValues=TRUE), nObs=length(yTrain)), pattern = "Cannot compute the objective function value: no objective function supplied" ) ## ---------- gradient by observations gradlikO <- function(beta, index) { e <- yTrain[index] - XTrain[index,,drop=FALSE] %*% beta g <- -2*drop(e)*XTrain[index,,drop=FALSE] -g/length(index) } expect_silent( res <- maxSGA(grad=gradlikO, start=start, control=list(printLevel=0, iterlim=100, SG_batchSize=100), nObs=length(yTrain)) ) expect_equal(coef(res), b0, tolerance=tol) ## ---------- 0 iterations expect_silent( res <- maxSGA(grad=gradlik, start=start, control=list(iterlim=0), nObs=length(yTrain)) ) expect_equal(coef(res), start) # should return start values exactly ### -------------------- create unequally scaled data set.seed(1) N <- 1000 x <- rnorm(N, sd=100) XTrain <- cbind(1, x) yTrain <- 1 + x + rnorm(N) start <- c(const=10, x=10) ## ---------- no gradient clipping: ## should fail with informative "NA/Inf in gradient" message expect_error( res <- maxSGA(loglik, gradlik, start=start, control=list(iterlim=100, SG_learningRate=0.5), nObs=length(yTrain)), pattern = "NA/Inf in gradient" ) ## ---------- gradient clipping: should not fail expect_silent( res <- maxSGA(loglik, gradlik, start=start, control=list(iterlim=100, SG_learningRate=0.5, SG_clip=1e6), nObs=length(yTrain) ) ) maxLik/inst/tinytest/test-maxControl.R0000644000175100001440000000465714077525067017634 0ustar hornikusers### Does maxControl stuff behave? ### ### do not run unless 'NOT_CRAN' explicitly defined ### (Suggested by Sebastian Meyer and others) if (!identical(Sys.getenv("NOT_CRAN"), "true")) { message("skipping slow optimizer tests") q("no") } ### test for: ### 1. create maxControl object ### 2. SGA_batchSize NULL ### 3. negative batch size ### 4. more than 1 batch size ### SG_clip: NULL, negative, more than one ### ### printing: ### * #of cols, rows library(maxLik) set.seed(3) ### ---------- create maxControl object maxControl(tol=1e-4, lambdatol=1e-5, qrtol=1e-6, qac="marquardt", marquardt_lambda0=0.1, marquardt_lambdaStep=3, marquardt_maxLambda=1e10, nm_alpha=2, nm_beta=1, nm_gamma=4, sann_temp=5, sann_tmax=100, sann_randomSeed=1, SGA_momentum=0.9, Adam_momentum1=0.5, Adam_momentum2=0.55, SG_learningRate=0.5, SG_batchSize=10, SG_clip=1000, SG_patience=7, SG_patienceStep=10, iterlim=10, printLevel=3) ### ---------- SG_batchSize expect_silent(maxControl(SG_batchSize=NULL)) expect_error(maxControl(SG_batchSize=-1)) # should fail expect_error(maxControl(SG_batchSize=2:3)) # should fail expect_silent(maxControl(SG_clip=NULL)) expect_error(maxControl(SG_clip=-1)) # fails expect_error(maxControl(SG_clip=2:3)) # fails expect_error(maxControl(Adam_momentum1=NA)) # should fail w/'NA in Adam_momentum' ### ---------- printing ---------- ### ---------- max.columns, max.rows ---------- loglik <- function(beta) { e <- y - X %*% beta -crossprod(e) } gradlik <- function(beta) { e <- y - X %*% beta l <- crossprod(e) g <- t(-2*t(X) %*% e) -g } ## linear regression with many columns X <- matrix(rnorm(20*15), 20, 15) beta <- rep(1, ncol(X)) y <- X %*% beta + rnorm(20, sd=0.3) m <- maxNR(loglik, gradlik, start=rep(1, ncol(X)), iterlim=1) ## print estimates + gradient, and hessian ## should print only 4 rows for estimates, 4 rows + 2 cols for Hessia ## should give message "reached getOption("max.cols") -- omitted 13 columns" etc expect_stdout(print(summary(m, hessian=TRUE), max.rows=4, max.cols=2, digits=3), pattern=paste0('reached getOption\\("max.rows"\\) -- omitted 11 rows', '.*', 'reached getOption\\("max.cols"\\) -- omitted 13 columns', '.*', 'reached getOption\\("max.rows"\\) -- omitted 11 rows') ) maxLik/inst/tinytest/test-optimizers.R0000644000175100001440000006220314077525067017702 0ustar hornikusers### This code tests all the methods and main parameters. It includes: ### * analytic gradients/Hessian ### * fixed parameters ### * inequality constraints ### * equality constraints ## do not run unless 'NOT_CRAN' explicitly defined ## (Suggested by Sebastian Meyer and others) if (!identical(Sys.getenv("NOT_CRAN"), "true")) { message("skipping slow optimizer tests") q("no") } if(!requireNamespace("tinytest", quietly = TRUE)) { message("These tests require 'tinytest' package\n") q("no") } library(maxLik) ## data to fit a normal distribution # set seed for pseudo random numbers set.seed( 123 ) tol <- .Machine$double.eps^0.25 ## generate a variable from normally distributed random numbers truePar <- c(mu=1, sigma=2) NOBS <- 100 x <- rnorm(NOBS, truePar[1], truePar[2] ) xSaved <- x ## log likelihood function llf <- function( param ) { mu <- param[ 1 ] sigma <- param[ 2 ] if(!(sigma > 0)) return(NA) # to avoid warnings in the output sum(dnorm(x, mu, sigma, log=TRUE)) } ## log likelihood function (individual observations) llfInd <- function( param ) { mu <- param[ 1 ] sigma <- param[ 2 ] if(!(sigma > 0)) return(NA) # to avoid warnings in the output llValues <- -0.5 * log( 2 * pi ) - log( sigma ) - 0.5 * ( x - mu )^2 / sigma^2 return( llValues ) } ## function to calculate analytical gradients gf <- function( param ) { mu <- param[ 1 ] sigma <- param[ 2 ] N <- length( x ) llGrad <- c( sum( ( x - mu ) / sigma^2 ), - N / sigma + sum( ( x - mu )^2 / sigma^3 ) ) return( llGrad ) } ## function to calculate analytical gradients (individual observations) gfInd <- function( param ) { mu <- param[ 1 ] sigma <- param[ 2 ] llGrads <- cbind( ( x - mu ) / sigma^2, - 1 / sigma + ( x - mu )^2 / sigma^3 ) return( llGrads ) } ## log likelihood function with gradients as attributes llfGrad <- function( param ) { mu <- param[ 1 ] sigma <- param[ 2 ] if(!(sigma > 0)) return(NA) # to avoid warnings in the output N <- length( x ) llValue <- -0.5 * N * log( 2 * pi ) - N * log( sigma ) - 0.5 * sum( ( x - mu )^2 / sigma^2 ) attributes( llValue )$gradient <- c( sum( ( x - mu ) / sigma^2 ), - N / sigma + sum( ( x - mu )^2 / sigma^3 ) ) return( llValue ) } ## log likelihood function with gradients as attributes (individual observations) llfGradInd <- function( param ) { mu <- param[ 1 ] sigma <- param[ 2 ] if(!(sigma > 0)) return(NA) # to avoid warnings in the output llValues <- -0.5 * log( 2 * pi ) - log( sigma ) - 0.5 * ( x - mu )^2 / sigma^2 attributes( llValues )$gradient <- cbind( ( x - mu ) / sigma^2, - 1 / sigma + ( x - mu )^2 / sigma^3 ) return( llValues ) } ## function to calculate analytical Hessians hf <- function( param ) { mu <- param[ 1 ] sigma <- param[ 2 ] N <- length( x ) llHess <- matrix( c( N * ( - 1 / sigma^2 ), sum( - 2 * ( x - mu ) / sigma^3 ), sum( - 2 * ( x - mu ) / sigma^3 ), N / sigma^2 + sum( - 3 * ( x - mu )^2 / sigma^4 ) ), nrow = 2, ncol = 2 ) return( llHess ) } ## log likelihood function with gradients and Hessian as attributes llfGradHess <- function( param ) { mu <- param[ 1 ] sigma <- param[ 2 ] if(!(sigma > 0)) return(NA) # to avoid warnings in the output N <- length( x ) llValue <- -0.5 * N * log( 2 * pi ) - N * log( sigma ) - 0.5 * sum( ( x - mu )^2 / sigma^2 ) attributes( llValue )$gradient <- c( sum( ( x - mu ) / sigma^2 ), - N / sigma + sum( ( x - mu )^2 / sigma^3 ) ) attributes( llValue )$hessian <- matrix( c( N * ( - 1 / sigma^2 ), sum( - 2 * ( x - mu ) / sigma^3 ), sum( - 2 * ( x - mu ) / sigma^3 ), N / sigma^2 + sum( - 3 * ( x - mu )^2 / sigma^4 ) ), nrow = 2, ncol = 2 ) return( llValue ) } ## log likelihood function with gradients as attributes (individual observations) llfGradHessInd <- function( param ) { mu <- param[ 1 ] sigma <- param[ 2 ] if(!(sigma > 0)) return(NA) # to avoid warnings in the output N <- length( x ) llValues <- -0.5 * log( 2 * pi ) - log( sigma ) - 0.5 * ( x - mu )^2 / sigma^2 attributes( llValues )$gradient <- cbind( ( x - mu ) / sigma^2, - 1 / sigma + ( x - mu )^2 / sigma^3 ) attributes( llValues )$hessian <- matrix( c( N * ( - 1 / sigma^2 ), sum( - 2 * ( x - mu ) / sigma^3 ), sum( - 2 * ( x - mu ) / sigma^3 ), N / sigma^2 + sum( - 3 * ( x - mu )^2 / sigma^4 ) ), nrow = 2, ncol = 2 ) return( llValues ) } # start values startVal <- c( mu = 0, sigma = 1 ) ## basic NR: test if all methods work ml <- maxLik( llf, start = startVal ) expect_equal( coef(ml), truePar, tol=2*max(stdEr(ml)) ) expect_stdout( print( ml ), pattern = "Estimate\\(s\\): 1.18.*1.81" ) expect_stdout( print( summary( ml )), pattern = "Estimates:" ) expect_equal( activePar( ml ), c(mu=TRUE, sigma=TRUE) ) expect_equal( AIC( ml ), 407.167892384587, tol = 0.1, check.attributes=FALSE ) expect_equal( coef( ml ), c(mu=1.181, sigma=1.816), tol = 0.001 ) expect_stdout( condiNumber( ml, digits = 3), "mu[[:space:]]+1[[:space:]\n]+sigma[[:space:]]+1\\." ) expect_equal( hessian( ml), matrix(c(-30.3, 0, 0, -60.6), 2, 2), tol = 0.01, check.attributes = FALSE ) expect_equal( logLik( ml ), -201.583946192294, tol = tol, check.attributes = FALSE ) expect_equal( maximType( ml ), "Newton-Raphson maximisation" ) expect_equal( nIter( ml ) > 5, TRUE ) expect_error( nObs( ml ), "cannot return the number of observations" ) expect_equal( nParam( ml ), 2 ) expect_equal( returnCode( ml ), 1 ) expect_equal( returnMessage( ml ), "gradient close to zero (gradtol)" ) expect_equal( vcov( ml ), matrix(c(0.032975, 0, 0, 0.0165), 2, 2), tol=0.01, check.attributes = FALSE ) expect_equal( logLik( summary( ml ) ), logLik(ml) ) mlInd <- maxLik( llfInd, start = startVal ) expect_stdout( print( summary( mlInd ), digits = 2 ), "mu +1\\.18" ) expect_equal( nObs( mlInd ), length(x) ) ## Marquardt (1963) correction mlM <- maxLik( llf, start = startVal, qac="marquardt") expect_equal( coef(mlM), coef(ml), # coefficients should be the same as above tol=tol ) expect_equal( returnMessage(mlM), returnMessage(ml) ) ## test plain results with analytical gradients ## compare coefficients, Hessian mlg <- maxLik(llf, gf, start = startVal ) expect_equal(coef(ml), coef(mlg), tol=tol) expect_equal(hessian(ml), hessian(mlg), tolerance = 1e-2) ## gradient with individual components mlgInd <- maxLik( llfInd, gfInd, start = startVal ) expect_equal(coef(mlInd), coef(mlgInd), tolerance = 1e-3) expect_equal(hessian(mlg), hessian(mlgInd), tolerance = 1e-3) ## with analytical gradients as attribute mlG <- maxLik( llfGrad, start = startVal ) expect_equal(coef(mlG), coef(mlg), tolerance = tol) expect_equivalent(gradient(mlG), gf( coef( mlG ) ), tolerance = tol) mlGInd <- maxLik( llfGradInd, start = startVal ) expect_equal(coef(mlGInd), coef(mlgInd), tolerance = tol) expect_equivalent(gradient(mlGInd), colSums( gfInd( coef( mlGInd ) ) ), tolerance = tol) expect_equivalent(estfun(mlGInd), gfInd( coef( mlGInd ) ), tolerance=tol) ## with analytical gradients as argument and attribute expect_warning(mlgG <- maxLik( llfGrad, gf, start = startVal)) expect_equal(coef(mlgG), coef(mlg), tolerance = tol) ## with analytical gradients and Hessians mlgh <- maxLik( llf, gf, hf, start = startVal ) expect_equal(coef(mlg), coef(mlgh), tolerance = tol) ## with analytical gradients and Hessian as attribute mlGH <- maxLik( llfGradHess, start = startVal ) expect_equal(coef(mlGH), coef(mlgh), tolerance = tol) ## with analytical gradients and Hessian as argument and attribute expect_warning(mlgGhH <- maxLik( llfGradHess, gf, hf, start = startVal )) expect_equal(coef(mlgGhH), coef(mlgh), tolerance = tol) ## ---------- BHHH method ---------- ## cannot do BHHH if llf not provided by individual x <- xSaved[1] expect_error( maxLik( llfInd, start = startVal, method = "BHHH" ) ) ## 2 observations: can do BHHH x <- xSaved[1:2] expect_silent( maxLik( llfInd, start = startVal, method = "BHHH" ) ) ## x <- xSaved mlBHHH <- maxLik( llfInd, start = startVal, method = "BHHH" ) expect_stdout(print( mlBHHH ), pattern = "Estimate\\(s\\): 1\\.18.* 1\\.81") expect_stdout(print(summary( mlBHHH)), pattern = "mu *1.18") expect_equivalent(activePar( mlBHHH ), c(TRUE, TRUE)) expect_equivalent(AIC( mlBHHH ), 407.168, tolerance=0.01) expect_equal(coef( mlBHHH ), setNames(c(1.180808, 1.816485), c("mu", "sigma")), tolerance=tol) expect_equal(condiNumber( mlBHHH, printLevel=0), setNames(c(1, 1.72), c("mu", "sigma")), tol=0.01) expect_equivalent(hessian( mlBHHH ), matrix(c(-30.306411, -1.833632, -1.833632, -55.731646), 2, 2), tolerance=0.01) expect_equivalent(logLik( mlBHHH ), -201.583946192983, tolerance=tol) expect_equal(maximType( mlBHHH ), "BHHH maximisation") expect_equal(nIter(mlBHHH) > 3, TRUE) # here 12 iterations expect_equal(nParam( mlBHHH ), 2) expect_equal(returnCode( mlBHHH ), 8) expect_equal(returnMessage( mlBHHH ), "successive function values within relative tolerance limit (reltol)") expect_equivalent(vcov( mlBHHH ), matrix(c(0.03306213, -0.00108778, -0.00108778, 0.01797892), 2, 2), tol=0.001) expect_equivalent(logLik(summary(mlBHHH)), -201.583946192983, tolerance=tol) expect_equal(coef(ml), coef(mlBHHH), tol=tol) expect_equal(stdEr(ml), stdEr(mlBHHH), tol=0.1) expect_equal(nObs( mlBHHH ), length(x)) # final Hessian = usual Hessian expect_silent(mlBhhhH <- maxLik( llfInd, start = startVal, method = "BHHH", finalHessian = TRUE ) ) # do not test Hessian equality--BHHH may be imprecise, at least # for diagonal elements expect_stdout(print(hessian( mlBhhhH )), pattern="mu.*\nsigma.+") ## Marquardt (1963) correction expect_silent(mlBHHHM <- maxLik( llfInd, start = startVal, method = "BHHH", qac="marquardt")) expect_equal(coef(mlBHHHM), coef(mlBHHH), tolerance=tol) expect_equal(returnMessage(mlBHHHM), "successive function values within relative tolerance limit (reltol)") ## BHHH with analytical gradients expect_error( maxLik( llf, gf, start = startVal, method = "BHHH" ) ) # need individual log-likelihood expect_error( maxLik( llfInd, gf, start = startVal, method = "BHHH" ) ) # need individual gradient x <- xSaved[1] # test with a single observation expect_error(maxLik( llf, gfInd, start = startVal, method = "BHHH" )) # gradient must have >= 2 rows expect_error( maxLik( llfInd, gfInd, start = startVal, method = "BHHH" ) ) # ditto even if individual likelihood components x <- xSaved[1:2] # test with 2 observations expect_silent(maxLik( llf, gfInd, start = startVal, method = "BHHH", iterlim=1)) # should work with 2 obs expect_silent( maxLik( llfInd, gfInd, start = startVal, method = "BHHH", iterlim=1) ) # should work with 2 obs x <- xSaved expect_silent(mlgBHHH <- maxLik( llfInd, gfInd, start = startVal, method = "BHHH" )) # individual log-likelihood, gradient expect_equal(coef(mlBHHH), coef(mlgBHHH), tolerance = tol) expect_equal(coef(mlg), coef(mlgBHHH), tolerance = tol) expect_silent(mlgBHHH2 <- maxLik( llf, gfInd, start = startVal, method = "BHHH" )) # aggregated log-likelihood, individual gradient expect_equal(coef(mlgBHHH), coef(mlgBHHH2), tolerance=tol) # final Hessian = usual Hessian expect_silent( mlgBhhhH <- maxLik( llf, gfInd, start = startVal, method = "BHHH", finalHessian = TRUE ) ) expect_equal(hessian(mlgBhhhH), hessian(mlBhhhH), tolerance = 1e-2) ## with analytical gradients as attribute expect_error( maxLik( llfGrad, start = startVal, method = "BHHH" ) ) # no individual gradients provided x <- xSaved[1] expect_error( maxLik( llfGrad, start = startVal, method = "BHHH" ), pattern = "gradient is not a matrix") # get an error about need a matrix expect_error( maxLik( llfGradInd, start = startVal, method = "BHHH" ), pattern = "at least as many rows") # need at least two obs x <- xSaved[1:2] expect_error( maxLik( llfGrad, start = startVal, method = "BHHH" ), pattern = "gradient is not a matrix") # enough obs but no individual grad x <- xSaved expect_silent(mlGBHHH <- maxLik( llfGradInd, start = startVal, method = "BHHH" )) expect_equal(coef(mlGBHHH), coef(mlgBHHH), tolerance = tol) # final Hessian = usual Hessian expect_silent(mlGBhhhH <- maxLik( llfGradInd, start = startVal, method = "BHHH", finalHessian = TRUE )) expect_equal(hessian(mlGBhhhH), hessian(mlgBhhhH), tolerance = tol) ## with analytical gradients as argument and attribute expect_warning(mlgGBHHH <- maxLik( llfGradInd, gfInd, start = startVal, method = "BHHH" ), pattern = "both as attribute 'gradient' and as argument 'grad'") # warn about double gradient expect_equal(coef(mlgGBHHH), coef(mlgBHHH), tolerance = tol) ## with unused Hessian expect_silent(mlghBHHH <- maxLik( llfInd, gfInd, hf, start = startVal, method = "BHHH" )) expect_equal(coef(mlgBHHH), coef(mlghBHHH), tolerance = tol) ## final Hessian = usual Hessian expect_silent( mlghBhhhH <- maxLik( llfInd, gfInd, hf, start = startVal, method = "BHHH", finalHessian = TRUE ) ) expect_equivalent(hessian(mlghBhhhH), hessian(mlghBHHH), tolerance = 0.2) # BHHH and ordinary hessian differ quite a bit ## with unused Hessian as attribute expect_silent(mlGHBHHH <- maxLik( llfGradHessInd, start = startVal, method = "BHHH" )) expect_equal(coef(mlGHBHHH), coef(mlghBHHH), tolerance = tol) ## final Hessian = usual Hessian expect_silent(mlGHBhhhH <- maxLik( llfGradHessInd, start = startVal, method = "BHHH", finalHessian = TRUE )) expect_equal(hessian(mlGHBhhhH), hessian(mlghBhhhH), tolerance = tol) ## with analytical gradients and Hessian as argument and attribute expect_warning( mlgGhHBHHH <- maxLik( llfGradHessInd, gfInd, hf, start = startVal, method = "BHHH" ), pattern = "both as attribute 'gradient' and as argument 'grad': ignoring" ) expect_equal(coef(mlgGhHBHHH), coef(mlghBHHH), tolerance = tol) expect_equal(hessian(mlgGhHBHHH), hessian(mlGHBHHH), tolerance = tol) ## ---------- Test BFGS methods ---------- optimizerNames <- c(bfgsr = "BFGSR", bfgs = "BFGS", nm = "Nelder-Mead", sann = "SANN", cg = "CG") successCodes <- list(bfgsr = 1:4, bfgs = 0, nm = 0, sann = 0, cg = 0) successMsgs <- list(bfgsr = c("successive function values within tolerance limit (tol)"), bfgs = c("successful convergence "), # includes space at end... nm = c("successful convergence "), sann = c("successful convergence "), cg = c("successful convergence ") ) for(optimizer in c("bfgsr", "bfgs", "nm", "sann", "cg")) { expect_silent(mlResult <- maxLik( llf, start = startVal, method = optimizer )) expect_stdout(print( mlResult ), pattern = paste0(optimizerNames[optimizer], " maximization") ) expect_stdout(print( summary( mlResult )), pattern = paste0(optimizerNames[optimizer], " maximization,.*Estimates:") ) expect_equal(coef(ml), coef(mlResult), tolerance=0.001) expect_equal(stdEr(ml), stdEr(mlResult), tolerance=0.01) expect_equal(activePar( mlResult ), c(mu=TRUE, sigma=TRUE)) expect_equivalent(AIC( mlResult ), 407.167893392749, tolerance=tol) expect_equivalent( hessian( mlResult ), matrix(c(-30.32596, 0.00000, 0.00000, -60.59508), 2, 2), tolerance = 0.01) expect_equivalent(logLik( mlResult ), -201.5839, tolerance = 0.01) expect_equal(maximType( mlResult ), paste0(optimizerNames[optimizer], " maximization") ) expect_true(nIter( mlResult ) > 1 & is.integer(nIter(mlResult))) expect_error( nObs( mlResult ), pattern = "cannot return the number of observations") expect_equal(nParam( mlResult ), 2) expect_true(returnCode( mlResult ) %in% successCodes[[optimizer]]) expect_equal(returnMessage( mlResult), successMsgs[[optimizer]]) expect_equal(logLik( summary( mlResult ) ), logLik(mlResult)) ## individual observations expect_silent(mlIndResult <- maxLik( llfInd, start = startVal, method = optimizer)) expect_stdout(print( summary( mlIndResult )), pattern = paste0(optimizerNames[optimizer], " maximization,.*Estimates:") ) expect_equal(coef(mlResult), coef(mlIndResult), tolerance = tol) expect_equal(stdEr(mlResult), stdEr(mlIndResult), tolerance = 0.01) expect_equal(nObs( mlIndResult ), length(x)) ## with analytic gradients expect_silent(mlgResult <- maxLik( llf, gf, start = startVal, method = optimizer)) expect_equal(coef(mlgResult), coef(mlResult), tolerance = tol) expect_equal(stdEr(mlgResult), stdEr(mlResult), tolerance = 0.01) expect_silent(mlgIndResult <- maxLik( llfInd, gfInd, start = startVal, method = optimizer )) expect_equal(coef(mlgIndResult), coef(mlResult), tolerance = tol) expect_equal(stdEr(mlgIndResult), stdEr(mlResult), tolerance = 0.01) ## with analytical gradients as attribute expect_silent(mlGResult <- maxLik( llfGrad, start = startVal, method = optimizer)) expect_equal(coef(mlGResult), coef(mlResult), tolerance = tol) expect_equal(stdEr(mlGResult), stdEr(mlResult), tolerance = 0.01) expect_silent(mlGIndResult <- maxLik( llfGradInd, start = startVal, method = optimizer )) expect_equal(coef(mlGIndResult), coef(mlResult), tolerance = tol) expect_equal(stdEr(mlGIndResult), stdEr(mlResult), tolerance = 0.01) ## with analytical gradients as argument and attribute expect_warning(mlgGResult <- maxLik( llfGrad, gf, start = startVal, method = optimizer )) expect_equal(coef(mlgGResult), coef(mlResult), tolerance = tol) expect_equal(stdEr(mlgGResult), stdEr(mlResult), tolerance = 0.01) ## with analytical gradients and Hessians expect_silent(mlghResult <- maxLik( llf, gf, hf, start = startVal, method = optimizer )) expect_equal(coef(mlghResult), coef(mlResult), tolerance = tol) expect_equal(stdEr(mlghResult), stdEr(mlResult), tolerance = 0.01) ## with analytical gradients and Hessian as attribute expect_silent(mlGHResult <- maxLik( llfGradHess, start = startVal, method = optimizer )) expect_equal(coef(mlGHResult), coef(mlResult), tolerance = tol) expect_equal(stdEr(mlGHResult), stdEr(mlResult), tolerance = 0.01) ## with analytical gradients and Hessian as argument and attribute expect_warning(mlgGhHResult <- maxLik( llfGradHess, gf, hf, start = startVal, method = optimizer )) expect_equal(coef(mlgGhHResult), coef(mlResult), tolerance = tol) expect_equal(stdEr(mlgGhHResult), stdEr(mlResult), tolerance = 0.01) } ### ---------- with fixed parameters ---------- ## start values startValFix <- c( mu = 1, sigma = 1 ) ## fix mu (the mean ) at its start value isFixed <- c( TRUE, FALSE ) successMsgs <- list(bfgsr = c("successive function values within tolerance limit (tol)"), bfgs = c("successful convergence "), # includes space at end... nm = c("successful convergence "), sann = c("successful convergence "), cg = c("successful convergence ") ) ## NR method with fixed parameters for(optimizer in c("nr", "bfgsr", "bfgs", "sann", "cg")) { expect_silent( mlFix <- maxLik( llf, start = startValFix, fixed = isFixed, method=optimizer) ) expect_equivalent(coef(mlFix)[1], 1) expect_equivalent(stdEr(mlFix)[1], 0) expect_silent( mlFix3 <- maxLik(llf, start = startValFix, fixed = "mu", method=optimizer) ) expect_equal(coef(mlFix), coef(mlFix3)) mlFix4 <- maxLik( llf, start = startValFix, fixed = which(isFixed), method=optimizer) expect_equal(coef(mlFix), coef(mlFix4), tolerance=tol) expect_equivalent(activePar( mlFix ), !isFixed) expect_equal(nParam( mlFix ), 2) ## with analytical gradients mlgFix <- maxLik( llf, gf, start = startValFix, fixed = isFixed, method=optimizer) expect_equal(coef(mlgFix), coef(mlFix), tolerance=tol) ## with analytical gradients and Hessians mlghFix <- maxLik( llf, gf, hf, start = startValFix, fixed = isFixed, method=optimizer) expect_equal(coef(mlghFix), coef(mlFix), tolerance=tol) } ## Repeat the previous for NM as that one does not like 1-D optimization for(optimizer in c("nm")) { expect_warning( mlFix <- maxLik( llf, start = startValFix, fixed = isFixed, method=optimizer) ) expect_equivalent(coef(mlFix)[1], 1) expect_equivalent(stdEr(mlFix)[1], 0) expect_warning( mlFix3 <- maxLik(llf, start = startValFix, fixed = "mu", method=optimizer) ) expect_equal(coef(mlFix), coef(mlFix3)) expect_warning( mlFix4 <- maxLik( llf, start = startValFix, fixed = which(isFixed), method=optimizer) ) expect_equal(coef(mlFix), coef(mlFix4), tolerance=tol) expect_equivalent(activePar( mlFix ), !isFixed) expect_equal(nParam( mlFix ), 2) ## with analytical gradients expect_warning( mlgFix <- maxLik( llf, gf, start = startValFix, fixed = isFixed, method=optimizer) ) expect_equal(coef(mlgFix), coef(mlFix), tolerance=tol) ## with analytical gradients and Hessians expect_warning( mlghFix <- maxLik( llf, gf, hf, start = startValFix, fixed = isFixed, method=optimizer) ) expect_equal(coef(mlghFix), coef(mlFix), tolerance=tol) } ## Repeat for BHHH as that one need a different log-likelihood function for(optimizer in c("bhhh")) { expect_silent( mlFix <- maxLik( llfInd, start = startValFix, fixed = isFixed, method=optimizer) ) expect_equivalent(coef(mlFix)[1], 1) expect_equivalent(stdEr(mlFix)[1], 0) expect_silent( mlFix3 <- maxLik(llfInd, start = startValFix, fixed = "mu", method=optimizer) ) expect_equal(coef(mlFix), coef(mlFix3)) expect_silent( mlFix4 <- maxLik( llfInd, start = startValFix, fixed = which(isFixed), method=optimizer) ) expect_equal(coef(mlFix), coef(mlFix4), tolerance=tol) expect_equivalent(activePar( mlFix ), !isFixed) expect_equal(nParam( mlFix ), 2) ## with analytical gradients expect_silent( mlgFix <- maxLik( llf, gfInd, start = startValFix, fixed = isFixed, method=optimizer) ) expect_equal(coef(mlgFix), coef(mlFix), tolerance=tol) ## with analytical gradients and Hessians expect_silent( mlghFix <- maxLik( llf, gfInd, hf, start = startValFix, fixed = isFixed, method=optimizer) ) expect_equal(coef(mlghFix), coef(mlFix), tolerance=tol) } ### ---------- inequality constraints ---------- A <- matrix( -1, nrow = 1, ncol = 2 ) inEq <- list( ineqA = A, ineqB = 2.5 ) # A theta + B > 0 i.e. # mu + sigma < 2.5 for(optimizer in c("bfgs", "nm", "sann")) { expect_silent( mlInEq <- maxLik( llf, start = startVal, constraints = inEq, method = optimizer ) ) expect_stdout( print( summary( mlInEq)), pattern = "constrained likelihood estimation. Inference is probably wrong.*outer iterations, barrier value" ) expect_true(sum(coef( mlInEq )) < 2.5) } ### ---------- equality constraints ---------- eqCon <- list(eqA = A, eqB = 2.5) # A theta + B = 0 i.e. # mu + sigma = 2.5 for(optimizer in c("nr", "bhhh", "bfgs", "nm", "sann")) { expect_silent( mlEq <- maxLik(llfInd, start = startVal, constraints = eqCon, method = optimizer, SUMTTol = 0) ) expect_stdout( print( summary( mlEq)), pattern = "constrained likelihood estimation. Inference is probably wrong.*outer iterations, barrier value" ) expect_equal(sum(coef( mlEq )), 2.5, tolerance=1e-4) } ### ---------- convergence tolerance parameters ---------- a <- maxNR(llf, gf, hf, start=startVal, tol=1e-3, reltol=0, gradtol=0, iterlim=10) expect_equal(returnCode(a), 2) # should stop with code 2: tolerance a <- maxNR(llf, gf, hf, start=startVal, tol=0, reltol=1e-3, gradtol=0, iterlim=10) expect_equal(returnCode(a), 8) # 8: relative tolerance a <- maxNR(llf, gf, hf, start=startVal, tol=0, reltol=0, gradtol=1e-3, iterlim=10) expect_equal(returnCode(a), 1) # 1: gradient a <- maxNR(llf, gf, hf, start=startVal, tol=0, reltol=0, gradtol=0, iterlim=10) expect_equal(returnCode(a), 4) # 4: iteration limit maxLik/inst/tinytest/test-methods.R0000644000175100001440000001040614077525067017136 0ustar hornikusers## Test methods. Note: only test if methods work in terms of dim, length, etc, ## not in terms of values here ## ## ... ## * printing summary with max.columns, max.rows ## if(!requireNamespace("tinytest", quietly = TRUE)) { message("These tests require 'tinytest' package\n") q("no") } require(sandwich) library(maxLik) set.seed(0) compareTolerance = 0.001 # tolerance when comparing different optimizers ## Test standard methods for "lm" x <- runif(20) y <- x + rnorm(20) m <- lm(y ~ x) expect_equal( nObs(m), length(y), info = "nObs.lm must be correct" ) expect_equal( stdEr(m), c(`(Intercept)` = 0.357862322670879, x = 0.568707094458801) ) ## Test maxControl methods: set.seed(9) x <- rnorm(20, sd=2) ll1 <- function(par) dnorm(x, mean=par, sd=1, log=TRUE) ll2 <- function(par) dnorm(x, mean=par[1], sd=par[2], log=TRUE) for(method in c("NR", "BFGS", "BFGSR")) { m <- maxLik(ll2, start=c(0, 2), method=method, control=list(iterlim=1)) expect_equal(maxValue(m), -41.35, tolerance=0.01) expect_true(is.vector(gradient(m)), info=paste0("'gradient' returns a vector for ", method)) expect_equal(length(gradient(m)), 2, info="'gradient(m)' is of length 2") expect_true(is.matrix(estfun(m)), info="'estfun' returns a matrix") expect_equal(dim(estfun(m)), c(20,2), info="'estfun(m)' is 20x2 matrix") expect_stdout( show(maxControl(m)), pattern = "Adam_momentum2 = 0\\.999" ) } ## Test methods for non-likelihood optimization hatf <- function(theta) exp(- theta %*% theta) for(optimizer in c(maxNR, maxBFGSR, maxBFGS, maxNM, maxSANN, maxCG)) { name <- as.character(quote(optimizer)) res <- optimizer(hatf, start=c(1,1)) if(name %in% c("maxNR", "maxBFGS", "maxNM", "maxCG")) { expect_equal(coef(res), c(0,0), tol=1e-5, info=paste0(name, ": result (0,0)")) } expect_equal(objectiveFn(res), hatf, info=paste0(name, ": objectiveFn correct")) } ## Test maxLik vcov related methods set.seed( 15 ) t <- rexp(20, 2) loglik <- function(theta) log(theta) - theta*t gradlik <- function(theta) 1/theta - t hesslik <- function(theta) -100/theta^2 a <- maxLik(loglik, start=1) expect_equal(dim(vcov(a)), c(1,1), info="vcov 1D numeric correct") expect_equal(length(stdEr(a)), 1, info="stdEr 1D numeric correct") a <- maxLik(loglik, gradlik, hesslik, start=1) expect_equal(dim(vcov(a)), c(1,1), info="vcov 1D analytic correct") expect_equal(length(stdEr(a)), 1, info="stdEr 1D analytic correct") ## ---------- both individual and aggregated likelihood ---------- NOBS <- 100 x <- rnorm(NOBS, 2, 1) ## log likelihood function llf <- function( param ) { mu <- param[ 1 ] sigma <- param[ 2 ] if(!(sigma > 0)) return(NA) # to avoid warnings in the output sum(dnorm(x, mu, sigma, log=TRUE)) } ## log likelihood function (individual observations) llfInd <- function( param ) { mu <- param[ 1 ] sigma <- param[ 2 ] if(!(sigma > 0)) return(NA) # to avoid warnings in the output llValues <- -0.5 * log( 2 * pi ) - log( sigma ) - 0.5 * ( x - mu )^2 / sigma^2 return( llValues ) } startVal <- c(mu=2, sigma=1) ml <- maxLik( llf, start = startVal) mlInd <- maxLik( llfInd, start = startVal) ## ---------- Various summary methods ---------- ## These should work and produce consistent results expect_stdout( show(confint(ml)), pattern = "2.5 % +97.5 %\nmu +[[:digit:] .]+\n" ) expect_stdout( show(glance(ml)), pattern = "df logLik AIC +nobs.*1 2 -140. 284. NA" ) expect_stdout( show(glance(mlInd)), pattern = "df logLik AIC nobs.*1 2 -140. 284. 100" ) expect_stdout( show(tidy(ml)), pattern = "term.*estimate std.error statistic.*p.value" ) ### ---------- estfun, bread, sandwich ---------- expect_error( estfun( ml ) ) expect_equal(dim(estfun( mlInd )), c(NOBS, 2)) expect_equal(colnames(estfun( mlInd )), names(startVal)) expect_error(bread( ml ) ) expect_equal(dim(bread( mlInd )), c(2, 2)) expect_equal(colnames(bread( mlInd )), names(startVal)) expect_equal(rownames(bread( mlInd )), names(startVal)) expect_error(sandwich( ml ) ) expect_equal(dim(sandwich( mlInd )), c(2, 2)) expect_equal(colnames(sandwich( mlInd )), names(startVal)) expect_equal(rownames(sandwich( mlInd )), names(startVal)) maxLik/inst/tinytest/test-parameters.R0000644000175100001440000002451414077525067017643 0ustar hornikusers ### Test battery for various optimization parameters for different optimizers. ### ### ... ### library(maxLik) library(tinytest) tol <- .Machine$double.eps^(0.25) set.seed( 123 ) # generate a variable from normally distributed random numbers N <- 50 x <- rnorm(N, 1, 2 ) ## log likelihood function llf <- function( param ) { mu <- param[ 1 ] sigma <- param[ 2 ] if(!(sigma > 0)) return(NA) # to avoid warnings in the output N <- length( x ) llValue <- -0.5 * N * log( 2 * pi ) - N * log( sigma ) - 0.5 * sum( ( x - mu )^2 / sigma^2 ) return( llValue ) } # start values startVal <- c( mu = 0, sigma = 1 ) # expect_silent(ml <- maxLik( llf, start = startVal )) expect_equivalent(coef(ml), c(1.069, 1.833), tolerance=tol) ## tol expect_silent(mlTol <- maxLik( llf, start = startVal, tol=1)) expect_equal(returnCode(mlTol), 2) # tolerance limit expect_silent(mlTolC <- maxLik(llf, start=startVal, control=list(tol=1))) expect_equal(coef(mlTol), coef(mlTolC)) expect_equal(hessian(mlTol), hessian(mlTolC)) expect_equal(returnCode(mlTol), returnCode(mlTolC)) expect_silent(ml <- maxLik( llf, start = startVal, tol=-1)) # negative tol switches tol off expect_silent(ml <- maxLik( llf, start = startVal, control=list(tol=-1))) expect_false(returnCode(ml) == 2) # should not be w/in tolerance limit expect_error(ml <- maxLik( llf, start = startVal, tol=c(1,2)), pattern="'tol' must be of length 1, not 2") expect_error(ml <- maxLik( llf, start = startVal, control=list(tol=c(1,2))), pattern="'tol' must be of length 1, not 2") expect_error(ml <- maxLik( llf, start = startVal, tol=TRUE), pattern="object of class \"logical\" is not valid for slot 'tol'") expect_error(ml <- maxLik( llf, start = startVal, control=list(tol=TRUE)), pattern="object of class \"logical\" is not valid for slot 'tol'") ## ----- reltol: play w/reltol, leave other tolerances at default value ----- expect_silent(mlRelTol <- maxLik( llf, start = startVal, reltol=1)) expect_equal(returnCode(mlRelTol), 8) mlRelTolC <- maxLik(llf, start=startVal, control=list(reltol=1)) expect_equal(coef(mlRelTol), coef(mlRelTolC)) expect_silent(ml0 <- maxLik( llf, start = startVal, reltol=0)) expect_true(nIter(ml0) > nIter(mlRelTol)) # switching off reltol makes more iterations expect_silent(ml1 <- maxLik( llf, start = startVal, reltol=-1)) expect_equal(nIter(ml0), nIter(ml1)) expect_error(ml <- maxLik( llf, start = startVal, reltol=c(1,2)), pattern="invalid class \"MaxControl\" object: 'reltol' must be of length 1, not 2") expect_error(ml <- maxLik( llf, start = startVal, control=list(reltol=c(1,2))), pattern="invalid class \"MaxControl\" object: 'reltol' must be of length 1, not 2") expect_error(ml <- maxLik( llf, start = startVal, reltol=TRUE), pattern="assignment of an object of class \"logical\" is not valid for slot 'reltol'") expect_error(ml <- maxLik( llf, start = startVal, control=list(reltol=TRUE)), pattern="assignment of an object of class \"logical\" is not valid for slot 'reltol'") ## gradtol expect_silent(mlGradtol <- maxLik( llf, start = startVal, gradtol=0.1)) expect_equal(returnCode(mlGradtol), 1) mlGradtolC <- maxLik(llf, start=startVal, control=list(gradtol=0.1)) expect_equal(coef(mlGradtol), coef(mlGradtolC)) expect_silent(ml <- maxLik( llf, start = startVal, gradtol=-1)) expect_true(nIter(ml) > nIter(mlGradtol)) # switching off gradtol makes more iterations expect_error(ml <- maxLik( llf, start = startVal, gradtol=c(1,2)), pattern="object: 'gradtol' must be of length 1, not 2") expect_error(ml <- maxLik( llf, start = startVal, control=list(gradtol=c(1,2))), pattern="object: 'gradtol' must be of length 1, not 2") expect_error(ml <- maxLik( llf, start = startVal, gradtol=TRUE), pattern="assignment of an object of class \"logical\" is not valid for slot 'gradtol' ") expect_error(ml <- maxLik( llf, start = startVal, control=list(gradtol=TRUE)), pattern="assignment of an object of class \"logical\" is not valid for slot 'gradtol' ") ## examples with steptol, lambdatol ## qac expect_silent(mlMarq <- maxLik( llf, start = startVal, qac="marquardt")) expect_equal(maximType(mlMarq), "Newton-Raphson maximisation with Marquardt (1963) Hessian correction") expect_silent(mlMarqC <- maxLik(llf, start=startVal, control=list(qac="marquardt"))) expect_equal(coef(mlMarq), coef(mlMarqC)) expect_error(ml <- maxLik( llf, start = startVal, qac=-1), pattern = "assignment of an object of class \"numeric\" is not valid for slot 'qac'") # qac should be "stephalving" or "marquardt" expect_error(ml <- maxLik( llf, start = startVal, qac=c("a", "b")), pattern = "invalid class \"MaxControl\" object: 'qac' must be of length 1, not 2") expect_error(ml <- maxLik( llf, start = startVal, qac=TRUE), pattern = "assignment of an object of class \"logical\" is not valid for slot 'qac'") mlMarqCl <- maxLik(llf, start = startVal, control=list(qac="marquardt", lambda0=1000, lambdaStep=4)) expect_equal(coef(mlMarqCl), coef(mlMarq)) ## NM: alpha, beta, gamma expect_silent(mlNMAlpha <- maxLik(llf, start=startVal, method="nm", beta=0.8)) expect_silent(mlNMAlphaC <- maxLik(llf, start=startVal, method="nm", control=list(beta=0.8))) expect_equal(coef(mlNMAlpha), coef(mlNMAlphaC)) ## likelihood function with additional parameter llf1 <- function( param, sigma ) { mu <- param N <- length( x ) ll <- -0.5*N*log( 2 * pi ) - N*log( sigma ) - 0.5*sum( ( x - mu )^2/sigma^2 ) ll } ## log-lik mixture logLikMix <- function(param) { rho <- param[1] if(rho < 0 || rho > 1) return(NA) mu1 <- param[2] mu2 <- param[3] ll <- log(rho*dnorm(x - mu1) + (1 - rho)*dnorm(x - mu2)) ll } ## loglik mixture with additional parameter logLikMixA <- function(param, rho) { mu1 <- param[1] mu2 <- param[2] ll <- log(rho*dnorm(x - mu1) + (1 - rho)*dnorm(x - mu2)) ll } ## Test the following with all the main optimizers: pl2Patterns <- c(NR = "----- Initial parameters: -----\n.*-----Iteration 1 -----", BFGS = "initial value.*final value", BFGSR = "-------- Initial parameters: -------\n.*Iteration 1") for(method in c("NR", "BFGS", "BFGSR")) { ## create data in loop, we need to mess with 'x' for constraints N <- 100 x <- rnorm(N, 1, 2 ) startVal <- c(1,2) ## two parameters at the same time ## iterlim, printLevel expect_stdout(ml2 <- maxLik(llf, start=startVal, method=method, iterlim=1, printLevel=2), pattern = pl2Patterns[method]) expect_stdout(ml2C <- maxLik(llf, start=startVal, method=method, control=list(iterlim=1, printLevel=2)), pattern = pl2Patterns[method]) expect_equal(coef(ml2), coef(ml2C)) ## what about additional parameters for the loglik function? expect_silent(mlsM <- maxLik(llf1, start=0, method=method, tol=1, sigma=1)) expect_silent(mlsCM <- maxLik(llf1, start=0, method=method, control=list(tol=1), sigma=1)) expect_equal(coef(mlsM), coef(mlsCM)) ## And what about unused parameters? expect_error(maxLik(llf1, start=0, method=method, control=list(tol=1), sigma=1, unusedPar=2), pattern = "unused argument") N <- 100 ## Does this work with constraints? x <- c(rnorm(N, mean=-1), rnorm(N, mean=1)) ## First test inequality constraints ## Inequality constraints: x + y + z < 0.5 A <- matrix(c(-1, 0, 0, 0, -1, 0, 0, 0, 1), 3, 3, byrow=TRUE) B <- rep(0.5, 3) start <- c(0.4, 0, 0.9) ## analytic gradient if(!(method %in% c("NR", "BFGSR"))) { expect_silent(mix <- maxLik(logLikMix, start=start, method=method, constraints=list(ineqA=A, ineqB=B))) expect_silent(mixGT <- try(maxLik(logLikMix, start=start, method=method, constraints=list(ineqA=A, ineqB=B), tol=1))) expect_silent( mixGTC <- try(maxLik(logLikMix, start=start, method=method, constraints=list(ineqA=A, ineqB=B), control=list(tol=1))) ) ## 2d inequality constraints: x + y < 0.5 A2 <- matrix(c(-1, -1), 1, 2, byrow=TRUE) B2 <- 0.5 start2 <- c(-0.5, 0.5) expect_silent( mixA <- maxLik(logLikMixA, start=start2, method=method, constraints=list(ineqA=A2, ineqB=B2), tol=1, rho=0.5) ) expect_silent( mixAC <- maxLik(logLikMixA, start=start2, method=method, constraints=list(ineqA=A2, ineqB=B2), control=list(tol=1), rho=0.5) ) expect_equal(coef(mixA), coef(mixAC)) expect_equal(hessian(mixA), hessian(mixAC)) } } ### Test adding both default and user-specified parameters through control list estimate <- function(control=NULL, ...) { maxLik(llf, start=c(1,1), control=c(list(iterlim=100), control), ...) } expect_silent(m <- estimate(control=list(iterlim=1), fixed=2)) expect_stdout(show(maxControl(m)), pattern = "iterlim = 1") # iterlim should be 1 expect_equal(coef(m)[2], 1) # sigma should be 1.000 ## Does print.level overwrite 'printLevel'? expect_silent(m <- estimate(control=list(printLevel=2, print.level=1))) expect_stdout(show(maxControl(m)), pattern = "printLevel = 1") ## Does open parameters override everything? expect_silent(m <- estimate(control=list(printLevel=2, print.level=1), print.level=0)) expect_stdout(show(maxControl(m)), pattern = "printLevel = 0") ### does both printLevel, print.level work for condiNumber? expect_silent(condiNumber(hessian(m), print.level=0)) expect_silent(condiNumber(hessian(m), printLevel=0)) expect_silent(condiNumber(hessian(m), printLevel=0, print.level=1)) maxLik/inst/tinytest/test-basic.R0000644000175100001440000001027514077525067016560 0ustar hornikusers### general optimization tests for the functions of various forms ### test for: ### 1. numeric gradient, Hessian ### 2. analytic gradient, numeric Hessian ### 3. analytic gradient, Hessian ### ### a) maxLik(, method="NR") ### c) maxLik(, method="BFGS") ### b) maxLik(, method="BHHH") ### ### i) maxNR() ### ii) maxBFGS() if(!requireNamespace("tinytest", quietly = TRUE)) { cat("These tests require 'tinytest' package\n") q("no") } library(maxLik) ## ---------- define log-likelihood functions ---------- ## log-likelihood function(s) logLL <- function(x, X) # per observation for maxLik dgamma(x = X, shape = x[1], scale = x[2], log = TRUE) logLLSum <- function(x, X) sum(logLL(x, X)) # gradient of log-likelihood function d.logLL <- function(x, X){ # analytic 1. derivatives shape <- x[1] scale <- x[2] cbind(shape= log(X) - log(scale) - psigamma(shape, 0), scale= (X/scale - shape)/scale ) } d.logLLSum <- function(x, X) { ## analytic 1. derivatives, summed colSums(d.logLL(x, X)) } ## Hessian of log-likelihood function dd.logLL <- function(x, X){ # analytic 2. derivatives shape <- x[1] scale <- x[2] hessian <- matrix(0, 2, 2) hessian[1,1] <- -psigamma(shape, 1)*length(X) hessian[2,2] <- (shape*length(X) - 2*sum(X)/scale)/scale^2 hessian[cbind(c(2,1), c(1,2))] <- -length(X)/scale return(hessian) } ## ---------- create data ---------- ## sample size 1000 should give precision 0.1 or better param <- c(1.5, 2) set.seed(100) testData <- rgamma(1000, shape=param[1], scale=param[2]) start <- c(1,1) mTol <- .Machine$double.eps^0.25 ## estimation with maxLik() / NR doTests <- function(method="NR") { suppressWarnings(rLLSum <- maxLik( logLLSum, start=start, method=method, X=testData )) stdDev <- stdEr(rLLSum) tol <- 2*max(stdDev) expect_equal(coef(rLLSum), param, tolerance=tol, info=paste("coefficient values should be close to the true values", paste(param, collapse=", "))) # should equal to param, but as N is small, it may be way off ## rLL <- suppressWarnings(maxLik( logLL, start = start, method=method, X=testData )) expect_equal(coef(rLL), coef(rLLSum), tolerance=mTol) ## rLLSumGSum <- suppressWarnings(maxLik( logLLSum, grad=d.logLLSum, start = start, method=method, X=testData )) expect_equal(coef(rLLSumGSum), coef(rLLSum), tolerance=mTol) rLLG <- suppressWarnings(maxLik( logLL, grad=d.logLL, start = start, method=method, X=testData )) expect_equal(coef(rLLG), coef(rLLSum), tolerance=mTol) rLLGH <- suppressWarnings(maxLik( logLL, grad=d.logLL, hess=dd.logLL, start = start, method=method, X=testData )) expect_equal(coef(rLLGH), coef(rLLSum), tolerance=mTol) } doTests("NR") doTests("BFGS") ## maxBHHH: cannot run the same tests method <- "BHHH" expect_error( maxLik( logLLSum, start=start, method=method, X=testData), pattern = "not provided by .* returns a numeric vector" ) rLL <- suppressWarnings(maxLik( logLL, start = start, method=method, X=testData )) stdDev <- stdEr(rLL) tol <- 2*max(stdDev) expect_equal(coef(rLL), param, tolerance=tol, info=paste("coefficient values should be close to the true values", paste(param, collapse=", "))) # should equal to param, but as N is small, it may be way off ## rLLG <- suppressWarnings(maxLik( logLL, grad=d.logLL, start = start, method=method, X=testData )) expect_equal(coef(rLLG), coef(rLL), tolerance=mTol) ## Do the other basic functions work? expect_equal(class(logLik(rLL)), "numeric") expect_equal(class(gradient(rLL)), "numeric") expect_true(inherits(hessian(rLL), "matrix"), info="Hessian must inherit from matrix class") ## test maxNR with gradient and hessian as attributes W <- matrix(-c(4,1,2,4), 2, 2) c <- c(1,2) start <- c(0,0) f <- function(x) { hess <- 2*W grad <- 2*W %*% (x - c) val <- t(x - c) %*% W %*% (x - c) attr(val, "gradient") <- as.vector(grad) # gradient matrices only work for BHHH-type problems attr(val, "hessian") <- hess val } res <- maxNR(f, start=start) expect_equal(coef(res), c, tolerance=mTol) expect_equal(sqrt(sum(gradient(res)^2)), 0, tolerance=mTol) expect_equal(maxValue(res), 0, tolerance=mTol)